@dxos/plugin-markdown 0.8.4-main.3c1ae3b → 0.8.4-main.3eb6e50203

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 (357) hide show
  1. package/dist/lib/browser/MarkdownCard-7VIO7R66.mjs +11 -0
  2. package/dist/lib/browser/MarkdownContainer-6E43EDAU.mjs +11 -0
  3. package/dist/lib/browser/{anchor-sort-3MYLO74J.mjs → anchor-sort-JBAZRPE7.mjs} +8 -7
  4. package/dist/lib/browser/anchor-sort-JBAZRPE7.mjs.map +7 -0
  5. package/dist/lib/browser/app-graph-serializer-6Q5YBUPW.mjs +59 -0
  6. package/dist/lib/browser/app-graph-serializer-6Q5YBUPW.mjs.map +7 -0
  7. package/dist/lib/browser/blueprint-definition-6HOAW2E6.mjs +20 -0
  8. package/dist/lib/browser/blueprint-definition-6HOAW2E6.mjs.map +7 -0
  9. package/dist/lib/browser/blueprints/index.mjs +8 -0
  10. package/dist/lib/browser/{chunk-NXT2E2BG.mjs → chunk-2AAD3W6X.mjs} +6 -6
  11. package/dist/lib/browser/chunk-2AAD3W6X.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-4GT3QWMK.mjs +167 -0
  13. package/dist/lib/browser/chunk-4GT3QWMK.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-6SM75KL3.mjs +8 -0
  15. package/dist/lib/browser/chunk-6SM75KL3.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-7AQTX6D5.mjs +105 -0
  17. package/dist/lib/browser/chunk-7AQTX6D5.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-EZZFREFN.mjs +58 -0
  19. package/dist/lib/browser/chunk-EZZFREFN.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-HHRUUWGH.mjs +796 -0
  21. package/dist/lib/browser/chunk-HHRUUWGH.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-HQTBT5IY.mjs +176 -0
  23. package/dist/lib/browser/chunk-HQTBT5IY.mjs.map +7 -0
  24. package/dist/lib/browser/cli/index.mjs +33 -0
  25. package/dist/lib/browser/cli/index.mjs.map +7 -0
  26. package/dist/lib/browser/index.mjs +124 -129
  27. package/dist/lib/browser/index.mjs.map +4 -4
  28. package/dist/lib/browser/meta.json +1 -1
  29. package/dist/lib/browser/operation-resolver-UBQUPSXC.mjs +53 -0
  30. package/dist/lib/browser/operation-resolver-UBQUPSXC.mjs.map +7 -0
  31. package/dist/lib/browser/react-surface-7Z6AB26V.mjs +213 -0
  32. package/dist/lib/browser/react-surface-7Z6AB26V.mjs.map +7 -0
  33. package/dist/lib/browser/settings-V2XOFSD5.mjs +36 -0
  34. package/dist/lib/browser/settings-V2XOFSD5.mjs.map +7 -0
  35. package/dist/lib/browser/state-6Y3JB64H.mjs +29 -0
  36. package/dist/lib/browser/state-6Y3JB64H.mjs.map +7 -0
  37. package/dist/lib/browser/types/index.mjs +10 -3
  38. package/dist/lib/node-esm/MarkdownCard-YC3R2TQW.mjs +12 -0
  39. package/dist/lib/node-esm/MarkdownContainer-TTRUOXU6.mjs +12 -0
  40. package/dist/lib/node-esm/{anchor-sort-W4HCTYUQ.mjs → anchor-sort-IQMDZRA3.mjs} +8 -7
  41. package/dist/lib/node-esm/anchor-sort-IQMDZRA3.mjs.map +7 -0
  42. package/dist/lib/node-esm/app-graph-serializer-STEPJH57.mjs +60 -0
  43. package/dist/lib/node-esm/app-graph-serializer-STEPJH57.mjs.map +7 -0
  44. package/dist/lib/node-esm/blueprint-definition-UGDFF5OZ.mjs +21 -0
  45. package/dist/lib/node-esm/blueprint-definition-UGDFF5OZ.mjs.map +7 -0
  46. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  47. package/dist/lib/node-esm/chunk-AGZOFIK2.mjs +10 -0
  48. package/dist/lib/node-esm/chunk-AGZOFIK2.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-D46D75SK.mjs +797 -0
  50. package/dist/lib/node-esm/chunk-D46D75SK.mjs.map +7 -0
  51. package/dist/lib/node-esm/chunk-DCKB3AVD.mjs +59 -0
  52. package/dist/lib/node-esm/chunk-DCKB3AVD.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-K2IIYNCG.mjs +106 -0
  54. package/dist/lib/node-esm/chunk-K2IIYNCG.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-LOZVC2WA.mjs +177 -0
  56. package/dist/lib/node-esm/chunk-LOZVC2WA.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-I5JSQBPI.mjs → chunk-MLZQCT2N.mjs} +6 -6
  58. package/dist/lib/node-esm/chunk-MLZQCT2N.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-USKAPINH.mjs +168 -0
  60. package/dist/lib/node-esm/chunk-USKAPINH.mjs.map +7 -0
  61. package/dist/lib/node-esm/cli/index.mjs +34 -0
  62. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  63. package/dist/lib/node-esm/index.mjs +124 -129
  64. package/dist/lib/node-esm/index.mjs.map +4 -4
  65. package/dist/lib/node-esm/meta.json +1 -1
  66. package/dist/lib/node-esm/operation-resolver-QAGXDA5E.mjs +54 -0
  67. package/dist/lib/node-esm/operation-resolver-QAGXDA5E.mjs.map +7 -0
  68. package/dist/lib/node-esm/react-surface-VIXAH5CF.mjs +214 -0
  69. package/dist/lib/node-esm/react-surface-VIXAH5CF.mjs.map +7 -0
  70. package/dist/lib/node-esm/settings-EXSH2KF4.mjs +37 -0
  71. package/dist/lib/node-esm/settings-EXSH2KF4.mjs.map +7 -0
  72. package/dist/lib/node-esm/state-TVF2XT2T.mjs +30 -0
  73. package/dist/lib/node-esm/state-TVF2XT2T.mjs.map +7 -0
  74. package/dist/lib/node-esm/types/index.mjs +10 -3
  75. package/dist/types/src/MarkdownPlugin.d.ts +2 -1
  76. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  77. package/dist/types/src/blueprints/functions/create.d.ts.map +1 -0
  78. package/dist/types/src/blueprints/functions/create.test.d.ts.map +1 -0
  79. package/dist/types/src/blueprints/functions/index.d.ts +4 -0
  80. package/dist/types/src/blueprints/functions/index.d.ts.map +1 -0
  81. package/dist/types/src/blueprints/functions/open.d.ts +14 -0
  82. package/dist/types/src/blueprints/functions/open.d.ts.map +1 -0
  83. package/dist/types/src/blueprints/functions/update.d.ts +19 -0
  84. package/dist/types/src/blueprints/functions/update.d.ts.map +1 -0
  85. package/dist/types/src/blueprints/functions/update.test.d.ts.map +1 -0
  86. package/dist/types/src/blueprints/index.d.ts +2 -0
  87. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  88. package/dist/types/src/blueprints/markdown-blueprint.d.ts +21 -0
  89. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -0
  90. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts +6 -0
  91. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/anchor-sort/index.d.ts +3 -0
  93. package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +5 -0
  95. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +1 -0
  96. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +3 -0
  97. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +1 -0
  98. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +5 -0
  99. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -0
  100. package/dist/types/src/capabilities/artifact-definition/index.d.ts +3 -0
  101. package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +1 -0
  102. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +11 -0
  103. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  104. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  105. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  106. package/dist/types/src/capabilities/index.d.ts +6 -13
  107. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  109. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  110. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  111. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  112. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  113. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  114. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  115. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  116. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  117. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  118. package/dist/types/src/capabilities/settings/settings.d.ts +7 -0
  119. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  120. package/dist/types/src/capabilities/state/index.d.ts +3 -0
  121. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  122. package/dist/types/src/capabilities/state/state.d.ts +5 -0
  123. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  124. package/dist/types/src/cli/index.d.ts +2 -0
  125. package/dist/types/src/cli/index.d.ts.map +1 -0
  126. package/dist/types/src/cli/plugin.d.ts +3 -0
  127. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  128. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +4 -16
  129. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  130. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +5 -5
  131. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
  132. package/dist/types/src/components/MarkdownContainer.d.ts +16 -7
  133. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/MarkdownContainer.stories.d.ts +29 -0
  135. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +1 -1
  137. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
  138. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +8 -7
  139. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  140. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  141. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +6 -5
  142. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  143. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +3 -3
  144. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  145. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +4 -2
  146. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  147. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
  148. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -1
  149. package/dist/types/src/hooks/useExtensions.d.ts +3 -3
  150. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  151. package/dist/types/src/hooks/useLinkQuery.d.ts +2 -2
  152. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  153. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +1 -1
  154. package/dist/types/src/index.d.ts +2 -2
  155. package/dist/types/src/index.d.ts.map +1 -1
  156. package/dist/types/src/meta.d.ts +2 -2
  157. package/dist/types/src/meta.d.ts.map +1 -1
  158. package/dist/types/src/translations.d.ts +29 -0
  159. package/dist/types/src/translations.d.ts.map +1 -1
  160. package/dist/types/src/types/Markdown.d.ts +12 -12
  161. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  162. package/dist/types/src/types/MarkdownAction.d.ts +62 -30
  163. package/dist/types/src/types/MarkdownAction.d.ts.map +1 -1
  164. package/dist/types/src/types/capabilities.d.ts +22 -0
  165. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  166. package/dist/types/src/types/events.d.ts +5 -0
  167. package/dist/types/src/types/events.d.ts.map +1 -0
  168. package/dist/types/src/types/index.d.ts +3 -0
  169. package/dist/types/src/types/index.d.ts.map +1 -1
  170. package/dist/types/src/types/types.d.ts +2 -2
  171. package/dist/types/src/types/types.d.ts.map +1 -1
  172. package/dist/types/src/util.d.ts.map +1 -1
  173. package/dist/types/tsconfig.tsbuildinfo +1 -1
  174. package/package.json +88 -66
  175. package/src/MarkdownPlugin.tsx +64 -76
  176. package/src/blueprints/functions/create.conversations.json +1 -0
  177. package/src/blueprints/functions/create.test.ts +92 -0
  178. package/src/{functions → blueprints/functions}/create.ts +4 -3
  179. package/src/blueprints/functions/index.ts +7 -0
  180. package/src/{functions → blueprints/functions}/open.ts +10 -10
  181. package/src/blueprints/functions/update.conversations.json +1 -0
  182. package/src/blueprints/functions/update.test.ts +215 -0
  183. package/src/blueprints/functions/update.ts +79 -0
  184. package/src/blueprints/index.ts +5 -0
  185. package/src/blueprints/markdown-blueprint.ts +38 -0
  186. package/src/capabilities/anchor-sort/anchor-sort.ts +37 -0
  187. package/src/capabilities/anchor-sort/index.ts +7 -0
  188. package/src/capabilities/app-graph-serializer/app-graph-serializer.ts +60 -0
  189. package/src/capabilities/app-graph-serializer/index.ts +7 -0
  190. package/src/capabilities/artifact-definition/artifact-definition.ts +110 -0
  191. package/src/capabilities/artifact-definition/index.ts +7 -0
  192. package/src/capabilities/blueprint-definition/blueprint-definition.ts +26 -0
  193. package/src/capabilities/blueprint-definition/index.ts +7 -0
  194. package/src/capabilities/index.ts +6 -11
  195. package/src/capabilities/operation-resolver/index.ts +7 -0
  196. package/src/capabilities/operation-resolver/operation-resolver.ts +45 -0
  197. package/src/capabilities/react-surface/index.ts +7 -0
  198. package/src/capabilities/react-surface/react-surface.tsx +102 -0
  199. package/src/capabilities/settings/index.ts +7 -0
  200. package/src/capabilities/settings/settings.ts +37 -0
  201. package/src/capabilities/state/index.ts +7 -0
  202. package/src/capabilities/state/state.ts +31 -0
  203. package/src/cli/index.ts +5 -0
  204. package/src/cli/plugin.ts +30 -0
  205. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +26 -44
  206. package/src/components/MarkdownCard/MarkdownCard.tsx +23 -55
  207. package/src/components/MarkdownContainer.stories.tsx +49 -62
  208. package/src/components/MarkdownContainer.tsx +37 -32
  209. package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
  210. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +17 -18
  211. package/src/components/MarkdownEditor/MarkdownEditor.tsx +26 -21
  212. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +22 -12
  213. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +6 -3
  214. package/src/components/MarkdownSettings/MarkdownSettings.tsx +48 -34
  215. package/src/components/Suggestions.stories.tsx +22 -33
  216. package/src/hooks/useEditorMenuOptions.ts +10 -13
  217. package/src/hooks/useExtensions.tsx +24 -28
  218. package/src/hooks/useLinkQuery.ts +12 -12
  219. package/src/hooks/useSelectCurrentThread.tsx +37 -42
  220. package/src/index.ts +3 -2
  221. package/src/meta.ts +2 -2
  222. package/src/testing.ts +1 -1
  223. package/src/translations.ts +2 -0
  224. package/src/types/Markdown.ts +2 -2
  225. package/src/types/MarkdownAction.ts +48 -18
  226. package/src/types/capabilities.ts +38 -0
  227. package/src/types/events.ts +14 -0
  228. package/src/types/index.ts +3 -0
  229. package/src/types/types.ts +3 -2
  230. package/src/util.tsx +3 -1
  231. package/dist/lib/browser/MarkdownCard-THZFDOOV.mjs +0 -13
  232. package/dist/lib/browser/MarkdownContainer-VKPSVI5F.mjs +0 -16
  233. package/dist/lib/browser/anchor-sort-3MYLO74J.mjs.map +0 -7
  234. package/dist/lib/browser/app-graph-serializer-BZJ4TQOE.mjs +0 -51
  235. package/dist/lib/browser/app-graph-serializer-BZJ4TQOE.mjs.map +0 -7
  236. package/dist/lib/browser/blueprint-definition-R5T6LTPN.mjs +0 -13
  237. package/dist/lib/browser/chunk-56SUMOIZ.mjs +0 -734
  238. package/dist/lib/browser/chunk-56SUMOIZ.mjs.map +0 -7
  239. package/dist/lib/browser/chunk-6OMOMVO7.mjs +0 -107
  240. package/dist/lib/browser/chunk-6OMOMVO7.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-BQTYJOFB.mjs +0 -28
  242. package/dist/lib/browser/chunk-BQTYJOFB.mjs.map +0 -7
  243. package/dist/lib/browser/chunk-CN35HEBX.mjs +0 -79
  244. package/dist/lib/browser/chunk-CN35HEBX.mjs.map +0 -7
  245. package/dist/lib/browser/chunk-IBCHVMZW.mjs +0 -16
  246. package/dist/lib/browser/chunk-IBCHVMZW.mjs.map +0 -7
  247. package/dist/lib/browser/chunk-KCOBZZIL.mjs +0 -111
  248. package/dist/lib/browser/chunk-KCOBZZIL.mjs.map +0 -7
  249. package/dist/lib/browser/chunk-KPH4ZPQN.mjs +0 -99
  250. package/dist/lib/browser/chunk-KPH4ZPQN.mjs.map +0 -7
  251. package/dist/lib/browser/chunk-NXT2E2BG.mjs.map +0 -7
  252. package/dist/lib/browser/chunk-RJPOHSYN.mjs +0 -152
  253. package/dist/lib/browser/chunk-RJPOHSYN.mjs.map +0 -7
  254. package/dist/lib/browser/chunk-U6Y53XZK.mjs +0 -20
  255. package/dist/lib/browser/chunk-U6Y53XZK.mjs.map +0 -7
  256. package/dist/lib/browser/intent-resolver-55ASQRIW.mjs +0 -62
  257. package/dist/lib/browser/intent-resolver-55ASQRIW.mjs.map +0 -7
  258. package/dist/lib/browser/react-surface-Q3C5H2KT.mjs +0 -215
  259. package/dist/lib/browser/react-surface-Q3C5H2KT.mjs.map +0 -7
  260. package/dist/lib/browser/settings-G3ZOXJQY.mjs +0 -28
  261. package/dist/lib/browser/settings-G3ZOXJQY.mjs.map +0 -7
  262. package/dist/lib/browser/state-BTUKVZHY.mjs +0 -37
  263. package/dist/lib/browser/state-BTUKVZHY.mjs.map +0 -7
  264. package/dist/lib/browser/toolkit.mjs +0 -13
  265. package/dist/lib/node-esm/MarkdownCard-QHSSZGIY.mjs +0 -14
  266. package/dist/lib/node-esm/MarkdownContainer-G3ZQJS7A.mjs +0 -17
  267. package/dist/lib/node-esm/anchor-sort-W4HCTYUQ.mjs.map +0 -7
  268. package/dist/lib/node-esm/app-graph-serializer-OCTHXWLF.mjs +0 -52
  269. package/dist/lib/node-esm/app-graph-serializer-OCTHXWLF.mjs.map +0 -7
  270. package/dist/lib/node-esm/blueprint-definition-2JV3WV22.mjs +0 -14
  271. package/dist/lib/node-esm/blueprint-definition-2JV3WV22.mjs.map +0 -7
  272. package/dist/lib/node-esm/chunk-6F6FCTIA.mjs +0 -100
  273. package/dist/lib/node-esm/chunk-6F6FCTIA.mjs.map +0 -7
  274. package/dist/lib/node-esm/chunk-C5KXP2ZE.mjs +0 -153
  275. package/dist/lib/node-esm/chunk-C5KXP2ZE.mjs.map +0 -7
  276. package/dist/lib/node-esm/chunk-FR6RW6DH.mjs +0 -735
  277. package/dist/lib/node-esm/chunk-FR6RW6DH.mjs.map +0 -7
  278. package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs +0 -17
  279. package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs.map +0 -7
  280. package/dist/lib/node-esm/chunk-I5JSQBPI.mjs.map +0 -7
  281. package/dist/lib/node-esm/chunk-KM7KYV6W.mjs +0 -22
  282. package/dist/lib/node-esm/chunk-KM7KYV6W.mjs.map +0 -7
  283. package/dist/lib/node-esm/chunk-KYWXTMKI.mjs +0 -108
  284. package/dist/lib/node-esm/chunk-KYWXTMKI.mjs.map +0 -7
  285. package/dist/lib/node-esm/chunk-R3SGV4ES.mjs +0 -112
  286. package/dist/lib/node-esm/chunk-R3SGV4ES.mjs.map +0 -7
  287. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs +0 -29
  288. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs.map +0 -7
  289. package/dist/lib/node-esm/chunk-YFRTKXTB.mjs +0 -80
  290. package/dist/lib/node-esm/chunk-YFRTKXTB.mjs.map +0 -7
  291. package/dist/lib/node-esm/intent-resolver-DTBVWCNO.mjs +0 -63
  292. package/dist/lib/node-esm/intent-resolver-DTBVWCNO.mjs.map +0 -7
  293. package/dist/lib/node-esm/react-surface-QWRT4SD6.mjs +0 -216
  294. package/dist/lib/node-esm/react-surface-QWRT4SD6.mjs.map +0 -7
  295. package/dist/lib/node-esm/settings-IBFFCGNL.mjs +0 -29
  296. package/dist/lib/node-esm/settings-IBFFCGNL.mjs.map +0 -7
  297. package/dist/lib/node-esm/state-K6EH7SRZ.mjs +0 -38
  298. package/dist/lib/node-esm/state-K6EH7SRZ.mjs.map +0 -7
  299. package/dist/lib/node-esm/toolkit.mjs +0 -14
  300. package/dist/lib/node-esm/toolkit.mjs.map +0 -7
  301. package/dist/types/src/capabilities/anchor-sort.d.ts +0 -4
  302. package/dist/types/src/capabilities/anchor-sort.d.ts.map +0 -1
  303. package/dist/types/src/capabilities/app-graph-serializer.d.ts +0 -4
  304. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +0 -1
  305. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -3
  306. package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
  307. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -7
  308. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  309. package/dist/types/src/capabilities/capabilities.d.ts +0 -12
  310. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  311. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  312. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  313. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  314. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  315. package/dist/types/src/capabilities/settings.d.ts +0 -4
  316. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  317. package/dist/types/src/capabilities/state.d.ts +0 -11
  318. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  319. package/dist/types/src/events.d.ts +0 -4
  320. package/dist/types/src/events.d.ts.map +0 -1
  321. package/dist/types/src/functions/create.d.ts.map +0 -1
  322. package/dist/types/src/functions/create.test.d.ts.map +0 -1
  323. package/dist/types/src/functions/index.d.ts +0 -18
  324. package/dist/types/src/functions/index.d.ts.map +0 -1
  325. package/dist/types/src/functions/open.d.ts +0 -7
  326. package/dist/types/src/functions/open.d.ts.map +0 -1
  327. package/dist/types/src/functions/update.d.ts +0 -6
  328. package/dist/types/src/functions/update.d.ts.map +0 -1
  329. package/dist/types/src/functions/update.test.d.ts.map +0 -1
  330. package/dist/types/src/toolkit.d.ts +0 -3
  331. package/dist/types/src/toolkit.d.ts.map +0 -1
  332. package/src/capabilities/anchor-sort.ts +0 -31
  333. package/src/capabilities/app-graph-serializer.ts +0 -54
  334. package/src/capabilities/artifact-definition.ts +0 -112
  335. package/src/capabilities/blueprint-definition.ts +0 -43
  336. package/src/capabilities/capabilities.ts +0 -22
  337. package/src/capabilities/intent-resolver.ts +0 -58
  338. package/src/capabilities/react-surface.tsx +0 -97
  339. package/src/capabilities/settings.ts +0 -25
  340. package/src/capabilities/state.ts +0 -31
  341. package/src/events.ts +0 -11
  342. package/src/functions/create.conversations.json +0 -1
  343. package/src/functions/create.test.ts +0 -124
  344. package/src/functions/index.ts +0 -13
  345. package/src/functions/update.conversations.json +0 -1
  346. package/src/functions/update.test.ts +0 -147
  347. package/src/functions/update.ts +0 -38
  348. package/src/toolkit.ts +0 -6
  349. /package/dist/lib/browser/{MarkdownCard-THZFDOOV.mjs.map → MarkdownCard-7VIO7R66.mjs.map} +0 -0
  350. /package/dist/lib/browser/{MarkdownContainer-VKPSVI5F.mjs.map → MarkdownContainer-6E43EDAU.mjs.map} +0 -0
  351. /package/dist/lib/browser/{blueprint-definition-R5T6LTPN.mjs.map → blueprints/index.mjs.map} +0 -0
  352. /package/dist/lib/{browser/toolkit.mjs.map → node-esm/MarkdownCard-YC3R2TQW.mjs.map} +0 -0
  353. /package/dist/lib/node-esm/{MarkdownCard-QHSSZGIY.mjs.map → MarkdownContainer-TTRUOXU6.mjs.map} +0 -0
  354. /package/dist/lib/node-esm/{MarkdownContainer-G3ZQJS7A.mjs.map → blueprints/index.mjs.map} +0 -0
  355. /package/dist/types/src/{functions → blueprints/functions}/create.d.ts +0 -0
  356. /package/dist/types/src/{functions → blueprints/functions}/create.test.d.ts +0 -0
  357. /package/dist/types/src/{functions → blueprints/functions}/update.test.d.ts +0 -0
@@ -6,41 +6,46 @@ import { type Extension } from '@codemirror/state';
6
6
  import { Atom } from '@effect-atom/atom-react';
7
7
  import React, { forwardRef, useMemo } from 'react';
8
8
 
9
- import { Capabilities } from '@dxos/app-framework';
10
- import { useAppGraph, useCapabilities } from '@dxos/app-framework/react';
9
+ import { useCapabilities } from '@dxos/app-framework/ui';
10
+ import { AppCapabilities } from '@dxos/app-toolkit';
11
+ import { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';
12
+ import { useAppGraph } from '@dxos/app-toolkit/ui';
11
13
  import { Obj } from '@dxos/echo';
12
- import { getSpace } from '@dxos/react-client/echo';
14
+ import { useActionRunner } from '@dxos/plugin-graph';
15
+ import { useObject } from '@dxos/react-client/echo';
16
+ import { Layout } from '@dxos/react-ui';
13
17
  import { type SelectionManager } from '@dxos/react-ui-attention';
14
- import { StackItem } from '@dxos/react-ui-stack';
15
18
  import { Text } from '@dxos/schema';
16
19
 
17
- import { MarkdownCapabilities } from '../capabilities';
18
- import { type DocumentType, useLinkQuery } from '../hooks';
19
- import { Markdown, type MarkdownPluginState } from '../types';
20
+ import { useLinkQuery } from '../hooks';
21
+ import { Markdown, MarkdownCapabilities, type MarkdownPluginState } from '../types';
20
22
 
21
23
  import { MarkdownEditor, type MarkdownEditorContentProps, type MarkdownEditorRootProps } from './MarkdownEditor';
22
24
 
23
- export type MarkdownContainerProps = {
24
- role?: string;
25
- object: DocumentType;
26
- settings: Markdown.Settings;
27
- selectionManager?: SelectionManager;
28
- } & (Pick<MarkdownEditorRootProps, 'id' | 'viewMode' | 'onViewModeChange'> &
29
- Pick<MarkdownEditorContentProps, 'editorStateStore'> &
30
- Pick<MarkdownPluginState, 'extensionProviders'>);
25
+ export type MarkdownContainerProps = SurfaceComponentProps<
26
+ Markdown.Document | Text.Text,
27
+ {
28
+ id: string;
29
+ settings: Markdown.Settings;
30
+ selectionManager?: SelectionManager;
31
+ } & Pick<MarkdownEditorRootProps, 'viewMode' | 'onViewModeChange'> &
32
+ Pick<MarkdownEditorContentProps, 'editorStateStore'> &
33
+ Pick<MarkdownPluginState, 'extensionProviders'>
34
+ >;
31
35
 
32
36
  export const MarkdownContainer = forwardRef<HTMLDivElement, MarkdownContainerProps>(
33
- ({ id, role, object, settings, extensionProviders, ...props }, forwardedRef) => {
34
- const space = getSpace(object);
35
- const isDocument = Obj.instanceOf(Markdown.Document, object);
36
- const isText = Obj.instanceOf(Text.Text, object);
37
- const attendableId = isDocument ? Obj.getDXN(object).toString() : undefined;
37
+ ({ role, subject: object, id, settings, extensionProviders, ...props }, forwardedRef) => {
38
+ const db = Obj.isObject(object) ? Obj.getDatabase(object) : undefined;
39
+ const attendableId = Obj.instanceOf(Markdown.Document, object) ? Obj.getDXN(object).toString() : undefined;
40
+ const [docContent] = useObject(Obj.instanceOf(Markdown.Document, object) ? object.content : undefined, 'content');
41
+ const [textContent] = useObject(Obj.instanceOf(Text.Text, object) ? object : undefined, 'content');
42
+ const initialValue = docContent ?? textContent;
38
43
 
39
44
  // Extensions from other plugins.
40
45
  // TODO(burdon): Document MarkdownPluginState.extensionProviders
41
46
  const otherExtensionProviders = useCapabilities(MarkdownCapabilities.Extensions);
42
47
  const extensions = useMemo<Extension[]>(() => {
43
- if (!Obj.instanceOf(Markdown.Document, object)) {
48
+ if (!Obj.instanceOf(Markdown.Document, object) && !Obj.instanceOf(Text.Text, object)) {
44
49
  return [];
45
50
  }
46
51
 
@@ -59,6 +64,7 @@ export const MarkdownContainer = forwardRef<HTMLDivElement, MarkdownContainerPro
59
64
 
60
65
  // Toolbar actions from app graph.
61
66
  const { graph } = useAppGraph();
67
+ const runAction = useActionRunner();
62
68
  const customActions = useMemo(() => {
63
69
  return Atom.make((get) => {
64
70
  const actions = get(graph.actions(id));
@@ -69,24 +75,26 @@ export const MarkdownContainer = forwardRef<HTMLDivElement, MarkdownContainerPro
69
75
  }, [graph]);
70
76
 
71
77
  // File upload.
72
- const [upload] = useCapabilities(Capabilities.FileUploader);
78
+ const [upload] = useCapabilities(AppCapabilities.FileUploader);
73
79
  const handleFileUpload = useMemo(() => {
74
- if (!space || !upload) {
80
+ if (!db || !upload) {
75
81
  return undefined;
76
82
  }
77
83
 
78
- return async (file: File) => upload(space, file);
79
- }, [space, upload]);
84
+ return async (file: File) => upload(db, file);
85
+ }, [db, upload]);
80
86
 
81
87
  // Query for @ refs.
82
- const handleLinkQuery = useLinkQuery(space);
88
+ const handleLinkQuery = useLinkQuery(db);
83
89
 
84
90
  return (
85
- <StackItem.Content toolbar={settings.toolbar} ref={forwardedRef}>
91
+ <Layout.Main toolbar={settings.toolbar} ref={forwardedRef}>
86
92
  <MarkdownEditor.Root
87
93
  id={attendableId ?? id}
88
94
  object={object}
89
95
  extensions={extensions}
96
+ settings={settings}
97
+ onAction={runAction}
90
98
  onFileUpload={handleFileUpload}
91
99
  onLinkQuery={handleLinkQuery}
92
100
  {...props}
@@ -94,13 +102,10 @@ export const MarkdownContainer = forwardRef<HTMLDivElement, MarkdownContainerPro
94
102
  {settings.toolbar && (
95
103
  <MarkdownEditor.Toolbar id={attendableId ?? id} role={role} customActions={customActions} />
96
104
  )}
97
- <MarkdownEditor.Content
98
- initialValue={isDocument ? object.content?.target?.content : isText ? object.content : object.text}
99
- scrollPastEnd={role === 'article'}
100
- />
105
+ <MarkdownEditor.Content initialValue={initialValue} scrollPastEnd={role === 'article'} />
101
106
  <MarkdownEditor.Blocks />
102
107
  </MarkdownEditor.Root>
103
- </StackItem.Content>
108
+ </Layout.Main>
104
109
  );
105
110
  },
106
111
  );
@@ -7,8 +7,8 @@ import React, { forwardRef, useEffect, useImperativeHandle } from 'react';
7
7
  import { createPortal } from 'react-dom';
8
8
  import { useDropzone } from 'react-dropzone';
9
9
 
10
- import { type FileInfo } from '@dxos/app-framework';
11
- import { addLink } from '@dxos/react-ui-editor';
10
+ import { type FileInfo } from '@dxos/app-toolkit';
11
+ import { addLink } from '@dxos/ui-editor';
12
12
 
13
13
  export const IMAGE_FILES = ['.jpg', '.jpeg', '.png', '.gif'];
14
14
 
@@ -3,18 +3,18 @@
3
3
  //
4
4
 
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import * as Effect from 'effect/Effect';
6
7
  import React from 'react';
7
8
 
8
- import { IntentPlugin } from '@dxos/app-framework';
9
9
  import { withPluginManager } from '@dxos/app-framework/testing';
10
10
  import { Filter, Obj } from '@dxos/echo';
11
- import { AttentionPlugin } from '@dxos/plugin-attention';
12
11
  import { ClientPlugin } from '@dxos/plugin-client';
12
+ import { corePlugins } from '@dxos/plugin-testing';
13
13
  import { useQuery, useSpace } from '@dxos/react-client/echo';
14
+ import { Layout } from '@dxos/react-ui';
14
15
  import { withLayout, withTheme } from '@dxos/react-ui/testing';
15
16
  import { useAttentionAttributes } from '@dxos/react-ui-attention';
16
17
  import { translations as editorTranslations } from '@dxos/react-ui-editor';
17
- import { StackItem } from '@dxos/react-ui-stack';
18
18
 
19
19
  import { translations } from '../../translations';
20
20
  import { Markdown } from '../../types';
@@ -30,19 +30,18 @@ const DefaultStory = (props: StoryProps) => {
30
30
  const [doc] = useQuery(space?.db, Filter.type(Markdown.Document));
31
31
  const id = doc && Obj.getDXN(doc).toString();
32
32
  const attentionAttrs = useAttentionAttributes(id);
33
-
34
33
  if (!id) {
35
34
  return null;
36
35
  }
37
36
 
38
37
  return (
39
38
  <div className='contents' {...attentionAttrs}>
40
- <StackItem.Content toolbar>
39
+ <Layout.Main toolbar>
41
40
  <MarkdownEditor.Root id={id} object={doc} {...props}>
42
41
  <MarkdownEditor.Toolbar id={id} />
43
42
  <MarkdownEditor.Content />
44
43
  </MarkdownEditor.Root>
45
- </StackItem.Content>
44
+ </Layout.Main>
46
45
  </div>
47
46
  );
48
47
  };
@@ -52,23 +51,23 @@ const meta: Meta<typeof DefaultStory> = {
52
51
  component: DefaultStory,
53
52
  render: DefaultStory as any,
54
53
  decorators: [
55
- withTheme,
56
- withLayout({ container: 'column' }),
57
- // TODO(burdon): Create story without client.
54
+ withTheme(),
55
+ withLayout({ layout: 'column' }),
58
56
  withPluginManager({
59
57
  plugins: [
58
+ ...corePlugins(),
60
59
  ClientPlugin({
61
60
  types: [Markdown.Document],
62
- onClientInitialized: async ({ client }) => {
63
- await client.halo.createIdentity();
64
- await client.spaces.waitUntilReady();
65
- const space = client.spaces.default;
66
- await space.waitUntilReady();
67
- space.db.add(Markdown.make({ content }));
68
- },
61
+ onClientInitialized: ({ client }) =>
62
+ Effect.gen(function* () {
63
+ yield* Effect.promise(() => client.halo.createIdentity());
64
+ yield* Effect.promise(() => client.spaces.waitUntilReady());
65
+ const space = client.spaces.default;
66
+ yield* Effect.promise(() => space.waitUntilReady());
67
+
68
+ space.db.add(Markdown.make({ content }));
69
+ }),
69
70
  }),
70
- IntentPlugin(),
71
- AttentionPlugin(),
72
71
  ],
73
72
  }),
74
73
  ],
@@ -4,23 +4,22 @@
4
4
 
5
5
  import { type Extension } from '@codemirror/state';
6
6
  import { type EditorView } from '@codemirror/view';
7
+ import { type Atom } from '@effect-atom/atom-react';
7
8
  import { createContext } from '@radix-ui/react-context';
8
9
  import React, { type PropsWithChildren, useMemo, useState } from 'react';
9
10
  import { createPortal } from 'react-dom';
10
11
 
11
- import { Surface } from '@dxos/app-framework/react';
12
+ import { Surface } from '@dxos/app-framework/ui';
12
13
  import { DXN } from '@dxos/keys';
13
- import { type Live } from '@dxos/live-object';
14
14
  import { useClient } from '@dxos/react-client';
15
15
  import {
16
16
  EditorMenuProvider,
17
17
  type EditorToolbarState,
18
- type PreviewBlock,
19
- type PreviewOptions,
20
18
  type UseEditorMenu,
21
19
  useEditorMenu,
22
20
  useEditorToolbar,
23
21
  } from '@dxos/react-ui-editor';
22
+ import { type PreviewBlock, type PreviewOptions } from '@dxos/ui-editor';
24
23
  import { isNonNullable } from '@dxos/util';
25
24
 
26
25
  import {
@@ -49,10 +48,10 @@ type MarkdownEditorContextValue = {
49
48
  setEditorView: (view: EditorView) => void;
50
49
  extensions: Extension[];
51
50
  previewBlocks: PreviewBlock[];
52
- toolbarState: Live<EditorToolbarState>;
51
+ toolbarState: Atom.Writable<EditorToolbarState>;
53
52
  popoverMenu: Omit<UseEditorMenu, 'extension'>;
54
53
  } & (Pick<ExtensionsOptions, 'viewMode'> &
55
- Pick<NaturalMarkdownToolbarProps, 'editorView' | 'onFileUpload' | 'onViewModeChange'>);
54
+ Pick<NaturalMarkdownToolbarProps, 'editorView' | 'onAction' | 'onFileUpload' | 'onViewModeChange'>);
56
55
 
57
56
  const [MarkdownEditorContextProvider, useMarkdownEditorContext] =
58
57
  createContext<MarkdownEditorContextValue>('MarkdownEditor.Context');
@@ -65,7 +64,7 @@ type MarkdownEditorRootProps = PropsWithChildren<
65
64
  {
66
65
  object?: DocumentType;
67
66
  extensions?: Extension[];
68
- } & Pick<MarkdownEditorContextValue, 'id' | 'onFileUpload' | 'onViewModeChange' | 'viewMode'> &
67
+ } & Pick<MarkdownEditorContextValue, 'id' | 'onAction' | 'onFileUpload' | 'onViewModeChange' | 'viewMode'> &
69
68
  Pick<UseEditorMenuOptionsProps, 'slashCommandGroups' | 'onLinkQuery'> &
70
69
  Pick<ExtensionsOptions, 'editorStateStore' | 'selectionManager' | 'settings'>
71
70
  >;
@@ -78,7 +77,7 @@ const MarkdownEditorRoot = ({
78
77
  selectionManager,
79
78
  settings,
80
79
  viewMode,
81
- extensions: extensionsParam,
80
+ extensions: extensionsProp,
82
81
  slashCommandGroups,
83
82
  onLinkQuery,
84
83
  ...props
@@ -93,7 +92,7 @@ const MarkdownEditorRoot = ({
93
92
  setPreviewBlocks((prev) => [...prev, block]);
94
93
  },
95
94
  removeBlockContainer: ({ link }) => {
96
- setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.ref !== link.ref));
95
+ setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));
97
96
  },
98
97
  }),
99
98
  [],
@@ -122,8 +121,8 @@ const MarkdownEditorRoot = ({
122
121
  });
123
122
 
124
123
  const extensions = useMemo(
125
- () => [coreExtensions, menuExtension, extensionsParam].filter(isNonNullable),
126
- [coreExtensions, menuExtension, extensionsParam],
124
+ () => [coreExtensions, menuExtension, extensionsProp].filter(isNonNullable),
125
+ [coreExtensions, menuExtension, extensionsProp],
127
126
  );
128
127
 
129
128
  return (
@@ -149,6 +148,8 @@ MarkdownEditorRoot.displayName = 'MarkdownEditor.Root';
149
148
  // MarkdownEditor.Main
150
149
  //
151
150
 
151
+ const MARKDOWN_EDITOR_CONTENT_NAME = 'MarkdownEditor.Content';
152
+
152
153
  type MarkdownEditorContentProps = Omit<NaturalMarkdownEditorContentProps, 'id' | 'extensions' | 'toolbarState'>;
153
154
 
154
155
  const MarkdownEditorContent = (props: MarkdownEditorContentProps) => {
@@ -160,7 +161,7 @@ const MarkdownEditorContent = (props: MarkdownEditorContentProps) => {
160
161
  toolbarState,
161
162
  extensions,
162
163
  popoverMenu: { groupsRef, ...menuProps },
163
- } = useMarkdownEditorContext(MarkdownEditorContent.displayName);
164
+ } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
164
165
 
165
166
  return (
166
167
  <EditorMenuProvider view={editorView} groups={groupsRef.current} {...menuProps}>
@@ -176,52 +177,56 @@ const MarkdownEditorContent = (props: MarkdownEditorContentProps) => {
176
177
  );
177
178
  };
178
179
 
179
- MarkdownEditorContent.displayName = 'MarkdownEditor.Content';
180
+ MarkdownEditorContent.displayName = MARKDOWN_EDITOR_CONTENT_NAME;
180
181
 
181
182
  //
182
183
  // MarkdownEditor.Toolbar
183
184
  //
184
185
 
186
+ const MARKDOWN_EDITOR_TOOLBAR_NAME = 'MarkdownEditor.Toolbar';
187
+
185
188
  type MarkdownEditorToolbarProps = Omit<
186
189
  NaturalMarkdownToolbarProps,
187
- 'state' | 'editorView' | 'onFileUpload' | 'onViewModeChange'
190
+ 'state' | 'editorView' | 'onAction' | 'onFileUpload' | 'onViewModeChange'
188
191
  >;
189
192
 
190
193
  const MarkdownEditorToolbar = (props: MarkdownEditorToolbarProps) => {
191
- const { toolbarState, ...rootProps } = useMarkdownEditorContext(MarkdownEditorToolbar.displayName);
194
+ const { toolbarState, ...rootProps } = useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
192
195
 
193
196
  return <NaturalMarkdownToolbar {...props} {...rootProps} state={toolbarState} />;
194
197
  };
195
198
 
196
- MarkdownEditorToolbar.displayName = 'MarkdownEditor.Toolbar';
199
+ MarkdownEditorToolbar.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;
197
200
 
198
201
  //
199
202
  // MarkdownEditor.Blocks (embedded objects)
200
203
  //
201
204
 
205
+ const MARKDOWN_EDITOR_BLOCKS_NAME = 'MarkdownEditor.Blocks';
206
+
202
207
  type MarkdownEditorBlocksProps = {};
203
208
 
204
209
  const MarkdownEditorBlocks = (_props: MarkdownEditorBlocksProps) => {
205
- const { previewBlocks } = useMarkdownEditorContext(MarkdownEditorBlocks.displayName);
210
+ const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);
206
211
 
207
212
  return (
208
213
  <>
209
214
  {previewBlocks.map(({ link, el }) => (
210
- <PreviewBlock key={link.ref} link={link} el={el} />
215
+ <PreviewBlock key={link.dxn} link={link} el={el} />
211
216
  ))}
212
217
  </>
213
218
  );
214
219
  };
215
220
 
216
- MarkdownEditorBlocks.displayName = 'MarkdownEditor.Blocks';
221
+ MarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;
217
222
 
218
223
  const PreviewBlock = ({ el, link }: PreviewBlock) => {
219
224
  const client = useClient();
220
- const dxn = DXN.parse(link.ref);
225
+ const dxn = DXN.parse(link.dxn);
221
226
  const subject = client.graph.makeRef(dxn).target;
222
227
  const data = useMemo(() => ({ subject }), [subject]);
223
228
 
224
- return createPortal(<Surface role='card--transclusion' data={data} limit={1} />, el);
229
+ return createPortal(<Surface.Surface role='card--transclusion' data={data} limit={1} />, el);
225
230
  };
226
231
 
227
232
  //
@@ -3,18 +3,21 @@
3
3
  //
4
4
 
5
5
  import { type EditorView } from '@codemirror/view';
6
- import React, { forwardRef, useEffect, useImperativeHandle, useMemo } from 'react';
6
+ import { type Atom, RegistryContext } from '@effect-atom/atom-react';
7
+ import React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo } from 'react';
7
8
 
8
- import { type Live } from '@dxos/live-object';
9
- import { type ThemedClassName, useDynamicRef, useThemeContext, useTranslation } from '@dxos/react-ui';
9
+ import { type ThemedClassName, useThemeContext, useTranslation } from '@dxos/react-ui';
10
10
  import {
11
11
  type EditorMenuGroup,
12
+ type EditorToolbarState,
13
+ type UseTextEditorProps,
14
+ useTextEditor,
15
+ } from '@dxos/react-ui-editor';
16
+ import {
12
17
  type EditorSelectionState,
13
18
  type EditorStateStore,
14
- type EditorToolbarState,
15
19
  type EditorViewMode,
16
20
  type ThemeExtensionsOptions,
17
- type UseTextEditorProps,
18
21
  createBasicExtensions,
19
22
  createMarkdownExtensions,
20
23
  createThemeExtensions,
@@ -23,9 +26,8 @@ import {
23
26
  formattingListener,
24
27
  processEditorPayload,
25
28
  stackItemContentEditorClassNames,
26
- useTextEditor,
27
- } from '@dxos/react-ui-editor';
28
- import { mx } from '@dxos/react-ui-theme';
29
+ } from '@dxos/ui-editor';
30
+ import { mx } from '@dxos/ui-theme';
29
31
  import { isTruthy } from '@dxos/util';
30
32
 
31
33
  import { useSelectCurrentThread } from '../../hooks';
@@ -40,7 +42,7 @@ export type MarkdownEditorContentProps = ThemedClassName<{
40
42
  scrollPastEnd?: boolean;
41
43
  slashCommandGroups?: EditorMenuGroup[];
42
44
  editorStateStore?: EditorStateStore;
43
- toolbarState?: Live<EditorToolbarState>;
45
+ toolbarState?: Atom.Writable<EditorToolbarState>;
44
46
  onLinkQuery?: (query?: string) => Promise<EditorMenuGroup[]>;
45
47
  }> &
46
48
  // prettier-ignore
@@ -67,9 +69,17 @@ export const MarkdownEditorContent = forwardRef<EditorView | null, MarkdownEdito
67
69
  ) => {
68
70
  const { t } = useTranslation(meta.id);
69
71
  const { themeMode } = useThemeContext();
72
+ const registry = useContext(RegistryContext);
70
73
 
71
- // TODO(burdon): Toolbar state is not reactive.
72
- const toolbarStateRef = useDynamicRef(toolbarState);
74
+ // Callback to update toolbar state atom.
75
+ const updateToolbarState = useCallback(
76
+ (formatting: EditorToolbarState) => {
77
+ if (toolbarState) {
78
+ registry.set(toolbarState, { ...registry.get(toolbarState), ...formatting });
79
+ }
80
+ },
81
+ [registry, toolbarState],
82
+ );
73
83
 
74
84
  // Restore last selection and scroll point.
75
85
  const { scrollTo, selection } = useMemo<EditorSelectionState>(() => editorStateStore?.getState(id) ?? {}, [id]);
@@ -102,7 +112,7 @@ export const MarkdownEditorContent = forwardRef<EditorView | null, MarkdownEdito
102
112
  syntaxHighlighting: true,
103
113
  }),
104
114
  createMarkdownExtensions(),
105
- formattingListener(() => toolbarStateRef.current),
115
+ toolbarState && formattingListener(updateToolbarState),
106
116
  role !== 'section' &&
107
117
  onFileUpload &&
108
118
  dropFile({
@@ -5,10 +5,11 @@
5
5
  import { type EditorView } from '@codemirror/view';
6
6
  import React, { useCallback, useState } from 'react';
7
7
 
8
- import { type FileInfo } from '@dxos/app-framework';
8
+ import { type FileInfo } from '@dxos/app-toolkit';
9
9
  import { invariant } from '@dxos/invariant';
10
10
  import { type ThemedClassName } from '@dxos/react-ui';
11
- import { EditorToolbar, type EditorToolbarProps, type EditorViewMode } from '@dxos/react-ui-editor';
11
+ import { EditorToolbar, type EditorToolbarProps } from '@dxos/react-ui-editor';
12
+ import { type EditorViewMode } from '@dxos/ui-editor';
12
13
 
13
14
  import { FileUpload, type FileUploadAction } from './FileUpload';
14
15
 
@@ -17,7 +18,7 @@ export type MarkdownEditorToolbarProps = ThemedClassName<
17
18
  id: string;
18
19
  editorView?: EditorView;
19
20
  onFileUpload?: (file: File) => Promise<FileInfo | undefined>;
20
- } & Pick<EditorToolbarProps, 'role' | 'state' | 'customActions' | 'onViewModeChange'>
21
+ } & Pick<EditorToolbarProps, 'role' | 'state' | 'customActions' | 'onAction' | 'onViewModeChange'>
21
22
  >;
22
23
 
23
24
  export const MarkdownEditorToolbar = ({
@@ -27,6 +28,7 @@ export const MarkdownEditorToolbar = ({
27
28
  state,
28
29
  editorView,
29
30
  customActions,
31
+ onAction,
30
32
  onFileUpload,
31
33
  onViewModeChange,
32
34
  }: MarkdownEditorToolbarProps) => {
@@ -53,6 +55,7 @@ export const MarkdownEditorToolbar = ({
53
55
  state={state}
54
56
  customActions={customActions}
55
57
  getView={getView}
58
+ onAction={onAction}
56
59
  onImageUpload={upload ?? undefined}
57
60
  onViewModeChange={handleViewModeChange}
58
61
  />
@@ -5,25 +5,30 @@
5
5
  import React from 'react';
6
6
 
7
7
  import { Input, Select, useTranslation } from '@dxos/react-ui';
8
- import { type EditorInputMode, EditorInputModes, type EditorViewMode, EditorViewModes } from '@dxos/react-ui-editor';
9
- import { ControlGroup, ControlItemInput, ControlPage, ControlSection } from '@dxos/react-ui-form';
8
+ import { Settings } from '@dxos/react-ui-form';
9
+ import { type EditorInputMode, EditorInputModes, type EditorViewMode, EditorViewModes } from '@dxos/ui-editor';
10
10
 
11
11
  import { meta } from '../../meta';
12
12
  import { type Markdown } from '../../types';
13
13
 
14
- export const MarkdownSettings = ({ settings }: { settings: Markdown.Settings }) => {
14
+ export type MarkdownSettingsComponentProps = {
15
+ settings: Markdown.Settings;
16
+ onSettingsChange: (fn: (current: Markdown.Settings) => Markdown.Settings) => void;
17
+ };
18
+
19
+ export const MarkdownSettings = ({ settings, onSettingsChange }: MarkdownSettingsComponentProps) => {
15
20
  const { t } = useTranslation(meta.id);
16
21
 
17
22
  // TODO(wittjosiah): Add skill test confirmation for entering vim mode.
18
23
  return (
19
- <ControlPage>
20
- <ControlSection title={t('settings title', { ns: meta.id })}>
21
- <ControlGroup>
22
- <ControlItemInput title={t('default view mode label')}>
24
+ <Settings.Root>
25
+ <Settings.Section title={t('settings title', { ns: meta.id })}>
26
+ <Settings.Group>
27
+ <Settings.ItemInput title={t('default view mode label')}>
23
28
  <Select.Root
24
29
  value={settings.defaultViewMode}
25
30
  onValueChange={(value) => {
26
- settings.defaultViewMode = value as EditorViewMode;
31
+ onSettingsChange((s) => ({ ...s, defaultViewMode: value as EditorViewMode }));
27
32
  }}
28
33
  >
29
34
  <Select.TriggerButton />
@@ -32,7 +37,7 @@ export const MarkdownSettings = ({ settings }: { settings: Markdown.Settings })
32
37
  <Select.Viewport>
33
38
  {EditorViewModes.map((mode) => (
34
39
  <Select.Option key={mode} value={mode}>
35
- {t(`${mode} mode label`, { ns: 'react-ui-editor' })}
40
+ {t(`${mode} mode label`, { ns: '@dxos/react-ui-editor' })}
36
41
  </Select.Option>
37
42
  ))}
38
43
  </Select.Viewport>
@@ -40,13 +45,13 @@ export const MarkdownSettings = ({ settings }: { settings: Markdown.Settings })
40
45
  </Select.Content>
41
46
  </Select.Portal>
42
47
  </Select.Root>
43
- </ControlItemInput>
48
+ </Settings.ItemInput>
44
49
 
45
- <ControlItemInput title={t('editor input mode label')}>
50
+ <Settings.ItemInput title={t('editor input mode label')}>
46
51
  <Select.Root
47
52
  value={settings.editorInputMode ?? 'default'}
48
53
  onValueChange={(value) => {
49
- settings.editorInputMode = value as EditorInputMode;
54
+ onSettingsChange((s) => ({ ...s, editorInputMode: value as EditorInputMode }));
50
55
  }}
51
56
  >
52
57
  <Select.TriggerButton placeholder={t('select editor input mode placeholder')} />
@@ -63,46 +68,55 @@ export const MarkdownSettings = ({ settings }: { settings: Markdown.Settings })
63
68
  </Select.Content>
64
69
  </Select.Portal>
65
70
  </Select.Root>
66
- </ControlItemInput>
71
+ </Settings.ItemInput>
67
72
 
68
- <ControlItemInput title={t('settings toolbar label')}>
69
- <Input.Switch checked={settings.toolbar} onCheckedChange={(checked) => (settings.toolbar = !!checked)} />
70
- </ControlItemInput>
73
+ <Settings.ItemInput title={t('settings toolbar label')}>
74
+ <Input.Switch
75
+ checked={settings.toolbar}
76
+ onCheckedChange={(checked) => onSettingsChange((s) => ({ ...s, toolbar: !!checked }))}
77
+ />
78
+ </Settings.ItemInput>
71
79
 
72
- <ControlItemInput title={t('settings numbered headings label')}>
80
+ <Settings.ItemInput title={t('settings numbered headings label')}>
73
81
  <Input.Switch
74
82
  checked={settings.numberedHeadings}
75
- onCheckedChange={(checked) => (settings.numberedHeadings = !!checked)}
83
+ onCheckedChange={(checked) => onSettingsChange((s) => ({ ...s, numberedHeadings: !!checked }))}
76
84
  />
77
- </ControlItemInput>
85
+ </Settings.ItemInput>
78
86
 
79
- <ControlItemInput title={t('settings folding label')}>
80
- <Input.Switch checked={settings.folding} onCheckedChange={(checked) => (settings.folding = !!checked)} />
81
- </ControlItemInput>
87
+ <Settings.ItemInput title={t('settings folding label')}>
88
+ <Input.Switch
89
+ checked={settings.folding}
90
+ onCheckedChange={(checked) => onSettingsChange((s) => ({ ...s, folding: !!checked }))}
91
+ />
92
+ </Settings.ItemInput>
82
93
 
83
- <ControlItemInput title={t('settings experimental label')}>
94
+ <Settings.ItemInput title={t('settings experimental label')}>
84
95
  <Input.Switch
85
96
  checked={settings.experimental}
86
- onCheckedChange={(checked) => (settings.experimental = !!checked)}
97
+ onCheckedChange={(checked) => onSettingsChange((s) => ({ ...s, experimental: !!checked }))}
87
98
  />
88
- </ControlItemInput>
99
+ </Settings.ItemInput>
89
100
 
90
- <ControlItemInput title={t('settings debug label')}>
91
- <Input.Switch checked={settings.debug} onCheckedChange={(checked) => (settings.debug = !!checked)} />
92
- </ControlItemInput>
101
+ <Settings.ItemInput title={t('settings debug label')}>
102
+ <Input.Switch
103
+ checked={settings.debug}
104
+ onCheckedChange={(checked) => onSettingsChange((s) => ({ ...s, debug: !!checked }))}
105
+ />
106
+ </Settings.ItemInput>
93
107
 
94
108
  {settings.debug && (
95
- <ControlItemInput title={t('settings debug textarea label', { ns: meta.id })}>
109
+ <Settings.ItemInput title={t('settings debug textarea label', { ns: meta.id })}>
96
110
  <Input.TextArea
97
111
  rows={5}
98
112
  value={settings.typewriter}
99
- onChange={({ target: { value } }) => (settings.typewriter = value)}
113
+ onChange={({ target: { value } }) => onSettingsChange((s) => ({ ...s, typewriter: value }))}
100
114
  placeholder={t('settings debug placeholder')}
101
115
  />
102
- </ControlItemInput>
116
+ </Settings.ItemInput>
103
117
  )}
104
- </ControlGroup>
105
- </ControlSection>
106
- </ControlPage>
118
+ </Settings.Group>
119
+ </Settings.Section>
120
+ </Settings.Root>
107
121
  );
108
122
  };