@dxos/plugin-markdown 0.8.4-main.1da679c → 0.8.4-main.21d9917

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/dist/lib/browser/MarkdownCard-HFNNE4B4.mjs +12 -0
  2. package/dist/lib/browser/MarkdownContainer-V7EAADMF.mjs +12 -0
  3. package/dist/lib/browser/anchor-sort-WQ3TL7ZI.mjs +32 -0
  4. package/dist/lib/browser/anchor-sort-WQ3TL7ZI.mjs.map +7 -0
  5. package/dist/lib/browser/app-graph-serializer-ULZUJKOD.mjs +58 -0
  6. package/dist/lib/browser/app-graph-serializer-ULZUJKOD.mjs.map +7 -0
  7. package/dist/lib/browser/blueprint-definition-TLV4PNZW.mjs +19 -0
  8. package/dist/lib/browser/blueprint-definition-TLV4PNZW.mjs.map +7 -0
  9. package/dist/lib/browser/blueprints/index.mjs +8 -0
  10. package/dist/lib/browser/blueprints/index.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-BX73DASG.mjs +702 -0
  12. package/dist/lib/browser/chunk-BX73DASG.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-CUGDX7KA.mjs +8 -0
  14. package/dist/lib/browser/chunk-CUGDX7KA.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-FWQQW6KU.mjs +144 -0
  16. package/dist/lib/browser/chunk-FWQQW6KU.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-Z7P6JGGW.mjs → chunk-JOXYQLKH.mjs} +9 -7
  18. package/dist/lib/browser/chunk-JOXYQLKH.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-KDKXFKDN.mjs +104 -0
  20. package/dist/lib/browser/chunk-KDKXFKDN.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-LMO5UVKL.mjs +167 -0
  22. package/dist/lib/browser/chunk-LMO5UVKL.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-S45ULIOG.mjs +101 -0
  24. package/dist/lib/browser/chunk-S45ULIOG.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-VQ3WOAB6.mjs +60 -0
  26. package/dist/lib/browser/chunk-VQ3WOAB6.mjs.map +7 -0
  27. package/dist/lib/browser/cli/index.mjs +32 -0
  28. package/dist/lib/browser/cli/index.mjs.map +7 -0
  29. package/dist/lib/browser/index.mjs +124 -145
  30. package/dist/lib/browser/index.mjs.map +4 -4
  31. package/dist/lib/browser/meta.json +1 -1
  32. package/dist/lib/browser/operation-resolver-EGCWOQKJ.mjs +53 -0
  33. package/dist/lib/browser/operation-resolver-EGCWOQKJ.mjs.map +7 -0
  34. package/dist/lib/browser/react-surface-64FZ7T7F.mjs +213 -0
  35. package/dist/lib/browser/react-surface-64FZ7T7F.mjs.map +7 -0
  36. package/dist/lib/browser/settings-JY5JE7MI.mjs +35 -0
  37. package/dist/lib/browser/settings-JY5JE7MI.mjs.map +7 -0
  38. package/dist/lib/browser/state-QE7VSJWJ.mjs +29 -0
  39. package/dist/lib/browser/state-QE7VSJWJ.mjs.map +7 -0
  40. package/dist/lib/browser/types/index.mjs +10 -3
  41. package/dist/lib/node-esm/MarkdownCard-GMNXUWWR.mjs +13 -0
  42. package/dist/lib/node-esm/MarkdownCard-GMNXUWWR.mjs.map +7 -0
  43. package/dist/lib/node-esm/MarkdownContainer-LUSMORP2.mjs +13 -0
  44. package/dist/lib/node-esm/MarkdownContainer-LUSMORP2.mjs.map +7 -0
  45. package/dist/lib/node-esm/{anchor-sort-J2BK2XLZ.mjs → anchor-sort-G7D5TAI6.mjs} +12 -12
  46. package/dist/lib/node-esm/anchor-sort-G7D5TAI6.mjs.map +7 -0
  47. package/dist/lib/node-esm/app-graph-serializer-W5YMQP7P.mjs +59 -0
  48. package/dist/lib/node-esm/app-graph-serializer-W5YMQP7P.mjs.map +7 -0
  49. package/dist/lib/node-esm/blueprint-definition-HYFA7BKQ.mjs +20 -0
  50. package/dist/lib/node-esm/blueprint-definition-HYFA7BKQ.mjs.map +7 -0
  51. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  52. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-3JYPCC7M.mjs +105 -0
  54. package/dist/lib/node-esm/chunk-3JYPCC7M.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-J7A6TUB2.mjs → chunk-44VJC3QF.mjs} +9 -7
  56. package/dist/lib/node-esm/chunk-44VJC3QF.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-D4BCFPKK.mjs +703 -0
  58. package/dist/lib/node-esm/chunk-D4BCFPKK.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-EYAFC4N7.mjs +145 -0
  60. package/dist/lib/node-esm/chunk-EYAFC4N7.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-KXEQCFMB.mjs +61 -0
  62. package/dist/lib/node-esm/chunk-KXEQCFMB.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-PRV35A7Z.mjs +168 -0
  64. package/dist/lib/node-esm/chunk-PRV35A7Z.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-SDTYEGGL.mjs +102 -0
  66. package/dist/lib/node-esm/chunk-SDTYEGGL.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-W3IIKDV5.mjs +10 -0
  68. package/dist/lib/node-esm/chunk-W3IIKDV5.mjs.map +7 -0
  69. package/dist/lib/node-esm/cli/index.mjs +33 -0
  70. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  71. package/dist/lib/node-esm/index.mjs +124 -145
  72. package/dist/lib/node-esm/index.mjs.map +4 -4
  73. package/dist/lib/node-esm/meta.json +1 -1
  74. package/dist/lib/node-esm/operation-resolver-2HIS2AQZ.mjs +54 -0
  75. package/dist/lib/node-esm/operation-resolver-2HIS2AQZ.mjs.map +7 -0
  76. package/dist/lib/node-esm/react-surface-PKEVHTJK.mjs +214 -0
  77. package/dist/lib/node-esm/react-surface-PKEVHTJK.mjs.map +7 -0
  78. package/dist/lib/node-esm/settings-4UGMPIRY.mjs +36 -0
  79. package/dist/lib/node-esm/settings-4UGMPIRY.mjs.map +7 -0
  80. package/dist/lib/node-esm/state-LXE5XIN4.mjs +30 -0
  81. package/dist/lib/node-esm/state-LXE5XIN4.mjs.map +7 -0
  82. package/dist/lib/node-esm/types/index.mjs +10 -3
  83. package/dist/types/src/MarkdownPlugin.d.ts +2 -1
  84. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  85. package/dist/types/src/blueprints/functions/create.d.ts +8 -0
  86. package/dist/types/src/blueprints/functions/create.d.ts.map +1 -0
  87. package/dist/types/src/blueprints/functions/create.test.d.ts +2 -0
  88. package/dist/types/src/blueprints/functions/create.test.d.ts.map +1 -0
  89. package/dist/types/src/blueprints/functions/index.d.ts +4 -0
  90. package/dist/types/src/blueprints/functions/index.d.ts.map +1 -0
  91. package/dist/types/src/{functions → blueprints/functions}/open.d.ts +1 -1
  92. package/dist/types/src/blueprints/functions/open.d.ts.map +1 -0
  93. package/dist/types/src/{functions/diff.d.ts → blueprints/functions/update.d.ts} +2 -2
  94. package/dist/types/src/blueprints/functions/update.d.ts.map +1 -0
  95. package/dist/types/src/blueprints/functions/update.test.d.ts +2 -0
  96. package/dist/types/src/blueprints/functions/update.test.d.ts.map +1 -0
  97. package/dist/types/src/blueprints/index.d.ts +2 -0
  98. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  99. package/dist/types/src/blueprints/markdown-blueprint.d.ts +21 -0
  100. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts +5 -0
  102. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +1 -0
  103. package/dist/types/src/capabilities/anchor-sort/index.d.ts +3 -0
  104. package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +5 -0
  106. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +3 -0
  108. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +5 -0
  110. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/artifact-definition/index.d.ts +3 -0
  112. package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +10 -0
  114. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  116. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/index.d.ts +6 -17
  118. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  120. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  122. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  124. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  125. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  126. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  128. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  129. package/dist/types/src/capabilities/settings/settings.d.ts +6 -0
  130. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  131. package/dist/types/src/capabilities/state/index.d.ts +3 -0
  132. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  133. package/dist/types/src/capabilities/state/state.d.ts +5 -0
  134. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  135. package/dist/types/src/cli/index.d.ts +2 -0
  136. package/dist/types/src/cli/index.d.ts.map +1 -0
  137. package/dist/types/src/cli/plugin.d.ts +3 -0
  138. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  139. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +5 -4
  140. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  141. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +5 -6
  142. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
  143. package/dist/types/src/components/MarkdownContainer.d.ts +21 -11
  144. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  145. package/dist/types/src/components/MarkdownContainer.stories.d.ts +9 -6
  146. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
  147. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +11 -0
  148. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -0
  149. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +43 -23
  150. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  151. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +5 -110
  152. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  153. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +30 -0
  154. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -0
  155. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +12 -0
  156. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -0
  157. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +4 -2
  158. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  159. package/dist/types/src/components/Suggestions.stories.d.ts +1 -2
  160. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
  161. package/dist/types/src/components/index.d.ts +7 -2
  162. package/dist/types/src/components/index.d.ts.map +1 -1
  163. package/dist/types/src/hooks/index.d.ts +3 -0
  164. package/dist/types/src/hooks/index.d.ts.map +1 -1
  165. package/dist/types/src/hooks/useEditorMenuOptions.d.ts +9 -0
  166. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -0
  167. package/dist/types/src/hooks/useExtensions.d.ts +21 -0
  168. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -0
  169. package/dist/types/src/hooks/useLinkQuery.d.ts +4 -0
  170. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -0
  171. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +1 -1
  172. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +1 -1
  173. package/dist/types/src/index.d.ts +1 -2
  174. package/dist/types/src/index.d.ts.map +1 -1
  175. package/dist/types/src/meta.d.ts +2 -2
  176. package/dist/types/src/meta.d.ts.map +1 -1
  177. package/dist/types/src/testing.d.ts +6 -0
  178. package/dist/types/src/testing.d.ts.map +1 -0
  179. package/dist/types/src/translations.d.ts +4 -0
  180. package/dist/types/src/translations.d.ts.map +1 -1
  181. package/dist/types/src/types/Markdown.d.ts +17 -15
  182. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  183. package/dist/types/src/types/MarkdownAction.d.ts +64 -31
  184. package/dist/types/src/types/MarkdownAction.d.ts.map +1 -1
  185. package/dist/types/src/types/capabilities.d.ts +22 -0
  186. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  187. package/dist/types/src/types/events.d.ts +5 -0
  188. package/dist/types/src/types/events.d.ts.map +1 -0
  189. package/dist/types/src/types/index.d.ts +3 -0
  190. package/dist/types/src/types/index.d.ts.map +1 -1
  191. package/dist/types/src/types/types.d.ts +2 -2
  192. package/dist/types/src/types/types.d.ts.map +1 -1
  193. package/dist/types/src/util.d.ts +6 -3
  194. package/dist/types/src/util.d.ts.map +1 -1
  195. package/dist/types/src/util.test.d.ts +2 -0
  196. package/dist/types/src/util.test.d.ts.map +1 -0
  197. package/dist/types/tsconfig.tsbuildinfo +1 -1
  198. package/package.json +89 -58
  199. package/src/MarkdownPlugin.tsx +79 -110
  200. package/src/blueprints/functions/create.conversations.json +1 -0
  201. package/src/blueprints/functions/create.test.ts +125 -0
  202. package/src/blueprints/functions/create.ts +34 -0
  203. package/src/blueprints/functions/index.ts +7 -0
  204. package/src/{functions → blueprints/functions}/open.ts +8 -5
  205. package/src/blueprints/functions/update.conversations.json +1 -0
  206. package/src/blueprints/functions/update.test.ts +149 -0
  207. package/src/{functions/diff.ts → blueprints/functions/update.ts} +8 -5
  208. package/src/blueprints/index.ts +5 -0
  209. package/src/blueprints/markdown-blueprint.ts +38 -0
  210. package/src/capabilities/anchor-sort/anchor-sort.ts +36 -0
  211. package/src/capabilities/anchor-sort/index.ts +7 -0
  212. package/src/capabilities/app-graph-serializer/app-graph-serializer.ts +59 -0
  213. package/src/capabilities/app-graph-serializer/index.ts +7 -0
  214. package/src/capabilities/artifact-definition/artifact-definition.ts +110 -0
  215. package/src/capabilities/artifact-definition/index.ts +7 -0
  216. package/src/capabilities/blueprint-definition/blueprint-definition.ts +25 -0
  217. package/src/capabilities/blueprint-definition/index.ts +7 -0
  218. package/src/capabilities/index.ts +6 -12
  219. package/src/capabilities/operation-resolver/index.ts +7 -0
  220. package/src/capabilities/operation-resolver/operation-resolver.ts +45 -0
  221. package/src/capabilities/react-surface/index.ts +7 -0
  222. package/src/capabilities/react-surface/react-surface.tsx +100 -0
  223. package/src/capabilities/settings/index.ts +7 -0
  224. package/src/capabilities/settings/settings.ts +36 -0
  225. package/src/capabilities/state/index.ts +7 -0
  226. package/src/capabilities/state/state.ts +31 -0
  227. package/src/cli/index.ts +5 -0
  228. package/src/cli/plugin.ts +29 -0
  229. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +28 -49
  230. package/src/components/MarkdownCard/MarkdownCard.tsx +42 -55
  231. package/src/components/MarkdownContainer.stories.tsx +70 -58
  232. package/src/components/MarkdownContainer.tsx +104 -249
  233. package/src/components/MarkdownEditor/FileUpload.tsx +63 -0
  234. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +55 -36
  235. package/src/components/MarkdownEditor/MarkdownEditor.tsx +221 -271
  236. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +162 -0
  237. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +66 -0
  238. package/src/components/MarkdownSettings/MarkdownSettings.tsx +24 -10
  239. package/src/components/Suggestions.stories.tsx +51 -54
  240. package/src/components/index.ts +10 -3
  241. package/src/hooks/index.ts +3 -0
  242. package/src/hooks/useEditorMenuOptions.ts +68 -0
  243. package/src/{extensions.tsx → hooks/useExtensions.tsx} +72 -98
  244. package/src/hooks/useLinkQuery.ts +83 -0
  245. package/src/hooks/useSelectCurrentThread.tsx +38 -33
  246. package/src/index.ts +1 -2
  247. package/src/meta.ts +5 -5
  248. package/src/testing.ts +27 -0
  249. package/src/translations.ts +4 -0
  250. package/src/types/Markdown.ts +11 -10
  251. package/src/types/MarkdownAction.ts +49 -19
  252. package/src/types/capabilities.ts +38 -0
  253. package/src/types/events.ts +13 -0
  254. package/src/types/index.ts +4 -0
  255. package/src/types/types.ts +3 -2
  256. package/src/util.test.ts +44 -0
  257. package/src/util.tsx +82 -7
  258. package/dist/lib/browser/MarkdownCard-JLUQITYK.mjs +0 -80
  259. package/dist/lib/browser/MarkdownCard-JLUQITYK.mjs.map +0 -7
  260. package/dist/lib/browser/MarkdownContainer-OZ5DHEIA.mjs +0 -750
  261. package/dist/lib/browser/MarkdownContainer-OZ5DHEIA.mjs.map +0 -7
  262. package/dist/lib/browser/anchor-sort-SUD373SW.mjs +0 -32
  263. package/dist/lib/browser/anchor-sort-SUD373SW.mjs.map +0 -7
  264. package/dist/lib/browser/app-graph-serializer-GH7JJZB7.mjs +0 -51
  265. package/dist/lib/browser/app-graph-serializer-GH7JJZB7.mjs.map +0 -7
  266. package/dist/lib/browser/blueprint-definition-JSNGFAZB.mjs +0 -11
  267. package/dist/lib/browser/chunk-BEE7VQPU.mjs +0 -78
  268. package/dist/lib/browser/chunk-BEE7VQPU.mjs.map +0 -7
  269. package/dist/lib/browser/chunk-LAVZ2W6X.mjs +0 -50
  270. package/dist/lib/browser/chunk-LAVZ2W6X.mjs.map +0 -7
  271. package/dist/lib/browser/chunk-ODB2PTBP.mjs +0 -28
  272. package/dist/lib/browser/chunk-ODB2PTBP.mjs.map +0 -7
  273. package/dist/lib/browser/chunk-OY6CGPOO.mjs +0 -16
  274. package/dist/lib/browser/chunk-OY6CGPOO.mjs.map +0 -7
  275. package/dist/lib/browser/chunk-SQLSKQRQ.mjs +0 -22
  276. package/dist/lib/browser/chunk-SQLSKQRQ.mjs.map +0 -7
  277. package/dist/lib/browser/chunk-UM2GILLR.mjs +0 -102
  278. package/dist/lib/browser/chunk-UM2GILLR.mjs.map +0 -7
  279. package/dist/lib/browser/chunk-Z7P6JGGW.mjs.map +0 -7
  280. package/dist/lib/browser/intent-resolver-SUBIHVU7.mjs +0 -62
  281. package/dist/lib/browser/intent-resolver-SUBIHVU7.mjs.map +0 -7
  282. package/dist/lib/browser/react-surface-JBQHF4GR.mjs +0 -215
  283. package/dist/lib/browser/react-surface-JBQHF4GR.mjs.map +0 -7
  284. package/dist/lib/browser/settings-T5ZMC5TH.mjs +0 -28
  285. package/dist/lib/browser/settings-T5ZMC5TH.mjs.map +0 -7
  286. package/dist/lib/browser/state-6QODXCSZ.mjs +0 -37
  287. package/dist/lib/browser/state-6QODXCSZ.mjs.map +0 -7
  288. package/dist/lib/browser/toolkit-GNADYSGW.mjs +0 -74
  289. package/dist/lib/browser/toolkit-GNADYSGW.mjs.map +0 -7
  290. package/dist/lib/node-esm/MarkdownCard-XL5EVSJ7.mjs +0 -81
  291. package/dist/lib/node-esm/MarkdownCard-XL5EVSJ7.mjs.map +0 -7
  292. package/dist/lib/node-esm/MarkdownContainer-Z4I23DPN.mjs +0 -751
  293. package/dist/lib/node-esm/MarkdownContainer-Z4I23DPN.mjs.map +0 -7
  294. package/dist/lib/node-esm/anchor-sort-J2BK2XLZ.mjs.map +0 -7
  295. package/dist/lib/node-esm/app-graph-serializer-LRYCXG7N.mjs +0 -52
  296. package/dist/lib/node-esm/app-graph-serializer-LRYCXG7N.mjs.map +0 -7
  297. package/dist/lib/node-esm/blueprint-definition-KX3Y5JHC.mjs +0 -12
  298. package/dist/lib/node-esm/chunk-CB2R4YIY.mjs +0 -17
  299. package/dist/lib/node-esm/chunk-CB2R4YIY.mjs.map +0 -7
  300. package/dist/lib/node-esm/chunk-FXILAQ5F.mjs +0 -79
  301. package/dist/lib/node-esm/chunk-FXILAQ5F.mjs.map +0 -7
  302. package/dist/lib/node-esm/chunk-J7A6TUB2.mjs.map +0 -7
  303. package/dist/lib/node-esm/chunk-KAXL7TWD.mjs +0 -103
  304. package/dist/lib/node-esm/chunk-KAXL7TWD.mjs.map +0 -7
  305. package/dist/lib/node-esm/chunk-MJZPYYIH.mjs +0 -24
  306. package/dist/lib/node-esm/chunk-MJZPYYIH.mjs.map +0 -7
  307. package/dist/lib/node-esm/chunk-O6EXWGGS.mjs +0 -51
  308. package/dist/lib/node-esm/chunk-O6EXWGGS.mjs.map +0 -7
  309. package/dist/lib/node-esm/chunk-VCG2U522.mjs +0 -29
  310. package/dist/lib/node-esm/chunk-VCG2U522.mjs.map +0 -7
  311. package/dist/lib/node-esm/intent-resolver-YZEGYWGA.mjs +0 -63
  312. package/dist/lib/node-esm/intent-resolver-YZEGYWGA.mjs.map +0 -7
  313. package/dist/lib/node-esm/react-surface-JOXUHXQJ.mjs +0 -216
  314. package/dist/lib/node-esm/react-surface-JOXUHXQJ.mjs.map +0 -7
  315. package/dist/lib/node-esm/settings-LGG22OH4.mjs +0 -29
  316. package/dist/lib/node-esm/settings-LGG22OH4.mjs.map +0 -7
  317. package/dist/lib/node-esm/state-W3PECOJX.mjs +0 -38
  318. package/dist/lib/node-esm/state-W3PECOJX.mjs.map +0 -7
  319. package/dist/lib/node-esm/toolkit-ZCFWOGNH.mjs +0 -75
  320. package/dist/lib/node-esm/toolkit-ZCFWOGNH.mjs.map +0 -7
  321. package/dist/types/src/capabilities/anchor-sort.d.ts +0 -6
  322. package/dist/types/src/capabilities/anchor-sort.d.ts.map +0 -1
  323. package/dist/types/src/capabilities/app-graph-serializer.d.ts +0 -4
  324. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +0 -1
  325. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -3
  326. package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
  327. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  328. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  329. package/dist/types/src/capabilities/capabilities.d.ts +0 -12
  330. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  331. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  332. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  333. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  334. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  335. package/dist/types/src/capabilities/settings.d.ts +0 -4
  336. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  337. package/dist/types/src/capabilities/state.d.ts +0 -11
  338. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  339. package/dist/types/src/capabilities/toolkit.d.ts +0 -4
  340. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  341. package/dist/types/src/components/Toolbar.stories.d.ts +0 -48
  342. package/dist/types/src/components/Toolbar.stories.d.ts.map +0 -1
  343. package/dist/types/src/events.d.ts +0 -4
  344. package/dist/types/src/events.d.ts.map +0 -1
  345. package/dist/types/src/extensions.d.ts +0 -22
  346. package/dist/types/src/extensions.d.ts.map +0 -1
  347. package/dist/types/src/functions/diff.d.ts.map +0 -1
  348. package/dist/types/src/functions/index.d.ts +0 -3
  349. package/dist/types/src/functions/index.d.ts.map +0 -1
  350. package/dist/types/src/functions/open.d.ts.map +0 -1
  351. package/src/capabilities/anchor-sort.ts +0 -30
  352. package/src/capabilities/app-graph-serializer.ts +0 -54
  353. package/src/capabilities/artifact-definition.ts +0 -111
  354. package/src/capabilities/blueprint-definition.ts +0 -39
  355. package/src/capabilities/capabilities.ts +0 -21
  356. package/src/capabilities/intent-resolver.ts +0 -57
  357. package/src/capabilities/react-surface.tsx +0 -115
  358. package/src/capabilities/settings.ts +0 -25
  359. package/src/capabilities/state.ts +0 -31
  360. package/src/capabilities/toolkit.ts +0 -47
  361. package/src/components/Toolbar.stories.tsx +0 -118
  362. package/src/events.ts +0 -11
  363. package/src/functions/index.ts +0 -6
  364. /package/dist/lib/browser/{blueprint-definition-JSNGFAZB.mjs.map → MarkdownCard-HFNNE4B4.mjs.map} +0 -0
  365. /package/dist/lib/{node-esm/blueprint-definition-KX3Y5JHC.mjs.map → browser/MarkdownContainer-V7EAADMF.mjs.map} +0 -0
@@ -6,19 +6,17 @@ import { type ViewUpdate } from '@codemirror/view';
6
6
  import React, { type AnchorHTMLAttributes, type ReactNode, useMemo } from 'react';
7
7
  import { createRoot } from 'react-dom/client';
8
8
 
9
- import {
10
- LayoutAction,
11
- type PromiseIntentDispatcher,
12
- createIntent,
13
- useCapabilities,
14
- useIntentDispatcher,
15
- } from '@dxos/app-framework';
9
+ import { Common } from '@dxos/app-framework';
10
+ import { useOperationInvoker } from '@dxos/app-framework/react';
16
11
  import { debounceAndThrottle } from '@dxos/async';
12
+ import { Obj } from '@dxos/echo';
13
+ import { createDocAccessor } from '@dxos/echo-db';
17
14
  import { invariant } from '@dxos/invariant';
18
- import { createDocAccessor, fullyQualifiedId, getSpace } from '@dxos/react-client/echo';
15
+ import { getSpace, useObject } from '@dxos/react-client/echo';
19
16
  import { useIdentity } from '@dxos/react-client/halo';
20
17
  import { Icon, ThemeProvider } from '@dxos/react-ui';
21
18
  import { type SelectionManager } from '@dxos/react-ui-attention';
19
+ import { Text } from '@dxos/schema';
22
20
  import {
23
21
  Cursor,
24
22
  type EditorStateStore,
@@ -36,23 +34,23 @@ import {
36
34
  linkTooltip,
37
35
  listener,
38
36
  preview,
37
+ replacer,
39
38
  selectionState,
40
39
  typewriter,
41
- } from '@dxos/react-ui-editor';
42
- import { defaultTx } from '@dxos/react-ui-theme';
43
- import { type DataType } from '@dxos/schema';
44
- import { isNotFalsy } from '@dxos/util';
40
+ } from '@dxos/ui-editor';
41
+ import { defaultTx } from '@dxos/ui-theme';
42
+ import { isTruthy } from '@dxos/util';
43
+
44
+ import { Markdown } from '../types';
45
+ import { setFallbackName } from '../util';
45
46
 
46
- import { MarkdownCapabilities } from './capabilities';
47
- import { type Markdown } from './types';
48
- import { setFallbackName } from './util';
47
+ export type DocumentType = Markdown.Document | Text.Text | { id: string; text: string };
49
48
 
50
- type ExtensionsOptions = {
51
- document?: Markdown.Document;
52
- id?: string;
53
- text?: DataType.Text;
54
- dispatch?: PromiseIntentDispatcher;
55
- settings: Markdown.Settings;
49
+ export type ExtensionsOptions = {
50
+ id: string;
51
+ object?: DocumentType;
52
+ invokePromise?: Common.Capability.OperationInvoker['invokePromise'];
53
+ settings?: Markdown.Settings;
56
54
  selectionManager?: SelectionManager;
57
55
  viewMode?: EditorViewMode;
58
56
  editorStateStore?: EditorStateStore;
@@ -61,104 +59,82 @@ type ExtensionsOptions = {
61
59
 
62
60
  // TODO(burdon): Merge with createBaseExtensions below.
63
61
  export const useExtensions = ({
64
- document,
65
62
  id,
66
- text,
63
+ object,
67
64
  settings,
68
65
  selectionManager,
69
66
  viewMode,
70
67
  editorStateStore,
71
68
  previewOptions,
72
69
  }: ExtensionsOptions): Extension[] => {
73
- const { dispatchPromise: dispatch } = useIntentDispatcher();
70
+ const { invokePromise } = useOperationInvoker();
74
71
  const identity = useIdentity();
75
- const space = getSpace(document) ?? getSpace(text);
72
+ const space = getSpace(object);
73
+
74
+ // Get the content reference from Document objects.
75
+ const contentRef = Obj.instanceOf(Markdown.Document, object) ? (object as Markdown.Document).content : undefined;
76
+ // Use useObject to trigger re-render when the reference loads (returns snapshot for reactivity).
77
+ useObject(contentRef);
78
+ // Get the actual live object target via .target (needed for createDocAccessor).
79
+ const target = contentRef?.target ?? (Obj.instanceOf(Text.Text, object) ? object : undefined);
76
80
 
77
81
  // TODO(wittjosiah): Autocomplete is not working and this query is causing performance issues.
78
82
  // TODO(burdon): Unsubscribe.
79
83
  // const query = space?.db.query(Filter.type(DocumentType));
80
84
  // query?.subscribe();
85
+
81
86
  const baseExtensions = useMemo(
82
87
  () =>
83
88
  createBaseExtensions({
84
- document,
85
89
  id,
86
- text,
90
+ object,
87
91
  settings,
88
92
  selectionManager,
89
93
  viewMode,
90
94
  previewOptions,
91
- dispatch,
92
- // query,
95
+ invokePromise,
93
96
  }),
94
97
  [
95
- document,
96
98
  id,
97
- text,
99
+ object,
98
100
  viewMode,
99
- dispatch,
101
+ invokePromise,
100
102
  previewOptions,
101
103
  settings,
102
- settings.editorInputMode,
103
- settings.folding,
104
- settings.numberedHeadings,
105
- settings.debug,
106
- settings.typewriter,
104
+ settings?.debug,
105
+ settings?.editorInputMode,
106
+ settings?.folding,
107
+ settings?.numberedHeadings,
108
+ settings?.typewriter,
107
109
  selectionManager,
108
110
  ],
109
111
  );
110
112
 
111
- const extensionProviders = useCapabilities(MarkdownCapabilities.Extensions);
112
-
113
- //
114
- // External extensions from other plugins.
115
- //
116
- const pluginExtensions = useMemo<Extension[]>(() => {
117
- if (!document) {
118
- return [];
119
- }
120
-
121
- return extensionProviders.flat().reduce((acc: Extension[], provider) => {
122
- const extension = typeof provider === 'function' ? provider({ document }) : provider;
123
- if (extension) {
124
- acc.push(extension);
125
- }
126
-
127
- return acc;
128
- }, []);
129
- }, [extensionProviders, document]);
130
-
131
- //
132
- // Basic plugins.
133
- //
134
113
  return useMemo<Extension[]>(
135
114
  () =>
136
115
  [
116
+ // TODO(burdon): Pass this in?
137
117
  // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
138
- document &&
139
- createDataExtensions({
140
- id: document.id,
141
- text: document.content.target && createDocAccessor(document.content.target, ['content']),
142
- space,
143
- identity,
144
- }),
145
- text &&
146
- id &&
118
+ target &&
147
119
  createDataExtensions({
148
120
  id,
149
- text: createDocAccessor(text, ['content']),
150
- space,
121
+ text: createDocAccessor(target, ['content']),
122
+ messenger: space,
151
123
  identity,
152
124
  }),
153
- selectionState(editorStateStore),
154
- document &&
125
+
126
+ // TODO(burdon): Reconcile with effect in parent.
127
+ Obj.instanceOf(Markdown.Document, object) &&
155
128
  listener({
156
- onChange: (text) => setFallbackName(document, text),
129
+ onChange: ({ text }) => {
130
+ setFallbackName(object as Markdown.Document, text);
131
+ },
157
132
  }),
133
+
158
134
  baseExtensions,
159
- pluginExtensions,
160
- ].filter(isNotFalsy),
161
- [baseExtensions, pluginExtensions, document, document?.content?.target, text, id, space, identity],
135
+ selectionState(editorStateStore),
136
+ ].filter(isTruthy),
137
+ [identity, space, id, object, target, baseExtensions],
162
138
  );
163
139
  };
164
140
 
@@ -166,9 +142,9 @@ export const useExtensions = ({
166
142
  * Create extension instances for editor.
167
143
  */
168
144
  const createBaseExtensions = ({
169
- document,
170
145
  id,
171
- dispatch,
146
+ object,
147
+ invokePromise,
172
148
  settings,
173
149
  selectionManager,
174
150
  viewMode,
@@ -176,9 +152,9 @@ const createBaseExtensions = ({
176
152
  }: ExtensionsOptions): Extension[] => {
177
153
  const extensions: Extension[] = [
178
154
  selectionManager && selectionChange(selectionManager),
179
- settings.editorInputMode && InputModeExtensions[settings.editorInputMode],
180
- settings.folding && folding(),
181
- ].filter(isNotFalsy);
155
+ settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],
156
+ settings?.folding && folding(),
157
+ ].filter(isTruthy);
182
158
 
183
159
  //
184
160
  // Markdown
@@ -189,30 +165,27 @@ const createBaseExtensions = ({
189
165
  formattingKeymap(),
190
166
  decorateMarkdown({
191
167
  selectionChangeDelay: 100,
192
- numberedHeadings: settings.numberedHeadings ? { from: 2 } : undefined,
168
+ numberedHeadings: settings?.numberedHeadings ? { from: 2 } : undefined,
193
169
  // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
170
+ // TODO(burdon): Create dx-tag.
194
171
  renderLinkButton:
195
- dispatch && (document || id)
196
- ? createLinkRenderer((id: string) => {
197
- void dispatch(
198
- createIntent(LayoutAction.Open, {
199
- part: 'main',
200
- subject: [id],
201
- options: {
202
- pivotId: document ? fullyQualifiedId(document) : id,
203
- },
204
- }),
205
- );
172
+ invokePromise && (object || id)
173
+ ? createLinkRenderer((targetId: string) => {
174
+ void invokePromise(Common.LayoutOperation.Open, {
175
+ subject: [targetId],
176
+ pivotId: object && Obj.isObject(object) ? Obj.getDXN(object).toString() : id,
177
+ });
206
178
  })
207
179
  : undefined,
208
180
  }),
209
181
  linkTooltip(renderLinkTooltip),
210
182
  preview(previewOptions),
183
+ replacer(),
211
184
  ],
212
185
  );
213
186
  }
214
187
 
215
- if (settings.debug) {
188
+ if (settings?.debug) {
216
189
  const items = settings.typewriter?.split(/[,\n]/) ?? '';
217
190
  if (items) {
218
191
  extensions.push(typewriter({ items }));
@@ -222,7 +195,7 @@ const createBaseExtensions = ({
222
195
  return extensions;
223
196
  };
224
197
 
225
- export const selectionChange = (selectionManager: SelectionManager) => {
198
+ const selectionChange = (selectionManager: SelectionManager) => {
226
199
  return EditorView.updateListener.of(
227
200
  debounceAndThrottle((update: ViewUpdate) => {
228
201
  if (update.selectionSet) {
@@ -235,6 +208,7 @@ export const selectionChange = (selectionManager: SelectionManager) => {
235
208
  to: cursorConverter.toCursor(range.to),
236
209
  }))
237
210
  .filter(({ from, to }) => to > from);
211
+
238
212
  selectionManager.updateMultiRange(id, ranges);
239
213
  }
240
214
  }, 100),
@@ -293,8 +267,8 @@ const renderLinkTooltip: RenderCallback<{ url: string }> = (el, { url }) => {
293
267
  );
294
268
  };
295
269
 
296
- // TODO(burdon): Remove react rendering; use DOM directly.
297
- export const renderRoot = <T extends Element>(root: T, node: ReactNode): T => {
270
+ // TODO(burdon): REMOVE.
271
+ const renderRoot = <T extends Element>(root: T, node: ReactNode): T => {
298
272
  createRoot(root).render(<ThemeProvider tx={defaultTx}>{node}</ThemeProvider>);
299
273
  return root;
300
274
  };
@@ -0,0 +1,83 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import * as Option from 'effect/Option';
6
+ import { useCallback, useMemo } from 'react';
7
+
8
+ import { Common } from '@dxos/app-framework';
9
+ import { usePluginManager } from '@dxos/app-framework/react';
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';
13
+ import { type EditorMenuGroup, type EditorMenuItem } from '@dxos/react-ui-editor';
14
+ import { insertAtCursor, insertAtLineStart } from '@dxos/ui-editor';
15
+
16
+ export const useLinkQuery = (db: Database.Database | undefined) => {
17
+ const { t } = useTranslation();
18
+
19
+ const manager = usePluginManager();
20
+ const resolve = useCallback(
21
+ (typename: string) =>
22
+ manager.capabilities.getAll(Common.Capability.Metadata).find(({ id }) => id === typename)?.metadata ?? {},
23
+ [manager],
24
+ );
25
+
26
+ const filter = useMemo(
27
+ () =>
28
+ 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)))
32
+ .map((schema) => Filter.typename(Type.getTypename(schema))),
33
+ ),
34
+ [db],
35
+ );
36
+
37
+ const handleLinkQuery = useCallback(
38
+ async (query?: string): Promise<EditorMenuGroup[]> => {
39
+ const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : (query?.toLowerCase() ?? '');
40
+ const results = await db?.query(Query.select(filter)).run();
41
+
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.
50
+ const type = Obj.getTypename(object)!;
51
+ const metadata = resolve(type);
52
+ return metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New object' }];
53
+ };
54
+
55
+ const items =
56
+ results
57
+ ?.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)!);
61
+ const label = toLocalizedString(getLabel(object), t);
62
+ return {
63
+ id: object.id,
64
+ label,
65
+ icon: metadata.icon,
66
+ onSelect: ({ view, head }) => {
67
+ const link = `[${label}](${Obj.getDXN(object)})`;
68
+ if (query?.startsWith('@')) {
69
+ insertAtLineStart(view, head, `!${link}\n`);
70
+ } else {
71
+ insertAtCursor(view, head, `${link} `);
72
+ }
73
+ },
74
+ };
75
+ }) ?? [];
76
+
77
+ return [{ id: 'echo', items }];
78
+ },
79
+ [db, filter, resolve],
80
+ );
81
+
82
+ return handleLinkQuery;
83
+ };
@@ -3,54 +3,59 @@
3
3
  //
4
4
 
5
5
  import { EditorView } from '@codemirror/view';
6
- import { Schema } from 'effect';
6
+ import * as Effect from 'effect/Effect';
7
7
  import { useMemo } from 'react';
8
8
 
9
- import { LayoutAction, createResolver, useIntentResolver } from '@dxos/app-framework';
9
+ import { Common } from '@dxos/app-framework';
10
+ import { useOperationResolver } from '@dxos/app-framework/react';
10
11
  import { invariant } from '@dxos/invariant';
11
- import { Cursor, setSelection } from '@dxos/react-ui-editor';
12
+ import { OperationResolver } from '@dxos/operation';
13
+ import { Cursor, setSelection } from '@dxos/ui-editor';
12
14
 
13
15
  import { meta } from '../meta';
14
16
 
15
17
  /**
16
18
  * Handle scrolling and selection of the current thread in a markdown editor.
17
19
  */
18
- export const useSelectCurrentThread = (editorView: EditorView | undefined, documentId: string) => {
19
- const scrollIntoViewResolver = useMemo(
20
+ export const useSelectCurrentThread = (editorView: EditorView | null, documentId: string) => {
21
+ const scrollIntoViewHandler = useMemo(
20
22
  () =>
21
- createResolver({
22
- intent: LayoutAction.UpdateLayout,
23
+ OperationResolver.make({
24
+ operation: Common.LayoutOperation.ScrollIntoView,
23
25
  position: 'hoist',
24
- filter: (data): data is { part: 'current'; subject: string; options: { cursor: string } } => {
25
- if (!Schema.is(LayoutAction.ScrollIntoView.fields.input)(data)) {
26
- return false;
27
- }
28
-
29
- return !!editorView && data.subject === documentId && !!data.options?.cursor;
30
- },
31
- resolve: ({ options: { cursor } }) => {
32
- invariant(editorView, 'Editor view is not defined.');
33
- const range = Cursor.getRangeFromCursor(editorView.state, cursor!);
34
- if (range) {
35
- const selection = editorView.state.selection.main.from !== range.from ? { anchor: range.from } : undefined;
36
- const effects = [
37
- // NOTE: This does not use the DOM scrollIntoView function.
38
- EditorView.scrollIntoView(range.from, { y: 'start', yMargin: 96 }),
39
- ];
40
- if (selection) {
41
- // Update the editor selection to get bi-directional highlighting.
42
- effects.push(setSelection.of({ current: documentId }));
26
+ filter: (input) => !!editorView && input.subject === documentId && !!input.cursor,
27
+ handler: (input) =>
28
+ Effect.sync(() => {
29
+ invariant(editorView, 'Editor view is not defined.');
30
+ const cursor = input.cursor;
31
+ if (!cursor) {
32
+ return;
43
33
  }
34
+ const range = Cursor.getRangeFromCursor(editorView.state, cursor);
35
+ if (range) {
36
+ const selection =
37
+ editorView.state.selection.main.from !== range.from ? { anchor: range.from } : undefined;
38
+ const effects = [
39
+ // NOTE: This does not use the DOM scrollIntoView function.
40
+ EditorView.scrollIntoView(range.from, {
41
+ y: 'start',
42
+ yMargin: 96,
43
+ }),
44
+ ];
45
+ if (selection) {
46
+ // Update the editor selection to get bi-directional highlighting.
47
+ effects.push(setSelection.of({ current: documentId }));
48
+ }
44
49
 
45
- editorView.dispatch({
46
- effects,
47
- selection: selection ? { anchor: range.from } : undefined,
48
- });
49
- }
50
- },
50
+ editorView.dispatch({
51
+ effects,
52
+ selection: selection ? { anchor: range.from } : undefined,
53
+ });
54
+ }
55
+ }),
51
56
  }),
52
57
  [documentId, editorView],
53
58
  );
54
59
 
55
- useIntentResolver(meta.id, scrollIntoViewResolver);
60
+ useOperationResolver(meta.id, scrollIntoViewHandler);
56
61
  };
package/src/index.ts CHANGED
@@ -2,8 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export { MarkdownCapabilities } from './capabilities';
6
- export { MarkdownEvents } from './events';
5
+ export { MarkdownCapabilities, MarkdownEvents } from './types';
7
6
 
8
7
  export * from './meta';
9
8
  export * from './types';
package/src/meta.ts CHANGED
@@ -2,18 +2,18 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type PluginMeta } from '@dxos/app-framework';
5
+ import { type Plugin } from '@dxos/app-framework';
6
6
  import { trim } from '@dxos/util';
7
7
 
8
- export const meta: PluginMeta = {
8
+ export const meta: Plugin.Meta = {
9
9
  id: 'dxos.org/plugin/markdown',
10
10
  name: 'Markdown',
11
11
  description: trim`
12
- A collaborative and extensible Markdown editor.
13
- In addition to markdown capabilities, the plugin supports collaborative in-line comments.
14
- You can use documents to extend the memory of your personal agents and add context for automated workflows.
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.
15
14
  `,
16
15
  icon: 'ph--text-aa--regular',
16
+ iconHue: 'indigo',
17
17
  source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown',
18
18
  screenshots: ['https://dxos.network/plugin-details-markdown-dark.png'],
19
19
  };
package/src/testing.ts ADDED
@@ -0,0 +1,27 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Toolkit from '@effect/ai/Toolkit';
6
+ import * as Effect from 'effect/Effect';
7
+
8
+ import { SpaceProperties } from '@dxos/client-protocol';
9
+ import { Obj, Ref } from '@dxos/echo';
10
+ import { Database } from '@dxos/echo';
11
+ import { Collection } from '@dxos/schema';
12
+
13
+ // TODO(wittjosiah): Factor out.
14
+ export const WithProperties = <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R | Database.Service> =>
15
+ Effect.zipRight(
16
+ Effect.gen(function* () {
17
+ // TODO(wittjosiah): Remove cast.
18
+ yield* Database.Service.add(
19
+ Obj.make(SpaceProperties, {
20
+ [Collection.Collection.typename]: Ref.make(Collection.make()),
21
+ }) as any,
22
+ );
23
+ }),
24
+ effect,
25
+ );
26
+
27
+ export const testToolkit = Toolkit.empty as Toolkit.Toolkit<any>;
@@ -18,6 +18,7 @@ export const translations = [
18
18
  'object name placeholder': 'New document',
19
19
  'rename object label': 'Rename document',
20
20
  'delete object label': 'Delete document',
21
+ 'object deleted label': 'Document deleted',
21
22
  },
22
23
  [meta.id]: {
23
24
  'plugin name': 'Editor',
@@ -43,6 +44,9 @@ export const translations = [
43
44
  'upload image label': 'Upload image',
44
45
  'fallback title': 'Untitled',
45
46
  'navigate to document label': 'Open document',
47
+ 'words label_zero': 'words',
48
+ 'words label_one': 'word',
49
+ 'words label_other': 'words',
46
50
  },
47
51
  },
48
52
  },
@@ -2,27 +2,28 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
 
7
7
  import { Obj, Ref, Type } from '@dxos/echo';
8
- import { LabelAnnotation } from '@dxos/echo-schema';
9
- import { EditorInputMode, EditorViewMode } from '@dxos/react-ui-editor/types';
10
- import { DataType, ItemAnnotation } from '@dxos/schema';
8
+ import { DescriptionAnnotation, FormInputAnnotation, LabelAnnotation } from '@dxos/echo/internal';
9
+ import { Text } from '@dxos/schema';
10
+ import { EditorInputMode, EditorViewMode } from '@dxos/ui-editor/types';
11
11
 
12
12
  /**
13
13
  * Document Item type.
14
14
  */
15
15
  export const Document = Schema.Struct({
16
16
  name: Schema.optional(Schema.String),
17
- fallbackName: Schema.optional(Schema.String),
18
- content: Type.Ref(DataType.Text),
17
+ description: Schema.optional(Schema.String),
18
+ fallbackName: Schema.String.pipe(FormInputAnnotation.set(false), Schema.optional),
19
+ content: Type.Ref(Text.Text).pipe(FormInputAnnotation.set(false)),
19
20
  }).pipe(
20
- Type.Obj({
21
+ Type.object({
21
22
  typename: 'dxos.org/type/Document',
22
23
  version: '0.1.0',
23
24
  }),
24
25
  LabelAnnotation.set(['name', 'fallbackName']),
25
- ItemAnnotation.set(true),
26
+ DescriptionAnnotation.set('description'),
26
27
  );
27
28
 
28
29
  export type Document = Schema.Schema.Type<typeof Document>;
@@ -30,11 +31,11 @@ export type Document = Schema.Schema.Type<typeof Document>;
30
31
  /**
31
32
  * Document factory.
32
33
  */
33
- export const makeDocument = ({
34
+ export const make = ({
34
35
  content = '',
35
36
  ...props
36
37
  }: Partial<{ name: string; fallbackName: string; content: string }> = {}) =>
37
- Obj.make(Document, { ...props, content: Ref.make(DataType.makeText(content)) });
38
+ Obj.make(Document, { ...props, content: Ref.make(Text.make(content)) });
38
39
 
39
40
  /**
40
41
  * Plugin settings.