@dxos/plugin-markdown 0.8.4-main.422d1c7879 → 0.8.4-main.4f23b4e393

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 (289) hide show
  1. package/dist/lib/neutral/EditableMarkdownCard-P4F4TIUM.mjs +32 -0
  2. package/dist/lib/neutral/EditableMarkdownCard-P4F4TIUM.mjs.map +7 -0
  3. package/dist/lib/neutral/MarkdownCard-INMBLUL4.mjs +102 -0
  4. package/dist/lib/neutral/MarkdownCard-INMBLUL4.mjs.map +7 -0
  5. package/dist/lib/neutral/MarkdownContainer-2BDGD3PL.mjs +126 -0
  6. package/dist/lib/neutral/MarkdownContainer-2BDGD3PL.mjs.map +7 -0
  7. package/dist/lib/neutral/MarkdownPlugin.mjs +58 -0
  8. package/dist/lib/neutral/MarkdownPlugin.mjs.map +7 -0
  9. package/dist/lib/neutral/MarkdownPlugin.node.mjs +25 -0
  10. package/dist/lib/neutral/MarkdownPlugin.node.mjs.map +7 -0
  11. package/dist/lib/{browser/MarkdownSettings-62YSRY7L.mjs → neutral/MarkdownSettings-YCTZJL5V.mjs} +4 -4
  12. package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs.map +7 -0
  13. package/dist/lib/neutral/anchor-sort-L4VCKDO6.mjs +32 -0
  14. package/dist/lib/neutral/anchor-sort-L4VCKDO6.mjs.map +7 -0
  15. package/dist/lib/neutral/app-graph-serializer-YI72EEVM.mjs +55 -0
  16. package/dist/lib/neutral/app-graph-serializer-YI72EEVM.mjs.map +7 -0
  17. package/dist/lib/neutral/blueprint-definition-33OK2KUL.mjs +15 -0
  18. package/dist/lib/neutral/blueprint-definition-33OK2KUL.mjs.map +7 -0
  19. package/dist/lib/neutral/blueprints/index.mjs +8 -0
  20. package/dist/lib/neutral/capabilities/index.mjs +25 -0
  21. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  22. package/dist/lib/neutral/capabilities/node.mjs +11 -0
  23. package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
  24. package/dist/lib/neutral/chunk-3LYCPEVP.mjs +21 -0
  25. package/dist/lib/neutral/chunk-3LYCPEVP.mjs.map +7 -0
  26. package/dist/lib/neutral/chunk-6N7AD3IU.mjs +8 -0
  27. package/dist/lib/neutral/chunk-6N7AD3IU.mjs.map +7 -0
  28. package/dist/lib/neutral/chunk-KDN4GKG2.mjs +98 -0
  29. package/dist/lib/neutral/chunk-KDN4GKG2.mjs.map +7 -0
  30. package/dist/lib/{browser/blueprints/index.mjs → neutral/chunk-LXNSKCPD.mjs} +10 -17
  31. package/dist/lib/neutral/chunk-LXNSKCPD.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-SOLAMEK3.mjs +276 -0
  33. package/dist/lib/neutral/chunk-SOLAMEK3.mjs.map +7 -0
  34. package/dist/lib/neutral/comment-config-7VTHRUIZ.mjs +30 -0
  35. package/dist/lib/neutral/comment-config-7VTHRUIZ.mjs.map +7 -0
  36. package/dist/lib/{browser → neutral/components}/index.mjs +13 -275
  37. package/dist/lib/neutral/components/index.mjs.map +7 -0
  38. package/dist/lib/neutral/containers/index.mjs +13 -0
  39. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  40. package/dist/lib/{browser/create-YL5ELZWP.mjs → neutral/create-3PGJ2NEK.mjs} +5 -7
  41. package/dist/lib/neutral/create-3PGJ2NEK.mjs.map +7 -0
  42. package/dist/lib/{browser/create-markdown-LU5IDKMH.mjs → neutral/create-markdown-5LS46GMH.mjs} +5 -7
  43. package/dist/lib/neutral/create-markdown-5LS46GMH.mjs.map +7 -0
  44. package/dist/lib/neutral/create-object-ZA6VXLJJ.mjs +27 -0
  45. package/dist/lib/neutral/create-object-ZA6VXLJJ.mjs.map +7 -0
  46. package/dist/lib/neutral/hooks/index.mjs +321 -0
  47. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  48. package/dist/lib/neutral/index.mjs +42 -0
  49. package/dist/lib/neutral/meta.json +1 -0
  50. package/dist/lib/neutral/meta.mjs +8 -0
  51. package/dist/lib/{browser/open-AFSOZZ6G.mjs → neutral/open-WCYGBLAG.mjs} +5 -6
  52. package/dist/lib/neutral/open-WCYGBLAG.mjs.map +7 -0
  53. package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs +13 -0
  54. package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs.map +7 -0
  55. package/dist/lib/neutral/operations/index.mjs +8 -0
  56. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  57. package/dist/lib/neutral/plugin.mjs +16 -0
  58. package/dist/lib/neutral/plugin.mjs.map +7 -0
  59. package/dist/lib/neutral/react-surface-TB4TY57T.mjs +119 -0
  60. package/dist/lib/neutral/react-surface-TB4TY57T.mjs.map +7 -0
  61. package/dist/lib/{browser/scroll-to-anchor-IPXV32A6.mjs → neutral/scroll-to-anchor-6FIOKVKT.mjs} +7 -9
  62. package/dist/lib/neutral/scroll-to-anchor-6FIOKVKT.mjs.map +7 -0
  63. package/dist/lib/neutral/set-view-mode-37RSPFEN.mjs +24 -0
  64. package/dist/lib/neutral/set-view-mode-37RSPFEN.mjs.map +7 -0
  65. package/dist/lib/neutral/settings-TDGDLCUR.mjs +34 -0
  66. package/dist/lib/neutral/settings-TDGDLCUR.mjs.map +7 -0
  67. package/dist/lib/neutral/state-5COCF5PN.mjs +44 -0
  68. package/dist/lib/neutral/state-5COCF5PN.mjs.map +7 -0
  69. package/dist/lib/neutral/testing.mjs +18 -0
  70. package/dist/lib/neutral/testing.mjs.map +7 -0
  71. package/dist/lib/neutral/translations.mjs +43 -0
  72. package/dist/lib/neutral/translations.mjs.map +7 -0
  73. package/dist/lib/neutral/types/index.mjs +16 -0
  74. package/dist/lib/neutral/types/index.mjs.map +7 -0
  75. package/dist/lib/{browser/update-HZNVYBMO.mjs → neutral/update-markdown-5EDRD3SH.mjs} +8 -9
  76. package/dist/lib/neutral/update-markdown-5EDRD3SH.mjs.map +7 -0
  77. package/dist/types/src/MarkdownPlugin.d.ts +1 -0
  78. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  79. package/dist/types/src/{cli/plugin.d.ts → MarkdownPlugin.node.d.ts} +2 -1
  80. package/dist/types/src/MarkdownPlugin.node.d.ts.map +1 -0
  81. package/dist/types/src/MarkdownPlugin.test.d.ts +2 -0
  82. package/dist/types/src/MarkdownPlugin.test.d.ts.map +1 -0
  83. package/dist/types/src/blueprints/markdown-blueprint.d.ts +2 -2
  84. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  86. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/blueprint-definition.d.ts +2 -2
  89. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/comment-config.d.ts +12 -0
  91. package/dist/types/src/capabilities/comment-config.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  93. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/index.d.ts +16 -3
  95. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/node.d.ts +7 -1
  97. package/dist/types/src/capabilities/node.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  99. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/state.d.ts +2 -2
  103. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  104. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +13 -5
  105. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  106. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +2 -1
  108. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  109. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +1 -1
  110. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  111. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +46 -46
  112. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -1
  113. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts +15 -0
  114. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts.map +1 -0
  115. package/dist/types/src/containers/EditableMarkdownCard/index.d.ts +3 -0
  116. package/dist/types/src/containers/EditableMarkdownCard/index.d.ts.map +1 -0
  117. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  118. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +1 -1
  119. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
  120. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -1
  121. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts +5 -5
  122. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +1 -1
  123. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts +70 -50
  124. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +1 -1
  125. package/dist/types/src/containers/index.d.ts +1 -0
  126. package/dist/types/src/containers/index.d.ts.map +1 -1
  127. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -1
  128. package/dist/types/src/hooks/useExtensions.d.ts +2 -1
  129. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  130. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  131. package/dist/types/src/index.d.ts +2 -4
  132. package/dist/types/src/index.d.ts.map +1 -1
  133. package/dist/types/src/operations/create-markdown.d.ts +3 -3
  134. package/dist/types/src/operations/create-markdown.d.ts.map +1 -1
  135. package/dist/types/src/operations/create.d.ts +3 -3
  136. package/dist/types/src/operations/create.d.ts.map +1 -1
  137. package/dist/types/src/operations/index.d.ts +1 -2
  138. package/dist/types/src/operations/index.d.ts.map +1 -1
  139. package/dist/types/src/operations/open.d.ts +3 -3
  140. package/dist/types/src/operations/open.d.ts.map +1 -1
  141. package/dist/types/src/operations/scroll-to-anchor.d.ts +3 -3
  142. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -1
  143. package/dist/types/src/operations/set-view-mode.d.ts +3 -3
  144. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -1
  145. package/dist/types/src/operations/update-markdown.d.ts +5 -0
  146. package/dist/types/src/operations/update-markdown.d.ts.map +1 -0
  147. package/dist/types/src/plugin.d.ts +4 -0
  148. package/dist/types/src/plugin.d.ts.map +1 -0
  149. package/dist/types/src/testing.d.ts.map +1 -1
  150. package/dist/types/src/translations.d.ts +70 -51
  151. package/dist/types/src/translations.d.ts.map +1 -1
  152. package/dist/types/src/types/Markdown.d.ts +4 -3
  153. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  154. package/dist/types/src/types/MarkdownCapabilities.d.ts +32 -0
  155. package/dist/types/src/types/MarkdownCapabilities.d.ts.map +1 -0
  156. package/dist/types/src/types/MarkdownEvents.d.ts +3 -0
  157. package/dist/types/src/types/MarkdownEvents.d.ts.map +1 -0
  158. package/dist/types/src/{operations/definitions.d.ts → types/MarkdownOperation.d.ts} +5 -5
  159. package/dist/types/src/types/MarkdownOperation.d.ts.map +1 -0
  160. package/dist/types/src/types/Settings.d.ts +1 -1
  161. package/dist/types/src/types/index.d.ts +3 -2
  162. package/dist/types/src/types/index.d.ts.map +1 -1
  163. package/dist/types/src/types/types.d.ts +1 -0
  164. package/dist/types/src/types/types.d.ts.map +1 -1
  165. package/dist/types/src/util.d.ts +1 -1
  166. package/dist/types/src/util.d.ts.map +1 -1
  167. package/dist/types/tsconfig.tsbuildinfo +1 -1
  168. package/package.json +119 -88
  169. package/src/MarkdownPlugin.node.ts +20 -0
  170. package/src/MarkdownPlugin.test.ts +26 -0
  171. package/src/MarkdownPlugin.tsx +8 -52
  172. package/src/blueprints/markdown-blueprint.ts +8 -9
  173. package/src/capabilities/app-graph-serializer.ts +4 -6
  174. package/src/capabilities/artifact-definition.ts +3 -4
  175. package/src/capabilities/blueprint-definition.ts +2 -0
  176. package/src/capabilities/comment-config.ts +32 -0
  177. package/src/capabilities/create-object.ts +30 -0
  178. package/src/capabilities/index.ts +4 -1
  179. package/src/capabilities/node.ts +3 -1
  180. package/src/capabilities/operation-handler.ts +1 -1
  181. package/src/capabilities/react-surface.tsx +10 -4
  182. package/src/capabilities/state.ts +4 -4
  183. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +4 -3
  184. package/src/components/MarkdownEditor/MarkdownEditor.tsx +32 -25
  185. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +2 -3
  186. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +1 -1
  187. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +2 -1
  188. package/src/components/MarkdownSettings/MarkdownSettings.tsx +3 -3
  189. package/src/containers/EditableMarkdownCard/EditableMarkdownCard.tsx +42 -0
  190. package/src/containers/EditableMarkdownCard/index.ts +6 -0
  191. package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +4 -3
  192. package/src/containers/MarkdownCard/MarkdownCard.tsx +0 -1
  193. package/src/containers/MarkdownCard/snippet.ts +3 -1
  194. package/src/containers/MarkdownContainer/MarkdownContainer.stories.tsx +3 -3
  195. package/src/containers/MarkdownContainer/MarkdownContainer.tsx +5 -4
  196. package/src/containers/index.ts +1 -0
  197. package/src/hooks/useExtensions.tsx +4 -6
  198. package/src/hooks/useLinkQuery.ts +9 -26
  199. package/src/index.ts +2 -7
  200. package/src/operations/create-markdown.ts +3 -4
  201. package/src/operations/create.conversations.json +1 -1
  202. package/src/operations/create.test.ts +7 -9
  203. package/src/operations/create.ts +3 -4
  204. package/src/operations/index.ts +2 -4
  205. package/src/operations/open.ts +3 -3
  206. package/src/operations/scroll-to-anchor.ts +3 -4
  207. package/src/operations/set-view-mode.ts +3 -4
  208. package/src/operations/{update.ts → update-markdown.ts} +3 -3
  209. package/src/operations/update.conversations.json +1 -1
  210. package/src/operations/update.test.ts +7 -9
  211. package/src/plugin.ts +11 -0
  212. package/src/testing.ts +1 -3
  213. package/src/translations.ts +2 -2
  214. package/src/types/Markdown.ts +5 -0
  215. package/src/types/MarkdownCapabilities.ts +51 -0
  216. package/src/types/MarkdownEvents.ts +14 -0
  217. package/src/{operations/definitions.ts → types/MarkdownOperation.ts} +4 -2
  218. package/src/types/Settings.ts +3 -3
  219. package/src/types/index.ts +3 -2
  220. package/src/types/types.ts +4 -1
  221. package/src/util.tsx +2 -2
  222. package/dist/lib/browser/MarkdownSettings-62YSRY7L.mjs.map +0 -7
  223. package/dist/lib/browser/blueprints/index.mjs.map +0 -7
  224. package/dist/lib/browser/chunk-4KOZEH2H.mjs +0 -121
  225. package/dist/lib/browser/chunk-4KOZEH2H.mjs.map +0 -7
  226. package/dist/lib/browser/chunk-QFPZONKP.mjs +0 -158
  227. package/dist/lib/browser/chunk-QFPZONKP.mjs.map +0 -7
  228. package/dist/lib/browser/cli/index.mjs +0 -39
  229. package/dist/lib/browser/cli/index.mjs.map +0 -7
  230. package/dist/lib/browser/create-YL5ELZWP.mjs.map +0 -7
  231. package/dist/lib/browser/create-markdown-LU5IDKMH.mjs.map +0 -7
  232. package/dist/lib/browser/index.mjs.map +0 -7
  233. package/dist/lib/browser/meta.json +0 -1
  234. package/dist/lib/browser/open-AFSOZZ6G.mjs.map +0 -7
  235. package/dist/lib/browser/operations/index.mjs +0 -14
  236. package/dist/lib/browser/operations/index.mjs.map +0 -7
  237. package/dist/lib/browser/scroll-to-anchor-IPXV32A6.mjs.map +0 -7
  238. package/dist/lib/browser/set-view-mode-2QWB24RR.mjs +0 -26
  239. package/dist/lib/browser/set-view-mode-2QWB24RR.mjs.map +0 -7
  240. package/dist/lib/browser/types/index.mjs +0 -16
  241. package/dist/lib/browser/update-HZNVYBMO.mjs.map +0 -7
  242. package/dist/lib/node-esm/MarkdownSettings-QMPISOEU.mjs +0 -33
  243. package/dist/lib/node-esm/MarkdownSettings-QMPISOEU.mjs.map +0 -7
  244. package/dist/lib/node-esm/blueprints/index.mjs +0 -52
  245. package/dist/lib/node-esm/blueprints/index.mjs.map +0 -7
  246. package/dist/lib/node-esm/chunk-3OPDJJJH.mjs +0 -122
  247. package/dist/lib/node-esm/chunk-3OPDJJJH.mjs.map +0 -7
  248. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  249. package/dist/lib/node-esm/chunk-JUGS6RKO.mjs +0 -159
  250. package/dist/lib/node-esm/chunk-JUGS6RKO.mjs.map +0 -7
  251. package/dist/lib/node-esm/cli/index.mjs +0 -40
  252. package/dist/lib/node-esm/cli/index.mjs.map +0 -7
  253. package/dist/lib/node-esm/create-SMQAIM3V.mjs +0 -31
  254. package/dist/lib/node-esm/create-SMQAIM3V.mjs.map +0 -7
  255. package/dist/lib/node-esm/create-markdown-X2OASYKG.mjs +0 -23
  256. package/dist/lib/node-esm/create-markdown-X2OASYKG.mjs.map +0 -7
  257. package/dist/lib/node-esm/index.mjs +0 -633
  258. package/dist/lib/node-esm/index.mjs.map +0 -7
  259. package/dist/lib/node-esm/meta.json +0 -1
  260. package/dist/lib/node-esm/open-SRWLLOKE.mjs +0 -22
  261. package/dist/lib/node-esm/open-SRWLLOKE.mjs.map +0 -7
  262. package/dist/lib/node-esm/operations/index.mjs +0 -15
  263. package/dist/lib/node-esm/operations/index.mjs.map +0 -7
  264. package/dist/lib/node-esm/scroll-to-anchor-M76GXKYQ.mjs +0 -50
  265. package/dist/lib/node-esm/scroll-to-anchor-M76GXKYQ.mjs.map +0 -7
  266. package/dist/lib/node-esm/set-view-mode-6BB6KIDS.mjs +0 -27
  267. package/dist/lib/node-esm/set-view-mode-6BB6KIDS.mjs.map +0 -7
  268. package/dist/lib/node-esm/types/index.mjs +0 -17
  269. package/dist/lib/node-esm/update-4CELTLXK.mjs +0 -46
  270. package/dist/lib/node-esm/update-4CELTLXK.mjs.map +0 -7
  271. package/dist/types/src/cli/index.d.ts +0 -2
  272. package/dist/types/src/cli/index.d.ts.map +0 -1
  273. package/dist/types/src/cli/plugin.d.ts.map +0 -1
  274. package/dist/types/src/operations/definitions.d.ts.map +0 -1
  275. package/dist/types/src/operations/update.d.ts +0 -5
  276. package/dist/types/src/operations/update.d.ts.map +0 -1
  277. package/dist/types/src/types/capabilities.d.ts +0 -33
  278. package/dist/types/src/types/capabilities.d.ts.map +0 -1
  279. package/dist/types/src/types/events.d.ts +0 -5
  280. package/dist/types/src/types/events.d.ts.map +0 -1
  281. package/src/cli/index.ts +0 -5
  282. package/src/cli/plugin.ts +0 -39
  283. package/src/types/capabilities.ts +0 -50
  284. package/src/types/events.ts +0 -14
  285. /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
  286. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  287. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs.map +0 -0
  288. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
  289. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/meta.mjs.map} +0 -0
@@ -1,253 +1,4 @@
1
- import {
2
- MarkdownCapabilities,
3
- MarkdownEvents,
4
- MarkdownStateSchema,
5
- Markdown_exports,
6
- Settings_exports
7
- } from "./chunk-4KOZEH2H.mjs";
8
- import "./chunk-J5LGTIGS.mjs";
9
-
10
- // src/meta.ts
11
- import { trim } from "@dxos/util";
12
- var meta = {
13
- id: "org.dxos.plugin.markdown",
14
- name: "Markdown",
15
- description: trim`
16
- Full-featured collaborative markdown editor with real-time editing, inline comments, and rich formatting.
17
- Supports AI-powered editing assistance and seamlessly integrates with other workspace objects.
18
- `,
19
- icon: "ph--text-aa--regular",
20
- iconHue: "indigo",
21
- source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown",
22
- screenshots: [
23
- "https://dxos.network/plugin-details-markdown-dark.png"
24
- ]
25
- };
26
-
27
- // src/util.tsx
28
- import { debounce } from "@dxos/async";
29
- import { Obj } from "@dxos/echo";
30
- import { Markdown } from "#types";
31
- var isEditorModel = (data) => data && typeof data === "object" && "id" in data && typeof data.id === "string" && "text" in data && typeof data.text === "string";
32
- var isMarkdownProperties = (data) => Obj.isObject(data) ? true : data && typeof data === "object" ? "title" in data && typeof data.title === "string" : false;
33
- var nonTitleChars = /[^\w ]/g;
34
- var skipPatterns = [
35
- /^!\[/,
36
- /^---\s*$/,
37
- /^```/,
38
- /^\s*$/
39
- ];
40
- var titlePatterns = [
41
- /^#{1,6}\s+(.+)/
42
- ];
43
- var getFallbackName = (content = "") => {
44
- const len = content.length;
45
- let i = 0;
46
- while (i < len) {
47
- let lineEnd = i;
48
- while (lineEnd < len && content[lineEnd] !== "\n") {
49
- lineEnd++;
50
- }
51
- const line = content.slice(i, lineEnd).trim();
52
- i = lineEnd + 1;
53
- if (skipPatterns.some((pattern) => pattern.test(line))) {
54
- continue;
55
- }
56
- for (const pattern of titlePatterns) {
57
- const match = pattern.exec(line);
58
- if (match) {
59
- const text2 = match[1].replaceAll(nonTitleChars, "").trim();
60
- if (text2.length > 0) {
61
- return text2;
62
- }
63
- }
64
- }
65
- const maxLen = 32;
66
- const text = line.replaceAll(nonTitleChars, "").trim();
67
- if (text.length > 0) {
68
- if (text.length > maxLen) {
69
- const words = text.split(/\s+/);
70
- let result = "";
71
- for (const word of words) {
72
- const next = result.length === 0 ? word : result + " " + word;
73
- if (next.length > maxLen) {
74
- break;
75
- }
76
- result = next;
77
- }
78
- return result + "\u2026";
79
- }
80
- return text;
81
- }
82
- }
83
- return "";
84
- };
85
- var getContentSnippet = (content = "", maxLines = 3) => {
86
- const abstract = content.split("\n").filter((line) => !line.startsWith("!")).filter((line) => line.trim() !== "");
87
- return abstract.slice(0, maxLines).join("\n") ?? "";
88
- };
89
- var setFallbackName = debounce((doc, content = "") => {
90
- const name = getFallbackName(content);
91
- if (doc.fallbackName !== name) {
92
- Obj.change(doc, (doc2) => {
93
- doc2.fallbackName = name;
94
- });
95
- }
96
- }, 200);
97
- var serializer = {
98
- serialize: async ({ object }) => {
99
- const { content } = await object.content.load();
100
- return JSON.stringify({
101
- name: object.name,
102
- fallbackName: object.fallbackName,
103
- content
104
- });
105
- },
106
- deserialize: async ({ content: serialized }) => {
107
- const { name, fallbackName, content } = JSON.parse(serialized);
108
- return Markdown.make({
109
- name,
110
- fallbackName,
111
- content
112
- });
113
- }
114
- };
115
-
116
- // src/MarkdownPlugin.tsx
117
- import * as Effect from "effect/Effect";
118
- import * as Option from "effect/Option";
119
- import { Plugin } from "@dxos/app-framework";
120
- import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
121
- import { Annotation, Ref } from "@dxos/echo";
122
- import { createDocAccessor, getTextInRange } from "@dxos/echo-db";
123
- import { Operation } from "@dxos/operation";
124
- import { SpaceOperation } from "@dxos/plugin-space/operations";
125
- import { translations as editorTranslations2 } from "@dxos/react-ui-editor";
126
- import { Text } from "@dxos/schema";
127
- import { MarkdownBlueprint } from "#blueprints";
128
- import { AnchorSort, AppGraphSerializer, BlueprintDefinition, MarkdownSettings, MarkdownState, OperationHandler, ReactSurface } from "#capabilities";
129
- import { meta as meta3 } from "#meta";
130
- import { MarkdownOperation } from "#operations";
131
- import { Markdown as Markdown3, MarkdownEvents as MarkdownEvents2 } from "#types";
132
-
133
- // src/translations.ts
134
- import { translations as editorTranslations } from "@dxos/react-ui-editor";
135
- import { meta as meta2 } from "#meta";
136
- import { Markdown as Markdown2 } from "#types";
137
- var translations = [
138
- {
139
- "en-US": {
140
- [Markdown2.Document.typename]: {
141
- "typename.label": "Document",
142
- "typename.label_zero": "Documents",
143
- "typename.label_one": "Document",
144
- "typename.label_other": "Documents",
145
- "object-name.placeholder": "New document",
146
- "add-object.label": "Add document",
147
- "rename-object.label": "Rename document",
148
- "delete-object.label": "Delete document",
149
- "object-deleted.label": "Document deleted"
150
- },
151
- [meta2.id]: {
152
- "plugin.name": "Editor",
153
- "choose-markdown-from-space-dialog.title": "Choose one or more documents to add",
154
- "empty-choose-markdown-from-space.message": "None available; try creating a new one instead?",
155
- "chooser-done.label": "Add selected",
156
- "editor.placeholder": "Start typing\u2026",
157
- "toggle-view-mode.label": "Toggle read-only",
158
- "upload-image.label": "Upload image",
159
- "fallback.title": "Untitled",
160
- "navigate-to-document.label": "Open document",
161
- "words.label": "words",
162
- "words.label_zero": "words",
163
- "words.label_one": "word",
164
- "words.label_other": "words"
165
- }
166
- }
167
- },
168
- ...editorTranslations
169
- ];
170
-
171
- // src/MarkdownPlugin.tsx
172
- var MarkdownPlugin = Plugin.define(meta3).pipe(AppPlugin.addBlueprintDefinitionModule({
173
- activate: BlueprintDefinition
174
- }), AppPlugin.addMetadataModule({
175
- metadata: {
176
- id: Markdown3.Document.typename,
177
- metadata: {
178
- // TODO(dmaretskyi): Remove label, icon and iconHue and query them of schema.
179
- label: (object) => object.name || object.fallbackName,
180
- icon: Annotation.IconAnnotation.get(Markdown3.Document).pipe(Option.getOrThrow).icon,
181
- iconHue: Annotation.IconAnnotation.get(Markdown3.Document).pipe(Option.getOrThrow).hue ?? "white",
182
- blueprints: [
183
- MarkdownBlueprint.key
184
- ],
185
- graphProps: {
186
- managesAutofocus: true
187
- },
188
- // TODO(wittjosiah): Move out of metadata.
189
- loadReferences: async (doc) => await Ref.Array.loadAll([
190
- doc.content
191
- ]),
192
- serializer,
193
- // TODO(wittjosiah): Consider how to do generic comments without these.
194
- comments: "anchored",
195
- selectionMode: "multi-range",
196
- getAnchorLabel: (doc, anchor) => {
197
- if (doc.content) {
198
- const [start, end] = anchor.split(":");
199
- return getTextInRange(createDocAccessor(doc.content.target, [
200
- "content"
201
- ]), start, end);
202
- }
203
- },
204
- createObject: (props, options) => Effect.gen(function* () {
205
- const object = Markdown3.make(props);
206
- return yield* Operation.invoke(SpaceOperation.AddObject, {
207
- object,
208
- target: options.target,
209
- hidden: true,
210
- targetNodeId: options.targetNodeId
211
- });
212
- }),
213
- scrollToAnchor: MarkdownOperation.ScrollToAnchor
214
- }
215
- }
216
- }), AppPlugin.addOperationHandlerModule({
217
- activate: OperationHandler
218
- }), AppPlugin.addSchemaModule({
219
- schema: [
220
- Markdown3.Document,
221
- Text.Text
222
- ]
223
- }), AppPlugin.addSurfaceModule({
224
- activate: ReactSurface,
225
- firesBeforeActivation: [
226
- MarkdownEvents2.SetupExtensions
227
- ]
228
- }), AppPlugin.addTranslationsModule({
229
- translations: [
230
- ...translations,
231
- ...editorTranslations2
232
- ]
233
- }), Plugin.addModule({
234
- activatesOn: AppActivationEvents.SetupSettings,
235
- activate: MarkdownSettings
236
- }), Plugin.addModule({
237
- id: "state",
238
- // TODO(wittjosiah): Does not integrate with settings store.
239
- // Should this be a different event?
240
- // Should settings store be renamed to be more generic?
241
- activatesOn: AppActivationEvents.SetupSettings,
242
- activate: MarkdownState
243
- }), Plugin.addModule({
244
- activatesOn: AppActivationEvents.AppGraphReady,
245
- activate: AppGraphSerializer
246
- }), Plugin.addModule({
247
- // TODO(wittjosiah): More relevant event?
248
- activatesOn: AppActivationEvents.AppGraphReady,
249
- activate: AnchorSort
250
- }), Plugin.make);
1
+ import "../chunk-J5LGTIGS.mjs";
251
2
 
252
3
  // src/components/index.ts
253
4
  import { lazy } from "react";
@@ -258,7 +9,7 @@ import React4, { useCallback as useCallback3, useMemo as useMemo2, useState as u
258
9
  import { createPortal as createPortal2 } from "react-dom";
259
10
  import { Surface } from "@dxos/app-framework/ui";
260
11
  import { AppSurface } from "@dxos/app-toolkit/ui";
261
- import { Obj as Obj2 } from "@dxos/echo";
12
+ import { Obj } from "@dxos/echo";
262
13
  import { DXN } from "@dxos/keys";
263
14
  import { useClient } from "@dxos/react-client";
264
15
  import { createEditorController, useEditorContext } from "@dxos/react-ui-editor";
@@ -275,10 +26,10 @@ import { useTextEditor } from "@dxos/react-ui-editor";
275
26
  import { mobileSlots, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, documentSlots, formattingListener, processEditorPayload, editorClassNames } from "@dxos/ui-editor";
276
27
  import { mx } from "@dxos/ui-theme";
277
28
  import { isTruthy } from "@dxos/util";
278
- import { meta as meta4 } from "#meta";
279
- import { MarkdownCapabilities as MarkdownCapabilities2 } from "#types";
29
+ import { meta } from "#meta";
30
+ import { MarkdownCapabilities } from "#types";
280
31
  var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attendableId, role, compact, viewMode, initialValue, editorStateStore, toolbarState, extensions, slots, onFileUpload }, forwardedRef) => {
281
- const { t } = useTranslation(meta4.id);
32
+ const { t } = useTranslation(meta.id);
282
33
  const { themeMode } = useThemeContext();
283
34
  const registry = useContext(RegistryContext);
284
35
  const updateToolbarState = useCallback((formatting) => {
@@ -336,12 +87,13 @@ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attend
336
87
  id,
337
88
  viewMode,
338
89
  themeMode,
339
- extensions
90
+ extensions,
91
+ compact
340
92
  ]);
341
93
  useImperativeHandle(forwardedRef, () => editorView, [
342
94
  editorView
343
95
  ]);
344
- const [editorViewRegistry] = useCapabilities(MarkdownCapabilities2.EditorViews);
96
+ const [editorViewRegistry] = useCapabilities(MarkdownCapabilities.EditorViews);
345
97
  useEffect(() => {
346
98
  if (editorView && editorViewRegistry) {
347
99
  editorViewRegistry.register(attendableId ?? id, editorView, id);
@@ -357,7 +109,6 @@ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attend
357
109
  return /* @__PURE__ */ React.createElement("div", {
358
110
  ...focusAttributes,
359
111
  className: mx(editorClassNames(role), classNames),
360
- role: "none",
361
112
  "data-testid": "composer.markdownRoot",
362
113
  "data-popover-collision-boundary": true,
363
114
  ref: parentRef
@@ -445,7 +196,6 @@ var MarkdownEditorToolbar = composable(({ id, role, editorView, customActions, o
445
196
  });
446
197
  }
447
198
  return /* @__PURE__ */ React3.createElement("div", {
448
- role: "none",
449
199
  className: "contents",
450
200
  ref: forwardedRef
451
201
  }, /* @__PURE__ */ React3.createElement(Editor.Toolbar, {
@@ -469,7 +219,7 @@ var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("M
469
219
  var MarkdownEditorProvider = ({ children, id, attendableId, object, settings, compact, viewMode, selectionManager, editorStateStore, extensions: extensionsProp, slashCommandGroups, onLinkQuery, onSelectObject, onAction, onFileUpload, onViewModeChange }) => {
470
220
  const [previewBlocks, setPreviewBlocks] = useState2([]);
471
221
  const previewOptions = useMemo2(() => ({
472
- db: Obj2.isObject(object) ? Obj2.getDatabase(object) : void 0,
222
+ db: Obj.isObject(object) ? Obj.getDatabase(object) : void 0,
473
223
  addBlockContainer: (block) => {
474
224
  setPreviewBlocks((prev) => [
475
225
  ...prev,
@@ -544,8 +294,8 @@ var MarkdownEditorProvider = ({ children, id, attendableId, object, settings, co
544
294
  };
545
295
  MarkdownEditorProvider.displayName = "MarkdownEditor.Provider";
546
296
  var MARKDOWN_EDITOR_CONTENT_NAME = "MarkdownEditor.Content";
547
- var MarkdownEditorContent2 = composable2(({ ...props }, _forwardedRef) => {
548
- const { id, attendableId, compact, viewMode, onFileUpload } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
297
+ var MarkdownEditorContent2 = composable2(({ compact: compactProp, ...props }, _forwardedRef) => {
298
+ const { id, attendableId, compact = compactProp, viewMode, onFileUpload } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
549
299
  const { extensions, setController, state } = useEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
550
300
  const handleRef = useCallback3((view) => {
551
301
  setController(createEditorController(view));
@@ -611,22 +361,10 @@ var MarkdownEditor = {
611
361
  };
612
362
 
613
363
  // src/components/index.ts
614
- var MarkdownSettings2 = lazy(() => import("./MarkdownSettings-62YSRY7L.mjs"));
364
+ var MarkdownSettings = lazy(() => import("../MarkdownSettings-YCTZJL5V.mjs"));
615
365
  export {
616
- Markdown_exports as Markdown,
617
- MarkdownCapabilities,
618
366
  MarkdownEditor,
619
367
  MarkdownEditorProvider,
620
- MarkdownEvents,
621
- MarkdownPlugin,
622
- MarkdownStateSchema,
623
- Settings_exports as Settings,
624
- getContentSnippet,
625
- getFallbackName,
626
- isEditorModel,
627
- isMarkdownProperties,
628
- meta,
629
- serializer,
630
- setFallbackName
368
+ MarkdownSettings
631
369
  };
632
370
  //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/index.ts", "../../../../src/components/MarkdownEditor/MarkdownEditor.tsx", "../../../../src/components/MarkdownEditor/MarkdownEditorContent.tsx", "../../../../src/components/MarkdownEditor/MarkdownEditorToolbar.tsx", "../../../../src/components/MarkdownEditor/FileUpload.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport * from './MarkdownEditor';\n\nexport const MarkdownSettings: ComponentType<any> = lazy(() => import('./MarkdownSettings'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { type EditorView } from '@codemirror/view';\nimport { type Atom } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type ReactNode, useCallback, useMemo, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { Obj } from '@dxos/echo';\nimport { DXN } from '@dxos/keys';\nimport { useClient } from '@dxos/react-client';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport {\n type EditorRootProps,\n type EditorToolbarState,\n createEditorController,\n useEditorContext,\n} from '@dxos/react-ui-editor';\nimport { type PreviewBlock, type PreviewOptions } from '@dxos/ui-editor';\nimport { composable, composableProps } from '@dxos/ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport {\n type DocumentType,\n type ExtensionsOptions,\n type UseEditorMenuOptionsProps,\n useEditorMenuOptions,\n useExtensions,\n} from '#hooks';\n\nimport {\n MarkdownEditorContent as NaturalMarkdownEditorContent,\n type MarkdownEditorContentProps as NaturalMarkdownEditorContentProps,\n} from './MarkdownEditorContent';\nimport {\n MarkdownEditorToolbar as NaturalMarkdownToolbar,\n type MarkdownEditorToolbarProps as NaturalMarkdownToolbarProps,\n} from './MarkdownEditorToolbar';\n\n//\n// Context\n//\n\ntype MarkdownEditorContextValue = {\n id: string;\n attendableId?: string;\n previewBlocks: PreviewBlock[];\n} & Pick<ExtensionsOptions, 'compact' | 'viewMode'> &\n Pick<NaturalMarkdownToolbarProps, 'onAction' | 'onFileUpload' | 'onViewModeChange'>;\n\nconst [MarkdownEditorContextProvider, useMarkdownEditorContext] =\n createContext<MarkdownEditorContextValue>('MarkdownEditor.Context');\n\n/**\n * Props to spread onto `Editor.Root` from `MarkdownEditorProvider`'s render callback.\n */\nexport type MarkdownEditorEditorRootProps = Omit<EditorRootProps, 'children'>;\n\n//\n// MarkdownEditorProvider\n//\n\nexport type MarkdownEditorProviderProps = {\n object?: DocumentType;\n extensions?: Extension[];\n children: (editorRootProps: MarkdownEditorEditorRootProps) => ReactNode;\n} & Pick<\n MarkdownEditorContextValue,\n 'id' | 'attendableId' | 'viewMode' | 'compact' | 'onAction' | 'onFileUpload' | 'onViewModeChange'\n> &\n Pick<UseEditorMenuOptionsProps, 'slashCommandGroups' | 'onLinkQuery'> &\n Pick<ExtensionsOptions, 'editorStateStore' | 'selectionManager' | 'settings' | 'onSelectObject'>;\n\nexport const MarkdownEditorProvider = ({\n children,\n id,\n attendableId,\n object,\n settings,\n compact,\n viewMode,\n selectionManager,\n editorStateStore,\n extensions: extensionsProp,\n slashCommandGroups,\n onLinkQuery,\n onSelectObject,\n onAction,\n onFileUpload,\n onViewModeChange,\n}: MarkdownEditorProviderProps) => {\n // Preview blocks.\n const [previewBlocks, setPreviewBlocks] = useState<PreviewBlock[]>([]);\n const previewOptions = useMemo<PreviewOptions>(\n () => ({\n db: Obj.isObject(object) ? Obj.getDatabase(object) : undefined,\n addBlockContainer: (block) => {\n setPreviewBlocks((prev) => [...prev, block]);\n },\n removeBlockContainer: ({ link }) => {\n setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));\n },\n }),\n [object],\n );\n\n // Context menu options (Editor.Root calls useEditorMenu with these props).\n const menuOptions = useEditorMenuOptions({ slashCommandGroups, onLinkQuery });\n\n // Core markdown extensions (popover/menu extension is added by Editor.Root).\n const coreExtensions = useExtensions({\n id,\n object,\n compact,\n viewMode,\n selectionManager,\n editorStateStore,\n previewOptions,\n settings,\n onSelectObject,\n });\n\n const extensions = useMemo(\n () => [coreExtensions, extensionsProp].filter(isNonNullable).flat(),\n [coreExtensions, extensionsProp],\n );\n\n const editorRootProps = useMemo<MarkdownEditorEditorRootProps>(\n () => ({\n extensions,\n viewMode,\n getMenu: menuOptions.getMenu,\n trigger: menuOptions.trigger,\n placeholder: menuOptions.placeholder,\n ...(menuOptions.filter !== undefined ? { filter: menuOptions.filter } : {}),\n ...(menuOptions.triggerKey !== undefined ? { triggerKey: menuOptions.triggerKey } : {}),\n }),\n [extensions, viewMode, menuOptions],\n );\n\n const markdownContextValue = useMemo<MarkdownEditorContextValue>(\n () => ({\n id,\n attendableId,\n compact,\n viewMode,\n previewBlocks,\n onAction,\n onFileUpload,\n onViewModeChange,\n }),\n [id, attendableId, compact, viewMode, previewBlocks, onAction, onFileUpload, onViewModeChange],\n );\n\n return (\n <MarkdownEditorContextProvider {...markdownContextValue}>{children(editorRootProps)}</MarkdownEditorContextProvider>\n );\n};\n\nMarkdownEditorProvider.displayName = 'MarkdownEditor.Provider';\n\n//\n// MarkdownEditor.Content\n//\n\nconst MARKDOWN_EDITOR_CONTENT_NAME = 'MarkdownEditor.Content';\n\ntype MarkdownEditorContentProps = Omit<NaturalMarkdownEditorContentProps, 'id' | 'extensions' | 'toolbarState'>;\n\nconst MarkdownEditorContent = composable<HTMLDivElement, MarkdownEditorContentProps>(\n ({ compact: compactProp, ...props }, _forwardedRef) => {\n const {\n id,\n attendableId,\n compact = compactProp,\n viewMode,\n onFileUpload,\n } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);\n const { extensions, setController, state } = useEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);\n\n const handleRef = useCallback(\n (view: EditorView | null) => {\n setController(createEditorController(view));\n },\n [setController],\n );\n\n return (\n <NaturalMarkdownEditorContent\n {...composableProps(props)}\n id={id}\n attendableId={attendableId}\n compact={compact}\n viewMode={viewMode}\n toolbarState={state as Atom.Writable<EditorToolbarState>}\n extensions={extensions}\n onFileUpload={onFileUpload}\n ref={handleRef}\n />\n );\n },\n);\n\nMarkdownEditorContent.displayName = MARKDOWN_EDITOR_CONTENT_NAME;\n\n//\n// MarkdownEditor.Toolbar\n//\n\nconst MARKDOWN_EDITOR_TOOLBAR_NAME = 'MarkdownEditor.Toolbar';\n\ntype MarkdownEditorToolbarProps = ThemedClassName<\n Omit<NaturalMarkdownToolbarProps, 'editorView' | 'onAction' | 'onFileUpload' | 'onViewModeChange' | 'id'>\n>;\n\nconst MarkdownEditorToolbar = (props: MarkdownEditorToolbarProps) => {\n const { id, attendableId, onAction, onFileUpload, onViewModeChange } =\n useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);\n\n const { controller } = useEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);\n\n return (\n <NaturalMarkdownToolbar\n {...props}\n id={attendableId ?? id}\n editorView={controller?.view ?? undefined}\n onAction={onAction}\n onFileUpload={onFileUpload}\n onViewModeChange={onViewModeChange}\n />\n );\n};\n\nMarkdownEditorToolbar.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;\n\n//\n// MarkdownEditor.Blocks (embedded objects)\n//\n\nconst MARKDOWN_EDITOR_BLOCKS_NAME = 'MarkdownEditor.Blocks';\n\ntype MarkdownEditorBlocksProps = {};\n\nconst MarkdownEditorBlocks = (_props: MarkdownEditorBlocksProps) => {\n const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);\n\n return (\n <>\n {previewBlocks.map(({ link, el }) => (\n <PreviewBlock key={link.dxn} link={link} el={el} />\n ))}\n </>\n );\n};\n\nMarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;\n\nconst PreviewBlock = ({ el, link }: PreviewBlock) => {\n const client = useClient();\n const dxn = DXN.parse(link.dxn);\n const subject = client.graph.makeRef(dxn).target;\n const data = useMemo(() => ({ subject }), [subject]);\n\n return createPortal(<Surface.Surface type={AppSurface.Card} data={data} limit={1} />, el);\n};\n\n//\n// MarkdownEditor\n//\n\n/** @private */\nexport const MarkdownEditor = {\n Content: MarkdownEditorContent,\n Toolbar: MarkdownEditorToolbar,\n Blocks: MarkdownEditorBlocks,\n};\n\nexport type { MarkdownEditorContentProps, MarkdownEditorToolbarProps, MarkdownEditorBlocksProps };\n\n/** @deprecated Use `MarkdownEditorProviderProps`. */\nexport type MarkdownEditorRootProps = MarkdownEditorProviderProps;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { type Atom, RegistryContext } from '@effect-atom/atom-react';\nimport React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo } from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\nimport { type ThemedClassName, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n type EditorMenuGroup,\n type EditorToolbarState,\n type UseTextEditorProps,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport {\n type EditorSelectionState,\n type EditorStateStore,\n type ThemeExtensionsOptions,\n mobileSlots,\n createBasicExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n dropFile,\n documentSlots,\n formattingListener,\n processEditorPayload,\n editorClassNames,\n} from '@dxos/ui-editor';\nimport { type EditorViewMode } from '@dxos/ui-editor/types';\nimport { mx } from '@dxos/ui-theme';\nimport { isTruthy } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { MarkdownCapabilities } from '#types';\n\nimport { type MarkdownEditorToolbarProps } from './MarkdownEditorToolbar';\n\nexport type MarkdownEditorContentProps = ThemedClassName<{\n id: string;\n attendableId?: string;\n role?: string;\n compact?: boolean;\n viewMode?: EditorViewMode;\n slashCommandGroups?: EditorMenuGroup[];\n editorStateStore?: EditorStateStore;\n toolbarState?: Atom.Writable<EditorToolbarState>;\n onLinkQuery?: (query?: string) => Promise<EditorMenuGroup[]>;\n}> &\n Pick<UseTextEditorProps, 'initialValue' | 'extensions'> &\n Pick<MarkdownEditorToolbarProps, 'onFileUpload'> &\n Pick<ThemeExtensionsOptions, 'slots'>;\n\n// TODO(burdon): Move controller to Root.\nexport const MarkdownEditorContent = forwardRef<EditorView | null, MarkdownEditorContentProps>(\n (\n {\n classNames,\n id,\n attendableId,\n role,\n compact,\n viewMode,\n initialValue,\n editorStateStore,\n toolbarState,\n extensions,\n slots,\n onFileUpload,\n },\n forwardedRef,\n ) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n const registry = useContext(RegistryContext);\n\n // Callback to update toolbar state atom.\n const updateToolbarState = useCallback(\n (formatting: EditorToolbarState) => {\n if (toolbarState) {\n registry.set(toolbarState, { ...registry.get(toolbarState), ...formatting });\n }\n },\n [registry, toolbarState],\n );\n\n // Restore last selection and scroll point.\n const { scrollTo, selection } = useMemo<EditorSelectionState>(() => editorStateStore?.getState(id) ?? {}, [id]);\n\n const {\n parentRef,\n view: editorView,\n focusAttributes,\n } = useTextEditor(\n () => ({\n ...(role !== 'section' && {\n id,\n scrollTo,\n selection,\n selectionEnd: true,\n }),\n initialValue,\n extensions: [\n createBasicExtensions({\n readOnly: viewMode === 'readonly',\n placeholder: t('editor.placeholder'),\n scrollPastEnd: !compact,\n search: true,\n }),\n createThemeExtensions({\n themeMode,\n slots: slots ?? (compact ? mobileSlots : documentSlots),\n syntaxHighlighting: true,\n }),\n createMarkdownExtensions(),\n toolbarState && formattingListener(updateToolbarState),\n role !== 'section' &&\n onFileUpload &&\n dropFile({\n // TODO(wittjosiah): Factor out to file uploader plugin.\n onDrop: async (view, { files }) => {\n const file = files[0];\n const info = file && onFileUpload ? await onFileUpload(file) : undefined;\n if (info) {\n processEditorPayload(view, { type: 'image', data: info.url });\n }\n },\n }),\n extensions,\n ].filter(isTruthy),\n }),\n [id, viewMode, themeMode, extensions, compact],\n );\n\n useImperativeHandle<EditorView | null, EditorView | null>(forwardedRef, () => editorView, [editorView]);\n\n const [editorViewRegistry] = useCapabilities(MarkdownCapabilities.EditorViews);\n useEffect(() => {\n if (editorView && editorViewRegistry) {\n editorViewRegistry.register(attendableId ?? id, editorView, id);\n return () => editorViewRegistry.unregister(attendableId ?? id);\n }\n }, [editorView, editorViewRegistry, attendableId, id]);\n\n useTest(editorView);\n\n return (\n <div\n {...focusAttributes}\n className={mx(editorClassNames(role), classNames)}\n data-testid='composer.markdownRoot'\n data-popover-collision-boundary={true}\n ref={parentRef}\n />\n );\n },\n);\n\n// Expose editor view for playwright tests.\n// TODO(wittjosiah): Find a better way to expose this or find a way to limit it to test runs.\nconst useTest = (view: EditorView | null) => {\n useEffect(() => {\n const composer = (window as any).composer;\n if (composer) {\n composer.editorView = view;\n }\n }, [view]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { useCallback, useState } from 'react';\n\nimport { type FileInfo } from '@dxos/app-toolkit';\nimport { Editor, type EditorToolbarProps } from '@dxos/react-ui-editor';\nimport { composable, composableProps } from '@dxos/ui-theme';\n\nimport { FileUpload, type FileUploadAction } from './FileUpload';\n\nexport type MarkdownEditorToolbarProps = {\n id: string;\n editorView?: EditorView;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n} & Pick<EditorToolbarProps, 'role' | 'customActions' | 'onAction' | 'onViewModeChange'>;\n\nexport const MarkdownEditorToolbar = composable<HTMLDivElement, MarkdownEditorToolbarProps>(\n ({ id, role, editorView, customActions, onAction, onFileUpload, onViewModeChange, ...props }, forwardedRef) => {\n const { className, ...rest } = composableProps(props);\n const [upload, setUpload] = useState<FileUploadAction | null>(null);\n const uploadRef = useCallback((next: FileUploadAction) => setUpload(() => next), []);\n\n if (!editorView) {\n return <div className={className} {...rest} ref={forwardedRef} />;\n }\n\n return (\n <div className='contents' ref={forwardedRef}>\n <Editor.Toolbar\n {...rest}\n classNames={className}\n attendableId={id}\n role={role}\n customActions={customActions}\n onAction={onAction}\n onImageUpload={upload ?? undefined}\n onViewModeChange={onViewModeChange}\n />\n\n {onFileUpload && <FileUpload ref={uploadRef} editorView={editorView} onFileUpload={onFileUpload} />}\n </div>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { forwardRef, useEffect, useImperativeHandle } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useDropzone } from 'react-dropzone';\n\nimport { type FileInfo } from '@dxos/app-toolkit';\nimport { addLink } from '@dxos/ui-editor';\n\nexport const IMAGE_FILES = ['.jpg', '.jpeg', '.png', '.gif'];\n\nexport type FileUploadAction = () => void;\n\nexport type FileUploadProps = {\n editorView?: EditorView;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n};\n\n// TODO(burdon): Factor out.\n// TODO(burdon): Move to root? (support drag into document via dropzone).\nexport const FileUpload = forwardRef<FileUploadAction, FileUploadProps>(\n ({ editorView, onFileUpload }, forwardedRef) => {\n // https://react-dropzone.js.org\n const { acceptedFiles, open, inputRef } = useDropzone({\n disabled: !onFileUpload,\n multiple: false,\n noDrag: true,\n accept: {\n 'image/*': IMAGE_FILES,\n },\n });\n\n useImperativeHandle(forwardedRef, () => open, []);\n\n useEffect(() => {\n if (editorView && acceptedFiles.length && onFileUpload) {\n requestAnimationFrame(async () => {\n // NOTE: Clone file since react-dropzone patches in a non-standard `path` property, which confuses IPFS.\n const f = acceptedFiles[0];\n const file = new File([f], f.name, {\n type: f.type,\n lastModified: f.lastModified,\n });\n\n // TODO(burdon): Factor out.\n const info = await onFileUpload(file);\n if (info) {\n addLink({ url: info.url, image: true })(editorView);\n }\n });\n }\n }, [editorView, acceptedFiles, onFileUpload]);\n\n if (!onFileUpload) {\n return null;\n }\n\n return <>{createPortal(<input ref={inputRef} />, document.body)} </>;\n },\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["lazy", "createContext", "React", "useCallback", "useMemo", "useState", "createPortal", "Surface", "AppSurface", "Obj", "DXN", "useClient", "createEditorController", "useEditorContext", "composable", "composableProps", "isNonNullable", "useEditorMenuOptions", "useExtensions", "RegistryContext", "React", "forwardRef", "useCallback", "useContext", "useEffect", "useImperativeHandle", "useMemo", "useCapabilities", "useThemeContext", "useTranslation", "useTextEditor", "mobileSlots", "createBasicExtensions", "createMarkdownExtensions", "createThemeExtensions", "dropFile", "documentSlots", "formattingListener", "processEditorPayload", "editorClassNames", "mx", "isTruthy", "meta", "MarkdownCapabilities", "MarkdownEditorContent", "classNames", "id", "attendableId", "role", "compact", "viewMode", "initialValue", "editorStateStore", "toolbarState", "extensions", "slots", "onFileUpload", "forwardedRef", "t", "themeMode", "registry", "updateToolbarState", "formatting", "set", "get", "scrollTo", "selection", "getState", "parentRef", "view", "editorView", "focusAttributes", "selectionEnd", "readOnly", "placeholder", "scrollPastEnd", "search", "syntaxHighlighting", "onDrop", "files", "file", "info", "undefined", "type", "data", "url", "filter", "editorViewRegistry", "EditorViews", "register", "unregister", "useTest", "div", "className", "data-testid", "data-popover-collision-boundary", "ref", "composer", "window", "React", "useCallback", "useState", "Editor", "composable", "composableProps", "React", "forwardRef", "useEffect", "useImperativeHandle", "createPortal", "useDropzone", "addLink", "IMAGE_FILES", "FileUpload", "editorView", "onFileUpload", "forwardedRef", "acceptedFiles", "open", "inputRef", "disabled", "multiple", "noDrag", "accept", "length", "requestAnimationFrame", "f", "file", "File", "name", "type", "lastModified", "info", "url", "image", "input", "ref", "document", "body", "MarkdownEditorToolbar", "composable", "id", "role", "editorView", "customActions", "onAction", "onFileUpload", "onViewModeChange", "props", "forwardedRef", "className", "rest", "composableProps", "upload", "setUpload", "useState", "uploadRef", "useCallback", "next", "React", "div", "ref", "Editor", "Toolbar", "classNames", "attendableId", "onImageUpload", "undefined", "FileUpload", "MarkdownEditorContextProvider", "useMarkdownEditorContext", "createContext", "MarkdownEditorProvider", "children", "id", "attendableId", "object", "settings", "compact", "viewMode", "selectionManager", "editorStateStore", "extensions", "extensionsProp", "slashCommandGroups", "onLinkQuery", "onSelectObject", "onAction", "onFileUpload", "onViewModeChange", "previewBlocks", "setPreviewBlocks", "useState", "previewOptions", "useMemo", "db", "Obj", "isObject", "getDatabase", "undefined", "addBlockContainer", "block", "prev", "removeBlockContainer", "link", "filter", "prevLink", "dxn", "menuOptions", "useEditorMenuOptions", "coreExtensions", "useExtensions", "isNonNullable", "flat", "editorRootProps", "getMenu", "trigger", "placeholder", "triggerKey", "markdownContextValue", "React", "displayName", "MARKDOWN_EDITOR_CONTENT_NAME", "MarkdownEditorContent", "composable", "compactProp", "props", "_forwardedRef", "setController", "state", "useEditorContext", "handleRef", "useCallback", "view", "createEditorController", "NaturalMarkdownEditorContent", "composableProps", "toolbarState", "ref", "MARKDOWN_EDITOR_TOOLBAR_NAME", "MarkdownEditorToolbar", "controller", "NaturalMarkdownToolbar", "editorView", "MARKDOWN_EDITOR_BLOCKS_NAME", "MarkdownEditorBlocks", "_props", "map", "el", "PreviewBlock", "key", "client", "useClient", "DXN", "parse", "subject", "graph", "makeRef", "target", "data", "createPortal", "Surface", "type", "AppSurface", "Card", "limit", "MarkdownEditor", "Content", "Toolbar", "Blocks", "MarkdownSettings", "lazy"]
7
+ }
@@ -0,0 +1,13 @@
1
+ import "../chunk-J5LGTIGS.mjs";
2
+
3
+ // src/containers/index.ts
4
+ import { lazy } from "react";
5
+ var MarkdownCard = lazy(() => import("../MarkdownCard-INMBLUL4.mjs"));
6
+ var EditableMarkdownCard = lazy(() => import("../EditableMarkdownCard-P4F4TIUM.mjs"));
7
+ var MarkdownContainer = lazy(() => import("../MarkdownContainer-2BDGD3PL.mjs"));
8
+ export {
9
+ EditableMarkdownCard,
10
+ MarkdownCard,
11
+ MarkdownContainer
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 { MarkdownContainerProps } from './MarkdownContainer';\n\nexport const MarkdownCard: ComponentType<any> = lazy(() => import('./MarkdownCard'));\nexport const EditableMarkdownCard: ComponentType<any> = lazy(() => import('./EditableMarkdownCard'));\nexport const MarkdownContainer: ComponentType<any> = lazy(() => import('./MarkdownContainer'));\n"],
5
+ "mappings": ";;;AAIA,SAA6BA,YAAY;AAIlC,IAAMC,eAAmCD,KAAK,MAAM,OAAO,8BAAA,CAAA;AAC3D,IAAME,uBAA2CF,KAAK,MAAM,OAAO,sCAAA,CAAA;AACnE,IAAMG,oBAAwCH,KAAK,MAAM,OAAO,mCAAA,CAAA;",
6
+ "names": ["lazy", "MarkdownCard", "EditableMarkdownCard", "MarkdownContainer"]
7
+ }
@@ -1,17 +1,15 @@
1
1
  import {
2
- Create
3
- } from "./chunk-QFPZONKP.mjs";
4
- import {
2
+ MarkdownOperation_exports,
5
3
  Markdown_exports
6
- } from "./chunk-4KOZEH2H.mjs";
4
+ } from "./chunk-SOLAMEK3.mjs";
7
5
  import "./chunk-J5LGTIGS.mjs";
8
6
 
9
7
  // src/operations/create.ts
10
8
  import * as Effect from "effect/Effect";
9
+ import { Operation } from "@dxos/compute";
11
10
  import { Obj } from "@dxos/echo";
12
- import { Operation } from "@dxos/operation";
13
11
  import { CollectionModel } from "@dxos/schema";
14
- var handler = Create.pipe(Operation.withHandler(Effect.fn(function* ({ name, content }) {
12
+ var handler = MarkdownOperation_exports.Create.pipe(Operation.withHandler(Effect.fn(function* ({ name, content }) {
15
13
  const object = Markdown_exports.make({
16
14
  name,
17
15
  content
@@ -27,4 +25,4 @@ var create_default = handler;
27
25
  export {
28
26
  create_default as default
29
27
  };
30
- //# sourceMappingURL=create-YL5ELZWP.mjs.map
28
+ //# sourceMappingURL=create-3PGJ2NEK.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/operations/create.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\nimport { Obj } from '@dxos/echo';\nimport { CollectionModel } from '@dxos/schema';\n\nimport { Markdown, MarkdownOperation } from '../types';\n\nconst handler: Operation.WithHandler<typeof MarkdownOperation.Create> = MarkdownOperation.Create.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ name, content }) {\n const object = Markdown.make({ name, content });\n yield* CollectionModel.add({ object });\n\n return {\n id: Obj.getDXN(object).toString(),\n };\n }),\n ),\n);\n\nexport default handler;\n"],
5
+ "mappings": ";;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,WAAW;AACpB,SAASC,uBAAuB;AAIhC,IAAMC,UAAkEC,0BAAkBC,OAAOC,KAC/FC,UAAUC,YACDC,UAAG,WAAW,EAAEC,MAAMC,QAAO,GAAE;AACpC,QAAMC,SAASC,iBAASC,KAAK;IAAEJ;IAAMC;EAAQ,CAAA;AAC7C,SAAOI,gBAAgBC,IAAI;IAAEJ;EAAO,CAAA;AAEpC,SAAO;IACLK,IAAIC,IAAIC,OAAOP,MAAAA,EAAQQ,SAAQ;EACjC;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,iBAAejB;",
6
+ "names": ["Effect", "Operation", "Obj", "CollectionModel", "handler", "MarkdownOperation", "Create", "pipe", "Operation", "withHandler", "fn", "name", "content", "object", "Markdown", "make", "CollectionModel", "add", "id", "Obj", "getDXN", "toString"]
7
+ }
@@ -1,15 +1,13 @@
1
1
  import {
2
- CreateMarkdown
3
- } from "./chunk-QFPZONKP.mjs";
4
- import {
2
+ MarkdownOperation_exports,
5
3
  Markdown_exports
6
- } from "./chunk-4KOZEH2H.mjs";
4
+ } from "./chunk-SOLAMEK3.mjs";
7
5
  import "./chunk-J5LGTIGS.mjs";
8
6
 
9
7
  // src/operations/create-markdown.ts
10
8
  import * as Effect from "effect/Effect";
11
- import { Operation } from "@dxos/operation";
12
- var handler = CreateMarkdown.pipe(Operation.withHandler(({ name, content }) => Effect.succeed({
9
+ import { Operation } from "@dxos/compute";
10
+ var handler = MarkdownOperation_exports.CreateMarkdown.pipe(Operation.withHandler(({ name, content }) => Effect.succeed({
13
11
  object: Markdown_exports.make({
14
12
  name,
15
13
  content
@@ -19,4 +17,4 @@ var create_markdown_default = handler;
19
17
  export {
20
18
  create_markdown_default as default
21
19
  };
22
- //# sourceMappingURL=create-markdown-LU5IDKMH.mjs.map
20
+ //# sourceMappingURL=create-markdown-5LS46GMH.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,27 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/capabilities/create-object.ts
4
+ import * as Effect from "effect/Effect";
5
+ import { Capability } from "@dxos/app-framework";
6
+ import { Operation } from "@dxos/compute";
7
+ import { SpaceOperation } from "@dxos/plugin-space";
8
+ import { SpaceCapabilities } from "@dxos/plugin-space";
9
+ import { Markdown } from "#types";
10
+ var create_object_default = Capability.makeModule(Effect.fnUntraced(function* () {
11
+ return Capability.contributes(SpaceCapabilities.CreateObjectEntry, {
12
+ id: Markdown.Document.typename,
13
+ createObject: (props, options) => Effect.gen(function* () {
14
+ const object = Markdown.make(props);
15
+ return yield* Operation.invoke(SpaceOperation.AddObject, {
16
+ object,
17
+ target: options.target,
18
+ hidden: true,
19
+ targetNodeId: options.targetNodeId
20
+ });
21
+ })
22
+ });
23
+ }));
24
+ export {
25
+ create_object_default as default
26
+ };
27
+ //# sourceMappingURL=create-object-ZA6VXLJJ.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 { SpaceOperation } from '@dxos/plugin-space';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\n\nimport { Markdown } from '#types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Markdown.Document.typename,\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,\n });\n }),\n });\n }),\n);\n"],
5
+ "mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAC/B,SAASC,yBAAyB;AAElC,SAASC,gBAAgB;AAEzB,IAAA,wBAAeJ,WAAWK,WACjBC,kBAAW,aAAA;AAChB,SAAON,WAAWO,YAAYJ,kBAAkBK,mBAAmB;IACjEC,IAAIL,SAASM,SAASC;IACtBC,cAAc,CAACC,OAAOC,YACbC,WAAI,aAAA;AACT,YAAMC,SAASZ,SAASa,KAAKJ,KAAAA;AAC7B,aAAO,OAAOZ,UAAUiB,OAAOhB,eAAeiB,WAAW;QACvDH;QACAI,QAAQN,QAAQM;QAChBC,QAAQ;QACRC,cAAcR,QAAQQ;MACxB,CAAA;IACF,CAAA;EACJ,CAAA;AACF,CAAA,CAAA;",
6
+ "names": ["Effect", "Capability", "Operation", "SpaceOperation", "SpaceCapabilities", "Markdown", "makeModule", "fnUntraced", "contributes", "CreateObjectEntry", "id", "Document", "typename", "createObject", "props", "options", "gen", "object", "make", "invoke", "AddObject", "target", "hidden", "targetNodeId"]
7
+ }