@dxos/plugin-markdown 0.8.4-main.f5c0578 → 0.8.4-main.fcc0d83b33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/dist/lib/browser/MarkdownSettings-YCTZJL5V.mjs +32 -0
  2. package/dist/lib/browser/MarkdownSettings-YCTZJL5V.mjs.map +7 -0
  3. package/dist/lib/browser/blueprints/index.mjs +51 -0
  4. package/dist/lib/browser/blueprints/index.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-5T3SYJIP.mjs +158 -0
  6. package/dist/lib/browser/chunk-5T3SYJIP.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-FG2ZL4PE.mjs +121 -0
  8. package/dist/lib/browser/chunk-FG2ZL4PE.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  10. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  11. package/dist/lib/browser/cli/index.mjs +39 -0
  12. package/dist/lib/browser/cli/index.mjs.map +7 -0
  13. package/dist/lib/browser/create-VSHCHZS4.mjs +30 -0
  14. package/dist/lib/browser/create-VSHCHZS4.mjs.map +7 -0
  15. package/dist/lib/browser/create-markdown-6LRG62W3.mjs +22 -0
  16. package/dist/lib/browser/create-markdown-6LRG62W3.mjs.map +7 -0
  17. package/dist/lib/browser/index.mjs +569 -140
  18. package/dist/lib/browser/index.mjs.map +4 -4
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/open-TKTPEN3D.mjs +21 -0
  21. package/dist/lib/browser/open-TKTPEN3D.mjs.map +7 -0
  22. package/dist/lib/browser/operations/index.mjs +14 -0
  23. package/dist/lib/browser/operations/index.mjs.map +7 -0
  24. package/dist/lib/browser/scroll-to-anchor-HWERBJKN.mjs +49 -0
  25. package/dist/lib/browser/scroll-to-anchor-HWERBJKN.mjs.map +7 -0
  26. package/dist/lib/browser/set-view-mode-Z7HGT7TY.mjs +26 -0
  27. package/dist/lib/browser/set-view-mode-Z7HGT7TY.mjs.map +7 -0
  28. package/dist/lib/browser/translations.mjs +43 -0
  29. package/dist/lib/browser/translations.mjs.map +7 -0
  30. package/dist/lib/browser/types/index.mjs +11 -5
  31. package/dist/lib/browser/update-markdown-EJSHQRSC.mjs +45 -0
  32. package/dist/lib/browser/update-markdown-EJSHQRSC.mjs.map +7 -0
  33. package/dist/lib/node-esm/MarkdownSettings-LE66LODL.mjs +33 -0
  34. package/dist/lib/node-esm/MarkdownSettings-LE66LODL.mjs.map +7 -0
  35. package/dist/lib/node-esm/blueprints/index.mjs +52 -0
  36. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  37. package/dist/lib/node-esm/chunk-43GF7QLH.mjs +159 -0
  38. package/dist/lib/node-esm/chunk-43GF7QLH.mjs.map +7 -0
  39. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  40. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  41. package/dist/lib/node-esm/chunk-IHC6DFTK.mjs +122 -0
  42. package/dist/lib/node-esm/chunk-IHC6DFTK.mjs.map +7 -0
  43. package/dist/lib/node-esm/cli/index.mjs +40 -0
  44. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  45. package/dist/lib/node-esm/create-PDW42WOY.mjs +31 -0
  46. package/dist/lib/node-esm/create-PDW42WOY.mjs.map +7 -0
  47. package/dist/lib/node-esm/create-markdown-BBPZPLQN.mjs +23 -0
  48. package/dist/lib/node-esm/create-markdown-BBPZPLQN.mjs.map +7 -0
  49. package/dist/lib/node-esm/index.mjs +569 -140
  50. package/dist/lib/node-esm/index.mjs.map +4 -4
  51. package/dist/lib/node-esm/meta.json +1 -1
  52. package/dist/lib/node-esm/open-B6GFN5DR.mjs +22 -0
  53. package/dist/lib/node-esm/open-B6GFN5DR.mjs.map +7 -0
  54. package/dist/lib/node-esm/operations/index.mjs +15 -0
  55. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  56. package/dist/lib/node-esm/scroll-to-anchor-CWEWWIS7.mjs +50 -0
  57. package/dist/lib/node-esm/scroll-to-anchor-CWEWWIS7.mjs.map +7 -0
  58. package/dist/lib/node-esm/set-view-mode-OMNNTSNM.mjs +27 -0
  59. package/dist/lib/node-esm/set-view-mode-OMNNTSNM.mjs.map +7 -0
  60. package/dist/lib/node-esm/translations.mjs +44 -0
  61. package/dist/lib/node-esm/translations.mjs.map +7 -0
  62. package/dist/lib/node-esm/types/index.mjs +11 -5
  63. package/dist/lib/node-esm/update-markdown-TAEAHVD2.mjs +46 -0
  64. package/dist/lib/node-esm/update-markdown-TAEAHVD2.mjs.map +7 -0
  65. package/dist/types/src/MarkdownPlugin.d.ts +2 -1
  66. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  67. package/dist/types/src/blueprints/index.d.ts +2 -0
  68. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  69. package/dist/types/src/blueprints/markdown-blueprint.d.ts +4 -0
  70. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -0
  71. package/dist/types/src/capabilities/anchor-sort.d.ts +4 -4
  72. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/app-graph-serializer.d.ts +3 -2
  74. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/artifact-definition.d.ts +3 -9
  76. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  77. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
  78. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  79. package/dist/types/src/capabilities/index.d.ts +9 -15
  80. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/node.d.ts +4 -0
  82. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  83. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  84. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  85. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  86. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/settings.d.ts +4 -2
  88. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/state.d.ts +4 -9
  90. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  91. package/dist/types/src/cli/index.d.ts +2 -0
  92. package/dist/types/src/cli/index.d.ts.map +1 -0
  93. package/dist/types/src/cli/plugin.d.ts +3 -0
  94. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  95. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +11 -0
  96. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -0
  97. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +52 -21
  98. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  99. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +8 -15
  100. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  101. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +33 -0
  102. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -0
  103. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +13 -0
  104. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -0
  105. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +4 -4
  106. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  107. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +94 -0
  108. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -0
  109. package/dist/types/src/components/MarkdownSettings/index.d.ts +1 -1
  110. package/dist/types/src/components/MarkdownSettings/index.d.ts.map +1 -1
  111. package/dist/types/src/components/index.d.ts +3 -3
  112. package/dist/types/src/components/index.d.ts.map +1 -1
  113. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts +8 -0
  114. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -0
  115. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +9 -0
  116. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
  117. package/dist/types/src/containers/MarkdownCard/MarkdownEditableCard.d.ts +15 -0
  118. package/dist/types/src/containers/MarkdownCard/MarkdownEditableCard.d.ts.map +1 -0
  119. package/dist/types/src/containers/MarkdownCard/index.d.ts +3 -0
  120. package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -0
  121. package/dist/types/src/containers/MarkdownCard/snippet.d.ts +17 -0
  122. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -0
  123. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts +36 -0
  124. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +1 -0
  125. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts +97 -0
  126. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +1 -0
  127. package/dist/types/src/containers/MarkdownContainer/index.d.ts +3 -0
  128. package/dist/types/src/containers/MarkdownContainer/index.d.ts.map +1 -0
  129. package/dist/types/src/containers/index.d.ts +6 -0
  130. package/dist/types/src/containers/index.d.ts.map +1 -0
  131. package/dist/types/src/hooks/index.d.ts +3 -1
  132. package/dist/types/src/hooks/index.d.ts.map +1 -1
  133. package/dist/types/src/hooks/useEditorMenuOptions.d.ts +9 -0
  134. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -0
  135. package/dist/types/src/hooks/useExtensions.d.ts +25 -0
  136. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -0
  137. package/dist/types/src/hooks/useLinkQuery.d.ts +4 -0
  138. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -0
  139. package/dist/types/src/index.d.ts +3 -3
  140. package/dist/types/src/index.d.ts.map +1 -1
  141. package/dist/types/src/meta.d.ts +2 -3
  142. package/dist/types/src/meta.d.ts.map +1 -1
  143. package/dist/types/src/operations/create-markdown.d.ts +5 -0
  144. package/dist/types/src/operations/create-markdown.d.ts.map +1 -0
  145. package/dist/types/src/operations/create.d.ts +5 -0
  146. package/dist/types/src/operations/create.d.ts.map +1 -0
  147. package/dist/types/src/operations/create.test.d.ts +2 -0
  148. package/dist/types/src/operations/create.test.d.ts.map +1 -0
  149. package/dist/types/src/operations/definitions.d.ts +64 -0
  150. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  151. package/dist/types/src/operations/index.d.ts +4 -0
  152. package/dist/types/src/operations/index.d.ts.map +1 -0
  153. package/dist/types/src/operations/open.d.ts +5 -0
  154. package/dist/types/src/operations/open.d.ts.map +1 -0
  155. package/dist/types/src/operations/scroll-to-anchor.d.ts +5 -0
  156. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -0
  157. package/dist/types/src/operations/set-view-mode.d.ts +5 -0
  158. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -0
  159. package/dist/types/src/operations/update-markdown.d.ts +5 -0
  160. package/dist/types/src/operations/update-markdown.d.ts.map +1 -0
  161. package/dist/types/src/operations/update.test.d.ts +2 -0
  162. package/dist/types/src/operations/update.test.d.ts.map +1 -0
  163. package/dist/types/src/testing.d.ts +6 -0
  164. package/dist/types/src/testing.d.ts.map +1 -0
  165. package/dist/types/src/translations.d.ts +74 -32
  166. package/dist/types/src/translations.d.ts.map +1 -1
  167. package/dist/types/src/types/Markdown.d.ts +31 -30
  168. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  169. package/dist/types/src/types/Settings.d.ts +17 -0
  170. package/dist/types/src/types/Settings.d.ts.map +1 -0
  171. package/dist/types/src/types/capabilities.d.ts +34 -0
  172. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  173. package/dist/types/src/types/events.d.ts +5 -0
  174. package/dist/types/src/types/events.d.ts.map +1 -0
  175. package/dist/types/src/types/index.d.ts +4 -2
  176. package/dist/types/src/types/index.d.ts.map +1 -1
  177. package/dist/types/src/types/types.d.ts +3 -2
  178. package/dist/types/src/types/types.d.ts.map +1 -1
  179. package/dist/types/src/util.d.ts +7 -4
  180. package/dist/types/src/util.d.ts.map +1 -1
  181. package/dist/types/src/util.test.d.ts +2 -0
  182. package/dist/types/src/util.test.d.ts.map +1 -0
  183. package/dist/types/tsconfig.tsbuildinfo +1 -1
  184. package/package.json +118 -63
  185. package/src/MarkdownPlugin.tsx +91 -102
  186. package/src/blueprints/index.ts +5 -0
  187. package/src/blueprints/markdown-blueprint.ts +43 -0
  188. package/src/capabilities/anchor-sort.ts +29 -22
  189. package/src/capabilities/app-graph-serializer.ts +52 -42
  190. package/src/capabilities/artifact-definition.ts +87 -96
  191. package/src/capabilities/blueprint-definition.ts +17 -0
  192. package/src/capabilities/index.ts +12 -9
  193. package/src/capabilities/node.ts +11 -0
  194. package/src/capabilities/operation-handler.ts +16 -0
  195. package/src/capabilities/react-surface.tsx +116 -104
  196. package/src/capabilities/settings.ts +30 -18
  197. package/src/capabilities/state.ts +41 -25
  198. package/src/cli/index.ts +5 -0
  199. package/src/cli/plugin.ts +39 -0
  200. package/src/components/MarkdownEditor/FileUpload.tsx +63 -0
  201. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +64 -38
  202. package/src/components/MarkdownEditor/MarkdownEditor.tsx +251 -267
  203. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +170 -0
  204. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +47 -0
  205. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +40 -0
  206. package/src/components/MarkdownSettings/MarkdownSettings.tsx +22 -92
  207. package/src/components/MarkdownSettings/index.ts +1 -1
  208. package/src/components/index.ts +4 -5
  209. package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +68 -0
  210. package/src/containers/MarkdownCard/MarkdownCard.tsx +68 -0
  211. package/src/containers/MarkdownCard/MarkdownEditableCard.tsx +42 -0
  212. package/src/containers/MarkdownCard/index.ts +6 -0
  213. package/src/containers/MarkdownCard/snippet.ts +54 -0
  214. package/src/containers/MarkdownContainer/MarkdownContainer.stories.tsx +135 -0
  215. package/src/containers/MarkdownContainer/MarkdownContainer.tsx +146 -0
  216. package/src/containers/MarkdownContainer/index.ts +6 -0
  217. package/src/containers/index.ts +13 -0
  218. package/src/hooks/index.ts +3 -1
  219. package/src/hooks/useEditorMenuOptions.ts +68 -0
  220. package/src/hooks/useExtensions.tsx +262 -0
  221. package/src/hooks/useLinkQuery.ts +108 -0
  222. package/src/index.ts +4 -3
  223. package/src/meta.ts +6 -9
  224. package/src/operations/create-markdown.ts +20 -0
  225. package/src/operations/create.conversations.json +1 -0
  226. package/src/operations/create.test.ts +98 -0
  227. package/src/operations/create.ts +27 -0
  228. package/src/operations/definitions.ts +120 -0
  229. package/src/operations/index.ts +16 -0
  230. package/src/operations/open.ts +25 -0
  231. package/src/operations/scroll-to-anchor.ts +39 -0
  232. package/src/operations/set-view-mode.ts +24 -0
  233. package/src/operations/update-markdown.ts +51 -0
  234. package/src/operations/update.conversations.json +1 -0
  235. package/src/operations/update.test.ts +215 -0
  236. package/src/testing.ts +27 -0
  237. package/src/translations.ts +26 -31
  238. package/src/types/Markdown.ts +26 -31
  239. package/src/types/Settings.ts +65 -0
  240. package/src/types/capabilities.ts +51 -0
  241. package/src/types/events.ts +14 -0
  242. package/src/types/index.ts +5 -2
  243. package/src/types/types.ts +8 -3
  244. package/src/util.test.ts +44 -0
  245. package/src/util.tsx +83 -8
  246. package/dist/lib/browser/MarkdownCard-IMCR4A4V.mjs +0 -80
  247. package/dist/lib/browser/MarkdownCard-IMCR4A4V.mjs.map +0 -7
  248. package/dist/lib/browser/MarkdownContainer-VGJPHMVG.mjs +0 -780
  249. package/dist/lib/browser/MarkdownContainer-VGJPHMVG.mjs.map +0 -7
  250. package/dist/lib/browser/anchor-sort-AJKRIWFD.mjs +0 -32
  251. package/dist/lib/browser/anchor-sort-AJKRIWFD.mjs.map +0 -7
  252. package/dist/lib/browser/app-graph-serializer-OIS3MZX2.mjs +0 -52
  253. package/dist/lib/browser/app-graph-serializer-OIS3MZX2.mjs.map +0 -7
  254. package/dist/lib/browser/chunk-IKPZHFTW.mjs +0 -30
  255. package/dist/lib/browser/chunk-IKPZHFTW.mjs.map +0 -7
  256. package/dist/lib/browser/chunk-JHH7VL52.mjs +0 -18
  257. package/dist/lib/browser/chunk-JHH7VL52.mjs.map +0 -7
  258. package/dist/lib/browser/chunk-JMBQG2ZC.mjs +0 -50
  259. package/dist/lib/browser/chunk-JMBQG2ZC.mjs.map +0 -7
  260. package/dist/lib/browser/chunk-JTIGSUMB.mjs +0 -80
  261. package/dist/lib/browser/chunk-JTIGSUMB.mjs.map +0 -7
  262. package/dist/lib/browser/chunk-LMJPXTPL.mjs +0 -16
  263. package/dist/lib/browser/chunk-LMJPXTPL.mjs.map +0 -7
  264. package/dist/lib/browser/chunk-MVL4K3OD.mjs +0 -52
  265. package/dist/lib/browser/chunk-MVL4K3OD.mjs.map +0 -7
  266. package/dist/lib/browser/intent-resolver-BLLHRSTQ.mjs +0 -60
  267. package/dist/lib/browser/intent-resolver-BLLHRSTQ.mjs.map +0 -7
  268. package/dist/lib/browser/react-surface-NL3BZR6H.mjs +0 -208
  269. package/dist/lib/browser/react-surface-NL3BZR6H.mjs.map +0 -7
  270. package/dist/lib/browser/settings-Z7ZV7SLC.mjs +0 -28
  271. package/dist/lib/browser/settings-Z7ZV7SLC.mjs.map +0 -7
  272. package/dist/lib/browser/state-ORTZIEJU.mjs +0 -37
  273. package/dist/lib/browser/state-ORTZIEJU.mjs.map +0 -7
  274. package/dist/lib/node-esm/MarkdownCard-JV2YDV3M.mjs +0 -81
  275. package/dist/lib/node-esm/MarkdownCard-JV2YDV3M.mjs.map +0 -7
  276. package/dist/lib/node-esm/MarkdownContainer-BJRNCXJZ.mjs +0 -781
  277. package/dist/lib/node-esm/MarkdownContainer-BJRNCXJZ.mjs.map +0 -7
  278. package/dist/lib/node-esm/anchor-sort-N7WEA5E3.mjs +0 -33
  279. package/dist/lib/node-esm/anchor-sort-N7WEA5E3.mjs.map +0 -7
  280. package/dist/lib/node-esm/app-graph-serializer-Q3B44VFB.mjs +0 -53
  281. package/dist/lib/node-esm/app-graph-serializer-Q3B44VFB.mjs.map +0 -7
  282. package/dist/lib/node-esm/chunk-AYWAYBAY.mjs +0 -17
  283. package/dist/lib/node-esm/chunk-AYWAYBAY.mjs.map +0 -7
  284. package/dist/lib/node-esm/chunk-H4I2FGDZ.mjs +0 -31
  285. package/dist/lib/node-esm/chunk-H4I2FGDZ.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-H6TITL7A.mjs +0 -20
  287. package/dist/lib/node-esm/chunk-H6TITL7A.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-JDMMLOB6.mjs +0 -51
  289. package/dist/lib/node-esm/chunk-JDMMLOB6.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-KIRZFVX5.mjs +0 -81
  291. package/dist/lib/node-esm/chunk-KIRZFVX5.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-Z4XQ6C3D.mjs +0 -53
  293. package/dist/lib/node-esm/chunk-Z4XQ6C3D.mjs.map +0 -7
  294. package/dist/lib/node-esm/intent-resolver-NHPUPSWK.mjs +0 -61
  295. package/dist/lib/node-esm/intent-resolver-NHPUPSWK.mjs.map +0 -7
  296. package/dist/lib/node-esm/react-surface-XJ6ODCBE.mjs +0 -209
  297. package/dist/lib/node-esm/react-surface-XJ6ODCBE.mjs.map +0 -7
  298. package/dist/lib/node-esm/settings-UCXEWBCT.mjs +0 -29
  299. package/dist/lib/node-esm/settings-UCXEWBCT.mjs.map +0 -7
  300. package/dist/lib/node-esm/state-47WSZG54.mjs +0 -38
  301. package/dist/lib/node-esm/state-47WSZG54.mjs.map +0 -7
  302. package/dist/types/src/capabilities/capabilities.d.ts +0 -12
  303. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  304. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  305. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  306. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +0 -7
  307. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +0 -1
  308. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +0 -42
  309. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +0 -1
  310. package/dist/types/src/components/MarkdownCard/index.d.ts +0 -4
  311. package/dist/types/src/components/MarkdownCard/index.d.ts.map +0 -1
  312. package/dist/types/src/components/MarkdownContainer.d.ts +0 -18
  313. package/dist/types/src/components/MarkdownContainer.d.ts.map +0 -1
  314. package/dist/types/src/components/MarkdownContainer.stories.d.ts +0 -9
  315. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +0 -1
  316. package/dist/types/src/components/Suggestions.stories.d.ts +0 -12
  317. package/dist/types/src/components/Suggestions.stories.d.ts.map +0 -1
  318. package/dist/types/src/components/Toolbar.stories.d.ts +0 -11
  319. package/dist/types/src/components/Toolbar.stories.d.ts.map +0 -1
  320. package/dist/types/src/events.d.ts +0 -4
  321. package/dist/types/src/events.d.ts.map +0 -1
  322. package/dist/types/src/extensions.d.ts +0 -24
  323. package/dist/types/src/extensions.d.ts.map +0 -1
  324. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +0 -6
  325. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +0 -1
  326. package/dist/types/src/types/MarkdownAction.d.ts +0 -42
  327. package/dist/types/src/types/MarkdownAction.d.ts.map +0 -1
  328. package/src/capabilities/capabilities.ts +0 -21
  329. package/src/capabilities/intent-resolver.ts +0 -58
  330. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +0 -79
  331. package/src/components/MarkdownCard/MarkdownCard.tsx +0 -75
  332. package/src/components/MarkdownCard/index.ts +0 -9
  333. package/src/components/MarkdownContainer.stories.tsx +0 -100
  334. package/src/components/MarkdownContainer.tsx +0 -255
  335. package/src/components/Suggestions.stories.tsx +0 -221
  336. package/src/components/Toolbar.stories.tsx +0 -112
  337. package/src/events.ts +0 -11
  338. package/src/extensions.tsx +0 -328
  339. package/src/hooks/useSelectCurrentThread.tsx +0 -56
  340. package/src/types/MarkdownAction.ts +0 -31
@@ -1,158 +1,587 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
- translations
4
- } from "./chunk-Z4XQ6C3D.mjs";
5
- import {
6
- AnchorSort,
7
- AppGraphSerializer,
8
- IntentResolver,
9
- MarkdownSettings,
10
- MarkdownState,
11
- ReactSurface
12
- } from "./chunk-H6TITL7A.mjs";
13
- import {
14
- MarkdownCapabilities
15
- } from "./chunk-AYWAYBAY.mjs";
16
- import {
17
- getAbstract,
18
- getFallbackName,
19
- isEditorModel,
20
- isMarkdownProperties,
21
- serializer,
22
- setFallbackName
23
- } from "./chunk-JDMMLOB6.mjs";
24
- import {
25
- MarkdownAction_exports,
26
- Markdown_exports
27
- } from "./chunk-KIRZFVX5.mjs";
28
- import {
29
- meta,
30
- not_meta
31
- } from "./chunk-H4I2FGDZ.mjs";
3
+ MarkdownCapabilities,
4
+ MarkdownEvents
5
+ } from "./chunk-IHC6DFTK.mjs";
6
+ import "./chunk-HSLMI22Q.mjs";
32
7
 
33
- // src/events.ts
34
- import { Events } from "@dxos/app-framework";
35
- (function(MarkdownEvents2) {
36
- MarkdownEvents2.SetupExtensions = Events.createStateEvent(`${meta.id}/event/setup-extensions`);
37
- })(MarkdownEvents || (MarkdownEvents = {}));
38
- var MarkdownEvents;
8
+ // src/meta.ts
9
+ import { trim } from "@dxos/util";
10
+ var meta = {
11
+ id: "org.dxos.plugin.markdown",
12
+ name: "Markdown",
13
+ description: trim`
14
+ Full-featured collaborative markdown editor with real-time editing, inline comments, and rich formatting.
15
+ Supports AI-powered editing assistance and seamlessly integrates with other workspace objects.
16
+ `,
17
+ icon: "ph--text-aa--regular",
18
+ iconHue: "indigo",
19
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown",
20
+ screenshots: [
21
+ "https://dxos.network/plugin-details-markdown-dark.png"
22
+ ]
23
+ };
39
24
 
40
- // src/MarkdownPlugin.tsx
41
- import { Capabilities, Events as Events2, contributes, createIntent, defineModule, definePlugin } from "@dxos/app-framework";
42
- import { Ref } from "@dxos/echo";
43
- import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
44
- import { SpaceCapabilities } from "@dxos/plugin-space";
45
- import { defineObjectForm } from "@dxos/plugin-space/types";
46
- import { createDocAccessor, getTextInRange } from "@dxos/react-client/echo";
47
- import { translations as editorTranslations } from "@dxos/react-ui-editor";
48
- import { DataType } from "@dxos/schema";
49
- var MarkdownPlugin = () => definePlugin(meta, [
50
- defineModule({
51
- id: `${meta.id}/module/translations`,
52
- activatesOn: Events2.SetupTranslations,
53
- activate: () => contributes(Capabilities.Translations, [
54
- ...translations,
55
- ...editorTranslations
56
- ])
57
- }),
58
- defineModule({
59
- id: `${meta.id}/module/settings`,
60
- activatesOn: Events2.SetupSettings,
61
- activate: MarkdownSettings
62
- }),
63
- defineModule({
64
- id: `${meta.id}/module/state`,
65
- // TODO(wittjosiah): Does not integrate with settings store.
66
- // Should this be a different event?
67
- // Should settings store be renamed to be more generic?
68
- activatesOn: Events2.SetupSettings,
69
- activate: MarkdownState
70
- }),
71
- defineModule({
72
- id: `${meta.id}/module/metadata`,
73
- activatesOn: Events2.SetupMetadata,
74
- activate: () => contributes(Capabilities.Metadata, {
75
- id: Markdown_exports.Document.typename,
76
- metadata: {
77
- label: (object) => object.name || object.fallbackName,
78
- icon: "ph--text-aa--regular",
79
- graphProps: {
80
- managesAutofocus: true
81
- },
82
- // TODO(wittjosiah): Move out of metadata.
83
- loadReferences: async (doc) => await Ref.Array.loadAll([
84
- doc.content
85
- ]),
86
- serializer,
87
- // TODO(wittjosiah): Consider how to do generic comments without these.
88
- comments: "anchored",
89
- selectionMode: "multi-range",
90
- getAnchorLabel: (doc, anchor) => {
91
- if (doc.content) {
92
- const [start, end] = anchor.split(":");
93
- return getTextInRange(createDocAccessor(doc.content.target, [
94
- "content"
95
- ]), start, end);
25
+ // src/util.tsx
26
+ import { debounce } from "@dxos/async";
27
+ import { Obj } from "@dxos/echo";
28
+ import { Markdown } from "#types";
29
+ var isEditorModel = (data) => data && typeof data === "object" && "id" in data && typeof data.id === "string" && "text" in data && typeof data.text === "string";
30
+ var isMarkdownProperties = (data) => Obj.isObject(data) ? true : data && typeof data === "object" ? "title" in data && typeof data.title === "string" : false;
31
+ var nonTitleChars = /[^\w ]/g;
32
+ var skipPatterns = [
33
+ /^!\[/,
34
+ /^---\s*$/,
35
+ /^```/,
36
+ /^\s*$/
37
+ ];
38
+ var titlePatterns = [
39
+ /^#{1,6}\s+(.+)/
40
+ ];
41
+ var getFallbackName = (content = "") => {
42
+ const len = content.length;
43
+ let i = 0;
44
+ while (i < len) {
45
+ let lineEnd = i;
46
+ while (lineEnd < len && content[lineEnd] !== "\n") {
47
+ lineEnd++;
48
+ }
49
+ const line = content.slice(i, lineEnd).trim();
50
+ i = lineEnd + 1;
51
+ if (skipPatterns.some((pattern) => pattern.test(line))) {
52
+ continue;
53
+ }
54
+ for (const pattern of titlePatterns) {
55
+ const match = pattern.exec(line);
56
+ if (match) {
57
+ const text2 = match[1].replaceAll(nonTitleChars, "").trim();
58
+ if (text2.length > 0) {
59
+ return text2;
60
+ }
61
+ }
62
+ }
63
+ const maxLen = 32;
64
+ const text = line.replaceAll(nonTitleChars, "").trim();
65
+ if (text.length > 0) {
66
+ if (text.length > maxLen) {
67
+ const words = text.split(/\s+/);
68
+ let result = "";
69
+ for (const word of words) {
70
+ const next = result.length === 0 ? word : result + " " + word;
71
+ if (next.length > maxLen) {
72
+ break;
96
73
  }
74
+ result = next;
97
75
  }
76
+ return result + "\u2026";
98
77
  }
99
- })
100
- }),
101
- defineModule({
102
- id: `${meta.id}/module/object-form`,
103
- activatesOn: ClientEvents.SetupSchema,
104
- activate: () => contributes(SpaceCapabilities.ObjectForm, defineObjectForm({
105
- objectSchema: Markdown_exports.Document,
106
- getIntent: (_, { space }) => createIntent(MarkdownAction_exports.Create, {
107
- spaceId: space.id
108
- })
109
- }))
110
- }),
111
- defineModule({
112
- id: `${meta.id}/module/schema`,
113
- activatesOn: ClientEvents.SetupSchema,
114
- activate: () => contributes(ClientCapabilities.Schema, [
115
- DataType.Text
116
- ])
117
- }),
118
- defineModule({
119
- id: `${meta.id}/module/react-surface`,
120
- activatesOn: Events2.SetupReactSurface,
121
- // TODO(wittjosiah): Should occur before the editor is loaded when surfaces activation is more granular.
122
- activatesBefore: [
123
- MarkdownEvents.SetupExtensions
124
- ],
125
- activate: ReactSurface
126
- }),
127
- defineModule({
128
- id: `${meta.id}/module/intent-resolver`,
129
- activatesOn: Events2.SetupIntentResolver,
130
- activate: IntentResolver
131
- }),
132
- defineModule({
133
- id: `${meta.id}/module/app-graph-serializer`,
134
- activatesOn: Events2.AppGraphReady,
135
- activate: AppGraphSerializer
136
- }),
137
- defineModule({
138
- id: `${meta.id}/module/anchor-sort`,
139
- // TODO(wittjosiah): More relevant event?
140
- activatesOn: Events2.AppGraphReady,
141
- activate: AnchorSort
142
- })
143
- ]);
78
+ return text;
79
+ }
80
+ }
81
+ return "";
82
+ };
83
+ var getContentSnippet = (content = "", maxLines = 3) => {
84
+ const abstract = content.split("\n").filter((line) => !line.startsWith("!")).filter((line) => line.trim() !== "");
85
+ return abstract.slice(0, maxLines).join("\n") ?? "";
86
+ };
87
+ var setFallbackName = debounce((doc, content = "") => {
88
+ const name = getFallbackName(content);
89
+ if (doc.fallbackName !== name) {
90
+ Obj.update(doc, (doc2) => {
91
+ doc2.fallbackName = name;
92
+ });
93
+ }
94
+ }, 200);
95
+ var serializer = {
96
+ serialize: async ({ object }) => {
97
+ const { content } = await object.content.load();
98
+ return JSON.stringify({
99
+ name: object.name,
100
+ fallbackName: object.fallbackName,
101
+ content
102
+ });
103
+ },
104
+ deserialize: async ({ content: serialized }) => {
105
+ const { name, fallbackName, content } = JSON.parse(serialized);
106
+ return Markdown.make({
107
+ name,
108
+ fallbackName,
109
+ content
110
+ });
111
+ }
112
+ };
113
+
114
+ // src/MarkdownPlugin.tsx
115
+ import * as Effect from "effect/Effect";
116
+ import * as Option from "effect/Option";
117
+ import { Plugin } from "@dxos/app-framework";
118
+ import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
119
+ import { Operation } from "@dxos/compute";
120
+ import { Annotation, Ref } from "@dxos/echo";
121
+ import { createDocAccessor, getTextInRange } from "@dxos/echo-db";
122
+ import { SpaceOperation } from "@dxos/plugin-space/operations";
123
+ import { translations as editorTranslations } from "@dxos/react-ui-editor/translations";
124
+ import { Text } from "@dxos/schema";
125
+ import { MarkdownBlueprint } from "#blueprints";
126
+ import { AnchorSort, AppGraphSerializer, BlueprintDefinition, MarkdownSettings, MarkdownState, OperationHandler, ReactSurface } from "#capabilities";
127
+ import { meta as meta2 } from "#meta";
128
+ import { MarkdownOperation } from "#operations";
129
+ import { translations } from "#translations";
130
+ import { Markdown as Markdown2, MarkdownEvents as MarkdownEvents2 } from "#types";
131
+ var MarkdownPlugin = Plugin.define(meta2).pipe(AppPlugin.addBlueprintDefinitionModule({
132
+ activate: BlueprintDefinition
133
+ }), AppPlugin.addMetadataModule({
134
+ metadata: {
135
+ id: Markdown2.Document.typename,
136
+ metadata: {
137
+ // TODO(dmaretskyi): Remove label, icon and iconHue and query them of schema.
138
+ label: (object) => object.name || object.fallbackName,
139
+ icon: Annotation.IconAnnotation.get(Markdown2.Document).pipe(Option.getOrThrow).icon,
140
+ iconHue: Annotation.IconAnnotation.get(Markdown2.Document).pipe(Option.getOrThrow).hue ?? "white",
141
+ blueprints: [
142
+ MarkdownBlueprint.key
143
+ ],
144
+ graphProps: {
145
+ managesAutofocus: true
146
+ },
147
+ // TODO(wittjosiah): Move out of metadata.
148
+ loadReferences: async (doc) => await Ref.Array.loadAll([
149
+ doc.content
150
+ ]),
151
+ serializer,
152
+ // TODO(wittjosiah): Consider how to do generic comments without these.
153
+ comments: "anchored",
154
+ selectionMode: "multi-range",
155
+ getAnchorLabel: (doc, anchor) => {
156
+ if (doc.content) {
157
+ const [start, end] = anchor.split(":");
158
+ return getTextInRange(createDocAccessor(doc.content.target, [
159
+ "content"
160
+ ]), start, end);
161
+ }
162
+ },
163
+ createObject: (props, options) => Effect.gen(function* () {
164
+ const object = Markdown2.make(props);
165
+ return yield* Operation.invoke(SpaceOperation.AddObject, {
166
+ object,
167
+ target: options.target,
168
+ hidden: true,
169
+ targetNodeId: options.targetNodeId
170
+ });
171
+ }),
172
+ scrollToAnchor: MarkdownOperation.ScrollToAnchor
173
+ }
174
+ }
175
+ }), AppPlugin.addOperationHandlerModule({
176
+ activate: OperationHandler
177
+ }), AppPlugin.addSchemaModule({
178
+ schema: [
179
+ Markdown2.Document,
180
+ Text.Text
181
+ ]
182
+ }), AppPlugin.addSurfaceModule({
183
+ activate: ReactSurface,
184
+ firesBeforeActivation: [
185
+ MarkdownEvents2.SetupExtensions
186
+ ]
187
+ }), AppPlugin.addTranslationsModule({
188
+ translations: [
189
+ ...translations,
190
+ ...editorTranslations
191
+ ]
192
+ }), Plugin.addModule({
193
+ activatesOn: AppActivationEvents.SetupSettings,
194
+ activate: MarkdownSettings
195
+ }), Plugin.addModule({
196
+ id: "state",
197
+ // TODO(wittjosiah): Does not integrate with settings store.
198
+ // Should this be a different event?
199
+ // Should settings store be renamed to be more generic?
200
+ activatesOn: AppActivationEvents.SetupSettings,
201
+ activate: MarkdownState
202
+ }), Plugin.addModule({
203
+ activatesOn: AppActivationEvents.AppGraphReady,
204
+ activate: AppGraphSerializer
205
+ }), Plugin.addModule({
206
+ // TODO(wittjosiah): More relevant event?
207
+ activatesOn: AppActivationEvents.AppGraphReady,
208
+ activate: AnchorSort
209
+ }), Plugin.make);
210
+
211
+ // src/components/index.ts
212
+ import { lazy } from "react";
213
+
214
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
215
+ import { createContext } from "@radix-ui/react-context";
216
+ import React4, { useCallback as useCallback3, useMemo as useMemo2, useState as useState2 } from "react";
217
+ import { createPortal as createPortal2 } from "react-dom";
218
+ import { Surface } from "@dxos/app-framework/ui";
219
+ import { AppSurface } from "@dxos/app-toolkit/ui";
220
+ import { Obj as Obj2 } from "@dxos/echo";
221
+ import { DXN } from "@dxos/keys";
222
+ import { useClient } from "@dxos/react-client";
223
+ import { createEditorController, useEditorContext } from "@dxos/react-ui-editor";
224
+ import { composable as composable2, composableProps as composableProps2 } from "@dxos/ui-theme";
225
+ import { isNonNullable } from "@dxos/util";
226
+ import { useEditorMenuOptions, useExtensions } from "#hooks";
227
+
228
+ // src/components/MarkdownEditor/MarkdownEditorContent.tsx
229
+ import { RegistryContext } from "@effect-atom/atom-react";
230
+ import React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo } from "react";
231
+ import { useCapabilities } from "@dxos/app-framework/ui";
232
+ import { useThemeContext, useTranslation } from "@dxos/react-ui";
233
+ import { useTextEditor } from "@dxos/react-ui-editor";
234
+ import { mobileSlots, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, documentSlots, formattingListener, processEditorPayload, editorClassNames } from "@dxos/ui-editor";
235
+ import { mx } from "@dxos/ui-theme";
236
+ import { isTruthy } from "@dxos/util";
237
+ import { meta as meta3 } from "#meta";
238
+ import { MarkdownCapabilities as MarkdownCapabilities2 } from "#types";
239
+ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attendableId, role, compact, viewMode, initialValue, editorStateStore, toolbarState, extensions, slots, onFileUpload }, forwardedRef) => {
240
+ const { t } = useTranslation(meta3.id);
241
+ const { themeMode } = useThemeContext();
242
+ const registry = useContext(RegistryContext);
243
+ const updateToolbarState = useCallback((formatting) => {
244
+ if (toolbarState) {
245
+ registry.set(toolbarState, {
246
+ ...registry.get(toolbarState),
247
+ ...formatting
248
+ });
249
+ }
250
+ }, [
251
+ registry,
252
+ toolbarState
253
+ ]);
254
+ const { scrollTo, selection } = useMemo(() => editorStateStore?.getState(id) ?? {}, [
255
+ id
256
+ ]);
257
+ const { parentRef, view: editorView, focusAttributes } = useTextEditor(() => ({
258
+ ...role !== "section" && {
259
+ id,
260
+ scrollTo,
261
+ selection,
262
+ selectionEnd: true
263
+ },
264
+ initialValue,
265
+ extensions: [
266
+ createBasicExtensions({
267
+ readOnly: viewMode === "readonly",
268
+ placeholder: t("editor.placeholder"),
269
+ scrollPastEnd: !compact,
270
+ search: true
271
+ }),
272
+ createThemeExtensions({
273
+ themeMode,
274
+ slots: slots ?? (compact ? mobileSlots : documentSlots),
275
+ syntaxHighlighting: true
276
+ }),
277
+ createMarkdownExtensions(),
278
+ toolbarState && formattingListener(updateToolbarState),
279
+ role !== "section" && onFileUpload && dropFile({
280
+ // TODO(wittjosiah): Factor out to file uploader plugin.
281
+ onDrop: async (view, { files }) => {
282
+ const file = files[0];
283
+ const info = file && onFileUpload ? await onFileUpload(file) : void 0;
284
+ if (info) {
285
+ processEditorPayload(view, {
286
+ type: "image",
287
+ data: info.url
288
+ });
289
+ }
290
+ }
291
+ }),
292
+ extensions
293
+ ].filter(isTruthy)
294
+ }), [
295
+ id,
296
+ viewMode,
297
+ themeMode,
298
+ extensions
299
+ ]);
300
+ useImperativeHandle(forwardedRef, () => editorView, [
301
+ editorView
302
+ ]);
303
+ const [editorViewRegistry] = useCapabilities(MarkdownCapabilities2.EditorViews);
304
+ useEffect(() => {
305
+ if (editorView && editorViewRegistry) {
306
+ editorViewRegistry.register(attendableId ?? id, editorView, id);
307
+ return () => editorViewRegistry.unregister(attendableId ?? id);
308
+ }
309
+ }, [
310
+ editorView,
311
+ editorViewRegistry,
312
+ attendableId,
313
+ id
314
+ ]);
315
+ useTest(editorView);
316
+ return /* @__PURE__ */ React.createElement("div", {
317
+ ...focusAttributes,
318
+ className: mx(editorClassNames(role), classNames),
319
+ role: "none",
320
+ "data-testid": "composer.markdownRoot",
321
+ "data-popover-collision-boundary": true,
322
+ ref: parentRef
323
+ });
324
+ });
325
+ var useTest = (view) => {
326
+ useEffect(() => {
327
+ const composer = window.composer;
328
+ if (composer) {
329
+ composer.editorView = view;
330
+ }
331
+ }, [
332
+ view
333
+ ]);
334
+ };
335
+
336
+ // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
337
+ import React3, { useCallback as useCallback2, useState } from "react";
338
+ import { Editor } from "@dxos/react-ui-editor";
339
+ import { composable, composableProps } from "@dxos/ui-theme";
340
+
341
+ // src/components/MarkdownEditor/FileUpload.tsx
342
+ import React2, { forwardRef as forwardRef2, useEffect as useEffect2, useImperativeHandle as useImperativeHandle2 } from "react";
343
+ import { createPortal } from "react-dom";
344
+ import { useDropzone } from "react-dropzone";
345
+ import { addLink } from "@dxos/ui-editor";
346
+ var IMAGE_FILES = [
347
+ ".jpg",
348
+ ".jpeg",
349
+ ".png",
350
+ ".gif"
351
+ ];
352
+ var FileUpload = /* @__PURE__ */ forwardRef2(({ editorView, onFileUpload }, forwardedRef) => {
353
+ const { acceptedFiles, open, inputRef } = useDropzone({
354
+ disabled: !onFileUpload,
355
+ multiple: false,
356
+ noDrag: true,
357
+ accept: {
358
+ "image/*": IMAGE_FILES
359
+ }
360
+ });
361
+ useImperativeHandle2(forwardedRef, () => open, []);
362
+ useEffect2(() => {
363
+ if (editorView && acceptedFiles.length && onFileUpload) {
364
+ requestAnimationFrame(async () => {
365
+ const f = acceptedFiles[0];
366
+ const file = new File([
367
+ f
368
+ ], f.name, {
369
+ type: f.type,
370
+ lastModified: f.lastModified
371
+ });
372
+ const info = await onFileUpload(file);
373
+ if (info) {
374
+ addLink({
375
+ url: info.url,
376
+ image: true
377
+ })(editorView);
378
+ }
379
+ });
380
+ }
381
+ }, [
382
+ editorView,
383
+ acceptedFiles,
384
+ onFileUpload
385
+ ]);
386
+ if (!onFileUpload) {
387
+ return null;
388
+ }
389
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ createPortal(/* @__PURE__ */ React2.createElement("input", {
390
+ ref: inputRef
391
+ }), document.body), " ");
392
+ });
393
+
394
+ // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
395
+ var MarkdownEditorToolbar = composable(({ id, role, editorView, customActions, onAction, onFileUpload, onViewModeChange, ...props }, forwardedRef) => {
396
+ const { className, ...rest } = composableProps(props);
397
+ const [upload, setUpload] = useState(null);
398
+ const uploadRef = useCallback2((next) => setUpload(() => next), []);
399
+ if (!editorView) {
400
+ return /* @__PURE__ */ React3.createElement("div", {
401
+ className,
402
+ ...rest,
403
+ ref: forwardedRef
404
+ });
405
+ }
406
+ return /* @__PURE__ */ React3.createElement("div", {
407
+ role: "none",
408
+ className: "contents",
409
+ ref: forwardedRef
410
+ }, /* @__PURE__ */ React3.createElement(Editor.Toolbar, {
411
+ ...rest,
412
+ classNames: className,
413
+ attendableId: id,
414
+ role,
415
+ customActions,
416
+ onAction,
417
+ onImageUpload: upload ?? void 0,
418
+ onViewModeChange
419
+ }), onFileUpload && /* @__PURE__ */ React3.createElement(FileUpload, {
420
+ ref: uploadRef,
421
+ editorView,
422
+ onFileUpload
423
+ }));
424
+ });
425
+
426
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
427
+ var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("MarkdownEditor.Context");
428
+ var MarkdownEditorProvider = ({ children, id, attendableId, object, settings, compact, viewMode, selectionManager, editorStateStore, extensions: extensionsProp, slashCommandGroups, onLinkQuery, onSelectObject, onAction, onFileUpload, onViewModeChange }) => {
429
+ const [previewBlocks, setPreviewBlocks] = useState2([]);
430
+ const previewOptions = useMemo2(() => ({
431
+ db: Obj2.isObject(object) ? Obj2.getDatabase(object) : void 0,
432
+ addBlockContainer: (block) => {
433
+ setPreviewBlocks((prev) => [
434
+ ...prev,
435
+ block
436
+ ]);
437
+ },
438
+ removeBlockContainer: ({ link }) => {
439
+ setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));
440
+ }
441
+ }), [
442
+ object
443
+ ]);
444
+ const menuOptions = useEditorMenuOptions({
445
+ slashCommandGroups,
446
+ onLinkQuery
447
+ });
448
+ const coreExtensions = useExtensions({
449
+ id,
450
+ object,
451
+ compact,
452
+ viewMode,
453
+ selectionManager,
454
+ editorStateStore,
455
+ previewOptions,
456
+ settings,
457
+ onSelectObject
458
+ });
459
+ const extensions = useMemo2(() => [
460
+ coreExtensions,
461
+ extensionsProp
462
+ ].filter(isNonNullable).flat(), [
463
+ coreExtensions,
464
+ extensionsProp
465
+ ]);
466
+ const editorRootProps = useMemo2(() => ({
467
+ extensions,
468
+ viewMode,
469
+ getMenu: menuOptions.getMenu,
470
+ trigger: menuOptions.trigger,
471
+ placeholder: menuOptions.placeholder,
472
+ ...menuOptions.filter !== void 0 ? {
473
+ filter: menuOptions.filter
474
+ } : {},
475
+ ...menuOptions.triggerKey !== void 0 ? {
476
+ triggerKey: menuOptions.triggerKey
477
+ } : {}
478
+ }), [
479
+ extensions,
480
+ viewMode,
481
+ menuOptions
482
+ ]);
483
+ const markdownContextValue = useMemo2(() => ({
484
+ id,
485
+ attendableId,
486
+ compact,
487
+ viewMode,
488
+ previewBlocks,
489
+ onAction,
490
+ onFileUpload,
491
+ onViewModeChange
492
+ }), [
493
+ id,
494
+ attendableId,
495
+ compact,
496
+ viewMode,
497
+ previewBlocks,
498
+ onAction,
499
+ onFileUpload,
500
+ onViewModeChange
501
+ ]);
502
+ return /* @__PURE__ */ React4.createElement(MarkdownEditorContextProvider, markdownContextValue, children(editorRootProps));
503
+ };
504
+ MarkdownEditorProvider.displayName = "MarkdownEditor.Provider";
505
+ var MARKDOWN_EDITOR_CONTENT_NAME = "MarkdownEditor.Content";
506
+ var MarkdownEditorContent2 = composable2(({ ...props }, _forwardedRef) => {
507
+ const { id, attendableId, compact, viewMode, onFileUpload } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
508
+ const { extensions, setController, state } = useEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
509
+ const handleRef = useCallback3((view) => {
510
+ setController(createEditorController(view));
511
+ }, [
512
+ setController
513
+ ]);
514
+ return /* @__PURE__ */ React4.createElement(MarkdownEditorContent, {
515
+ ...composableProps2(props),
516
+ id,
517
+ attendableId,
518
+ compact,
519
+ viewMode,
520
+ toolbarState: state,
521
+ extensions,
522
+ onFileUpload,
523
+ ref: handleRef
524
+ });
525
+ });
526
+ MarkdownEditorContent2.displayName = MARKDOWN_EDITOR_CONTENT_NAME;
527
+ var MARKDOWN_EDITOR_TOOLBAR_NAME = "MarkdownEditor.Toolbar";
528
+ var MarkdownEditorToolbar2 = (props) => {
529
+ const { id, attendableId, onAction, onFileUpload, onViewModeChange } = useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
530
+ const { controller } = useEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
531
+ return /* @__PURE__ */ React4.createElement(MarkdownEditorToolbar, {
532
+ ...props,
533
+ id: attendableId ?? id,
534
+ editorView: controller?.view ?? void 0,
535
+ onAction,
536
+ onFileUpload,
537
+ onViewModeChange
538
+ });
539
+ };
540
+ MarkdownEditorToolbar2.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;
541
+ var MARKDOWN_EDITOR_BLOCKS_NAME = "MarkdownEditor.Blocks";
542
+ var MarkdownEditorBlocks = (_props) => {
543
+ const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);
544
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, previewBlocks.map(({ link, el }) => /* @__PURE__ */ React4.createElement(PreviewBlock, {
545
+ key: link.dxn,
546
+ link,
547
+ el
548
+ })));
549
+ };
550
+ MarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;
551
+ var PreviewBlock = ({ el, link }) => {
552
+ const client = useClient();
553
+ const dxn = DXN.parse(link.dxn);
554
+ const subject = client.graph.makeRef(dxn).target;
555
+ const data = useMemo2(() => ({
556
+ subject
557
+ }), [
558
+ subject
559
+ ]);
560
+ return /* @__PURE__ */ createPortal2(/* @__PURE__ */ React4.createElement(Surface.Surface, {
561
+ type: AppSurface.Card,
562
+ data,
563
+ limit: 1
564
+ }), el);
565
+ };
566
+ var MarkdownEditor = {
567
+ Content: MarkdownEditorContent2,
568
+ Toolbar: MarkdownEditorToolbar2,
569
+ Blocks: MarkdownEditorBlocks
570
+ };
571
+
572
+ // src/components/index.ts
573
+ var MarkdownSettings2 = lazy(() => import("./MarkdownSettings-LE66LODL.mjs"));
144
574
  export {
145
- Markdown_exports as Markdown,
146
- MarkdownAction_exports as MarkdownAction,
147
575
  MarkdownCapabilities,
576
+ MarkdownEditor,
577
+ MarkdownEditorProvider,
148
578
  MarkdownEvents,
149
579
  MarkdownPlugin,
150
- getAbstract,
580
+ getContentSnippet,
151
581
  getFallbackName,
152
582
  isEditorModel,
153
583
  isMarkdownProperties,
154
584
  meta,
155
- not_meta,
156
585
  serializer,
157
586
  setFallbackName
158
587
  };