@dxos/plugin-markdown 0.8.3 → 0.8.4-main.1f223c7

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