@dxos/plugin-markdown 0.8.4-main.74a063c4e0 → 0.8.4-main.765dc60934

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 (313) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/EditableMarkdownCard-LXBXN3OW.mjs +32 -0
  4. package/dist/lib/neutral/EditableMarkdownCard-LXBXN3OW.mjs.map +7 -0
  5. package/dist/lib/neutral/MarkdownArticle-Z4QRU3WD.mjs +126 -0
  6. package/dist/lib/neutral/MarkdownArticle-Z4QRU3WD.mjs.map +7 -0
  7. package/dist/lib/neutral/MarkdownCard-INMBLUL4.mjs +102 -0
  8. package/dist/lib/neutral/MarkdownCard-INMBLUL4.mjs.map +7 -0
  9. package/dist/lib/neutral/MarkdownPlugin.mjs +10 -0
  10. package/dist/lib/neutral/MarkdownPlugin.node.mjs +25 -0
  11. package/dist/lib/neutral/MarkdownPlugin.node.mjs.map +7 -0
  12. package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs +32 -0
  13. package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs.map +7 -0
  14. package/dist/lib/neutral/anchor-sort-L4VCKDO6.mjs +32 -0
  15. package/dist/lib/neutral/anchor-sort-L4VCKDO6.mjs.map +7 -0
  16. package/dist/lib/neutral/app-graph-serializer-YI72EEVM.mjs +55 -0
  17. package/dist/lib/neutral/app-graph-serializer-YI72EEVM.mjs.map +7 -0
  18. package/dist/lib/neutral/blueprint-definition-33OK2KUL.mjs +15 -0
  19. package/dist/lib/neutral/blueprint-definition-33OK2KUL.mjs.map +7 -0
  20. package/dist/lib/neutral/blueprints/index.mjs +8 -0
  21. package/dist/lib/neutral/capabilities/index.mjs +25 -0
  22. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  23. package/dist/lib/neutral/capabilities/node.mjs +11 -0
  24. package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
  25. package/dist/lib/neutral/chunk-6N7AD3IU.mjs +8 -0
  26. package/dist/lib/neutral/chunk-6N7AD3IU.mjs.map +7 -0
  27. package/dist/lib/neutral/chunk-KDN4GKG2.mjs +98 -0
  28. package/dist/lib/neutral/chunk-KDN4GKG2.mjs.map +7 -0
  29. package/dist/lib/{browser/blueprints/index.mjs → neutral/chunk-LXNSKCPD.mjs} +10 -17
  30. package/dist/lib/neutral/chunk-LXNSKCPD.mjs.map +7 -0
  31. package/dist/lib/neutral/chunk-LYUELXJH.mjs +57 -0
  32. package/dist/lib/neutral/chunk-LYUELXJH.mjs.map +7 -0
  33. package/dist/lib/neutral/chunk-SOLAMEK3.mjs +276 -0
  34. package/dist/lib/neutral/chunk-SOLAMEK3.mjs.map +7 -0
  35. package/dist/lib/neutral/chunk-YC2OAUM7.mjs +22 -0
  36. package/dist/lib/neutral/chunk-YC2OAUM7.mjs.map +7 -0
  37. package/dist/lib/neutral/comment-config-7VTHRUIZ.mjs +30 -0
  38. package/dist/lib/neutral/comment-config-7VTHRUIZ.mjs.map +7 -0
  39. package/dist/lib/neutral/components/index.mjs +370 -0
  40. package/dist/lib/neutral/components/index.mjs.map +7 -0
  41. package/dist/lib/neutral/containers/index.mjs +13 -0
  42. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  43. package/dist/lib/{browser/create-HSXPXCC5.mjs → neutral/create-3PGJ2NEK.mjs} +5 -7
  44. package/dist/lib/neutral/create-3PGJ2NEK.mjs.map +7 -0
  45. package/dist/lib/{browser/create-markdown-WB7DH3UF.mjs → neutral/create-markdown-5LS46GMH.mjs} +5 -7
  46. package/dist/lib/neutral/create-markdown-5LS46GMH.mjs.map +7 -0
  47. package/dist/lib/neutral/create-object-ZA6VXLJJ.mjs +27 -0
  48. package/dist/lib/neutral/create-object-ZA6VXLJJ.mjs.map +7 -0
  49. package/dist/lib/neutral/hooks/index.mjs +321 -0
  50. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  51. package/dist/lib/neutral/index.mjs +42 -0
  52. package/dist/lib/neutral/meta.json +1 -0
  53. package/dist/lib/neutral/meta.mjs +8 -0
  54. package/dist/lib/neutral/meta.mjs.map +7 -0
  55. package/dist/lib/{browser/open-N6PAX6DY.mjs → neutral/open-WCYGBLAG.mjs} +5 -6
  56. package/dist/lib/neutral/open-WCYGBLAG.mjs.map +7 -0
  57. package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs +13 -0
  58. package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs.map +7 -0
  59. package/dist/lib/neutral/operations/index.mjs +8 -0
  60. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  61. package/dist/lib/neutral/plugin.mjs +16 -0
  62. package/dist/lib/neutral/plugin.mjs.map +7 -0
  63. package/dist/lib/neutral/react-surface-SCIL76V5.mjs +119 -0
  64. package/dist/lib/neutral/react-surface-SCIL76V5.mjs.map +7 -0
  65. package/dist/lib/{browser/scroll-to-anchor-5M4F24AB.mjs → neutral/scroll-to-anchor-6FIOKVKT.mjs} +7 -9
  66. package/dist/lib/neutral/scroll-to-anchor-6FIOKVKT.mjs.map +7 -0
  67. package/dist/lib/neutral/set-view-mode-37RSPFEN.mjs +24 -0
  68. package/dist/lib/neutral/set-view-mode-37RSPFEN.mjs.map +7 -0
  69. package/dist/lib/neutral/settings-TDGDLCUR.mjs +34 -0
  70. package/dist/lib/neutral/settings-TDGDLCUR.mjs.map +7 -0
  71. package/dist/lib/neutral/state-5COCF5PN.mjs +44 -0
  72. package/dist/lib/neutral/state-5COCF5PN.mjs.map +7 -0
  73. package/dist/lib/neutral/testing.mjs +22 -0
  74. package/dist/lib/neutral/testing.mjs.map +7 -0
  75. package/dist/lib/neutral/translations.mjs +43 -0
  76. package/dist/lib/neutral/translations.mjs.map +7 -0
  77. package/dist/lib/neutral/types/index.mjs +16 -0
  78. package/dist/lib/neutral/types/index.mjs.map +7 -0
  79. package/dist/lib/{browser/update-5QIRVGTL.mjs → neutral/update-markdown-5EDRD3SH.mjs} +8 -9
  80. package/dist/lib/neutral/update-markdown-5EDRD3SH.mjs.map +7 -0
  81. package/dist/types/src/MarkdownPlugin.d.ts +1 -0
  82. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  83. package/dist/types/src/{cli/plugin.d.ts → MarkdownPlugin.node.d.ts} +2 -1
  84. package/dist/types/src/MarkdownPlugin.node.d.ts.map +1 -0
  85. package/dist/types/src/MarkdownPlugin.test.d.ts +2 -0
  86. package/dist/types/src/MarkdownPlugin.test.d.ts.map +1 -0
  87. package/dist/types/src/blueprints/markdown-blueprint.d.ts +2 -2
  88. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/blueprint-definition.d.ts +2 -2
  93. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/comment-config.d.ts +12 -0
  95. package/dist/types/src/capabilities/comment-config.d.ts.map +1 -0
  96. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  97. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  98. package/dist/types/src/capabilities/index.d.ts +17 -22
  99. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/node.d.ts +7 -1
  101. package/dist/types/src/capabilities/node.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  103. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/settings.d.ts +1 -19
  106. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/state.d.ts +2 -2
  108. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  109. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +28 -22
  110. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  111. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +2 -2
  112. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  113. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +2 -1
  114. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  115. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +2 -6
  116. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  117. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +1 -1
  118. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  119. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +46 -90
  120. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -1
  121. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts +15 -0
  122. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts.map +1 -0
  123. package/dist/types/src/containers/EditableMarkdownCard/index.d.ts +3 -0
  124. package/dist/types/src/containers/EditableMarkdownCard/index.d.ts.map +1 -0
  125. package/dist/types/src/containers/{MarkdownContainer/MarkdownContainer.d.ts → MarkdownArticle/MarkdownArticle.d.ts} +9 -9
  126. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts.map +1 -0
  127. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts +97 -0
  128. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts.map +1 -0
  129. package/dist/types/src/containers/MarkdownArticle/index.d.ts +3 -0
  130. package/dist/types/src/containers/MarkdownArticle/index.d.ts.map +1 -0
  131. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  132. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +1 -1
  133. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
  134. package/dist/types/src/containers/MarkdownCard/snippet.d.ts +7 -5
  135. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -1
  136. package/dist/types/src/containers/index.d.ts +3 -2
  137. package/dist/types/src/containers/index.d.ts.map +1 -1
  138. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -1
  139. package/dist/types/src/hooks/useExtensions.d.ts +3 -1
  140. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  141. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  142. package/dist/types/src/index.d.ts +2 -3
  143. package/dist/types/src/index.d.ts.map +1 -1
  144. package/dist/types/src/meta.d.ts.map +1 -1
  145. package/dist/types/src/operations/create-markdown.d.ts +3 -3
  146. package/dist/types/src/operations/create-markdown.d.ts.map +1 -1
  147. package/dist/types/src/operations/create.d.ts +3 -3
  148. package/dist/types/src/operations/create.d.ts.map +1 -1
  149. package/dist/types/src/operations/index.d.ts +1 -2
  150. package/dist/types/src/operations/index.d.ts.map +1 -1
  151. package/dist/types/src/operations/open.d.ts +3 -3
  152. package/dist/types/src/operations/open.d.ts.map +1 -1
  153. package/dist/types/src/operations/scroll-to-anchor.d.ts +3 -3
  154. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -1
  155. package/dist/types/src/operations/set-view-mode.d.ts +3 -3
  156. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -1
  157. package/dist/types/src/operations/update-markdown.d.ts +5 -0
  158. package/dist/types/src/operations/update-markdown.d.ts.map +1 -0
  159. package/dist/types/src/plugin.d.ts +4 -0
  160. package/dist/types/src/plugin.d.ts.map +1 -0
  161. package/dist/types/src/testing.d.ts +1 -0
  162. package/dist/types/src/testing.d.ts.map +1 -1
  163. package/dist/types/src/translations.d.ts +70 -73
  164. package/dist/types/src/translations.d.ts.map +1 -1
  165. package/dist/types/src/types/Markdown.d.ts +9 -8
  166. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  167. package/dist/types/src/types/MarkdownCapabilities.d.ts +32 -0
  168. package/dist/types/src/types/MarkdownCapabilities.d.ts.map +1 -0
  169. package/dist/types/src/types/MarkdownEvents.d.ts +3 -0
  170. package/dist/types/src/types/MarkdownEvents.d.ts.map +1 -0
  171. package/dist/types/src/{operations/definitions.d.ts → types/MarkdownOperation.d.ts} +3 -3
  172. package/dist/types/src/types/MarkdownOperation.d.ts.map +1 -0
  173. package/dist/types/src/types/Settings.d.ts +10 -9
  174. package/dist/types/src/types/Settings.d.ts.map +1 -1
  175. package/dist/types/src/types/index.d.ts +3 -2
  176. package/dist/types/src/types/index.d.ts.map +1 -1
  177. package/dist/types/src/types/types.d.ts +1 -0
  178. package/dist/types/src/types/types.d.ts.map +1 -1
  179. package/dist/types/src/util.d.ts +1 -1
  180. package/dist/types/src/util.d.ts.map +1 -1
  181. package/dist/types/tsconfig.tsbuildinfo +1 -1
  182. package/package.json +119 -104
  183. package/src/MarkdownPlugin.node.ts +20 -0
  184. package/src/MarkdownPlugin.test.ts +26 -0
  185. package/src/MarkdownPlugin.tsx +9 -53
  186. package/src/blueprints/markdown-blueprint.ts +8 -9
  187. package/src/capabilities/app-graph-serializer.ts +4 -6
  188. package/src/capabilities/artifact-definition.ts +3 -4
  189. package/src/capabilities/blueprint-definition.ts +2 -0
  190. package/src/capabilities/comment-config.ts +32 -0
  191. package/src/capabilities/create-object.ts +30 -0
  192. package/src/capabilities/index.ts +4 -1
  193. package/src/capabilities/node.ts +3 -1
  194. package/src/capabilities/operation-handler.ts +1 -1
  195. package/src/capabilities/react-surface.tsx +18 -11
  196. package/src/capabilities/state.ts +4 -4
  197. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +22 -17
  198. package/src/components/MarkdownEditor/MarkdownEditor.tsx +99 -86
  199. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +5 -5
  200. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +5 -16
  201. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +2 -1
  202. package/src/components/MarkdownSettings/MarkdownSettings.tsx +16 -119
  203. package/src/containers/EditableMarkdownCard/EditableMarkdownCard.tsx +42 -0
  204. package/src/containers/EditableMarkdownCard/index.ts +6 -0
  205. package/src/containers/{MarkdownContainer/MarkdownContainer.stories.tsx → MarkdownArticle/MarkdownArticle.stories.tsx} +9 -8
  206. package/src/containers/{MarkdownContainer/MarkdownContainer.tsx → MarkdownArticle/MarkdownArticle.tsx} +32 -21
  207. package/src/containers/MarkdownArticle/index.ts +6 -0
  208. package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +5 -4
  209. package/src/containers/MarkdownCard/MarkdownCard.tsx +21 -11
  210. package/src/containers/MarkdownCard/snippet.ts +27 -51
  211. package/src/containers/index.ts +3 -2
  212. package/src/hooks/useExtensions.tsx +7 -8
  213. package/src/hooks/useLinkQuery.ts +9 -26
  214. package/src/index.ts +2 -6
  215. package/src/meta.ts +4 -1
  216. package/src/operations/create-markdown.ts +3 -4
  217. package/src/operations/create.conversations.json +1 -1
  218. package/src/operations/create.test.ts +7 -9
  219. package/src/operations/create.ts +3 -4
  220. package/src/operations/index.ts +2 -4
  221. package/src/operations/open.ts +3 -3
  222. package/src/operations/scroll-to-anchor.ts +3 -4
  223. package/src/operations/set-view-mode.ts +3 -4
  224. package/src/operations/{update.ts → update-markdown.ts} +3 -3
  225. package/src/operations/update.conversations.json +1 -1
  226. package/src/operations/update.test.ts +7 -9
  227. package/src/plugin.ts +11 -0
  228. package/src/testing.ts +5 -3
  229. package/src/translations.ts +2 -26
  230. package/src/types/Markdown.ts +5 -0
  231. package/src/types/MarkdownCapabilities.ts +51 -0
  232. package/src/types/MarkdownEvents.ts +14 -0
  233. package/src/{operations/definitions.ts → types/MarkdownOperation.ts} +4 -2
  234. package/src/types/Settings.ts +47 -10
  235. package/src/types/index.ts +3 -2
  236. package/src/types/types.ts +4 -1
  237. package/src/util.tsx +3 -3
  238. package/dist/lib/browser/MarkdownSettings-YZFNSJJY.mjs +0 -121
  239. package/dist/lib/browser/MarkdownSettings-YZFNSJJY.mjs.map +0 -7
  240. package/dist/lib/browser/blueprints/index.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-46WIDM4R.mjs +0 -98
  242. package/dist/lib/browser/chunk-46WIDM4R.mjs.map +0 -7
  243. package/dist/lib/browser/chunk-XKUKZNUS.mjs +0 -158
  244. package/dist/lib/browser/chunk-XKUKZNUS.mjs.map +0 -7
  245. package/dist/lib/browser/cli/index.mjs +0 -39
  246. package/dist/lib/browser/cli/index.mjs.map +0 -7
  247. package/dist/lib/browser/create-HSXPXCC5.mjs.map +0 -7
  248. package/dist/lib/browser/create-markdown-WB7DH3UF.mjs.map +0 -7
  249. package/dist/lib/browser/index.mjs +0 -653
  250. package/dist/lib/browser/index.mjs.map +0 -7
  251. package/dist/lib/browser/meta.json +0 -1
  252. package/dist/lib/browser/open-N6PAX6DY.mjs.map +0 -7
  253. package/dist/lib/browser/operations/index.mjs +0 -14
  254. package/dist/lib/browser/operations/index.mjs.map +0 -7
  255. package/dist/lib/browser/scroll-to-anchor-5M4F24AB.mjs.map +0 -7
  256. package/dist/lib/browser/set-view-mode-NBNF2I5W.mjs +0 -26
  257. package/dist/lib/browser/set-view-mode-NBNF2I5W.mjs.map +0 -7
  258. package/dist/lib/browser/types/index.mjs +0 -16
  259. package/dist/lib/browser/update-5QIRVGTL.mjs.map +0 -7
  260. package/dist/lib/node-esm/MarkdownSettings-X6SDS35F.mjs +0 -122
  261. package/dist/lib/node-esm/MarkdownSettings-X6SDS35F.mjs.map +0 -7
  262. package/dist/lib/node-esm/blueprints/index.mjs +0 -52
  263. package/dist/lib/node-esm/blueprints/index.mjs.map +0 -7
  264. package/dist/lib/node-esm/chunk-4MSJO6IJ.mjs +0 -99
  265. package/dist/lib/node-esm/chunk-4MSJO6IJ.mjs.map +0 -7
  266. package/dist/lib/node-esm/chunk-E4BQCEXF.mjs +0 -159
  267. package/dist/lib/node-esm/chunk-E4BQCEXF.mjs.map +0 -7
  268. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  269. package/dist/lib/node-esm/cli/index.mjs +0 -40
  270. package/dist/lib/node-esm/cli/index.mjs.map +0 -7
  271. package/dist/lib/node-esm/create-6Z2KYISY.mjs +0 -31
  272. package/dist/lib/node-esm/create-6Z2KYISY.mjs.map +0 -7
  273. package/dist/lib/node-esm/create-markdown-JWQZICKY.mjs +0 -23
  274. package/dist/lib/node-esm/create-markdown-JWQZICKY.mjs.map +0 -7
  275. package/dist/lib/node-esm/index.mjs +0 -654
  276. package/dist/lib/node-esm/index.mjs.map +0 -7
  277. package/dist/lib/node-esm/meta.json +0 -1
  278. package/dist/lib/node-esm/open-DSNFRSNZ.mjs +0 -22
  279. package/dist/lib/node-esm/open-DSNFRSNZ.mjs.map +0 -7
  280. package/dist/lib/node-esm/operations/index.mjs +0 -15
  281. package/dist/lib/node-esm/operations/index.mjs.map +0 -7
  282. package/dist/lib/node-esm/scroll-to-anchor-D6SHGU2R.mjs +0 -50
  283. package/dist/lib/node-esm/scroll-to-anchor-D6SHGU2R.mjs.map +0 -7
  284. package/dist/lib/node-esm/set-view-mode-REYB4L7J.mjs +0 -27
  285. package/dist/lib/node-esm/set-view-mode-REYB4L7J.mjs.map +0 -7
  286. package/dist/lib/node-esm/types/index.mjs +0 -17
  287. package/dist/lib/node-esm/update-YMQAIKOF.mjs +0 -46
  288. package/dist/lib/node-esm/update-YMQAIKOF.mjs.map +0 -7
  289. package/dist/types/src/cli/index.d.ts +0 -2
  290. package/dist/types/src/cli/index.d.ts.map +0 -1
  291. package/dist/types/src/cli/plugin.d.ts.map +0 -1
  292. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +0 -1
  293. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts +0 -99
  294. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +0 -1
  295. package/dist/types/src/containers/MarkdownContainer/index.d.ts +0 -3
  296. package/dist/types/src/containers/MarkdownContainer/index.d.ts.map +0 -1
  297. package/dist/types/src/operations/definitions.d.ts.map +0 -1
  298. package/dist/types/src/operations/update.d.ts +0 -5
  299. package/dist/types/src/operations/update.d.ts.map +0 -1
  300. package/dist/types/src/types/capabilities.d.ts +0 -51
  301. package/dist/types/src/types/capabilities.d.ts.map +0 -1
  302. package/dist/types/src/types/events.d.ts +0 -5
  303. package/dist/types/src/types/events.d.ts.map +0 -1
  304. package/src/cli/index.ts +0 -5
  305. package/src/cli/plugin.ts +0 -39
  306. package/src/containers/MarkdownContainer/index.ts +0 -6
  307. package/src/types/capabilities.ts +0 -50
  308. package/src/types/events.ts +0 -14
  309. /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/MarkdownPlugin.mjs.map} +0 -0
  310. /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
  311. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  312. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  313. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
@@ -15,12 +15,12 @@ import {
15
15
  } from '@dxos/app-framework/ui';
16
16
  import { AppSurface } from '@dxos/app-toolkit/ui';
17
17
  import { Obj } from '@dxos/echo';
18
- import { AttentionCapabilities } from '@dxos/plugin-attention/types';
18
+ import { AttentionCapabilities } from '@dxos/plugin-attention';
19
19
  import { Text } from '@dxos/schema';
20
- import { type EditorViewMode } from '@dxos/ui-editor';
20
+ import { type EditorViewMode } from '@dxos/ui-editor/types';
21
21
 
22
22
  import { MarkdownSettings } from '#components';
23
- import { MarkdownCard, MarkdownContainer, type MarkdownContainerProps } from '#containers';
23
+ import { MarkdownCard, EditableMarkdownCard, MarkdownArticle, type MarkdownArticleProps } from '#containers';
24
24
  import { meta } from '#meta';
25
25
  import { Markdown, MarkdownCapabilities } from '#types';
26
26
 
@@ -48,9 +48,12 @@ export default Capability.makeModule(() =>
48
48
  Surface.create({
49
49
  id: 'surface.text',
50
50
  // TODO(wittjosiah): Split into multiple surfaces if this filter proves too strict for non-article roles.
51
- role: ['article', 'section', 'tabpanel'],
52
51
  // TODO(burdon): Why is attendableId required? See EventArticle.tsx
53
- filter: AppSurface.objectArticle(Text.Text),
52
+ filter: AppSurface.oneOf(
53
+ AppSurface.object(AppSurface.Article, Text.Text),
54
+ AppSurface.object(AppSurface.Section, Text.Text),
55
+ AppSurface.object(AppSurface.Tabpanel, Text.Text),
56
+ ),
54
57
  component: ({ data, role, ref }) => {
55
58
  return (
56
59
  <Container
@@ -65,17 +68,21 @@ export default Capability.makeModule(() =>
65
68
  }),
66
69
  Surface.create({
67
70
  id: 'surface.plugin-settings',
68
- role: 'article',
69
- filter: AppSurface.settingsArticle(meta.id),
71
+ filter: AppSurface.settings(AppSurface.Article, meta.id),
70
72
  component: ({ data: { subject } }) => {
71
73
  const { settings, updateSettings } = useSettingsState<Markdown.Settings>(subject.atom);
72
74
  return <MarkdownSettings settings={settings} onSettingsChange={updateSettings} />;
73
75
  },
74
76
  }),
77
+ Surface.create({
78
+ id: 'surface.editable',
79
+ position: 'hoist',
80
+ filter: AppSurface.object(AppSurface.Card, [Markdown.Document, Text.Text], (data) => data.editable === true),
81
+ component: ({ data }) => <EditableMarkdownCard subject={data.subject} />,
82
+ }),
75
83
  Surface.create({
76
84
  id: 'surface.preview',
77
- role: 'card--content',
78
- filter: AppSurface.objectCard([Markdown.Document, Text.Text]),
85
+ filter: AppSurface.object(AppSurface.Card, [Markdown.Document, Text.Text], (data) => data.editable !== true),
79
86
  component: ({ data }) => <MarkdownCard {...data} />,
80
87
  }),
81
88
  ]),
@@ -97,13 +104,13 @@ const Container = forwardRef<
97
104
  const extensionProviders = useMemo(() => extensions.flat(), [extensions]);
98
105
 
99
106
  const viewMode: EditorViewMode = (id && state.viewMode[id]) || settings?.defaultViewMode || 'source';
100
- const handleViewModeChange = useCallback<NonNullable<MarkdownContainerProps['onViewModeChange']>>(
107
+ const handleViewModeChange = useCallback<NonNullable<MarkdownArticleProps['onViewModeChange']>>(
101
108
  (mode) => setState((current) => ({ ...current, viewMode: { ...current.viewMode, [id]: mode } })),
102
109
  [id, setState],
103
110
  );
104
111
 
105
112
  return (
106
- <MarkdownContainer
113
+ <MarkdownArticle
107
114
  role={role}
108
115
  subject={subject}
109
116
  id={id}
@@ -9,10 +9,10 @@ import { createKvsStore } from '@dxos/effect';
9
9
  import { createEditorStateStore } from '@dxos/ui-editor';
10
10
 
11
11
  import { meta } from '#meta';
12
- import { type EditorViewEntry, type EditorViewRegistry, MarkdownCapabilities, MarkdownStateSchema } from '#types';
12
+ import { MarkdownCapabilities } from '#types';
13
13
 
14
- const createEditorViewRegistry = (): EditorViewRegistry => {
15
- const views = new Map<string, EditorViewEntry>();
14
+ const createEditorViewRegistry = (): MarkdownCapabilities.EditorViewRegistry => {
15
+ const views = new Map<string, MarkdownCapabilities.EditorViewEntry>();
16
16
  return {
17
17
  register: (attendableId, view, documentId) => {
18
18
  views.set(attendableId, { view, documentId });
@@ -29,7 +29,7 @@ export default Capability.makeModule(
29
29
  // Persisted state using KVS store.
30
30
  const stateAtom = createKvsStore({
31
31
  key: `${meta.id}.state`,
32
- schema: MarkdownStateSchema,
32
+ schema: MarkdownCapabilities.StateSchema,
33
33
  defaultValue: () => ({ viewMode: {} }),
34
34
  });
35
35
 
@@ -8,25 +8,26 @@ import React from 'react';
8
8
 
9
9
  import { withPluginManager } from '@dxos/app-framework/testing';
10
10
  import { Filter, Obj } from '@dxos/echo';
11
- import { ClientPlugin } from '@dxos/plugin-client';
11
+ import { ClientPlugin } from '@dxos/plugin-client/testing';
12
12
  import { initializeIdentity } from '@dxos/plugin-client/testing';
13
13
  import { corePlugins } from '@dxos/plugin-testing';
14
- import { useQuery, useSpace } from '@dxos/react-client/echo';
14
+ import { useQuery, useSpaces } from '@dxos/react-client/echo';
15
15
  import { Panel } from '@dxos/react-ui';
16
16
  import { AttendableContainer } from '@dxos/react-ui-attention';
17
- import { translations as editorTranslations } from '@dxos/react-ui-editor';
17
+ import { Editor } from '@dxos/react-ui-editor';
18
+ import { translations as editorTranslations } from '@dxos/react-ui-editor/translations';
18
19
  import { Loading, withLayout } from '@dxos/react-ui/testing';
19
20
  import { Text } from '@dxos/schema';
20
21
 
22
+ import { translations } from '#translations';
21
23
  import { Markdown } from '#types';
22
24
 
23
- import { translations } from '../../translations';
24
- import { MarkdownEditor, type MarkdownEditorRootProps } from './MarkdownEditor';
25
+ import { MarkdownEditor, MarkdownEditorProvider, type MarkdownEditorProviderProps } from './MarkdownEditor';
25
26
 
26
- type DefaultStoryProps = Omit<MarkdownEditorRootProps, 'id' | 'extensions'>;
27
+ type DefaultStoryProps = Omit<MarkdownEditorProviderProps, 'id' | 'extensions' | 'children'>;
27
28
 
28
29
  const DefaultStory = (props: DefaultStoryProps) => {
29
- const space = useSpace();
30
+ const [space] = useSpaces();
30
31
  const [doc] = useQuery(space?.db, Filter.type(Markdown.Document));
31
32
  const id = doc && Obj.getDXN(doc).toString();
32
33
  if (!id) {
@@ -35,16 +36,20 @@ const DefaultStory = (props: DefaultStoryProps) => {
35
36
 
36
37
  return (
37
38
  <AttendableContainer id={id} tabIndex={0} classNames='dx-container'>
38
- <MarkdownEditor.Root id={id} object={doc} {...props}>
39
- <Panel.Root>
40
- <Panel.Toolbar asChild>
41
- <MarkdownEditor.Toolbar />
42
- </Panel.Toolbar>
43
- <Panel.Content asChild>
44
- <MarkdownEditor.Content />
45
- </Panel.Content>
46
- </Panel.Root>
47
- </MarkdownEditor.Root>
39
+ <MarkdownEditorProvider id={id} object={doc} {...props}>
40
+ {(editorRootProps) => (
41
+ <Editor.Root {...editorRootProps}>
42
+ <Panel.Root>
43
+ <Panel.Toolbar asChild>
44
+ <MarkdownEditor.Toolbar />
45
+ </Panel.Toolbar>
46
+ <Panel.Content asChild>
47
+ <MarkdownEditor.Content />
48
+ </Panel.Content>
49
+ </Panel.Root>
50
+ </Editor.Root>
51
+ )}
52
+ </MarkdownEditorProvider>
48
53
  </AttendableContainer>
49
54
  );
50
55
  };
@@ -6,20 +6,20 @@ import { type Extension } from '@codemirror/state';
6
6
  import { type EditorView } from '@codemirror/view';
7
7
  import { type Atom } from '@effect-atom/atom-react';
8
8
  import { createContext } from '@radix-ui/react-context';
9
- import React, { type PropsWithChildren, useMemo, useState } from 'react';
9
+ import React, { type ReactNode, useCallback, useMemo, useState } from 'react';
10
10
  import { createPortal } from 'react-dom';
11
11
 
12
12
  import { Surface } from '@dxos/app-framework/ui';
13
+ import { AppSurface } from '@dxos/app-toolkit/ui';
13
14
  import { Obj } from '@dxos/echo';
14
15
  import { DXN } from '@dxos/keys';
15
16
  import { useClient } from '@dxos/react-client';
16
17
  import { type ThemedClassName } from '@dxos/react-ui';
17
18
  import {
18
- EditorMenuProvider,
19
+ type EditorRootProps,
19
20
  type EditorToolbarState,
20
- type UseEditorMenu,
21
- useEditorMenu,
22
- useEditorToolbar,
21
+ createEditorController,
22
+ useEditorContext,
23
23
  } from '@dxos/react-ui-editor';
24
24
  import { type PreviewBlock, type PreviewOptions } from '@dxos/ui-editor';
25
25
  import { composable, composableProps } from '@dxos/ui-theme';
@@ -49,34 +49,34 @@ import {
49
49
  type MarkdownEditorContextValue = {
50
50
  id: string;
51
51
  attendableId?: string;
52
- setEditorView: (view: EditorView) => void;
53
- extensions: Extension[];
54
52
  previewBlocks: PreviewBlock[];
55
- toolbarState: Atom.Writable<EditorToolbarState>;
56
- popoverMenu: Omit<UseEditorMenu, 'extension'>;
57
- } & (Pick<ExtensionsOptions, 'compact' | 'viewMode'> &
58
- Pick<NaturalMarkdownToolbarProps, 'editorView' | 'onAction' | 'onFileUpload' | 'onViewModeChange'>);
53
+ } & Pick<ExtensionsOptions, 'compact' | 'viewMode'> &
54
+ Pick<NaturalMarkdownToolbarProps, 'onAction' | 'onFileUpload' | 'onViewModeChange'>;
59
55
 
60
56
  const [MarkdownEditorContextProvider, useMarkdownEditorContext] =
61
57
  createContext<MarkdownEditorContextValue>('MarkdownEditor.Context');
62
58
 
59
+ /**
60
+ * Props to spread onto `Editor.Root` from `MarkdownEditorProvider`'s render callback.
61
+ */
62
+ export type MarkdownEditorEditorRootProps = Omit<EditorRootProps, 'children'>;
63
+
63
64
  //
64
- // MarkdownEditor.Root
65
+ // MarkdownEditorProvider
65
66
  //
66
67
 
67
- type MarkdownEditorRootProps = PropsWithChildren<
68
- {
69
- object?: DocumentType;
70
- extensions?: Extension[];
71
- } & Pick<
72
- MarkdownEditorContextValue,
73
- 'id' | 'attendableId' | 'viewMode' | 'compact' | 'onAction' | 'onFileUpload' | 'onViewModeChange'
74
- > &
75
- Pick<UseEditorMenuOptionsProps, 'slashCommandGroups' | 'onLinkQuery'> &
76
- Pick<ExtensionsOptions, 'editorStateStore' | 'selectionManager' | 'settings' | 'onSelectObject'>
77
- >;
78
-
79
- const MarkdownEditorRoot = ({
68
+ export type MarkdownEditorProviderProps = {
69
+ object?: DocumentType;
70
+ extensions?: Extension[];
71
+ children: (editorRootProps: MarkdownEditorEditorRootProps) => ReactNode;
72
+ } & Pick<
73
+ MarkdownEditorContextValue,
74
+ 'id' | 'attendableId' | 'viewMode' | 'compact' | 'onAction' | 'onFileUpload' | 'onViewModeChange'
75
+ > &
76
+ Pick<UseEditorMenuOptionsProps, 'slashCommandGroups' | 'onLinkQuery'> &
77
+ Pick<ExtensionsOptions, 'editorStateStore' | 'selectionManager' | 'settings' | 'onSelectObject'>;
78
+
79
+ export const MarkdownEditorProvider = ({
80
80
  children,
81
81
  id,
82
82
  attendableId,
@@ -90,10 +90,10 @@ const MarkdownEditorRoot = ({
90
90
  slashCommandGroups,
91
91
  onLinkQuery,
92
92
  onSelectObject,
93
- ...props
94
- }: MarkdownEditorRootProps) => {
95
- const [editorView, setEditorView] = useState<EditorView>();
96
-
93
+ onAction,
94
+ onFileUpload,
95
+ onViewModeChange,
96
+ }: MarkdownEditorProviderProps) => {
97
97
  // Preview blocks.
98
98
  const [previewBlocks, setPreviewBlocks] = useState<PreviewBlock[]>([]);
99
99
  const previewOptions = useMemo<PreviewOptions>(
@@ -109,14 +109,10 @@ const MarkdownEditorRoot = ({
109
109
  [object],
110
110
  );
111
111
 
112
- // Toolbar state.
113
- const toolbarState = useEditorToolbar({ viewMode });
114
-
115
- // Context menu.
116
- const menuOptions = useEditorMenuOptions({ editorView, slashCommandGroups, onLinkQuery });
117
- const { extension: menuExtension, ...menuProps } = useEditorMenu(menuOptions);
112
+ // Context menu options (Editor.Root calls useEditorMenu with these props).
113
+ const menuOptions = useEditorMenuOptions({ slashCommandGroups, onLinkQuery });
118
114
 
119
- // Extensions.
115
+ // Core markdown extensions (popover/menu extension is added by Editor.Root).
120
116
  const coreExtensions = useExtensions({
121
117
  id,
122
118
  object,
@@ -130,67 +126,85 @@ const MarkdownEditorRoot = ({
130
126
  });
131
127
 
132
128
  const extensions = useMemo(
133
- () => [coreExtensions, menuExtension, extensionsProp].filter(isNonNullable),
134
- [coreExtensions, menuExtension, extensionsProp],
129
+ () => [coreExtensions, extensionsProp].filter(isNonNullable).flat(),
130
+ [coreExtensions, extensionsProp],
131
+ );
132
+
133
+ const editorRootProps = useMemo<MarkdownEditorEditorRootProps>(
134
+ () => ({
135
+ extensions,
136
+ viewMode,
137
+ getMenu: menuOptions.getMenu,
138
+ trigger: menuOptions.trigger,
139
+ placeholder: menuOptions.placeholder,
140
+ ...(menuOptions.filter !== undefined ? { filter: menuOptions.filter } : {}),
141
+ ...(menuOptions.triggerKey !== undefined ? { triggerKey: menuOptions.triggerKey } : {}),
142
+ }),
143
+ [extensions, viewMode, menuOptions],
144
+ );
145
+
146
+ const markdownContextValue = useMemo<MarkdownEditorContextValue>(
147
+ () => ({
148
+ id,
149
+ attendableId,
150
+ compact,
151
+ viewMode,
152
+ previewBlocks,
153
+ onAction,
154
+ onFileUpload,
155
+ onViewModeChange,
156
+ }),
157
+ [id, attendableId, compact, viewMode, previewBlocks, onAction, onFileUpload, onViewModeChange],
135
158
  );
136
159
 
137
160
  return (
138
- <MarkdownEditorContextProvider
139
- id={id}
140
- attendableId={attendableId}
141
- compact={compact}
142
- editorView={editorView}
143
- setEditorView={setEditorView}
144
- extensions={extensions}
145
- previewBlocks={previewBlocks}
146
- toolbarState={toolbarState}
147
- popoverMenu={menuProps}
148
- viewMode={viewMode}
149
- {...props}
150
- >
151
- {children}
152
- </MarkdownEditorContextProvider>
161
+ <MarkdownEditorContextProvider {...markdownContextValue}>{children(editorRootProps)}</MarkdownEditorContextProvider>
153
162
  );
154
163
  };
155
164
 
156
- MarkdownEditorRoot.displayName = 'MarkdownEditor.Root';
165
+ MarkdownEditorProvider.displayName = 'MarkdownEditor.Provider';
157
166
 
158
167
  //
159
- // MarkdownEditor.Main
168
+ // MarkdownEditor.Content
160
169
  //
161
170
 
162
171
  const MARKDOWN_EDITOR_CONTENT_NAME = 'MarkdownEditor.Content';
163
172
 
164
173
  type MarkdownEditorContentProps = Omit<NaturalMarkdownEditorContentProps, 'id' | 'extensions' | 'toolbarState'>;
165
174
 
166
- const MarkdownEditorContent = composable<HTMLDivElement, MarkdownEditorContentProps>(({ ...props }, _forwardedRef) => {
167
- const {
168
- id,
169
- attendableId,
170
- compact,
171
- editorView,
172
- setEditorView,
173
- viewMode,
174
- toolbarState,
175
- extensions,
176
- popoverMenu: { groupsRef, ...menuProps },
177
- } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
175
+ const MarkdownEditorContent = composable<HTMLDivElement, MarkdownEditorContentProps>(
176
+ ({ compact: compactProp, ...props }, _forwardedRef) => {
177
+ const {
178
+ id,
179
+ attendableId,
180
+ compact = compactProp,
181
+ viewMode,
182
+ onFileUpload,
183
+ } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
184
+ const { extensions, setController, state } = useEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
185
+
186
+ const handleRef = useCallback(
187
+ (view: EditorView | null) => {
188
+ setController(createEditorController(view));
189
+ },
190
+ [setController],
191
+ );
178
192
 
179
- return (
180
- <EditorMenuProvider view={editorView} groups={groupsRef.current} {...menuProps}>
193
+ return (
181
194
  <NaturalMarkdownEditorContent
182
195
  {...composableProps(props)}
183
196
  id={id}
184
197
  attendableId={attendableId}
185
198
  compact={compact}
186
199
  viewMode={viewMode}
187
- toolbarState={toolbarState}
200
+ toolbarState={state as Atom.Writable<EditorToolbarState>}
188
201
  extensions={extensions}
189
- ref={setEditorView}
202
+ onFileUpload={onFileUpload}
203
+ ref={handleRef}
190
204
  />
191
- </EditorMenuProvider>
192
- );
193
- });
205
+ );
206
+ },
207
+ );
194
208
 
195
209
  MarkdownEditorContent.displayName = MARKDOWN_EDITOR_CONTENT_NAME;
196
210
 
@@ -201,19 +215,20 @@ MarkdownEditorContent.displayName = MARKDOWN_EDITOR_CONTENT_NAME;
201
215
  const MARKDOWN_EDITOR_TOOLBAR_NAME = 'MarkdownEditor.Toolbar';
202
216
 
203
217
  type MarkdownEditorToolbarProps = ThemedClassName<
204
- Omit<NaturalMarkdownToolbarProps, 'state' | 'editorView' | 'onAction' | 'onFileUpload' | 'onViewModeChange' | 'id'>
218
+ Omit<NaturalMarkdownToolbarProps, 'editorView' | 'onAction' | 'onFileUpload' | 'onViewModeChange' | 'id'>
205
219
  >;
206
220
 
207
221
  const MarkdownEditorToolbar = (props: MarkdownEditorToolbarProps) => {
208
- const { id, attendableId, editorView, toolbarState, onAction, onFileUpload, onViewModeChange } =
222
+ const { id, attendableId, onAction, onFileUpload, onViewModeChange } =
209
223
  useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
210
224
 
225
+ const { controller } = useEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
226
+
211
227
  return (
212
228
  <NaturalMarkdownToolbar
213
229
  {...props}
214
230
  id={attendableId ?? id}
215
- editorView={editorView}
216
- state={toolbarState}
231
+ editorView={controller?.view ?? undefined}
217
232
  onAction={onAction}
218
233
  onFileUpload={onFileUpload}
219
234
  onViewModeChange={onViewModeChange}
@@ -251,23 +266,21 @@ const PreviewBlock = ({ el, link }: PreviewBlock) => {
251
266
  const subject = client.graph.makeRef(dxn).target;
252
267
  const data = useMemo(() => ({ subject }), [subject]);
253
268
 
254
- return createPortal(<Surface.Surface role='card--content' data={data} limit={1} />, el);
269
+ return createPortal(<Surface.Surface type={AppSurface.Card} data={data} limit={1} />, el);
255
270
  };
256
271
 
257
272
  //
258
273
  // MarkdownEditor
259
274
  //
260
275
 
276
+ /** @private */
261
277
  export const MarkdownEditor = {
262
- Root: MarkdownEditorRoot,
263
278
  Content: MarkdownEditorContent,
264
279
  Toolbar: MarkdownEditorToolbar,
265
280
  Blocks: MarkdownEditorBlocks,
266
281
  };
267
282
 
268
- export type {
269
- MarkdownEditorRootProps,
270
- MarkdownEditorContentProps,
271
- MarkdownEditorToolbarProps,
272
- MarkdownEditorBlocksProps,
273
- };
283
+ export type { MarkdownEditorContentProps, MarkdownEditorToolbarProps, MarkdownEditorBlocksProps };
284
+
285
+ /** @deprecated Use `MarkdownEditorProviderProps`. */
286
+ export type MarkdownEditorRootProps = MarkdownEditorProviderProps;
@@ -17,9 +17,8 @@ import {
17
17
  import {
18
18
  type EditorSelectionState,
19
19
  type EditorStateStore,
20
- type EditorViewMode,
21
20
  type ThemeExtensionsOptions,
22
- compactSlots,
21
+ mobileSlots,
23
22
  createBasicExtensions,
24
23
  createMarkdownExtensions,
25
24
  createThemeExtensions,
@@ -29,6 +28,7 @@ import {
29
28
  processEditorPayload,
30
29
  editorClassNames,
31
30
  } from '@dxos/ui-editor';
31
+ import { type EditorViewMode } from '@dxos/ui-editor/types';
32
32
  import { mx } from '@dxos/ui-theme';
33
33
  import { isTruthy } from '@dxos/util';
34
34
 
@@ -52,6 +52,7 @@ export type MarkdownEditorContentProps = ThemedClassName<{
52
52
  Pick<MarkdownEditorToolbarProps, 'onFileUpload'> &
53
53
  Pick<ThemeExtensionsOptions, 'slots'>;
54
54
 
55
+ // TODO(burdon): Move controller to Root.
55
56
  export const MarkdownEditorContent = forwardRef<EditorView | null, MarkdownEditorContentProps>(
56
57
  (
57
58
  {
@@ -109,7 +110,7 @@ export const MarkdownEditorContent = forwardRef<EditorView | null, MarkdownEdito
109
110
  }),
110
111
  createThemeExtensions({
111
112
  themeMode,
112
- slots: slots ?? (compact ? compactSlots : documentSlots),
113
+ slots: slots ?? (compact ? mobileSlots : documentSlots),
113
114
  syntaxHighlighting: true,
114
115
  }),
115
116
  createMarkdownExtensions(),
@@ -129,7 +130,7 @@ export const MarkdownEditorContent = forwardRef<EditorView | null, MarkdownEdito
129
130
  extensions,
130
131
  ].filter(isTruthy),
131
132
  }),
132
- [id, viewMode, themeMode, extensions],
133
+ [id, viewMode, themeMode, extensions, compact],
133
134
  );
134
135
 
135
136
  useImperativeHandle<EditorView | null, EditorView | null>(forwardedRef, () => editorView, [editorView]);
@@ -148,7 +149,6 @@ export const MarkdownEditorContent = forwardRef<EditorView | null, MarkdownEdito
148
149
  <div
149
150
  {...focusAttributes}
150
151
  className={mx(editorClassNames(role), classNames)}
151
- role='none'
152
152
  data-testid='composer.markdownRoot'
153
153
  data-popover-collision-boundary={true}
154
154
  ref={parentRef}
@@ -6,8 +6,7 @@ import { type EditorView } from '@codemirror/view';
6
6
  import React, { useCallback, useState } from 'react';
7
7
 
8
8
  import { type FileInfo } from '@dxos/app-toolkit';
9
- import { invariant } from '@dxos/invariant';
10
- import { EditorToolbar, type EditorToolbarProps } from '@dxos/react-ui-editor';
9
+ import { Editor, type EditorToolbarProps } from '@dxos/react-ui-editor';
11
10
  import { composable, composableProps } from '@dxos/ui-theme';
12
11
 
13
12
  import { FileUpload, type FileUploadAction } from './FileUpload';
@@ -16,36 +15,26 @@ export type MarkdownEditorToolbarProps = {
16
15
  id: string;
17
16
  editorView?: EditorView;
18
17
  onFileUpload?: (file: File) => Promise<FileInfo | undefined>;
19
- } & Pick<EditorToolbarProps, 'role' | 'state' | 'customActions' | 'onAction' | 'onViewModeChange'>;
18
+ } & Pick<EditorToolbarProps, 'role' | 'customActions' | 'onAction' | 'onViewModeChange'>;
20
19
 
21
20
  export const MarkdownEditorToolbar = composable<HTMLDivElement, MarkdownEditorToolbarProps>(
22
- (
23
- { id, role, state, editorView, customActions, onAction, onFileUpload, onViewModeChange, ...props },
24
- forwardedRef,
25
- ) => {
21
+ ({ id, role, editorView, customActions, onAction, onFileUpload, onViewModeChange, ...props }, forwardedRef) => {
26
22
  const { className, ...rest } = composableProps(props);
27
23
  const [upload, setUpload] = useState<FileUploadAction | null>(null);
28
24
  const uploadRef = useCallback((next: FileUploadAction) => setUpload(() => next), []);
29
25
 
30
- const getView = useCallback(() => {
31
- invariant(editorView);
32
- return editorView;
33
- }, [editorView]);
34
-
35
26
  if (!editorView) {
36
27
  return <div className={className} {...rest} ref={forwardedRef} />;
37
28
  }
38
29
 
39
30
  return (
40
- <div role='none' className='contents' ref={forwardedRef}>
41
- <EditorToolbar
31
+ <div className='contents' ref={forwardedRef}>
32
+ <Editor.Toolbar
42
33
  {...rest}
43
34
  classNames={className}
44
35
  attendableId={id}
45
36
  role={role}
46
- state={state}
47
37
  customActions={customActions}
48
- getView={getView}
49
38
  onAction={onAction}
50
39
  onImageUpload={upload ?? undefined}
51
40
  onViewModeChange={onViewModeChange}
@@ -6,7 +6,8 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
 
7
7
  import { withLayout, withTheme } from '@dxos/react-ui/testing';
8
8
 
9
- import { translations } from '../../translations';
9
+ import { translations } from '#translations';
10
+
10
11
  import { MarkdownSettings } from './MarkdownSettings';
11
12
 
12
13
  const meta = {