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