@dxos/plugin-markdown 0.8.4-main.74a063c4e0 → 0.8.4-main.765dc60934

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 (313) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/EditableMarkdownCard-LXBXN3OW.mjs +32 -0
  4. package/dist/lib/neutral/EditableMarkdownCard-LXBXN3OW.mjs.map +7 -0
  5. package/dist/lib/neutral/MarkdownArticle-Z4QRU3WD.mjs +126 -0
  6. package/dist/lib/neutral/MarkdownArticle-Z4QRU3WD.mjs.map +7 -0
  7. package/dist/lib/neutral/MarkdownCard-INMBLUL4.mjs +102 -0
  8. package/dist/lib/neutral/MarkdownCard-INMBLUL4.mjs.map +7 -0
  9. package/dist/lib/neutral/MarkdownPlugin.mjs +10 -0
  10. package/dist/lib/neutral/MarkdownPlugin.node.mjs +25 -0
  11. package/dist/lib/neutral/MarkdownPlugin.node.mjs.map +7 -0
  12. package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs +32 -0
  13. package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs.map +7 -0
  14. package/dist/lib/neutral/anchor-sort-L4VCKDO6.mjs +32 -0
  15. package/dist/lib/neutral/anchor-sort-L4VCKDO6.mjs.map +7 -0
  16. package/dist/lib/neutral/app-graph-serializer-YI72EEVM.mjs +55 -0
  17. package/dist/lib/neutral/app-graph-serializer-YI72EEVM.mjs.map +7 -0
  18. package/dist/lib/neutral/blueprint-definition-33OK2KUL.mjs +15 -0
  19. package/dist/lib/neutral/blueprint-definition-33OK2KUL.mjs.map +7 -0
  20. package/dist/lib/neutral/blueprints/index.mjs +8 -0
  21. package/dist/lib/neutral/capabilities/index.mjs +25 -0
  22. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  23. package/dist/lib/neutral/capabilities/node.mjs +11 -0
  24. package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
  25. package/dist/lib/neutral/chunk-6N7AD3IU.mjs +8 -0
  26. package/dist/lib/neutral/chunk-6N7AD3IU.mjs.map +7 -0
  27. package/dist/lib/neutral/chunk-KDN4GKG2.mjs +98 -0
  28. package/dist/lib/neutral/chunk-KDN4GKG2.mjs.map +7 -0
  29. package/dist/lib/{browser/blueprints/index.mjs → neutral/chunk-LXNSKCPD.mjs} +10 -17
  30. package/dist/lib/neutral/chunk-LXNSKCPD.mjs.map +7 -0
  31. package/dist/lib/neutral/chunk-LYUELXJH.mjs +57 -0
  32. package/dist/lib/neutral/chunk-LYUELXJH.mjs.map +7 -0
  33. package/dist/lib/neutral/chunk-SOLAMEK3.mjs +276 -0
  34. package/dist/lib/neutral/chunk-SOLAMEK3.mjs.map +7 -0
  35. package/dist/lib/neutral/chunk-YC2OAUM7.mjs +22 -0
  36. package/dist/lib/neutral/chunk-YC2OAUM7.mjs.map +7 -0
  37. package/dist/lib/neutral/comment-config-7VTHRUIZ.mjs +30 -0
  38. package/dist/lib/neutral/comment-config-7VTHRUIZ.mjs.map +7 -0
  39. package/dist/lib/neutral/components/index.mjs +370 -0
  40. package/dist/lib/neutral/components/index.mjs.map +7 -0
  41. package/dist/lib/neutral/containers/index.mjs +13 -0
  42. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  43. package/dist/lib/{browser/create-HSXPXCC5.mjs → neutral/create-3PGJ2NEK.mjs} +5 -7
  44. package/dist/lib/neutral/create-3PGJ2NEK.mjs.map +7 -0
  45. package/dist/lib/{browser/create-markdown-WB7DH3UF.mjs → neutral/create-markdown-5LS46GMH.mjs} +5 -7
  46. package/dist/lib/neutral/create-markdown-5LS46GMH.mjs.map +7 -0
  47. package/dist/lib/neutral/create-object-ZA6VXLJJ.mjs +27 -0
  48. package/dist/lib/neutral/create-object-ZA6VXLJJ.mjs.map +7 -0
  49. package/dist/lib/neutral/hooks/index.mjs +321 -0
  50. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  51. package/dist/lib/neutral/index.mjs +42 -0
  52. package/dist/lib/neutral/meta.json +1 -0
  53. package/dist/lib/neutral/meta.mjs +8 -0
  54. package/dist/lib/neutral/meta.mjs.map +7 -0
  55. package/dist/lib/{browser/open-N6PAX6DY.mjs → neutral/open-WCYGBLAG.mjs} +5 -6
  56. package/dist/lib/neutral/open-WCYGBLAG.mjs.map +7 -0
  57. package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs +13 -0
  58. package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs.map +7 -0
  59. package/dist/lib/neutral/operations/index.mjs +8 -0
  60. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  61. package/dist/lib/neutral/plugin.mjs +16 -0
  62. package/dist/lib/neutral/plugin.mjs.map +7 -0
  63. package/dist/lib/neutral/react-surface-SCIL76V5.mjs +119 -0
  64. package/dist/lib/neutral/react-surface-SCIL76V5.mjs.map +7 -0
  65. package/dist/lib/{browser/scroll-to-anchor-5M4F24AB.mjs → neutral/scroll-to-anchor-6FIOKVKT.mjs} +7 -9
  66. package/dist/lib/neutral/scroll-to-anchor-6FIOKVKT.mjs.map +7 -0
  67. package/dist/lib/neutral/set-view-mode-37RSPFEN.mjs +24 -0
  68. package/dist/lib/neutral/set-view-mode-37RSPFEN.mjs.map +7 -0
  69. package/dist/lib/neutral/settings-TDGDLCUR.mjs +34 -0
  70. package/dist/lib/neutral/settings-TDGDLCUR.mjs.map +7 -0
  71. package/dist/lib/neutral/state-5COCF5PN.mjs +44 -0
  72. package/dist/lib/neutral/state-5COCF5PN.mjs.map +7 -0
  73. package/dist/lib/neutral/testing.mjs +22 -0
  74. package/dist/lib/neutral/testing.mjs.map +7 -0
  75. package/dist/lib/neutral/translations.mjs +43 -0
  76. package/dist/lib/neutral/translations.mjs.map +7 -0
  77. package/dist/lib/neutral/types/index.mjs +16 -0
  78. package/dist/lib/neutral/types/index.mjs.map +7 -0
  79. package/dist/lib/{browser/update-5QIRVGTL.mjs → neutral/update-markdown-5EDRD3SH.mjs} +8 -9
  80. package/dist/lib/neutral/update-markdown-5EDRD3SH.mjs.map +7 -0
  81. package/dist/types/src/MarkdownPlugin.d.ts +1 -0
  82. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  83. package/dist/types/src/{cli/plugin.d.ts → MarkdownPlugin.node.d.ts} +2 -1
  84. package/dist/types/src/MarkdownPlugin.node.d.ts.map +1 -0
  85. package/dist/types/src/MarkdownPlugin.test.d.ts +2 -0
  86. package/dist/types/src/MarkdownPlugin.test.d.ts.map +1 -0
  87. package/dist/types/src/blueprints/markdown-blueprint.d.ts +2 -2
  88. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/blueprint-definition.d.ts +2 -2
  93. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/comment-config.d.ts +12 -0
  95. package/dist/types/src/capabilities/comment-config.d.ts.map +1 -0
  96. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  97. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  98. package/dist/types/src/capabilities/index.d.ts +17 -22
  99. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/node.d.ts +7 -1
  101. package/dist/types/src/capabilities/node.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  103. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/settings.d.ts +1 -19
  106. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/state.d.ts +2 -2
  108. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  109. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +28 -22
  110. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  111. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +2 -2
  112. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  113. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +2 -1
  114. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  115. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +2 -6
  116. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  117. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +1 -1
  118. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  119. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +46 -90
  120. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -1
  121. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts +15 -0
  122. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts.map +1 -0
  123. package/dist/types/src/containers/EditableMarkdownCard/index.d.ts +3 -0
  124. package/dist/types/src/containers/EditableMarkdownCard/index.d.ts.map +1 -0
  125. package/dist/types/src/containers/{MarkdownContainer/MarkdownContainer.d.ts → MarkdownArticle/MarkdownArticle.d.ts} +9 -9
  126. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts.map +1 -0
  127. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts +97 -0
  128. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts.map +1 -0
  129. package/dist/types/src/containers/MarkdownArticle/index.d.ts +3 -0
  130. package/dist/types/src/containers/MarkdownArticle/index.d.ts.map +1 -0
  131. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  132. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +1 -1
  133. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
  134. package/dist/types/src/containers/MarkdownCard/snippet.d.ts +7 -5
  135. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -1
  136. package/dist/types/src/containers/index.d.ts +3 -2
  137. package/dist/types/src/containers/index.d.ts.map +1 -1
  138. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -1
  139. package/dist/types/src/hooks/useExtensions.d.ts +3 -1
  140. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  141. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  142. package/dist/types/src/index.d.ts +2 -3
  143. package/dist/types/src/index.d.ts.map +1 -1
  144. package/dist/types/src/meta.d.ts.map +1 -1
  145. package/dist/types/src/operations/create-markdown.d.ts +3 -3
  146. package/dist/types/src/operations/create-markdown.d.ts.map +1 -1
  147. package/dist/types/src/operations/create.d.ts +3 -3
  148. package/dist/types/src/operations/create.d.ts.map +1 -1
  149. package/dist/types/src/operations/index.d.ts +1 -2
  150. package/dist/types/src/operations/index.d.ts.map +1 -1
  151. package/dist/types/src/operations/open.d.ts +3 -3
  152. package/dist/types/src/operations/open.d.ts.map +1 -1
  153. package/dist/types/src/operations/scroll-to-anchor.d.ts +3 -3
  154. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -1
  155. package/dist/types/src/operations/set-view-mode.d.ts +3 -3
  156. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -1
  157. package/dist/types/src/operations/update-markdown.d.ts +5 -0
  158. package/dist/types/src/operations/update-markdown.d.ts.map +1 -0
  159. package/dist/types/src/plugin.d.ts +4 -0
  160. package/dist/types/src/plugin.d.ts.map +1 -0
  161. package/dist/types/src/testing.d.ts +1 -0
  162. package/dist/types/src/testing.d.ts.map +1 -1
  163. package/dist/types/src/translations.d.ts +70 -73
  164. package/dist/types/src/translations.d.ts.map +1 -1
  165. package/dist/types/src/types/Markdown.d.ts +9 -8
  166. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  167. package/dist/types/src/types/MarkdownCapabilities.d.ts +32 -0
  168. package/dist/types/src/types/MarkdownCapabilities.d.ts.map +1 -0
  169. package/dist/types/src/types/MarkdownEvents.d.ts +3 -0
  170. package/dist/types/src/types/MarkdownEvents.d.ts.map +1 -0
  171. package/dist/types/src/{operations/definitions.d.ts → types/MarkdownOperation.d.ts} +3 -3
  172. package/dist/types/src/types/MarkdownOperation.d.ts.map +1 -0
  173. package/dist/types/src/types/Settings.d.ts +10 -9
  174. package/dist/types/src/types/Settings.d.ts.map +1 -1
  175. package/dist/types/src/types/index.d.ts +3 -2
  176. package/dist/types/src/types/index.d.ts.map +1 -1
  177. package/dist/types/src/types/types.d.ts +1 -0
  178. package/dist/types/src/types/types.d.ts.map +1 -1
  179. package/dist/types/src/util.d.ts +1 -1
  180. package/dist/types/src/util.d.ts.map +1 -1
  181. package/dist/types/tsconfig.tsbuildinfo +1 -1
  182. package/package.json +119 -104
  183. package/src/MarkdownPlugin.node.ts +20 -0
  184. package/src/MarkdownPlugin.test.ts +26 -0
  185. package/src/MarkdownPlugin.tsx +9 -53
  186. package/src/blueprints/markdown-blueprint.ts +8 -9
  187. package/src/capabilities/app-graph-serializer.ts +4 -6
  188. package/src/capabilities/artifact-definition.ts +3 -4
  189. package/src/capabilities/blueprint-definition.ts +2 -0
  190. package/src/capabilities/comment-config.ts +32 -0
  191. package/src/capabilities/create-object.ts +30 -0
  192. package/src/capabilities/index.ts +4 -1
  193. package/src/capabilities/node.ts +3 -1
  194. package/src/capabilities/operation-handler.ts +1 -1
  195. package/src/capabilities/react-surface.tsx +18 -11
  196. package/src/capabilities/state.ts +4 -4
  197. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +22 -17
  198. package/src/components/MarkdownEditor/MarkdownEditor.tsx +99 -86
  199. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +5 -5
  200. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +5 -16
  201. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +2 -1
  202. package/src/components/MarkdownSettings/MarkdownSettings.tsx +16 -119
  203. package/src/containers/EditableMarkdownCard/EditableMarkdownCard.tsx +42 -0
  204. package/src/containers/EditableMarkdownCard/index.ts +6 -0
  205. package/src/containers/{MarkdownContainer/MarkdownContainer.stories.tsx → MarkdownArticle/MarkdownArticle.stories.tsx} +9 -8
  206. package/src/containers/{MarkdownContainer/MarkdownContainer.tsx → MarkdownArticle/MarkdownArticle.tsx} +32 -21
  207. package/src/containers/MarkdownArticle/index.ts +6 -0
  208. package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +5 -4
  209. package/src/containers/MarkdownCard/MarkdownCard.tsx +21 -11
  210. package/src/containers/MarkdownCard/snippet.ts +27 -51
  211. package/src/containers/index.ts +3 -2
  212. package/src/hooks/useExtensions.tsx +7 -8
  213. package/src/hooks/useLinkQuery.ts +9 -26
  214. package/src/index.ts +2 -6
  215. package/src/meta.ts +4 -1
  216. package/src/operations/create-markdown.ts +3 -4
  217. package/src/operations/create.conversations.json +1 -1
  218. package/src/operations/create.test.ts +7 -9
  219. package/src/operations/create.ts +3 -4
  220. package/src/operations/index.ts +2 -4
  221. package/src/operations/open.ts +3 -3
  222. package/src/operations/scroll-to-anchor.ts +3 -4
  223. package/src/operations/set-view-mode.ts +3 -4
  224. package/src/operations/{update.ts → update-markdown.ts} +3 -3
  225. package/src/operations/update.conversations.json +1 -1
  226. package/src/operations/update.test.ts +7 -9
  227. package/src/plugin.ts +11 -0
  228. package/src/testing.ts +5 -3
  229. package/src/translations.ts +2 -26
  230. package/src/types/Markdown.ts +5 -0
  231. package/src/types/MarkdownCapabilities.ts +51 -0
  232. package/src/types/MarkdownEvents.ts +14 -0
  233. package/src/{operations/definitions.ts → types/MarkdownOperation.ts} +4 -2
  234. package/src/types/Settings.ts +47 -10
  235. package/src/types/index.ts +3 -2
  236. package/src/types/types.ts +4 -1
  237. package/src/util.tsx +3 -3
  238. package/dist/lib/browser/MarkdownSettings-YZFNSJJY.mjs +0 -121
  239. package/dist/lib/browser/MarkdownSettings-YZFNSJJY.mjs.map +0 -7
  240. package/dist/lib/browser/blueprints/index.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-46WIDM4R.mjs +0 -98
  242. package/dist/lib/browser/chunk-46WIDM4R.mjs.map +0 -7
  243. package/dist/lib/browser/chunk-XKUKZNUS.mjs +0 -158
  244. package/dist/lib/browser/chunk-XKUKZNUS.mjs.map +0 -7
  245. package/dist/lib/browser/cli/index.mjs +0 -39
  246. package/dist/lib/browser/cli/index.mjs.map +0 -7
  247. package/dist/lib/browser/create-HSXPXCC5.mjs.map +0 -7
  248. package/dist/lib/browser/create-markdown-WB7DH3UF.mjs.map +0 -7
  249. package/dist/lib/browser/index.mjs +0 -653
  250. package/dist/lib/browser/index.mjs.map +0 -7
  251. package/dist/lib/browser/meta.json +0 -1
  252. package/dist/lib/browser/open-N6PAX6DY.mjs.map +0 -7
  253. package/dist/lib/browser/operations/index.mjs +0 -14
  254. package/dist/lib/browser/operations/index.mjs.map +0 -7
  255. package/dist/lib/browser/scroll-to-anchor-5M4F24AB.mjs.map +0 -7
  256. package/dist/lib/browser/set-view-mode-NBNF2I5W.mjs +0 -26
  257. package/dist/lib/browser/set-view-mode-NBNF2I5W.mjs.map +0 -7
  258. package/dist/lib/browser/types/index.mjs +0 -16
  259. package/dist/lib/browser/update-5QIRVGTL.mjs.map +0 -7
  260. package/dist/lib/node-esm/MarkdownSettings-X6SDS35F.mjs +0 -122
  261. package/dist/lib/node-esm/MarkdownSettings-X6SDS35F.mjs.map +0 -7
  262. package/dist/lib/node-esm/blueprints/index.mjs +0 -52
  263. package/dist/lib/node-esm/blueprints/index.mjs.map +0 -7
  264. package/dist/lib/node-esm/chunk-4MSJO6IJ.mjs +0 -99
  265. package/dist/lib/node-esm/chunk-4MSJO6IJ.mjs.map +0 -7
  266. package/dist/lib/node-esm/chunk-E4BQCEXF.mjs +0 -159
  267. package/dist/lib/node-esm/chunk-E4BQCEXF.mjs.map +0 -7
  268. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  269. package/dist/lib/node-esm/cli/index.mjs +0 -40
  270. package/dist/lib/node-esm/cli/index.mjs.map +0 -7
  271. package/dist/lib/node-esm/create-6Z2KYISY.mjs +0 -31
  272. package/dist/lib/node-esm/create-6Z2KYISY.mjs.map +0 -7
  273. package/dist/lib/node-esm/create-markdown-JWQZICKY.mjs +0 -23
  274. package/dist/lib/node-esm/create-markdown-JWQZICKY.mjs.map +0 -7
  275. package/dist/lib/node-esm/index.mjs +0 -654
  276. package/dist/lib/node-esm/index.mjs.map +0 -7
  277. package/dist/lib/node-esm/meta.json +0 -1
  278. package/dist/lib/node-esm/open-DSNFRSNZ.mjs +0 -22
  279. package/dist/lib/node-esm/open-DSNFRSNZ.mjs.map +0 -7
  280. package/dist/lib/node-esm/operations/index.mjs +0 -15
  281. package/dist/lib/node-esm/operations/index.mjs.map +0 -7
  282. package/dist/lib/node-esm/scroll-to-anchor-D6SHGU2R.mjs +0 -50
  283. package/dist/lib/node-esm/scroll-to-anchor-D6SHGU2R.mjs.map +0 -7
  284. package/dist/lib/node-esm/set-view-mode-REYB4L7J.mjs +0 -27
  285. package/dist/lib/node-esm/set-view-mode-REYB4L7J.mjs.map +0 -7
  286. package/dist/lib/node-esm/types/index.mjs +0 -17
  287. package/dist/lib/node-esm/update-YMQAIKOF.mjs +0 -46
  288. package/dist/lib/node-esm/update-YMQAIKOF.mjs.map +0 -7
  289. package/dist/types/src/cli/index.d.ts +0 -2
  290. package/dist/types/src/cli/index.d.ts.map +0 -1
  291. package/dist/types/src/cli/plugin.d.ts.map +0 -1
  292. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +0 -1
  293. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts +0 -99
  294. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +0 -1
  295. package/dist/types/src/containers/MarkdownContainer/index.d.ts +0 -3
  296. package/dist/types/src/containers/MarkdownContainer/index.d.ts.map +0 -1
  297. package/dist/types/src/operations/definitions.d.ts.map +0 -1
  298. package/dist/types/src/operations/update.d.ts +0 -5
  299. package/dist/types/src/operations/update.d.ts.map +0 -1
  300. package/dist/types/src/types/capabilities.d.ts +0 -51
  301. package/dist/types/src/types/capabilities.d.ts.map +0 -1
  302. package/dist/types/src/types/events.d.ts +0 -5
  303. package/dist/types/src/types/events.d.ts.map +0 -1
  304. package/src/cli/index.ts +0 -5
  305. package/src/cli/plugin.ts +0 -39
  306. package/src/containers/MarkdownContainer/index.ts +0 -6
  307. package/src/types/capabilities.ts +0 -50
  308. package/src/types/events.ts +0 -14
  309. /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/MarkdownPlugin.mjs.map} +0 -0
  310. /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
  311. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  312. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  313. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/Markdown.ts", "../../../src/types/Settings.ts", "../../../src/types/MarkdownCapabilities.ts", "../../../src/types/MarkdownEvents.ts", "../../../src/types/MarkdownOperation.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { BlueprintsAnnotation, GraphPropsAnnotation } from '@dxos/app-toolkit';\nimport { Annotation, Obj, Ref, Type } from '@dxos/echo';\nimport { DescriptionAnnotation, FormInputAnnotation, LabelAnnotation } from '@dxos/echo/internal';\nimport { Text } from '@dxos/schema';\n\nexport const BLUEPRINT_KEY = 'org.dxos.blueprint.markdown';\n\n// Re-export Settings as merged const/type (not as namespace).\nimport * as SettingsModule from './Settings';\nexport const Settings = SettingsModule.Settings;\nexport type Settings = SettingsModule.Settings;\n\n/**\n * Document Item type.\n */\nexport const Document = Schema.Struct({\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n fallbackName: Schema.String.pipe(FormInputAnnotation.set(false), Schema.optional),\n content: Ref.Ref(Text.Text).pipe(FormInputAnnotation.set(false)),\n}).pipe(\n Type.object({\n typename: 'org.dxos.type.document',\n version: '0.1.0',\n }),\n LabelAnnotation.set(['name', 'fallbackName']),\n DescriptionAnnotation.set('description'),\n Annotation.IconAnnotation.set({\n icon: 'ph--text-aa--regular',\n hue: 'indigo',\n }),\n BlueprintsAnnotation.set([BLUEPRINT_KEY]),\n GraphPropsAnnotation.set({ managesAutofocus: true }),\n);\n\nexport type Document = Schema.Schema.Type<typeof Document>;\n\n/**\n * Document factory.\n */\nexport const make = ({\n content = '',\n ...props\n}: Partial<{ name: string; fallbackName: string; content: string }> = {}) => {\n const doc = Obj.make(Document, { ...props, content: Ref.make(Text.make({ content })) });\n // TODO(dmaretskyi): We need a better way to set parents when creating hierarchies.\n Obj.setParent(doc.content.target!, doc);\n return doc;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { EditorInputMode, EditorViewMode } from '@dxos/ui-editor/types';\n\n/**\n * Plugin settings.\n */\nexport const Settings = Schema.mutable(\n Schema.Struct({\n defaultViewMode: EditorViewMode.annotations({\n title: 'Default view mode',\n description: 'Set whether documents open in editing or read-only mode.',\n }),\n editorInputMode: Schema.optional(\n EditorInputMode.annotations({\n title: 'Editor input mode',\n description: 'Choose keyboard bindings for the editor.',\n }),\n ),\n toolbar: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Show toolbar',\n description: 'Display a formatting toolbar above the editor.',\n }),\n ),\n numberedHeadings: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Numbered headings',\n description: 'Automatically number heading levels in the document.',\n }),\n ),\n folding: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Folding',\n description: 'Allow collapsing and expanding sections by heading.',\n }),\n ),\n experimental: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Enable experimental features',\n description: 'Turn on features that are still in development.',\n }),\n ),\n debug: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Enable debugging features',\n description: 'Show developer tools and diagnostics for the editor.',\n }),\n ),\n snippets: Schema.optional(\n Schema.String.annotations({\n title: 'Snippets',\n description: 'Input snippets to replay for testing purposes.',\n }),\n ),\n }),\n);\n\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { type EditorView } from '@codemirror/view';\nimport { type Atom } from '@effect-atom/atom-react';\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { type EditorStateStore } from '@dxos/ui-editor';\nimport { type EditorViewMode } from '@dxos/ui-editor/types';\n\nimport { meta } from '#meta';\n\nimport type * as Markdown from './Markdown';\nimport { type MarkdownExtensionProvider } from './types';\n\n/** Schema for persisted markdown state. */\nexport const StateSchema = Schema.mutable(\n Schema.Struct({\n viewMode: Schema.Record({ key: Schema.String, value: Schema.String }),\n }),\n);\n\nexport type MarkdownState = {\n viewMode: Record<string, EditorViewMode>;\n};\n\nexport type EditorViewEntry = { view: EditorView; documentId: string };\n\nexport type EditorViewRegistry = {\n register: (attendableId: string, view: EditorView, documentId: string) => void;\n unregister: (attendableId: string) => void;\n get: (attendableId: string) => EditorViewEntry | undefined;\n};\n\nexport const Settings = Capability.make<Atom.Writable<Markdown.Settings>>(`${meta.id}.capability.settings`);\n\n/** Persisted state atom for view mode per document. */\nexport const State = Capability.make<Atom.Writable<MarkdownState>>(`${meta.id}.capability.state`);\n\n/** Editor state store for cursor positions, scroll state, etc. */\nexport const EditorState = Capability.make<EditorStateStore>(`${meta.id}.capability.editor-state`);\n\n/** Registry of active EditorView instances keyed by attendable ID. */\nexport const EditorViews = Capability.make<EditorViewRegistry>(`${meta.id}.capability.editor-views`);\n\n// TODO(burdon): Move to ./types (external API)?\nexport const Extensions = Capability.make<MarkdownExtensionProvider[]>(`${meta.id}.capability.extensions`);\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { type ActivationEvent } from '@dxos/app-framework';\nimport { AppActivationEvents } from '@dxos/app-toolkit';\n\nimport { meta } from '#meta';\n\nexport const SetupExtensions: ActivationEvent.ActivationEvent = AppActivationEvents.createStateEvent(\n `${meta.id}.event.setup-extensions`,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/compute';\nimport { Database, Ref } from '@dxos/echo';\nimport { EditorViewMode } from '@dxos/ui-editor/types';\nimport { trim } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nimport * as Markdown from './Markdown';\n\nconst MARKDOWN_OPERATION = `${meta.id}.operation`;\n\nconst Edit = Schema.Struct({\n oldString: Schema.String.annotations({\n description: 'The text to find in the document.',\n }),\n newString: Schema.String.annotations({\n description: 'The text to replace it with.',\n }),\n replaceAll: Schema.optional(Schema.Boolean).annotations({\n description: 'If true, replaces all occurrences. Defaults to false (first occurrence only).',\n }),\n});\n\nexport const Create = Operation.make({\n meta: {\n key: 'org.dxos.function.markdown.create',\n name: 'Create',\n description: 'Creates a new markdown document and adds it to the space.',\n },\n input: Schema.Struct({\n name: Schema.String,\n content: Schema.String,\n }),\n output: Schema.Struct({\n id: Schema.String.annotations({\n description: 'The DXN of the created document.',\n }),\n }),\n services: [Database.Service],\n});\n\nexport const CreateMarkdown = Operation.make({\n meta: { key: `${MARKDOWN_OPERATION}.create`, name: 'Create Markdown Document' },\n services: [Capability.Service],\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n content: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Markdown.Document,\n }),\n});\n\nexport const Open = Operation.make({\n meta: {\n key: 'org.dxos.function.markdown.open',\n name: 'Open',\n description: 'Opens and reads the contents of a new markdown document.',\n },\n input: Schema.Struct({\n doc: Ref.Ref(Markdown.Document).annotations({\n description: 'The ID of the markdown document.',\n }),\n }),\n output: Schema.Struct({\n content: Schema.String,\n }),\n services: [Database.Service],\n});\n\nexport const ScrollToAnchor = Operation.make({\n meta: { key: `${MARKDOWN_OPERATION}.scroll-to-anchor`, name: 'Scroll To Anchor' },\n services: [Capability.Service],\n input: Schema.Struct({\n subject: Schema.String.annotations({ description: 'Attendable ID of the markdown editor.' }),\n cursor: Schema.String.annotations({ description: 'Cursor position to scroll to.' }),\n ref: Schema.optional(Schema.String.annotations({ description: 'Reference ID (e.g. thread ID).' })),\n }),\n output: Schema.Void,\n});\n\n// TODO(wittjosiah): This appears to be unused.\nexport const SetViewMode = Operation.make({\n meta: { key: `${MARKDOWN_OPERATION}.set-view-mode`, name: 'Set View Mode' },\n services: [Capability.Service],\n input: Schema.Struct({\n id: Schema.String,\n viewMode: EditorViewMode,\n }),\n output: Schema.Void,\n});\n\nexport const Update = Operation.make({\n meta: {\n key: 'org.dxos.function.markdown.update',\n name: 'Update',\n description: trim`\n Applies a set of edits to the markdown document.\n `,\n },\n input: Schema.Struct({\n doc: Ref.Ref(Markdown.Document).annotations({\n description: 'The ID of the markdown document.',\n }),\n edits: Schema.Array(Edit).annotations({\n description: 'The edits to apply to the document. Each edit finds oldString and replaces it with newString.',\n }),\n }),\n output: Schema.Struct({\n newContent: Schema.String,\n }),\n services: [Database.Service],\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["Settings", "Schema", "BlueprintsAnnotation", "GraphPropsAnnotation", "Annotation", "Obj", "Ref", "Type", "DescriptionAnnotation", "FormInputAnnotation", "LabelAnnotation", "Text", "Schema", "EditorInputMode", "EditorViewMode", "Settings", "mutable", "Struct", "defaultViewMode", "annotations", "title", "description", "editorInputMode", "optional", "toolbar", "Boolean", "numberedHeadings", "folding", "experimental", "debug", "snippets", "String", "BLUEPRINT_KEY", "Settings", "Document", "Struct", "name", "optional", "String", "description", "fallbackName", "pipe", "FormInputAnnotation", "set", "content", "Ref", "Text", "Type", "object", "typename", "version", "LabelAnnotation", "DescriptionAnnotation", "Annotation", "IconAnnotation", "icon", "hue", "BlueprintsAnnotation", "GraphPropsAnnotation", "managesAutofocus", "make", "props", "doc", "Obj", "setParent", "target", "Settings", "Schema", "Capability", "meta", "StateSchema", "mutable", "Struct", "viewMode", "Record", "key", "String", "value", "make", "id", "State", "EditorState", "EditorViews", "Extensions", "AppActivationEvents", "meta", "SetupExtensions", "createStateEvent", "id", "Schema", "Capability", "Operation", "Database", "Ref", "EditorViewMode", "trim", "meta", "MARKDOWN_OPERATION", "meta", "id", "Edit", "Struct", "oldString", "String", "annotations", "description", "newString", "replaceAll", "optional", "Boolean", "Create", "Operation", "make", "key", "name", "input", "content", "output", "services", "Database", "Service", "CreateMarkdown", "Capability", "object", "Document", "Open", "doc", "Ref", "ScrollToAnchor", "subject", "cursor", "ref", "Void", "SetViewMode", "viewMode", "EditorViewMode", "Update", "trim", "edits", "Array", "newContent"]
7
+ }
@@ -0,0 +1,22 @@
1
+ // src/meta.ts
2
+ import { trim } from "@dxos/util";
3
+ var meta = {
4
+ id: "org.dxos.plugin.markdown",
5
+ name: "Markdown",
6
+ description: trim`
7
+ Full-featured collaborative markdown editor with real-time editing, inline comments, and rich formatting.
8
+ Supports AI-powered editing assistance and seamlessly integrates with other workspace objects.
9
+ `,
10
+ icon: "ph--text-aa--regular",
11
+ iconHue: "indigo",
12
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown",
13
+ screenshots: [
14
+ "https://customer-5rxcjpyab08avpmn.cloudflarestream.com/cdf2656365bb1fd327c1fc2105d75e5a/iframe?poster=https%3A%2F%2Fcustomer-5rxcjpyab08avpmn.cloudflarestream.com%2Fcdf2656365bb1fd327c1fc2105d75e5a%2Fthumbnails%2Fthumbnail.jpg%3Ftime%3D%26height%3D600",
15
+ "https://dxos.network/plugin-details-markdown-dark.png"
16
+ ]
17
+ };
18
+
19
+ export {
20
+ meta
21
+ };
22
+ //# sourceMappingURL=chunk-YC2OAUM7.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.markdown',\n name: 'Markdown',\n description: trim`\n Full-featured collaborative markdown editor with real-time editing, inline comments, and rich formatting.\n Supports AI-powered editing assistance and seamlessly integrates with other workspace objects.\n `,\n icon: 'ph--text-aa--regular',\n iconHue: 'indigo',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown',\n screenshots: [\n 'https://customer-5rxcjpyab08avpmn.cloudflarestream.com/cdf2656365bb1fd327c1fc2105d75e5a/iframe?poster=https%3A%2F%2Fcustomer-5rxcjpyab08avpmn.cloudflarestream.com%2Fcdf2656365bb1fd327c1fc2105d75e5a%2Fthumbnails%2Fthumbnail.jpg%3Ftime%3D%26height%3D600',\n 'https://dxos.network/plugin-details-markdown-dark.png',\n ],\n};\n"],
5
+ "mappings": ";AAKA,SAASA,YAAY;AAEd,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaJ;;;;EAIbK,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,aAAa;IACX;IACA;;AAEJ;",
6
+ "names": ["trim", "meta", "id", "name", "description", "icon", "iconHue", "source", "screenshots"]
7
+ }
@@ -0,0 +1,30 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/capabilities/comment-config.ts
4
+ import * as Effect from "effect/Effect";
5
+ import { Capability } from "@dxos/app-framework";
6
+ import { AppCapabilities } from "@dxos/app-toolkit";
7
+ import { createDocAccessor, getTextInRange } from "@dxos/echo-db";
8
+ import { MarkdownOperation } from "#types";
9
+ import { Markdown } from "#types";
10
+ var comment_config_default = Capability.makeModule(Effect.fnUntraced(function* () {
11
+ const config = {
12
+ id: Markdown.Document.typename,
13
+ comments: "anchored",
14
+ selectionMode: "multi-range",
15
+ getAnchorLabel: (doc, anchor) => {
16
+ if (doc.content) {
17
+ const [start, end] = anchor.split(":");
18
+ return getTextInRange(createDocAccessor(doc.content.target, [
19
+ "content"
20
+ ]), start, end);
21
+ }
22
+ },
23
+ scrollToAnchor: MarkdownOperation.ScrollToAnchor
24
+ };
25
+ return Capability.contributes(AppCapabilities.CommentConfig, config);
26
+ }));
27
+ export {
28
+ comment_config_default as default
29
+ };
30
+ //# sourceMappingURL=comment-config-7VTHRUIZ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/comment-config.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\n// eslint-disable-next-line unused-imports/no-unused-imports\nimport type { Operation } from '@dxos/compute';\nimport { createDocAccessor, getTextInRange } from '@dxos/echo-db';\n\nimport { MarkdownOperation } from '#types';\nimport { Markdown } from '#types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const config: AppCapabilities.CommentConfig = {\n id: Markdown.Document.typename,\n comments: 'anchored',\n selectionMode: 'multi-range',\n getAnchorLabel: (doc: Markdown.Document, anchor: string): string | undefined => {\n if (doc.content) {\n const [start, end] = anchor.split(':');\n return getTextInRange(createDocAccessor(doc.content.target!, ['content']), start, end);\n }\n },\n scrollToAnchor: MarkdownOperation.ScrollToAnchor,\n };\n return Capability.contributes(AppCapabilities.CommentConfig, config);\n }),\n);\n"],
5
+ "mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAGhC,SAASC,mBAAmBC,sBAAsB;AAElD,SAASC,yBAAyB;AAClC,SAASC,gBAAgB;AAEzB,IAAA,yBAAeL,WAAWM,WACjBC,kBAAW,aAAA;AAChB,QAAMC,SAAwC;IAC5CC,IAAIJ,SAASK,SAASC;IACtBC,UAAU;IACVC,eAAe;IACfC,gBAAgB,CAACC,KAAwBC,WAAAA;AACvC,UAAID,IAAIE,SAAS;AACf,cAAM,CAACC,OAAOC,GAAAA,IAAOH,OAAOI,MAAM,GAAA;AAClC,eAAOjB,eAAeD,kBAAkBa,IAAIE,QAAQI,QAAS;UAAC;SAAU,GAAGH,OAAOC,GAAAA;MACpF;IACF;IACAG,gBAAgBlB,kBAAkBmB;EACpC;AACA,SAAOvB,WAAWwB,YAAYvB,gBAAgBwB,eAAejB,MAAAA;AAC/D,CAAA,CAAA;",
6
+ "names": ["Effect", "Capability", "AppCapabilities", "createDocAccessor", "getTextInRange", "MarkdownOperation", "Markdown", "makeModule", "fnUntraced", "config", "id", "Document", "typename", "comments", "selectionMode", "getAnchorLabel", "doc", "anchor", "content", "start", "end", "split", "target", "scrollToAnchor", "ScrollToAnchor", "contributes", "CommentConfig"]
7
+ }
@@ -0,0 +1,370 @@
1
+ import "../chunk-J5LGTIGS.mjs";
2
+
3
+ // src/components/index.ts
4
+ import { lazy } from "react";
5
+
6
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
7
+ import { createContext } from "@radix-ui/react-context";
8
+ import React4, { useCallback as useCallback3, useMemo as useMemo2, useState as useState2 } from "react";
9
+ import { createPortal as createPortal2 } from "react-dom";
10
+ import { Surface } from "@dxos/app-framework/ui";
11
+ import { AppSurface } from "@dxos/app-toolkit/ui";
12
+ import { Obj } from "@dxos/echo";
13
+ import { DXN } from "@dxos/keys";
14
+ import { useClient } from "@dxos/react-client";
15
+ import { createEditorController, useEditorContext } from "@dxos/react-ui-editor";
16
+ import { composable as composable2, composableProps as composableProps2 } from "@dxos/ui-theme";
17
+ import { isNonNullable } from "@dxos/util";
18
+ import { useEditorMenuOptions, useExtensions } from "#hooks";
19
+
20
+ // src/components/MarkdownEditor/MarkdownEditorContent.tsx
21
+ import { RegistryContext } from "@effect-atom/atom-react";
22
+ import React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo } from "react";
23
+ import { useCapabilities } from "@dxos/app-framework/ui";
24
+ import { useThemeContext, useTranslation } from "@dxos/react-ui";
25
+ import { useTextEditor } from "@dxos/react-ui-editor";
26
+ import { mobileSlots, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, documentSlots, formattingListener, processEditorPayload, editorClassNames } from "@dxos/ui-editor";
27
+ import { mx } from "@dxos/ui-theme";
28
+ import { isTruthy } from "@dxos/util";
29
+ import { meta } from "#meta";
30
+ import { MarkdownCapabilities } from "#types";
31
+ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attendableId, role, compact, viewMode, initialValue, editorStateStore, toolbarState, extensions, slots, onFileUpload }, forwardedRef) => {
32
+ const { t } = useTranslation(meta.id);
33
+ const { themeMode } = useThemeContext();
34
+ const registry = useContext(RegistryContext);
35
+ const updateToolbarState = useCallback((formatting) => {
36
+ if (toolbarState) {
37
+ registry.set(toolbarState, {
38
+ ...registry.get(toolbarState),
39
+ ...formatting
40
+ });
41
+ }
42
+ }, [
43
+ registry,
44
+ toolbarState
45
+ ]);
46
+ const { scrollTo, selection } = useMemo(() => editorStateStore?.getState(id) ?? {}, [
47
+ id
48
+ ]);
49
+ const { parentRef, view: editorView, focusAttributes } = useTextEditor(() => ({
50
+ ...role !== "section" && {
51
+ id,
52
+ scrollTo,
53
+ selection,
54
+ selectionEnd: true
55
+ },
56
+ initialValue,
57
+ extensions: [
58
+ createBasicExtensions({
59
+ readOnly: viewMode === "readonly",
60
+ placeholder: t("editor.placeholder"),
61
+ scrollPastEnd: !compact,
62
+ search: true
63
+ }),
64
+ createThemeExtensions({
65
+ themeMode,
66
+ slots: slots ?? (compact ? mobileSlots : documentSlots),
67
+ syntaxHighlighting: true
68
+ }),
69
+ createMarkdownExtensions(),
70
+ toolbarState && formattingListener(updateToolbarState),
71
+ role !== "section" && onFileUpload && dropFile({
72
+ // TODO(wittjosiah): Factor out to file uploader plugin.
73
+ onDrop: async (view, { files }) => {
74
+ const file = files[0];
75
+ const info = file && onFileUpload ? await onFileUpload(file) : void 0;
76
+ if (info) {
77
+ processEditorPayload(view, {
78
+ type: "image",
79
+ data: info.url
80
+ });
81
+ }
82
+ }
83
+ }),
84
+ extensions
85
+ ].filter(isTruthy)
86
+ }), [
87
+ id,
88
+ viewMode,
89
+ themeMode,
90
+ extensions,
91
+ compact
92
+ ]);
93
+ useImperativeHandle(forwardedRef, () => editorView, [
94
+ editorView
95
+ ]);
96
+ const [editorViewRegistry] = useCapabilities(MarkdownCapabilities.EditorViews);
97
+ useEffect(() => {
98
+ if (editorView && editorViewRegistry) {
99
+ editorViewRegistry.register(attendableId ?? id, editorView, id);
100
+ return () => editorViewRegistry.unregister(attendableId ?? id);
101
+ }
102
+ }, [
103
+ editorView,
104
+ editorViewRegistry,
105
+ attendableId,
106
+ id
107
+ ]);
108
+ useTest(editorView);
109
+ return /* @__PURE__ */ React.createElement("div", {
110
+ ...focusAttributes,
111
+ className: mx(editorClassNames(role), classNames),
112
+ "data-testid": "composer.markdownRoot",
113
+ "data-popover-collision-boundary": true,
114
+ ref: parentRef
115
+ });
116
+ });
117
+ var useTest = (view) => {
118
+ useEffect(() => {
119
+ const composer = window.composer;
120
+ if (composer) {
121
+ composer.editorView = view;
122
+ }
123
+ }, [
124
+ view
125
+ ]);
126
+ };
127
+
128
+ // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
129
+ import React3, { useCallback as useCallback2, useState } from "react";
130
+ import { Editor } from "@dxos/react-ui-editor";
131
+ import { composable, composableProps } from "@dxos/ui-theme";
132
+
133
+ // src/components/MarkdownEditor/FileUpload.tsx
134
+ import React2, { forwardRef as forwardRef2, useEffect as useEffect2, useImperativeHandle as useImperativeHandle2 } from "react";
135
+ import { createPortal } from "react-dom";
136
+ import { useDropzone } from "react-dropzone";
137
+ import { addLink } from "@dxos/ui-editor";
138
+ var IMAGE_FILES = [
139
+ ".jpg",
140
+ ".jpeg",
141
+ ".png",
142
+ ".gif"
143
+ ];
144
+ var FileUpload = /* @__PURE__ */ forwardRef2(({ editorView, onFileUpload }, forwardedRef) => {
145
+ const { acceptedFiles, open, inputRef } = useDropzone({
146
+ disabled: !onFileUpload,
147
+ multiple: false,
148
+ noDrag: true,
149
+ accept: {
150
+ "image/*": IMAGE_FILES
151
+ }
152
+ });
153
+ useImperativeHandle2(forwardedRef, () => open, []);
154
+ useEffect2(() => {
155
+ if (editorView && acceptedFiles.length && onFileUpload) {
156
+ requestAnimationFrame(async () => {
157
+ const f = acceptedFiles[0];
158
+ const file = new File([
159
+ f
160
+ ], f.name, {
161
+ type: f.type,
162
+ lastModified: f.lastModified
163
+ });
164
+ const info = await onFileUpload(file);
165
+ if (info) {
166
+ addLink({
167
+ url: info.url,
168
+ image: true
169
+ })(editorView);
170
+ }
171
+ });
172
+ }
173
+ }, [
174
+ editorView,
175
+ acceptedFiles,
176
+ onFileUpload
177
+ ]);
178
+ if (!onFileUpload) {
179
+ return null;
180
+ }
181
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ createPortal(/* @__PURE__ */ React2.createElement("input", {
182
+ ref: inputRef
183
+ }), document.body), " ");
184
+ });
185
+
186
+ // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
187
+ var MarkdownEditorToolbar = composable(({ id, role, editorView, customActions, onAction, onFileUpload, onViewModeChange, ...props }, forwardedRef) => {
188
+ const { className, ...rest } = composableProps(props);
189
+ const [upload, setUpload] = useState(null);
190
+ const uploadRef = useCallback2((next) => setUpload(() => next), []);
191
+ if (!editorView) {
192
+ return /* @__PURE__ */ React3.createElement("div", {
193
+ className,
194
+ ...rest,
195
+ ref: forwardedRef
196
+ });
197
+ }
198
+ return /* @__PURE__ */ React3.createElement("div", {
199
+ className: "contents",
200
+ ref: forwardedRef
201
+ }, /* @__PURE__ */ React3.createElement(Editor.Toolbar, {
202
+ ...rest,
203
+ classNames: className,
204
+ attendableId: id,
205
+ role,
206
+ customActions,
207
+ onAction,
208
+ onImageUpload: upload ?? void 0,
209
+ onViewModeChange
210
+ }), onFileUpload && /* @__PURE__ */ React3.createElement(FileUpload, {
211
+ ref: uploadRef,
212
+ editorView,
213
+ onFileUpload
214
+ }));
215
+ });
216
+
217
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
218
+ var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("MarkdownEditor.Context");
219
+ var MarkdownEditorProvider = ({ children, id, attendableId, object, settings, compact, viewMode, selectionManager, editorStateStore, extensions: extensionsProp, slashCommandGroups, onLinkQuery, onSelectObject, onAction, onFileUpload, onViewModeChange }) => {
220
+ const [previewBlocks, setPreviewBlocks] = useState2([]);
221
+ const previewOptions = useMemo2(() => ({
222
+ db: Obj.isObject(object) ? Obj.getDatabase(object) : void 0,
223
+ addBlockContainer: (block) => {
224
+ setPreviewBlocks((prev) => [
225
+ ...prev,
226
+ block
227
+ ]);
228
+ },
229
+ removeBlockContainer: ({ link }) => {
230
+ setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));
231
+ }
232
+ }), [
233
+ object
234
+ ]);
235
+ const menuOptions = useEditorMenuOptions({
236
+ slashCommandGroups,
237
+ onLinkQuery
238
+ });
239
+ const coreExtensions = useExtensions({
240
+ id,
241
+ object,
242
+ compact,
243
+ viewMode,
244
+ selectionManager,
245
+ editorStateStore,
246
+ previewOptions,
247
+ settings,
248
+ onSelectObject
249
+ });
250
+ const extensions = useMemo2(() => [
251
+ coreExtensions,
252
+ extensionsProp
253
+ ].filter(isNonNullable).flat(), [
254
+ coreExtensions,
255
+ extensionsProp
256
+ ]);
257
+ const editorRootProps = useMemo2(() => ({
258
+ extensions,
259
+ viewMode,
260
+ getMenu: menuOptions.getMenu,
261
+ trigger: menuOptions.trigger,
262
+ placeholder: menuOptions.placeholder,
263
+ ...menuOptions.filter !== void 0 ? {
264
+ filter: menuOptions.filter
265
+ } : {},
266
+ ...menuOptions.triggerKey !== void 0 ? {
267
+ triggerKey: menuOptions.triggerKey
268
+ } : {}
269
+ }), [
270
+ extensions,
271
+ viewMode,
272
+ menuOptions
273
+ ]);
274
+ const markdownContextValue = useMemo2(() => ({
275
+ id,
276
+ attendableId,
277
+ compact,
278
+ viewMode,
279
+ previewBlocks,
280
+ onAction,
281
+ onFileUpload,
282
+ onViewModeChange
283
+ }), [
284
+ id,
285
+ attendableId,
286
+ compact,
287
+ viewMode,
288
+ previewBlocks,
289
+ onAction,
290
+ onFileUpload,
291
+ onViewModeChange
292
+ ]);
293
+ return /* @__PURE__ */ React4.createElement(MarkdownEditorContextProvider, markdownContextValue, children(editorRootProps));
294
+ };
295
+ MarkdownEditorProvider.displayName = "MarkdownEditor.Provider";
296
+ var MARKDOWN_EDITOR_CONTENT_NAME = "MarkdownEditor.Content";
297
+ var MarkdownEditorContent2 = composable2(({ compact: compactProp, ...props }, _forwardedRef) => {
298
+ const { id, attendableId, compact = compactProp, viewMode, onFileUpload } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
299
+ const { extensions, setController, state } = useEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
300
+ const handleRef = useCallback3((view) => {
301
+ setController(createEditorController(view));
302
+ }, [
303
+ setController
304
+ ]);
305
+ return /* @__PURE__ */ React4.createElement(MarkdownEditorContent, {
306
+ ...composableProps2(props),
307
+ id,
308
+ attendableId,
309
+ compact,
310
+ viewMode,
311
+ toolbarState: state,
312
+ extensions,
313
+ onFileUpload,
314
+ ref: handleRef
315
+ });
316
+ });
317
+ MarkdownEditorContent2.displayName = MARKDOWN_EDITOR_CONTENT_NAME;
318
+ var MARKDOWN_EDITOR_TOOLBAR_NAME = "MarkdownEditor.Toolbar";
319
+ var MarkdownEditorToolbar2 = (props) => {
320
+ const { id, attendableId, onAction, onFileUpload, onViewModeChange } = useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
321
+ const { controller } = useEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
322
+ return /* @__PURE__ */ React4.createElement(MarkdownEditorToolbar, {
323
+ ...props,
324
+ id: attendableId ?? id,
325
+ editorView: controller?.view ?? void 0,
326
+ onAction,
327
+ onFileUpload,
328
+ onViewModeChange
329
+ });
330
+ };
331
+ MarkdownEditorToolbar2.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;
332
+ var MARKDOWN_EDITOR_BLOCKS_NAME = "MarkdownEditor.Blocks";
333
+ var MarkdownEditorBlocks = (_props) => {
334
+ const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);
335
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, previewBlocks.map(({ link, el }) => /* @__PURE__ */ React4.createElement(PreviewBlock, {
336
+ key: link.dxn,
337
+ link,
338
+ el
339
+ })));
340
+ };
341
+ MarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;
342
+ var PreviewBlock = ({ el, link }) => {
343
+ const client = useClient();
344
+ const dxn = DXN.parse(link.dxn);
345
+ const subject = client.graph.makeRef(dxn).target;
346
+ const data = useMemo2(() => ({
347
+ subject
348
+ }), [
349
+ subject
350
+ ]);
351
+ return /* @__PURE__ */ createPortal2(/* @__PURE__ */ React4.createElement(Surface.Surface, {
352
+ type: AppSurface.Card,
353
+ data,
354
+ limit: 1
355
+ }), el);
356
+ };
357
+ var MarkdownEditor = {
358
+ Content: MarkdownEditorContent2,
359
+ Toolbar: MarkdownEditorToolbar2,
360
+ Blocks: MarkdownEditorBlocks
361
+ };
362
+
363
+ // src/components/index.ts
364
+ var MarkdownSettings = lazy(() => import("../MarkdownSettings-YCTZJL5V.mjs"));
365
+ export {
366
+ MarkdownEditor,
367
+ MarkdownEditorProvider,
368
+ MarkdownSettings
369
+ };
370
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/index.ts", "../../../../src/components/MarkdownEditor/MarkdownEditor.tsx", "../../../../src/components/MarkdownEditor/MarkdownEditorContent.tsx", "../../../../src/components/MarkdownEditor/MarkdownEditorToolbar.tsx", "../../../../src/components/MarkdownEditor/FileUpload.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport * from './MarkdownEditor';\n\nexport const MarkdownSettings: ComponentType<any> = lazy(() => import('./MarkdownSettings'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { type EditorView } from '@codemirror/view';\nimport { type Atom } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type ReactNode, useCallback, useMemo, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { Obj } from '@dxos/echo';\nimport { DXN } from '@dxos/keys';\nimport { useClient } from '@dxos/react-client';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport {\n type EditorRootProps,\n type EditorToolbarState,\n createEditorController,\n useEditorContext,\n} from '@dxos/react-ui-editor';\nimport { type PreviewBlock, type PreviewOptions } from '@dxos/ui-editor';\nimport { composable, composableProps } from '@dxos/ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport {\n type DocumentType,\n type ExtensionsOptions,\n type UseEditorMenuOptionsProps,\n useEditorMenuOptions,\n useExtensions,\n} from '#hooks';\n\nimport {\n MarkdownEditorContent as NaturalMarkdownEditorContent,\n type MarkdownEditorContentProps as NaturalMarkdownEditorContentProps,\n} from './MarkdownEditorContent';\nimport {\n MarkdownEditorToolbar as NaturalMarkdownToolbar,\n type MarkdownEditorToolbarProps as NaturalMarkdownToolbarProps,\n} from './MarkdownEditorToolbar';\n\n//\n// Context\n//\n\ntype MarkdownEditorContextValue = {\n id: string;\n attendableId?: string;\n previewBlocks: PreviewBlock[];\n} & Pick<ExtensionsOptions, 'compact' | 'viewMode'> &\n Pick<NaturalMarkdownToolbarProps, 'onAction' | 'onFileUpload' | 'onViewModeChange'>;\n\nconst [MarkdownEditorContextProvider, useMarkdownEditorContext] =\n createContext<MarkdownEditorContextValue>('MarkdownEditor.Context');\n\n/**\n * Props to spread onto `Editor.Root` from `MarkdownEditorProvider`'s render callback.\n */\nexport type MarkdownEditorEditorRootProps = Omit<EditorRootProps, 'children'>;\n\n//\n// MarkdownEditorProvider\n//\n\nexport type MarkdownEditorProviderProps = {\n object?: DocumentType;\n extensions?: Extension[];\n children: (editorRootProps: MarkdownEditorEditorRootProps) => ReactNode;\n} & Pick<\n MarkdownEditorContextValue,\n 'id' | 'attendableId' | 'viewMode' | 'compact' | 'onAction' | 'onFileUpload' | 'onViewModeChange'\n> &\n Pick<UseEditorMenuOptionsProps, 'slashCommandGroups' | 'onLinkQuery'> &\n Pick<ExtensionsOptions, 'editorStateStore' | 'selectionManager' | 'settings' | 'onSelectObject'>;\n\nexport const MarkdownEditorProvider = ({\n children,\n id,\n attendableId,\n object,\n settings,\n compact,\n viewMode,\n selectionManager,\n editorStateStore,\n extensions: extensionsProp,\n slashCommandGroups,\n onLinkQuery,\n onSelectObject,\n onAction,\n onFileUpload,\n onViewModeChange,\n}: MarkdownEditorProviderProps) => {\n // Preview blocks.\n const [previewBlocks, setPreviewBlocks] = useState<PreviewBlock[]>([]);\n const previewOptions = useMemo<PreviewOptions>(\n () => ({\n db: Obj.isObject(object) ? Obj.getDatabase(object) : undefined,\n addBlockContainer: (block) => {\n setPreviewBlocks((prev) => [...prev, block]);\n },\n removeBlockContainer: ({ link }) => {\n setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));\n },\n }),\n [object],\n );\n\n // Context menu options (Editor.Root calls useEditorMenu with these props).\n const menuOptions = useEditorMenuOptions({ slashCommandGroups, onLinkQuery });\n\n // Core markdown extensions (popover/menu extension is added by Editor.Root).\n const coreExtensions = useExtensions({\n id,\n object,\n compact,\n viewMode,\n selectionManager,\n editorStateStore,\n previewOptions,\n settings,\n onSelectObject,\n });\n\n const extensions = useMemo(\n () => [coreExtensions, extensionsProp].filter(isNonNullable).flat(),\n [coreExtensions, extensionsProp],\n );\n\n const editorRootProps = useMemo<MarkdownEditorEditorRootProps>(\n () => ({\n extensions,\n viewMode,\n getMenu: menuOptions.getMenu,\n trigger: menuOptions.trigger,\n placeholder: menuOptions.placeholder,\n ...(menuOptions.filter !== undefined ? { filter: menuOptions.filter } : {}),\n ...(menuOptions.triggerKey !== undefined ? { triggerKey: menuOptions.triggerKey } : {}),\n }),\n [extensions, viewMode, menuOptions],\n );\n\n const markdownContextValue = useMemo<MarkdownEditorContextValue>(\n () => ({\n id,\n attendableId,\n compact,\n viewMode,\n previewBlocks,\n onAction,\n onFileUpload,\n onViewModeChange,\n }),\n [id, attendableId, compact, viewMode, previewBlocks, onAction, onFileUpload, onViewModeChange],\n );\n\n return (\n <MarkdownEditorContextProvider {...markdownContextValue}>{children(editorRootProps)}</MarkdownEditorContextProvider>\n );\n};\n\nMarkdownEditorProvider.displayName = 'MarkdownEditor.Provider';\n\n//\n// MarkdownEditor.Content\n//\n\nconst MARKDOWN_EDITOR_CONTENT_NAME = 'MarkdownEditor.Content';\n\ntype MarkdownEditorContentProps = Omit<NaturalMarkdownEditorContentProps, 'id' | 'extensions' | 'toolbarState'>;\n\nconst MarkdownEditorContent = composable<HTMLDivElement, MarkdownEditorContentProps>(\n ({ compact: compactProp, ...props }, _forwardedRef) => {\n const {\n id,\n attendableId,\n compact = compactProp,\n viewMode,\n onFileUpload,\n } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);\n const { extensions, setController, state } = useEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);\n\n const handleRef = useCallback(\n (view: EditorView | null) => {\n setController(createEditorController(view));\n },\n [setController],\n );\n\n return (\n <NaturalMarkdownEditorContent\n {...composableProps(props)}\n id={id}\n attendableId={attendableId}\n compact={compact}\n viewMode={viewMode}\n toolbarState={state as Atom.Writable<EditorToolbarState>}\n extensions={extensions}\n onFileUpload={onFileUpload}\n ref={handleRef}\n />\n );\n },\n);\n\nMarkdownEditorContent.displayName = MARKDOWN_EDITOR_CONTENT_NAME;\n\n//\n// MarkdownEditor.Toolbar\n//\n\nconst MARKDOWN_EDITOR_TOOLBAR_NAME = 'MarkdownEditor.Toolbar';\n\ntype MarkdownEditorToolbarProps = ThemedClassName<\n Omit<NaturalMarkdownToolbarProps, 'editorView' | 'onAction' | 'onFileUpload' | 'onViewModeChange' | 'id'>\n>;\n\nconst MarkdownEditorToolbar = (props: MarkdownEditorToolbarProps) => {\n const { id, attendableId, onAction, onFileUpload, onViewModeChange } =\n useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);\n\n const { controller } = useEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);\n\n return (\n <NaturalMarkdownToolbar\n {...props}\n id={attendableId ?? id}\n editorView={controller?.view ?? undefined}\n onAction={onAction}\n onFileUpload={onFileUpload}\n onViewModeChange={onViewModeChange}\n />\n );\n};\n\nMarkdownEditorToolbar.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;\n\n//\n// MarkdownEditor.Blocks (embedded objects)\n//\n\nconst MARKDOWN_EDITOR_BLOCKS_NAME = 'MarkdownEditor.Blocks';\n\ntype MarkdownEditorBlocksProps = {};\n\nconst MarkdownEditorBlocks = (_props: MarkdownEditorBlocksProps) => {\n const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);\n\n return (\n <>\n {previewBlocks.map(({ link, el }) => (\n <PreviewBlock key={link.dxn} link={link} el={el} />\n ))}\n </>\n );\n};\n\nMarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;\n\nconst PreviewBlock = ({ el, link }: PreviewBlock) => {\n const client = useClient();\n const dxn = DXN.parse(link.dxn);\n const subject = client.graph.makeRef(dxn).target;\n const data = useMemo(() => ({ subject }), [subject]);\n\n return createPortal(<Surface.Surface type={AppSurface.Card} data={data} limit={1} />, el);\n};\n\n//\n// MarkdownEditor\n//\n\n/** @private */\nexport const MarkdownEditor = {\n Content: MarkdownEditorContent,\n Toolbar: MarkdownEditorToolbar,\n Blocks: MarkdownEditorBlocks,\n};\n\nexport type { MarkdownEditorContentProps, MarkdownEditorToolbarProps, MarkdownEditorBlocksProps };\n\n/** @deprecated Use `MarkdownEditorProviderProps`. */\nexport type MarkdownEditorRootProps = MarkdownEditorProviderProps;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { type Atom, RegistryContext } from '@effect-atom/atom-react';\nimport React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo } from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\nimport { type ThemedClassName, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n type EditorMenuGroup,\n type EditorToolbarState,\n type UseTextEditorProps,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport {\n type EditorSelectionState,\n type EditorStateStore,\n type ThemeExtensionsOptions,\n mobileSlots,\n createBasicExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n dropFile,\n documentSlots,\n formattingListener,\n processEditorPayload,\n editorClassNames,\n} from '@dxos/ui-editor';\nimport { type EditorViewMode } from '@dxos/ui-editor/types';\nimport { mx } from '@dxos/ui-theme';\nimport { isTruthy } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { MarkdownCapabilities } from '#types';\n\nimport { type MarkdownEditorToolbarProps } from './MarkdownEditorToolbar';\n\nexport type MarkdownEditorContentProps = ThemedClassName<{\n id: string;\n attendableId?: string;\n role?: string;\n compact?: boolean;\n viewMode?: EditorViewMode;\n slashCommandGroups?: EditorMenuGroup[];\n editorStateStore?: EditorStateStore;\n toolbarState?: Atom.Writable<EditorToolbarState>;\n onLinkQuery?: (query?: string) => Promise<EditorMenuGroup[]>;\n}> &\n Pick<UseTextEditorProps, 'initialValue' | 'extensions'> &\n Pick<MarkdownEditorToolbarProps, 'onFileUpload'> &\n Pick<ThemeExtensionsOptions, 'slots'>;\n\n// TODO(burdon): Move controller to Root.\nexport const MarkdownEditorContent = forwardRef<EditorView | null, MarkdownEditorContentProps>(\n (\n {\n classNames,\n id,\n attendableId,\n role,\n compact,\n viewMode,\n initialValue,\n editorStateStore,\n toolbarState,\n extensions,\n slots,\n onFileUpload,\n },\n forwardedRef,\n ) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n const registry = useContext(RegistryContext);\n\n // Callback to update toolbar state atom.\n const updateToolbarState = useCallback(\n (formatting: EditorToolbarState) => {\n if (toolbarState) {\n registry.set(toolbarState, { ...registry.get(toolbarState), ...formatting });\n }\n },\n [registry, toolbarState],\n );\n\n // Restore last selection and scroll point.\n const { scrollTo, selection } = useMemo<EditorSelectionState>(() => editorStateStore?.getState(id) ?? {}, [id]);\n\n const {\n parentRef,\n view: editorView,\n focusAttributes,\n } = useTextEditor(\n () => ({\n ...(role !== 'section' && {\n id,\n scrollTo,\n selection,\n selectionEnd: true,\n }),\n initialValue,\n extensions: [\n createBasicExtensions({\n readOnly: viewMode === 'readonly',\n placeholder: t('editor.placeholder'),\n scrollPastEnd: !compact,\n search: true,\n }),\n createThemeExtensions({\n themeMode,\n slots: slots ?? (compact ? mobileSlots : documentSlots),\n syntaxHighlighting: true,\n }),\n createMarkdownExtensions(),\n toolbarState && formattingListener(updateToolbarState),\n role !== 'section' &&\n onFileUpload &&\n dropFile({\n // TODO(wittjosiah): Factor out to file uploader plugin.\n onDrop: async (view, { files }) => {\n const file = files[0];\n const info = file && onFileUpload ? await onFileUpload(file) : undefined;\n if (info) {\n processEditorPayload(view, { type: 'image', data: info.url });\n }\n },\n }),\n extensions,\n ].filter(isTruthy),\n }),\n [id, viewMode, themeMode, extensions, compact],\n );\n\n useImperativeHandle<EditorView | null, EditorView | null>(forwardedRef, () => editorView, [editorView]);\n\n const [editorViewRegistry] = useCapabilities(MarkdownCapabilities.EditorViews);\n useEffect(() => {\n if (editorView && editorViewRegistry) {\n editorViewRegistry.register(attendableId ?? id, editorView, id);\n return () => editorViewRegistry.unregister(attendableId ?? id);\n }\n }, [editorView, editorViewRegistry, attendableId, id]);\n\n useTest(editorView);\n\n return (\n <div\n {...focusAttributes}\n className={mx(editorClassNames(role), classNames)}\n data-testid='composer.markdownRoot'\n data-popover-collision-boundary={true}\n ref={parentRef}\n />\n );\n },\n);\n\n// Expose editor view for playwright tests.\n// TODO(wittjosiah): Find a better way to expose this or find a way to limit it to test runs.\nconst useTest = (view: EditorView | null) => {\n useEffect(() => {\n const composer = (window as any).composer;\n if (composer) {\n composer.editorView = view;\n }\n }, [view]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { useCallback, useState } from 'react';\n\nimport { type FileInfo } from '@dxos/app-toolkit';\nimport { Editor, type EditorToolbarProps } from '@dxos/react-ui-editor';\nimport { composable, composableProps } from '@dxos/ui-theme';\n\nimport { FileUpload, type FileUploadAction } from './FileUpload';\n\nexport type MarkdownEditorToolbarProps = {\n id: string;\n editorView?: EditorView;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n} & Pick<EditorToolbarProps, 'role' | 'customActions' | 'onAction' | 'onViewModeChange'>;\n\nexport const MarkdownEditorToolbar = composable<HTMLDivElement, MarkdownEditorToolbarProps>(\n ({ id, role, editorView, customActions, onAction, onFileUpload, onViewModeChange, ...props }, forwardedRef) => {\n const { className, ...rest } = composableProps(props);\n const [upload, setUpload] = useState<FileUploadAction | null>(null);\n const uploadRef = useCallback((next: FileUploadAction) => setUpload(() => next), []);\n\n if (!editorView) {\n return <div className={className} {...rest} ref={forwardedRef} />;\n }\n\n return (\n <div className='contents' ref={forwardedRef}>\n <Editor.Toolbar\n {...rest}\n classNames={className}\n attendableId={id}\n role={role}\n customActions={customActions}\n onAction={onAction}\n onImageUpload={upload ?? undefined}\n onViewModeChange={onViewModeChange}\n />\n\n {onFileUpload && <FileUpload ref={uploadRef} editorView={editorView} onFileUpload={onFileUpload} />}\n </div>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { forwardRef, useEffect, useImperativeHandle } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useDropzone } from 'react-dropzone';\n\nimport { type FileInfo } from '@dxos/app-toolkit';\nimport { addLink } from '@dxos/ui-editor';\n\nexport const IMAGE_FILES = ['.jpg', '.jpeg', '.png', '.gif'];\n\nexport type FileUploadAction = () => void;\n\nexport type FileUploadProps = {\n editorView?: EditorView;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n};\n\n// TODO(burdon): Factor out.\n// TODO(burdon): Move to root? (support drag into document via dropzone).\nexport const FileUpload = forwardRef<FileUploadAction, FileUploadProps>(\n ({ editorView, onFileUpload }, forwardedRef) => {\n // https://react-dropzone.js.org\n const { acceptedFiles, open, inputRef } = useDropzone({\n disabled: !onFileUpload,\n multiple: false,\n noDrag: true,\n accept: {\n 'image/*': IMAGE_FILES,\n },\n });\n\n useImperativeHandle(forwardedRef, () => open, []);\n\n useEffect(() => {\n if (editorView && acceptedFiles.length && onFileUpload) {\n requestAnimationFrame(async () => {\n // NOTE: Clone file since react-dropzone patches in a non-standard `path` property, which confuses IPFS.\n const f = acceptedFiles[0];\n const file = new File([f], f.name, {\n type: f.type,\n lastModified: f.lastModified,\n });\n\n // TODO(burdon): Factor out.\n const info = await onFileUpload(file);\n if (info) {\n addLink({ url: info.url, image: true })(editorView);\n }\n });\n }\n }, [editorView, acceptedFiles, onFileUpload]);\n\n if (!onFileUpload) {\n return null;\n }\n\n return <>{createPortal(<input ref={inputRef} />, document.body)} </>;\n },\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["lazy", "createContext", "React", "useCallback", "useMemo", "useState", "createPortal", "Surface", "AppSurface", "Obj", "DXN", "useClient", "createEditorController", "useEditorContext", "composable", "composableProps", "isNonNullable", "useEditorMenuOptions", "useExtensions", "RegistryContext", "React", "forwardRef", "useCallback", "useContext", "useEffect", "useImperativeHandle", "useMemo", "useCapabilities", "useThemeContext", "useTranslation", "useTextEditor", "mobileSlots", "createBasicExtensions", "createMarkdownExtensions", "createThemeExtensions", "dropFile", "documentSlots", "formattingListener", "processEditorPayload", "editorClassNames", "mx", "isTruthy", "meta", "MarkdownCapabilities", "MarkdownEditorContent", "classNames", "id", "attendableId", "role", "compact", "viewMode", "initialValue", "editorStateStore", "toolbarState", "extensions", "slots", "onFileUpload", "forwardedRef", "t", "themeMode", "registry", "updateToolbarState", "formatting", "set", "get", "scrollTo", "selection", "getState", "parentRef", "view", "editorView", "focusAttributes", "selectionEnd", "readOnly", "placeholder", "scrollPastEnd", "search", "syntaxHighlighting", "onDrop", "files", "file", "info", "undefined", "type", "data", "url", "filter", "editorViewRegistry", "EditorViews", "register", "unregister", "useTest", "div", "className", "data-testid", "data-popover-collision-boundary", "ref", "composer", "window", "React", "useCallback", "useState", "Editor", "composable", "composableProps", "React", "forwardRef", "useEffect", "useImperativeHandle", "createPortal", "useDropzone", "addLink", "IMAGE_FILES", "FileUpload", "editorView", "onFileUpload", "forwardedRef", "acceptedFiles", "open", "inputRef", "disabled", "multiple", "noDrag", "accept", "length", "requestAnimationFrame", "f", "file", "File", "name", "type", "lastModified", "info", "url", "image", "input", "ref", "document", "body", "MarkdownEditorToolbar", "composable", "id", "role", "editorView", "customActions", "onAction", "onFileUpload", "onViewModeChange", "props", "forwardedRef", "className", "rest", "composableProps", "upload", "setUpload", "useState", "uploadRef", "useCallback", "next", "React", "div", "ref", "Editor", "Toolbar", "classNames", "attendableId", "onImageUpload", "undefined", "FileUpload", "MarkdownEditorContextProvider", "useMarkdownEditorContext", "createContext", "MarkdownEditorProvider", "children", "id", "attendableId", "object", "settings", "compact", "viewMode", "selectionManager", "editorStateStore", "extensions", "extensionsProp", "slashCommandGroups", "onLinkQuery", "onSelectObject", "onAction", "onFileUpload", "onViewModeChange", "previewBlocks", "setPreviewBlocks", "useState", "previewOptions", "useMemo", "db", "Obj", "isObject", "getDatabase", "undefined", "addBlockContainer", "block", "prev", "removeBlockContainer", "link", "filter", "prevLink", "dxn", "menuOptions", "useEditorMenuOptions", "coreExtensions", "useExtensions", "isNonNullable", "flat", "editorRootProps", "getMenu", "trigger", "placeholder", "triggerKey", "markdownContextValue", "React", "displayName", "MARKDOWN_EDITOR_CONTENT_NAME", "MarkdownEditorContent", "composable", "compactProp", "props", "_forwardedRef", "setController", "state", "useEditorContext", "handleRef", "useCallback", "view", "createEditorController", "NaturalMarkdownEditorContent", "composableProps", "toolbarState", "ref", "MARKDOWN_EDITOR_TOOLBAR_NAME", "MarkdownEditorToolbar", "controller", "NaturalMarkdownToolbar", "editorView", "MARKDOWN_EDITOR_BLOCKS_NAME", "MarkdownEditorBlocks", "_props", "map", "el", "PreviewBlock", "key", "client", "useClient", "DXN", "parse", "subject", "graph", "makeRef", "target", "data", "createPortal", "Surface", "type", "AppSurface", "Card", "limit", "MarkdownEditor", "Content", "Toolbar", "Blocks", "MarkdownSettings", "lazy"]
7
+ }
@@ -0,0 +1,13 @@
1
+ import "../chunk-J5LGTIGS.mjs";
2
+
3
+ // src/containers/index.ts
4
+ import { lazy } from "react";
5
+ var MarkdownCard = lazy(() => import("../MarkdownCard-INMBLUL4.mjs"));
6
+ var EditableMarkdownCard = lazy(() => import("../EditableMarkdownCard-LXBXN3OW.mjs"));
7
+ var MarkdownArticle = lazy(() => import("../MarkdownArticle-Z4QRU3WD.mjs"));
8
+ export {
9
+ EditableMarkdownCard,
10
+ MarkdownArticle,
11
+ MarkdownCard
12
+ };
13
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/containers/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport type { MarkdownArticleProps } from './MarkdownArticle';\n\nexport const MarkdownCard: ComponentType<any> = lazy(() => import('./MarkdownCard'));\nexport const EditableMarkdownCard: ComponentType<any> = lazy(() => import('./EditableMarkdownCard'));\nexport const MarkdownArticle: ComponentType<any> = lazy(() => import('./MarkdownArticle'));\n"],
5
+ "mappings": ";;;AAIA,SAA6BA,YAAY;AAIlC,IAAMC,eAAmCD,KAAK,MAAM,OAAO,8BAAA,CAAA;AAC3D,IAAME,uBAA2CF,KAAK,MAAM,OAAO,sCAAA,CAAA;AACnE,IAAMG,kBAAsCH,KAAK,MAAM,OAAO,iCAAA,CAAA;",
6
+ "names": ["lazy", "MarkdownCard", "EditableMarkdownCard", "MarkdownArticle"]
7
+ }
@@ -1,17 +1,15 @@
1
1
  import {
2
- Create
3
- } from "./chunk-XKUKZNUS.mjs";
4
- import {
2
+ MarkdownOperation_exports,
5
3
  Markdown_exports
6
- } from "./chunk-46WIDM4R.mjs";
4
+ } from "./chunk-SOLAMEK3.mjs";
7
5
  import "./chunk-J5LGTIGS.mjs";
8
6
 
9
7
  // src/operations/create.ts
10
8
  import * as Effect from "effect/Effect";
9
+ import { Operation } from "@dxos/compute";
11
10
  import { Obj } from "@dxos/echo";
12
- import { Operation } from "@dxos/operation";
13
11
  import { CollectionModel } from "@dxos/schema";
14
- var handler = Create.pipe(Operation.withHandler(Effect.fn(function* ({ name, content }) {
12
+ var handler = MarkdownOperation_exports.Create.pipe(Operation.withHandler(Effect.fn(function* ({ name, content }) {
15
13
  const object = Markdown_exports.make({
16
14
  name,
17
15
  content
@@ -27,4 +25,4 @@ var create_default = handler;
27
25
  export {
28
26
  create_default as default
29
27
  };
30
- //# sourceMappingURL=create-HSXPXCC5.mjs.map
28
+ //# sourceMappingURL=create-3PGJ2NEK.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/operations/create.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\nimport { Obj } from '@dxos/echo';\nimport { CollectionModel } from '@dxos/schema';\n\nimport { Markdown, MarkdownOperation } from '../types';\n\nconst handler: Operation.WithHandler<typeof MarkdownOperation.Create> = MarkdownOperation.Create.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ name, content }) {\n const object = Markdown.make({ name, content });\n yield* CollectionModel.add({ object });\n\n return {\n id: Obj.getDXN(object).toString(),\n };\n }),\n ),\n);\n\nexport default handler;\n"],
5
+ "mappings": ";;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,WAAW;AACpB,SAASC,uBAAuB;AAIhC,IAAMC,UAAkEC,0BAAkBC,OAAOC,KAC/FC,UAAUC,YACDC,UAAG,WAAW,EAAEC,MAAMC,QAAO,GAAE;AACpC,QAAMC,SAASC,iBAASC,KAAK;IAAEJ;IAAMC;EAAQ,CAAA;AAC7C,SAAOI,gBAAgBC,IAAI;IAAEJ;EAAO,CAAA;AAEpC,SAAO;IACLK,IAAIC,IAAIC,OAAOP,MAAAA,EAAQQ,SAAQ;EACjC;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,iBAAejB;",
6
+ "names": ["Effect", "Operation", "Obj", "CollectionModel", "handler", "MarkdownOperation", "Create", "pipe", "Operation", "withHandler", "fn", "name", "content", "object", "Markdown", "make", "CollectionModel", "add", "id", "Obj", "getDXN", "toString"]
7
+ }