@dxos/plugin-markdown 0.8.4-main.c85a9c8dae → 0.8.4-main.d9fc60f731

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 (429) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/EditableMarkdownCard-AW7MD35U.mjs +34 -0
  4. package/dist/lib/neutral/EditableMarkdownCard-AW7MD35U.mjs.map +7 -0
  5. package/dist/lib/{browser/MarkdownContainer-KER2N5M2.mjs → neutral/MarkdownArticle-Z4QRU3WD.mjs} +52 -34
  6. package/dist/lib/neutral/MarkdownArticle-Z4QRU3WD.mjs.map +7 -0
  7. package/dist/lib/neutral/MarkdownCard-36P4AHYL.mjs +107 -0
  8. package/dist/lib/neutral/MarkdownCard-36P4AHYL.mjs.map +7 -0
  9. package/dist/lib/neutral/MarkdownPlugin.mjs +58 -0
  10. package/dist/lib/neutral/MarkdownPlugin.mjs.map +7 -0
  11. package/dist/lib/neutral/MarkdownPlugin.node.mjs +25 -0
  12. package/dist/lib/neutral/MarkdownPlugin.node.mjs.map +7 -0
  13. package/dist/lib/neutral/MarkdownPlugin.workerd.mjs +23 -0
  14. package/dist/lib/neutral/MarkdownPlugin.workerd.mjs.map +7 -0
  15. package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs +32 -0
  16. package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs.map +7 -0
  17. package/dist/lib/{browser/anchor-sort-EHJGOCYW.mjs → neutral/anchor-sort-37GOHBLW.mjs} +6 -8
  18. package/dist/lib/neutral/anchor-sort-37GOHBLW.mjs.map +7 -0
  19. package/dist/lib/{browser/app-graph-serializer-QBZDVASK.mjs → neutral/app-graph-serializer-EN5E3BMG.mjs} +14 -18
  20. package/dist/lib/neutral/app-graph-serializer-EN5E3BMG.mjs.map +7 -0
  21. package/dist/lib/neutral/blueprint-definition-33OK2KUL.mjs +15 -0
  22. package/dist/lib/neutral/blueprint-definition-33OK2KUL.mjs.map +7 -0
  23. package/dist/lib/{browser → neutral}/blueprints/index.mjs +2 -3
  24. package/dist/lib/neutral/capabilities/index.mjs +25 -0
  25. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  26. package/dist/lib/neutral/capabilities/node.mjs +11 -0
  27. package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
  28. package/dist/lib/neutral/chunk-36QFEVOZ.mjs +30 -0
  29. package/dist/lib/neutral/chunk-36QFEVOZ.mjs.map +7 -0
  30. package/dist/lib/neutral/chunk-A45UVZEH.mjs +285 -0
  31. package/dist/lib/neutral/chunk-A45UVZEH.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-E5NVTEKQ.mjs +8 -0
  33. package/dist/lib/neutral/chunk-E5NVTEKQ.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  35. package/dist/lib/neutral/chunk-KDN4GKG2.mjs +98 -0
  36. package/dist/lib/neutral/chunk-KDN4GKG2.mjs.map +7 -0
  37. package/dist/lib/neutral/chunk-LXNSKCPD.mjs +44 -0
  38. package/dist/lib/neutral/chunk-LXNSKCPD.mjs.map +7 -0
  39. package/dist/lib/neutral/comment-config-ZEA66BUR.mjs +31 -0
  40. package/dist/lib/neutral/comment-config-ZEA66BUR.mjs.map +7 -0
  41. package/dist/lib/neutral/components/index.mjs +371 -0
  42. package/dist/lib/neutral/components/index.mjs.map +7 -0
  43. package/dist/lib/neutral/containers/index.mjs +13 -0
  44. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  45. package/dist/lib/neutral/create-HONLDBVT.mjs +28 -0
  46. package/dist/lib/neutral/create-HONLDBVT.mjs.map +7 -0
  47. package/dist/lib/neutral/create-markdown-UCPD2Z3V.mjs +20 -0
  48. package/dist/lib/neutral/create-markdown-UCPD2Z3V.mjs.map +7 -0
  49. package/dist/lib/neutral/create-object-VU3KX663.mjs +28 -0
  50. package/dist/lib/neutral/create-object-VU3KX663.mjs.map +7 -0
  51. package/dist/lib/neutral/hooks/index.mjs +316 -0
  52. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  53. package/dist/lib/neutral/index.mjs +42 -0
  54. package/dist/lib/neutral/meta.json +1 -0
  55. package/dist/lib/neutral/meta.mjs +8 -0
  56. package/dist/lib/neutral/open-VVDMNJ7J.mjs +20 -0
  57. package/dist/lib/neutral/open-VVDMNJ7J.mjs.map +7 -0
  58. package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs +13 -0
  59. package/dist/lib/neutral/operation-handler-2ARMPBGZ.mjs.map +7 -0
  60. package/dist/lib/neutral/operations/index.mjs +8 -0
  61. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  62. package/dist/lib/neutral/plugin.mjs +16 -0
  63. package/dist/lib/neutral/plugin.mjs.map +7 -0
  64. package/dist/lib/{node-esm/react-surface-LC5CI6VP.mjs → neutral/react-surface-EMYFM37T.mjs} +45 -42
  65. package/dist/lib/neutral/react-surface-EMYFM37T.mjs.map +7 -0
  66. package/dist/lib/neutral/scroll-to-anchor-Y3P676QG.mjs +47 -0
  67. package/dist/lib/neutral/scroll-to-anchor-Y3P676QG.mjs.map +7 -0
  68. package/dist/lib/neutral/set-view-mode-JZB7UXIF.mjs +24 -0
  69. package/dist/lib/neutral/set-view-mode-JZB7UXIF.mjs.map +7 -0
  70. package/dist/lib/{browser/settings-7FMWKB7N.mjs → neutral/settings-TDGDLCUR.mjs} +7 -11
  71. package/dist/lib/neutral/settings-TDGDLCUR.mjs.map +7 -0
  72. package/dist/lib/neutral/state-5COCF5PN.mjs +44 -0
  73. package/dist/lib/neutral/state-5COCF5PN.mjs.map +7 -0
  74. package/dist/lib/neutral/testing.mjs +30 -0
  75. package/dist/lib/neutral/testing.mjs.map +7 -0
  76. package/dist/lib/neutral/translations.mjs +44 -0
  77. package/dist/lib/neutral/translations.mjs.map +7 -0
  78. package/dist/lib/neutral/types/index.mjs +16 -0
  79. package/dist/lib/neutral/types/index.mjs.map +7 -0
  80. package/dist/lib/neutral/update-markdown-F25F4EPF.mjs +44 -0
  81. package/dist/lib/neutral/update-markdown-F25F4EPF.mjs.map +7 -0
  82. package/dist/types/src/MarkdownPlugin.d.ts +1 -0
  83. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  84. package/dist/types/src/{cli/plugin.d.ts → MarkdownPlugin.node.d.ts} +2 -1
  85. package/dist/types/src/MarkdownPlugin.node.d.ts.map +1 -0
  86. package/dist/types/src/MarkdownPlugin.test.d.ts +2 -0
  87. package/dist/types/src/MarkdownPlugin.test.d.ts.map +1 -0
  88. package/dist/types/src/MarkdownPlugin.workerd.d.ts +4 -0
  89. package/dist/types/src/MarkdownPlugin.workerd.d.ts.map +1 -0
  90. package/dist/types/src/blueprints/markdown-blueprint.d.ts +2 -2
  91. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/blueprint-definition.d.ts +6 -0
  95. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  96. package/dist/types/src/capabilities/comment-config.d.ts +12 -0
  97. package/dist/types/src/capabilities/comment-config.d.ts.map +1 -0
  98. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  99. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  100. package/dist/types/src/capabilities/index.d.ts +22 -7
  101. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/node.d.ts +10 -0
  103. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  104. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  105. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  106. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/{settings/settings.d.ts → settings.d.ts} +1 -2
  108. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/state.d.ts +6 -0
  110. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  111. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +33 -22
  112. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  113. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +3 -3
  114. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  115. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +6 -3
  116. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  117. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +6 -5
  118. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  119. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +6 -0
  120. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -0
  121. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +94 -0
  122. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -0
  123. package/dist/types/src/components/MarkdownSettings/index.d.ts +2 -0
  124. package/dist/types/src/components/MarkdownSettings/index.d.ts.map +1 -0
  125. package/dist/types/src/components/index.d.ts +2 -0
  126. package/dist/types/src/components/index.d.ts.map +1 -1
  127. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts +15 -0
  128. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.d.ts.map +1 -0
  129. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.stories.d.ts +9 -0
  130. package/dist/types/src/containers/EditableMarkdownCard/EditableMarkdownCard.stories.d.ts.map +1 -0
  131. package/dist/types/src/containers/EditableMarkdownCard/index.d.ts +3 -0
  132. package/dist/types/src/containers/EditableMarkdownCard/index.d.ts.map +1 -0
  133. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts +40 -0
  134. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts.map +1 -0
  135. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts +97 -0
  136. package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts.map +1 -0
  137. package/dist/types/src/containers/MarkdownArticle/index.d.ts +3 -0
  138. package/dist/types/src/containers/MarkdownArticle/index.d.ts.map +1 -0
  139. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts +1 -1
  140. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  141. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +1 -1
  142. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
  143. package/dist/types/src/containers/MarkdownCard/index.d.ts +1 -2
  144. package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -1
  145. package/dist/types/src/containers/MarkdownCard/snippet.d.ts +17 -0
  146. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -0
  147. package/dist/types/src/containers/index.d.ts +3 -3
  148. package/dist/types/src/containers/index.d.ts.map +1 -1
  149. package/dist/types/src/hooks/index.d.ts +0 -1
  150. package/dist/types/src/hooks/index.d.ts.map +1 -1
  151. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -1
  152. package/dist/types/src/hooks/useExtensions.d.ts +10 -6
  153. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  154. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  155. package/dist/types/src/index.d.ts +2 -3
  156. package/dist/types/src/index.d.ts.map +1 -1
  157. package/dist/types/src/meta.d.ts +1 -1
  158. package/dist/types/src/meta.d.ts.map +1 -1
  159. package/dist/types/src/operations/create-markdown.d.ts +5 -0
  160. package/dist/types/src/operations/create-markdown.d.ts.map +1 -0
  161. package/dist/types/src/operations/create.d.ts +5 -0
  162. package/dist/types/src/operations/create.d.ts.map +1 -0
  163. package/dist/types/src/operations/create.test.d.ts.map +1 -0
  164. package/dist/types/src/operations/index.d.ts +3 -0
  165. package/dist/types/src/operations/index.d.ts.map +1 -0
  166. package/dist/types/src/operations/open.d.ts +5 -0
  167. package/dist/types/src/operations/open.d.ts.map +1 -0
  168. package/dist/types/src/operations/scroll-to-anchor.d.ts +5 -0
  169. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -0
  170. package/dist/types/src/operations/set-view-mode.d.ts +5 -0
  171. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -0
  172. package/dist/types/src/operations/update-markdown.d.ts +5 -0
  173. package/dist/types/src/operations/update-markdown.d.ts.map +1 -0
  174. package/dist/types/src/operations/update.test.d.ts.map +1 -0
  175. package/dist/types/src/plugin.d.ts +4 -0
  176. package/dist/types/src/plugin.d.ts.map +1 -0
  177. package/dist/types/src/testing.d.ts +1 -0
  178. package/dist/types/src/testing.d.ts.map +1 -1
  179. package/dist/types/src/translations.d.ts +70 -62
  180. package/dist/types/src/translations.d.ts.map +1 -1
  181. package/dist/types/src/types/Markdown.d.ts +23 -22
  182. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  183. package/dist/types/src/types/MarkdownCapabilities.d.ts +32 -0
  184. package/dist/types/src/types/MarkdownCapabilities.d.ts.map +1 -0
  185. package/dist/types/src/types/MarkdownEvents.d.ts +3 -0
  186. package/dist/types/src/types/MarkdownEvents.d.ts.map +1 -0
  187. package/dist/types/src/types/MarkdownOperation.d.ts +64 -0
  188. package/dist/types/src/types/MarkdownOperation.d.ts.map +1 -0
  189. package/dist/types/src/types/Settings.d.ts +30 -0
  190. package/dist/types/src/types/Settings.d.ts.map +1 -0
  191. package/dist/types/src/types/index.d.ts +5 -5
  192. package/dist/types/src/types/index.d.ts.map +1 -1
  193. package/dist/types/src/types/types.d.ts +1 -0
  194. package/dist/types/src/types/types.d.ts.map +1 -1
  195. package/dist/types/src/util.d.ts +2 -2
  196. package/dist/types/src/util.d.ts.map +1 -1
  197. package/dist/types/tsconfig.tsbuildinfo +1 -1
  198. package/package.json +133 -90
  199. package/src/MarkdownPlugin.node.ts +20 -0
  200. package/src/MarkdownPlugin.test.ts +26 -0
  201. package/src/MarkdownPlugin.tsx +15 -55
  202. package/src/MarkdownPlugin.workerd.ts +19 -0
  203. package/src/blueprints/markdown-blueprint.ts +9 -12
  204. package/src/capabilities/{anchor-sort/anchor-sort.ts → anchor-sort.ts} +3 -3
  205. package/src/capabilities/{app-graph-serializer/app-graph-serializer.ts → app-graph-serializer.ts} +14 -10
  206. package/src/capabilities/{blueprint-definition/blueprint-definition.ts → blueprint-definition.ts} +3 -1
  207. package/src/capabilities/comment-config.ts +33 -0
  208. package/src/capabilities/create-object.ts +31 -0
  209. package/src/capabilities/index.ts +16 -7
  210. package/src/capabilities/node.ts +13 -0
  211. package/src/capabilities/operation-handler.ts +16 -0
  212. package/src/capabilities/react-surface.tsx +128 -0
  213. package/src/capabilities/{settings/settings.ts → settings.ts} +2 -2
  214. package/src/capabilities/state.ts +47 -0
  215. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +39 -36
  216. package/src/components/MarkdownEditor/MarkdownEditor.tsx +122 -94
  217. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +27 -17
  218. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +37 -57
  219. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +40 -0
  220. package/src/components/MarkdownSettings/MarkdownSettings.tsx +35 -0
  221. package/src/components/MarkdownSettings/index.ts +5 -0
  222. package/src/components/index.ts +4 -0
  223. package/src/containers/EditableMarkdownCard/EditableMarkdownCard.stories.tsx +86 -0
  224. package/src/containers/EditableMarkdownCard/EditableMarkdownCard.tsx +44 -0
  225. package/src/containers/EditableMarkdownCard/index.ts +6 -0
  226. package/src/containers/{MarkdownContainer/MarkdownContainer.stories.tsx → MarkdownArticle/MarkdownArticle.stories.tsx} +31 -26
  227. package/src/containers/MarkdownArticle/MarkdownArticle.tsx +146 -0
  228. package/src/containers/MarkdownArticle/index.ts +6 -0
  229. package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +12 -12
  230. package/src/containers/MarkdownCard/MarkdownCard.tsx +38 -24
  231. package/src/containers/MarkdownCard/index.ts +1 -3
  232. package/src/containers/MarkdownCard/snippet.ts +54 -0
  233. package/src/containers/index.ts +3 -3
  234. package/src/hooks/index.ts +0 -1
  235. package/src/hooks/useEditorMenuOptions.ts +2 -2
  236. package/src/hooks/useExtensions.tsx +65 -42
  237. package/src/hooks/useLinkQuery.ts +42 -32
  238. package/src/index.ts +2 -6
  239. package/src/meta.ts +17 -7
  240. package/src/operations/create-markdown.ts +19 -0
  241. package/src/operations/create.conversations.json +1 -0
  242. package/src/{blueprints/functions → operations}/create.test.ts +30 -26
  243. package/src/operations/create.ts +26 -0
  244. package/src/operations/index.ts +14 -0
  245. package/src/operations/open.ts +25 -0
  246. package/src/operations/scroll-to-anchor.ts +38 -0
  247. package/src/operations/set-view-mode.ts +23 -0
  248. package/src/operations/update-markdown.ts +51 -0
  249. package/src/operations/update.conversations.json +1 -0
  250. package/src/{blueprints/functions → operations}/update.test.ts +50 -52
  251. package/src/plugin.ts +11 -0
  252. package/src/testing.ts +22 -9
  253. package/src/translations.ts +27 -38
  254. package/src/types/Markdown.ts +15 -31
  255. package/src/types/MarkdownCapabilities.ts +51 -0
  256. package/src/types/MarkdownEvents.ts +14 -0
  257. package/src/types/MarkdownOperation.ts +133 -0
  258. package/src/types/Settings.ts +85 -0
  259. package/src/types/index.ts +6 -6
  260. package/src/types/types.ts +4 -1
  261. package/src/util.tsx +4 -4
  262. package/dist/lib/browser/MarkdownCard-5NPSEJ2M.mjs +0 -61
  263. package/dist/lib/browser/MarkdownCard-5NPSEJ2M.mjs.map +0 -7
  264. package/dist/lib/browser/MarkdownContainer-KER2N5M2.mjs.map +0 -7
  265. package/dist/lib/browser/MarkdownSettings-2N4TT2FG.mjs +0 -106
  266. package/dist/lib/browser/MarkdownSettings-2N4TT2FG.mjs.map +0 -7
  267. package/dist/lib/browser/anchor-sort-EHJGOCYW.mjs.map +0 -7
  268. package/dist/lib/browser/app-graph-serializer-QBZDVASK.mjs.map +0 -7
  269. package/dist/lib/browser/blueprint-definition-ASGDSKKE.mjs +0 -18
  270. package/dist/lib/browser/blueprint-definition-ASGDSKKE.mjs.map +0 -7
  271. package/dist/lib/browser/chunk-7JEOX3X6.mjs +0 -783
  272. package/dist/lib/browser/chunk-7JEOX3X6.mjs.map +0 -7
  273. package/dist/lib/browser/chunk-HK6EGNP5.mjs +0 -8
  274. package/dist/lib/browser/chunk-HK6EGNP5.mjs.map +0 -7
  275. package/dist/lib/browser/chunk-P3TN2W6M.mjs +0 -154
  276. package/dist/lib/browser/chunk-P3TN2W6M.mjs.map +0 -7
  277. package/dist/lib/browser/chunk-RJO5W5YX.mjs +0 -59
  278. package/dist/lib/browser/chunk-RJO5W5YX.mjs.map +0 -7
  279. package/dist/lib/browser/chunk-W24NJ6WB.mjs +0 -178
  280. package/dist/lib/browser/chunk-W24NJ6WB.mjs.map +0 -7
  281. package/dist/lib/browser/chunk-YBMRREXE.mjs +0 -28
  282. package/dist/lib/browser/chunk-YBMRREXE.mjs.map +0 -7
  283. package/dist/lib/browser/cli/index.mjs +0 -35
  284. package/dist/lib/browser/cli/index.mjs.map +0 -7
  285. package/dist/lib/browser/index.mjs +0 -157
  286. package/dist/lib/browser/index.mjs.map +0 -7
  287. package/dist/lib/browser/meta.json +0 -1
  288. package/dist/lib/browser/operation-resolver-3KOXJM7P.mjs +0 -54
  289. package/dist/lib/browser/operation-resolver-3KOXJM7P.mjs.map +0 -7
  290. package/dist/lib/browser/react-surface-WU4VTE43.mjs +0 -115
  291. package/dist/lib/browser/react-surface-WU4VTE43.mjs.map +0 -7
  292. package/dist/lib/browser/settings-7FMWKB7N.mjs.map +0 -7
  293. package/dist/lib/browser/state-7UJKJDGE.mjs +0 -31
  294. package/dist/lib/browser/state-7UJKJDGE.mjs.map +0 -7
  295. package/dist/lib/browser/types/index.mjs +0 -18
  296. package/dist/lib/node-esm/MarkdownCard-4MXS7AQR.mjs +0 -62
  297. package/dist/lib/node-esm/MarkdownCard-4MXS7AQR.mjs.map +0 -7
  298. package/dist/lib/node-esm/MarkdownContainer-BZ637MS3.mjs +0 -109
  299. package/dist/lib/node-esm/MarkdownContainer-BZ637MS3.mjs.map +0 -7
  300. package/dist/lib/node-esm/MarkdownSettings-FQTYCTD7.mjs +0 -107
  301. package/dist/lib/node-esm/MarkdownSettings-FQTYCTD7.mjs.map +0 -7
  302. package/dist/lib/node-esm/anchor-sort-QWZO6B2R.mjs +0 -35
  303. package/dist/lib/node-esm/anchor-sort-QWZO6B2R.mjs.map +0 -7
  304. package/dist/lib/node-esm/app-graph-serializer-3UVXEHJG.mjs +0 -61
  305. package/dist/lib/node-esm/app-graph-serializer-3UVXEHJG.mjs.map +0 -7
  306. package/dist/lib/node-esm/blueprint-definition-TG7OZIWW.mjs +0 -19
  307. package/dist/lib/node-esm/blueprint-definition-TG7OZIWW.mjs.map +0 -7
  308. package/dist/lib/node-esm/blueprints/index.mjs +0 -10
  309. package/dist/lib/node-esm/chunk-ANIFP6M2.mjs +0 -60
  310. package/dist/lib/node-esm/chunk-ANIFP6M2.mjs.map +0 -7
  311. package/dist/lib/node-esm/chunk-KCH3EL53.mjs +0 -10
  312. package/dist/lib/node-esm/chunk-KCH3EL53.mjs.map +0 -7
  313. package/dist/lib/node-esm/chunk-N73JZ4CD.mjs +0 -784
  314. package/dist/lib/node-esm/chunk-N73JZ4CD.mjs.map +0 -7
  315. package/dist/lib/node-esm/chunk-NBGAJPVH.mjs +0 -179
  316. package/dist/lib/node-esm/chunk-NBGAJPVH.mjs.map +0 -7
  317. package/dist/lib/node-esm/chunk-W7AM4HCG.mjs +0 -29
  318. package/dist/lib/node-esm/chunk-W7AM4HCG.mjs.map +0 -7
  319. package/dist/lib/node-esm/chunk-WBZQ246U.mjs +0 -155
  320. package/dist/lib/node-esm/chunk-WBZQ246U.mjs.map +0 -7
  321. package/dist/lib/node-esm/cli/index.mjs +0 -36
  322. package/dist/lib/node-esm/cli/index.mjs.map +0 -7
  323. package/dist/lib/node-esm/index.mjs +0 -158
  324. package/dist/lib/node-esm/index.mjs.map +0 -7
  325. package/dist/lib/node-esm/meta.json +0 -1
  326. package/dist/lib/node-esm/operation-resolver-2MEWKRFP.mjs +0 -55
  327. package/dist/lib/node-esm/operation-resolver-2MEWKRFP.mjs.map +0 -7
  328. package/dist/lib/node-esm/react-surface-LC5CI6VP.mjs.map +0 -7
  329. package/dist/lib/node-esm/settings-DBK2SPWT.mjs +0 -39
  330. package/dist/lib/node-esm/settings-DBK2SPWT.mjs.map +0 -7
  331. package/dist/lib/node-esm/state-EEPLRAOT.mjs +0 -32
  332. package/dist/lib/node-esm/state-EEPLRAOT.mjs.map +0 -7
  333. package/dist/lib/node-esm/types/index.mjs +0 -19
  334. package/dist/types/src/blueprints/functions/create.d.ts +0 -8
  335. package/dist/types/src/blueprints/functions/create.d.ts.map +0 -1
  336. package/dist/types/src/blueprints/functions/create.test.d.ts.map +0 -1
  337. package/dist/types/src/blueprints/functions/index.d.ts +0 -42
  338. package/dist/types/src/blueprints/functions/index.d.ts.map +0 -1
  339. package/dist/types/src/blueprints/functions/open.d.ts +0 -14
  340. package/dist/types/src/blueprints/functions/open.d.ts.map +0 -1
  341. package/dist/types/src/blueprints/functions/update.d.ts +0 -19
  342. package/dist/types/src/blueprints/functions/update.d.ts.map +0 -1
  343. package/dist/types/src/blueprints/functions/update.test.d.ts.map +0 -1
  344. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +0 -1
  345. package/dist/types/src/capabilities/anchor-sort/index.d.ts +0 -3
  346. package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +0 -1
  347. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +0 -1
  348. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +0 -3
  349. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +0 -1
  350. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +0 -5
  351. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +0 -1
  352. package/dist/types/src/capabilities/artifact-definition/index.d.ts +0 -3
  353. package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +0 -1
  354. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +0 -6
  355. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +0 -1
  356. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +0 -3
  357. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +0 -1
  358. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  359. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  360. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  361. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  362. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  363. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  364. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  365. package/dist/types/src/capabilities/settings/index.d.ts +0 -3
  366. package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
  367. package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
  368. package/dist/types/src/capabilities/state/index.d.ts +0 -3
  369. package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
  370. package/dist/types/src/capabilities/state/state.d.ts +0 -5
  371. package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
  372. package/dist/types/src/cli/index.d.ts +0 -2
  373. package/dist/types/src/cli/index.d.ts.map +0 -1
  374. package/dist/types/src/cli/plugin.d.ts.map +0 -1
  375. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts +0 -27
  376. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +0 -1
  377. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts +0 -88
  378. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +0 -1
  379. package/dist/types/src/containers/MarkdownContainer/index.d.ts +0 -3
  380. package/dist/types/src/containers/MarkdownContainer/index.d.ts.map +0 -1
  381. package/dist/types/src/containers/MarkdownSettings/MarkdownSettings.d.ts +0 -8
  382. package/dist/types/src/containers/MarkdownSettings/MarkdownSettings.d.ts.map +0 -1
  383. package/dist/types/src/containers/MarkdownSettings/index.d.ts +0 -3
  384. package/dist/types/src/containers/MarkdownSettings/index.d.ts.map +0 -1
  385. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +0 -6
  386. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +0 -1
  387. package/dist/types/src/types/MarkdownAction.d.ts +0 -66
  388. package/dist/types/src/types/MarkdownAction.d.ts.map +0 -1
  389. package/dist/types/src/types/capabilities.d.ts +0 -22
  390. package/dist/types/src/types/capabilities.d.ts.map +0 -1
  391. package/dist/types/src/types/events.d.ts +0 -5
  392. package/dist/types/src/types/events.d.ts.map +0 -1
  393. package/src/blueprints/functions/create.conversations.json +0 -1
  394. package/src/blueprints/functions/create.ts +0 -35
  395. package/src/blueprints/functions/index.ts +0 -15
  396. package/src/blueprints/functions/open.ts +0 -33
  397. package/src/blueprints/functions/update.conversations.json +0 -1
  398. package/src/blueprints/functions/update.ts +0 -79
  399. package/src/capabilities/anchor-sort/index.ts +0 -7
  400. package/src/capabilities/app-graph-serializer/index.ts +0 -7
  401. package/src/capabilities/artifact-definition/artifact-definition.ts +0 -110
  402. package/src/capabilities/artifact-definition/index.ts +0 -7
  403. package/src/capabilities/blueprint-definition/index.ts +0 -7
  404. package/src/capabilities/operation-resolver/index.ts +0 -7
  405. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -45
  406. package/src/capabilities/react-surface/index.ts +0 -7
  407. package/src/capabilities/react-surface/react-surface.tsx +0 -102
  408. package/src/capabilities/settings/index.ts +0 -7
  409. package/src/capabilities/state/index.ts +0 -7
  410. package/src/capabilities/state/state.ts +0 -31
  411. package/src/cli/index.ts +0 -5
  412. package/src/cli/plugin.ts +0 -30
  413. package/src/containers/MarkdownContainer/MarkdownContainer.tsx +0 -114
  414. package/src/containers/MarkdownContainer/index.ts +0 -7
  415. package/src/containers/MarkdownSettings/MarkdownSettings.tsx +0 -122
  416. package/src/containers/MarkdownSettings/index.ts +0 -7
  417. package/src/hooks/useSelectCurrentThread.tsx +0 -61
  418. package/src/types/MarkdownAction.ts +0 -59
  419. package/src/types/capabilities.ts +0 -38
  420. package/src/types/events.ts +0 -14
  421. /package/dist/lib/{browser → neutral}/blueprints/index.mjs.map +0 -0
  422. /package/dist/lib/{browser/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  423. /package/dist/lib/{node-esm/blueprints → neutral}/index.mjs.map +0 -0
  424. /package/dist/lib/{node-esm/types/index.mjs.map → neutral/meta.mjs.map} +0 -0
  425. /package/dist/types/src/capabilities/{anchor-sort/anchor-sort.d.ts → anchor-sort.d.ts} +0 -0
  426. /package/dist/types/src/capabilities/{app-graph-serializer/app-graph-serializer.d.ts → app-graph-serializer.d.ts} +0 -0
  427. /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
  428. /package/dist/types/src/{blueprints/functions → operations}/create.test.d.ts +0 -0
  429. /package/dist/types/src/{blueprints/functions → operations}/update.test.d.ts +0 -0
@@ -15,7 +15,7 @@ import {
15
15
  } from '@dxos/react-ui-editor';
16
16
  import { Domino } from '@dxos/ui';
17
17
 
18
- import { meta } from '../meta';
18
+ import { meta } from '#meta';
19
19
 
20
20
  export type UseEditorMenuOptionsProps = {
21
21
  editorView?: EditorView;
@@ -59,7 +59,7 @@ export const useEditorMenuOptions = ({
59
59
  Domino.of('span').classNames('mx-1 px-1.5 pt-[1px] pb-[2px] border border-separator rounded-xs').text(text),
60
60
  );
61
61
  const forCommandsEl = Domino.of('span').text('for commands.');
62
- return Domino.of('div').children(pressEl, ...triggerEls, forCommandsEl).root;
62
+ return Domino.of('div').append(pressEl, ...triggerEls, forCommandsEl).root;
63
63
  },
64
64
  };
65
65
 
@@ -5,15 +5,14 @@
5
5
  import { type ViewUpdate } from '@codemirror/view';
6
6
  import { useMemo } from 'react';
7
7
 
8
- import { type Capabilities } from '@dxos/app-framework';
9
- import { useOperationInvoker } from '@dxos/app-framework/ui';
10
- import { LayoutOperation } from '@dxos/app-toolkit';
8
+ import { fromUrlPath } from '@dxos/app-toolkit';
11
9
  import { debounceAndThrottle } from '@dxos/async';
12
10
  import { Obj } from '@dxos/echo';
13
11
  import { createDocAccessor } from '@dxos/echo-db';
14
12
  import { invariant } from '@dxos/invariant';
15
13
  import { getSpace, useObject } from '@dxos/react-client/echo';
16
14
  import { useIdentity } from '@dxos/react-client/halo';
15
+ import { useThemeContext } from '@dxos/react-ui';
17
16
  import { type SelectionManager } from '@dxos/react-ui-attention';
18
17
  import { Text } from '@dxos/schema';
19
18
  import { Domino } from '@dxos/ui';
@@ -21,11 +20,9 @@ import {
21
20
  Cursor,
22
21
  type EditorStateStore,
23
22
  EditorView,
24
- type EditorViewMode,
25
23
  type Extension,
26
24
  InputModeExtensions,
27
25
  type PreviewOptions,
28
- type RenderCallback,
29
26
  createDataExtensions,
30
27
  decorateMarkdown,
31
28
  documentId,
@@ -36,11 +33,13 @@ import {
36
33
  preview,
37
34
  replacer,
38
35
  selectionState,
39
- typewriter,
36
+ snippets,
40
37
  } from '@dxos/ui-editor';
38
+ import { type EditorViewMode, type RenderCallback } from '@dxos/ui-editor/types';
41
39
  import { isTruthy, safeUrl } from '@dxos/util';
42
40
 
43
- import { Markdown } from '../types';
41
+ import { Markdown } from '#types';
42
+
44
43
  import { setFallbackName } from '../util';
45
44
 
46
45
  export type DocumentType = Markdown.Document | Text.Text | { id: string; text: string };
@@ -48,12 +47,16 @@ export type DocumentType = Markdown.Document | Text.Text | { id: string; text: s
48
47
  export type ExtensionsOptions = {
49
48
  id: string;
50
49
  object?: DocumentType;
51
- invokePromise?: Capabilities.OperationInvoker['invokePromise'];
52
50
  settings?: Markdown.Settings;
53
- selectionManager?: SelectionManager;
51
+ compact?: boolean;
54
52
  viewMode?: EditorViewMode;
53
+ editable?: boolean;
54
+ selectionManager?: SelectionManager;
55
55
  editorStateStore?: EditorStateStore;
56
56
  previewOptions?: PreviewOptions;
57
+ platform?: 'mobile' | 'desktop';
58
+ /** Callback when an internal link is clicked. */
59
+ onSelectObject?: (objectId: string) => void;
57
60
  };
58
61
 
59
62
  // TODO(burdon): Merge with createBaseExtensions below.
@@ -61,12 +64,14 @@ export const useExtensions = ({
61
64
  id,
62
65
  object,
63
66
  settings,
64
- selectionManager,
67
+ compact,
65
68
  viewMode,
69
+ selectionManager,
66
70
  editorStateStore,
67
71
  previewOptions,
72
+ onSelectObject,
68
73
  }: ExtensionsOptions): Extension[] => {
69
- const { invokePromise } = useOperationInvoker();
74
+ const { platform } = useThemeContext();
70
75
  const identity = useIdentity();
71
76
  const space = getSpace(object);
72
77
 
@@ -88,24 +93,27 @@ export const useExtensions = ({
88
93
  id,
89
94
  object,
90
95
  settings,
91
- selectionManager,
96
+ compact,
92
97
  viewMode,
98
+ selectionManager,
93
99
  previewOptions,
94
- invokePromise,
100
+ platform,
101
+ onSelectObject,
95
102
  }),
96
103
  [
97
104
  id,
98
105
  object,
106
+ compact,
99
107
  viewMode,
100
- invokePromise,
108
+ selectionManager,
101
109
  previewOptions,
102
110
  settings,
103
111
  settings?.debug,
104
112
  settings?.editorInputMode,
105
113
  settings?.folding,
106
114
  settings?.numberedHeadings,
107
- settings?.typewriter,
108
- selectionManager,
115
+ platform,
116
+ onSelectObject,
109
117
  ],
110
118
  );
111
119
 
@@ -143,16 +151,18 @@ export const useExtensions = ({
143
151
  const createBaseExtensions = ({
144
152
  id,
145
153
  object,
146
- invokePromise,
154
+ onSelectObject,
147
155
  settings,
148
- selectionManager,
156
+ compact,
149
157
  viewMode,
158
+ selectionManager,
150
159
  previewOptions,
160
+ platform,
151
161
  }: ExtensionsOptions): Extension[] => {
152
162
  const extensions: Extension[] = [
153
163
  selectionManager && selectionChange(selectionManager),
154
164
  settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],
155
- settings?.folding && folding(),
165
+ settings?.folding && !compact && platform !== 'mobile' && folding(),
156
166
  ].filter(isTruthy);
157
167
 
158
168
  //
@@ -166,12 +176,7 @@ const createBaseExtensions = ({
166
176
  selectionChangeDelay: 100,
167
177
  numberedHeadings: settings?.numberedHeadings ? { from: 2 } : undefined,
168
178
  // TODO(wittjosiah): For internal links render the label of the object.
169
- renderLinkButton: createRenderLink((targetId: string) => {
170
- void invokePromise?.(LayoutOperation.Open, {
171
- subject: [targetId],
172
- pivotId: object && Obj.isObject(object) ? Obj.getDXN(object).toString() : id,
173
- });
174
- }),
179
+ renderLinkButton: onSelectObject && createRenderLink(onSelectObject),
175
180
  }),
176
181
  linkTooltip(renderLinkTooltip),
177
182
  preview(previewOptions),
@@ -181,9 +186,9 @@ const createBaseExtensions = ({
181
186
  }
182
187
 
183
188
  if (settings?.debug) {
184
- const items = settings.typewriter?.split(/[,\n]/) ?? '';
189
+ const items = settings.snippets?.split(/[,\n]/) ?? '';
185
190
  if (items) {
186
- extensions.push(typewriter({ items }));
191
+ extensions.push(snippets({ items }));
187
192
  }
188
193
  }
189
194
 
@@ -195,12 +200,18 @@ const selectionChange = (selectionManager: SelectionManager) => {
195
200
  const id = update.state.facet(documentId);
196
201
  const cursorConverter = update.state.facet(Cursor.converter);
197
202
  const selection = update.state.selection;
203
+ // NOTE: Filter on numeric offsets BEFORE converting to cursor strings.
204
+ // Cursors are opaque (Automerge-encoded), so a lexicographic `to > from`
205
+ // comparison is nondeterministic — it would let some cursor-placements
206
+ // (where from === to numerically) through and reject genuine selections
207
+ // depending on encoding, which made the comment button's enabled state
208
+ // appear random across different lines.
198
209
  const ranges = selection.ranges
210
+ .filter((range) => range.to > range.from)
199
211
  .map((range) => ({
200
212
  from: cursorConverter.toCursor(range.from),
201
213
  to: cursorConverter.toCursor(range.to),
202
- }))
203
- .filter(({ from, to }) => to > from);
214
+ }));
204
215
 
205
216
  selectionManager.updateMultiRange(id, ranges);
206
217
  }, 100);
@@ -217,21 +228,33 @@ const createRenderLink =
217
228
  (el, { url }) => {
218
229
  // TODO(burdon): Formalize/document internal link format.
219
230
  const isInternal = url.startsWith('/') || url.startsWith(window.location.origin);
220
- const anchor = Domino.of('a')
221
- .classNames('dx-link dx-icon-inline ms-1')
222
- .children(Domino.svg(isInternal ? 'ph--arrow-square-down--regular' : 'ph--arrow-square-out--regular'));
231
+ const qualifiedId = isInternal ? fromUrlPath(new URL(url, window.location.origin).pathname) : undefined;
232
+ const icon = Domino.of('span')
233
+ .classNames('dx-link ms-1 inline-block align-[-0.125em]')
234
+ .append(Domino.svg(isInternal ? 'ph--arrow-square-down--regular' : 'ph--arrow-square-out--regular'));
223
235
 
224
236
  if (isInternal) {
225
- anchor.on('click', () => {
226
- const qualifiedId = url.split('/').at(-1);
227
- invariant(qualifiedId, 'Invalid link format.');
228
- onSelectObject(qualifiedId);
229
- });
230
- } else {
231
- anchor.attributes({ href: url, rel: 'noreferrer', target: '_blank' });
237
+ invariant(qualifiedId, 'Invalid link format.');
238
+ icon
239
+ .attributes({ role: 'button', tabindex: '0' })
240
+ .on('click', (event) => {
241
+ event.preventDefault();
242
+ event.stopPropagation();
243
+ onSelectObject(qualifiedId);
244
+ })
245
+ .on('keydown', (event) => {
246
+ const keyboardEvent = event as KeyboardEvent;
247
+ if (keyboardEvent.key !== 'Enter' && keyboardEvent.key !== ' ') {
248
+ return;
249
+ }
250
+
251
+ keyboardEvent.preventDefault();
252
+ keyboardEvent.stopPropagation();
253
+ onSelectObject(qualifiedId);
254
+ });
232
255
  }
233
256
 
234
- el.appendChild(anchor.root);
257
+ el.appendChild(icon.root);
235
258
  };
236
259
 
237
260
  const renderLinkTooltip: RenderCallback<{ url: string }> = (el, { url }) => {
@@ -239,7 +262,7 @@ const renderLinkTooltip: RenderCallback<{ url: string }> = (el, { url }) => {
239
262
  Domino.of('a')
240
263
  .attributes({ href: url, target: '_blank', rel: 'noreferrer' })
241
264
  .classNames('dx-link flex items-center gap-2')
242
- .text(safeUrl(url)?.origin ?? url)
243
- .children(Domino.svg('ph--arrow-square-out--regular')).root,
265
+ .text(safeUrl(url)?.toString() ?? url)
266
+ .append(Domino.svg('ph--arrow-square-out--regular')).root,
244
267
  );
245
268
  };
@@ -5,30 +5,23 @@
5
5
  import * as Option from 'effect/Option';
6
6
  import { useCallback, useMemo } from 'react';
7
7
 
8
- import { usePluginManager } from '@dxos/app-framework/ui';
9
- import { AppCapabilities } from '@dxos/app-toolkit';
10
- import { type Database, Filter, Obj, Query, Type } from '@dxos/echo';
11
- import { EntityKind, SystemTypeAnnotation, getTypeAnnotation } from '@dxos/echo/internal';
12
- import { toLocalizedString, useTranslation } from '@dxos/react-ui';
8
+ import { Annotation, type Database, Filter, Obj, Query, Type } from '@dxos/echo';
9
+ import { EntityKind, HiddenAnnotation, getTypeAnnotation } from '@dxos/echo/internal';
10
+ import { type Label, toLocalizedString, useTranslation } from '@dxos/react-ui';
13
11
  import { type EditorMenuGroup, type EditorMenuItem } from '@dxos/react-ui-editor';
14
12
  import { insertAtCursor, insertAtLineStart } from '@dxos/ui-editor';
15
13
 
14
+ import { Markdown } from '../types';
15
+
16
16
  export const useLinkQuery = (db: Database.Database | undefined) => {
17
17
  const { t } = useTranslation();
18
18
 
19
- const manager = usePluginManager();
20
- const resolve = useCallback(
21
- (typename: string) =>
22
- manager.capabilities.getAll(AppCapabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {},
23
- [manager],
24
- );
25
-
26
19
  const filter = useMemo(
27
20
  () =>
28
21
  Filter.or(
29
- ...(db?.schemaRegistry.query({ location: ['database', 'runtime'] }).runSync() ?? [])
30
- .filter((schema) => getTypeAnnotation(schema)?.kind !== EntityKind.Relation)
31
- .filter((schema) => !SystemTypeAnnotation.get(schema).pipe(Option.getOrElse(() => false)))
22
+ ...(db ? db.graph.registry.list().filter(Type.isType) : [])
23
+ .filter((schema) => getTypeAnnotation(Type.getSchema(schema))?.kind !== EntityKind.Relation)
24
+ .filter((schema) => !HiddenAnnotation.get(Type.getSchema(schema)).pipe(Option.getOrElse(() => false)))
32
25
  .map((schema) => Filter.typename(Type.getTypename(schema))),
33
26
  ),
34
27
  [db],
@@ -36,35 +29,31 @@ export const useLinkQuery = (db: Database.Database | undefined) => {
36
29
 
37
30
  const handleLinkQuery = useCallback(
38
31
  async (query?: string): Promise<EditorMenuGroup[]> => {
32
+ // A second "@" switches the link query into block-embed mode, so "@@foo" searches for "foo".
39
33
  const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : (query?.toLowerCase() ?? '');
40
34
  const results = await db?.query(Query.select(filter)).run();
41
35
 
42
- // TODO(wittjosiah): Use `Obj.Unknown` type.
43
- const getLabel = (object: any) => {
44
- const label = Obj.getLabel(object);
45
- if (label) {
46
- return label;
47
- }
48
-
49
- // TODO(wittjosiah): Remove metadata labels.
36
+ const getLabel = (object: Obj.Unknown): Label => {
50
37
  const type = Obj.getTypename(object)!;
51
- const metadata = resolve(type);
52
- return metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New object' }];
38
+ return Obj.getLabel(object) ?? ['object-name.placeholder', { ns: type, defaultValue: 'New object' }];
53
39
  };
54
40
 
55
41
  const items =
56
42
  results
57
43
  ?.filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name))
58
- // TODO(wittjosiah): Remove `any` type.
59
- .map((object: any): EditorMenuItem => {
60
- const metadata = resolve(Obj.getTypename(object)!);
44
+ .map((object: Obj.Unknown): EditorMenuItem => {
45
+ const type = Obj.getType(object);
46
+ const icon = type
47
+ ? Option.getOrUndefined(Annotation.IconAnnotation.get(Type.getSchema(type)))?.icon
48
+ : undefined;
61
49
  const label = toLocalizedString(getLabel(object), t);
62
50
  return {
63
51
  id: object.id,
64
52
  label,
65
- icon: metadata.icon,
53
+ icon,
66
54
  onSelect: ({ view, head }) => {
67
- const link = `[${label}](${Obj.getDXN(object)})`;
55
+ const link = `[${label}](${Obj.getURI(object)})`;
56
+ // "@@" inserts a block embed on its own line instead of an inline link.
68
57
  if (query?.startsWith('@')) {
69
58
  insertAtLineStart(view, head, `!${link}\n`);
70
59
  } else {
@@ -74,9 +63,30 @@ export const useLinkQuery = (db: Database.Database | undefined) => {
74
63
  };
75
64
  }) ?? [];
76
65
 
77
- return [{ id: 'echo', items }];
66
+ // Add "Create new document" option at the end.
67
+ const createItem: EditorMenuItem = {
68
+ id: 'create-document',
69
+ label: ['add-object.label', { ns: Type.getTypename(Markdown.Document) }],
70
+ icon: 'ph--plus--regular',
71
+ onSelect: ({ view, head }) => {
72
+ const doc = Markdown.make({ name: name || undefined });
73
+ db?.add(doc);
74
+ const label = name || t('object-name.placeholder', { ns: Type.getTypename(Markdown.Document) });
75
+ const link = `[${label}](${Obj.getURI(doc)})`;
76
+ if (query?.startsWith('@')) {
77
+ insertAtLineStart(view, head, `!${link}\n`);
78
+ } else {
79
+ insertAtCursor(view, head, `${link} `);
80
+ }
81
+ },
82
+ };
83
+
84
+ return [
85
+ { id: 'echo', items },
86
+ { id: 'create', items: [createItem] },
87
+ ];
78
88
  },
79
- [db, filter, resolve],
89
+ [db, filter, t],
80
90
  );
81
91
 
82
92
  return handleLinkQuery;
package/src/index.ts CHANGED
@@ -2,12 +2,8 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export { MarkdownCapabilities, MarkdownEvents } from './types';
6
-
5
+ export * from './blueprints';
7
6
  export * from './meta';
7
+ export * from './operations';
8
8
  export * from './types';
9
9
  export * from './util';
10
-
11
- export * from './MarkdownPlugin';
12
-
13
- export { MarkdownEditor } from './components';
package/src/meta.ts CHANGED
@@ -2,18 +2,28 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type Plugin } from '@dxos/app-framework';
5
+ import { Plugin } from '@dxos/app-framework';
6
+ import { DXN } from '@dxos/keys';
6
7
  import { trim } from '@dxos/util';
7
8
 
8
- export const meta: Plugin.Meta = {
9
- id: 'dxos.org/plugin/markdown',
9
+ export const meta = Plugin.makeMeta({
10
+ key: DXN.make('org.dxos.plugin.markdown'),
10
11
  name: 'Markdown',
12
+ author: 'DXOS',
11
13
  description: trim`
12
- Full-featured collaborative markdown editor with real-time editing, inline comments, and rich formatting.
13
- Supports AI-powered editing assistance and seamlessly integrates with other workspace objects.
14
+ A full-featured markdown editor for authoring documents in your space. Edits flow through a collaborative CodeMirror surface backed by ECHO Text, so every keystroke replicates to other peers in real time without merge conflicts or lost work.
15
+
16
+ Documents can be opened in source, preview, or read-only mode and rendered as a full-surface article or as embeddable cards. An optional formatting toolbar exposes headings, lists, links, and other common markdown actions, and dispositional toolbar actions contributed by other plugins are surfaced inline alongside it.
17
+
18
+ The editor integrates with the rest of the workspace through @ references that link to any ECHO object, image and file uploads stored in the active space, and anchored comment threads on text ranges. Comments can optionally be routed to an AI agent on every message or only on @mention.
19
+
20
+ A built-in blueprint exposes create, open, and update operations as tools for AI agents. Updates are applied as compact find-and-replace diffs against the document, making it safe for agents to edit large documents incrementally while you continue collaborating.
14
21
  `,
15
22
  icon: 'ph--text-aa--regular',
16
23
  iconHue: 'indigo',
17
24
  source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown',
18
- screenshots: ['https://dxos.network/plugin-details-markdown-dark.png'],
19
- };
25
+ screenshots: [
26
+ 'https://customer-5rxcjpyab08avpmn.cloudflarestream.com/cdf2656365bb1fd327c1fc2105d75e5a/iframe?poster=https%3A%2F%2Fcustomer-5rxcjpyab08avpmn.cloudflarestream.com%2Fcdf2656365bb1fd327c1fc2105d75e5a%2Fthumbnails%2Fthumbnail.jpg%3Ftime%3D%26height%3D600',
27
+ 'https://dxos.network/plugin-details-markdown-dark.png',
28
+ ],
29
+ });
@@ -0,0 +1,19 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { Operation } from '@dxos/compute';
8
+
9
+ import { Markdown, MarkdownOperation } from '../types';
10
+
11
+ const handler: Operation.WithHandler<typeof MarkdownOperation.CreateMarkdown> = MarkdownOperation.CreateMarkdown.pipe(
12
+ Operation.withHandler(({ name, content }) =>
13
+ Effect.succeed({
14
+ object: Markdown.make({ name, content }),
15
+ }),
16
+ ),
17
+ );
18
+
19
+ export default handler;