@dxos/plugin-markdown 0.8.4-main.406dc2a → 0.8.4-main.422d1c7879

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