@dxos/plugin-markdown 0.8.4-main.70d3990 → 0.8.4-main.74a063c4e0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/dist/lib/browser/MarkdownSettings-YZFNSJJY.mjs +121 -0
  2. package/dist/lib/browser/MarkdownSettings-YZFNSJJY.mjs.map +7 -0
  3. package/dist/lib/browser/blueprints/index.mjs +51 -0
  4. package/dist/lib/browser/blueprints/index.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-46WIDM4R.mjs +98 -0
  6. package/dist/lib/browser/chunk-46WIDM4R.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  8. package/dist/lib/browser/chunk-XKUKZNUS.mjs +158 -0
  9. package/dist/lib/browser/chunk-XKUKZNUS.mjs.map +7 -0
  10. package/dist/lib/browser/cli/index.mjs +39 -0
  11. package/dist/lib/browser/cli/index.mjs.map +7 -0
  12. package/dist/lib/browser/create-HSXPXCC5.mjs +30 -0
  13. package/dist/lib/browser/create-HSXPXCC5.mjs.map +7 -0
  14. package/dist/lib/browser/create-markdown-WB7DH3UF.mjs +22 -0
  15. package/dist/lib/browser/create-markdown-WB7DH3UF.mjs.map +7 -0
  16. package/dist/lib/browser/index.mjs +632 -139
  17. package/dist/lib/browser/index.mjs.map +4 -4
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/open-N6PAX6DY.mjs +21 -0
  20. package/dist/lib/browser/open-N6PAX6DY.mjs.map +7 -0
  21. package/dist/lib/browser/operations/index.mjs +14 -0
  22. package/dist/lib/browser/operations/index.mjs.map +7 -0
  23. package/dist/lib/browser/scroll-to-anchor-5M4F24AB.mjs +49 -0
  24. package/dist/lib/browser/scroll-to-anchor-5M4F24AB.mjs.map +7 -0
  25. package/dist/lib/browser/set-view-mode-NBNF2I5W.mjs +26 -0
  26. package/dist/lib/browser/set-view-mode-NBNF2I5W.mjs.map +7 -0
  27. package/dist/lib/browser/types/index.mjs +11 -5
  28. package/dist/lib/browser/update-5QIRVGTL.mjs +45 -0
  29. package/dist/lib/browser/update-5QIRVGTL.mjs.map +7 -0
  30. package/dist/lib/node-esm/MarkdownSettings-X6SDS35F.mjs +122 -0
  31. package/dist/lib/node-esm/MarkdownSettings-X6SDS35F.mjs.map +7 -0
  32. package/dist/lib/node-esm/blueprints/index.mjs +52 -0
  33. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  34. package/dist/lib/node-esm/chunk-4MSJO6IJ.mjs +99 -0
  35. package/dist/lib/node-esm/chunk-4MSJO6IJ.mjs.map +7 -0
  36. package/dist/lib/node-esm/chunk-E4BQCEXF.mjs +159 -0
  37. package/dist/lib/node-esm/chunk-E4BQCEXF.mjs.map +7 -0
  38. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  39. package/dist/lib/node-esm/cli/index.mjs +40 -0
  40. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  41. package/dist/lib/node-esm/create-6Z2KYISY.mjs +31 -0
  42. package/dist/lib/node-esm/create-6Z2KYISY.mjs.map +7 -0
  43. package/dist/lib/node-esm/create-markdown-JWQZICKY.mjs +23 -0
  44. package/dist/lib/node-esm/create-markdown-JWQZICKY.mjs.map +7 -0
  45. package/dist/lib/node-esm/index.mjs +632 -139
  46. package/dist/lib/node-esm/index.mjs.map +4 -4
  47. package/dist/lib/node-esm/meta.json +1 -1
  48. package/dist/lib/node-esm/open-DSNFRSNZ.mjs +22 -0
  49. package/dist/lib/node-esm/open-DSNFRSNZ.mjs.map +7 -0
  50. package/dist/lib/node-esm/operations/index.mjs +15 -0
  51. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  52. package/dist/lib/node-esm/scroll-to-anchor-D6SHGU2R.mjs +50 -0
  53. package/dist/lib/node-esm/scroll-to-anchor-D6SHGU2R.mjs.map +7 -0
  54. package/dist/lib/node-esm/set-view-mode-REYB4L7J.mjs +27 -0
  55. package/dist/lib/node-esm/set-view-mode-REYB4L7J.mjs.map +7 -0
  56. package/dist/lib/node-esm/types/index.mjs +11 -5
  57. package/dist/lib/node-esm/update-YMQAIKOF.mjs +46 -0
  58. package/dist/lib/node-esm/update-YMQAIKOF.mjs.map +7 -0
  59. package/dist/types/src/MarkdownPlugin.d.ts +2 -1
  60. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  61. package/dist/types/src/blueprints/index.d.ts +2 -0
  62. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  63. package/dist/types/src/blueprints/markdown-blueprint.d.ts +4 -0
  64. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -0
  65. package/dist/types/src/capabilities/anchor-sort.d.ts +4 -2
  66. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/app-graph-serializer.d.ts +3 -2
  68. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/artifact-definition.d.ts +3 -1
  70. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  71. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -6
  72. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/index.d.ts +27 -14
  74. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/node.d.ts +4 -0
  76. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  77. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  78. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  79. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  80. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/settings.d.ts +22 -2
  82. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/state.d.ts +4 -9
  84. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  85. package/dist/types/src/cli/index.d.ts +2 -0
  86. package/dist/types/src/cli/index.d.ts.map +1 -0
  87. package/dist/types/src/cli/plugin.d.ts +3 -0
  88. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  89. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +1 -1
  90. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
  91. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +18 -12
  92. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  93. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +2 -2
  94. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  95. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +16 -10
  96. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  97. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +10 -5
  98. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  99. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +4 -4
  100. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  101. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +138 -0
  102. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -0
  103. package/dist/types/src/components/MarkdownSettings/index.d.ts +1 -1
  104. package/dist/types/src/components/MarkdownSettings/index.d.ts.map +1 -1
  105. package/dist/types/src/components/index.d.ts +3 -5
  106. package/dist/types/src/components/index.d.ts.map +1 -1
  107. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts +8 -0
  108. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -0
  109. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +9 -0
  110. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
  111. package/dist/types/src/containers/MarkdownCard/index.d.ts +2 -0
  112. package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -0
  113. package/dist/types/src/containers/MarkdownCard/snippet.d.ts +15 -0
  114. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -0
  115. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts +36 -0
  116. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +1 -0
  117. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts +99 -0
  118. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +1 -0
  119. package/dist/types/src/containers/MarkdownContainer/index.d.ts +3 -0
  120. package/dist/types/src/containers/MarkdownContainer/index.d.ts.map +1 -0
  121. package/dist/types/src/containers/index.d.ts +5 -0
  122. package/dist/types/src/containers/index.d.ts.map +1 -0
  123. package/dist/types/src/hooks/index.d.ts +0 -1
  124. package/dist/types/src/hooks/index.d.ts.map +1 -1
  125. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -1
  126. package/dist/types/src/hooks/useExtensions.d.ts +8 -6
  127. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  128. package/dist/types/src/hooks/useLinkQuery.d.ts +2 -2
  129. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  130. package/dist/types/src/index.d.ts +2 -2
  131. package/dist/types/src/index.d.ts.map +1 -1
  132. package/dist/types/src/meta.d.ts +2 -2
  133. package/dist/types/src/meta.d.ts.map +1 -1
  134. package/dist/types/src/operations/create-markdown.d.ts +5 -0
  135. package/dist/types/src/operations/create-markdown.d.ts.map +1 -0
  136. package/dist/types/src/operations/create.d.ts +5 -0
  137. package/dist/types/src/operations/create.d.ts.map +1 -0
  138. package/dist/types/src/operations/create.test.d.ts.map +1 -0
  139. package/dist/types/src/operations/definitions.d.ts +64 -0
  140. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  141. package/dist/types/src/operations/index.d.ts +4 -0
  142. package/dist/types/src/operations/index.d.ts.map +1 -0
  143. package/dist/types/src/operations/open.d.ts +5 -0
  144. package/dist/types/src/operations/open.d.ts.map +1 -0
  145. package/dist/types/src/operations/scroll-to-anchor.d.ts +5 -0
  146. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -0
  147. package/dist/types/src/operations/set-view-mode.d.ts +5 -0
  148. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -0
  149. package/dist/types/src/operations/update.d.ts +5 -0
  150. package/dist/types/src/operations/update.d.ts.map +1 -0
  151. package/dist/types/src/operations/update.test.d.ts.map +1 -0
  152. package/dist/types/src/testing.d.ts +2 -2
  153. package/dist/types/src/testing.d.ts.map +1 -1
  154. package/dist/types/src/translations.d.ts +75 -35
  155. package/dist/types/src/translations.d.ts.map +1 -1
  156. package/dist/types/src/types/Markdown.d.ts +27 -28
  157. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  158. package/dist/types/src/types/Settings.d.ts +16 -0
  159. package/dist/types/src/types/Settings.d.ts.map +1 -0
  160. package/dist/types/src/types/capabilities.d.ts +51 -0
  161. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  162. package/dist/types/src/types/events.d.ts +5 -0
  163. package/dist/types/src/types/events.d.ts.map +1 -0
  164. package/dist/types/src/types/index.d.ts +4 -2
  165. package/dist/types/src/types/index.d.ts.map +1 -1
  166. package/dist/types/src/types/types.d.ts +2 -2
  167. package/dist/types/src/types/types.d.ts.map +1 -1
  168. package/dist/types/src/util.d.ts +5 -2
  169. package/dist/types/src/util.d.ts.map +1 -1
  170. package/dist/types/src/util.test.d.ts +2 -0
  171. package/dist/types/src/util.test.d.ts.map +1 -0
  172. package/dist/types/tsconfig.tsbuildinfo +1 -1
  173. package/package.json +114 -67
  174. package/src/MarkdownPlugin.tsx +73 -81
  175. package/src/blueprints/index.ts +5 -0
  176. package/src/blueprints/markdown-blueprint.ts +44 -0
  177. package/src/capabilities/anchor-sort.ts +26 -20
  178. package/src/capabilities/app-graph-serializer.ts +55 -44
  179. package/src/capabilities/artifact-definition.ts +81 -83
  180. package/src/capabilities/blueprint-definition.ts +9 -35
  181. package/src/capabilities/index.ts +12 -11
  182. package/src/capabilities/node.ts +11 -0
  183. package/src/capabilities/operation-handler.ts +16 -0
  184. package/src/capabilities/react-surface.tsx +93 -66
  185. package/src/capabilities/settings.ts +30 -18
  186. package/src/capabilities/state.ts +41 -25
  187. package/src/cli/index.ts +5 -0
  188. package/src/cli/plugin.ts +39 -0
  189. package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
  190. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +37 -38
  191. package/src/components/MarkdownEditor/MarkdownEditor.tsx +75 -45
  192. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +63 -30
  193. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +47 -52
  194. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +39 -0
  195. package/src/components/MarkdownSettings/MarkdownSettings.tsx +116 -86
  196. package/src/components/MarkdownSettings/index.ts +1 -1
  197. package/src/components/index.ts +4 -7
  198. package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +67 -0
  199. package/src/containers/MarkdownCard/MarkdownCard.tsx +57 -0
  200. package/src/containers/MarkdownCard/index.ts +5 -0
  201. package/src/containers/MarkdownCard/snippet.ts +78 -0
  202. package/src/containers/MarkdownContainer/MarkdownContainer.stories.tsx +134 -0
  203. package/src/containers/MarkdownContainer/MarkdownContainer.tsx +135 -0
  204. package/src/containers/MarkdownContainer/index.ts +6 -0
  205. package/src/containers/index.ts +10 -0
  206. package/src/hooks/index.ts +0 -1
  207. package/src/hooks/useEditorMenuOptions.ts +11 -14
  208. package/src/hooks/useExtensions.tsx +90 -106
  209. package/src/hooks/useLinkQuery.ts +41 -16
  210. package/src/index.ts +3 -2
  211. package/src/meta.ts +3 -3
  212. package/src/operations/create-markdown.ts +20 -0
  213. package/src/operations/create.conversations.json +1 -0
  214. package/src/operations/create.test.ts +98 -0
  215. package/src/operations/create.ts +27 -0
  216. package/src/operations/definitions.ts +120 -0
  217. package/src/operations/index.ts +16 -0
  218. package/src/operations/open.ts +25 -0
  219. package/src/operations/scroll-to-anchor.ts +39 -0
  220. package/src/operations/set-view-mode.ts +24 -0
  221. package/src/operations/update.conversations.json +1 -0
  222. package/src/operations/update.test.ts +215 -0
  223. package/src/operations/update.ts +51 -0
  224. package/src/testing.ts +4 -4
  225. package/src/translations.ts +49 -35
  226. package/src/types/Markdown.ts +19 -26
  227. package/src/types/Settings.ts +28 -0
  228. package/src/types/capabilities.ts +50 -0
  229. package/src/types/events.ts +14 -0
  230. package/src/types/index.ts +5 -3
  231. package/src/types/types.ts +3 -2
  232. package/src/util.test.ts +44 -0
  233. package/src/util.tsx +77 -7
  234. package/dist/lib/browser/MarkdownCard-TC3GGUSX.mjs +0 -12
  235. package/dist/lib/browser/MarkdownContainer-YF22DV4M.mjs +0 -15
  236. package/dist/lib/browser/anchor-sort-3MYLO74J.mjs +0 -32
  237. package/dist/lib/browser/anchor-sort-3MYLO74J.mjs.map +0 -7
  238. package/dist/lib/browser/app-graph-serializer-BZJ4TQOE.mjs +0 -51
  239. package/dist/lib/browser/app-graph-serializer-BZJ4TQOE.mjs.map +0 -7
  240. package/dist/lib/browser/blueprint-definition-HED54GGW.mjs +0 -13
  241. package/dist/lib/browser/blueprint-definition-HED54GGW.mjs.map +0 -7
  242. package/dist/lib/browser/chunk-3IPVL3E4.mjs +0 -20
  243. package/dist/lib/browser/chunk-3IPVL3E4.mjs.map +0 -7
  244. package/dist/lib/browser/chunk-BE3IO2CM.mjs +0 -150
  245. package/dist/lib/browser/chunk-BE3IO2CM.mjs.map +0 -7
  246. package/dist/lib/browser/chunk-BQTYJOFB.mjs +0 -28
  247. package/dist/lib/browser/chunk-BQTYJOFB.mjs.map +0 -7
  248. package/dist/lib/browser/chunk-CN35HEBX.mjs +0 -79
  249. package/dist/lib/browser/chunk-CN35HEBX.mjs.map +0 -7
  250. package/dist/lib/browser/chunk-DLZ5RR3P.mjs +0 -96
  251. package/dist/lib/browser/chunk-DLZ5RR3P.mjs.map +0 -7
  252. package/dist/lib/browser/chunk-IBCHVMZW.mjs +0 -16
  253. package/dist/lib/browser/chunk-IBCHVMZW.mjs.map +0 -7
  254. package/dist/lib/browser/chunk-NXT2E2BG.mjs +0 -57
  255. package/dist/lib/browser/chunk-NXT2E2BG.mjs.map +0 -7
  256. package/dist/lib/browser/chunk-OKNQ57GF.mjs +0 -51
  257. package/dist/lib/browser/chunk-OKNQ57GF.mjs.map +0 -7
  258. package/dist/lib/browser/chunk-V7P7EIWG.mjs +0 -829
  259. package/dist/lib/browser/chunk-V7P7EIWG.mjs.map +0 -7
  260. package/dist/lib/browser/intent-resolver-55ASQRIW.mjs +0 -62
  261. package/dist/lib/browser/intent-resolver-55ASQRIW.mjs.map +0 -7
  262. package/dist/lib/browser/react-surface-GPD6T435.mjs +0 -211
  263. package/dist/lib/browser/react-surface-GPD6T435.mjs.map +0 -7
  264. package/dist/lib/browser/settings-G3ZOXJQY.mjs +0 -28
  265. package/dist/lib/browser/settings-G3ZOXJQY.mjs.map +0 -7
  266. package/dist/lib/browser/state-BTUKVZHY.mjs +0 -37
  267. package/dist/lib/browser/state-BTUKVZHY.mjs.map +0 -7
  268. package/dist/lib/browser/toolkit.mjs +0 -13
  269. package/dist/lib/browser/toolkit.mjs.map +0 -7
  270. package/dist/lib/node-esm/MarkdownCard-FTEHVH7P.mjs +0 -13
  271. package/dist/lib/node-esm/MarkdownCard-FTEHVH7P.mjs.map +0 -7
  272. package/dist/lib/node-esm/MarkdownContainer-L75AIJFM.mjs +0 -16
  273. package/dist/lib/node-esm/MarkdownContainer-L75AIJFM.mjs.map +0 -7
  274. package/dist/lib/node-esm/anchor-sort-W4HCTYUQ.mjs +0 -33
  275. package/dist/lib/node-esm/anchor-sort-W4HCTYUQ.mjs.map +0 -7
  276. package/dist/lib/node-esm/app-graph-serializer-OCTHXWLF.mjs +0 -52
  277. package/dist/lib/node-esm/app-graph-serializer-OCTHXWLF.mjs.map +0 -7
  278. package/dist/lib/node-esm/blueprint-definition-HAQGJOMQ.mjs +0 -14
  279. package/dist/lib/node-esm/blueprint-definition-HAQGJOMQ.mjs.map +0 -7
  280. package/dist/lib/node-esm/chunk-3DN4DPVA.mjs +0 -151
  281. package/dist/lib/node-esm/chunk-3DN4DPVA.mjs.map +0 -7
  282. package/dist/lib/node-esm/chunk-7GN66TDQ.mjs +0 -52
  283. package/dist/lib/node-esm/chunk-7GN66TDQ.mjs.map +0 -7
  284. package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs +0 -17
  285. package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-I5JSQBPI.mjs +0 -58
  287. package/dist/lib/node-esm/chunk-I5JSQBPI.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs +0 -29
  289. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-TYUGABTD.mjs +0 -22
  291. package/dist/lib/node-esm/chunk-TYUGABTD.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-UVLACSAE.mjs +0 -830
  293. package/dist/lib/node-esm/chunk-UVLACSAE.mjs.map +0 -7
  294. package/dist/lib/node-esm/chunk-YFRTKXTB.mjs +0 -80
  295. package/dist/lib/node-esm/chunk-YFRTKXTB.mjs.map +0 -7
  296. package/dist/lib/node-esm/chunk-ZNS55FS3.mjs +0 -97
  297. package/dist/lib/node-esm/chunk-ZNS55FS3.mjs.map +0 -7
  298. package/dist/lib/node-esm/intent-resolver-DTBVWCNO.mjs +0 -63
  299. package/dist/lib/node-esm/intent-resolver-DTBVWCNO.mjs.map +0 -7
  300. package/dist/lib/node-esm/react-surface-QWG7CJ5U.mjs +0 -212
  301. package/dist/lib/node-esm/react-surface-QWG7CJ5U.mjs.map +0 -7
  302. package/dist/lib/node-esm/settings-IBFFCGNL.mjs +0 -29
  303. package/dist/lib/node-esm/settings-IBFFCGNL.mjs.map +0 -7
  304. package/dist/lib/node-esm/state-K6EH7SRZ.mjs +0 -38
  305. package/dist/lib/node-esm/state-K6EH7SRZ.mjs.map +0 -7
  306. package/dist/lib/node-esm/toolkit.mjs +0 -14
  307. package/dist/lib/node-esm/toolkit.mjs.map +0 -7
  308. package/dist/types/src/capabilities/capabilities.d.ts +0 -12
  309. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  310. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  311. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  312. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +0 -7
  313. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +0 -1
  314. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +0 -9
  315. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +0 -1
  316. package/dist/types/src/components/MarkdownCard/index.d.ts +0 -4
  317. package/dist/types/src/components/MarkdownCard/index.d.ts.map +0 -1
  318. package/dist/types/src/components/MarkdownContainer.d.ts +0 -14
  319. package/dist/types/src/components/MarkdownContainer.d.ts.map +0 -1
  320. package/dist/types/src/components/MarkdownContainer.stories.d.ts +0 -59
  321. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +0 -1
  322. package/dist/types/src/components/Suggestions.stories.d.ts +0 -11
  323. package/dist/types/src/components/Suggestions.stories.d.ts.map +0 -1
  324. package/dist/types/src/events.d.ts +0 -4
  325. package/dist/types/src/events.d.ts.map +0 -1
  326. package/dist/types/src/functions/create.d.ts +0 -8
  327. package/dist/types/src/functions/create.d.ts.map +0 -1
  328. package/dist/types/src/functions/create.test.d.ts.map +0 -1
  329. package/dist/types/src/functions/index.d.ts +0 -18
  330. package/dist/types/src/functions/index.d.ts.map +0 -1
  331. package/dist/types/src/functions/open.d.ts +0 -7
  332. package/dist/types/src/functions/open.d.ts.map +0 -1
  333. package/dist/types/src/functions/update.d.ts +0 -6
  334. package/dist/types/src/functions/update.d.ts.map +0 -1
  335. package/dist/types/src/functions/update.test.d.ts.map +0 -1
  336. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +0 -6
  337. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +0 -1
  338. package/dist/types/src/toolkit.d.ts +0 -3
  339. package/dist/types/src/toolkit.d.ts.map +0 -1
  340. package/dist/types/src/types/MarkdownAction.d.ts +0 -34
  341. package/dist/types/src/types/MarkdownAction.d.ts.map +0 -1
  342. package/src/capabilities/capabilities.ts +0 -22
  343. package/src/capabilities/intent-resolver.ts +0 -58
  344. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +0 -76
  345. package/src/components/MarkdownCard/MarkdownCard.tsx +0 -89
  346. package/src/components/MarkdownCard/index.ts +0 -9
  347. package/src/components/MarkdownContainer.stories.tsx +0 -136
  348. package/src/components/MarkdownContainer.tsx +0 -113
  349. package/src/components/Suggestions.stories.tsx +0 -226
  350. package/src/events.ts +0 -11
  351. package/src/functions/create.conversations.json +0 -1
  352. package/src/functions/create.test.ts +0 -128
  353. package/src/functions/create.ts +0 -34
  354. package/src/functions/index.ts +0 -13
  355. package/src/functions/open.ts +0 -32
  356. package/src/functions/update.conversations.json +0 -1
  357. package/src/functions/update.test.ts +0 -151
  358. package/src/functions/update.ts +0 -37
  359. package/src/hooks/useSelectCurrentThread.tsx +0 -66
  360. package/src/toolkit.ts +0 -6
  361. package/src/types/MarkdownAction.ts +0 -29
  362. /package/dist/lib/browser/{MarkdownCard-TC3GGUSX.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  363. /package/dist/lib/{browser/MarkdownContainer-YF22DV4M.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +0 -0
  364. /package/dist/types/src/{functions → operations}/create.test.d.ts +0 -0
  365. /package/dist/types/src/{functions → operations}/update.test.d.ts +0 -0
@@ -1,155 +1,648 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
- AnchorSort,
4
- AppGraphSerializer,
5
- BlueprintDefinition,
6
- IntentResolver,
7
- MarkdownSettings,
8
- MarkdownState,
9
- ReactSurface
10
- } from "./chunk-TYUGABTD.mjs";
11
- import {
12
- MARKDOWN_BLUEPRINT_KEY
13
- } from "./chunk-3DN4DPVA.mjs";
14
- import {
15
- translations
16
- } from "./chunk-I5JSQBPI.mjs";
17
- import {
18
- MarkdownCapabilities
19
- } from "./chunk-GMMVSXQ6.mjs";
20
- import {
21
- getContentSnippet,
22
- getFallbackName,
23
- isEditorModel,
24
- isMarkdownProperties,
25
- serializer,
26
- setFallbackName
27
- } from "./chunk-7GN66TDQ.mjs";
28
- import {
29
- MarkdownAction_exports,
30
- Markdown_exports
31
- } from "./chunk-YFRTKXTB.mjs";
32
- import {
33
- meta
34
- } from "./chunk-SHAMSMKQ.mjs";
3
+ MarkdownCapabilities,
4
+ MarkdownEvents,
5
+ MarkdownStateSchema,
6
+ Markdown_exports,
7
+ Settings_exports
8
+ } from "./chunk-4MSJO6IJ.mjs";
9
+ import "./chunk-HSLMI22Q.mjs";
35
10
 
36
- // src/events.ts
37
- import { Events } from "@dxos/app-framework";
38
- (function(MarkdownEvents2) {
39
- MarkdownEvents2.SetupExtensions = Events.createStateEvent(`${meta.id}/event/setup-extensions`);
40
- })(MarkdownEvents || (MarkdownEvents = {}));
41
- var MarkdownEvents;
11
+ // src/meta.ts
12
+ import { trim } from "@dxos/util";
13
+ var meta = {
14
+ id: "org.dxos.plugin.markdown",
15
+ name: "Markdown",
16
+ description: trim`
17
+ Full-featured collaborative markdown editor with real-time editing, inline comments, and rich formatting.
18
+ Supports AI-powered editing assistance and seamlessly integrates with other workspace objects.
19
+ `,
20
+ icon: "ph--text-aa--regular",
21
+ iconHue: "indigo",
22
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown",
23
+ screenshots: [
24
+ "https://dxos.network/plugin-details-markdown-dark.png"
25
+ ]
26
+ };
27
+
28
+ // src/util.tsx
29
+ import { debounce } from "@dxos/async";
30
+ import { Obj } from "@dxos/echo";
31
+ import { Markdown } from "#types";
32
+ var isEditorModel = (data) => data && typeof data === "object" && "id" in data && typeof data.id === "string" && "text" in data && typeof data.text === "string";
33
+ var isMarkdownProperties = (data) => Obj.isObject(data) ? true : data && typeof data === "object" ? "title" in data && typeof data.title === "string" : false;
34
+ var nonTitleChars = /[^\w ]/g;
35
+ var skipPatterns = [
36
+ /^!\[/,
37
+ /^---\s*$/,
38
+ /^```/,
39
+ /^\s*$/
40
+ ];
41
+ var titlePatterns = [
42
+ /^#{1,6}\s+(.+)/
43
+ ];
44
+ var getFallbackName = (content = "") => {
45
+ const len = content.length;
46
+ let i = 0;
47
+ while (i < len) {
48
+ let lineEnd = i;
49
+ while (lineEnd < len && content[lineEnd] !== "\n") {
50
+ lineEnd++;
51
+ }
52
+ const line = content.slice(i, lineEnd).trim();
53
+ i = lineEnd + 1;
54
+ if (skipPatterns.some((pattern) => pattern.test(line))) {
55
+ continue;
56
+ }
57
+ for (const pattern of titlePatterns) {
58
+ const match = pattern.exec(line);
59
+ if (match) {
60
+ const text2 = match[1].replaceAll(nonTitleChars, "").trim();
61
+ if (text2.length > 0) {
62
+ return text2;
63
+ }
64
+ }
65
+ }
66
+ const maxLen = 32;
67
+ const text = line.replaceAll(nonTitleChars, "").trim();
68
+ if (text.length > 0) {
69
+ if (text.length > maxLen) {
70
+ const words = text.split(/\s+/);
71
+ let result = "";
72
+ for (const word of words) {
73
+ const next = result.length === 0 ? word : result + " " + word;
74
+ if (next.length > maxLen) {
75
+ break;
76
+ }
77
+ result = next;
78
+ }
79
+ return result + "\u2026";
80
+ }
81
+ return text;
82
+ }
83
+ }
84
+ return "";
85
+ };
86
+ var getContentSnippet = (content = "", maxLines = 3) => {
87
+ const abstract = content.split("\n").filter((line) => !line.startsWith("!")).filter((line) => line.trim() !== "");
88
+ return abstract.slice(0, maxLines).join("\n") ?? "";
89
+ };
90
+ var setFallbackName = debounce((doc, content = "") => {
91
+ const name = getFallbackName(content);
92
+ if (doc.fallbackName !== name) {
93
+ Obj.change(doc, (obj) => {
94
+ obj.fallbackName = name;
95
+ });
96
+ }
97
+ }, 200);
98
+ var serializer = {
99
+ serialize: async ({ object }) => {
100
+ const { content } = await object.content.load();
101
+ return JSON.stringify({
102
+ name: object.name,
103
+ fallbackName: object.fallbackName,
104
+ content
105
+ });
106
+ },
107
+ deserialize: async ({ content: serialized }) => {
108
+ const { name, fallbackName, content } = JSON.parse(serialized);
109
+ return Markdown.make({
110
+ name,
111
+ fallbackName,
112
+ content
113
+ });
114
+ }
115
+ };
42
116
 
43
117
  // src/MarkdownPlugin.tsx
44
- import { Capabilities, Events as Events2, contributes, createIntent, defineModule, definePlugin } from "@dxos/app-framework";
45
- import { Ref } from "@dxos/echo";
118
+ import * as Effect from "effect/Effect";
119
+ import * as Option from "effect/Option";
120
+ import { Plugin } from "@dxos/app-framework";
121
+ import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
122
+ import { Annotation, Ref } from "@dxos/echo";
46
123
  import { createDocAccessor, getTextInRange } from "@dxos/echo-db";
47
- import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
48
- import { translations as editorTranslations } from "@dxos/react-ui-editor";
124
+ import { Operation } from "@dxos/operation";
125
+ import { SpaceOperation } from "@dxos/plugin-space/operations";
126
+ import { translations as editorTranslations2 } from "@dxos/react-ui-editor";
49
127
  import { Text } from "@dxos/schema";
50
- var MarkdownPlugin = definePlugin(meta, () => [
51
- defineModule({
52
- id: `${meta.id}/module/translations`,
53
- activatesOn: Events2.SetupTranslations,
54
- activate: () => contributes(Capabilities.Translations, [
55
- ...translations,
56
- ...editorTranslations
57
- ])
58
- }),
59
- defineModule({
60
- id: `${meta.id}/module/settings`,
61
- activatesOn: Events2.SetupSettings,
62
- activate: MarkdownSettings
63
- }),
64
- defineModule({
65
- id: `${meta.id}/module/state`,
66
- // TODO(wittjosiah): Does not integrate with settings store.
67
- // Should this be a different event?
68
- // Should settings store be renamed to be more generic?
69
- activatesOn: Events2.SetupSettings,
70
- activate: MarkdownState
71
- }),
72
- defineModule({
73
- id: `${meta.id}/module/metadata`,
74
- activatesOn: Events2.SetupMetadata,
75
- activate: () => contributes(Capabilities.Metadata, {
76
- id: Markdown_exports.Document.typename,
77
- metadata: {
78
- label: (object) => object.name || object.fallbackName,
79
- icon: "ph--text-aa--regular",
80
- iconHue: "indigo",
81
- blueprints: [
82
- MARKDOWN_BLUEPRINT_KEY
83
- ],
84
- graphProps: {
85
- managesAutofocus: true
86
- },
87
- // TODO(wittjosiah): Move out of metadata.
88
- loadReferences: async (doc) => await Ref.Array.loadAll([
89
- doc.content
90
- ]),
91
- serializer,
92
- // TODO(wittjosiah): Consider how to do generic comments without these.
93
- comments: "anchored",
94
- selectionMode: "multi-range",
95
- getAnchorLabel: (doc, anchor) => {
96
- if (doc.content) {
97
- const [start, end] = anchor.split(":");
98
- return getTextInRange(createDocAccessor(doc.content.target, [
99
- "content"
100
- ]), start, end);
101
- }
102
- },
103
- createObjectIntent: () => createIntent(MarkdownAction_exports.Create),
104
- addToCollectionOnCreate: true
128
+ import { MarkdownBlueprint } from "#blueprints";
129
+ import { AnchorSort, AppGraphSerializer, BlueprintDefinition, MarkdownSettings, MarkdownState, OperationHandler, ReactSurface } from "#capabilities";
130
+ import { meta as meta3 } from "#meta";
131
+ import { MarkdownOperation } from "#operations";
132
+ import { Markdown as Markdown3, MarkdownEvents as MarkdownEvents2 } from "#types";
133
+
134
+ // src/translations.ts
135
+ import { translations as editorTranslations } from "@dxos/react-ui-editor";
136
+ import { meta as meta2 } from "#meta";
137
+ import { Markdown as Markdown2 } from "#types";
138
+ var translations = [
139
+ {
140
+ "en-US": {
141
+ [Markdown2.Document.typename]: {
142
+ "typename.label": "Document",
143
+ "typename.label_zero": "Documents",
144
+ "typename.label_one": "Document",
145
+ "typename.label_other": "Documents",
146
+ "object-name.placeholder": "New document",
147
+ "add-object.label": "Add document",
148
+ "rename-object.label": "Rename document",
149
+ "delete-object.label": "Delete document",
150
+ "object-deleted.label": "Document deleted"
151
+ },
152
+ [meta2.id]: {
153
+ "plugin.name": "Editor",
154
+ "settings.title": "Editor settings",
155
+ "choose-markdown-from-space-dialog.title": "Choose one or more documents to add",
156
+ // TODO(burdon): Style-guide for user-facing text (e.g., hints, questions, capitalization, etc.)
157
+ "empty-choose-markdown-from-space.message": "None available; try creating a new one instead?",
158
+ "chooser-done.label": "Add selected",
159
+ "editor.placeholder": "Start typing\u2026",
160
+ "editor-input-mode.label": "Editor input mode",
161
+ "editor-input-mode.description": "Choose keyboard bindings for the editor.",
162
+ "select-editor-input-mode.placeholder": "Select editor input mode\u2026",
163
+ "settings.editor-input-mode.default.label": "Default",
164
+ "settings.editor-input-mode.vim.label": "Vim",
165
+ "settings.editor-input-mode.vscode.label": "VS Code",
166
+ "settings.toolbar.label": "Show toolbar",
167
+ "settings.toolbar.description": "Display a formatting toolbar above the editor.",
168
+ "settings.numbered-headings.label": "Numbered headings",
169
+ "settings.numbered-headings.description": "Automatically number heading levels in the document.",
170
+ "settings.folding.label": "Folding",
171
+ "settings.folding.description": "Allow collapsing and expanding sections by heading.",
172
+ "settings.experimental.label": "Enable experimental features",
173
+ "settings.experimental.description": "Turn on features that are still in development.",
174
+ "settings.debug.label": "Enable debugging features",
175
+ "settings.debug.description": "Show developer tools and diagnostics for the editor.",
176
+ "settings.debug-typewriter.label": "Typewriter script",
177
+ "settings.debug-typewriter.description": "Script to replay typed input for testing purposes.",
178
+ "settings.debug-typewriter.placeholder": "Typewriter script...",
179
+ "toggle-view-mode.label": "Toggle read-only",
180
+ "default-view-mode.label": "Default view mode",
181
+ "default-view-mode.description": "Set whether documents open in editing or read-only mode.",
182
+ "upload-image.label": "Upload image",
183
+ "fallback.title": "Untitled",
184
+ "navigate-to-document.label": "Open document",
185
+ "words.label": "words",
186
+ "words.label_zero": "words",
187
+ "words.label_one": "word",
188
+ "words.label_other": "words"
105
189
  }
106
- })
107
- }),
108
- defineModule({
109
- id: `${meta.id}/module/schema`,
110
- activatesOn: ClientEvents.SetupSchema,
111
- activate: () => contributes(ClientCapabilities.Schema, [
112
- Markdown_exports.Document,
113
- Text.Text
114
- ])
115
- }),
116
- defineModule({
117
- id: `${meta.id}/module/react-surface`,
118
- activatesOn: Events2.SetupReactSurface,
119
- // TODO(wittjosiah): Should occur before the editor is loaded when surfaces activation is more granular.
120
- activatesBefore: [
121
- MarkdownEvents.SetupExtensions
122
- ],
123
- activate: ReactSurface
124
- }),
125
- defineModule({
126
- id: `${meta.id}/module/intent-resolver`,
127
- activatesOn: Events2.SetupIntentResolver,
128
- activate: IntentResolver
129
- }),
130
- defineModule({
131
- id: `${meta.id}/module/app-graph-serializer`,
132
- activatesOn: Events2.AppGraphReady,
133
- activate: AppGraphSerializer
134
- }),
135
- defineModule({
136
- id: `${meta.id}/module/anchor-sort`,
137
- // TODO(wittjosiah): More relevant event?
138
- activatesOn: Events2.AppGraphReady,
139
- activate: AnchorSort
140
- }),
141
- defineModule({
142
- id: `${meta.id}/module/blueprint`,
143
- activatesOn: Events2.SetupArtifactDefinition,
144
- activate: BlueprintDefinition
145
- })
146
- ]);
190
+ }
191
+ },
192
+ ...editorTranslations
193
+ ];
194
+
195
+ // src/MarkdownPlugin.tsx
196
+ var MarkdownPlugin = Plugin.define(meta3).pipe(AppPlugin.addBlueprintDefinitionModule({
197
+ activate: BlueprintDefinition
198
+ }), AppPlugin.addMetadataModule({
199
+ metadata: {
200
+ id: Markdown3.Document.typename,
201
+ metadata: {
202
+ // TODO(dmaretskyi): Remove label, icon and iconHue and query them of schema.
203
+ label: (object) => object.name || object.fallbackName,
204
+ icon: Annotation.IconAnnotation.get(Markdown3.Document).pipe(Option.getOrThrow).icon,
205
+ iconHue: Annotation.IconAnnotation.get(Markdown3.Document).pipe(Option.getOrThrow).hue ?? "white",
206
+ blueprints: [
207
+ MarkdownBlueprint.key
208
+ ],
209
+ graphProps: {
210
+ managesAutofocus: true
211
+ },
212
+ // TODO(wittjosiah): Move out of metadata.
213
+ loadReferences: async (doc) => await Ref.Array.loadAll([
214
+ doc.content
215
+ ]),
216
+ serializer,
217
+ // TODO(wittjosiah): Consider how to do generic comments without these.
218
+ comments: "anchored",
219
+ selectionMode: "multi-range",
220
+ getAnchorLabel: (doc, anchor) => {
221
+ if (doc.content) {
222
+ const [start, end] = anchor.split(":");
223
+ return getTextInRange(createDocAccessor(doc.content.target, [
224
+ "content"
225
+ ]), start, end);
226
+ }
227
+ },
228
+ createObject: (props, options) => Effect.gen(function* () {
229
+ const object = Markdown3.make(props);
230
+ return yield* Operation.invoke(SpaceOperation.AddObject, {
231
+ object,
232
+ target: options.target,
233
+ hidden: true,
234
+ targetNodeId: options.targetNodeId
235
+ });
236
+ }),
237
+ scrollToAnchor: MarkdownOperation.ScrollToAnchor
238
+ }
239
+ }
240
+ }), AppPlugin.addOperationHandlerModule({
241
+ activate: OperationHandler
242
+ }), AppPlugin.addSchemaModule({
243
+ schema: [
244
+ Markdown3.Document,
245
+ Text.Text
246
+ ]
247
+ }), AppPlugin.addSurfaceModule({
248
+ activate: ReactSurface,
249
+ activatesBefore: [
250
+ MarkdownEvents2.SetupExtensions
251
+ ]
252
+ }), AppPlugin.addTranslationsModule({
253
+ translations: [
254
+ ...translations,
255
+ ...editorTranslations2
256
+ ]
257
+ }), Plugin.addModule({
258
+ activatesOn: AppActivationEvents.SetupSettings,
259
+ activate: MarkdownSettings
260
+ }), Plugin.addModule({
261
+ id: "state",
262
+ // TODO(wittjosiah): Does not integrate with settings store.
263
+ // Should this be a different event?
264
+ // Should settings store be renamed to be more generic?
265
+ activatesOn: AppActivationEvents.SetupSettings,
266
+ activate: MarkdownState
267
+ }), Plugin.addModule({
268
+ activatesOn: AppActivationEvents.AppGraphReady,
269
+ activate: AppGraphSerializer
270
+ }), Plugin.addModule({
271
+ // TODO(wittjosiah): More relevant event?
272
+ activatesOn: AppActivationEvents.AppGraphReady,
273
+ activate: AnchorSort
274
+ }), Plugin.make);
275
+
276
+ // src/components/index.ts
277
+ import { lazy } from "react";
278
+
279
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
280
+ import { createContext } from "@radix-ui/react-context";
281
+ import React4, { useMemo as useMemo2, useState as useState2 } from "react";
282
+ import { createPortal as createPortal2 } from "react-dom";
283
+ import { Surface } from "@dxos/app-framework/ui";
284
+ import { Obj as Obj2 } from "@dxos/echo";
285
+ import { DXN } from "@dxos/keys";
286
+ import { useClient } from "@dxos/react-client";
287
+ import { EditorMenuProvider, useEditorMenu, useEditorToolbar } from "@dxos/react-ui-editor";
288
+ import { composable as composable2, composableProps as composableProps2 } from "@dxos/ui-theme";
289
+ import { isNonNullable } from "@dxos/util";
290
+ import { useEditorMenuOptions, useExtensions } from "#hooks";
291
+
292
+ // src/components/MarkdownEditor/MarkdownEditorContent.tsx
293
+ import { RegistryContext } from "@effect-atom/atom-react";
294
+ import React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo } from "react";
295
+ import { useCapabilities } from "@dxos/app-framework/ui";
296
+ import { useThemeContext, useTranslation } from "@dxos/react-ui";
297
+ import { useTextEditor } from "@dxos/react-ui-editor";
298
+ import { compactSlots, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, documentSlots, formattingListener, processEditorPayload, editorClassNames } from "@dxos/ui-editor";
299
+ import { mx } from "@dxos/ui-theme";
300
+ import { isTruthy } from "@dxos/util";
301
+ import { meta as meta4 } from "#meta";
302
+ import { MarkdownCapabilities as MarkdownCapabilities2 } from "#types";
303
+ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attendableId, role, compact, viewMode, initialValue, editorStateStore, toolbarState, extensions, slots, onFileUpload }, forwardedRef) => {
304
+ const { t } = useTranslation(meta4.id);
305
+ const { themeMode } = useThemeContext();
306
+ const registry = useContext(RegistryContext);
307
+ const updateToolbarState = useCallback((formatting) => {
308
+ if (toolbarState) {
309
+ registry.set(toolbarState, {
310
+ ...registry.get(toolbarState),
311
+ ...formatting
312
+ });
313
+ }
314
+ }, [
315
+ registry,
316
+ toolbarState
317
+ ]);
318
+ const { scrollTo, selection } = useMemo(() => editorStateStore?.getState(id) ?? {}, [
319
+ id
320
+ ]);
321
+ const { parentRef, view: editorView, focusAttributes } = useTextEditor(() => ({
322
+ ...role !== "section" && {
323
+ id,
324
+ scrollTo,
325
+ selection,
326
+ selectionEnd: true
327
+ },
328
+ initialValue,
329
+ extensions: [
330
+ createBasicExtensions({
331
+ readOnly: viewMode === "readonly",
332
+ placeholder: t("editor.placeholder"),
333
+ scrollPastEnd: !compact,
334
+ search: true
335
+ }),
336
+ createThemeExtensions({
337
+ themeMode,
338
+ slots: slots ?? (compact ? compactSlots : documentSlots),
339
+ syntaxHighlighting: true
340
+ }),
341
+ createMarkdownExtensions(),
342
+ toolbarState && formattingListener(updateToolbarState),
343
+ role !== "section" && onFileUpload && dropFile({
344
+ // TODO(wittjosiah): Factor out to file uploader plugin.
345
+ onDrop: async (view, { files }) => {
346
+ const file = files[0];
347
+ const info = file && onFileUpload ? await onFileUpload(file) : void 0;
348
+ if (info) {
349
+ processEditorPayload(view, {
350
+ type: "image",
351
+ data: info.url
352
+ });
353
+ }
354
+ }
355
+ }),
356
+ extensions
357
+ ].filter(isTruthy)
358
+ }), [
359
+ id,
360
+ viewMode,
361
+ themeMode,
362
+ extensions
363
+ ]);
364
+ useImperativeHandle(forwardedRef, () => editorView, [
365
+ editorView
366
+ ]);
367
+ const [editorViewRegistry] = useCapabilities(MarkdownCapabilities2.EditorViews);
368
+ useEffect(() => {
369
+ if (editorView && editorViewRegistry) {
370
+ editorViewRegistry.register(attendableId ?? id, editorView, id);
371
+ return () => editorViewRegistry.unregister(attendableId ?? id);
372
+ }
373
+ }, [
374
+ editorView,
375
+ editorViewRegistry,
376
+ attendableId,
377
+ id
378
+ ]);
379
+ useTest(editorView);
380
+ return /* @__PURE__ */ React.createElement("div", {
381
+ ...focusAttributes,
382
+ className: mx(editorClassNames(role), classNames),
383
+ role: "none",
384
+ "data-testid": "composer.markdownRoot",
385
+ "data-popover-collision-boundary": true,
386
+ ref: parentRef
387
+ });
388
+ });
389
+ var useTest = (view) => {
390
+ useEffect(() => {
391
+ const composer = window.composer;
392
+ if (composer) {
393
+ composer.editorView = view;
394
+ }
395
+ }, [
396
+ view
397
+ ]);
398
+ };
399
+
400
+ // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
401
+ import React3, { useCallback as useCallback2, useState } from "react";
402
+ import { invariant } from "@dxos/invariant";
403
+ import { EditorToolbar } from "@dxos/react-ui-editor";
404
+ import { composable, composableProps } from "@dxos/ui-theme";
405
+
406
+ // src/components/MarkdownEditor/FileUpload.tsx
407
+ import React2, { forwardRef as forwardRef2, useEffect as useEffect2, useImperativeHandle as useImperativeHandle2 } from "react";
408
+ import { createPortal } from "react-dom";
409
+ import { useDropzone } from "react-dropzone";
410
+ import { addLink } from "@dxos/ui-editor";
411
+ var IMAGE_FILES = [
412
+ ".jpg",
413
+ ".jpeg",
414
+ ".png",
415
+ ".gif"
416
+ ];
417
+ var FileUpload = /* @__PURE__ */ forwardRef2(({ editorView, onFileUpload }, forwardedRef) => {
418
+ const { acceptedFiles, open, inputRef } = useDropzone({
419
+ disabled: !onFileUpload,
420
+ multiple: false,
421
+ noDrag: true,
422
+ accept: {
423
+ "image/*": IMAGE_FILES
424
+ }
425
+ });
426
+ useImperativeHandle2(forwardedRef, () => open, []);
427
+ useEffect2(() => {
428
+ if (editorView && acceptedFiles.length && onFileUpload) {
429
+ requestAnimationFrame(async () => {
430
+ const f = acceptedFiles[0];
431
+ const file = new File([
432
+ f
433
+ ], f.name, {
434
+ type: f.type,
435
+ lastModified: f.lastModified
436
+ });
437
+ const info = await onFileUpload(file);
438
+ if (info) {
439
+ addLink({
440
+ url: info.url,
441
+ image: true
442
+ })(editorView);
443
+ }
444
+ });
445
+ }
446
+ }, [
447
+ editorView,
448
+ acceptedFiles,
449
+ onFileUpload
450
+ ]);
451
+ if (!onFileUpload) {
452
+ return null;
453
+ }
454
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ createPortal(/* @__PURE__ */ React2.createElement("input", {
455
+ ref: inputRef
456
+ }), document.body), " ");
457
+ });
458
+
459
+ // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
460
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx";
461
+ var MarkdownEditorToolbar = composable(({ id, role, state, editorView, customActions, onAction, onFileUpload, onViewModeChange, ...props }, forwardedRef) => {
462
+ const { className, ...rest } = composableProps(props);
463
+ const [upload, setUpload] = useState(null);
464
+ const uploadRef = useCallback2((next) => setUpload(() => next), []);
465
+ const getView = useCallback2(() => {
466
+ invariant(editorView, void 0, {
467
+ F: __dxlog_file,
468
+ L: 31,
469
+ S: void 0,
470
+ A: [
471
+ "editorView",
472
+ ""
473
+ ]
474
+ });
475
+ return editorView;
476
+ }, [
477
+ editorView
478
+ ]);
479
+ if (!editorView) {
480
+ return /* @__PURE__ */ React3.createElement("div", {
481
+ className,
482
+ ...rest,
483
+ ref: forwardedRef
484
+ });
485
+ }
486
+ return /* @__PURE__ */ React3.createElement("div", {
487
+ role: "none",
488
+ className: "contents",
489
+ ref: forwardedRef
490
+ }, /* @__PURE__ */ React3.createElement(EditorToolbar, {
491
+ ...rest,
492
+ classNames: className,
493
+ attendableId: id,
494
+ role,
495
+ state,
496
+ customActions,
497
+ getView,
498
+ onAction,
499
+ onImageUpload: upload ?? void 0,
500
+ onViewModeChange
501
+ }), onFileUpload && /* @__PURE__ */ React3.createElement(FileUpload, {
502
+ ref: uploadRef,
503
+ editorView,
504
+ onFileUpload
505
+ }));
506
+ });
507
+
508
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
509
+ var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("MarkdownEditor.Context");
510
+ var MarkdownEditorRoot = ({ children, id, attendableId, object, settings, compact, viewMode, selectionManager, editorStateStore, extensions: extensionsProp, slashCommandGroups, onLinkQuery, onSelectObject, ...props }) => {
511
+ const [editorView, setEditorView] = useState2();
512
+ const [previewBlocks, setPreviewBlocks] = useState2([]);
513
+ const previewOptions = useMemo2(() => ({
514
+ db: Obj2.isObject(object) ? Obj2.getDatabase(object) : void 0,
515
+ addBlockContainer: (block) => {
516
+ setPreviewBlocks((prev) => [
517
+ ...prev,
518
+ block
519
+ ]);
520
+ },
521
+ removeBlockContainer: ({ link }) => {
522
+ setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));
523
+ }
524
+ }), [
525
+ object
526
+ ]);
527
+ const toolbarState = useEditorToolbar({
528
+ viewMode
529
+ });
530
+ const menuOptions = useEditorMenuOptions({
531
+ editorView,
532
+ slashCommandGroups,
533
+ onLinkQuery
534
+ });
535
+ const { extension: menuExtension, ...menuProps } = useEditorMenu(menuOptions);
536
+ const coreExtensions = useExtensions({
537
+ id,
538
+ object,
539
+ compact,
540
+ viewMode,
541
+ selectionManager,
542
+ editorStateStore,
543
+ previewOptions,
544
+ settings,
545
+ onSelectObject
546
+ });
547
+ const extensions = useMemo2(() => [
548
+ coreExtensions,
549
+ menuExtension,
550
+ extensionsProp
551
+ ].filter(isNonNullable), [
552
+ coreExtensions,
553
+ menuExtension,
554
+ extensionsProp
555
+ ]);
556
+ return /* @__PURE__ */ React4.createElement(MarkdownEditorContextProvider, {
557
+ id,
558
+ attendableId,
559
+ compact,
560
+ editorView,
561
+ setEditorView,
562
+ extensions,
563
+ previewBlocks,
564
+ toolbarState,
565
+ popoverMenu: menuProps,
566
+ viewMode,
567
+ ...props
568
+ }, children);
569
+ };
570
+ MarkdownEditorRoot.displayName = "MarkdownEditor.Root";
571
+ var MARKDOWN_EDITOR_CONTENT_NAME = "MarkdownEditor.Content";
572
+ var MarkdownEditorContent2 = composable2(({ ...props }, _forwardedRef) => {
573
+ const { id, attendableId, compact, editorView, setEditorView, viewMode, toolbarState, extensions, popoverMenu: { groupsRef, ...menuProps } } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
574
+ return /* @__PURE__ */ React4.createElement(EditorMenuProvider, {
575
+ view: editorView,
576
+ groups: groupsRef.current,
577
+ ...menuProps
578
+ }, /* @__PURE__ */ React4.createElement(MarkdownEditorContent, {
579
+ ...composableProps2(props),
580
+ id,
581
+ attendableId,
582
+ compact,
583
+ viewMode,
584
+ toolbarState,
585
+ extensions,
586
+ ref: setEditorView
587
+ }));
588
+ });
589
+ MarkdownEditorContent2.displayName = MARKDOWN_EDITOR_CONTENT_NAME;
590
+ var MARKDOWN_EDITOR_TOOLBAR_NAME = "MarkdownEditor.Toolbar";
591
+ var MarkdownEditorToolbar2 = (props) => {
592
+ const { id, attendableId, editorView, toolbarState, onAction, onFileUpload, onViewModeChange } = useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
593
+ return /* @__PURE__ */ React4.createElement(MarkdownEditorToolbar, {
594
+ ...props,
595
+ id: attendableId ?? id,
596
+ editorView,
597
+ state: toolbarState,
598
+ onAction,
599
+ onFileUpload,
600
+ onViewModeChange
601
+ });
602
+ };
603
+ MarkdownEditorToolbar2.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;
604
+ var MARKDOWN_EDITOR_BLOCKS_NAME = "MarkdownEditor.Blocks";
605
+ var MarkdownEditorBlocks = (_props) => {
606
+ const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);
607
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, previewBlocks.map(({ link, el }) => /* @__PURE__ */ React4.createElement(PreviewBlock, {
608
+ key: link.dxn,
609
+ link,
610
+ el
611
+ })));
612
+ };
613
+ MarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;
614
+ var PreviewBlock = ({ el, link }) => {
615
+ const client = useClient();
616
+ const dxn = DXN.parse(link.dxn);
617
+ const subject = client.graph.makeRef(dxn).target;
618
+ const data = useMemo2(() => ({
619
+ subject
620
+ }), [
621
+ subject
622
+ ]);
623
+ return /* @__PURE__ */ createPortal2(/* @__PURE__ */ React4.createElement(Surface.Surface, {
624
+ role: "card--content",
625
+ data,
626
+ limit: 1
627
+ }), el);
628
+ };
629
+ var MarkdownEditor = {
630
+ Root: MarkdownEditorRoot,
631
+ Content: MarkdownEditorContent2,
632
+ Toolbar: MarkdownEditorToolbar2,
633
+ Blocks: MarkdownEditorBlocks
634
+ };
635
+
636
+ // src/components/index.ts
637
+ var MarkdownSettings2 = lazy(() => import("./MarkdownSettings-X6SDS35F.mjs"));
147
638
  export {
148
639
  Markdown_exports as Markdown,
149
- MarkdownAction_exports as MarkdownAction,
150
640
  MarkdownCapabilities,
641
+ MarkdownEditor,
151
642
  MarkdownEvents,
152
643
  MarkdownPlugin,
644
+ MarkdownStateSchema,
645
+ Settings_exports as Settings,
153
646
  getContentSnippet,
154
647
  getFallbackName,
155
648
  isEditorModel,