@dxos/plugin-markdown 0.8.4-main.fd6878d → 0.9.0

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 (402) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/EditableMarkdownCard-AW7MD35U.mjs +34 -0
  4. package/dist/lib/neutral/EditableMarkdownCard-AW7MD35U.mjs.map +7 -0
  5. package/dist/lib/neutral/MarkdownArticle-LWT5RFFJ.mjs +126 -0
  6. package/dist/lib/neutral/MarkdownArticle-LWT5RFFJ.mjs.map +7 -0
  7. package/dist/lib/neutral/MarkdownCard-TBLIRDBO.mjs +108 -0
  8. package/dist/lib/neutral/MarkdownCard-TBLIRDBO.mjs.map +7 -0
  9. package/dist/lib/neutral/MarkdownPlugin.mjs +62 -0
  10. package/dist/lib/neutral/MarkdownPlugin.mjs.map +7 -0
  11. package/dist/lib/neutral/MarkdownPlugin.node.mjs +25 -0
  12. package/dist/lib/neutral/MarkdownPlugin.node.mjs.map +7 -0
  13. package/dist/lib/neutral/MarkdownPlugin.workerd.mjs +23 -0
  14. package/dist/lib/neutral/MarkdownPlugin.workerd.mjs.map +7 -0
  15. package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs +32 -0
  16. package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs.map +7 -0
  17. package/dist/lib/neutral/anchor-sort-UXN4RHFX.mjs +32 -0
  18. package/dist/lib/neutral/anchor-sort-UXN4RHFX.mjs.map +7 -0
  19. package/dist/lib/neutral/app-graph-builder-BWBA23FF.mjs +67 -0
  20. package/dist/lib/neutral/app-graph-builder-BWBA23FF.mjs.map +7 -0
  21. package/dist/lib/neutral/app-graph-serializer-EN5E3BMG.mjs +56 -0
  22. package/dist/lib/neutral/app-graph-serializer-EN5E3BMG.mjs.map +7 -0
  23. package/dist/lib/neutral/blueprint-definition-DSPXK77L.mjs +15 -0
  24. package/dist/lib/neutral/blueprint-definition-DSPXK77L.mjs.map +7 -0
  25. package/dist/lib/neutral/blueprints/index.mjs +8 -0
  26. package/dist/lib/neutral/capabilities/index.mjs +29 -0
  27. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  28. package/dist/lib/neutral/capabilities/node.mjs +11 -0
  29. package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
  30. package/dist/lib/neutral/chunk-36QFEVOZ.mjs +30 -0
  31. package/dist/lib/neutral/chunk-36QFEVOZ.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-67DKWOKF.mjs +10 -0
  33. package/dist/lib/neutral/chunk-67DKWOKF.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-CIJD7P6X.mjs +8 -0
  35. package/dist/lib/neutral/chunk-CIJD7P6X.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  37. package/dist/lib/neutral/chunk-KDN4GKG2.mjs +98 -0
  38. package/dist/lib/neutral/chunk-KDN4GKG2.mjs.map +7 -0
  39. package/dist/lib/neutral/chunk-LXNSKCPD.mjs +44 -0
  40. package/dist/lib/neutral/chunk-LXNSKCPD.mjs.map +7 -0
  41. package/dist/lib/neutral/chunk-Y2LQRUU7.mjs +285 -0
  42. package/dist/lib/neutral/chunk-Y2LQRUU7.mjs.map +7 -0
  43. package/dist/lib/neutral/comment-config-EGY7RPPW.mjs +32 -0
  44. package/dist/lib/neutral/comment-config-EGY7RPPW.mjs.map +7 -0
  45. package/dist/lib/neutral/components/index.mjs +378 -0
  46. package/dist/lib/neutral/components/index.mjs.map +7 -0
  47. package/dist/lib/neutral/containers/index.mjs +13 -0
  48. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  49. package/dist/lib/neutral/create-JK35XC4R.mjs +29 -0
  50. package/dist/lib/neutral/create-JK35XC4R.mjs.map +7 -0
  51. package/dist/lib/neutral/create-markdown-7MLE625M.mjs +20 -0
  52. package/dist/lib/neutral/create-markdown-7MLE625M.mjs.map +7 -0
  53. package/dist/lib/neutral/create-object-MU2LGXG6.mjs +31 -0
  54. package/dist/lib/neutral/create-object-MU2LGXG6.mjs.map +7 -0
  55. package/dist/lib/neutral/hooks/index.mjs +317 -0
  56. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  57. package/dist/lib/neutral/index.mjs +48 -0
  58. package/dist/lib/neutral/index.mjs.map +7 -0
  59. package/dist/lib/neutral/meta.json +1 -0
  60. package/dist/lib/neutral/meta.mjs +8 -0
  61. package/dist/lib/neutral/meta.mjs.map +7 -0
  62. package/dist/lib/neutral/navigation-resolver-3KBOMN4U.mjs +14 -0
  63. package/dist/lib/neutral/navigation-resolver-3KBOMN4U.mjs.map +7 -0
  64. package/dist/lib/neutral/open-5YC77C4O.mjs +20 -0
  65. package/dist/lib/neutral/open-5YC77C4O.mjs.map +7 -0
  66. package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs +13 -0
  67. package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs.map +7 -0
  68. package/dist/lib/neutral/operations/index.mjs +8 -0
  69. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  70. package/dist/lib/neutral/plugin.mjs +16 -0
  71. package/dist/lib/neutral/plugin.mjs.map +7 -0
  72. package/dist/lib/neutral/react-surface-XYZJBKHZ.mjs +119 -0
  73. package/dist/lib/neutral/react-surface-XYZJBKHZ.mjs.map +7 -0
  74. package/dist/lib/neutral/scroll-to-anchor-GAFB7W55.mjs +38 -0
  75. package/dist/lib/neutral/scroll-to-anchor-GAFB7W55.mjs.map +7 -0
  76. package/dist/lib/neutral/set-view-mode-N7UHYMPG.mjs +24 -0
  77. package/dist/lib/neutral/set-view-mode-N7UHYMPG.mjs.map +7 -0
  78. package/dist/lib/neutral/settings-TDGDLCUR.mjs +34 -0
  79. package/dist/lib/neutral/settings-TDGDLCUR.mjs.map +7 -0
  80. package/dist/lib/neutral/state-5COCF5PN.mjs +44 -0
  81. package/dist/lib/neutral/state-5COCF5PN.mjs.map +7 -0
  82. package/dist/lib/neutral/testing.mjs +30 -0
  83. package/dist/lib/neutral/testing.mjs.map +7 -0
  84. package/dist/lib/neutral/translations.mjs +44 -0
  85. package/dist/lib/neutral/translations.mjs.map +7 -0
  86. package/dist/lib/neutral/types/index.mjs +16 -0
  87. package/dist/lib/neutral/types/index.mjs.map +7 -0
  88. package/dist/lib/neutral/update-markdown-NNINDDV5.mjs +44 -0
  89. package/dist/lib/neutral/update-markdown-NNINDDV5.mjs.map +7 -0
  90. package/dist/types/src/MarkdownPlugin.d.ts +3 -1
  91. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  92. package/dist/types/src/MarkdownPlugin.node.d.ts +4 -0
  93. package/dist/types/src/MarkdownPlugin.node.d.ts.map +1 -0
  94. package/dist/types/src/MarkdownPlugin.test.d.ts +2 -0
  95. package/dist/types/src/MarkdownPlugin.test.d.ts.map +1 -0
  96. package/dist/types/src/MarkdownPlugin.workerd.d.ts +4 -0
  97. package/dist/types/src/MarkdownPlugin.workerd.d.ts.map +1 -0
  98. package/dist/types/src/blueprints/index.d.ts +2 -0
  99. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  100. package/dist/types/src/blueprints/markdown-blueprint.d.ts +4 -0
  101. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -0
  102. package/dist/types/src/capabilities/anchor-sort.d.ts +4 -4
  103. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/app-graph-builder.d.ts +6 -0
  105. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  106. package/dist/types/src/capabilities/app-graph-serializer.d.ts +3 -2
  107. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/blueprint-definition.d.ts +6 -0
  109. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  110. package/dist/types/src/capabilities/comment-config.d.ts +6 -0
  111. package/dist/types/src/capabilities/comment-config.d.ts.map +1 -0
  112. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  113. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  114. package/dist/types/src/capabilities/index.d.ts +19 -15
  115. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/navigation-resolver.d.ts +6 -0
  117. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
  118. package/dist/types/src/capabilities/node.d.ts +10 -0
  119. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  120. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  121. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  122. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  123. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  124. package/dist/types/src/capabilities/settings.d.ts +4 -2
  125. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  126. package/dist/types/src/capabilities/state.d.ts +4 -9
  127. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  128. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +11 -0
  129. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -0
  130. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +52 -21
  131. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  132. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +8 -15
  133. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +33 -0
  135. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -0
  136. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +13 -0
  137. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -0
  138. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +4 -4
  139. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  140. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +94 -0
  141. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -0
  142. package/dist/types/src/components/MarkdownSettings/index.d.ts +1 -1
  143. package/dist/types/src/components/MarkdownSettings/index.d.ts.map +1 -1
  144. package/dist/types/src/components/index.d.ts +3 -3
  145. package/dist/types/src/components/index.d.ts.map +1 -1
  146. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts +15 -0
  147. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts.map +1 -0
  148. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.stories.d.ts +9 -0
  149. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.stories.d.ts.map +1 -0
  150. package/dist/types/src/containers/EditableMarkdownCard/index.d.ts +3 -0
  151. package/dist/types/src/containers/EditableMarkdownCard/index.d.ts.map +1 -0
  152. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts +40 -0
  153. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts.map +1 -0
  154. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts +97 -0
  155. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts.map +1 -0
  156. package/dist/types/src/containers/MarkdownArticle/index.d.ts +3 -0
  157. package/dist/types/src/containers/MarkdownArticle/index.d.ts.map +1 -0
  158. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts +8 -0
  159. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -0
  160. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +9 -0
  161. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
  162. package/dist/types/src/containers/MarkdownCard/index.d.ts +2 -0
  163. package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -0
  164. package/dist/types/src/containers/MarkdownCard/snippet.d.ts +17 -0
  165. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -0
  166. package/dist/types/src/containers/index.d.ts +6 -0
  167. package/dist/types/src/containers/index.d.ts.map +1 -0
  168. package/dist/types/src/hooks/index.d.ts +3 -1
  169. package/dist/types/src/hooks/index.d.ts.map +1 -1
  170. package/dist/types/src/hooks/useEditorMenuOptions.d.ts +9 -0
  171. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -0
  172. package/dist/types/src/hooks/useExtensions.d.ts +25 -0
  173. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -0
  174. package/dist/types/src/hooks/useLinkQuery.d.ts +4 -0
  175. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -0
  176. package/dist/types/src/index.d.ts +3 -3
  177. package/dist/types/src/index.d.ts.map +1 -1
  178. package/dist/types/src/meta.d.ts +2 -3
  179. package/dist/types/src/meta.d.ts.map +1 -1
  180. package/dist/types/src/operations/create-markdown.d.ts +5 -0
  181. package/dist/types/src/operations/create-markdown.d.ts.map +1 -0
  182. package/dist/types/src/operations/create.d.ts +5 -0
  183. package/dist/types/src/operations/create.d.ts.map +1 -0
  184. package/dist/types/src/operations/create.test.d.ts +2 -0
  185. package/dist/types/src/operations/create.test.d.ts.map +1 -0
  186. package/dist/types/src/operations/index.d.ts +3 -0
  187. package/dist/types/src/operations/index.d.ts.map +1 -0
  188. package/dist/types/src/operations/open.d.ts +5 -0
  189. package/dist/types/src/operations/open.d.ts.map +1 -0
  190. package/dist/types/src/operations/scroll-to-anchor.d.ts +5 -0
  191. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -0
  192. package/dist/types/src/operations/set-view-mode.d.ts +5 -0
  193. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -0
  194. package/dist/types/src/operations/update-markdown.d.ts +5 -0
  195. package/dist/types/src/operations/update-markdown.d.ts.map +1 -0
  196. package/dist/types/src/operations/update.test.d.ts +2 -0
  197. package/dist/types/src/operations/update.test.d.ts.map +1 -0
  198. package/dist/types/src/paths.d.ts +3 -0
  199. package/dist/types/src/paths.d.ts.map +1 -0
  200. package/dist/types/src/plugin.d.ts +4 -0
  201. package/dist/types/src/plugin.d.ts.map +1 -0
  202. package/dist/types/src/testing.d.ts +7 -0
  203. package/dist/types/src/testing.d.ts.map +1 -0
  204. package/dist/types/src/translations.d.ts +74 -32
  205. package/dist/types/src/translations.d.ts.map +1 -1
  206. package/dist/types/src/types/Markdown.d.ts +36 -33
  207. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  208. package/dist/types/src/types/MarkdownCapabilities.d.ts +32 -0
  209. package/dist/types/src/types/MarkdownCapabilities.d.ts.map +1 -0
  210. package/dist/types/src/types/MarkdownEvents.d.ts +3 -0
  211. package/dist/types/src/types/MarkdownEvents.d.ts.map +1 -0
  212. package/dist/types/src/types/MarkdownOperation.d.ts +64 -0
  213. package/dist/types/src/types/MarkdownOperation.d.ts.map +1 -0
  214. package/dist/types/src/types/Settings.d.ts +30 -0
  215. package/dist/types/src/types/Settings.d.ts.map +1 -0
  216. package/dist/types/src/types/index.d.ts +5 -2
  217. package/dist/types/src/types/index.d.ts.map +1 -1
  218. package/dist/types/src/types/types.d.ts +3 -2
  219. package/dist/types/src/types/types.d.ts.map +1 -1
  220. package/dist/types/src/util.d.ts +8 -5
  221. package/dist/types/src/util.d.ts.map +1 -1
  222. package/dist/types/src/util.test.d.ts +2 -0
  223. package/dist/types/src/util.test.d.ts.map +1 -0
  224. package/dist/types/tsconfig.tsbuildinfo +1 -1
  225. package/package.json +154 -68
  226. package/src/MarkdownPlugin.node.ts +20 -0
  227. package/src/MarkdownPlugin.test.ts +26 -0
  228. package/src/MarkdownPlugin.tsx +52 -103
  229. package/src/MarkdownPlugin.workerd.ts +19 -0
  230. package/src/blueprints/index.ts +5 -0
  231. package/src/blueprints/markdown-blueprint.ts +43 -0
  232. package/src/capabilities/anchor-sort.ts +29 -22
  233. package/src/capabilities/app-graph-builder.ts +63 -0
  234. package/src/capabilities/app-graph-serializer.ts +53 -43
  235. package/src/capabilities/blueprint-definition.ts +19 -0
  236. package/src/capabilities/comment-config.ts +36 -0
  237. package/src/capabilities/create-object.ts +33 -0
  238. package/src/capabilities/index.ts +27 -9
  239. package/src/capabilities/navigation-resolver.ts +19 -0
  240. package/src/capabilities/node.ts +13 -0
  241. package/src/capabilities/operation-handler.ts +16 -0
  242. package/src/capabilities/react-surface.tsx +116 -103
  243. package/src/capabilities/settings.ts +30 -18
  244. package/src/capabilities/state.ts +41 -25
  245. package/src/components/MarkdownEditor/FileUpload.tsx +68 -0
  246. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +64 -38
  247. package/src/components/MarkdownEditor/MarkdownEditor.tsx +251 -256
  248. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +171 -0
  249. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +50 -0
  250. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +40 -0
  251. package/src/components/MarkdownSettings/MarkdownSettings.tsx +22 -92
  252. package/src/components/MarkdownSettings/index.ts +1 -1
  253. package/src/components/index.ts +4 -5
  254. package/src/containers/EditableMarkdownCard/EditableMarkdownCard.stories.tsx +86 -0
  255. package/src/containers/EditableMarkdownCard/EditableMarkdownCard.tsx +44 -0
  256. package/src/containers/EditableMarkdownCard/index.ts +6 -0
  257. package/src/containers/MarkdownArticle/MarkdownArticle.stories.tsx +141 -0
  258. package/src/containers/MarkdownArticle/MarkdownArticle.tsx +146 -0
  259. package/src/containers/MarkdownArticle/index.ts +6 -0
  260. package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +68 -0
  261. package/src/containers/MarkdownCard/MarkdownCard.tsx +76 -0
  262. package/src/containers/MarkdownCard/index.ts +5 -0
  263. package/src/containers/MarkdownCard/snippet.ts +54 -0
  264. package/src/containers/index.ts +11 -0
  265. package/src/hooks/index.ts +3 -1
  266. package/src/hooks/useEditorMenuOptions.ts +68 -0
  267. package/src/hooks/useExtensions.tsx +268 -0
  268. package/src/hooks/useLinkQuery.ts +94 -0
  269. package/src/index.ts +3 -5
  270. package/src/meta.ts +18 -11
  271. package/src/operations/create-markdown.ts +19 -0
  272. package/src/operations/create.conversations.json +1 -0
  273. package/src/operations/create.test.ts +96 -0
  274. package/src/operations/create.ts +40 -0
  275. package/src/operations/index.ts +14 -0
  276. package/src/operations/open.ts +25 -0
  277. package/src/operations/scroll-to-anchor.ts +41 -0
  278. package/src/operations/set-view-mode.ts +23 -0
  279. package/src/operations/update-markdown.ts +51 -0
  280. package/src/operations/update.conversations.json +1 -0
  281. package/src/operations/update.test.ts +213 -0
  282. package/src/paths.ts +11 -0
  283. package/src/plugin.ts +11 -0
  284. package/src/testing.ts +40 -0
  285. package/src/translations.ts +28 -32
  286. package/src/types/Markdown.ts +28 -34
  287. package/src/types/MarkdownCapabilities.ts +51 -0
  288. package/src/types/MarkdownEvents.ts +14 -0
  289. package/src/types/MarkdownOperation.ts +133 -0
  290. package/src/types/Settings.ts +85 -0
  291. package/src/types/index.ts +6 -2
  292. package/src/types/types.ts +8 -3
  293. package/src/util.test.ts +44 -0
  294. package/src/util.tsx +84 -9
  295. package/dist/lib/browser/MarkdownCard-IMCR4A4V.mjs +0 -80
  296. package/dist/lib/browser/MarkdownCard-IMCR4A4V.mjs.map +0 -7
  297. package/dist/lib/browser/MarkdownContainer-VGJPHMVG.mjs +0 -780
  298. package/dist/lib/browser/MarkdownContainer-VGJPHMVG.mjs.map +0 -7
  299. package/dist/lib/browser/anchor-sort-AJKRIWFD.mjs +0 -32
  300. package/dist/lib/browser/anchor-sort-AJKRIWFD.mjs.map +0 -7
  301. package/dist/lib/browser/app-graph-serializer-OIS3MZX2.mjs +0 -52
  302. package/dist/lib/browser/app-graph-serializer-OIS3MZX2.mjs.map +0 -7
  303. package/dist/lib/browser/chunk-IKPZHFTW.mjs +0 -30
  304. package/dist/lib/browser/chunk-IKPZHFTW.mjs.map +0 -7
  305. package/dist/lib/browser/chunk-JHH7VL52.mjs +0 -18
  306. package/dist/lib/browser/chunk-JHH7VL52.mjs.map +0 -7
  307. package/dist/lib/browser/chunk-JMBQG2ZC.mjs +0 -50
  308. package/dist/lib/browser/chunk-JMBQG2ZC.mjs.map +0 -7
  309. package/dist/lib/browser/chunk-JTIGSUMB.mjs +0 -80
  310. package/dist/lib/browser/chunk-JTIGSUMB.mjs.map +0 -7
  311. package/dist/lib/browser/chunk-LMJPXTPL.mjs +0 -16
  312. package/dist/lib/browser/chunk-LMJPXTPL.mjs.map +0 -7
  313. package/dist/lib/browser/chunk-MVL4K3OD.mjs +0 -52
  314. package/dist/lib/browser/chunk-MVL4K3OD.mjs.map +0 -7
  315. package/dist/lib/browser/index.mjs +0 -158
  316. package/dist/lib/browser/index.mjs.map +0 -7
  317. package/dist/lib/browser/intent-resolver-BLLHRSTQ.mjs +0 -60
  318. package/dist/lib/browser/intent-resolver-BLLHRSTQ.mjs.map +0 -7
  319. package/dist/lib/browser/meta.json +0 -1
  320. package/dist/lib/browser/react-surface-NL3BZR6H.mjs +0 -208
  321. package/dist/lib/browser/react-surface-NL3BZR6H.mjs.map +0 -7
  322. package/dist/lib/browser/settings-Z7ZV7SLC.mjs +0 -28
  323. package/dist/lib/browser/settings-Z7ZV7SLC.mjs.map +0 -7
  324. package/dist/lib/browser/state-ORTZIEJU.mjs +0 -37
  325. package/dist/lib/browser/state-ORTZIEJU.mjs.map +0 -7
  326. package/dist/lib/browser/types/index.mjs +0 -10
  327. package/dist/lib/node-esm/MarkdownCard-JV2YDV3M.mjs +0 -81
  328. package/dist/lib/node-esm/MarkdownCard-JV2YDV3M.mjs.map +0 -7
  329. package/dist/lib/node-esm/MarkdownContainer-BJRNCXJZ.mjs +0 -781
  330. package/dist/lib/node-esm/MarkdownContainer-BJRNCXJZ.mjs.map +0 -7
  331. package/dist/lib/node-esm/anchor-sort-N7WEA5E3.mjs +0 -33
  332. package/dist/lib/node-esm/anchor-sort-N7WEA5E3.mjs.map +0 -7
  333. package/dist/lib/node-esm/app-graph-serializer-Q3B44VFB.mjs +0 -53
  334. package/dist/lib/node-esm/app-graph-serializer-Q3B44VFB.mjs.map +0 -7
  335. package/dist/lib/node-esm/chunk-AYWAYBAY.mjs +0 -17
  336. package/dist/lib/node-esm/chunk-AYWAYBAY.mjs.map +0 -7
  337. package/dist/lib/node-esm/chunk-H4I2FGDZ.mjs +0 -31
  338. package/dist/lib/node-esm/chunk-H4I2FGDZ.mjs.map +0 -7
  339. package/dist/lib/node-esm/chunk-H6TITL7A.mjs +0 -20
  340. package/dist/lib/node-esm/chunk-H6TITL7A.mjs.map +0 -7
  341. package/dist/lib/node-esm/chunk-JDMMLOB6.mjs +0 -51
  342. package/dist/lib/node-esm/chunk-JDMMLOB6.mjs.map +0 -7
  343. package/dist/lib/node-esm/chunk-KIRZFVX5.mjs +0 -81
  344. package/dist/lib/node-esm/chunk-KIRZFVX5.mjs.map +0 -7
  345. package/dist/lib/node-esm/chunk-Z4XQ6C3D.mjs +0 -53
  346. package/dist/lib/node-esm/chunk-Z4XQ6C3D.mjs.map +0 -7
  347. package/dist/lib/node-esm/index.mjs +0 -159
  348. package/dist/lib/node-esm/index.mjs.map +0 -7
  349. package/dist/lib/node-esm/intent-resolver-NHPUPSWK.mjs +0 -61
  350. package/dist/lib/node-esm/intent-resolver-NHPUPSWK.mjs.map +0 -7
  351. package/dist/lib/node-esm/meta.json +0 -1
  352. package/dist/lib/node-esm/react-surface-XJ6ODCBE.mjs +0 -209
  353. package/dist/lib/node-esm/react-surface-XJ6ODCBE.mjs.map +0 -7
  354. package/dist/lib/node-esm/settings-UCXEWBCT.mjs +0 -29
  355. package/dist/lib/node-esm/settings-UCXEWBCT.mjs.map +0 -7
  356. package/dist/lib/node-esm/state-47WSZG54.mjs +0 -38
  357. package/dist/lib/node-esm/state-47WSZG54.mjs.map +0 -7
  358. package/dist/lib/node-esm/types/index.mjs +0 -11
  359. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -11
  360. package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
  361. package/dist/types/src/capabilities/capabilities.d.ts +0 -12
  362. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  363. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  364. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  365. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +0 -7
  366. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +0 -1
  367. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +0 -42
  368. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +0 -1
  369. package/dist/types/src/components/MarkdownCard/index.d.ts +0 -4
  370. package/dist/types/src/components/MarkdownCard/index.d.ts.map +0 -1
  371. package/dist/types/src/components/MarkdownContainer.d.ts +0 -18
  372. package/dist/types/src/components/MarkdownContainer.d.ts.map +0 -1
  373. package/dist/types/src/components/MarkdownContainer.stories.d.ts +0 -9
  374. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +0 -1
  375. package/dist/types/src/components/Suggestions.stories.d.ts +0 -12
  376. package/dist/types/src/components/Suggestions.stories.d.ts.map +0 -1
  377. package/dist/types/src/components/Toolbar.stories.d.ts +0 -11
  378. package/dist/types/src/components/Toolbar.stories.d.ts.map +0 -1
  379. package/dist/types/src/events.d.ts +0 -4
  380. package/dist/types/src/events.d.ts.map +0 -1
  381. package/dist/types/src/extensions.d.ts +0 -24
  382. package/dist/types/src/extensions.d.ts.map +0 -1
  383. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +0 -6
  384. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +0 -1
  385. package/dist/types/src/types/MarkdownAction.d.ts +0 -42
  386. package/dist/types/src/types/MarkdownAction.d.ts.map +0 -1
  387. package/src/capabilities/artifact-definition.ts +0 -119
  388. package/src/capabilities/capabilities.ts +0 -21
  389. package/src/capabilities/intent-resolver.ts +0 -58
  390. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +0 -79
  391. package/src/components/MarkdownCard/MarkdownCard.tsx +0 -75
  392. package/src/components/MarkdownCard/index.ts +0 -9
  393. package/src/components/MarkdownContainer.stories.tsx +0 -100
  394. package/src/components/MarkdownContainer.tsx +0 -255
  395. package/src/components/Suggestions.stories.tsx +0 -221
  396. package/src/components/Toolbar.stories.tsx +0 -112
  397. package/src/events.ts +0 -11
  398. package/src/extensions.tsx +0 -328
  399. package/src/hooks/useSelectCurrentThread.tsx +0 -56
  400. package/src/types/MarkdownAction.ts +0 -31
  401. /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
  402. /package/dist/lib/{node-esm/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
@@ -0,0 +1,378 @@
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 { URI } from "@dxos/keys";
14
+ import { useClient } from "@dxos/react-client";
15
+ import { composable as composable2, composableProps as composableProps2 } from "@dxos/react-ui";
16
+ import { createEditorController, useEditorContext } from "@dxos/react-ui-editor";
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, scrollbarAutohide } 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
+ scrollbarAutohide(),
71
+ toolbarState && formattingListener(updateToolbarState),
72
+ role !== "section" && onFileUpload && dropFile({
73
+ // TODO(wittjosiah): Factor out to file uploader plugin.
74
+ onDrop: async (view, { files }) => {
75
+ const file = files[0];
76
+ const info = file && onFileUpload ? await onFileUpload(file) : void 0;
77
+ if (info) {
78
+ processEditorPayload(view, {
79
+ type: "image",
80
+ data: info.url
81
+ });
82
+ }
83
+ }
84
+ }),
85
+ extensions
86
+ ].filter(isTruthy)
87
+ }), [
88
+ id,
89
+ viewMode,
90
+ themeMode,
91
+ extensions,
92
+ compact
93
+ ]);
94
+ useImperativeHandle(forwardedRef, () => editorView, [
95
+ editorView
96
+ ]);
97
+ const [editorViewRegistry] = useCapabilities(MarkdownCapabilities.EditorViews);
98
+ useEffect(() => {
99
+ if (editorView && editorViewRegistry) {
100
+ editorViewRegistry.register(attendableId ?? id, editorView, id);
101
+ return () => editorViewRegistry.unregister(attendableId ?? id);
102
+ }
103
+ }, [
104
+ editorView,
105
+ editorViewRegistry,
106
+ attendableId,
107
+ id
108
+ ]);
109
+ useTest(editorView);
110
+ return /* @__PURE__ */ React.createElement("div", {
111
+ ...focusAttributes,
112
+ className: mx(editorClassNames(role), classNames),
113
+ "data-testid": "composer.markdownRoot",
114
+ "data-popover-collision-boundary": true,
115
+ ref: parentRef
116
+ });
117
+ });
118
+ var useTest = (view) => {
119
+ useEffect(() => {
120
+ const composer = window.composer;
121
+ if (composer) {
122
+ composer.editorView = view;
123
+ }
124
+ }, [
125
+ view
126
+ ]);
127
+ };
128
+
129
+ // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
130
+ import React3, { useCallback as useCallback2, useState } from "react";
131
+ import { composable, composableProps } from "@dxos/react-ui";
132
+ import { Editor } from "@dxos/react-ui-editor";
133
+
134
+ // src/components/MarkdownEditor/FileUpload.tsx
135
+ import React2, { forwardRef as forwardRef2, useEffect as useEffect2, useImperativeHandle as useImperativeHandle2 } from "react";
136
+ import { createPortal } from "react-dom";
137
+ import { useDropzone } from "react-dropzone";
138
+ import { addLink } from "@dxos/ui-editor";
139
+ var IMAGE_FILES = [
140
+ ".jpg",
141
+ ".jpeg",
142
+ ".png",
143
+ ".gif"
144
+ ];
145
+ var FileUpload = /* @__PURE__ */ forwardRef2(({ getView, onFileUpload }, forwardedRef) => {
146
+ const { acceptedFiles, open, inputRef } = useDropzone({
147
+ disabled: !onFileUpload,
148
+ multiple: false,
149
+ noDrag: true,
150
+ accept: {
151
+ "image/*": IMAGE_FILES
152
+ }
153
+ });
154
+ useImperativeHandle2(forwardedRef, () => open, []);
155
+ useEffect2(() => {
156
+ if (acceptedFiles.length && onFileUpload) {
157
+ requestAnimationFrame(async () => {
158
+ const editorView = getView?.();
159
+ if (!editorView) {
160
+ return;
161
+ }
162
+ const f = acceptedFiles[0];
163
+ const file = new File([
164
+ f
165
+ ], f.name, {
166
+ type: f.type,
167
+ lastModified: f.lastModified
168
+ });
169
+ const info = await onFileUpload(file);
170
+ if (info) {
171
+ addLink({
172
+ url: info.url,
173
+ image: true
174
+ })(editorView);
175
+ }
176
+ });
177
+ }
178
+ }, [
179
+ getView,
180
+ acceptedFiles,
181
+ onFileUpload
182
+ ]);
183
+ if (!onFileUpload) {
184
+ return null;
185
+ }
186
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ createPortal(/* @__PURE__ */ React2.createElement("input", {
187
+ ref: inputRef
188
+ }), document.body), " ");
189
+ });
190
+
191
+ // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
192
+ var MarkdownEditorToolbar = composable(({ id, role, getView, customActions, onAction, onFileUpload, onViewModeChange, ...props }, forwardedRef) => {
193
+ const { className, ...rest } = composableProps(props);
194
+ const [upload, setUpload] = useState(null);
195
+ const uploadRef = useCallback2((next) => setUpload(() => next), []);
196
+ if (!getView?.()) {
197
+ return /* @__PURE__ */ React3.createElement("div", {
198
+ className,
199
+ ...rest,
200
+ ref: forwardedRef
201
+ });
202
+ }
203
+ return /* @__PURE__ */ React3.createElement("div", {
204
+ className: "contents",
205
+ ref: forwardedRef
206
+ }, /* @__PURE__ */ React3.createElement(Editor.Toolbar, {
207
+ ...rest,
208
+ classNames: className,
209
+ attendableId: id,
210
+ role,
211
+ customActions,
212
+ onAction,
213
+ onImageUpload: upload ?? void 0,
214
+ onViewModeChange
215
+ }), onFileUpload && /* @__PURE__ */ React3.createElement(FileUpload, {
216
+ ref: uploadRef,
217
+ getView,
218
+ onFileUpload
219
+ }));
220
+ });
221
+
222
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
223
+ var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("MarkdownEditor.Context");
224
+ var MarkdownEditorProvider = ({ children, id, attendableId, object, settings, compact, viewMode, selectionManager, editorStateStore, extensions: extensionsProp, slashCommandGroups, onLinkQuery, onSelectObject, onAction, onFileUpload, onViewModeChange }) => {
225
+ const [previewBlocks, setPreviewBlocks] = useState2([]);
226
+ const previewOptions = useMemo2(() => ({
227
+ db: Obj.isObject(object) ? Obj.getDatabase(object) : void 0,
228
+ addBlockContainer: (block) => {
229
+ setPreviewBlocks((prev) => [
230
+ ...prev,
231
+ block
232
+ ]);
233
+ },
234
+ removeBlockContainer: ({ link }) => {
235
+ setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));
236
+ }
237
+ }), [
238
+ object
239
+ ]);
240
+ const menuOptions = useEditorMenuOptions({
241
+ slashCommandGroups,
242
+ onLinkQuery
243
+ });
244
+ const coreExtensions = useExtensions({
245
+ id,
246
+ object,
247
+ compact,
248
+ viewMode,
249
+ selectionManager,
250
+ editorStateStore,
251
+ previewOptions,
252
+ settings,
253
+ onSelectObject
254
+ });
255
+ const extensions = useMemo2(() => [
256
+ coreExtensions,
257
+ extensionsProp
258
+ ].filter(isNonNullable).flat(), [
259
+ coreExtensions,
260
+ extensionsProp
261
+ ]);
262
+ const editorRootProps = useMemo2(() => ({
263
+ extensions,
264
+ viewMode,
265
+ getMenu: menuOptions.getMenu,
266
+ trigger: menuOptions.trigger,
267
+ placeholder: menuOptions.placeholder,
268
+ ...menuOptions.filter !== void 0 ? {
269
+ filter: menuOptions.filter
270
+ } : {},
271
+ ...menuOptions.triggerKey !== void 0 ? {
272
+ triggerKey: menuOptions.triggerKey
273
+ } : {}
274
+ }), [
275
+ extensions,
276
+ viewMode,
277
+ menuOptions
278
+ ]);
279
+ const markdownContextValue = useMemo2(() => ({
280
+ id,
281
+ attendableId,
282
+ compact,
283
+ viewMode,
284
+ previewBlocks,
285
+ onAction,
286
+ onFileUpload,
287
+ onViewModeChange
288
+ }), [
289
+ id,
290
+ attendableId,
291
+ compact,
292
+ viewMode,
293
+ previewBlocks,
294
+ onAction,
295
+ onFileUpload,
296
+ onViewModeChange
297
+ ]);
298
+ return /* @__PURE__ */ React4.createElement(MarkdownEditorContextProvider, markdownContextValue, children(editorRootProps));
299
+ };
300
+ MarkdownEditorProvider.displayName = "MarkdownEditor.Provider";
301
+ var MARKDOWN_EDITOR_CONTENT_NAME = "MarkdownEditor.Content";
302
+ var MarkdownEditorContent2 = composable2(({ compact: compactProp, ...props }, _forwardedRef) => {
303
+ const { id, attendableId, compact = compactProp, viewMode, onFileUpload } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
304
+ const { extensions, setController, state } = useEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
305
+ const handleRef = useCallback3((view) => {
306
+ setController(createEditorController(view));
307
+ }, [
308
+ setController
309
+ ]);
310
+ return /* @__PURE__ */ React4.createElement(MarkdownEditorContent, {
311
+ ...composableProps2(props),
312
+ id,
313
+ attendableId,
314
+ compact,
315
+ viewMode,
316
+ toolbarState: state,
317
+ extensions,
318
+ onFileUpload,
319
+ ref: handleRef
320
+ });
321
+ });
322
+ MarkdownEditorContent2.displayName = MARKDOWN_EDITOR_CONTENT_NAME;
323
+ var MARKDOWN_EDITOR_TOOLBAR_NAME = "MarkdownEditor.Toolbar";
324
+ var MarkdownEditorToolbar2 = (props) => {
325
+ const { id, attendableId, onAction, onFileUpload, onViewModeChange } = useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
326
+ const { controller } = useEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
327
+ const getView = useCallback3(() => controller?.view ?? null, [
328
+ controller
329
+ ]);
330
+ return /* @__PURE__ */ React4.createElement(MarkdownEditorToolbar, {
331
+ ...props,
332
+ id: attendableId ?? id,
333
+ getView,
334
+ onAction,
335
+ onFileUpload,
336
+ onViewModeChange
337
+ });
338
+ };
339
+ MarkdownEditorToolbar2.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;
340
+ var MARKDOWN_EDITOR_BLOCKS_NAME = "MarkdownEditor.Blocks";
341
+ var MarkdownEditorBlocks = (_props) => {
342
+ const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);
343
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, previewBlocks.map(({ link, el }) => /* @__PURE__ */ React4.createElement(PreviewBlock, {
344
+ key: link.dxn,
345
+ link,
346
+ el
347
+ })));
348
+ };
349
+ MarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;
350
+ var PreviewBlock = ({ el, link }) => {
351
+ const client = useClient();
352
+ const dxn = URI.make(link.dxn);
353
+ const subject = client.graph.makeRef(dxn).target;
354
+ const data = useMemo2(() => ({
355
+ subject
356
+ }), [
357
+ subject
358
+ ]);
359
+ return /* @__PURE__ */ createPortal2(/* @__PURE__ */ React4.createElement(Surface.Surface, {
360
+ type: AppSurface.Card,
361
+ data,
362
+ limit: 1
363
+ }), el);
364
+ };
365
+ var MarkdownEditor = {
366
+ Content: MarkdownEditorContent2,
367
+ Toolbar: MarkdownEditorToolbar2,
368
+ Blocks: MarkdownEditorBlocks
369
+ };
370
+
371
+ // src/components/index.ts
372
+ var MarkdownSettings = lazy(() => import("../MarkdownSettings-YCTZJL5V.mjs"));
373
+ export {
374
+ MarkdownEditor,
375
+ MarkdownEditorProvider,
376
+ MarkdownSettings
377
+ };
378
+ //# 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 { URI } from '@dxos/keys';\nimport { useClient } from '@dxos/react-client';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { composable, composableProps } 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 { 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, 'getView' | '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 // Stable getter identity (changes only when the controller does) so the FileUpload effect, whose\n // deps include `getView`, does not re-run every render and re-upload the same file.\n const getView = useCallback(() => controller?.view ?? null, [controller]);\n\n return (\n <NaturalMarkdownToolbar\n {...props}\n id={attendableId ?? id}\n getView={getView}\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 = URI.make(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 scrollbarAutohide,\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 scrollbarAutohide(),\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 { composable, composableProps } from '@dxos/react-ui';\nimport { Editor, type EditorToolbarProps } from '@dxos/react-ui-editor';\n\nimport { FileUpload, type FileUploadAction } from './FileUpload';\n\nexport type MarkdownEditorToolbarProps = {\n id: string;\n // Provided as a getter (not a value prop) so the live `EditorView` is never carried in a React prop\n // that React 19.2's dev render-logger would walk into a cross-origin frame. See\n // `react-ui-editor/.../controller.ts` for the full rationale.\n getView?: () => EditorView | null;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n} & Pick<EditorToolbarProps, 'role' | 'customActions' | 'onAction' | 'onViewModeChange'>;\n\nexport const MarkdownEditorToolbar = composable<HTMLDivElement, MarkdownEditorToolbarProps>(\n ({ id, role, getView, 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 (!getView?.()) {\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} getView={getView} 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 // Provided as a getter (not a value prop) so the live `EditorView` is never carried in a React prop\n // that React 19.2's dev render-logger would walk into a cross-origin frame. See\n // `react-ui-editor/.../controller.ts` for the full rationale.\n getView?: () => EditorView | null;\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>(({ getView, 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 (acceptedFiles.length && onFileUpload) {\n requestAnimationFrame(async () => {\n const editorView = getView?.();\n if (!editorView) {\n return;\n }\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 }, [getView, acceptedFiles, onFileUpload]);\n\n if (!onFileUpload) {\n return null;\n }\n\n return <>{createPortal(<input ref={inputRef} />, document.body)} </>;\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["lazy", "createContext", "React", "useCallback", "useMemo", "useState", "createPortal", "Surface", "AppSurface", "Obj", "URI", "useClient", "composable", "composableProps", "createEditorController", "useEditorContext", "isNonNullable", "useEditorMenuOptions", "useExtensions", "RegistryContext", "React", "forwardRef", "useCallback", "useContext", "useEffect", "useImperativeHandle", "useMemo", "useCapabilities", "useThemeContext", "useTranslation", "useTextEditor", "mobileSlots", "createBasicExtensions", "createMarkdownExtensions", "createThemeExtensions", "dropFile", "documentSlots", "formattingListener", "processEditorPayload", "editorClassNames", "scrollbarAutohide", "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", "composable", "composableProps", "Editor", "React", "forwardRef", "useEffect", "useImperativeHandle", "createPortal", "useDropzone", "addLink", "IMAGE_FILES", "FileUpload", "getView", "onFileUpload", "forwardedRef", "acceptedFiles", "open", "inputRef", "disabled", "multiple", "noDrag", "accept", "length", "requestAnimationFrame", "editorView", "f", "file", "File", "name", "type", "lastModified", "info", "url", "image", "input", "ref", "document", "body", "MarkdownEditorToolbar", "composable", "id", "role", "getView", "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", "getView", "NaturalMarkdownToolbar", "MARKDOWN_EDITOR_BLOCKS_NAME", "MarkdownEditorBlocks", "_props", "map", "el", "PreviewBlock", "key", "client", "useClient", "URI", "make", "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-TBLIRDBO.mjs"));
6
+ var EditableMarkdownCard = lazy(() => import("../EditableMarkdownCard-AW7MD35U.mjs"));
7
+ var MarkdownArticle = lazy(() => import("../MarkdownArticle-LWT5RFFJ.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
+ }
@@ -0,0 +1,29 @@
1
+ import {
2
+ MarkdownOperation_exports,
3
+ Markdown_exports
4
+ } from "./chunk-Y2LQRUU7.mjs";
5
+ import "./chunk-J5LGTIGS.mjs";
6
+
7
+ // src/operations/create.ts
8
+ import * as Effect from "effect/Effect";
9
+ import { CollectionModel } from "@dxos/app-toolkit";
10
+ import { Operation } from "@dxos/compute";
11
+ import { Database, Obj } from "@dxos/echo";
12
+ var handler = MarkdownOperation_exports.Create.pipe(Operation.withHandler(Effect.fn(function* ({ name, content }) {
13
+ const object = yield* Database.add(Markdown_exports.make({
14
+ name,
15
+ content
16
+ }));
17
+ yield* CollectionModel.add({
18
+ object
19
+ }).pipe(Effect.catchTag("EntityNotFoundError", () => Effect.void));
20
+ yield* Database.flush();
21
+ return {
22
+ id: Obj.getURI(object)
23
+ };
24
+ })));
25
+ var create_default = handler;
26
+ export {
27
+ create_default as default
28
+ };
29
+ //# sourceMappingURL=create-JK35XC4R.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 { CollectionModel } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\nimport { Database, Obj } from '@dxos/echo';\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 // Add the object to the database directly so it is persisted with a space-qualified URI and is\n // resolvable by id. `CollectionModel.add` only pushes a `Ref` into the space root collection;\n // when that collection does not yet exist (e.g. a freshly-created space in a headless/agent\n // flow) it builds a detached collection that never triggers the transitive ref-save, leaving\n // the object unattached — so a returned `echo:/<id>` never resolves.\n const object = yield* Database.add(Markdown.make({ name, content }));\n\n // Best-effort: add to the space root collection for navigation. Concurrent sub-agents both\n // materializing the root collection can throw EntityNotFoundError while loading a\n // not-yet-flushed collection ref; the document itself is already persisted above, so swallow\n // ONLY that transient case and let any other (non-race) failure surface.\n yield* CollectionModel.add({ object }).pipe(Effect.catchTag('EntityNotFoundError', () => Effect.void));\n\n // Persist before returning the id so other tools/processes (e.g. an agent's add-artifact, run\n // as a separate invocation) can resolve the freshly-created document.\n yield* Database.flush();\n\n return {\n id: Obj.getURI(object),\n };\n }),\n ),\n);\n\nexport default handler;\n"],
5
+ "mappings": ";;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,uBAAuB;AAChC,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,WAAW;AAI9B,IAAMC,UAAkEC,0BAAkBC,OAAOC,KAC/FC,UAAUC,YACDC,UAAG,WAAW,EAAEC,MAAMC,QAAO,GAAE;AAMpC,QAAMC,SAAS,OAAOC,SAASC,IAAIC,iBAASC,KAAK;IAAEN;IAAMC;EAAQ,CAAA,CAAA;AAMjE,SAAOM,gBAAgBH,IAAI;IAAEF;EAAO,CAAA,EAAGN,KAAYY,gBAAS,uBAAuB,MAAaC,WAAI,CAAA;AAIpG,SAAON,SAASO,MAAK;AAErB,SAAO;IACLC,IAAIC,IAAIC,OAAOX,MAAAA;EACjB;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,iBAAeT;",
6
+ "names": ["Effect", "CollectionModel", "Operation", "Database", "Obj", "handler", "MarkdownOperation", "Create", "pipe", "Operation", "withHandler", "fn", "name", "content", "object", "Database", "add", "Markdown", "make", "CollectionModel", "catchTag", "void", "flush", "id", "Obj", "getURI"]
7
+ }
@@ -0,0 +1,20 @@
1
+ import {
2
+ MarkdownOperation_exports,
3
+ Markdown_exports
4
+ } from "./chunk-Y2LQRUU7.mjs";
5
+ import "./chunk-J5LGTIGS.mjs";
6
+
7
+ // src/operations/create-markdown.ts
8
+ import * as Effect from "effect/Effect";
9
+ import { Operation } from "@dxos/compute";
10
+ var handler = MarkdownOperation_exports.CreateMarkdown.pipe(Operation.withHandler(({ name, content }) => Effect.succeed({
11
+ object: Markdown_exports.make({
12
+ name,
13
+ content
14
+ })
15
+ })));
16
+ var create_markdown_default = handler;
17
+ export {
18
+ create_markdown_default as default
19
+ };
20
+ //# sourceMappingURL=create-markdown-7MLE625M.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/operations/create-markdown.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\n\nimport { Markdown, MarkdownOperation } from '../types';\n\nconst handler: Operation.WithHandler<typeof MarkdownOperation.CreateMarkdown> = MarkdownOperation.CreateMarkdown.pipe(\n Operation.withHandler(({ name, content }) =>\n Effect.succeed({\n object: Markdown.make({ name, content }),\n }),\n ),\n);\n\nexport default handler;\n"],
5
+ "mappings": ";;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAI1B,IAAMC,UAA0EC,0BAAkBC,eAAeC,KAC/GC,UAAUC,YAAY,CAAC,EAAEC,MAAMC,QAAO,MAC7BC,eAAQ;EACbC,QAAQC,iBAASC,KAAK;IAAEL;IAAMC;EAAQ,CAAA;AACxC,CAAA,CAAA,CAAA;AAIJ,IAAA,0BAAeP;",
6
+ "names": ["Effect", "Operation", "handler", "MarkdownOperation", "CreateMarkdown", "pipe", "Operation", "withHandler", "name", "content", "succeed", "object", "Markdown", "make"]
7
+ }
@@ -0,0 +1,31 @@
1
+ import {
2
+ getDocumentsPath
3
+ } from "./chunk-67DKWOKF.mjs";
4
+ import "./chunk-J5LGTIGS.mjs";
5
+
6
+ // src/capabilities/create-object.ts
7
+ import * as Effect from "effect/Effect";
8
+ import { Capability } from "@dxos/app-framework";
9
+ import { Operation } from "@dxos/compute";
10
+ import { Type } from "@dxos/echo";
11
+ import { SpaceOperation } from "@dxos/plugin-space";
12
+ import { SpaceCapabilities } from "@dxos/plugin-space";
13
+ import { Markdown } from "#types";
14
+ var create_object_default = Capability.makeModule(Effect.fnUntraced(function* () {
15
+ return Capability.contributes(SpaceCapabilities.CreateObjectEntry, {
16
+ id: Type.getTypename(Markdown.Document),
17
+ createObject: (props, options) => Effect.gen(function* () {
18
+ const object = Markdown.make(props);
19
+ return yield* Operation.invoke(SpaceOperation.AddObject, {
20
+ object,
21
+ target: options.target,
22
+ hidden: true,
23
+ targetNodeId: options.targetNodeId ?? getDocumentsPath(options.db.spaceId)
24
+ });
25
+ })
26
+ });
27
+ }));
28
+ export {
29
+ create_object_default as default
30
+ };
31
+ //# sourceMappingURL=create-object-MU2LGXG6.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/create-object.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/compute';\nimport { Type } from '@dxos/echo';\nimport { SpaceOperation } from '@dxos/plugin-space';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\n\nimport { Markdown } from '#types';\n\nimport { getDocumentsPath } from '../paths';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Type.getTypename(Markdown.Document),\n createObject: (props, options) =>\n Effect.gen(function* () {\n const object = Markdown.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId ?? getDocumentsPath(options.db.spaceId),\n });\n }),\n });\n }),\n);\n"],
5
+ "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiB;AAC1B,SAASC,YAAY;AACrB,SAASC,sBAAsB;AAC/B,SAASC,yBAAyB;AAElC,SAASC,gBAAgB;AAIzB,IAAA,wBAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,SAAOF,WAAWG,YAAYC,kBAAkBC,mBAAmB;IACjEC,IAAIC,KAAKC,YAAYC,SAASC,QAAQ;IACtCC,cAAc,CAACC,OAAOC,YACbC,WAAI,aAAA;AACT,YAAMC,SAASN,SAASO,KAAKJ,KAAAA;AAC7B,aAAO,OAAOK,UAAUC,OAAOC,eAAeC,WAAW;QACvDL;QACAM,QAAQR,QAAQQ;QAChBC,QAAQ;QACRC,cAAcV,QAAQU,gBAAgBC,iBAAiBX,QAAQY,GAAGC,OAAO;MAC3E,CAAA;IACF,CAAA;EACJ,CAAA;AACF,CAAA,CAAA;",
6
+ "names": ["Effect", "Capability", "Operation", "Type", "SpaceOperation", "SpaceCapabilities", "Markdown", "Capability", "makeModule", "fnUntraced", "contributes", "SpaceCapabilities", "CreateObjectEntry", "id", "Type", "getTypename", "Markdown", "Document", "createObject", "props", "options", "gen", "object", "make", "Operation", "invoke", "SpaceOperation", "AddObject", "target", "hidden", "targetNodeId", "getDocumentsPath", "db", "spaceId"]
7
+ }