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