@dxos/plugin-markdown 0.8.4-main.72ec0f3 → 0.8.4-main.937b3ca

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. package/dist/lib/browser/MarkdownCard-HFNNE4B4.mjs +12 -0
  2. package/dist/lib/browser/MarkdownContainer-V7EAADMF.mjs +12 -0
  3. package/dist/lib/browser/{anchor-sort-3HGPGCOO.mjs → anchor-sort-WQ3TL7ZI.mjs} +11 -10
  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/chunk-BX73DASG.mjs +702 -0
  11. package/dist/lib/browser/chunk-BX73DASG.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-CUGDX7KA.mjs +8 -0
  13. package/dist/lib/browser/chunk-CUGDX7KA.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-Y53FQREH.mjs → chunk-FWQQW6KU.mjs} +41 -47
  15. package/dist/lib/browser/chunk-FWQQW6KU.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-22XSSNBS.mjs → chunk-JOXYQLKH.mjs} +5 -6
  17. package/dist/lib/browser/chunk-JOXYQLKH.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-KDKXFKDN.mjs +104 -0
  19. package/dist/lib/browser/chunk-KDKXFKDN.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-LMO5UVKL.mjs +167 -0
  21. package/dist/lib/browser/chunk-LMO5UVKL.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-S45ULIOG.mjs +101 -0
  23. package/dist/lib/browser/chunk-S45ULIOG.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-VQ3WOAB6.mjs +60 -0
  25. package/dist/lib/browser/chunk-VQ3WOAB6.mjs.map +7 -0
  26. package/dist/lib/browser/cli/index.mjs +32 -0
  27. package/dist/lib/browser/cli/index.mjs.map +7 -0
  28. package/dist/lib/browser/index.mjs +121 -143
  29. package/dist/lib/browser/index.mjs.map +4 -4
  30. package/dist/lib/browser/meta.json +1 -1
  31. package/dist/lib/browser/operation-resolver-EGCWOQKJ.mjs +53 -0
  32. package/dist/lib/browser/operation-resolver-EGCWOQKJ.mjs.map +7 -0
  33. package/dist/lib/browser/react-surface-64FZ7T7F.mjs +213 -0
  34. package/dist/lib/browser/react-surface-64FZ7T7F.mjs.map +7 -0
  35. package/dist/lib/browser/settings-JY5JE7MI.mjs +35 -0
  36. package/dist/lib/browser/settings-JY5JE7MI.mjs.map +7 -0
  37. package/dist/lib/browser/state-QE7VSJWJ.mjs +29 -0
  38. package/dist/lib/browser/state-QE7VSJWJ.mjs.map +7 -0
  39. package/dist/lib/browser/types/index.mjs +10 -3
  40. package/dist/lib/node-esm/{MarkdownCard-ZXPJLUYO.mjs → MarkdownCard-GMNXUWWR.mjs} +5 -5
  41. package/dist/lib/node-esm/MarkdownContainer-LUSMORP2.mjs +13 -0
  42. package/dist/lib/node-esm/{anchor-sort-PCDXEBJ2.mjs → anchor-sort-G7D5TAI6.mjs} +11 -10
  43. package/dist/lib/node-esm/anchor-sort-G7D5TAI6.mjs.map +7 -0
  44. package/dist/lib/node-esm/app-graph-serializer-W5YMQP7P.mjs +59 -0
  45. package/dist/lib/node-esm/app-graph-serializer-W5YMQP7P.mjs.map +7 -0
  46. package/dist/lib/node-esm/blueprint-definition-HYFA7BKQ.mjs +20 -0
  47. package/dist/lib/node-esm/blueprint-definition-HYFA7BKQ.mjs.map +7 -0
  48. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  49. package/dist/lib/node-esm/chunk-3JYPCC7M.mjs +105 -0
  50. package/dist/lib/node-esm/chunk-3JYPCC7M.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-AMHACOXW.mjs → chunk-44VJC3QF.mjs} +5 -6
  52. package/dist/lib/node-esm/chunk-44VJC3QF.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-D4BCFPKK.mjs +703 -0
  54. package/dist/lib/node-esm/chunk-D4BCFPKK.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-HAIEWPU7.mjs → chunk-EYAFC4N7.mjs} +41 -47
  56. package/dist/lib/node-esm/chunk-EYAFC4N7.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-KXEQCFMB.mjs +61 -0
  58. package/dist/lib/node-esm/chunk-KXEQCFMB.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-PRV35A7Z.mjs +168 -0
  60. package/dist/lib/node-esm/chunk-PRV35A7Z.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-PLZ7EVCT.mjs → chunk-SDTYEGGL.mjs} +56 -6
  62. package/dist/lib/node-esm/chunk-SDTYEGGL.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-W3IIKDV5.mjs +10 -0
  64. package/dist/lib/node-esm/chunk-W3IIKDV5.mjs.map +7 -0
  65. package/dist/lib/node-esm/cli/index.mjs +33 -0
  66. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  67. package/dist/lib/node-esm/index.mjs +121 -143
  68. package/dist/lib/node-esm/index.mjs.map +4 -4
  69. package/dist/lib/node-esm/meta.json +1 -1
  70. package/dist/lib/node-esm/operation-resolver-2HIS2AQZ.mjs +54 -0
  71. package/dist/lib/node-esm/operation-resolver-2HIS2AQZ.mjs.map +7 -0
  72. package/dist/lib/node-esm/react-surface-PKEVHTJK.mjs +214 -0
  73. package/dist/lib/node-esm/react-surface-PKEVHTJK.mjs.map +7 -0
  74. package/dist/lib/node-esm/settings-4UGMPIRY.mjs +36 -0
  75. package/dist/lib/node-esm/settings-4UGMPIRY.mjs.map +7 -0
  76. package/dist/lib/node-esm/state-LXE5XIN4.mjs +30 -0
  77. package/dist/lib/node-esm/state-LXE5XIN4.mjs.map +7 -0
  78. package/dist/lib/node-esm/types/index.mjs +10 -3
  79. package/dist/types/src/MarkdownPlugin.d.ts +2 -1
  80. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  81. package/dist/types/src/blueprints/functions/create.d.ts.map +1 -0
  82. package/dist/types/src/blueprints/functions/create.test.d.ts.map +1 -0
  83. package/dist/types/src/blueprints/functions/index.d.ts +4 -0
  84. package/dist/types/src/blueprints/functions/index.d.ts.map +1 -0
  85. package/dist/types/src/blueprints/functions/open.d.ts.map +1 -0
  86. package/dist/types/src/blueprints/functions/update.d.ts.map +1 -0
  87. package/dist/types/src/blueprints/functions/update.test.d.ts.map +1 -0
  88. package/dist/types/src/blueprints/index.d.ts +2 -0
  89. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  90. package/dist/types/src/blueprints/markdown-blueprint.d.ts +21 -0
  91. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts +5 -0
  93. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/anchor-sort/index.d.ts +3 -0
  95. package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +1 -0
  96. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +5 -0
  97. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +1 -0
  98. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +3 -0
  99. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +1 -0
  100. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +5 -0
  101. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -0
  102. package/dist/types/src/capabilities/artifact-definition/index.d.ts +3 -0
  103. package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +1 -0
  104. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +10 -0
  105. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  106. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  107. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  108. package/dist/types/src/capabilities/index.d.ts +6 -13
  109. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  111. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  112. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  113. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  114. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  115. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  116. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  117. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  118. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  119. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  120. package/dist/types/src/capabilities/settings/settings.d.ts +6 -0
  121. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  122. package/dist/types/src/capabilities/state/index.d.ts +3 -0
  123. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  124. package/dist/types/src/capabilities/state/state.d.ts +5 -0
  125. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  126. package/dist/types/src/cli/index.d.ts +2 -0
  127. package/dist/types/src/cli/index.d.ts.map +1 -0
  128. package/dist/types/src/cli/plugin.d.ts +3 -0
  129. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  130. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +4 -3
  131. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  132. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +5 -5
  133. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/MarkdownContainer.d.ts +19 -5
  135. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  136. package/dist/types/src/components/MarkdownContainer.stories.d.ts +1 -0
  137. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +2 -2
  139. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
  140. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +8 -7
  141. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  142. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  143. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +12 -8
  144. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  145. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +4 -4
  146. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  147. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +4 -2
  148. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  149. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
  150. package/dist/types/src/components/index.d.ts +5 -2
  151. package/dist/types/src/components/index.d.ts.map +1 -1
  152. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -1
  153. package/dist/types/src/hooks/useExtensions.d.ts +3 -3
  154. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  155. package/dist/types/src/hooks/useLinkQuery.d.ts +2 -2
  156. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  157. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +1 -1
  158. package/dist/types/src/index.d.ts +1 -2
  159. package/dist/types/src/index.d.ts.map +1 -1
  160. package/dist/types/src/meta.d.ts +2 -2
  161. package/dist/types/src/meta.d.ts.map +1 -1
  162. package/dist/types/src/testing.d.ts +2 -2
  163. package/dist/types/src/testing.d.ts.map +1 -1
  164. package/dist/types/src/translations.d.ts +1 -0
  165. package/dist/types/src/translations.d.ts.map +1 -1
  166. package/dist/types/src/types/Markdown.d.ts +15 -15
  167. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  168. package/dist/types/src/types/MarkdownAction.d.ts +63 -31
  169. package/dist/types/src/types/MarkdownAction.d.ts.map +1 -1
  170. package/dist/types/src/types/capabilities.d.ts +22 -0
  171. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  172. package/dist/types/src/types/events.d.ts +5 -0
  173. package/dist/types/src/types/events.d.ts.map +1 -0
  174. package/dist/types/src/types/index.d.ts +3 -0
  175. package/dist/types/src/types/index.d.ts.map +1 -1
  176. package/dist/types/src/types/types.d.ts +2 -2
  177. package/dist/types/src/types/types.d.ts.map +1 -1
  178. package/dist/types/src/util.d.ts +3 -0
  179. package/dist/types/src/util.d.ts.map +1 -1
  180. package/dist/types/src/util.test.d.ts +2 -0
  181. package/dist/types/src/util.test.d.ts.map +1 -0
  182. package/dist/types/tsconfig.tsbuildinfo +1 -1
  183. package/package.json +82 -67
  184. package/src/MarkdownPlugin.tsx +60 -89
  185. package/src/blueprints/functions/create.conversations.json +1 -0
  186. package/src/{functions → blueprints/functions}/create.test.ts +22 -25
  187. package/src/{functions → blueprints/functions}/create.ts +1 -1
  188. package/src/blueprints/functions/index.ts +7 -0
  189. package/src/{functions → blueprints/functions}/open.ts +4 -3
  190. package/src/blueprints/functions/update.conversations.json +1 -0
  191. package/src/{functions → blueprints/functions}/update.test.ts +25 -27
  192. package/src/{functions → blueprints/functions}/update.ts +4 -3
  193. package/src/blueprints/index.ts +5 -0
  194. package/src/blueprints/markdown-blueprint.ts +38 -0
  195. package/src/capabilities/anchor-sort/anchor-sort.ts +36 -0
  196. package/src/capabilities/anchor-sort/index.ts +7 -0
  197. package/src/capabilities/app-graph-serializer/app-graph-serializer.ts +59 -0
  198. package/src/capabilities/app-graph-serializer/index.ts +7 -0
  199. package/src/capabilities/artifact-definition/artifact-definition.ts +110 -0
  200. package/src/capabilities/artifact-definition/index.ts +7 -0
  201. package/src/capabilities/blueprint-definition/blueprint-definition.ts +25 -0
  202. package/src/capabilities/blueprint-definition/index.ts +7 -0
  203. package/src/capabilities/index.ts +6 -11
  204. package/src/capabilities/operation-resolver/index.ts +7 -0
  205. package/src/capabilities/operation-resolver/operation-resolver.ts +45 -0
  206. package/src/capabilities/react-surface/index.ts +7 -0
  207. package/src/capabilities/react-surface/react-surface.tsx +100 -0
  208. package/src/capabilities/settings/index.ts +7 -0
  209. package/src/capabilities/settings/settings.ts +36 -0
  210. package/src/capabilities/state/index.ts +7 -0
  211. package/src/capabilities/state/state.ts +31 -0
  212. package/src/cli/index.ts +5 -0
  213. package/src/cli/plugin.ts +29 -0
  214. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +25 -43
  215. package/src/components/MarkdownCard/MarkdownCard.tsx +17 -44
  216. package/src/components/MarkdownContainer.stories.tsx +47 -60
  217. package/src/components/MarkdownContainer.tsx +86 -88
  218. package/src/components/MarkdownEditor/FileUpload.tsx +3 -3
  219. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +16 -17
  220. package/src/components/MarkdownEditor/MarkdownEditor.tsx +14 -15
  221. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +44 -18
  222. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +7 -4
  223. package/src/components/MarkdownSettings/MarkdownSettings.tsx +24 -10
  224. package/src/components/Suggestions.stories.tsx +23 -33
  225. package/src/components/index.ts +8 -3
  226. package/src/hooks/useEditorMenuOptions.ts +10 -13
  227. package/src/hooks/useExtensions.tsx +25 -30
  228. package/src/hooks/useLinkQuery.ts +19 -19
  229. package/src/hooks/useSelectCurrentThread.tsx +37 -42
  230. package/src/index.ts +1 -2
  231. package/src/meta.ts +2 -2
  232. package/src/testing.ts +5 -5
  233. package/src/translations.ts +1 -0
  234. package/src/types/Markdown.ts +6 -7
  235. package/src/types/MarkdownAction.ts +48 -18
  236. package/src/types/capabilities.ts +38 -0
  237. package/src/types/events.ts +13 -0
  238. package/src/types/index.ts +3 -0
  239. package/src/types/types.ts +3 -2
  240. package/src/util.test.ts +44 -0
  241. package/src/util.tsx +75 -5
  242. package/dist/lib/browser/MarkdownCard-JYMDPKV5.mjs +0 -12
  243. package/dist/lib/browser/MarkdownContainer-Y75XSVBX.mjs +0 -15
  244. package/dist/lib/browser/anchor-sort-3HGPGCOO.mjs.map +0 -7
  245. package/dist/lib/browser/app-graph-serializer-POZN234F.mjs +0 -51
  246. package/dist/lib/browser/app-graph-serializer-POZN234F.mjs.map +0 -7
  247. package/dist/lib/browser/blueprint-definition-GIPKFDY5.mjs +0 -13
  248. package/dist/lib/browser/chunk-22XSSNBS.mjs.map +0 -7
  249. package/dist/lib/browser/chunk-2MLGSYRN.mjs +0 -20
  250. package/dist/lib/browser/chunk-2MLGSYRN.mjs.map +0 -7
  251. package/dist/lib/browser/chunk-BQTYJOFB.mjs +0 -28
  252. package/dist/lib/browser/chunk-BQTYJOFB.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-GH6GQSBL.mjs +0 -51
  254. package/dist/lib/browser/chunk-GH6GQSBL.mjs.map +0 -7
  255. package/dist/lib/browser/chunk-IBCHVMZW.mjs +0 -16
  256. package/dist/lib/browser/chunk-IBCHVMZW.mjs.map +0 -7
  257. package/dist/lib/browser/chunk-K3LXOU3E.mjs +0 -827
  258. package/dist/lib/browser/chunk-K3LXOU3E.mjs.map +0 -7
  259. package/dist/lib/browser/chunk-PBJLFIOX.mjs +0 -96
  260. package/dist/lib/browser/chunk-PBJLFIOX.mjs.map +0 -7
  261. package/dist/lib/browser/chunk-QYSEJ5GP.mjs +0 -79
  262. package/dist/lib/browser/chunk-QYSEJ5GP.mjs.map +0 -7
  263. package/dist/lib/browser/chunk-Y53FQREH.mjs.map +0 -7
  264. package/dist/lib/browser/intent-resolver-Z5L7TXUK.mjs +0 -62
  265. package/dist/lib/browser/intent-resolver-Z5L7TXUK.mjs.map +0 -7
  266. package/dist/lib/browser/react-surface-GO5ZOKNN.mjs +0 -211
  267. package/dist/lib/browser/react-surface-GO5ZOKNN.mjs.map +0 -7
  268. package/dist/lib/browser/settings-TZUDB5EW.mjs +0 -28
  269. package/dist/lib/browser/settings-TZUDB5EW.mjs.map +0 -7
  270. package/dist/lib/browser/state-BTUKVZHY.mjs +0 -37
  271. package/dist/lib/browser/state-BTUKVZHY.mjs.map +0 -7
  272. package/dist/lib/browser/toolkit.mjs +0 -13
  273. package/dist/lib/node-esm/MarkdownContainer-YRDSRDCS.mjs +0 -16
  274. package/dist/lib/node-esm/anchor-sort-PCDXEBJ2.mjs.map +0 -7
  275. package/dist/lib/node-esm/app-graph-serializer-NF65JYAS.mjs +0 -52
  276. package/dist/lib/node-esm/app-graph-serializer-NF65JYAS.mjs.map +0 -7
  277. package/dist/lib/node-esm/blueprint-definition-ENKJZYQS.mjs +0 -14
  278. package/dist/lib/node-esm/blueprint-definition-ENKJZYQS.mjs.map +0 -7
  279. package/dist/lib/node-esm/chunk-AMHACOXW.mjs.map +0 -7
  280. package/dist/lib/node-esm/chunk-CT7CFX5G.mjs +0 -828
  281. package/dist/lib/node-esm/chunk-CT7CFX5G.mjs.map +0 -7
  282. package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs +0 -17
  283. package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs.map +0 -7
  284. package/dist/lib/node-esm/chunk-HAIEWPU7.mjs.map +0 -7
  285. package/dist/lib/node-esm/chunk-KCHUTL3Q.mjs +0 -22
  286. package/dist/lib/node-esm/chunk-KCHUTL3Q.mjs.map +0 -7
  287. package/dist/lib/node-esm/chunk-NGYJNQ6A.mjs +0 -80
  288. package/dist/lib/node-esm/chunk-NGYJNQ6A.mjs.map +0 -7
  289. package/dist/lib/node-esm/chunk-PIOOG7A5.mjs +0 -97
  290. package/dist/lib/node-esm/chunk-PIOOG7A5.mjs.map +0 -7
  291. package/dist/lib/node-esm/chunk-PLZ7EVCT.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs +0 -29
  293. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs.map +0 -7
  294. package/dist/lib/node-esm/intent-resolver-6B3PFQ5F.mjs +0 -63
  295. package/dist/lib/node-esm/intent-resolver-6B3PFQ5F.mjs.map +0 -7
  296. package/dist/lib/node-esm/react-surface-I46BPCWT.mjs +0 -212
  297. package/dist/lib/node-esm/react-surface-I46BPCWT.mjs.map +0 -7
  298. package/dist/lib/node-esm/settings-CJ3T5EX4.mjs +0 -29
  299. package/dist/lib/node-esm/settings-CJ3T5EX4.mjs.map +0 -7
  300. package/dist/lib/node-esm/state-K6EH7SRZ.mjs +0 -38
  301. package/dist/lib/node-esm/state-K6EH7SRZ.mjs.map +0 -7
  302. package/dist/lib/node-esm/toolkit.mjs +0 -14
  303. package/dist/lib/node-esm/toolkit.mjs.map +0 -7
  304. package/dist/types/src/capabilities/anchor-sort.d.ts +0 -4
  305. package/dist/types/src/capabilities/anchor-sort.d.ts.map +0 -1
  306. package/dist/types/src/capabilities/app-graph-serializer.d.ts +0 -4
  307. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +0 -1
  308. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -3
  309. package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
  310. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -7
  311. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  312. package/dist/types/src/capabilities/capabilities.d.ts +0 -12
  313. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  314. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  315. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  316. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  317. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  318. package/dist/types/src/capabilities/settings.d.ts +0 -4
  319. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  320. package/dist/types/src/capabilities/state.d.ts +0 -11
  321. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  322. package/dist/types/src/events.d.ts +0 -4
  323. package/dist/types/src/events.d.ts.map +0 -1
  324. package/dist/types/src/functions/create.d.ts.map +0 -1
  325. package/dist/types/src/functions/create.test.d.ts.map +0 -1
  326. package/dist/types/src/functions/index.d.ts +0 -18
  327. package/dist/types/src/functions/index.d.ts.map +0 -1
  328. package/dist/types/src/functions/open.d.ts.map +0 -1
  329. package/dist/types/src/functions/update.d.ts.map +0 -1
  330. package/dist/types/src/functions/update.test.d.ts.map +0 -1
  331. package/dist/types/src/toolkit.d.ts +0 -3
  332. package/dist/types/src/toolkit.d.ts.map +0 -1
  333. package/src/capabilities/anchor-sort.ts +0 -30
  334. package/src/capabilities/app-graph-serializer.ts +0 -54
  335. package/src/capabilities/artifact-definition.ts +0 -112
  336. package/src/capabilities/blueprint-definition.ts +0 -43
  337. package/src/capabilities/capabilities.ts +0 -22
  338. package/src/capabilities/intent-resolver.ts +0 -58
  339. package/src/capabilities/react-surface.tsx +0 -93
  340. package/src/capabilities/settings.ts +0 -25
  341. package/src/capabilities/state.ts +0 -31
  342. package/src/events.ts +0 -11
  343. package/src/functions/create.conversations.json +0 -1
  344. package/src/functions/index.ts +0 -13
  345. package/src/functions/update.conversations.json +0 -1
  346. package/src/toolkit.ts +0 -6
  347. /package/dist/lib/browser/{MarkdownCard-JYMDPKV5.mjs.map → MarkdownCard-HFNNE4B4.mjs.map} +0 -0
  348. /package/dist/lib/browser/{MarkdownContainer-Y75XSVBX.mjs.map → MarkdownContainer-V7EAADMF.mjs.map} +0 -0
  349. /package/dist/lib/browser/{blueprint-definition-GIPKFDY5.mjs.map → blueprints/index.mjs.map} +0 -0
  350. /package/dist/lib/{browser/toolkit.mjs.map → node-esm/MarkdownCard-GMNXUWWR.mjs.map} +0 -0
  351. /package/dist/lib/node-esm/{MarkdownCard-ZXPJLUYO.mjs.map → MarkdownContainer-LUSMORP2.mjs.map} +0 -0
  352. /package/dist/lib/node-esm/{MarkdownContainer-YRDSRDCS.mjs.map → blueprints/index.mjs.map} +0 -0
  353. /package/dist/types/src/{functions → blueprints/functions}/create.d.ts +0 -0
  354. /package/dist/types/src/{functions → blueprints/functions}/create.test.d.ts +0 -0
  355. /package/dist/types/src/{functions → blueprints/functions}/open.d.ts +0 -0
  356. /package/dist/types/src/{functions → blueprints/functions}/update.d.ts +0 -0
  357. /package/dist/types/src/{functions → blueprints/functions}/update.test.d.ts +0 -0
@@ -0,0 +1,703 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ setFallbackName
4
+ } from "./chunk-SDTYEGGL.mjs";
5
+ import {
6
+ Markdown_exports,
7
+ meta
8
+ } from "./chunk-PRV35A7Z.mjs";
9
+
10
+ // src/hooks/useLinkQuery.ts
11
+ import * as Option from "effect/Option";
12
+ import { useCallback, useMemo } from "react";
13
+ import { Common } from "@dxos/app-framework";
14
+ import { usePluginManager } from "@dxos/app-framework/react";
15
+ import { Filter, Obj, Query, Type } from "@dxos/echo";
16
+ import { EntityKind, SystemTypeAnnotation, getTypeAnnotation } from "@dxos/echo/internal";
17
+ import { toLocalizedString, useTranslation } from "@dxos/react-ui";
18
+ import { insertAtCursor, insertAtLineStart } from "@dxos/ui-editor";
19
+ var useLinkQuery = (db) => {
20
+ const { t } = useTranslation();
21
+ const manager = usePluginManager();
22
+ const resolve = useCallback((typename) => manager.capabilities.getAll(Common.Capability.Metadata).find(({ id }) => id === typename)?.metadata ?? {}, [
23
+ manager
24
+ ]);
25
+ const filter = useMemo(() => Filter.or(...(db?.schemaRegistry.query({
26
+ location: [
27
+ "database",
28
+ "runtime"
29
+ ]
30
+ }).runSync() ?? []).filter((schema) => getTypeAnnotation(schema)?.kind !== EntityKind.Relation).filter((schema) => !SystemTypeAnnotation.get(schema).pipe(Option.getOrElse(() => false))).map((schema) => Filter.typename(Type.getTypename(schema)))), [
31
+ db
32
+ ]);
33
+ const handleLinkQuery = useCallback(async (query) => {
34
+ const name = query?.startsWith("@") ? query.slice(1).toLowerCase() : query?.toLowerCase() ?? "";
35
+ const results = await db?.query(Query.select(filter)).run();
36
+ const getLabel = (object) => {
37
+ const label = Obj.getLabel(object);
38
+ if (label) {
39
+ return label;
40
+ }
41
+ const type = Obj.getTypename(object);
42
+ const metadata = resolve(type);
43
+ return metadata.label?.(object) || [
44
+ "object name placeholder",
45
+ {
46
+ ns: type,
47
+ default: "New object"
48
+ }
49
+ ];
50
+ };
51
+ const items = results?.filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name)).map((object) => {
52
+ const metadata = resolve(Obj.getTypename(object));
53
+ const label = toLocalizedString(getLabel(object), t);
54
+ return {
55
+ id: object.id,
56
+ label,
57
+ icon: metadata.icon,
58
+ onSelect: ({ view, head }) => {
59
+ const link = `[${label}](${Obj.getDXN(object)})`;
60
+ if (query?.startsWith("@")) {
61
+ insertAtLineStart(view, head, `!${link}
62
+ `);
63
+ } else {
64
+ insertAtCursor(view, head, `${link} `);
65
+ }
66
+ }
67
+ };
68
+ }) ?? [];
69
+ return [
70
+ {
71
+ id: "echo",
72
+ items
73
+ }
74
+ ];
75
+ }, [
76
+ db,
77
+ filter,
78
+ resolve
79
+ ]);
80
+ return handleLinkQuery;
81
+ };
82
+
83
+ // src/hooks/useEditorMenuOptions.ts
84
+ import { useCallback as useCallback2, useMemo as useMemo2, useRef } from "react";
85
+ import { toLocalizedString as toLocalizedString2, useTranslation as useTranslation2 } from "@dxos/react-ui";
86
+ import { filterMenuGroups, formattingCommands, linkSlashCommands } from "@dxos/react-ui-editor";
87
+ import { Domino } from "@dxos/ui";
88
+ var useEditorMenuOptions = ({ editorView, slashCommandGroups, onLinkQuery }) => {
89
+ const { t } = useTranslation2(meta.id);
90
+ const getMenu = useCallback2(({ text, trigger }) => {
91
+ switch (trigger) {
92
+ case "@": {
93
+ return onLinkQuery?.(text) ?? [];
94
+ }
95
+ case "/":
96
+ default: {
97
+ return filterMenuGroups([
98
+ formattingCommands,
99
+ linkSlashCommands,
100
+ ...slashCommandGroups ?? []
101
+ ], (item) => text ? toLocalizedString2(item.label, t).toLowerCase().includes(text.toLowerCase()) : true);
102
+ }
103
+ }
104
+ }, [
105
+ slashCommandGroups,
106
+ onLinkQuery
107
+ ]);
108
+ const viewRef = useRef(editorView);
109
+ return useMemo2(() => {
110
+ const trigger = onLinkQuery ? [
111
+ "/",
112
+ "@"
113
+ ] : [
114
+ "/"
115
+ ];
116
+ const placeholder = {
117
+ delay: 3e3,
118
+ content: () => {
119
+ const pressEl = Domino.of("span").text("Press");
120
+ const triggerEls = trigger.map((text) => Domino.of("span").classNames("mx-1 pli-1.5 pt-[1px] pb-[2px] border border-separator rounded-sm").text(text));
121
+ const forCommandsEl = Domino.of("span").text("for commands.");
122
+ return Domino.of("div").children(pressEl, ...triggerEls, forCommandsEl).root;
123
+ }
124
+ };
125
+ return {
126
+ viewRef,
127
+ getMenu,
128
+ trigger,
129
+ placeholder
130
+ };
131
+ }, [
132
+ getMenu,
133
+ onLinkQuery
134
+ ]);
135
+ };
136
+
137
+ // src/hooks/useExtensions.tsx
138
+ import React, { useMemo as useMemo3 } from "react";
139
+ import { createRoot } from "react-dom/client";
140
+ import { Common as Common2 } from "@dxos/app-framework";
141
+ import { useOperationInvoker } from "@dxos/app-framework/react";
142
+ import { debounceAndThrottle } from "@dxos/async";
143
+ import { Obj as Obj2 } from "@dxos/echo";
144
+ import { createDocAccessor } from "@dxos/echo-db";
145
+ import { invariant } from "@dxos/invariant";
146
+ import { getSpace, useObject } from "@dxos/react-client/echo";
147
+ import { useIdentity } from "@dxos/react-client/halo";
148
+ import { Icon, ThemeProvider } from "@dxos/react-ui";
149
+ import { Text } from "@dxos/schema";
150
+ import { Cursor, EditorView, InputModeExtensions, createDataExtensions, decorateMarkdown, documentId, folding, formattingKeymap, linkTooltip, listener, preview, replacer, selectionState, typewriter } from "@dxos/ui-editor";
151
+ import { defaultTx } from "@dxos/ui-theme";
152
+ import { isTruthy } from "@dxos/util";
153
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useExtensions.tsx";
154
+ var useExtensions = ({ id, object, settings, selectionManager, viewMode, editorStateStore, previewOptions }) => {
155
+ const { invokePromise } = useOperationInvoker();
156
+ const identity = useIdentity();
157
+ const space = getSpace(object);
158
+ const contentRef = Obj2.instanceOf(Markdown_exports.Document, object) ? object.content : void 0;
159
+ useObject(contentRef);
160
+ const target = contentRef?.target ?? (Obj2.instanceOf(Text.Text, object) ? object : void 0);
161
+ const baseExtensions = useMemo3(() => createBaseExtensions({
162
+ id,
163
+ object,
164
+ settings,
165
+ selectionManager,
166
+ viewMode,
167
+ previewOptions,
168
+ invokePromise
169
+ }), [
170
+ id,
171
+ object,
172
+ viewMode,
173
+ invokePromise,
174
+ previewOptions,
175
+ settings,
176
+ settings?.debug,
177
+ settings?.editorInputMode,
178
+ settings?.folding,
179
+ settings?.numberedHeadings,
180
+ settings?.typewriter,
181
+ selectionManager
182
+ ]);
183
+ return useMemo3(() => [
184
+ // TODO(burdon): Pass this in?
185
+ // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
186
+ target && createDataExtensions({
187
+ id,
188
+ text: createDocAccessor(target, [
189
+ "content"
190
+ ]),
191
+ messenger: space,
192
+ identity
193
+ }),
194
+ // TODO(burdon): Reconcile with effect in parent.
195
+ Obj2.instanceOf(Markdown_exports.Document, object) && listener({
196
+ onChange: ({ text }) => {
197
+ setFallbackName(object, text);
198
+ }
199
+ }),
200
+ baseExtensions,
201
+ selectionState(editorStateStore)
202
+ ].filter(isTruthy), [
203
+ identity,
204
+ space,
205
+ id,
206
+ object,
207
+ target,
208
+ baseExtensions
209
+ ]);
210
+ };
211
+ var createBaseExtensions = ({ id, object, invokePromise, settings, selectionManager, viewMode, previewOptions }) => {
212
+ const extensions = [
213
+ selectionManager && selectionChange(selectionManager),
214
+ settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],
215
+ settings?.folding && folding()
216
+ ].filter(isTruthy);
217
+ if (viewMode !== "source") {
218
+ extensions.push(...[
219
+ formattingKeymap(),
220
+ decorateMarkdown({
221
+ selectionChangeDelay: 100,
222
+ numberedHeadings: settings?.numberedHeadings ? {
223
+ from: 2
224
+ } : void 0,
225
+ // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
226
+ // TODO(burdon): Create dx-tag.
227
+ renderLinkButton: invokePromise && (object || id) ? createLinkRenderer((targetId) => {
228
+ void invokePromise(Common2.LayoutOperation.Open, {
229
+ subject: [
230
+ targetId
231
+ ],
232
+ pivotId: object && Obj2.isObject(object) ? Obj2.getDXN(object).toString() : id
233
+ });
234
+ }) : void 0
235
+ }),
236
+ linkTooltip(renderLinkTooltip),
237
+ preview(previewOptions),
238
+ replacer()
239
+ ]);
240
+ }
241
+ if (settings?.debug) {
242
+ const items = settings.typewriter?.split(/[,\n]/) ?? "";
243
+ if (items) {
244
+ extensions.push(typewriter({
245
+ items
246
+ }));
247
+ }
248
+ }
249
+ return extensions;
250
+ };
251
+ var selectionChange = (selectionManager) => {
252
+ return EditorView.updateListener.of(debounceAndThrottle((update) => {
253
+ if (update.selectionSet) {
254
+ const id = update.state.facet(documentId);
255
+ const cursorConverter = update.state.facet(Cursor.converter);
256
+ const selection = update.state.selection;
257
+ const ranges = selection.ranges.map((range) => ({
258
+ from: cursorConverter.toCursor(range.from),
259
+ to: cursorConverter.toCursor(range.to)
260
+ })).filter(({ from, to }) => to > from);
261
+ selectionManager.updateMultiRange(id, ranges);
262
+ }
263
+ }, 100));
264
+ };
265
+ var style = {
266
+ hover: "rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400",
267
+ icon: "inline-block leading-none mis-1 cursor-pointer"
268
+ };
269
+ var createLinkRenderer = (onSelectObject) => (el, { url }) => {
270
+ const isInternal = url.startsWith("/") || // TODO(wittjosiah): This should probably be parsed out on paste?
271
+ url.startsWith(window.location.origin);
272
+ const options = isInternal ? {
273
+ onClick: () => {
274
+ const qualifiedId = url.split("/").at(-1);
275
+ invariant(qualifiedId, "Invalid link format.", {
276
+ F: __dxlog_file,
277
+ L: 237,
278
+ S: void 0,
279
+ A: [
280
+ "qualifiedId",
281
+ "'Invalid link format.'"
282
+ ]
283
+ });
284
+ onSelectObject(qualifiedId);
285
+ }
286
+ } : {
287
+ href: url,
288
+ rel: "noreferrer",
289
+ target: "_blank"
290
+ };
291
+ renderRoot(el, /* @__PURE__ */ React.createElement("a", {
292
+ ...options,
293
+ className: style.hover
294
+ }, /* @__PURE__ */ React.createElement(Icon, {
295
+ icon: isInternal ? "ph--arrow-square-down--bold" : "ph--arrow-square-out--bold",
296
+ size: 4,
297
+ classNames: style.icon
298
+ })));
299
+ };
300
+ var renderLinkTooltip = (el, { url }) => {
301
+ const web = new URL(url);
302
+ renderRoot(el, /* @__PURE__ */ React.createElement("a", {
303
+ href: url,
304
+ rel: "noreferrer",
305
+ target: "_blank",
306
+ className: style.hover
307
+ }, web.origin, /* @__PURE__ */ React.createElement(Icon, {
308
+ icon: "ph--arrow-square-out--bold",
309
+ size: 4,
310
+ classNames: style.icon
311
+ })));
312
+ };
313
+ var renderRoot = (root, node) => {
314
+ createRoot(root).render(/* @__PURE__ */ React.createElement(ThemeProvider, {
315
+ tx: defaultTx
316
+ }, node));
317
+ return root;
318
+ };
319
+
320
+ // src/hooks/useSelectCurrentThread.tsx
321
+ import { EditorView as EditorView2 } from "@codemirror/view";
322
+ import * as Effect from "effect/Effect";
323
+ import { useMemo as useMemo4 } from "react";
324
+ import { Common as Common3 } from "@dxos/app-framework";
325
+ import { useOperationResolver } from "@dxos/app-framework/react";
326
+ import { invariant as invariant2 } from "@dxos/invariant";
327
+ import { OperationResolver } from "@dxos/operation";
328
+ import { Cursor as Cursor2, setSelection } from "@dxos/ui-editor";
329
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx";
330
+ var useSelectCurrentThread = (editorView, documentId2) => {
331
+ const scrollIntoViewHandler = useMemo4(() => OperationResolver.make({
332
+ operation: Common3.LayoutOperation.ScrollIntoView,
333
+ position: "hoist",
334
+ filter: (input) => !!editorView && input.subject === documentId2 && !!input.cursor,
335
+ handler: (input) => Effect.sync(() => {
336
+ invariant2(editorView, "Editor view is not defined.", {
337
+ F: __dxlog_file2,
338
+ L: 29,
339
+ S: void 0,
340
+ A: [
341
+ "editorView",
342
+ "'Editor view is not defined.'"
343
+ ]
344
+ });
345
+ const cursor = input.cursor;
346
+ if (!cursor) {
347
+ return;
348
+ }
349
+ const range = Cursor2.getRangeFromCursor(editorView.state, cursor);
350
+ if (range) {
351
+ const selection = editorView.state.selection.main.from !== range.from ? {
352
+ anchor: range.from
353
+ } : void 0;
354
+ const effects = [
355
+ // NOTE: This does not use the DOM scrollIntoView function.
356
+ EditorView2.scrollIntoView(range.from, {
357
+ y: "start",
358
+ yMargin: 96
359
+ })
360
+ ];
361
+ if (selection) {
362
+ effects.push(setSelection.of({
363
+ current: documentId2
364
+ }));
365
+ }
366
+ editorView.dispatch({
367
+ effects,
368
+ selection: selection ? {
369
+ anchor: range.from
370
+ } : void 0
371
+ });
372
+ }
373
+ })
374
+ }), [
375
+ documentId2,
376
+ editorView
377
+ ]);
378
+ useOperationResolver(meta.id, scrollIntoViewHandler);
379
+ };
380
+
381
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
382
+ import { createContext } from "@radix-ui/react-context";
383
+ import React5, { useMemo as useMemo6, useState as useState2 } from "react";
384
+ import { createPortal as createPortal2 } from "react-dom";
385
+ import { Surface } from "@dxos/app-framework/react";
386
+ import { DXN } from "@dxos/keys";
387
+ import { useClient } from "@dxos/react-client";
388
+ import { EditorMenuProvider, useEditorMenu, useEditorToolbar } from "@dxos/react-ui-editor";
389
+ import { isNonNullable } from "@dxos/util";
390
+
391
+ // src/components/MarkdownEditor/MarkdownEditorContent.tsx
392
+ import { RegistryContext } from "@effect-atom/atom-react";
393
+ import React2, { forwardRef, useCallback as useCallback3, useContext, useEffect, useImperativeHandle, useMemo as useMemo5 } from "react";
394
+ import { useThemeContext, useTranslation as useTranslation3 } from "@dxos/react-ui";
395
+ import { useTextEditor } from "@dxos/react-ui-editor";
396
+ import { createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, editorSlots, formattingListener, processEditorPayload, stackItemContentEditorClassNames } from "@dxos/ui-editor";
397
+ import { mx } from "@dxos/ui-theme";
398
+ import { isTruthy as isTruthy2 } from "@dxos/util";
399
+ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, role, viewMode, initialValue, editorStateStore, toolbarState, extensions, scrollPastEnd, slots = editorSlots, onFileUpload }, forwardedRef) => {
400
+ const { t } = useTranslation3(meta.id);
401
+ const { themeMode } = useThemeContext();
402
+ const registry = useContext(RegistryContext);
403
+ const updateToolbarState = useCallback3((formatting) => {
404
+ if (toolbarState) {
405
+ registry.set(toolbarState, {
406
+ ...registry.get(toolbarState),
407
+ ...formatting
408
+ });
409
+ }
410
+ }, [
411
+ registry,
412
+ toolbarState
413
+ ]);
414
+ const { scrollTo, selection } = useMemo5(() => editorStateStore?.getState(id) ?? {}, [
415
+ id
416
+ ]);
417
+ const { parentRef, view: editorView, focusAttributes } = useTextEditor(() => ({
418
+ ...role !== "section" && {
419
+ id,
420
+ scrollTo,
421
+ selection,
422
+ // TODO(wittjosiah): Autofocus based on layout is racy.
423
+ // autoFocus: layoutPlugin?.provides.layout ? layoutPlugin?.provides.layout.scrollIntoView === id : true,
424
+ selectionEnd: true
425
+ },
426
+ initialValue,
427
+ extensions: [
428
+ createBasicExtensions({
429
+ readOnly: viewMode === "readonly",
430
+ placeholder: t("editor placeholder"),
431
+ scrollPastEnd: scrollPastEnd && role !== "section",
432
+ search: true
433
+ }),
434
+ createThemeExtensions({
435
+ themeMode,
436
+ slots,
437
+ syntaxHighlighting: true
438
+ }),
439
+ createMarkdownExtensions(),
440
+ toolbarState && formattingListener(updateToolbarState),
441
+ role !== "section" && onFileUpload && dropFile({
442
+ // TODO(wittjosiah): Factor out to file uploader plugin.
443
+ onDrop: async (view, { files }) => {
444
+ const file = files[0];
445
+ const info = file && onFileUpload ? await onFileUpload(file) : void 0;
446
+ if (info) {
447
+ processEditorPayload(view, {
448
+ type: "image",
449
+ data: info.url
450
+ });
451
+ }
452
+ }
453
+ }),
454
+ extensions
455
+ ].filter(isTruthy2)
456
+ }), [
457
+ id,
458
+ viewMode,
459
+ themeMode,
460
+ extensions
461
+ ]);
462
+ useImperativeHandle(forwardedRef, () => editorView, [
463
+ editorView
464
+ ]);
465
+ useSelectCurrentThread(editorView, id);
466
+ useTest(editorView);
467
+ return /* @__PURE__ */ React2.createElement("div", {
468
+ role: "none",
469
+ ref: parentRef,
470
+ "data-testid": "composer.markdownRoot",
471
+ className: mx(stackItemContentEditorClassNames(role), classNames),
472
+ "data-popover-collision-boundary": true,
473
+ ...focusAttributes
474
+ });
475
+ });
476
+ var useTest = (view) => {
477
+ useEffect(() => {
478
+ const composer = window.composer;
479
+ if (composer) {
480
+ composer.editorView = view;
481
+ }
482
+ }, [
483
+ view
484
+ ]);
485
+ };
486
+
487
+ // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
488
+ import React4, { useCallback as useCallback4, useState } from "react";
489
+ import { invariant as invariant3 } from "@dxos/invariant";
490
+ import { EditorToolbar } from "@dxos/react-ui-editor";
491
+
492
+ // src/components/MarkdownEditor/FileUpload.tsx
493
+ import React3, { forwardRef as forwardRef2, useEffect as useEffect2, useImperativeHandle as useImperativeHandle2 } from "react";
494
+ import { createPortal } from "react-dom";
495
+ import { useDropzone } from "react-dropzone";
496
+ import { addLink } from "@dxos/ui-editor";
497
+ var IMAGE_FILES = [
498
+ ".jpg",
499
+ ".jpeg",
500
+ ".png",
501
+ ".gif"
502
+ ];
503
+ var FileUpload = /* @__PURE__ */ forwardRef2(({ editorView, onFileUpload }, forwardedRef) => {
504
+ const { acceptedFiles, open, inputRef } = useDropzone({
505
+ disabled: !onFileUpload,
506
+ multiple: false,
507
+ noDrag: true,
508
+ accept: {
509
+ "image/*": IMAGE_FILES
510
+ }
511
+ });
512
+ useImperativeHandle2(forwardedRef, () => open, []);
513
+ useEffect2(() => {
514
+ if (editorView && acceptedFiles.length && onFileUpload) {
515
+ requestAnimationFrame(async () => {
516
+ const f = acceptedFiles[0];
517
+ const file = new File([
518
+ f
519
+ ], f.name, {
520
+ type: f.type,
521
+ lastModified: f.lastModified
522
+ });
523
+ const info = await onFileUpload(file);
524
+ if (info) {
525
+ addLink({
526
+ url: info.url,
527
+ image: true
528
+ })(editorView);
529
+ }
530
+ });
531
+ }
532
+ }, [
533
+ editorView,
534
+ acceptedFiles,
535
+ onFileUpload
536
+ ]);
537
+ if (!onFileUpload) {
538
+ return null;
539
+ }
540
+ return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ createPortal(/* @__PURE__ */ React3.createElement("input", {
541
+ ref: inputRef
542
+ }), document.body), " ");
543
+ });
544
+
545
+ // src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
546
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx";
547
+ var MarkdownEditorToolbar = ({ classNames, id, role, state, editorView, customActions, onAction, onFileUpload, onViewModeChange }) => {
548
+ const [upload, setUpload] = useState(null);
549
+ const uploadRef = useCallback4((next) => setUpload(() => next), []);
550
+ const handleViewModeChange = useCallback4((mode) => onViewModeChange?.(mode), [
551
+ onViewModeChange
552
+ ]);
553
+ const getView = useCallback4(() => {
554
+ invariant3(editorView, void 0, {
555
+ F: __dxlog_file3,
556
+ L: 41,
557
+ S: void 0,
558
+ A: [
559
+ "editorView",
560
+ ""
561
+ ]
562
+ });
563
+ return editorView;
564
+ }, [
565
+ editorView
566
+ ]);
567
+ if (!editorView) {
568
+ return /* @__PURE__ */ React4.createElement("div", null);
569
+ }
570
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(EditorToolbar, {
571
+ classNames,
572
+ attendableId: id,
573
+ role,
574
+ state,
575
+ customActions,
576
+ getView,
577
+ onAction,
578
+ onImageUpload: upload ?? void 0,
579
+ onViewModeChange: handleViewModeChange
580
+ }), onFileUpload && /* @__PURE__ */ React4.createElement(FileUpload, {
581
+ ref: uploadRef,
582
+ editorView,
583
+ onFileUpload
584
+ }));
585
+ };
586
+
587
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
588
+ var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("MarkdownEditor.Context");
589
+ var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionManager, settings, viewMode, extensions: extensionsProp, slashCommandGroups, onLinkQuery, ...props }) => {
590
+ const [editorView, setEditorView] = useState2();
591
+ const [previewBlocks, setPreviewBlocks] = useState2([]);
592
+ const previewOptions = useMemo6(() => ({
593
+ addBlockContainer: (block) => {
594
+ setPreviewBlocks((prev) => [
595
+ ...prev,
596
+ block
597
+ ]);
598
+ },
599
+ removeBlockContainer: ({ link }) => {
600
+ setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.ref !== link.ref));
601
+ }
602
+ }), []);
603
+ const toolbarState = useEditorToolbar({
604
+ viewMode
605
+ });
606
+ const menuOptions = useEditorMenuOptions({
607
+ editorView,
608
+ slashCommandGroups,
609
+ onLinkQuery
610
+ });
611
+ const { extension: menuExtension, ...menuProps } = useEditorMenu(menuOptions);
612
+ const coreExtensions = useExtensions({
613
+ id,
614
+ object,
615
+ editorStateStore,
616
+ previewOptions,
617
+ selectionManager,
618
+ settings,
619
+ viewMode
620
+ });
621
+ const extensions = useMemo6(() => [
622
+ coreExtensions,
623
+ menuExtension,
624
+ extensionsProp
625
+ ].filter(isNonNullable), [
626
+ coreExtensions,
627
+ menuExtension,
628
+ extensionsProp
629
+ ]);
630
+ return /* @__PURE__ */ React5.createElement(MarkdownEditorContextProvider, {
631
+ id,
632
+ editorView,
633
+ setEditorView,
634
+ extensions,
635
+ previewBlocks,
636
+ toolbarState,
637
+ popoverMenu: menuProps,
638
+ viewMode,
639
+ ...props
640
+ }, children);
641
+ };
642
+ MarkdownEditorRoot.displayName = "MarkdownEditor.Root";
643
+ var MarkdownEditorContent2 = (props) => {
644
+ const { id, editorView, setEditorView, viewMode, toolbarState, extensions, popoverMenu: { groupsRef, ...menuProps } } = useMarkdownEditorContext(MarkdownEditorContent2.displayName);
645
+ return /* @__PURE__ */ React5.createElement(EditorMenuProvider, {
646
+ view: editorView,
647
+ groups: groupsRef.current,
648
+ ...menuProps
649
+ }, /* @__PURE__ */ React5.createElement(MarkdownEditorContent, {
650
+ ...props,
651
+ id,
652
+ viewMode,
653
+ toolbarState,
654
+ extensions,
655
+ ref: setEditorView
656
+ }));
657
+ };
658
+ MarkdownEditorContent2.displayName = "MarkdownEditor.Content";
659
+ var MarkdownEditorToolbar2 = (props) => {
660
+ const { toolbarState, ...rootProps } = useMarkdownEditorContext(MarkdownEditorToolbar2.displayName);
661
+ return /* @__PURE__ */ React5.createElement(MarkdownEditorToolbar, {
662
+ ...props,
663
+ ...rootProps,
664
+ state: toolbarState
665
+ });
666
+ };
667
+ MarkdownEditorToolbar2.displayName = "MarkdownEditor.Toolbar";
668
+ var MarkdownEditorBlocks = (_props) => {
669
+ const { previewBlocks } = useMarkdownEditorContext(MarkdownEditorBlocks.displayName);
670
+ return /* @__PURE__ */ React5.createElement(React5.Fragment, null, previewBlocks.map(({ link, el }) => /* @__PURE__ */ React5.createElement(PreviewBlock, {
671
+ key: link.ref,
672
+ link,
673
+ el
674
+ })));
675
+ };
676
+ MarkdownEditorBlocks.displayName = "MarkdownEditor.Blocks";
677
+ var PreviewBlock = ({ el, link }) => {
678
+ const client = useClient();
679
+ const dxn = DXN.parse(link.ref);
680
+ const subject = client.graph.makeRef(dxn).target;
681
+ const data = useMemo6(() => ({
682
+ subject
683
+ }), [
684
+ subject
685
+ ]);
686
+ return /* @__PURE__ */ createPortal2(/* @__PURE__ */ React5.createElement(Surface, {
687
+ role: "card--transclusion",
688
+ data,
689
+ limit: 1
690
+ }), el);
691
+ };
692
+ var MarkdownEditor = {
693
+ Root: MarkdownEditorRoot,
694
+ Content: MarkdownEditorContent2,
695
+ Toolbar: MarkdownEditorToolbar2,
696
+ Blocks: MarkdownEditorBlocks
697
+ };
698
+
699
+ export {
700
+ useLinkQuery,
701
+ MarkdownEditor
702
+ };
703
+ //# sourceMappingURL=chunk-D4BCFPKK.mjs.map