@dxos/plugin-markdown 0.8.3-staging.0fa589b → 0.8.4-main.1da679c

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 (271) hide show
  1. package/dist/lib/browser/{MarkdownPreview-F4PYFW5L.mjs → MarkdownCard-JLUQITYK.mjs} +18 -18
  2. package/dist/lib/browser/MarkdownCard-JLUQITYK.mjs.map +7 -0
  3. package/dist/lib/browser/{MarkdownContainer-EFWQ6DHD.mjs → MarkdownContainer-OZ5DHEIA.mjs} +282 -302
  4. package/dist/lib/browser/MarkdownContainer-OZ5DHEIA.mjs.map +7 -0
  5. package/dist/lib/browser/{anchor-sort-BMAN2ABT.mjs → anchor-sort-SUD373SW.mjs} +8 -8
  6. package/dist/lib/browser/anchor-sort-SUD373SW.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-serializer-EI6TEHRQ.mjs → app-graph-serializer-GH7JJZB7.mjs} +16 -17
  8. package/dist/lib/browser/app-graph-serializer-GH7JJZB7.mjs.map +7 -0
  9. package/dist/lib/browser/blueprint-definition-JSNGFAZB.mjs +11 -0
  10. package/dist/lib/browser/blueprint-definition-JSNGFAZB.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-BEE7VQPU.mjs +78 -0
  12. package/dist/lib/browser/chunk-BEE7VQPU.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-LXSRQPEP.mjs → chunk-LAVZ2W6X.mjs} +9 -10
  14. package/dist/lib/browser/chunk-LAVZ2W6X.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-ODB2PTBP.mjs +28 -0
  16. package/dist/lib/browser/chunk-ODB2PTBP.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-OY6CGPOO.mjs +16 -0
  18. package/dist/lib/browser/chunk-OY6CGPOO.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-SQLSKQRQ.mjs +22 -0
  20. package/dist/lib/browser/chunk-SQLSKQRQ.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-UM2GILLR.mjs +102 -0
  22. package/dist/lib/browser/chunk-UM2GILLR.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-D767LUGU.mjs → chunk-Z7P6JGGW.mjs} +14 -12
  24. package/dist/lib/browser/chunk-Z7P6JGGW.mjs.map +7 -0
  25. package/dist/lib/browser/index.mjs +38 -25
  26. package/dist/lib/browser/index.mjs.map +3 -3
  27. package/dist/lib/browser/intent-resolver-SUBIHVU7.mjs +62 -0
  28. package/dist/lib/browser/intent-resolver-SUBIHVU7.mjs.map +7 -0
  29. package/dist/lib/browser/meta.json +1 -1
  30. package/dist/lib/{node-esm/react-surface-YHFOQTVO.mjs → browser/react-surface-JBQHF4GR.mjs} +64 -55
  31. package/dist/lib/browser/react-surface-JBQHF4GR.mjs.map +7 -0
  32. package/dist/lib/browser/{settings-PLH54VC7.mjs → settings-T5ZMC5TH.mjs} +8 -8
  33. package/dist/lib/browser/settings-T5ZMC5TH.mjs.map +7 -0
  34. package/dist/lib/browser/{state-KI6PJ6DT.mjs → state-6QODXCSZ.mjs} +10 -10
  35. package/dist/lib/browser/state-6QODXCSZ.mjs.map +7 -0
  36. package/dist/lib/browser/toolkit-GNADYSGW.mjs +74 -0
  37. package/dist/lib/browser/toolkit-GNADYSGW.mjs.map +7 -0
  38. package/dist/lib/browser/types/index.mjs +6 -14
  39. package/dist/lib/node-esm/{MarkdownPreview-KFDRV4GC.mjs → MarkdownCard-XL5EVSJ7.mjs} +18 -18
  40. package/dist/lib/node-esm/MarkdownCard-XL5EVSJ7.mjs.map +7 -0
  41. package/dist/lib/node-esm/{MarkdownContainer-O3SGMH4G.mjs → MarkdownContainer-Z4I23DPN.mjs} +282 -302
  42. package/dist/lib/node-esm/MarkdownContainer-Z4I23DPN.mjs.map +7 -0
  43. package/dist/lib/node-esm/{anchor-sort-BXL7BE67.mjs → anchor-sort-J2BK2XLZ.mjs} +8 -8
  44. package/dist/lib/node-esm/anchor-sort-J2BK2XLZ.mjs.map +7 -0
  45. package/dist/lib/node-esm/{app-graph-serializer-F7DGNF3G.mjs → app-graph-serializer-LRYCXG7N.mjs} +16 -17
  46. package/dist/lib/node-esm/app-graph-serializer-LRYCXG7N.mjs.map +7 -0
  47. package/dist/lib/node-esm/blueprint-definition-KX3Y5JHC.mjs +12 -0
  48. package/dist/lib/node-esm/blueprint-definition-KX3Y5JHC.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-CB2R4YIY.mjs +17 -0
  50. package/dist/lib/node-esm/chunk-CB2R4YIY.mjs.map +7 -0
  51. package/dist/lib/node-esm/chunk-FXILAQ5F.mjs +79 -0
  52. package/dist/lib/node-esm/chunk-FXILAQ5F.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-BWDDFDJY.mjs → chunk-J7A6TUB2.mjs} +14 -12
  54. package/dist/lib/node-esm/chunk-J7A6TUB2.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-KAXL7TWD.mjs +103 -0
  56. package/dist/lib/node-esm/chunk-KAXL7TWD.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-MJZPYYIH.mjs +24 -0
  58. package/dist/lib/node-esm/chunk-MJZPYYIH.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-K26TX5V4.mjs → chunk-O6EXWGGS.mjs} +9 -10
  60. package/dist/lib/node-esm/chunk-O6EXWGGS.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-VCG2U522.mjs +29 -0
  62. package/dist/lib/node-esm/chunk-VCG2U522.mjs.map +7 -0
  63. package/dist/lib/node-esm/index.mjs +38 -25
  64. package/dist/lib/node-esm/index.mjs.map +3 -3
  65. package/dist/lib/node-esm/intent-resolver-YZEGYWGA.mjs +63 -0
  66. package/dist/lib/node-esm/intent-resolver-YZEGYWGA.mjs.map +7 -0
  67. package/dist/lib/node-esm/meta.json +1 -1
  68. package/dist/lib/{browser/react-surface-4B5ELMEW.mjs → node-esm/react-surface-JOXUHXQJ.mjs} +65 -54
  69. package/dist/lib/node-esm/react-surface-JOXUHXQJ.mjs.map +7 -0
  70. package/dist/lib/node-esm/{settings-SIY33P3F.mjs → settings-LGG22OH4.mjs} +8 -8
  71. package/dist/lib/node-esm/settings-LGG22OH4.mjs.map +7 -0
  72. package/dist/lib/node-esm/{state-LLGVRYKL.mjs → state-W3PECOJX.mjs} +10 -10
  73. package/dist/lib/node-esm/state-W3PECOJX.mjs.map +7 -0
  74. package/dist/lib/node-esm/toolkit-ZCFWOGNH.mjs +75 -0
  75. package/dist/lib/node-esm/toolkit-ZCFWOGNH.mjs.map +7 -0
  76. package/dist/lib/node-esm/types/index.mjs +6 -14
  77. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  78. package/dist/types/src/capabilities/anchor-sort.d.ts +2 -2
  79. package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
  80. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/artifact-definition.d.ts +1 -9
  82. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
  84. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  85. package/dist/types/src/capabilities/capabilities.d.ts +1 -1
  86. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/index.d.ts +12 -10
  88. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  90. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  92. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/settings.d.ts +1 -1
  94. package/dist/types/src/capabilities/state.d.ts +2 -2
  95. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/toolkit.d.ts +4 -0
  97. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  98. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +7 -0
  99. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -0
  100. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +10 -0
  101. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
  102. package/dist/types/src/components/MarkdownCard/index.d.ts +4 -0
  103. package/dist/types/src/components/MarkdownCard/index.d.ts.map +1 -0
  104. package/dist/types/src/components/MarkdownContainer.d.ts +5 -5
  105. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  106. package/dist/types/src/components/MarkdownContainer.stories.d.ts +51 -4
  107. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
  108. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +2 -2
  109. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  110. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +110 -12
  111. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  112. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +2 -2
  113. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  114. package/dist/types/src/components/Suggestions.stories.d.ts +3 -3
  115. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
  116. package/dist/types/src/components/Toolbar.stories.d.ts +44 -7
  117. package/dist/types/src/components/Toolbar.stories.d.ts.map +1 -1
  118. package/dist/types/src/components/index.d.ts +1 -1
  119. package/dist/types/src/components/index.d.ts.map +1 -1
  120. package/dist/types/src/events.d.ts.map +1 -1
  121. package/dist/types/src/extensions.d.ts +3 -5
  122. package/dist/types/src/extensions.d.ts.map +1 -1
  123. package/dist/types/src/functions/diff.d.ts +6 -0
  124. package/dist/types/src/functions/diff.d.ts.map +1 -0
  125. package/dist/types/src/functions/index.d.ts +3 -0
  126. package/dist/types/src/functions/index.d.ts.map +1 -0
  127. package/dist/types/src/functions/open.d.ts +7 -0
  128. package/dist/types/src/functions/open.d.ts.map +1 -0
  129. package/dist/types/src/index.d.ts +2 -1
  130. package/dist/types/src/index.d.ts.map +1 -1
  131. package/dist/types/src/meta.d.ts +0 -1
  132. package/dist/types/src/meta.d.ts.map +1 -1
  133. package/dist/types/src/translations.d.ts +36 -80
  134. package/dist/types/src/translations.d.ts.map +1 -1
  135. package/dist/types/src/types/Markdown.d.ts +43 -0
  136. package/dist/types/src/types/Markdown.d.ts.map +1 -0
  137. package/dist/types/src/types/MarkdownAction.d.ts +33 -0
  138. package/dist/types/src/types/MarkdownAction.d.ts.map +1 -0
  139. package/dist/types/src/types/index.d.ts +2 -1
  140. package/dist/types/src/types/index.d.ts.map +1 -1
  141. package/dist/types/src/types/types.d.ts +4 -59
  142. package/dist/types/src/types/types.d.ts.map +1 -1
  143. package/dist/types/src/util.d.ts +12 -3
  144. package/dist/types/src/util.d.ts.map +1 -1
  145. package/dist/types/tsconfig.tsbuildinfo +1 -1
  146. package/package.json +51 -48
  147. package/src/MarkdownPlugin.tsx +22 -13
  148. package/src/capabilities/anchor-sort.ts +3 -3
  149. package/src/capabilities/app-graph-serializer.ts +10 -8
  150. package/src/capabilities/artifact-definition.ts +19 -24
  151. package/src/capabilities/blueprint-definition.ts +39 -0
  152. package/src/capabilities/capabilities.ts +5 -4
  153. package/src/capabilities/index.ts +3 -1
  154. package/src/capabilities/intent-resolver.ts +15 -21
  155. package/src/capabilities/react-surface.tsx +22 -20
  156. package/src/capabilities/settings.ts +3 -3
  157. package/src/capabilities/state.ts +8 -8
  158. package/src/capabilities/toolkit.ts +47 -0
  159. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +79 -0
  160. package/src/components/{MarkdownPreview/MarkdownPreview.tsx → MarkdownCard/MarkdownCard.tsx} +21 -17
  161. package/src/components/MarkdownCard/index.ts +9 -0
  162. package/src/components/MarkdownContainer.stories.tsx +39 -31
  163. package/src/components/MarkdownContainer.tsx +36 -21
  164. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +10 -7
  165. package/src/components/MarkdownEditor/MarkdownEditor.tsx +28 -30
  166. package/src/components/MarkdownSettings/MarkdownSettings.tsx +81 -78
  167. package/src/components/Suggestions.stories.tsx +36 -33
  168. package/src/components/Toolbar.stories.tsx +19 -14
  169. package/src/components/index.ts +1 -1
  170. package/src/events.ts +2 -2
  171. package/src/extensions.tsx +28 -52
  172. package/src/functions/diff.ts +35 -0
  173. package/src/functions/index.ts +6 -0
  174. package/src/functions/open.ts +30 -0
  175. package/src/hooks/useSelectCurrentThread.tsx +3 -3
  176. package/src/index.ts +4 -1
  177. package/src/meta.ts +7 -8
  178. package/src/translations.ts +10 -7
  179. package/src/types/Markdown.ts +56 -0
  180. package/src/types/MarkdownAction.ts +29 -0
  181. package/src/types/index.ts +2 -1
  182. package/src/types/types.ts +7 -51
  183. package/src/util.tsx +20 -6
  184. package/dist/lib/browser/MarkdownContainer-EFWQ6DHD.mjs.map +0 -7
  185. package/dist/lib/browser/MarkdownPreview-F4PYFW5L.mjs.map +0 -7
  186. package/dist/lib/browser/anchor-sort-BMAN2ABT.mjs.map +0 -7
  187. package/dist/lib/browser/app-graph-serializer-EI6TEHRQ.mjs.map +0 -7
  188. package/dist/lib/browser/artifact-definition-FQ2R6KPT.mjs +0 -145
  189. package/dist/lib/browser/artifact-definition-FQ2R6KPT.mjs.map +0 -7
  190. package/dist/lib/browser/chunk-354IBM5X.mjs +0 -20
  191. package/dist/lib/browser/chunk-354IBM5X.mjs.map +0 -7
  192. package/dist/lib/browser/chunk-D767LUGU.mjs.map +0 -7
  193. package/dist/lib/browser/chunk-JX6XNEHE.mjs +0 -22
  194. package/dist/lib/browser/chunk-JX6XNEHE.mjs.map +0 -7
  195. package/dist/lib/browser/chunk-LXSRQPEP.mjs.map +0 -7
  196. package/dist/lib/browser/chunk-N2D26K6W.mjs +0 -79
  197. package/dist/lib/browser/chunk-N2D26K6W.mjs.map +0 -7
  198. package/dist/lib/browser/chunk-QVJETNGS.mjs +0 -16
  199. package/dist/lib/browser/chunk-QVJETNGS.mjs.map +0 -7
  200. package/dist/lib/browser/intent-resolver-6ZOABX2J.mjs +0 -64
  201. package/dist/lib/browser/intent-resolver-6ZOABX2J.mjs.map +0 -7
  202. package/dist/lib/browser/react-surface-4B5ELMEW.mjs.map +0 -7
  203. package/dist/lib/browser/settings-PLH54VC7.mjs.map +0 -7
  204. package/dist/lib/browser/state-KI6PJ6DT.mjs.map +0 -7
  205. package/dist/lib/node/MarkdownContainer-KYGUEZIL.cjs +0 -783
  206. package/dist/lib/node/MarkdownContainer-KYGUEZIL.cjs.map +0 -7
  207. package/dist/lib/node/MarkdownPreview-GCJJCXY6.cjs +0 -103
  208. package/dist/lib/node/MarkdownPreview-GCJJCXY6.cjs.map +0 -7
  209. package/dist/lib/node/anchor-sort-V3T4SFFI.cjs +0 -48
  210. package/dist/lib/node/anchor-sort-V3T4SFFI.cjs.map +0 -7
  211. package/dist/lib/node/app-graph-serializer-E6BXEDEL.cjs +0 -65
  212. package/dist/lib/node/app-graph-serializer-E6BXEDEL.cjs.map +0 -7
  213. package/dist/lib/node/artifact-definition-U27MH5SC.cjs +0 -158
  214. package/dist/lib/node/artifact-definition-U27MH5SC.cjs.map +0 -7
  215. package/dist/lib/node/chunk-3HHV4MM6.cjs +0 -101
  216. package/dist/lib/node/chunk-3HHV4MM6.cjs.map +0 -7
  217. package/dist/lib/node/chunk-CJLYFGPI.cjs +0 -74
  218. package/dist/lib/node/chunk-CJLYFGPI.cjs.map +0 -7
  219. package/dist/lib/node/chunk-FU3XZZCO.cjs +0 -58
  220. package/dist/lib/node/chunk-FU3XZZCO.cjs.map +0 -7
  221. package/dist/lib/node/chunk-IFYSBQE5.cjs +0 -35
  222. package/dist/lib/node/chunk-IFYSBQE5.cjs.map +0 -7
  223. package/dist/lib/node/chunk-LQAC5HL7.cjs +0 -68
  224. package/dist/lib/node/chunk-LQAC5HL7.cjs.map +0 -7
  225. package/dist/lib/node/chunk-ZU5OIHCY.cjs +0 -45
  226. package/dist/lib/node/chunk-ZU5OIHCY.cjs.map +0 -7
  227. package/dist/lib/node/index.cjs +0 -165
  228. package/dist/lib/node/index.cjs.map +0 -7
  229. package/dist/lib/node/intent-resolver-OEFLRNEJ.cjs +0 -77
  230. package/dist/lib/node/intent-resolver-OEFLRNEJ.cjs.map +0 -7
  231. package/dist/lib/node/meta.json +0 -1
  232. package/dist/lib/node/react-surface-456HQ4KZ.cjs +0 -218
  233. package/dist/lib/node/react-surface-456HQ4KZ.cjs.map +0 -7
  234. package/dist/lib/node/settings-E3NUTXJ4.cjs +0 -42
  235. package/dist/lib/node/settings-E3NUTXJ4.cjs.map +0 -7
  236. package/dist/lib/node/state-KKDRAG7X.cjs +0 -51
  237. package/dist/lib/node/state-KKDRAG7X.cjs.map +0 -7
  238. package/dist/lib/node/types/index.cjs +0 -40
  239. package/dist/lib/node/types/index.cjs.map +0 -7
  240. package/dist/lib/node-esm/MarkdownContainer-O3SGMH4G.mjs.map +0 -7
  241. package/dist/lib/node-esm/MarkdownPreview-KFDRV4GC.mjs.map +0 -7
  242. package/dist/lib/node-esm/anchor-sort-BXL7BE67.mjs.map +0 -7
  243. package/dist/lib/node-esm/app-graph-serializer-F7DGNF3G.mjs.map +0 -7
  244. package/dist/lib/node-esm/artifact-definition-NQOHB6S5.mjs +0 -146
  245. package/dist/lib/node-esm/artifact-definition-NQOHB6S5.mjs.map +0 -7
  246. package/dist/lib/node-esm/chunk-BWDDFDJY.mjs.map +0 -7
  247. package/dist/lib/node-esm/chunk-JXXDCSMW.mjs +0 -17
  248. package/dist/lib/node-esm/chunk-JXXDCSMW.mjs.map +0 -7
  249. package/dist/lib/node-esm/chunk-K26TX5V4.mjs.map +0 -7
  250. package/dist/lib/node-esm/chunk-RX63ZNML.mjs +0 -24
  251. package/dist/lib/node-esm/chunk-RX63ZNML.mjs.map +0 -7
  252. package/dist/lib/node-esm/chunk-T2Y2BT53.mjs +0 -80
  253. package/dist/lib/node-esm/chunk-T2Y2BT53.mjs.map +0 -7
  254. package/dist/lib/node-esm/chunk-YOABAQ7A.mjs +0 -22
  255. package/dist/lib/node-esm/chunk-YOABAQ7A.mjs.map +0 -7
  256. package/dist/lib/node-esm/intent-resolver-CLMSVF2K.mjs +0 -65
  257. package/dist/lib/node-esm/intent-resolver-CLMSVF2K.mjs.map +0 -7
  258. package/dist/lib/node-esm/react-surface-YHFOQTVO.mjs.map +0 -7
  259. package/dist/lib/node-esm/settings-SIY33P3F.mjs.map +0 -7
  260. package/dist/lib/node-esm/state-LLGVRYKL.mjs.map +0 -7
  261. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts +0 -6
  262. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts.map +0 -1
  263. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts +0 -17
  264. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts.map +0 -1
  265. package/dist/types/src/components/MarkdownPreview/index.d.ts +0 -4
  266. package/dist/types/src/components/MarkdownPreview/index.d.ts.map +0 -1
  267. package/dist/types/src/types/schema.d.ts +0 -35
  268. package/dist/types/src/types/schema.d.ts.map +0 -1
  269. package/src/components/MarkdownPreview/MarkdownPreview.stories.tsx +0 -74
  270. package/src/components/MarkdownPreview/index.ts +0 -9
  271. package/src/types/schema.ts +0 -39
@@ -1,63 +1,270 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import "./chunk-YOABAQ7A.mjs";
2
+ import "./chunk-MJZPYYIH.mjs";
3
+ import "./chunk-KAXL7TWD.mjs";
3
4
  import {
4
5
  MarkdownCapabilities
5
- } from "./chunk-JXXDCSMW.mjs";
6
+ } from "./chunk-CB2R4YIY.mjs";
6
7
  import {
7
8
  getFallbackName,
8
9
  setFallbackName
9
- } from "./chunk-K26TX5V4.mjs";
10
+ } from "./chunk-O6EXWGGS.mjs";
10
11
  import {
11
- DocumentType
12
- } from "./chunk-T2Y2BT53.mjs";
12
+ Markdown_exports
13
+ } from "./chunk-FXILAQ5F.mjs";
13
14
  import {
14
- MARKDOWN_PLUGIN
15
- } from "./chunk-RX63ZNML.mjs";
15
+ meta
16
+ } from "./chunk-VCG2U522.mjs";
16
17
 
17
- // packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx
18
+ // src/components/MarkdownContainer.tsx
18
19
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
19
20
  import { Rx } from "@effect-rx/rx-react";
20
21
  import React3, { useCallback as useCallback2, useEffect as useEffect2, useMemo as useMemo4, useState } from "react";
21
22
  import { createPortal } from "react-dom";
22
23
  import { Capabilities, Surface, useAppGraph, useCapabilities as useCapabilities2, usePluginManager } from "@dxos/app-framework";
23
- import { DXN, Filter, Obj, Query } from "@dxos/echo";
24
+ import { DXN, Filter, Obj, Query, Type } from "@dxos/echo";
25
+ import { ClientCapabilities } from "@dxos/plugin-client";
24
26
  import { SpaceCapabilities } from "@dxos/plugin-space";
25
- import { fullyQualifiedId as fullyQualifiedId2, getSpace as getSpace2, useQuery, useSpace } from "@dxos/react-client/echo";
27
+ import { useClient } from "@dxos/react-client";
28
+ import { fullyQualifiedId as fullyQualifiedId2, getSpace as getSpace2 } from "@dxos/react-client/echo";
26
29
  import { toLocalizedString as toLocalizedString2, useTranslation as useTranslation2 } from "@dxos/react-ui";
27
30
  import { insertAtCursor, insertAtLineStart } from "@dxos/react-ui-editor";
28
31
  import { DataType } from "@dxos/schema";
29
32
 
30
- // packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditor.tsx
33
+ // src/extensions.tsx
34
+ import React, { useMemo } from "react";
35
+ import { createRoot } from "react-dom/client";
36
+ import { LayoutAction, createIntent, useCapabilities, useIntentDispatcher } from "@dxos/app-framework";
37
+ import { debounceAndThrottle } from "@dxos/async";
38
+ import { invariant } from "@dxos/invariant";
39
+ import { createDocAccessor, fullyQualifiedId, getSpace } from "@dxos/react-client/echo";
40
+ import { useIdentity } from "@dxos/react-client/halo";
41
+ import { Icon, ThemeProvider } from "@dxos/react-ui";
42
+ import { Cursor, EditorView, InputModeExtensions, createDataExtensions, decorateMarkdown, documentId, folding, formattingKeymap, linkTooltip, listener, preview, selectionState, typewriter } from "@dxos/react-ui-editor";
43
+ import { defaultTx } from "@dxos/react-ui-theme";
44
+ import { isNotFalsy } from "@dxos/util";
45
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/extensions.tsx";
46
+ var useExtensions = ({ document, id, text, settings, selectionManager, viewMode, editorStateStore, previewOptions }) => {
47
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
48
+ const identity = useIdentity();
49
+ const space = getSpace(document) ?? getSpace(text);
50
+ const baseExtensions = useMemo(() => createBaseExtensions({
51
+ document,
52
+ id,
53
+ text,
54
+ settings,
55
+ selectionManager,
56
+ viewMode,
57
+ previewOptions,
58
+ dispatch
59
+ }), [
60
+ document,
61
+ id,
62
+ text,
63
+ viewMode,
64
+ dispatch,
65
+ previewOptions,
66
+ settings,
67
+ settings.editorInputMode,
68
+ settings.folding,
69
+ settings.numberedHeadings,
70
+ settings.debug,
71
+ settings.typewriter,
72
+ selectionManager
73
+ ]);
74
+ const extensionProviders = useCapabilities(MarkdownCapabilities.Extensions);
75
+ const pluginExtensions = useMemo(() => {
76
+ if (!document) {
77
+ return [];
78
+ }
79
+ return extensionProviders.flat().reduce((acc, provider) => {
80
+ const extension = typeof provider === "function" ? provider({
81
+ document
82
+ }) : provider;
83
+ if (extension) {
84
+ acc.push(extension);
85
+ }
86
+ return acc;
87
+ }, []);
88
+ }, [
89
+ extensionProviders,
90
+ document
91
+ ]);
92
+ return useMemo(() => [
93
+ // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
94
+ document && createDataExtensions({
95
+ id: document.id,
96
+ text: document.content.target && createDocAccessor(document.content.target, [
97
+ "content"
98
+ ]),
99
+ space,
100
+ identity
101
+ }),
102
+ text && id && createDataExtensions({
103
+ id,
104
+ text: createDocAccessor(text, [
105
+ "content"
106
+ ]),
107
+ space,
108
+ identity
109
+ }),
110
+ selectionState(editorStateStore),
111
+ document && listener({
112
+ onChange: (text2) => setFallbackName(document, text2)
113
+ }),
114
+ baseExtensions,
115
+ pluginExtensions
116
+ ].filter(isNotFalsy), [
117
+ baseExtensions,
118
+ pluginExtensions,
119
+ document,
120
+ document?.content?.target,
121
+ text,
122
+ id,
123
+ space,
124
+ identity
125
+ ]);
126
+ };
127
+ var createBaseExtensions = ({ document, id, dispatch, settings, selectionManager, viewMode, previewOptions }) => {
128
+ const extensions = [
129
+ selectionManager && selectionChange(selectionManager),
130
+ settings.editorInputMode && InputModeExtensions[settings.editorInputMode],
131
+ settings.folding && folding()
132
+ ].filter(isNotFalsy);
133
+ if (viewMode !== "source") {
134
+ extensions.push(...[
135
+ formattingKeymap(),
136
+ decorateMarkdown({
137
+ selectionChangeDelay: 100,
138
+ numberedHeadings: settings.numberedHeadings ? {
139
+ from: 2
140
+ } : void 0,
141
+ // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
142
+ renderLinkButton: dispatch && (document || id) ? createLinkRenderer((id2) => {
143
+ void dispatch(createIntent(LayoutAction.Open, {
144
+ part: "main",
145
+ subject: [
146
+ id2
147
+ ],
148
+ options: {
149
+ pivotId: document ? fullyQualifiedId(document) : id2
150
+ }
151
+ }));
152
+ }) : void 0
153
+ }),
154
+ linkTooltip(renderLinkTooltip),
155
+ preview(previewOptions)
156
+ ]);
157
+ }
158
+ if (settings.debug) {
159
+ const items = settings.typewriter?.split(/[,\n]/) ?? "";
160
+ if (items) {
161
+ extensions.push(typewriter({
162
+ items
163
+ }));
164
+ }
165
+ }
166
+ return extensions;
167
+ };
168
+ var selectionChange = (selectionManager) => {
169
+ return EditorView.updateListener.of(debounceAndThrottle((update) => {
170
+ if (update.selectionSet) {
171
+ const id = update.state.facet(documentId);
172
+ const cursorConverter = update.state.facet(Cursor.converter);
173
+ const selection = update.state.selection;
174
+ const ranges = selection.ranges.map((range) => ({
175
+ from: cursorConverter.toCursor(range.from),
176
+ to: cursorConverter.toCursor(range.to)
177
+ })).filter(({ from, to }) => to > from);
178
+ selectionManager.updateMultiRange(id, ranges);
179
+ }
180
+ }, 100));
181
+ };
182
+ var style = {
183
+ hover: "rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400",
184
+ icon: "inline-block leading-none mis-1 cursor-pointer"
185
+ };
186
+ var createLinkRenderer = (onSelectObject) => (el, { url }) => {
187
+ const isInternal = url.startsWith("/") || // TODO(wittjosiah): This should probably be parsed out on paste?
188
+ url.startsWith(window.location.origin);
189
+ const options = isInternal ? {
190
+ onClick: () => {
191
+ const qualifiedId = url.split("/").at(-1);
192
+ invariant(qualifiedId, "Invalid link format.", {
193
+ F: __dxlog_file,
194
+ L: 263,
195
+ S: void 0,
196
+ A: [
197
+ "qualifiedId",
198
+ "'Invalid link format.'"
199
+ ]
200
+ });
201
+ onSelectObject(qualifiedId);
202
+ }
203
+ } : {
204
+ href: url,
205
+ rel: "noreferrer",
206
+ target: "_blank"
207
+ };
208
+ renderRoot(el, /* @__PURE__ */ React.createElement("a", {
209
+ ...options,
210
+ className: style.hover
211
+ }, /* @__PURE__ */ React.createElement(Icon, {
212
+ icon: isInternal ? "ph--arrow-square-down--bold" : "ph--arrow-square-out--bold",
213
+ size: 4,
214
+ classNames: style.icon
215
+ })));
216
+ };
217
+ var renderLinkTooltip = (el, { url }) => {
218
+ const web = new URL(url);
219
+ renderRoot(el, /* @__PURE__ */ React.createElement("a", {
220
+ href: url,
221
+ rel: "noreferrer",
222
+ target: "_blank",
223
+ className: style.hover
224
+ }, web.origin, /* @__PURE__ */ React.createElement(Icon, {
225
+ icon: "ph--arrow-square-out--bold",
226
+ size: 4,
227
+ classNames: style.icon
228
+ })));
229
+ };
230
+ var renderRoot = (root, node) => {
231
+ createRoot(root).render(/* @__PURE__ */ React.createElement(ThemeProvider, {
232
+ tx: defaultTx
233
+ }, node));
234
+ return root;
235
+ };
236
+
237
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
31
238
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
32
- import React, { forwardRef, useMemo as useMemo2, useEffect, useCallback, useImperativeHandle, useRef } from "react";
239
+ import React2, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo as useMemo3, useRef } from "react";
33
240
  import { useDropzone } from "react-dropzone";
34
- import { invariant as invariant2 } from "@dxos/invariant";
241
+ import { invariant as invariant3 } from "@dxos/invariant";
35
242
  import { toLocalizedString, useThemeContext, useTranslation } from "@dxos/react-ui";
36
- import { CommandMenu, EditorToolbar, RefPopover, addLink, createElement, coreSlashCommands, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, editorGutter, editorSlots, filterItems, linkSlashCommands, processEditorPayload, stackItemContentEditorClassNames, useEditorToolbarState, useFormattingState, useTextEditor, useCommandMenu } from "@dxos/react-ui-editor";
243
+ import { CommandMenuProvider, Domino, EditorToolbar, addLink, coreSlashCommands, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, editorGutter, editorSlots, filterItems, linkSlashCommands, processEditorPayload, stackItemContentEditorClassNames, useCommandMenu, useEditorToolbarState, useFormattingState, useTextEditor } from "@dxos/react-ui-editor";
37
244
  import { StackItem } from "@dxos/react-ui-stack";
38
- import { isNotFalsy, isNonNullable } from "@dxos/util";
245
+ import { isNonNullable, isNotFalsy as isNotFalsy2 } from "@dxos/util";
39
246
 
40
- // packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx
41
- import { EditorView } from "@codemirror/view";
247
+ // src/hooks/useSelectCurrentThread.tsx
248
+ import { EditorView as EditorView2 } from "@codemirror/view";
42
249
  import { Schema } from "effect";
43
- import { useMemo } from "react";
44
- import { createResolver, LayoutAction, useIntentResolver } from "@dxos/app-framework";
45
- import { invariant } from "@dxos/invariant";
46
- import { Cursor, setSelection } from "@dxos/react-ui-editor";
47
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx";
250
+ import { useMemo as useMemo2 } from "react";
251
+ import { LayoutAction as LayoutAction2, createResolver, useIntentResolver } from "@dxos/app-framework";
252
+ import { invariant as invariant2 } from "@dxos/invariant";
253
+ import { Cursor as Cursor2, setSelection } from "@dxos/react-ui-editor";
254
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx";
48
255
  var useSelectCurrentThread = (editorView, documentId2) => {
49
- const scrollIntoViewResolver = useMemo(() => createResolver({
50
- intent: LayoutAction.UpdateLayout,
256
+ const scrollIntoViewResolver = useMemo2(() => createResolver({
257
+ intent: LayoutAction2.UpdateLayout,
51
258
  position: "hoist",
52
259
  filter: (data) => {
53
- if (!Schema.is(LayoutAction.ScrollIntoView.fields.input)(data)) {
260
+ if (!Schema.is(LayoutAction2.ScrollIntoView.fields.input)(data)) {
54
261
  return false;
55
262
  }
56
263
  return !!editorView && data.subject === documentId2 && !!data.options?.cursor;
57
264
  },
58
265
  resolve: ({ options: { cursor } }) => {
59
- invariant(editorView, "Editor view is not defined.", {
60
- F: __dxlog_file,
266
+ invariant2(editorView, "Editor view is not defined.", {
267
+ F: __dxlog_file2,
61
268
  L: 32,
62
269
  S: void 0,
63
270
  A: [
@@ -65,14 +272,14 @@ var useSelectCurrentThread = (editorView, documentId2) => {
65
272
  "'Editor view is not defined.'"
66
273
  ]
67
274
  });
68
- const range = Cursor.getRangeFromCursor(editorView.state, cursor);
275
+ const range = Cursor2.getRangeFromCursor(editorView.state, cursor);
69
276
  if (range) {
70
277
  const selection = editorView.state.selection.main.from !== range.from ? {
71
278
  anchor: range.from
72
279
  } : void 0;
73
280
  const effects = [
74
281
  // NOTE: This does not use the DOM scrollIntoView function.
75
- EditorView.scrollIntoView(range.from, {
282
+ EditorView2.scrollIntoView(range.from, {
76
283
  y: "start",
77
284
  yMargin: 96
78
285
  })
@@ -94,12 +301,12 @@ var useSelectCurrentThread = (editorView, documentId2) => {
94
301
  documentId2,
95
302
  editorView
96
303
  ]);
97
- useIntentResolver(MARKDOWN_PLUGIN, scrollIntoViewResolver);
304
+ useIntentResolver(meta.id, scrollIntoViewResolver);
98
305
  };
99
306
 
100
- // packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditor.tsx
101
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditor.tsx";
102
- var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery, ...props }) => {
307
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
308
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditor.tsx";
309
+ var MarkdownEditor = ({ extensions: extensionsParam, slashCommandGroups, onLinkQuery, ...props }) => {
103
310
  var _effect = _useSignals();
104
311
  try {
105
312
  const { t } = useTranslation();
@@ -120,7 +327,7 @@ var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery
120
327
  onLinkQuery,
121
328
  slashCommandGroups
122
329
  ]);
123
- const options = useMemo2(() => {
330
+ const options = useMemo3(() => {
124
331
  const trigger = onLinkQuery ? [
125
332
  "/",
126
333
  "@"
@@ -132,45 +339,28 @@ var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery
132
339
  trigger,
133
340
  placeholder: {
134
341
  delay: 3e3,
135
- content: () => {
136
- return createElement("div", void 0, [
137
- createElement("span", {
138
- text: "Press"
139
- }),
140
- ...trigger.map((text) => createElement("span", {
141
- className: "border border-separator rounded-sm mx-1 px-1.5 pt-[1px] pb-[2px]",
142
- text
143
- })),
144
- createElement("span", {
145
- text: "for commands."
146
- })
147
- ]);
148
- }
342
+ content: () => Domino.of("div").child(Domino.of("span").text("Press"), ...trigger.map((text) => Domino.of("span").classNames("border border-separator rounded-sm mx-1 px-1.5 pt-[1px] pb-[2px]").text(text)), Domino.of("span").text("for commands.")).build()
149
343
  },
150
344
  getMenu
151
345
  };
152
346
  }, [
153
347
  getMenu
154
348
  ]);
155
- const { commandMenu, groupsRef, currentItem, onSelect, ...refPopoverProps } = useCommandMenu(options);
156
- const extensions = useMemo2(() => [
157
- _extensions,
349
+ const { commandMenu, groupsRef, ...commandMenuProps } = useCommandMenu(options);
350
+ const extensions = useMemo3(() => [
351
+ extensionsParam,
158
352
  commandMenu
159
- ].filter(isNotFalsy), [
160
- _extensions,
353
+ ].filter(isNotFalsy2), [
354
+ extensionsParam,
161
355
  commandMenu
162
356
  ]);
163
- return /* @__PURE__ */ React.createElement(RefPopover, {
164
- modal: false,
165
- ...refPopoverProps
166
- }, /* @__PURE__ */ React.createElement(MarkdownEditorImpl, {
357
+ return /* @__PURE__ */ React2.createElement(CommandMenuProvider, {
358
+ groups: groupsRef.current,
359
+ ...commandMenuProps
360
+ }, /* @__PURE__ */ React2.createElement(MarkdownEditorImpl, {
167
361
  ref: viewRef,
168
362
  ...props,
169
363
  extensions
170
- }), /* @__PURE__ */ React.createElement(CommandMenu, {
171
- groups: groupsRef.current,
172
- currentItem,
173
- onSelect
174
364
  }));
175
365
  } finally {
176
366
  _effect.f();
@@ -179,16 +369,16 @@ var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery
179
369
  var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", initialValue, customActions, editorStateStore, extensions, extensionProviders, scrollPastEnd, toolbar, viewMode, onFileUpload, onViewModeChange }, forwardedRef) => {
180
370
  var _effect = _useSignals();
181
371
  try {
182
- const { t } = useTranslation(MARKDOWN_PLUGIN);
372
+ const { t } = useTranslation(meta.id);
183
373
  const { themeMode } = useThemeContext();
184
374
  const toolbarState = useEditorToolbarState({
185
375
  viewMode
186
376
  });
187
377
  const formattingObserver = useFormattingState(toolbarState);
188
- const { scrollTo, selection } = useMemo2(() => editorStateStore?.getState(id) ?? {}, [
378
+ const { scrollTo, selection } = useMemo3(() => editorStateStore?.getState(id) ?? {}, [
189
379
  id
190
380
  ]);
191
- const providerExtensions = useMemo2(() => extensionProviders?.flatMap((provider) => provider({})).filter(isNonNullable), [
381
+ const providerExtensions = useMemo3(() => extensionProviders?.flatMap((provider) => provider({})).filter(isNonNullable), [
192
382
  extensionProviders
193
383
  ]);
194
384
  const handleDrop = async (view, { files }) => {
@@ -208,11 +398,10 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
208
398
  createBasicExtensions({
209
399
  readOnly: viewMode === "readonly",
210
400
  placeholder: t("editor placeholder"),
211
- scrollPastEnd: role === "section" ? false : scrollPastEnd
212
- }),
213
- createMarkdownExtensions({
214
- themeMode
401
+ scrollPastEnd: role === "section" ? false : scrollPastEnd,
402
+ search: true
215
403
  }),
404
+ createMarkdownExtensions(),
216
405
  createThemeExtensions({
217
406
  themeMode,
218
407
  syntaxHighlighting: true,
@@ -224,7 +413,7 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
224
413
  }),
225
414
  providerExtensions,
226
415
  extensions
227
- ].filter(isNotFalsy),
416
+ ].filter(isNotFalsy2),
228
417
  ...role !== "section" && {
229
418
  id,
230
419
  scrollTo,
@@ -283,9 +472,9 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
283
472
  onFileUpload
284
473
  ]);
285
474
  const getView = useCallback(() => {
286
- invariant2(editorView, void 0, {
287
- F: __dxlog_file2,
288
- L: 240,
475
+ invariant3(editorView, void 0, {
476
+ F: __dxlog_file3,
477
+ L: 238,
289
478
  S: void 0,
290
479
  A: [
291
480
  "editorView",
@@ -307,9 +496,9 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
307
496
  }, [
308
497
  onFileUpload
309
498
  ]);
310
- return /* @__PURE__ */ React.createElement(StackItem.Content, {
499
+ return /* @__PURE__ */ React2.createElement(StackItem.Content, {
311
500
  toolbar: !!toolbar
312
- }, toolbar && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(EditorToolbar, {
501
+ }, toolbar && /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(EditorToolbar, {
313
502
  attendableId: id,
314
503
  role,
315
504
  state: toolbarState,
@@ -317,7 +506,7 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
317
506
  getView,
318
507
  image: handleImageUpload,
319
508
  viewMode: handleViewModeChange
320
- }), /* @__PURE__ */ React.createElement("input", getInputProps())), /* @__PURE__ */ React.createElement("div", {
509
+ }), /* @__PURE__ */ React2.createElement("input", getInputProps())), /* @__PURE__ */ React2.createElement("div", {
321
510
  role: "none",
322
511
  ref: parentRef,
323
512
  "data-testid": "composer.markdownRoot",
@@ -341,227 +530,13 @@ var useTest = (view) => {
341
530
  ]);
342
531
  };
343
532
 
344
- // packages/plugins/plugin-markdown/src/extensions.tsx
345
- import React2, { useMemo as useMemo3 } from "react";
346
- import { createRoot } from "react-dom/client";
347
- import { createIntent, LayoutAction as LayoutAction2, useCapabilities, useIntentDispatcher } from "@dxos/app-framework";
348
- import { invariant as invariant3 } from "@dxos/invariant";
349
- import { createDocAccessor, fullyQualifiedId, getSpace } from "@dxos/react-client/echo";
350
- import { useIdentity } from "@dxos/react-client/halo";
351
- import { Icon, ThemeProvider } from "@dxos/react-ui";
352
- import { InputModeExtensions, createDataExtensions, autocomplete, decorateMarkdown, folding, formattingKeymap, linkTooltip, listener, preview, selectionState, typewriter, EditorView as EditorView2, documentId, Cursor as Cursor2 } from "@dxos/react-ui-editor";
353
- import { defaultTx } from "@dxos/react-ui-theme";
354
- import { isNotFalsy as isNotFalsy2 } from "@dxos/util";
355
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-markdown/src/extensions.tsx";
356
- var useExtensions = ({ document, id, text, settings, selectionManager, viewMode, editorStateStore, previewOptions }) => {
357
- const { dispatchPromise: dispatch } = useIntentDispatcher();
358
- const identity = useIdentity();
359
- const space = getSpace(document) ?? getSpace(text);
360
- const baseExtensions = useMemo3(() => createBaseExtensions({
361
- document,
362
- id,
363
- text,
364
- settings,
365
- selectionManager,
366
- viewMode,
367
- previewOptions,
368
- dispatch
369
- }), [
370
- document,
371
- id,
372
- text,
373
- viewMode,
374
- dispatch,
375
- previewOptions,
376
- settings,
377
- settings.editorInputMode,
378
- settings.folding,
379
- settings.numberedHeadings,
380
- settings.debug,
381
- settings.typewriter,
382
- selectionManager
383
- ]);
384
- const extensionProviders = useCapabilities(MarkdownCapabilities.Extensions);
385
- const pluginExtensions = useMemo3(() => {
386
- if (!document) {
387
- return [];
388
- }
389
- return extensionProviders.flat().reduce((acc, provider) => {
390
- const extension = typeof provider === "function" ? provider({
391
- document
392
- }) : provider;
393
- if (extension) {
394
- acc.push(extension);
395
- }
396
- return acc;
397
- }, []);
398
- }, [
399
- extensionProviders,
400
- document
401
- ]);
402
- return useMemo3(() => [
403
- // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
404
- document && createDataExtensions({
405
- id: document.id,
406
- text: document.content.target && createDocAccessor(document.content.target, [
407
- "content"
408
- ]),
409
- space,
410
- identity
411
- }),
412
- text && id && createDataExtensions({
413
- id,
414
- text: createDocAccessor(text, [
415
- "content"
416
- ]),
417
- space,
418
- identity
419
- }),
420
- selectionState(editorStateStore),
421
- document && listener({
422
- onChange: (text2) => setFallbackName(document, text2)
423
- }),
424
- baseExtensions,
425
- pluginExtensions
426
- ].filter(isNotFalsy2), [
427
- baseExtensions,
428
- pluginExtensions,
429
- document,
430
- document?.content?.target,
431
- text,
432
- id,
433
- space,
434
- identity
435
- ]);
436
- };
437
- var createBaseExtensions = ({ document, id, dispatch, settings, selectionManager, query, viewMode, previewOptions }) => {
438
- const extensions = [
439
- selectionManager && selectionChange(selectionManager),
440
- settings.editorInputMode && InputModeExtensions[settings.editorInputMode],
441
- settings.folding && folding()
442
- ].filter(isNotFalsy2);
443
- if (viewMode !== "source") {
444
- extensions.push(...[
445
- formattingKeymap(),
446
- decorateMarkdown({
447
- selectionChangeDelay: 100,
448
- numberedHeadings: settings.numberedHeadings ? {
449
- from: 2
450
- } : void 0,
451
- // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
452
- renderLinkButton: dispatch && (document || id) ? createLinkRenderer((id2) => {
453
- void dispatch(createIntent(LayoutAction2.Open, {
454
- part: "main",
455
- subject: [
456
- id2
457
- ],
458
- options: {
459
- pivotId: document ? fullyQualifiedId(document) : id2
460
- }
461
- }));
462
- }) : void 0
463
- }),
464
- linkTooltip(renderLinkTooltip),
465
- preview(previewOptions)
466
- ]);
467
- }
468
- if (query) {
469
- extensions.push(autocomplete({
470
- onSearch: (text) => {
471
- return query.objects.map((object) => object.name?.length && object.id !== document?.id ? {
472
- label: object.name,
473
- // TODO(burdon): Factor out URL builder.
474
- apply: `[${object.name}](/${fullyQualifiedId(object)})`
475
- } : void 0).filter(isNotFalsy2);
476
- }
477
- }));
478
- }
479
- if (settings.debug) {
480
- const items = settings.typewriter?.split(/[,\n]/) ?? "";
481
- if (items) {
482
- extensions.push(typewriter({
483
- items
484
- }));
485
- }
486
- }
487
- return extensions;
488
- };
489
- var selectionChange = (selectionManager) => {
490
- return EditorView2.updateListener.of((update) => {
491
- if (update.selectionSet) {
492
- const id = update.state.facet(documentId);
493
- const cursorConverter = update.state.facet(Cursor2.converter);
494
- const selection = update.state.selection;
495
- const ranges = selection.ranges.map((range) => ({
496
- from: cursorConverter.toCursor(range.from),
497
- to: cursorConverter.toCursor(range.to)
498
- })).filter(({ from, to }) => to > from);
499
- selectionManager.updateMultiRange(id, ranges);
500
- }
501
- });
502
- };
503
- var style = {
504
- hover: "rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400",
505
- icon: "inline-block leading-none mis-1 cursor-pointer"
506
- };
507
- var createLinkRenderer = (onSelectObject) => (el, { url }) => {
508
- const isInternal = url.startsWith("/") || // TODO(wittjosiah): This should probably be parsed out on paste?
509
- url.startsWith(window.location.origin);
510
- const options = isInternal ? {
511
- onClick: () => {
512
- const qualifiedId = url.split("/").at(-1);
513
- invariant3(qualifiedId, "Invalid link format.", {
514
- F: __dxlog_file3,
515
- L: 287,
516
- S: void 0,
517
- A: [
518
- "qualifiedId",
519
- "'Invalid link format.'"
520
- ]
521
- });
522
- onSelectObject(qualifiedId);
523
- }
524
- } : {
525
- href: url,
526
- rel: "noreferrer",
527
- target: "_blank"
528
- };
529
- renderRoot(el, /* @__PURE__ */ React2.createElement("a", {
530
- ...options,
531
- className: style.hover
532
- }, /* @__PURE__ */ React2.createElement(Icon, {
533
- icon: isInternal ? "ph--arrow-square-down--bold" : "ph--arrow-square-out--bold",
534
- size: 4,
535
- classNames: style.icon
536
- })));
537
- };
538
- var renderLinkTooltip = (el, { url }) => {
539
- const web = new URL(url);
540
- renderRoot(el, /* @__PURE__ */ React2.createElement("a", {
541
- href: url,
542
- rel: "noreferrer",
543
- target: "_blank",
544
- className: style.hover
545
- }, web.origin, /* @__PURE__ */ React2.createElement(Icon, {
546
- icon: "ph--arrow-square-out--bold",
547
- size: 4,
548
- classNames: style.icon
549
- })));
550
- };
551
- var renderRoot = (root, node) => {
552
- createRoot(root).render(/* @__PURE__ */ React2.createElement(ThemeProvider, {
553
- tx: defaultTx
554
- }, node));
555
- return root;
556
- };
557
-
558
- // packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx
533
+ // src/components/MarkdownContainer.tsx
559
534
  var MarkdownContainer = ({ id, role, object, settings, selectionManager, viewMode, editorStateStore, onViewModeChange }) => {
560
535
  var _effect = _useSignals2();
561
536
  try {
562
537
  const { t } = useTranslation2();
563
538
  const scrollPastEnd = role === "article";
564
- const doc = Obj.instanceOf(DocumentType, object) ? object : void 0;
539
+ const doc = Obj.instanceOf(Markdown_exports.Document, object) ? object : void 0;
565
540
  const text = Obj.instanceOf(DataType.Text, object) ? object : void 0;
566
541
  const [previewBlocks, setPreviewBlocks] = useState([]);
567
542
  const previewOptions = useMemo4(() => ({
@@ -594,16 +569,22 @@ var MarkdownContainer = ({ id, role, object, settings, selectionManager, viewMod
594
569
  ]);
595
570
  const space = getSpace2(object);
596
571
  const objectForms = useCapabilities2(SpaceCapabilities.ObjectForm);
597
- const filter = useMemo4(() => Filter.or(...objectForms.map((form) => Filter.type(form.objectSchema))), [
598
- objectForms
572
+ const schemaWhiteList = useCapabilities2(ClientCapabilities.SchemaWhiteList);
573
+ const filter = useMemo4(() => Filter.or(...objectForms.map((form) => Filter.type(form.objectSchema)), ...schemaWhiteList.flat().map((schema) => Filter.typename(Type.getTypename(schema)))), [
574
+ objectForms,
575
+ schemaWhiteList
599
576
  ]);
600
577
  const onLinkQuery = useCallback2(async (query) => {
601
578
  const name = query?.startsWith("@") ? query.slice(1).toLowerCase() : query?.toLowerCase() ?? "";
602
579
  const results = await space?.db.query(Query.select(filter)).run();
603
580
  const getLabel = (object2) => {
581
+ const label = Obj.getLabel(object2);
582
+ if (label) {
583
+ return label;
584
+ }
604
585
  const type = Obj.getTypename(object2);
605
586
  const metadata = resolve(type);
606
- return metadata.label?.(object2) || object2.name || [
587
+ return metadata.label?.(object2) || [
607
588
  "object name placeholder",
608
589
  {
609
590
  ns: type,
@@ -619,7 +600,7 @@ var MarkdownContainer = ({ id, role, object, settings, selectionManager, viewMod
619
600
  label,
620
601
  icon: metadata.icon,
621
602
  onSelect: (view, head) => {
622
- const link = `[${label}][${Obj.getDXN(object2)}]`;
603
+ const link = `[${label}](${Obj.getDXN(object2)})`;
623
604
  if (query?.startsWith("@")) {
624
605
  insertAtLineStart(view, head, `!${link}
625
606
  `);
@@ -688,18 +669,16 @@ var MarkdownContainer = ({ id, role, object, settings, selectionManager, viewMod
688
669
  var PreviewBlock = ({ link, el }) => {
689
670
  var _effect = _useSignals2();
690
671
  try {
691
- const echoDXN = useMemo4(() => DXN.parse(link.ref).asEchoDXN(), [
692
- link.ref
693
- ]);
694
- const space = useSpace(echoDXN?.spaceId);
695
- const [subject] = useQuery(space, Query.select(Filter.ids(echoDXN?.echoId ?? "")));
672
+ const client = useClient();
673
+ const dxn = DXN.parse(link.ref);
674
+ const subject = client.graph.ref(dxn).target;
696
675
  const data = useMemo4(() => ({
697
676
  subject
698
677
  }), [
699
678
  subject
700
679
  ]);
701
680
  return /* @__PURE__ */ createPortal(/* @__PURE__ */ React3.createElement(Surface, {
702
- role: "card--document",
681
+ role: "card--transclusion",
703
682
  data,
704
683
  limit: 1
705
684
  }), el);
@@ -766,6 +745,7 @@ var DocumentEditor = ({ id, document: doc, settings, viewMode, ...props }) => {
766
745
  var MarkdownContainer_default = MarkdownContainer;
767
746
  export {
768
747
  DocumentEditor,
748
+ MarkdownContainer,
769
749
  MarkdownContainer_default as default
770
750
  };
771
- //# sourceMappingURL=MarkdownContainer-O3SGMH4G.mjs.map
751
+ //# sourceMappingURL=MarkdownContainer-Z4I23DPN.mjs.map