@dxos/plugin-markdown 0.8.4-main.72ec0f3 → 0.8.4-main.74a063c4e0

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 (365) hide show
  1. package/dist/lib/browser/MarkdownSettings-YZFNSJJY.mjs +121 -0
  2. package/dist/lib/browser/MarkdownSettings-YZFNSJJY.mjs.map +7 -0
  3. package/dist/lib/browser/blueprints/index.mjs +51 -0
  4. package/dist/lib/browser/blueprints/index.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-46WIDM4R.mjs +98 -0
  6. package/dist/lib/browser/chunk-46WIDM4R.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  8. package/dist/lib/browser/chunk-XKUKZNUS.mjs +158 -0
  9. package/dist/lib/browser/chunk-XKUKZNUS.mjs.map +7 -0
  10. package/dist/lib/browser/cli/index.mjs +39 -0
  11. package/dist/lib/browser/cli/index.mjs.map +7 -0
  12. package/dist/lib/browser/create-HSXPXCC5.mjs +30 -0
  13. package/dist/lib/browser/create-HSXPXCC5.mjs.map +7 -0
  14. package/dist/lib/browser/create-markdown-WB7DH3UF.mjs +22 -0
  15. package/dist/lib/browser/create-markdown-WB7DH3UF.mjs.map +7 -0
  16. package/dist/lib/browser/index.mjs +632 -153
  17. package/dist/lib/browser/index.mjs.map +4 -4
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/open-N6PAX6DY.mjs +21 -0
  20. package/dist/lib/browser/open-N6PAX6DY.mjs.map +7 -0
  21. package/dist/lib/browser/operations/index.mjs +14 -0
  22. package/dist/lib/browser/operations/index.mjs.map +7 -0
  23. package/dist/lib/browser/scroll-to-anchor-5M4F24AB.mjs +49 -0
  24. package/dist/lib/browser/scroll-to-anchor-5M4F24AB.mjs.map +7 -0
  25. package/dist/lib/browser/set-view-mode-NBNF2I5W.mjs +26 -0
  26. package/dist/lib/browser/set-view-mode-NBNF2I5W.mjs.map +7 -0
  27. package/dist/lib/browser/types/index.mjs +11 -5
  28. package/dist/lib/browser/update-5QIRVGTL.mjs +45 -0
  29. package/dist/lib/browser/update-5QIRVGTL.mjs.map +7 -0
  30. package/dist/lib/node-esm/MarkdownSettings-X6SDS35F.mjs +122 -0
  31. package/dist/lib/node-esm/MarkdownSettings-X6SDS35F.mjs.map +7 -0
  32. package/dist/lib/node-esm/blueprints/index.mjs +52 -0
  33. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  34. package/dist/lib/node-esm/chunk-4MSJO6IJ.mjs +99 -0
  35. package/dist/lib/node-esm/chunk-4MSJO6IJ.mjs.map +7 -0
  36. package/dist/lib/node-esm/chunk-E4BQCEXF.mjs +159 -0
  37. package/dist/lib/node-esm/chunk-E4BQCEXF.mjs.map +7 -0
  38. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  39. package/dist/lib/node-esm/cli/index.mjs +40 -0
  40. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  41. package/dist/lib/node-esm/create-6Z2KYISY.mjs +31 -0
  42. package/dist/lib/node-esm/create-6Z2KYISY.mjs.map +7 -0
  43. package/dist/lib/node-esm/create-markdown-JWQZICKY.mjs +23 -0
  44. package/dist/lib/node-esm/create-markdown-JWQZICKY.mjs.map +7 -0
  45. package/dist/lib/node-esm/index.mjs +632 -153
  46. package/dist/lib/node-esm/index.mjs.map +4 -4
  47. package/dist/lib/node-esm/meta.json +1 -1
  48. package/dist/lib/node-esm/open-DSNFRSNZ.mjs +22 -0
  49. package/dist/lib/node-esm/open-DSNFRSNZ.mjs.map +7 -0
  50. package/dist/lib/node-esm/operations/index.mjs +15 -0
  51. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  52. package/dist/lib/node-esm/scroll-to-anchor-D6SHGU2R.mjs +50 -0
  53. package/dist/lib/node-esm/scroll-to-anchor-D6SHGU2R.mjs.map +7 -0
  54. package/dist/lib/node-esm/set-view-mode-REYB4L7J.mjs +27 -0
  55. package/dist/lib/node-esm/set-view-mode-REYB4L7J.mjs.map +7 -0
  56. package/dist/lib/node-esm/types/index.mjs +11 -5
  57. package/dist/lib/node-esm/update-YMQAIKOF.mjs +46 -0
  58. package/dist/lib/node-esm/update-YMQAIKOF.mjs.map +7 -0
  59. package/dist/types/src/MarkdownPlugin.d.ts +2 -1
  60. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  61. package/dist/types/src/blueprints/index.d.ts +2 -0
  62. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  63. package/dist/types/src/blueprints/markdown-blueprint.d.ts +4 -0
  64. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -0
  65. package/dist/types/src/capabilities/anchor-sort.d.ts +4 -2
  66. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/app-graph-serializer.d.ts +3 -2
  68. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/artifact-definition.d.ts +3 -1
  70. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  71. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -6
  72. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/index.d.ts +27 -14
  74. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/node.d.ts +4 -0
  76. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  77. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  78. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  79. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  80. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/settings.d.ts +22 -2
  82. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/state.d.ts +4 -9
  84. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  85. package/dist/types/src/cli/index.d.ts +2 -0
  86. package/dist/types/src/cli/index.d.ts.map +1 -0
  87. package/dist/types/src/cli/plugin.d.ts +3 -0
  88. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  89. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +1 -1
  90. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
  91. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +18 -12
  92. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  93. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +2 -2
  94. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  95. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +16 -10
  96. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  97. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +10 -5
  98. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  99. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +4 -4
  100. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  101. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +138 -0
  102. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -0
  103. package/dist/types/src/components/MarkdownSettings/index.d.ts +1 -1
  104. package/dist/types/src/components/MarkdownSettings/index.d.ts.map +1 -1
  105. package/dist/types/src/components/index.d.ts +3 -5
  106. package/dist/types/src/components/index.d.ts.map +1 -1
  107. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts +8 -0
  108. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -0
  109. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +9 -0
  110. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
  111. package/dist/types/src/containers/MarkdownCard/index.d.ts +2 -0
  112. package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -0
  113. package/dist/types/src/containers/MarkdownCard/snippet.d.ts +15 -0
  114. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -0
  115. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts +36 -0
  116. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +1 -0
  117. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts +99 -0
  118. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +1 -0
  119. package/dist/types/src/containers/MarkdownContainer/index.d.ts +3 -0
  120. package/dist/types/src/containers/MarkdownContainer/index.d.ts.map +1 -0
  121. package/dist/types/src/containers/index.d.ts +5 -0
  122. package/dist/types/src/containers/index.d.ts.map +1 -0
  123. package/dist/types/src/hooks/index.d.ts +0 -1
  124. package/dist/types/src/hooks/index.d.ts.map +1 -1
  125. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -1
  126. package/dist/types/src/hooks/useExtensions.d.ts +8 -6
  127. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  128. package/dist/types/src/hooks/useLinkQuery.d.ts +2 -2
  129. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  130. package/dist/types/src/index.d.ts +2 -2
  131. package/dist/types/src/index.d.ts.map +1 -1
  132. package/dist/types/src/meta.d.ts +2 -2
  133. package/dist/types/src/meta.d.ts.map +1 -1
  134. package/dist/types/src/operations/create-markdown.d.ts +5 -0
  135. package/dist/types/src/operations/create-markdown.d.ts.map +1 -0
  136. package/dist/types/src/operations/create.d.ts +5 -0
  137. package/dist/types/src/operations/create.d.ts.map +1 -0
  138. package/dist/types/src/operations/create.test.d.ts.map +1 -0
  139. package/dist/types/src/operations/definitions.d.ts +64 -0
  140. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  141. package/dist/types/src/operations/index.d.ts +4 -0
  142. package/dist/types/src/operations/index.d.ts.map +1 -0
  143. package/dist/types/src/operations/open.d.ts +5 -0
  144. package/dist/types/src/operations/open.d.ts.map +1 -0
  145. package/dist/types/src/operations/scroll-to-anchor.d.ts +5 -0
  146. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -0
  147. package/dist/types/src/operations/set-view-mode.d.ts +5 -0
  148. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -0
  149. package/dist/types/src/operations/update.d.ts +5 -0
  150. package/dist/types/src/operations/update.d.ts.map +1 -0
  151. package/dist/types/src/operations/update.test.d.ts.map +1 -0
  152. package/dist/types/src/testing.d.ts +2 -2
  153. package/dist/types/src/testing.d.ts.map +1 -1
  154. package/dist/types/src/translations.d.ts +75 -34
  155. package/dist/types/src/translations.d.ts.map +1 -1
  156. package/dist/types/src/types/Markdown.d.ts +29 -30
  157. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  158. package/dist/types/src/types/Settings.d.ts +16 -0
  159. package/dist/types/src/types/Settings.d.ts.map +1 -0
  160. package/dist/types/src/types/capabilities.d.ts +51 -0
  161. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  162. package/dist/types/src/types/events.d.ts +5 -0
  163. package/dist/types/src/types/events.d.ts.map +1 -0
  164. package/dist/types/src/types/index.d.ts +4 -2
  165. package/dist/types/src/types/index.d.ts.map +1 -1
  166. package/dist/types/src/types/types.d.ts +2 -2
  167. package/dist/types/src/types/types.d.ts.map +1 -1
  168. package/dist/types/src/util.d.ts +5 -2
  169. package/dist/types/src/util.d.ts.map +1 -1
  170. package/dist/types/src/util.test.d.ts +2 -0
  171. package/dist/types/src/util.test.d.ts.map +1 -0
  172. package/dist/types/tsconfig.tsbuildinfo +1 -1
  173. package/package.json +115 -68
  174. package/src/MarkdownPlugin.tsx +74 -98
  175. package/src/blueprints/index.ts +5 -0
  176. package/src/blueprints/markdown-blueprint.ts +44 -0
  177. package/src/capabilities/anchor-sort.ts +28 -21
  178. package/src/capabilities/app-graph-serializer.ts +55 -44
  179. package/src/capabilities/artifact-definition.ts +81 -83
  180. package/src/capabilities/blueprint-definition.ts +9 -35
  181. package/src/capabilities/index.ts +12 -11
  182. package/src/capabilities/node.ts +11 -0
  183. package/src/capabilities/operation-handler.ts +16 -0
  184. package/src/capabilities/react-surface.tsx +93 -66
  185. package/src/capabilities/settings.ts +30 -18
  186. package/src/capabilities/state.ts +41 -25
  187. package/src/cli/index.ts +5 -0
  188. package/src/cli/plugin.ts +39 -0
  189. package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
  190. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +37 -38
  191. package/src/components/MarkdownEditor/MarkdownEditor.tsx +75 -45
  192. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +63 -30
  193. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +47 -52
  194. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +39 -0
  195. package/src/components/MarkdownSettings/MarkdownSettings.tsx +116 -86
  196. package/src/components/MarkdownSettings/index.ts +1 -1
  197. package/src/components/index.ts +4 -7
  198. package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +67 -0
  199. package/src/containers/MarkdownCard/MarkdownCard.tsx +57 -0
  200. package/src/containers/MarkdownCard/index.ts +5 -0
  201. package/src/containers/MarkdownCard/snippet.ts +78 -0
  202. package/src/containers/MarkdownContainer/MarkdownContainer.stories.tsx +134 -0
  203. package/src/containers/MarkdownContainer/MarkdownContainer.tsx +135 -0
  204. package/src/containers/MarkdownContainer/index.ts +6 -0
  205. package/src/containers/index.ts +10 -0
  206. package/src/hooks/index.ts +0 -1
  207. package/src/hooks/useEditorMenuOptions.ts +11 -14
  208. package/src/hooks/useExtensions.tsx +92 -108
  209. package/src/hooks/useLinkQuery.ts +46 -21
  210. package/src/index.ts +3 -2
  211. package/src/meta.ts +3 -3
  212. package/src/operations/create-markdown.ts +20 -0
  213. package/src/operations/create.conversations.json +1 -0
  214. package/src/operations/create.test.ts +98 -0
  215. package/src/operations/create.ts +27 -0
  216. package/src/operations/definitions.ts +120 -0
  217. package/src/operations/index.ts +16 -0
  218. package/src/operations/open.ts +25 -0
  219. package/src/operations/scroll-to-anchor.ts +39 -0
  220. package/src/operations/set-view-mode.ts +24 -0
  221. package/src/operations/update.conversations.json +1 -0
  222. package/src/operations/update.test.ts +215 -0
  223. package/src/operations/update.ts +51 -0
  224. package/src/testing.ts +6 -6
  225. package/src/translations.ts +49 -34
  226. package/src/types/Markdown.ts +22 -30
  227. package/src/types/Settings.ts +28 -0
  228. package/src/types/capabilities.ts +50 -0
  229. package/src/types/events.ts +14 -0
  230. package/src/types/index.ts +5 -3
  231. package/src/types/types.ts +3 -2
  232. package/src/util.test.ts +44 -0
  233. package/src/util.tsx +77 -7
  234. package/dist/lib/browser/MarkdownCard-JYMDPKV5.mjs +0 -12
  235. package/dist/lib/browser/MarkdownContainer-Y75XSVBX.mjs +0 -15
  236. package/dist/lib/browser/anchor-sort-3HGPGCOO.mjs +0 -31
  237. package/dist/lib/browser/anchor-sort-3HGPGCOO.mjs.map +0 -7
  238. package/dist/lib/browser/app-graph-serializer-POZN234F.mjs +0 -51
  239. package/dist/lib/browser/app-graph-serializer-POZN234F.mjs.map +0 -7
  240. package/dist/lib/browser/blueprint-definition-GIPKFDY5.mjs +0 -13
  241. package/dist/lib/browser/blueprint-definition-GIPKFDY5.mjs.map +0 -7
  242. package/dist/lib/browser/chunk-22XSSNBS.mjs +0 -56
  243. package/dist/lib/browser/chunk-22XSSNBS.mjs.map +0 -7
  244. package/dist/lib/browser/chunk-2MLGSYRN.mjs +0 -20
  245. package/dist/lib/browser/chunk-2MLGSYRN.mjs.map +0 -7
  246. package/dist/lib/browser/chunk-BQTYJOFB.mjs +0 -28
  247. package/dist/lib/browser/chunk-BQTYJOFB.mjs.map +0 -7
  248. package/dist/lib/browser/chunk-GH6GQSBL.mjs +0 -51
  249. package/dist/lib/browser/chunk-GH6GQSBL.mjs.map +0 -7
  250. package/dist/lib/browser/chunk-IBCHVMZW.mjs +0 -16
  251. package/dist/lib/browser/chunk-IBCHVMZW.mjs.map +0 -7
  252. package/dist/lib/browser/chunk-K3LXOU3E.mjs +0 -827
  253. package/dist/lib/browser/chunk-K3LXOU3E.mjs.map +0 -7
  254. package/dist/lib/browser/chunk-PBJLFIOX.mjs +0 -96
  255. package/dist/lib/browser/chunk-PBJLFIOX.mjs.map +0 -7
  256. package/dist/lib/browser/chunk-QYSEJ5GP.mjs +0 -79
  257. package/dist/lib/browser/chunk-QYSEJ5GP.mjs.map +0 -7
  258. package/dist/lib/browser/chunk-Y53FQREH.mjs +0 -150
  259. package/dist/lib/browser/chunk-Y53FQREH.mjs.map +0 -7
  260. package/dist/lib/browser/intent-resolver-Z5L7TXUK.mjs +0 -62
  261. package/dist/lib/browser/intent-resolver-Z5L7TXUK.mjs.map +0 -7
  262. package/dist/lib/browser/react-surface-GO5ZOKNN.mjs +0 -211
  263. package/dist/lib/browser/react-surface-GO5ZOKNN.mjs.map +0 -7
  264. package/dist/lib/browser/settings-TZUDB5EW.mjs +0 -28
  265. package/dist/lib/browser/settings-TZUDB5EW.mjs.map +0 -7
  266. package/dist/lib/browser/state-BTUKVZHY.mjs +0 -37
  267. package/dist/lib/browser/state-BTUKVZHY.mjs.map +0 -7
  268. package/dist/lib/browser/toolkit.mjs +0 -13
  269. package/dist/lib/browser/toolkit.mjs.map +0 -7
  270. package/dist/lib/node-esm/MarkdownCard-ZXPJLUYO.mjs +0 -13
  271. package/dist/lib/node-esm/MarkdownCard-ZXPJLUYO.mjs.map +0 -7
  272. package/dist/lib/node-esm/MarkdownContainer-YRDSRDCS.mjs +0 -16
  273. package/dist/lib/node-esm/MarkdownContainer-YRDSRDCS.mjs.map +0 -7
  274. package/dist/lib/node-esm/anchor-sort-PCDXEBJ2.mjs +0 -32
  275. package/dist/lib/node-esm/anchor-sort-PCDXEBJ2.mjs.map +0 -7
  276. package/dist/lib/node-esm/app-graph-serializer-NF65JYAS.mjs +0 -52
  277. package/dist/lib/node-esm/app-graph-serializer-NF65JYAS.mjs.map +0 -7
  278. package/dist/lib/node-esm/blueprint-definition-ENKJZYQS.mjs +0 -14
  279. package/dist/lib/node-esm/blueprint-definition-ENKJZYQS.mjs.map +0 -7
  280. package/dist/lib/node-esm/chunk-AMHACOXW.mjs +0 -57
  281. package/dist/lib/node-esm/chunk-AMHACOXW.mjs.map +0 -7
  282. package/dist/lib/node-esm/chunk-CT7CFX5G.mjs +0 -828
  283. package/dist/lib/node-esm/chunk-CT7CFX5G.mjs.map +0 -7
  284. package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs +0 -17
  285. package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-HAIEWPU7.mjs +0 -151
  287. package/dist/lib/node-esm/chunk-HAIEWPU7.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-KCHUTL3Q.mjs +0 -22
  289. package/dist/lib/node-esm/chunk-KCHUTL3Q.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-NGYJNQ6A.mjs +0 -80
  291. package/dist/lib/node-esm/chunk-NGYJNQ6A.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-PIOOG7A5.mjs +0 -97
  293. package/dist/lib/node-esm/chunk-PIOOG7A5.mjs.map +0 -7
  294. package/dist/lib/node-esm/chunk-PLZ7EVCT.mjs +0 -52
  295. package/dist/lib/node-esm/chunk-PLZ7EVCT.mjs.map +0 -7
  296. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs +0 -29
  297. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs.map +0 -7
  298. package/dist/lib/node-esm/intent-resolver-6B3PFQ5F.mjs +0 -63
  299. package/dist/lib/node-esm/intent-resolver-6B3PFQ5F.mjs.map +0 -7
  300. package/dist/lib/node-esm/react-surface-I46BPCWT.mjs +0 -212
  301. package/dist/lib/node-esm/react-surface-I46BPCWT.mjs.map +0 -7
  302. package/dist/lib/node-esm/settings-CJ3T5EX4.mjs +0 -29
  303. package/dist/lib/node-esm/settings-CJ3T5EX4.mjs.map +0 -7
  304. package/dist/lib/node-esm/state-K6EH7SRZ.mjs +0 -38
  305. package/dist/lib/node-esm/state-K6EH7SRZ.mjs.map +0 -7
  306. package/dist/lib/node-esm/toolkit.mjs +0 -14
  307. package/dist/lib/node-esm/toolkit.mjs.map +0 -7
  308. package/dist/types/src/capabilities/capabilities.d.ts +0 -12
  309. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  310. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  311. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  312. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +0 -7
  313. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +0 -1
  314. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +0 -9
  315. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +0 -1
  316. package/dist/types/src/components/MarkdownCard/index.d.ts +0 -4
  317. package/dist/types/src/components/MarkdownCard/index.d.ts.map +0 -1
  318. package/dist/types/src/components/MarkdownContainer.d.ts +0 -14
  319. package/dist/types/src/components/MarkdownContainer.d.ts.map +0 -1
  320. package/dist/types/src/components/MarkdownContainer.stories.d.ts +0 -58
  321. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +0 -1
  322. package/dist/types/src/components/Suggestions.stories.d.ts +0 -11
  323. package/dist/types/src/components/Suggestions.stories.d.ts.map +0 -1
  324. package/dist/types/src/events.d.ts +0 -4
  325. package/dist/types/src/events.d.ts.map +0 -1
  326. package/dist/types/src/functions/create.d.ts +0 -8
  327. package/dist/types/src/functions/create.d.ts.map +0 -1
  328. package/dist/types/src/functions/create.test.d.ts.map +0 -1
  329. package/dist/types/src/functions/index.d.ts +0 -18
  330. package/dist/types/src/functions/index.d.ts.map +0 -1
  331. package/dist/types/src/functions/open.d.ts +0 -7
  332. package/dist/types/src/functions/open.d.ts.map +0 -1
  333. package/dist/types/src/functions/update.d.ts +0 -6
  334. package/dist/types/src/functions/update.d.ts.map +0 -1
  335. package/dist/types/src/functions/update.test.d.ts.map +0 -1
  336. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +0 -6
  337. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +0 -1
  338. package/dist/types/src/toolkit.d.ts +0 -3
  339. package/dist/types/src/toolkit.d.ts.map +0 -1
  340. package/dist/types/src/types/MarkdownAction.d.ts +0 -34
  341. package/dist/types/src/types/MarkdownAction.d.ts.map +0 -1
  342. package/src/capabilities/capabilities.ts +0 -22
  343. package/src/capabilities/intent-resolver.ts +0 -58
  344. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +0 -76
  345. package/src/components/MarkdownCard/MarkdownCard.tsx +0 -89
  346. package/src/components/MarkdownCard/index.ts +0 -9
  347. package/src/components/MarkdownContainer.stories.tsx +0 -136
  348. package/src/components/MarkdownContainer.tsx +0 -113
  349. package/src/components/Suggestions.stories.tsx +0 -225
  350. package/src/events.ts +0 -11
  351. package/src/functions/create.conversations.json +0 -1
  352. package/src/functions/create.test.ts +0 -128
  353. package/src/functions/create.ts +0 -34
  354. package/src/functions/index.ts +0 -13
  355. package/src/functions/open.ts +0 -32
  356. package/src/functions/update.conversations.json +0 -1
  357. package/src/functions/update.test.ts +0 -151
  358. package/src/functions/update.ts +0 -37
  359. package/src/hooks/useSelectCurrentThread.tsx +0 -66
  360. package/src/toolkit.ts +0 -6
  361. package/src/types/MarkdownAction.ts +0 -29
  362. /package/dist/lib/browser/{MarkdownCard-JYMDPKV5.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  363. /package/dist/lib/{browser/MarkdownContainer-Y75XSVBX.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +0 -0
  364. /package/dist/types/src/{functions → operations}/create.test.d.ts +0 -0
  365. /package/dist/types/src/{functions → operations}/update.test.d.ts +0 -0
@@ -5,108 +5,106 @@
5
5
  // ISSUE(burdon): defineArtifact
6
6
  // @ts-nocheck
7
7
 
8
- import * as Function from 'effect/Function';
8
+ import * as Effect from 'effect/Effect';
9
9
  import * as Schema from 'effect/Schema';
10
10
 
11
11
  import { ToolResult, createTool } from '@dxos/ai';
12
- import { Capabilities, chain, contributes, createIntent } from '@dxos/app-framework';
12
+ import { Capabilities, Capability } from '@dxos/app-framework';
13
13
  import { ArtifactId, createArtifactElement } from '@dxos/assistant';
14
14
  import { defineArtifact } from '@dxos/blueprints';
15
15
  import { Obj } from '@dxos/echo';
16
16
  import { assertArgument, invariant } from '@dxos/invariant';
17
- import { SpaceAction } from '@dxos/plugin-space/types';
17
+ import { SpaceOperation } from '@dxos/plugin-space/operations';
18
18
  import { Filter } from '@dxos/react-client/echo';
19
19
 
20
- import { meta } from '../meta';
21
- import { Markdown, MarkdownAction } from '../types';
20
+ import { meta } from '#meta';
21
+ import { Markdown } from '#types';
22
22
 
23
- export default () => {
24
- const definition = defineArtifact({
25
- id: `artifact:${meta.id}`, // TODO(burdon): meta.id/artifact?
26
- name: meta.name,
27
- instructions: `
23
+ export default Capability.makeModule(() =>
24
+ Effect.sync(() => {
25
+ const definition = defineArtifact({
26
+ id: `artifact:${meta.id}`, // TODO(burdon): meta.id/artifact?
27
+ name: meta.name,
28
+ instructions: `
28
29
  The markdown plugin allows you to work with text documents in the current space.
29
30
  Use these tools to interact with documents, including listing available documents and retrieving their content.
30
31
  Documents are stored in Markdown format.
31
32
  `,
32
- schema: Markdown.Document,
33
- tools: [
34
- createTool(meta.id, {
35
- name: 'create',
36
- description: 'Create a new markdown document',
37
- caption: 'Creating document...',
38
- schema: Schema.Struct({
39
- name: Schema.optional(Schema.String).annotations({
40
- description: 'Optional name for the document.',
41
- }),
42
- content: Schema.String.annotations({
43
- description: 'The content of the document.',
33
+ schema: Markdown.Document,
34
+ tools: [
35
+ createTool(meta.id, {
36
+ name: 'create',
37
+ description: 'Create a new markdown document',
38
+ caption: 'Creating document...',
39
+ schema: Schema.Struct({
40
+ name: Schema.optional(Schema.String).annotations({
41
+ description: 'Optional name for the document.',
42
+ }),
43
+ content: Schema.String.annotations({
44
+ description: 'The content of the document.',
45
+ }),
44
46
  }),
45
- }),
46
- execute: async ({ name, content }, { extensions }) => {
47
- invariant(extensions?.space, 'No space');
48
- invariant(extensions?.dispatch, 'No intent dispatcher');
47
+ execute: async ({ name, content }, { extensions }) => {
48
+ invariant(extensions?.space, 'No space');
49
+ invariant(extensions?.invoke, 'No operation invoker');
49
50
 
50
- const intent = Function.pipe(
51
- createIntent(MarkdownAction.Create, {
52
- spaceId: extensions.space.id,
53
- name,
54
- content,
55
- }),
56
- chain(SpaceAction.AddObject, { target: extensions.space }),
57
- );
51
+ const document = Markdown.make({ name, content });
58
52
 
59
- const { data, error } = await extensions.dispatch(intent);
60
- if (!data || error) {
61
- return ToolResult.Error(error?.message ?? 'Failed to create document');
62
- }
53
+ const { error } = await extensions.invoke(SpaceOperation.AddObject, {
54
+ target: extensions.space,
55
+ object: document,
56
+ });
57
+ if (error) {
58
+ return ToolResult.Error(error?.message ?? 'Failed to add document to space');
59
+ }
63
60
 
64
- return ToolResult.Success(createArtifactElement(data.id));
65
- },
66
- }),
67
- createTool(meta.id, {
68
- name: 'list',
69
- description: 'List all markdown documents in the current space.',
70
- caption: 'Listing markdown documents...',
71
- schema: Schema.Struct({}),
72
- execute: async (_input, { extensions }) => {
73
- invariant(extensions?.space, 'No space');
74
- const space = extensions.space;
75
- const { objects: documents } = await space.db.query(Filter.type(Markdown.Document)).run();
76
- const documentInfo = documents.map((doc) => {
77
- invariant(Obj.instanceOf(Markdown.Document, doc));
78
- return {
79
- id: Obj.getDXN(doc).toString(),
80
- name: doc.name || doc.fallbackName || 'Unnamed Document',
81
- // TODO(ZaymonFC): Include updatedAt?
82
- };
83
- });
61
+ return ToolResult.Success(createArtifactElement(document.id));
62
+ },
63
+ }),
64
+ createTool(meta.id, {
65
+ name: 'list',
66
+ description: 'List all markdown documents in the current space.',
67
+ caption: 'Listing markdown documents...',
68
+ schema: Schema.Struct({}),
69
+ execute: async (_input, { extensions }) => {
70
+ invariant(extensions?.space, 'No space');
71
+ const space = extensions.space;
72
+ const { objects: documents } = await space.db.query(Filter.type(Markdown.Document)).run();
73
+ const documentInfo = documents.map((doc) => {
74
+ invariant(Obj.instanceOf(Markdown.Document, doc));
75
+ return {
76
+ id: Obj.getDXN(doc).toString(),
77
+ name: doc.name || doc.fallbackName || 'Unnamed Document',
78
+ // TODO(ZaymonFC): Include updatedAt?
79
+ };
80
+ });
84
81
 
85
- return ToolResult.Success(documentInfo);
86
- },
87
- }),
88
- createTool(meta.id, {
89
- name: 'inspect',
90
- description: 'Read the content of a markdown document.',
91
- caption: 'Inspecting markdown document...',
92
- schema: Schema.Struct({
93
- id: ArtifactId,
82
+ return ToolResult.Success(documentInfo);
83
+ },
94
84
  }),
95
- execute: async ({ id }, { extensions }) => {
96
- invariant(extensions?.space, 'No space');
97
- const document = await extensions.space.db.query(Filter.ids(ArtifactId.toDXN(id).toString())).first();
98
- assertArgument(Obj.instanceOf(Markdown.Document, document), 'document', 'Invalid type');
85
+ createTool(meta.id, {
86
+ name: 'inspect',
87
+ description: 'Read the content of a markdown document.',
88
+ caption: 'Inspecting markdown document...',
89
+ schema: Schema.Struct({
90
+ id: ArtifactId,
91
+ }),
92
+ execute: async ({ id }, { extensions }) => {
93
+ invariant(extensions?.space, 'No space');
94
+ const document = await extensions.space.db.query(Filter.id(ArtifactId.toDXN(id).toString())).first();
95
+ assertArgument(Obj.instanceOf(Markdown.Document, document), 'document', 'Invalid type');
99
96
 
100
- const { content } = await document.content?.load();
101
- return ToolResult.Success({
102
- id: Obj.getDXN(document).toString(),
103
- name: document.name || document.fallbackName || 'Unnamed Document',
104
- content,
105
- });
106
- },
107
- }),
108
- ],
109
- });
97
+ const { content } = await document.content?.load();
98
+ return ToolResult.Success({
99
+ id: Obj.getDXN(document).toString(),
100
+ name: document.name || document.fallbackName || 'Unnamed Document',
101
+ content,
102
+ });
103
+ },
104
+ }),
105
+ ],
106
+ });
110
107
 
111
- return contributes(Capabilities.ArtifactDefinition, definition);
112
- };
108
+ return Capability.contributes(Capabilities.ArtifactDefinition, definition);
109
+ }),
110
+ );
@@ -2,42 +2,16 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes } from '@dxos/app-framework';
6
- import { Blueprint, Template } from '@dxos/blueprints';
7
- import { type FunctionDefinition } from '@dxos/functions';
8
- import { trim } from '@dxos/util';
5
+ import * as Effect from 'effect/Effect';
9
6
 
10
- import { MarkdownFunction } from '../functions';
7
+ import { Capability } from '@dxos/app-framework';
8
+ import { AppCapabilities } from '@dxos/app-toolkit';
11
9
 
12
- const functions: FunctionDefinition[] = [MarkdownFunction.create, MarkdownFunction.open, MarkdownFunction.update];
10
+ import { MarkdownBlueprint } from '#blueprints';
13
11
 
14
- export const MARKDOWN_BLUEPRINT_KEY = 'dxos.org/blueprint/markdown';
12
+ const blueprintDefinition = Capability.makeModule<
13
+ [],
14
+ Capability.Capability<typeof AppCapabilities.BlueprintDefinition>[]
15
+ >(() => Effect.succeed([Capability.contributes(AppCapabilities.BlueprintDefinition, MarkdownBlueprint)]));
15
16
 
16
- export const MarkdownBlueprint: Blueprint.Blueprint = Blueprint.make({
17
- key: MARKDOWN_BLUEPRINT_KEY,
18
- name: 'Markdown',
19
- tools: Blueprint.toolDefinitions({ functions }),
20
- instructions: Template.make({
21
- // TODO(wittjosiah): Move example to function input schema annotation.
22
- source: trim`
23
- {{! Markdown }}
24
-
25
- You can create, read and update markdown documents.
26
- When asked to edit or update documents return updates as a set of compact diff string pairs.
27
- For each diff, respond with the smallest possible matching span.
28
-
29
- Example:
30
- ${'```'}diff
31
- - "There is a tyop in this sentence."
32
- + "There is a typo in this sentence."
33
- - "This id good."
34
- + "This sentence is really good."
35
- ${'```'}
36
- `,
37
- }),
38
- });
39
-
40
- export default () => [
41
- contributes(Capabilities.Functions, functions),
42
- contributes(Capabilities.BlueprintDefinition, MarkdownBlueprint),
43
- ];
17
+ export default blueprintDefinition;
@@ -2,15 +2,16 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { lazy } from '@dxos/app-framework';
5
+ import { Capability } from '@dxos/app-framework';
6
+ import { OperationHandlerSet } from '@dxos/operation';
6
7
 
7
- export const AnchorSort: any = lazy(() => import('./anchor-sort'));
8
- export const AppGraphSerializer = lazy(() => import('./app-graph-serializer'));
9
- export const BlueprintDefinition = lazy(() => import('./blueprint-definition'));
10
- export const IntentResolver = lazy(() => import('./intent-resolver'));
11
- export const ReactSurface = lazy(() => import('./react-surface'));
12
- export const MarkdownSettings = lazy(() => import('./settings'));
13
- export const MarkdownState = lazy(() => import('./state'));
14
-
15
- export * from './blueprint-definition';
16
- export * from './capabilities';
8
+ export const AnchorSort = Capability.lazy('AnchorSort', () => import('./anchor-sort'));
9
+ export const AppGraphSerializer = Capability.lazy('AppGraphSerializer', () => import('./app-graph-serializer'));
10
+ export const BlueprintDefinition = Capability.lazy('BlueprintDefinition', () => import('./blueprint-definition'));
11
+ export const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(
12
+ 'OperationHandler',
13
+ () => import('./operation-handler'),
14
+ );
15
+ export const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));
16
+ export const MarkdownSettings = Capability.lazy('MarkdownSettings', () => import('./settings'));
17
+ export const MarkdownState = Capability.lazy('MarkdownState', () => import('./state'));
@@ -0,0 +1,11 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capability } from '@dxos/app-framework';
6
+ import { OperationHandlerSet } from '@dxos/operation';
7
+
8
+ export const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(
9
+ 'OperationHandler',
10
+ () => import('./operation-handler'),
11
+ );
@@ -0,0 +1,16 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { Capabilities, Capability } from '@dxos/app-framework';
8
+ import type { OperationHandlerSet } from '@dxos/operation';
9
+
10
+ import { MarkdownOperationHandlerSet } from '#operations';
11
+
12
+ export default Capability.makeModule<OperationHandlerSet.OperationHandlerSet>(
13
+ Effect.fnUntraced(function* () {
14
+ return Capability.contributes(Capabilities.OperationHandler, MarkdownOperationHandlerSet);
15
+ }),
16
+ );
@@ -2,92 +2,119 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import React, { useCallback } from 'react';
5
+ import * as Effect from 'effect/Effect';
6
+ import React, { forwardRef, useCallback, useMemo } from 'react';
6
7
 
7
- import { Capabilities, contributes, createSurface } from '@dxos/app-framework';
8
- import { SurfaceCardRole, useCapability } from '@dxos/app-framework/react';
8
+ import { Capabilities, Capability } from '@dxos/app-framework';
9
+ import {
10
+ Surface,
11
+ useAtomCapability,
12
+ useAtomCapabilityState,
13
+ useCapability,
14
+ useSettingsState,
15
+ } from '@dxos/app-framework/ui';
16
+ import { AppSurface } from '@dxos/app-toolkit/ui';
9
17
  import { Obj } from '@dxos/echo';
10
- import { SettingsStore } from '@dxos/local-storage';
11
- import { AttentionCapabilities } from '@dxos/plugin-attention';
18
+ import { AttentionCapabilities } from '@dxos/plugin-attention/types';
12
19
  import { Text } from '@dxos/schema';
20
+ import { type EditorViewMode } from '@dxos/ui-editor';
13
21
 
14
- import { MarkdownCard, MarkdownContainer, type MarkdownContainerProps, MarkdownSettings } from '../components';
15
- import { meta } from '../meta';
16
- import { Markdown } from '../types';
17
- import { isEditorModel } from '../util';
22
+ import { MarkdownSettings } from '#components';
23
+ import { MarkdownCard, MarkdownContainer, type MarkdownContainerProps } from '#containers';
24
+ import { meta } from '#meta';
25
+ import { Markdown, MarkdownCapabilities } from '#types';
18
26
 
19
- import { MarkdownCapabilities } from './capabilities';
20
-
21
- export default () =>
22
- contributes(Capabilities.ReactSurface, [
23
- createSurface({
24
- id: `${meta.id}/surface/document`,
25
- role: ['article', 'section', 'tabpanel'],
26
- filter: (data): data is { subject: Markdown.Document; variant: undefined } =>
27
- Obj.instanceOf(Markdown.Document, data.subject) && !data.variant,
28
- component: ({ data, role }) => {
29
- return <Container id={Obj.getDXN(data.subject).toString()} subject={data.subject} role={role} />;
30
- },
31
- }),
32
- createSurface({
33
- id: `${meta.id}/surface/text`,
34
- role: ['article', 'section', 'tabpanel'],
35
- filter: (data): data is { id: string; subject: Text.Text } =>
36
- typeof data.id === 'string' && Obj.instanceOf(Text.Text, data.subject),
37
- component: ({ data, role }) => {
38
- return <Container id={data.id} subject={data.subject} role={role} />;
39
- },
40
- }),
41
- // TODO(burdon): Remove this variant and conform to Text.
42
- createSurface({
43
- id: `${meta.id}/surface/editor`,
44
- role: ['article', 'section'],
45
- filter: (data): data is { subject: { id: string; text: string } } => isEditorModel(data.subject),
46
- component: ({ data, role }) => {
47
- return <Container id={data.subject.id} subject={data.subject} role={role} />;
48
- },
49
- }),
50
- createSurface({
51
- id: `${meta.id}/surface/plugin-settings`,
52
- role: 'article',
53
- filter: (data): data is { subject: SettingsStore<Markdown.Settings> } =>
54
- data.subject instanceof SettingsStore && data.subject.prefix === meta.id,
55
- component: ({ data: { subject } }) => <MarkdownSettings settings={subject.value} />,
56
- }),
57
- createSurface({
58
- id: `${meta.id}/surface/preview`,
59
- role: SurfaceCardRole.literals as any,
60
- filter: (data): data is { subject: Markdown.Document | Text.Text } =>
61
- Obj.instanceOf(Markdown.Document, data.subject) || Obj.instanceOf(Text.Text, data.subject),
62
- component: ({ data, role }) => <MarkdownCard {...data} role={role as SurfaceCardRole} />,
63
- }),
64
- ]);
27
+ export default Capability.makeModule(() =>
28
+ Effect.succeed(
29
+ Capability.contributes(Capabilities.ReactSurface, [
30
+ Surface.create({
31
+ id: 'surface.document',
32
+ // TODO(wittjosiah): Split into multiple surfaces if this filter proves too strict for non-article roles.
33
+ role: ['article', 'section', 'tabpanel'],
34
+ filter: (data): data is { subject: Markdown.Document; attendableId: string; variant: undefined } =>
35
+ typeof data.attendableId === 'string' && Obj.instanceOf(Markdown.Document, data.subject) && !data.variant,
36
+ component: ({ data, role, ref }) => {
37
+ return (
38
+ <Container
39
+ id={Obj.getDXN(data.subject).toString()}
40
+ attendableId={data.attendableId}
41
+ subject={data.subject}
42
+ role={role}
43
+ ref={ref}
44
+ />
45
+ );
46
+ },
47
+ }),
48
+ Surface.create({
49
+ id: 'surface.text',
50
+ // TODO(wittjosiah): Split into multiple surfaces if this filter proves too strict for non-article roles.
51
+ role: ['article', 'section', 'tabpanel'],
52
+ // TODO(burdon): Why is attendableId required? See EventArticle.tsx
53
+ filter: AppSurface.objectArticle(Text.Text),
54
+ component: ({ data, role, ref }) => {
55
+ return (
56
+ <Container
57
+ id={Obj.getDXN(data.subject).toString()}
58
+ attendableId={data.attendableId}
59
+ subject={data.subject}
60
+ role={role}
61
+ ref={ref}
62
+ />
63
+ );
64
+ },
65
+ }),
66
+ Surface.create({
67
+ id: 'surface.plugin-settings',
68
+ role: 'article',
69
+ filter: AppSurface.settingsArticle(meta.id),
70
+ component: ({ data: { subject } }) => {
71
+ const { settings, updateSettings } = useSettingsState<Markdown.Settings>(subject.atom);
72
+ return <MarkdownSettings settings={settings} onSettingsChange={updateSettings} />;
73
+ },
74
+ }),
75
+ Surface.create({
76
+ id: 'surface.preview',
77
+ role: 'card--content',
78
+ filter: AppSurface.objectCard([Markdown.Document, Text.Text]),
79
+ component: ({ data }) => <MarkdownCard {...data} />,
80
+ }),
81
+ ]),
82
+ ),
83
+ );
65
84
 
66
85
  /**
67
86
  * Common wrapper.
68
87
  */
69
- const Container = ({ id, subject, role }: { id: string; subject: MarkdownContainerProps['object']; role: string }) => {
88
+ const Container = forwardRef<
89
+ HTMLDivElement,
90
+ AppSurface.ObjectArticleProps<Markdown.Document | Text.Text, { id: string }>
91
+ >(({ id, attendableId, subject, role }, forwardedRef) => {
70
92
  const selectionManager = useCapability(AttentionCapabilities.Selection);
71
- const settingsStore = useCapability(Capabilities.SettingsStore);
72
- const settings = settingsStore.getStore<Markdown.Settings>(meta.id)!.value;
73
- const { state, editorState, getViewMode, setViewMode } = useCapability(MarkdownCapabilities.State);
74
- const viewMode = getViewMode(id);
93
+ const settings = useAtomCapability(MarkdownCapabilities.Settings);
94
+ const [state, setState] = useAtomCapabilityState(MarkdownCapabilities.State);
95
+ const editorState = useCapability(MarkdownCapabilities.EditorState);
96
+ const extensions = useCapability(MarkdownCapabilities.Extensions);
97
+ const extensionProviders = useMemo(() => extensions.flat(), [extensions]);
98
+
99
+ const viewMode: EditorViewMode = (id && state.viewMode[id]) || settings?.defaultViewMode || 'source';
75
100
  const handleViewModeChange = useCallback<NonNullable<MarkdownContainerProps['onViewModeChange']>>(
76
- (mode) => setViewMode(id, mode),
77
- [id, setViewMode],
101
+ (mode) => setState((current) => ({ ...current, viewMode: { ...current.viewMode, [id]: mode } })),
102
+ [id, setState],
78
103
  );
79
104
 
80
105
  return (
81
106
  <MarkdownContainer
82
- id={id}
83
- object={subject}
84
107
  role={role}
108
+ subject={subject}
109
+ id={id}
110
+ attendableId={attendableId}
85
111
  settings={settings}
86
112
  selectionManager={selectionManager}
87
- extensionProviders={state.extensionProviders}
113
+ extensionProviders={extensionProviders}
88
114
  editorStateStore={editorState}
89
115
  viewMode={viewMode}
90
116
  onViewModeChange={handleViewModeChange}
117
+ ref={forwardedRef}
91
118
  />
92
119
  );
93
- };
120
+ });
@@ -2,24 +2,36 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes } from '@dxos/app-framework';
6
- import { live } from '@dxos/live-object';
5
+ import * as Effect from 'effect/Effect';
7
6
 
8
- import { meta } from '../meta';
9
- import { Markdown } from '../types';
7
+ import { Capability } from '@dxos/app-framework';
8
+ import { AppCapabilities } from '@dxos/app-toolkit';
9
+ import { createKvsStore } from '@dxos/effect';
10
10
 
11
- export default () => {
12
- const settings = live<Markdown.Settings>({
13
- defaultViewMode: 'preview',
14
- toolbar: true,
15
- numberedHeadings: true,
16
- folding: true,
17
- experimental: false,
18
- });
11
+ import { meta } from '#meta';
12
+ import { Markdown, MarkdownCapabilities } from '#types';
19
13
 
20
- return contributes(Capabilities.Settings, {
21
- prefix: meta.id,
22
- schema: Markdown.Settings,
23
- value: settings,
24
- });
25
- };
14
+ export default Capability.makeModule(() =>
15
+ Effect.sync(() => {
16
+ const settingsAtom = createKvsStore({
17
+ key: meta.id,
18
+ schema: Markdown.Settings,
19
+ defaultValue: () => ({
20
+ defaultViewMode: 'preview' as const,
21
+ toolbar: true,
22
+ numberedHeadings: true,
23
+ folding: true,
24
+ experimental: false,
25
+ }),
26
+ });
27
+
28
+ return [
29
+ Capability.contributes(MarkdownCapabilities.Settings, settingsAtom),
30
+ Capability.contributes(AppCapabilities.Settings, {
31
+ prefix: meta.id,
32
+ schema: Markdown.Settings,
33
+ atom: settingsAtom,
34
+ }),
35
+ ];
36
+ }),
37
+ );
@@ -2,30 +2,46 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';
6
- import { LocalStorageStore } from '@dxos/local-storage';
7
- import { type EditorViewMode, createEditorStateStore } from '@dxos/react-ui-editor';
8
-
9
- import { meta } from '../meta';
10
- import { type Markdown, type MarkdownPluginState } from '../types';
11
-
12
- import { MarkdownCapabilities } from './capabilities';
13
-
14
- export default (context: PluginContext) => {
15
- const state = new LocalStorageStore<MarkdownPluginState>(meta.id, { extensionProviders: [], viewMode: {} });
16
- state.prop({ key: 'viewMode', type: LocalStorageStore.json<{ [key: string]: EditorViewMode }>() });
17
-
18
- // TODO(wittjosiah): Fold into state.
19
- const editorState = createEditorStateStore(`${meta.id}/editor`);
20
-
21
- const getViewMode = (id: string) => {
22
- const defaultViewMode = context.getCapability(Capabilities.SettingsStore).getStore<Markdown.Settings>(meta.id)!
23
- .value.defaultViewMode;
24
- return (id && state.values.viewMode[id]) || defaultViewMode;
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { Capability } from '@dxos/app-framework';
8
+ import { createKvsStore } from '@dxos/effect';
9
+ import { createEditorStateStore } from '@dxos/ui-editor';
10
+
11
+ import { meta } from '#meta';
12
+ import { type EditorViewEntry, type EditorViewRegistry, MarkdownCapabilities, MarkdownStateSchema } from '#types';
13
+
14
+ const createEditorViewRegistry = (): EditorViewRegistry => {
15
+ const views = new Map<string, EditorViewEntry>();
16
+ return {
17
+ register: (attendableId, view, documentId) => {
18
+ views.set(attendableId, { view, documentId });
19
+ },
20
+ unregister: (attendableId) => {
21
+ views.delete(attendableId);
22
+ },
23
+ get: (attendableId) => views.get(attendableId),
25
24
  };
26
-
27
- const setViewMode = (id: string, viewMode: EditorViewMode) => (state.values.viewMode[id] = viewMode);
28
-
29
- // Return object with methods.
30
- return contributes(MarkdownCapabilities.State, { state: state.values, editorState, getViewMode, setViewMode });
31
25
  };
26
+
27
+ export default Capability.makeModule(
28
+ Effect.fnUntraced(function* () {
29
+ // Persisted state using KVS store.
30
+ const stateAtom = createKvsStore({
31
+ key: `${meta.id}.state`,
32
+ schema: MarkdownStateSchema,
33
+ defaultValue: () => ({ viewMode: {} }),
34
+ });
35
+
36
+ // TODO(wittjosiah): Fold into state.
37
+ const editorState = createEditorStateStore(`${meta.id}.editor`);
38
+
39
+ const editorViews = createEditorViewRegistry();
40
+
41
+ return [
42
+ Capability.contributes(MarkdownCapabilities.State, stateAtom),
43
+ Capability.contributes(MarkdownCapabilities.EditorState, editorState),
44
+ Capability.contributes(MarkdownCapabilities.EditorViews, editorViews),
45
+ ];
46
+ }),
47
+ );
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './plugin';