@dxos/plugin-markdown 0.8.4-main.e8ec1fe → 0.8.4-main.effb148878

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 (417) 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-Z4QRU3WD.mjs +126 -0
  6. package/dist/lib/neutral/MarkdownArticle-Z4QRU3WD.mjs.map +7 -0
  7. package/dist/lib/neutral/MarkdownCard-36P4AHYL.mjs +107 -0
  8. package/dist/lib/neutral/MarkdownCard-36P4AHYL.mjs.map +7 -0
  9. package/dist/lib/neutral/MarkdownPlugin.mjs +58 -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-37GOHBLW.mjs +32 -0
  18. package/dist/lib/neutral/anchor-sort-37GOHBLW.mjs.map +7 -0
  19. package/dist/lib/neutral/app-graph-serializer-VL5KPM7V.mjs +55 -0
  20. package/dist/lib/neutral/app-graph-serializer-VL5KPM7V.mjs.map +7 -0
  21. package/dist/lib/neutral/blueprint-definition-33OK2KUL.mjs +15 -0
  22. package/dist/lib/neutral/blueprint-definition-33OK2KUL.mjs.map +7 -0
  23. package/dist/lib/neutral/blueprints/index.mjs +8 -0
  24. package/dist/lib/neutral/capabilities/index.mjs +25 -0
  25. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  26. package/dist/lib/neutral/capabilities/node.mjs +11 -0
  27. package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
  28. package/dist/lib/neutral/chunk-5JY7PO7Z.mjs +285 -0
  29. package/dist/lib/neutral/chunk-5JY7PO7Z.mjs.map +7 -0
  30. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  31. package/dist/lib/neutral/chunk-KDN4GKG2.mjs +98 -0
  32. package/dist/lib/neutral/chunk-KDN4GKG2.mjs.map +7 -0
  33. package/dist/lib/neutral/chunk-LXNSKCPD.mjs +44 -0
  34. package/dist/lib/neutral/chunk-LXNSKCPD.mjs.map +7 -0
  35. package/dist/lib/neutral/chunk-MGVKW5GN.mjs +8 -0
  36. package/dist/lib/neutral/chunk-MGVKW5GN.mjs.map +7 -0
  37. package/dist/lib/neutral/chunk-N76TRQSY.mjs +28 -0
  38. package/dist/lib/neutral/chunk-N76TRQSY.mjs.map +7 -0
  39. package/dist/lib/neutral/comment-config-ZEA66BUR.mjs +31 -0
  40. package/dist/lib/neutral/comment-config-ZEA66BUR.mjs.map +7 -0
  41. package/dist/lib/neutral/components/index.mjs +370 -0
  42. package/dist/lib/neutral/components/index.mjs.map +7 -0
  43. package/dist/lib/neutral/containers/index.mjs +13 -0
  44. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  45. package/dist/lib/neutral/create-P255GUFG.mjs +28 -0
  46. package/dist/lib/neutral/create-P255GUFG.mjs.map +7 -0
  47. package/dist/lib/neutral/create-markdown-N2DOEZXT.mjs +20 -0
  48. package/dist/lib/neutral/create-markdown-N2DOEZXT.mjs.map +7 -0
  49. package/dist/lib/neutral/create-object-VU3KX663.mjs +28 -0
  50. package/dist/lib/neutral/create-object-VU3KX663.mjs.map +7 -0
  51. package/dist/lib/neutral/hooks/index.mjs +327 -0
  52. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  53. package/dist/lib/neutral/index.mjs +42 -0
  54. package/dist/lib/neutral/meta.json +1 -0
  55. package/dist/lib/neutral/meta.mjs +8 -0
  56. package/dist/lib/neutral/open-4U46EH7F.mjs +20 -0
  57. package/dist/lib/neutral/open-4U46EH7F.mjs.map +7 -0
  58. package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs +13 -0
  59. package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs.map +7 -0
  60. package/dist/lib/neutral/operations/index.mjs +8 -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-P2WX2KXA.mjs +119 -0
  64. package/dist/lib/neutral/react-surface-P2WX2KXA.mjs.map +7 -0
  65. package/dist/lib/neutral/scroll-to-anchor-AFFA7YBC.mjs +47 -0
  66. package/dist/lib/neutral/scroll-to-anchor-AFFA7YBC.mjs.map +7 -0
  67. package/dist/lib/neutral/set-view-mode-UERQK6D7.mjs +24 -0
  68. package/dist/lib/neutral/set-view-mode-UERQK6D7.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 +19 -0
  74. package/dist/lib/neutral/testing.mjs.map +7 -0
  75. package/dist/lib/neutral/translations.mjs +44 -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/update-markdown-Q4MT3TW3.mjs +44 -0
  79. package/dist/lib/neutral/update-markdown-Q4MT3TW3.mjs.map +7 -0
  80. package/dist/types/src/MarkdownPlugin.d.ts +3 -1
  81. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  82. package/dist/types/src/MarkdownPlugin.node.d.ts +4 -0
  83. package/dist/types/src/MarkdownPlugin.node.d.ts.map +1 -0
  84. package/dist/types/src/MarkdownPlugin.test.d.ts +2 -0
  85. package/dist/types/src/MarkdownPlugin.test.d.ts.map +1 -0
  86. package/dist/types/src/MarkdownPlugin.workerd.d.ts +4 -0
  87. package/dist/types/src/MarkdownPlugin.workerd.d.ts.map +1 -0
  88. package/dist/types/src/blueprints/index.d.ts +2 -0
  89. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  90. package/dist/types/src/blueprints/markdown-blueprint.d.ts +4 -0
  91. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/anchor-sort.d.ts +4 -2
  93. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/app-graph-serializer.d.ts +3 -2
  95. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/artifact-definition.d.ts +3 -1
  97. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -6
  99. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/comment-config.d.ts +12 -0
  101. package/dist/types/src/capabilities/comment-config.d.ts.map +1 -0
  102. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  103. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  104. package/dist/types/src/capabilities/index.d.ts +22 -14
  105. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/node.d.ts +10 -0
  107. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  108. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  109. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  110. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  111. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/settings.d.ts +4 -2
  113. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/state.d.ts +4 -9
  115. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  116. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +1 -1
  117. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
  118. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +34 -22
  119. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  120. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +3 -3
  121. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  122. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +17 -10
  123. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  124. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +6 -5
  125. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  126. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +4 -4
  127. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  128. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +94 -0
  129. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -0
  130. package/dist/types/src/components/MarkdownSettings/index.d.ts +1 -1
  131. package/dist/types/src/components/MarkdownSettings/index.d.ts.map +1 -1
  132. package/dist/types/src/components/index.d.ts +3 -5
  133. package/dist/types/src/components/index.d.ts.map +1 -1
  134. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts +15 -0
  135. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts.map +1 -0
  136. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.stories.d.ts +9 -0
  137. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.stories.d.ts.map +1 -0
  138. package/dist/types/src/containers/EditableMarkdownCard/index.d.ts +3 -0
  139. package/dist/types/src/containers/EditableMarkdownCard/index.d.ts.map +1 -0
  140. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts +40 -0
  141. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts.map +1 -0
  142. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts +97 -0
  143. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts.map +1 -0
  144. package/dist/types/src/containers/MarkdownArticle/index.d.ts +3 -0
  145. package/dist/types/src/containers/MarkdownArticle/index.d.ts.map +1 -0
  146. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts +8 -0
  147. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -0
  148. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +9 -0
  149. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
  150. package/dist/types/src/containers/MarkdownCard/index.d.ts +2 -0
  151. package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -0
  152. package/dist/types/src/containers/MarkdownCard/snippet.d.ts +17 -0
  153. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -0
  154. package/dist/types/src/containers/index.d.ts +6 -0
  155. package/dist/types/src/containers/index.d.ts.map +1 -0
  156. package/dist/types/src/hooks/index.d.ts +0 -1
  157. package/dist/types/src/hooks/index.d.ts.map +1 -1
  158. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -1
  159. package/dist/types/src/hooks/useExtensions.d.ts +10 -6
  160. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  161. package/dist/types/src/hooks/useLinkQuery.d.ts +2 -2
  162. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  163. package/dist/types/src/index.d.ts +2 -3
  164. package/dist/types/src/index.d.ts.map +1 -1
  165. package/dist/types/src/meta.d.ts +2 -2
  166. package/dist/types/src/meta.d.ts.map +1 -1
  167. package/dist/types/src/operations/create-markdown.d.ts +5 -0
  168. package/dist/types/src/operations/create-markdown.d.ts.map +1 -0
  169. package/dist/types/src/operations/create.d.ts +5 -0
  170. package/dist/types/src/operations/create.d.ts.map +1 -0
  171. package/dist/types/src/operations/create.test.d.ts.map +1 -0
  172. package/dist/types/src/operations/index.d.ts +3 -0
  173. package/dist/types/src/operations/index.d.ts.map +1 -0
  174. package/dist/types/src/operations/open.d.ts +5 -0
  175. package/dist/types/src/operations/open.d.ts.map +1 -0
  176. package/dist/types/src/operations/scroll-to-anchor.d.ts +5 -0
  177. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -0
  178. package/dist/types/src/operations/set-view-mode.d.ts +5 -0
  179. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -0
  180. package/dist/types/src/operations/update-markdown.d.ts +5 -0
  181. package/dist/types/src/operations/update-markdown.d.ts.map +1 -0
  182. package/dist/types/src/operations/update.test.d.ts.map +1 -0
  183. package/dist/types/src/plugin.d.ts +4 -0
  184. package/dist/types/src/plugin.d.ts.map +1 -0
  185. package/dist/types/src/testing.d.ts +3 -2
  186. package/dist/types/src/testing.d.ts.map +1 -1
  187. package/dist/types/src/translations.d.ts +74 -36
  188. package/dist/types/src/translations.d.ts.map +1 -1
  189. package/dist/types/src/types/Markdown.d.ts +34 -33
  190. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  191. package/dist/types/src/types/MarkdownCapabilities.d.ts +32 -0
  192. package/dist/types/src/types/MarkdownCapabilities.d.ts.map +1 -0
  193. package/dist/types/src/types/MarkdownEvents.d.ts +3 -0
  194. package/dist/types/src/types/MarkdownEvents.d.ts.map +1 -0
  195. package/dist/types/src/types/MarkdownOperation.d.ts +64 -0
  196. package/dist/types/src/types/MarkdownOperation.d.ts.map +1 -0
  197. package/dist/types/src/types/Settings.d.ts +30 -0
  198. package/dist/types/src/types/Settings.d.ts.map +1 -0
  199. package/dist/types/src/types/index.d.ts +5 -2
  200. package/dist/types/src/types/index.d.ts.map +1 -1
  201. package/dist/types/src/types/types.d.ts +3 -2
  202. package/dist/types/src/types/types.d.ts.map +1 -1
  203. package/dist/types/src/util.d.ts +6 -3
  204. package/dist/types/src/util.d.ts.map +1 -1
  205. package/dist/types/src/util.test.d.ts +2 -0
  206. package/dist/types/src/util.test.d.ts.map +1 -0
  207. package/dist/types/tsconfig.tsbuildinfo +1 -1
  208. package/package.json +153 -89
  209. package/src/MarkdownPlugin.node.ts +20 -0
  210. package/src/MarkdownPlugin.test.ts +26 -0
  211. package/src/MarkdownPlugin.tsx +33 -101
  212. package/src/MarkdownPlugin.workerd.ts +19 -0
  213. package/src/blueprints/index.ts +5 -0
  214. package/src/blueprints/markdown-blueprint.ts +43 -0
  215. package/src/capabilities/anchor-sort.ts +28 -21
  216. package/src/capabilities/app-graph-serializer.ts +52 -43
  217. package/src/capabilities/artifact-definition.ts +83 -86
  218. package/src/capabilities/blueprint-definition.ts +11 -35
  219. package/src/capabilities/comment-config.ts +33 -0
  220. package/src/capabilities/create-object.ts +31 -0
  221. package/src/capabilities/index.ts +15 -11
  222. package/src/capabilities/node.ts +13 -0
  223. package/src/capabilities/operation-handler.ts +16 -0
  224. package/src/capabilities/react-surface.tsx +102 -67
  225. package/src/capabilities/settings.ts +30 -18
  226. package/src/capabilities/state.ts +41 -25
  227. package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
  228. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +48 -44
  229. package/src/components/MarkdownEditor/MarkdownEditor.tsx +149 -106
  230. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +66 -33
  231. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +37 -53
  232. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +40 -0
  233. package/src/components/MarkdownSettings/MarkdownSettings.tsx +23 -96
  234. package/src/components/MarkdownSettings/index.ts +1 -1
  235. package/src/components/index.ts +4 -7
  236. package/src/containers/EditableMarkdownCard/EditableMarkdownCard.stories.tsx +86 -0
  237. package/src/containers/EditableMarkdownCard/EditableMarkdownCard.tsx +44 -0
  238. package/src/containers/EditableMarkdownCard/index.ts +6 -0
  239. package/src/containers/MarkdownArticle/MarkdownArticle.stories.tsx +135 -0
  240. package/src/containers/MarkdownArticle/MarkdownArticle.tsx +146 -0
  241. package/src/containers/MarkdownArticle/index.ts +6 -0
  242. package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +68 -0
  243. package/src/containers/MarkdownCard/MarkdownCard.tsx +75 -0
  244. package/src/containers/MarkdownCard/index.ts +5 -0
  245. package/src/containers/MarkdownCard/snippet.ts +54 -0
  246. package/src/containers/index.ts +11 -0
  247. package/src/hooks/index.ts +0 -1
  248. package/src/hooks/useEditorMenuOptions.ts +11 -14
  249. package/src/hooks/useExtensions.tsx +103 -114
  250. package/src/hooks/useLinkQuery.ts +57 -41
  251. package/src/index.ts +2 -5
  252. package/src/meta.ts +15 -6
  253. package/src/operations/create-markdown.ts +19 -0
  254. package/src/operations/create.conversations.json +1 -0
  255. package/src/operations/create.test.ts +96 -0
  256. package/src/operations/create.ts +26 -0
  257. package/src/operations/index.ts +14 -0
  258. package/src/operations/open.ts +25 -0
  259. package/src/operations/scroll-to-anchor.ts +38 -0
  260. package/src/operations/set-view-mode.ts +23 -0
  261. package/src/operations/update-markdown.ts +51 -0
  262. package/src/operations/update.conversations.json +1 -0
  263. package/src/operations/update.test.ts +213 -0
  264. package/src/plugin.ts +11 -0
  265. package/src/testing.ts +13 -8
  266. package/src/translations.ts +28 -36
  267. package/src/types/Markdown.ts +27 -33
  268. package/src/types/MarkdownCapabilities.ts +51 -0
  269. package/src/types/MarkdownEvents.ts +14 -0
  270. package/src/types/MarkdownOperation.ts +125 -0
  271. package/src/types/Settings.ts +85 -0
  272. package/src/types/index.ts +6 -3
  273. package/src/types/types.ts +7 -3
  274. package/src/util.test.ts +44 -0
  275. package/src/util.tsx +78 -8
  276. package/dist/lib/browser/MarkdownCard-JYMDPKV5.mjs +0 -12
  277. package/dist/lib/browser/MarkdownContainer-Y75XSVBX.mjs +0 -15
  278. package/dist/lib/browser/anchor-sort-3HGPGCOO.mjs +0 -31
  279. package/dist/lib/browser/anchor-sort-3HGPGCOO.mjs.map +0 -7
  280. package/dist/lib/browser/app-graph-serializer-POZN234F.mjs +0 -51
  281. package/dist/lib/browser/app-graph-serializer-POZN234F.mjs.map +0 -7
  282. package/dist/lib/browser/blueprint-definition-GIPKFDY5.mjs +0 -13
  283. package/dist/lib/browser/chunk-22XSSNBS.mjs +0 -56
  284. package/dist/lib/browser/chunk-22XSSNBS.mjs.map +0 -7
  285. package/dist/lib/browser/chunk-2MLGSYRN.mjs +0 -20
  286. package/dist/lib/browser/chunk-2MLGSYRN.mjs.map +0 -7
  287. package/dist/lib/browser/chunk-BQTYJOFB.mjs +0 -28
  288. package/dist/lib/browser/chunk-BQTYJOFB.mjs.map +0 -7
  289. package/dist/lib/browser/chunk-GH6GQSBL.mjs +0 -51
  290. package/dist/lib/browser/chunk-GH6GQSBL.mjs.map +0 -7
  291. package/dist/lib/browser/chunk-IBCHVMZW.mjs +0 -16
  292. package/dist/lib/browser/chunk-IBCHVMZW.mjs.map +0 -7
  293. package/dist/lib/browser/chunk-K3LXOU3E.mjs +0 -827
  294. package/dist/lib/browser/chunk-K3LXOU3E.mjs.map +0 -7
  295. package/dist/lib/browser/chunk-PBJLFIOX.mjs +0 -96
  296. package/dist/lib/browser/chunk-PBJLFIOX.mjs.map +0 -7
  297. package/dist/lib/browser/chunk-QYSEJ5GP.mjs +0 -79
  298. package/dist/lib/browser/chunk-QYSEJ5GP.mjs.map +0 -7
  299. package/dist/lib/browser/chunk-Y53FQREH.mjs +0 -150
  300. package/dist/lib/browser/chunk-Y53FQREH.mjs.map +0 -7
  301. package/dist/lib/browser/index.mjs +0 -174
  302. package/dist/lib/browser/index.mjs.map +0 -7
  303. package/dist/lib/browser/intent-resolver-Z5L7TXUK.mjs +0 -62
  304. package/dist/lib/browser/intent-resolver-Z5L7TXUK.mjs.map +0 -7
  305. package/dist/lib/browser/meta.json +0 -1
  306. package/dist/lib/browser/react-surface-GO5ZOKNN.mjs +0 -211
  307. package/dist/lib/browser/react-surface-GO5ZOKNN.mjs.map +0 -7
  308. package/dist/lib/browser/settings-TZUDB5EW.mjs +0 -28
  309. package/dist/lib/browser/settings-TZUDB5EW.mjs.map +0 -7
  310. package/dist/lib/browser/state-BTUKVZHY.mjs +0 -37
  311. package/dist/lib/browser/state-BTUKVZHY.mjs.map +0 -7
  312. package/dist/lib/browser/toolkit.mjs +0 -13
  313. package/dist/lib/browser/types/index.mjs +0 -10
  314. package/dist/lib/node-esm/MarkdownCard-ZXPJLUYO.mjs +0 -13
  315. package/dist/lib/node-esm/MarkdownCard-ZXPJLUYO.mjs.map +0 -7
  316. package/dist/lib/node-esm/MarkdownContainer-YRDSRDCS.mjs +0 -16
  317. package/dist/lib/node-esm/MarkdownContainer-YRDSRDCS.mjs.map +0 -7
  318. package/dist/lib/node-esm/anchor-sort-PCDXEBJ2.mjs +0 -32
  319. package/dist/lib/node-esm/anchor-sort-PCDXEBJ2.mjs.map +0 -7
  320. package/dist/lib/node-esm/app-graph-serializer-NF65JYAS.mjs +0 -52
  321. package/dist/lib/node-esm/app-graph-serializer-NF65JYAS.mjs.map +0 -7
  322. package/dist/lib/node-esm/blueprint-definition-ENKJZYQS.mjs +0 -14
  323. package/dist/lib/node-esm/blueprint-definition-ENKJZYQS.mjs.map +0 -7
  324. package/dist/lib/node-esm/chunk-AMHACOXW.mjs +0 -57
  325. package/dist/lib/node-esm/chunk-AMHACOXW.mjs.map +0 -7
  326. package/dist/lib/node-esm/chunk-CT7CFX5G.mjs +0 -828
  327. package/dist/lib/node-esm/chunk-CT7CFX5G.mjs.map +0 -7
  328. package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs +0 -17
  329. package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs.map +0 -7
  330. package/dist/lib/node-esm/chunk-HAIEWPU7.mjs +0 -151
  331. package/dist/lib/node-esm/chunk-HAIEWPU7.mjs.map +0 -7
  332. package/dist/lib/node-esm/chunk-KCHUTL3Q.mjs +0 -22
  333. package/dist/lib/node-esm/chunk-KCHUTL3Q.mjs.map +0 -7
  334. package/dist/lib/node-esm/chunk-NGYJNQ6A.mjs +0 -80
  335. package/dist/lib/node-esm/chunk-NGYJNQ6A.mjs.map +0 -7
  336. package/dist/lib/node-esm/chunk-PIOOG7A5.mjs +0 -97
  337. package/dist/lib/node-esm/chunk-PIOOG7A5.mjs.map +0 -7
  338. package/dist/lib/node-esm/chunk-PLZ7EVCT.mjs +0 -52
  339. package/dist/lib/node-esm/chunk-PLZ7EVCT.mjs.map +0 -7
  340. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs +0 -29
  341. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs.map +0 -7
  342. package/dist/lib/node-esm/index.mjs +0 -175
  343. package/dist/lib/node-esm/index.mjs.map +0 -7
  344. package/dist/lib/node-esm/intent-resolver-6B3PFQ5F.mjs +0 -63
  345. package/dist/lib/node-esm/intent-resolver-6B3PFQ5F.mjs.map +0 -7
  346. package/dist/lib/node-esm/meta.json +0 -1
  347. package/dist/lib/node-esm/react-surface-I46BPCWT.mjs +0 -212
  348. package/dist/lib/node-esm/react-surface-I46BPCWT.mjs.map +0 -7
  349. package/dist/lib/node-esm/settings-CJ3T5EX4.mjs +0 -29
  350. package/dist/lib/node-esm/settings-CJ3T5EX4.mjs.map +0 -7
  351. package/dist/lib/node-esm/state-K6EH7SRZ.mjs +0 -38
  352. package/dist/lib/node-esm/state-K6EH7SRZ.mjs.map +0 -7
  353. package/dist/lib/node-esm/toolkit.mjs +0 -14
  354. package/dist/lib/node-esm/toolkit.mjs.map +0 -7
  355. package/dist/lib/node-esm/types/index.mjs +0 -11
  356. package/dist/types/src/capabilities/capabilities.d.ts +0 -12
  357. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  358. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  359. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  360. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +0 -7
  361. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +0 -1
  362. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +0 -9
  363. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +0 -1
  364. package/dist/types/src/components/MarkdownCard/index.d.ts +0 -4
  365. package/dist/types/src/components/MarkdownCard/index.d.ts.map +0 -1
  366. package/dist/types/src/components/MarkdownContainer.d.ts +0 -14
  367. package/dist/types/src/components/MarkdownContainer.d.ts.map +0 -1
  368. package/dist/types/src/components/MarkdownContainer.stories.d.ts +0 -58
  369. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +0 -1
  370. package/dist/types/src/components/Suggestions.stories.d.ts +0 -11
  371. package/dist/types/src/components/Suggestions.stories.d.ts.map +0 -1
  372. package/dist/types/src/events.d.ts +0 -4
  373. package/dist/types/src/events.d.ts.map +0 -1
  374. package/dist/types/src/functions/create.d.ts +0 -8
  375. package/dist/types/src/functions/create.d.ts.map +0 -1
  376. package/dist/types/src/functions/create.test.d.ts.map +0 -1
  377. package/dist/types/src/functions/index.d.ts +0 -18
  378. package/dist/types/src/functions/index.d.ts.map +0 -1
  379. package/dist/types/src/functions/open.d.ts +0 -7
  380. package/dist/types/src/functions/open.d.ts.map +0 -1
  381. package/dist/types/src/functions/update.d.ts +0 -6
  382. package/dist/types/src/functions/update.d.ts.map +0 -1
  383. package/dist/types/src/functions/update.test.d.ts.map +0 -1
  384. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +0 -6
  385. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +0 -1
  386. package/dist/types/src/toolkit.d.ts +0 -3
  387. package/dist/types/src/toolkit.d.ts.map +0 -1
  388. package/dist/types/src/types/MarkdownAction.d.ts +0 -34
  389. package/dist/types/src/types/MarkdownAction.d.ts.map +0 -1
  390. package/src/capabilities/capabilities.ts +0 -22
  391. package/src/capabilities/intent-resolver.ts +0 -58
  392. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +0 -76
  393. package/src/components/MarkdownCard/MarkdownCard.tsx +0 -89
  394. package/src/components/MarkdownCard/index.ts +0 -9
  395. package/src/components/MarkdownContainer.stories.tsx +0 -136
  396. package/src/components/MarkdownContainer.tsx +0 -113
  397. package/src/components/Suggestions.stories.tsx +0 -225
  398. package/src/events.ts +0 -11
  399. package/src/functions/create.conversations.json +0 -1
  400. package/src/functions/create.test.ts +0 -128
  401. package/src/functions/create.ts +0 -34
  402. package/src/functions/index.ts +0 -13
  403. package/src/functions/open.ts +0 -32
  404. package/src/functions/update.conversations.json +0 -1
  405. package/src/functions/update.test.ts +0 -151
  406. package/src/functions/update.ts +0 -37
  407. package/src/hooks/useSelectCurrentThread.tsx +0 -66
  408. package/src/toolkit.ts +0 -6
  409. package/src/types/MarkdownAction.ts +0 -29
  410. /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
  411. /package/dist/lib/{browser/MarkdownCard-JYMDPKV5.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  412. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
  413. /package/dist/lib/{browser/MarkdownContainer-Y75XSVBX.mjs.map → neutral/meta.mjs.map} +0 -0
  414. /package/dist/lib/{browser/blueprint-definition-GIPKFDY5.mjs.map → neutral/operations/index.mjs.map} +0 -0
  415. /package/dist/lib/{browser/toolkit.mjs.map → neutral/types/index.mjs.map} +0 -0
  416. /package/dist/types/src/{functions → operations}/create.test.d.ts +0 -0
  417. /package/dist/types/src/{functions → operations}/update.test.d.ts +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/util.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { debounce } from '@dxos/async';\nimport { Obj } from '@dxos/echo';\nimport { type TypedObjectSerializer } from '@dxos/plugin-space';\n\nimport { Markdown } from '#types';\n\n/**\n * Checks if an object conforms to the interface needed to render an editor.\n * @deprecated Use Schema.instanceOf(Markdown.Document, data)\n */\n// TODO(burdon): Normalize types (from FilesPlugin).\nexport const isEditorModel = (data: any): data is { id: string; text: string } =>\n data &&\n typeof data === 'object' &&\n 'id' in data &&\n typeof data.id === 'string' &&\n 'text' in data &&\n typeof data.text === 'string';\n\nexport type MarkdownProperties = Record<string, any>;\n\nexport const isMarkdownProperties = (data: unknown): data is MarkdownProperties =>\n (Obj.isObject(data) as boolean)\n ? true\n : data && typeof data === 'object'\n ? 'title' in data && typeof data.title === 'string'\n : false;\n\nconst nonTitleChars = /[^\\w ]/g;\n\n// Lines matching these patterns are skipped.\nconst skipPatterns = [\n /^!\\[/, // Image.\n /^---\\s*$/, // Horizontal rule.\n /^```/, // Code block fence.\n /^\\s*$/, // Empty or whitespace-only.\n];\n\n// Patterns to extract title text (first capture group is used).\nconst titlePatterns = [\n /^#{1,6}\\s+(.+)/, // Heading.\n];\n\n/**\n * Extracts a fallback name by scanning lines for the first heading or text fragment.\n */\nexport const getFallbackName = (content = ''): string => {\n const len = content.length;\n\n let i = 0;\n while (i < len) {\n // Find end of line.\n let lineEnd = i;\n while (lineEnd < len && content[lineEnd] !== '\\n') {\n lineEnd++;\n }\n\n const line = content.slice(i, lineEnd).trim();\n i = lineEnd + 1;\n\n // Skip lines matching skip patterns.\n if (skipPatterns.some((pattern) => pattern.test(line))) {\n continue;\n }\n\n // Check for title patterns.\n for (const pattern of titlePatterns) {\n const match = pattern.exec(line);\n if (match) {\n const text = match[1].replaceAll(nonTitleChars, '').trim();\n if (text.length > 0) {\n return text;\n }\n }\n }\n\n // Use line as plain text fallback.\n const maxLen = 32;\n const text = line.replaceAll(nonTitleChars, '').trim();\n if (text.length > 0) {\n if (text.length > maxLen) {\n const words = text.split(/\\s+/);\n let result = '';\n for (const word of words) {\n const next = result.length === 0 ? word : result + ' ' + word;\n if (next.length > maxLen) {\n break;\n }\n result = next;\n }\n\n return result + '…';\n }\n\n return text;\n }\n }\n\n return '';\n};\n\n// TODO(burdon): Option to strip Markdown.\nexport const getContentSnippet = (content = '', maxLines = 3) => {\n const abstract = content\n .split('\\n')\n .filter((line) => !line.startsWith('!'))\n .filter((line) => line.trim() !== '');\n\n return abstract.slice(0, maxLines).join('\\n') ?? '';\n};\n\nexport const setFallbackName = debounce((doc: Markdown.Document, content = '') => {\n const name = getFallbackName(content);\n if (doc.fallbackName !== name) {\n Obj.update(doc, (doc) => {\n doc.fallbackName = name;\n });\n }\n}, 200);\n\nexport const serializer: TypedObjectSerializer<Markdown.Document> = {\n serialize: async ({ object }): Promise<string> => {\n const { content } = await object.content.load();\n return JSON.stringify({ name: object.name, fallbackName: object.fallbackName, content });\n },\n\n deserialize: async ({ content: serialized }) => {\n const { name, fallbackName, content } = JSON.parse(serialized);\n return Markdown.make({ name, fallbackName, content });\n },\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["debounce", "Obj", "Markdown", "isEditorModel", "data", "id", "text", "isMarkdownProperties", "isObject", "title", "nonTitleChars", "skipPatterns", "titlePatterns", "getFallbackName", "content", "len", "length", "i", "lineEnd", "line", "slice", "trim", "some", "pattern", "test", "match", "exec", "replaceAll", "maxLen", "words", "split", "result", "word", "next", "getContentSnippet", "maxLines", "abstract", "filter", "startsWith", "join", "setFallbackName", "doc", "name", "fallbackName", "update", "serializer", "serialize", "object", "load", "JSON", "stringify", "deserialize", "serialized", "parse", "make"]
7
+ }
@@ -0,0 +1,44 @@
1
+ // src/blueprints/markdown-blueprint.ts
2
+ import { Blueprint, Template } from "@dxos/compute";
3
+ import { trim } from "@dxos/util";
4
+ import { Markdown, MarkdownOperation } from "#types";
5
+ var make = () => Blueprint.make({
6
+ key: Markdown.BLUEPRINT_KEY,
7
+ name: "Markdown",
8
+ description: "Work with markdown documents. Preferred over raw database operations.",
9
+ tools: Blueprint.toolDefinitions({
10
+ operations: [
11
+ MarkdownOperation.Create,
12
+ MarkdownOperation.Open,
13
+ MarkdownOperation.Update
14
+ ]
15
+ }),
16
+ instructions: Template.make({
17
+ // TODO(wittjosiah): Move example to function input schema annotation.
18
+ source: trim`
19
+ {{! Markdown }}
20
+
21
+ You can create, read and update markdown documents.
22
+ When asked to edit or update documents return updates as a set of compact diff string pairs.
23
+ For each diff, respond with the smallest possible matching span.
24
+
25
+ Example:
26
+ ${"```"}diff
27
+ - "There is a tyop in this sentence."
28
+ + "There is a typo in this sentence."
29
+ - "This id good."
30
+ + "This sentence is really good."
31
+ ${"```"}
32
+ `
33
+ })
34
+ });
35
+ var blueprint = {
36
+ key: Markdown.BLUEPRINT_KEY,
37
+ make
38
+ };
39
+ var markdown_blueprint_default = blueprint;
40
+
41
+ export {
42
+ markdown_blueprint_default
43
+ };
44
+ //# sourceMappingURL=chunk-LXNSKCPD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/blueprints/markdown-blueprint.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Blueprint, Template } from '@dxos/compute';\nimport { trim } from '@dxos/util';\n\nimport { Markdown, MarkdownOperation } from '#types';\n\nconst make = () =>\n Blueprint.make({\n key: Markdown.BLUEPRINT_KEY,\n name: 'Markdown',\n description: 'Work with markdown documents. Preferred over raw database operations.',\n tools: Blueprint.toolDefinitions({\n operations: [MarkdownOperation.Create, MarkdownOperation.Open, MarkdownOperation.Update],\n }),\n instructions: Template.make({\n // TODO(wittjosiah): Move example to function input schema annotation.\n source: trim`\n {{! Markdown }}\n\n You can create, read and update markdown documents.\n When asked to edit or update documents return updates as a set of compact diff string pairs.\n For each diff, respond with the smallest possible matching span.\n\n Example:\n ${'```'}diff\n - \"There is a tyop in this sentence.\"\n + \"There is a typo in this sentence.\"\n - \"This id good.\"\n + \"This sentence is really good.\"\n ${'```'}\n `,\n }),\n });\n\nconst blueprint: Blueprint.Definition = {\n key: Markdown.BLUEPRINT_KEY,\n make,\n};\n\nexport default blueprint;\n"],
5
+ "mappings": ";AAIA,SAASA,WAAWC,gBAAgB;AACpC,SAASC,YAAY;AAErB,SAASC,UAAUC,yBAAyB;AAE5C,IAAMC,OAAO,MACXL,UAAUK,KAAK;EACbC,KAAKH,SAASI;EACdC,MAAM;EACNC,aAAa;EACbC,OAAOV,UAAUW,gBAAgB;IAC/BC,YAAY;MAACR,kBAAkBS;MAAQT,kBAAkBU;MAAMV,kBAAkBW;;EACnF,CAAA;EACAC,cAAcf,SAASI,KAAK;;IAE1BY,QAAQf;;;;;;;;UAQJ,KAAA;;;;;UAKA,KAAA;;EAEN,CAAA;AACF,CAAA;AAEF,IAAMgB,YAAkC;EACtCZ,KAAKH,SAASI;EACdF;AACF;AAEA,IAAA,6BAAea;",
6
+ "names": ["Blueprint", "Template", "trim", "Markdown", "MarkdownOperation", "make", "key", "BLUEPRINT_KEY", "name", "description", "tools", "toolDefinitions", "operations", "Create", "Open", "Update", "instructions", "source", "blueprint"]
7
+ }
@@ -0,0 +1,8 @@
1
+ // src/operations/index.ts
2
+ import { OperationHandlerSet } from "@dxos/compute";
3
+ var MarkdownOperationHandlerSet = OperationHandlerSet.lazy(() => import("./create-P255GUFG.mjs"), () => import("./create-markdown-N2DOEZXT.mjs"), () => import("./open-4U46EH7F.mjs"), () => import("./scroll-to-anchor-AFFA7YBC.mjs"), () => import("./set-view-mode-UERQK6D7.mjs"), () => import("./update-markdown-Q4MT3TW3.mjs"));
4
+
5
+ export {
6
+ MarkdownOperationHandlerSet
7
+ };
8
+ //# sourceMappingURL=chunk-MGVKW5GN.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/operations/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport const MarkdownOperationHandlerSet = OperationHandlerSet.lazy(\n () => import('./create'),\n () => import('./create-markdown'),\n () => import('./open'),\n () => import('./scroll-to-anchor'),\n () => import('./set-view-mode'),\n () => import('./update-markdown'),\n);\n"],
5
+ "mappings": ";AAIA,SAASA,2BAA2B;AAE7B,IAAMC,8BAA8BD,oBAAoBE,KAC7D,MAAM,OAAO,uBAAA,GACb,MAAM,OAAO,gCAAA,GACb,MAAM,OAAO,qBAAA,GACb,MAAM,OAAO,iCAAA,GACb,MAAM,OAAO,8BAAA,GACb,MAAM,OAAO,gCAAA,CAAA;",
6
+ "names": ["OperationHandlerSet", "MarkdownOperationHandlerSet", "lazy"]
7
+ }
@@ -0,0 +1,28 @@
1
+ // src/meta.ts
2
+ import { trim } from "@dxos/util";
3
+ var meta = {
4
+ id: "org.dxos.plugin.markdown",
5
+ name: "Markdown",
6
+ author: "DXOS",
7
+ description: trim`
8
+ A full-featured markdown editor for authoring documents in your space. Edits flow through a collaborative CodeMirror surface backed by ECHO Text, so every keystroke replicates to other peers in real time without merge conflicts or lost work.
9
+
10
+ Documents can be opened in source, preview, or read-only mode and rendered as a full-surface article or as embeddable cards. An optional formatting toolbar exposes headings, lists, links, and other common markdown actions, and dispositional toolbar actions contributed by other plugins are surfaced inline alongside it.
11
+
12
+ The editor integrates with the rest of the workspace through @ references that link to any ECHO object, image and file uploads stored in the active space, and anchored comment threads on text ranges. Comments can optionally be routed to an AI agent on every message or only on @mention.
13
+
14
+ A built-in blueprint exposes create, open, and update operations as tools for AI agents. Updates are applied as compact find-and-replace diffs against the document, making it safe for agents to edit large documents incrementally while you continue collaborating.
15
+ `,
16
+ icon: "ph--text-aa--regular",
17
+ iconHue: "indigo",
18
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown",
19
+ screenshots: [
20
+ "https://customer-5rxcjpyab08avpmn.cloudflarestream.com/cdf2656365bb1fd327c1fc2105d75e5a/iframe?poster=https%3A%2F%2Fcustomer-5rxcjpyab08avpmn.cloudflarestream.com%2Fcdf2656365bb1fd327c1fc2105d75e5a%2Fthumbnails%2Fthumbnail.jpg%3Ftime%3D%26height%3D600",
21
+ "https://dxos.network/plugin-details-markdown-dark.png"
22
+ ]
23
+ };
24
+
25
+ export {
26
+ meta
27
+ };
28
+ //# sourceMappingURL=chunk-N76TRQSY.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 author: 'DXOS',\n description: trim`\n A full-featured markdown editor for authoring documents in your space. Edits flow through a collaborative CodeMirror surface backed by ECHO Text, so every keystroke replicates to other peers in real time without merge conflicts or lost work.\n\n Documents can be opened in source, preview, or read-only mode and rendered as a full-surface article or as embeddable cards. An optional formatting toolbar exposes headings, lists, links, and other common markdown actions, and dispositional toolbar actions contributed by other plugins are surfaced inline alongside it.\n\n The editor integrates with the rest of the workspace through @ references that link to any ECHO object, image and file uploads stored in the active space, and anchored comment threads on text ranges. Comments can optionally be routed to an AI agent on every message or only on @mention.\n\n A built-in blueprint exposes create, open, and update operations as tools for AI agents. Updates are applied as compact find-and-replace diffs against the document, making it safe for agents to edit large documents incrementally while you continue collaborating.\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,QAAQ;EACRC,aAAaL;;;;;;;;;EASbM,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,aAAa;IACX;IACA;;AAEJ;",
6
+ "names": ["trim", "meta", "id", "name", "author", "description", "icon", "iconHue", "source", "screenshots"]
7
+ }
@@ -0,0 +1,31 @@
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 { Type } from "@dxos/echo";
8
+ import { createDocAccessor, getTextInRange } from "@dxos/echo-db";
9
+ import { MarkdownOperation } from "#types";
10
+ import { Markdown } from "#types";
11
+ var comment_config_default = Capability.makeModule(Effect.fnUntraced(function* () {
12
+ const config = {
13
+ id: Type.getTypename(Markdown.Document),
14
+ comments: "anchored",
15
+ selectionMode: "multi-range",
16
+ getAnchorLabel: (doc, anchor) => {
17
+ if (doc.content) {
18
+ const [start, end] = anchor.split(":");
19
+ return getTextInRange(createDocAccessor(doc.content.target, [
20
+ "content"
21
+ ]), start, end);
22
+ }
23
+ },
24
+ scrollToAnchor: MarkdownOperation.ScrollToAnchor
25
+ };
26
+ return Capability.contributes(AppCapabilities.CommentConfig, config);
27
+ }));
28
+ export {
29
+ comment_config_default as default
30
+ };
31
+ //# sourceMappingURL=comment-config-ZEA66BUR.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 { Type } from '@dxos/echo';\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: Type.getTypename(Markdown.Document),\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,YAAY;AACrB,SAASC,mBAAmBC,sBAAsB;AAElD,SAASC,yBAAyB;AAClC,SAASC,gBAAgB;AAEzB,IAAA,yBAAeN,WAAWO,WACjBC,kBAAW,aAAA;AAChB,QAAMC,SAAwC;IAC5CC,IAAIR,KAAKS,YAAYL,SAASM,QAAQ;IACtCC,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,SAAOxB,WAAWyB,YAAYxB,gBAAgByB,eAAejB,MAAAA;AAC/D,CAAA,CAAA;",
6
+ "names": ["Effect", "Capability", "AppCapabilities", "Type", "createDocAccessor", "getTextInRange", "MarkdownOperation", "Markdown", "makeModule", "fnUntraced", "config", "id", "getTypename", "Document", "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 { 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 } 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 { composable, composableProps } from "@dxos/react-ui";
131
+ import { Editor } from "@dxos/react-ui-editor";
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 = URI.make(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 { 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, '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 = 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} 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 { 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 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": ";;;AAIA,SAA6BA,YAAY;;;ACGzC,SAASC,qBAAqB;AAC9B,OAAOC,UAAyBC,eAAAA,cAAaC,WAAAA,UAASC,YAAAA,iBAAgB;AACtE,SAASC,gBAAAA,qBAAoB;AAE7B,SAASC,eAAe;AACxB,SAASC,kBAAkB;AAC3B,SAASC,WAAW;AACpB,SAASC,WAAW;AACpB,SAASC,iBAAiB;AAE1B,SAASC,cAAAA,aAAYC,mBAAAA,wBAAuB;AAC5C,SAGEC,wBACAC,wBACK;AAEP,SAASC,qBAAqB;AAE9B,SAIEC,sBACAC,qBACK;;;AC5BP,SAAoBC,uBAAuB;AAC3C,OAAOC,SAASC,YAAYC,aAAaC,YAAYC,WAAWC,qBAAqBC,eAAe;AAEpG,SAASC,uBAAuB;AAChC,SAA+BC,iBAAiBC,sBAAsB;AACtE,SAIEC,qBACK;AACP,SAIEC,aACAC,uBACAC,0BACAC,uBACAC,UACAC,eACAC,oBACAC,sBACAC,wBACK;AAEP,SAASC,UAAU;AACnB,SAASC,gBAAgB;AAEzB,SAASC,YAAY;AACrB,SAASC,4BAA4B;AAoB9B,IAAMC,wBAAwBvB,2BACnC,CACE,EACEwB,YACAC,IACAC,cACAC,MACAC,SACAC,UACAC,cACAC,kBACAC,cACAC,YACAC,OACAC,aAAY,GAEdC,iBAAAA;AAEA,QAAM,EAAEC,EAAC,IAAK7B,eAAea,KAAKI,EAAE;AACpC,QAAM,EAAEa,UAAS,IAAK/B,gBAAAA;AACtB,QAAMgC,WAAWrC,WAAWJ,eAAAA;AAG5B,QAAM0C,qBAAqBvC,YACzB,CAACwC,eAAAA;AACC,QAAIT,cAAc;AAChBO,eAASG,IAAIV,cAAc;QAAE,GAAGO,SAASI,IAAIX,YAAAA;QAAe,GAAGS;MAAW,CAAA;IAC5E;EACF,GACA;IAACF;IAAUP;GAAa;AAI1B,QAAM,EAAEY,UAAUC,UAAS,IAAKxC,QAA8B,MAAM0B,kBAAkBe,SAASrB,EAAAA,KAAO,CAAC,GAAG;IAACA;GAAG;AAE9G,QAAM,EACJsB,WACAC,MAAMC,YACNC,gBAAe,IACbzC,cACF,OAAO;IACL,GAAIkB,SAAS,aAAa;MACxBF;MACAmB;MACAC;MACAM,cAAc;IAChB;IACArB;IACAG,YAAY;MACVtB,sBAAsB;QACpByC,UAAUvB,aAAa;QACvBwB,aAAahB,EAAE,oBAAA;QACfiB,eAAe,CAAC1B;QAChB2B,QAAQ;MACV,CAAA;MACA1C,sBAAsB;QACpByB;QACAJ,OAAOA,UAAUN,UAAUlB,cAAcK;QACzCyC,oBAAoB;MACtB,CAAA;MACA5C,yBAAAA;MACAoB,gBAAgBhB,mBAAmBwB,kBAAAA;MACnCb,SAAS,aACPQ,gBACArB,SAAS;;QAEP2C,QAAQ,OAAOT,MAAM,EAAEU,MAAK,MAAE;AAC5B,gBAAMC,OAAOD,MAAM,CAAA;AACnB,gBAAME,OAAOD,QAAQxB,eAAe,MAAMA,aAAawB,IAAAA,IAAQE;AAC/D,cAAID,MAAM;AACR3C,iCAAqB+B,MAAM;cAAEc,MAAM;cAASC,MAAMH,KAAKI;YAAI,CAAA;UAC7D;QACF;MACF,CAAA;MACF/B;MACAgC,OAAO7C,QAAAA;EACX,IACA;IAACK;IAAII;IAAUS;IAAWL;IAAYL;GAAQ;AAGhDxB,sBAA0DgC,cAAc,MAAMa,YAAY;IAACA;GAAW;AAEtG,QAAM,CAACiB,kBAAAA,IAAsB5D,gBAAgBgB,qBAAqB6C,WAAW;AAC7EhE,YAAU,MAAA;AACR,QAAI8C,cAAciB,oBAAoB;AACpCA,yBAAmBE,SAAS1C,gBAAgBD,IAAIwB,YAAYxB,EAAAA;AAC5D,aAAO,MAAMyC,mBAAmBG,WAAW3C,gBAAgBD,EAAAA;IAC7D;EACF,GAAG;IAACwB;IAAYiB;IAAoBxC;IAAcD;GAAG;AAErD6C,UAAQrB,UAAAA;AAER,SACE,sBAAA,cAACsB,OAAAA;IACE,GAAGrB;IACJsB,WAAWrD,GAAGD,iBAAiBS,IAAAA,GAAOH,UAAAA;IACtCiD,eAAY;IACZC,mCAAiC;IACjCC,KAAK5B;;AAGX,CAAA;AAKF,IAAMuB,UAAU,CAACtB,SAAAA;AACf7C,YAAU,MAAA;AACR,UAAMyE,WAAYC,OAAeD;AACjC,QAAIA,UAAU;AACZA,eAAS3B,aAAaD;IACxB;EACF,GAAG;IAACA;GAAK;AACX;;;ACnKA,OAAO8B,UAASC,eAAAA,cAAaC,gBAAgB;AAG7C,SAASC,YAAYC,uBAAuB;AAC5C,SAASC,cAAuC;;;ACJhD,OAAOC,UAASC,cAAAA,aAAYC,aAAAA,YAAWC,uBAAAA,4BAA2B;AAClE,SAASC,oBAAoB;AAC7B,SAASC,mBAAmB;AAG5B,SAASC,eAAe;AAEjB,IAAMC,cAAc;EAAC;EAAQ;EAAS;EAAQ;;AAW9C,IAAMC,aAAaP,gBAAAA,YACxB,CAAC,EAAEQ,YAAYC,aAAY,GAAIC,iBAAAA;AAE7B,QAAM,EAAEC,eAAeC,MAAMC,SAAQ,IAAKT,YAAY;IACpDU,UAAU,CAACL;IACXM,UAAU;IACVC,QAAQ;IACRC,QAAQ;MACN,WAAWX;IACb;EACF,CAAA;AAEAJ,EAAAA,qBAAoBQ,cAAc,MAAME,MAAM,CAAA,CAAE;AAEhDX,EAAAA,WAAU,MAAA;AACR,QAAIO,cAAcG,cAAcO,UAAUT,cAAc;AACtDU,4BAAsB,YAAA;AAEpB,cAAMC,IAAIT,cAAc,CAAA;AACxB,cAAMU,OAAO,IAAIC,KAAK;UAACF;WAAIA,EAAEG,MAAM;UACjCC,MAAMJ,EAAEI;UACRC,cAAcL,EAAEK;QAClB,CAAA;AAGA,cAAMC,OAAO,MAAMjB,aAAaY,IAAAA;AAChC,YAAIK,MAAM;AACRrB,kBAAQ;YAAEsB,KAAKD,KAAKC;YAAKC,OAAO;UAAK,CAAA,EAAGpB,UAAAA;QAC1C;MACF,CAAA;IACF;EACF,GAAG;IAACA;IAAYG;IAAeF;GAAa;AAE5C,MAAI,CAACA,cAAc;AACjB,WAAO;EACT;AAEA,SAAO,gBAAAV,OAAA,cAAAA,OAAA,UAAA,MAAGI,6BAAa,gBAAAJ,OAAA,cAAC8B,SAAAA;IAAMC,KAAKjB;MAAckB,SAASC,IAAI,GAAE,GAAA;AAClE,CAAA;;;AD1CK,IAAMC,wBAAwBC,WACnC,CAAC,EAAEC,IAAIC,MAAMC,YAAYC,eAAeC,UAAUC,cAAcC,kBAAkB,GAAGC,MAAAA,GAASC,iBAAAA;AAC5F,QAAM,EAAEC,WAAW,GAAGC,KAAAA,IAASC,gBAAgBJ,KAAAA;AAC/C,QAAM,CAACK,QAAQC,SAAAA,IAAaC,SAAkC,IAAA;AAC9D,QAAMC,YAAYC,aAAY,CAACC,SAA2BJ,UAAU,MAAMI,IAAAA,GAAO,CAAA,CAAE;AAEnF,MAAI,CAACf,YAAY;AACf,WAAO,gBAAAgB,OAAA,cAACC,OAAAA;MAAIV;MAAuB,GAAGC;MAAMU,KAAKZ;;EACnD;AAEA,SACE,gBAAAU,OAAA,cAACC,OAAAA;IAAIV,WAAU;IAAWW,KAAKZ;KAC7B,gBAAAU,OAAA,cAACG,OAAOC,SAAO;IACZ,GAAGZ;IACJa,YAAYd;IACZe,cAAcxB;IACdC;IACAE;IACAC;IACAqB,eAAeb,UAAUc;IACzBpB;MAGDD,gBAAgB,gBAAAa,OAAA,cAACS,YAAAA;IAAWP,KAAKL;IAAWb;IAAwBG;;AAG3E,CAAA;;;AFUF,IAAM,CAACuB,+BAA+BC,wBAAAA,IACpCC,cAA0C,wBAAA;AAsBrC,IAAMC,yBAAyB,CAAC,EACrCC,UACAC,IACAC,cACAC,QACAC,UACAC,SACAC,UACAC,kBACAC,kBACAC,YAAYC,gBACZC,oBACAC,aACAC,gBACAC,UACAC,cACAC,iBAAgB,MACY;AAE5B,QAAM,CAACC,eAAeC,gBAAAA,IAAoBC,UAAyB,CAAA,CAAE;AACrE,QAAMC,iBAAiBC,SACrB,OAAO;IACLC,IAAIC,IAAIC,SAASrB,MAAAA,IAAUoB,IAAIE,YAAYtB,MAAAA,IAAUuB;IACrDC,mBAAmB,CAACC,UAAAA;AAClBV,uBAAiB,CAACW,SAAS;WAAIA;QAAMD;OAAM;IAC7C;IACAE,sBAAsB,CAAC,EAAEC,KAAI,MAAE;AAC7Bb,uBAAiB,CAACW,SAASA,KAAKG,OAAO,CAAC,EAAED,MAAME,SAAQ,MAAOA,SAASC,QAAQH,KAAKG,GAAG,CAAA;IAC1F;EACF,IACA;IAAC/B;GAAO;AAIV,QAAMgC,cAAcC,qBAAqB;IAAEzB;IAAoBC;EAAY,CAAA;AAG3E,QAAMyB,iBAAiBC,cAAc;IACnCrC;IACAE;IACAE;IACAC;IACAC;IACAC;IACAY;IACAhB;IACAS;EACF,CAAA;AAEA,QAAMJ,aAAaY,SACjB,MAAM;IAACgB;IAAgB3B;IAAgBsB,OAAOO,aAAAA,EAAeC,KAAI,GACjE;IAACH;IAAgB3B;GAAe;AAGlC,QAAM+B,kBAAkBpB,SACtB,OAAO;IACLZ;IACAH;IACAoC,SAASP,YAAYO;IACrBC,SAASR,YAAYQ;IACrBC,aAAaT,YAAYS;IACzB,GAAIT,YAAYH,WAAWN,SAAY;MAAEM,QAAQG,YAAYH;IAAO,IAAI,CAAC;IACzE,GAAIG,YAAYU,eAAenB,SAAY;MAAEmB,YAAYV,YAAYU;IAAW,IAAI,CAAC;EACvF,IACA;IAACpC;IAAYH;IAAU6B;GAAY;AAGrC,QAAMW,uBAAuBzB,SAC3B,OAAO;IACLpB;IACAC;IACAG;IACAC;IACAW;IACAH;IACAC;IACAC;EACF,IACA;IAACf;IAAIC;IAAcG;IAASC;IAAUW;IAAeH;IAAUC;IAAcC;GAAiB;AAGhG,SACE,gBAAA+B,OAAA,cAACnD,+BAAkCkD,sBAAuB9C,SAASyC,eAAAA,CAAAA;AAEvE;AAEA1C,uBAAuBiD,cAAc;AAMrC,IAAMC,+BAA+B;AAIrC,IAAMC,yBAAwBC,YAC5B,CAAC,EAAE9C,SAAS+C,aAAa,GAAGC,MAAAA,GAASC,kBAAAA;AACnC,QAAM,EACJrD,IACAC,cACAG,UAAU+C,aACV9C,UACAS,aAAY,IACVlB,yBAAyBoD,4BAAAA;AAC7B,QAAM,EAAExC,YAAY8C,eAAeC,MAAK,IAAKC,iBAAiBR,4BAAAA;AAE9D,QAAMS,YAAYC,aAChB,CAACC,SAAAA;AACCL,kBAAcM,uBAAuBD,IAAAA,CAAAA;EACvC,GACA;IAACL;GAAc;AAGjB,SACE,gBAAAR,OAAA,cAACe,uBAAAA;IACE,GAAGC,iBAAgBV,KAAAA;IACpBpD;IACAC;IACAG;IACAC;IACA0D,cAAcR;IACd/C;IACAM;IACAkD,KAAKP;;AAGX,CAAA;AAGFR,uBAAsBF,cAAcC;AAMpC,IAAMiB,+BAA+B;AAMrC,IAAMC,yBAAwB,CAACd,UAAAA;AAC7B,QAAM,EAAEpD,IAAIC,cAAcY,UAAUC,cAAcC,iBAAgB,IAChEnB,yBAAyBqE,4BAAAA;AAE3B,QAAM,EAAEE,WAAU,IAAKX,iBAAiBS,4BAAAA;AAExC,SACE,gBAAAnB,OAAA,cAACsB,uBAAAA;IACE,GAAGhB;IACJpD,IAAIC,gBAAgBD;IACpBqE,YAAYF,YAAYR,QAAQlC;IAChCZ;IACAC;IACAC;;AAGN;AAEAmD,uBAAsBnB,cAAckB;AAMpC,IAAMK,8BAA8B;AAIpC,IAAMC,uBAAuB,CAACC,WAAAA;AAC5B,QAAM,EAAExD,cAAa,IAAKpB,yBAAyB0E,2BAAAA;AAEnD,SACE,gBAAAxB,OAAA,cAAAA,OAAA,UAAA,MACG9B,cAAcyD,IAAI,CAAC,EAAE3C,MAAM4C,GAAE,MAC5B,gBAAA5B,OAAA,cAAC6B,cAAAA;IAAaC,KAAK9C,KAAKG;IAAKH;IAAY4C;;AAIjD;AAEAH,qBAAqBxB,cAAcuB;AAEnC,IAAMK,eAAe,CAAC,EAAED,IAAI5C,KAAI,MAAgB;AAC9C,QAAM+C,SAASC,UAAAA;AACf,QAAM7C,MAAM8C,IAAIC,KAAKlD,KAAKG,GAAG;AAC7B,QAAMgD,UAAUJ,OAAOK,MAAMC,QAAQlD,GAAAA,EAAKmD;AAC1C,QAAMC,OAAOjE,SAAQ,OAAO;IAAE6D;EAAQ,IAAI;IAACA;GAAQ;AAEnD,SAAOK,gBAAAA,cAAa,gBAAAxC,OAAA,cAACyC,QAAQA,SAAO;IAACC,MAAMC,WAAWC;IAAML;IAAYM,OAAO;MAAOjB,EAAAA;AACxF;AAOO,IAAMkB,iBAAiB;EAC5BC,SAAS5C;EACT6C,SAAS5B;EACT6B,QAAQxB;AACV;;;ADhRO,IAAMyB,mBAAuCC,KAAK,MAAM,OAAO,kCAAA,CAAA;",
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", "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", "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", "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-36P4AHYL.mjs"));
6
+ var EditableMarkdownCard = lazy(() => import("../EditableMarkdownCard-AW7MD35U.mjs"));
7
+ var MarkdownArticle = lazy(() => import("../MarkdownArticle-Z4QRU3WD.mjs"));
8
+ export {
9
+ EditableMarkdownCard,
10
+ MarkdownArticle,
11
+ MarkdownCard
12
+ };
13
+ //# sourceMappingURL=index.mjs.map