@dxos/plugin-markdown 0.8.3-staging.0fa589b → 0.8.4-main.28f8d3d

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 (236) hide show
  1. package/dist/lib/browser/{MarkdownPreview-F4PYFW5L.mjs → MarkdownCard-IMCR4A4V.mjs} +18 -18
  2. package/dist/lib/browser/MarkdownCard-IMCR4A4V.mjs.map +7 -0
  3. package/dist/lib/browser/{MarkdownContainer-EFWQ6DHD.mjs → MarkdownContainer-VGJPHMVG.mjs} +279 -269
  4. package/dist/lib/browser/MarkdownContainer-VGJPHMVG.mjs.map +7 -0
  5. package/dist/lib/browser/{anchor-sort-BMAN2ABT.mjs → anchor-sort-AJKRIWFD.mjs} +6 -6
  6. package/dist/lib/browser/anchor-sort-AJKRIWFD.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-serializer-EI6TEHRQ.mjs → app-graph-serializer-OIS3MZX2.mjs} +14 -14
  8. package/dist/lib/browser/app-graph-serializer-OIS3MZX2.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-IKPZHFTW.mjs +30 -0
  10. package/dist/lib/browser/chunk-IKPZHFTW.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-JHH7VL52.mjs +18 -0
  12. package/dist/lib/browser/chunk-JHH7VL52.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-LXSRQPEP.mjs → chunk-JMBQG2ZC.mjs} +9 -10
  14. package/dist/lib/browser/chunk-JMBQG2ZC.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-JTIGSUMB.mjs +80 -0
  16. package/dist/lib/browser/chunk-JTIGSUMB.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-LMJPXTPL.mjs +16 -0
  18. package/dist/lib/browser/chunk-LMJPXTPL.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-D767LUGU.mjs → chunk-MVL4K3OD.mjs} +13 -12
  20. package/dist/lib/browser/chunk-MVL4K3OD.mjs.map +7 -0
  21. package/dist/lib/browser/index.mjs +24 -26
  22. package/dist/lib/browser/index.mjs.map +3 -3
  23. package/dist/lib/browser/{intent-resolver-6ZOABX2J.mjs → intent-resolver-BLLHRSTQ.mjs} +15 -19
  24. package/dist/lib/browser/intent-resolver-BLLHRSTQ.mjs.map +7 -0
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/{react-surface-4B5ELMEW.mjs → react-surface-NL3BZR6H.mjs} +33 -30
  27. package/dist/lib/browser/react-surface-NL3BZR6H.mjs.map +7 -0
  28. package/dist/lib/browser/{settings-PLH54VC7.mjs → settings-Z7ZV7SLC.mjs} +6 -6
  29. package/dist/lib/browser/settings-Z7ZV7SLC.mjs.map +7 -0
  30. package/dist/lib/browser/{state-KI6PJ6DT.mjs → state-ORTZIEJU.mjs} +8 -8
  31. package/dist/lib/browser/state-ORTZIEJU.mjs.map +7 -0
  32. package/dist/lib/browser/types/index.mjs +6 -14
  33. package/dist/lib/node-esm/{MarkdownPreview-KFDRV4GC.mjs → MarkdownCard-JV2YDV3M.mjs} +18 -18
  34. package/dist/lib/node-esm/MarkdownCard-JV2YDV3M.mjs.map +7 -0
  35. package/dist/lib/node-esm/{MarkdownContainer-O3SGMH4G.mjs → MarkdownContainer-BJRNCXJZ.mjs} +279 -269
  36. package/dist/lib/node-esm/MarkdownContainer-BJRNCXJZ.mjs.map +7 -0
  37. package/dist/lib/node-esm/{anchor-sort-BXL7BE67.mjs → anchor-sort-N7WEA5E3.mjs} +6 -6
  38. package/dist/lib/node-esm/anchor-sort-N7WEA5E3.mjs.map +7 -0
  39. package/dist/lib/node-esm/{app-graph-serializer-F7DGNF3G.mjs → app-graph-serializer-Q3B44VFB.mjs} +14 -14
  40. package/dist/lib/node-esm/app-graph-serializer-Q3B44VFB.mjs.map +7 -0
  41. package/dist/lib/node-esm/chunk-AYWAYBAY.mjs +17 -0
  42. package/dist/lib/node-esm/chunk-AYWAYBAY.mjs.map +7 -0
  43. package/dist/lib/node-esm/chunk-H4I2FGDZ.mjs +31 -0
  44. package/dist/lib/node-esm/chunk-H4I2FGDZ.mjs.map +7 -0
  45. package/dist/lib/node-esm/chunk-H6TITL7A.mjs +20 -0
  46. package/dist/lib/node-esm/chunk-H6TITL7A.mjs.map +7 -0
  47. package/dist/lib/node-esm/{chunk-K26TX5V4.mjs → chunk-JDMMLOB6.mjs} +9 -10
  48. package/dist/lib/node-esm/chunk-JDMMLOB6.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-KIRZFVX5.mjs +81 -0
  50. package/dist/lib/node-esm/chunk-KIRZFVX5.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-BWDDFDJY.mjs → chunk-Z4XQ6C3D.mjs} +13 -12
  52. package/dist/lib/node-esm/chunk-Z4XQ6C3D.mjs.map +7 -0
  53. package/dist/lib/node-esm/index.mjs +24 -26
  54. package/dist/lib/node-esm/index.mjs.map +3 -3
  55. package/dist/lib/node-esm/{intent-resolver-CLMSVF2K.mjs → intent-resolver-NHPUPSWK.mjs} +15 -19
  56. package/dist/lib/node-esm/intent-resolver-NHPUPSWK.mjs.map +7 -0
  57. package/dist/lib/node-esm/meta.json +1 -1
  58. package/dist/lib/node-esm/{react-surface-YHFOQTVO.mjs → react-surface-XJ6ODCBE.mjs} +33 -30
  59. package/dist/lib/node-esm/react-surface-XJ6ODCBE.mjs.map +7 -0
  60. package/dist/lib/node-esm/{settings-SIY33P3F.mjs → settings-UCXEWBCT.mjs} +6 -6
  61. package/dist/lib/node-esm/settings-UCXEWBCT.mjs.map +7 -0
  62. package/dist/lib/node-esm/{state-LLGVRYKL.mjs → state-47WSZG54.mjs} +8 -8
  63. package/dist/lib/node-esm/state-47WSZG54.mjs.map +7 -0
  64. package/dist/lib/node-esm/types/index.mjs +6 -14
  65. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  66. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/artifact-definition.d.ts +1 -1
  68. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/capabilities.d.ts +1 -1
  70. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  71. package/dist/types/src/capabilities/index.d.ts +1 -2
  72. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  74. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  76. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +7 -0
  77. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -0
  78. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +42 -0
  79. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
  80. package/dist/types/src/components/MarkdownCard/index.d.ts +4 -0
  81. package/dist/types/src/components/MarkdownCard/index.d.ts.map +1 -0
  82. package/dist/types/src/components/MarkdownContainer.d.ts +5 -5
  83. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  84. package/dist/types/src/components/MarkdownContainer.stories.d.ts +1 -1
  85. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
  86. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +1 -1
  87. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  88. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +1 -1
  89. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  90. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +2 -2
  91. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  92. package/dist/types/src/components/Suggestions.stories.d.ts +3 -3
  93. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
  94. package/dist/types/src/components/Toolbar.stories.d.ts +1 -1
  95. package/dist/types/src/components/Toolbar.stories.d.ts.map +1 -1
  96. package/dist/types/src/components/index.d.ts +1 -1
  97. package/dist/types/src/components/index.d.ts.map +1 -1
  98. package/dist/types/src/events.d.ts.map +1 -1
  99. package/dist/types/src/extensions.d.ts +4 -4
  100. package/dist/types/src/extensions.d.ts.map +1 -1
  101. package/dist/types/src/index.d.ts +2 -1
  102. package/dist/types/src/index.d.ts.map +1 -1
  103. package/dist/types/src/meta.d.ts +1 -1
  104. package/dist/types/src/meta.d.ts.map +1 -1
  105. package/dist/types/src/translations.d.ts +35 -80
  106. package/dist/types/src/translations.d.ts.map +1 -1
  107. package/dist/types/src/types/Markdown.d.ts +43 -0
  108. package/dist/types/src/types/Markdown.d.ts.map +1 -0
  109. package/dist/types/src/types/MarkdownAction.d.ts +42 -0
  110. package/dist/types/src/types/MarkdownAction.d.ts.map +1 -0
  111. package/dist/types/src/types/index.d.ts +2 -1
  112. package/dist/types/src/types/index.d.ts.map +1 -1
  113. package/dist/types/src/types/types.d.ts +4 -59
  114. package/dist/types/src/types/types.d.ts.map +1 -1
  115. package/dist/types/src/util.d.ts +12 -3
  116. package/dist/types/src/util.d.ts.map +1 -1
  117. package/dist/types/tsconfig.tsbuildinfo +1 -1
  118. package/package.json +45 -45
  119. package/src/MarkdownPlugin.tsx +9 -15
  120. package/src/capabilities/anchor-sort.ts +3 -3
  121. package/src/capabilities/app-graph-serializer.ts +9 -7
  122. package/src/capabilities/artifact-definition.ts +16 -13
  123. package/src/capabilities/capabilities.ts +5 -4
  124. package/src/capabilities/index.ts +0 -1
  125. package/src/capabilities/intent-resolver.ts +8 -13
  126. package/src/capabilities/react-surface.tsx +22 -20
  127. package/src/capabilities/settings.ts +3 -3
  128. package/src/capabilities/state.ts +8 -8
  129. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +79 -0
  130. package/src/components/{MarkdownPreview/MarkdownPreview.tsx → MarkdownCard/MarkdownCard.tsx} +21 -17
  131. package/src/components/MarkdownCard/index.ts +9 -0
  132. package/src/components/MarkdownContainer.stories.tsx +10 -13
  133. package/src/components/MarkdownContainer.tsx +30 -16
  134. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +3 -2
  135. package/src/components/MarkdownEditor/MarkdownEditor.tsx +9 -8
  136. package/src/components/MarkdownSettings/MarkdownSettings.tsx +4 -4
  137. package/src/components/Suggestions.stories.tsx +27 -21
  138. package/src/components/Toolbar.stories.tsx +5 -6
  139. package/src/components/index.ts +1 -1
  140. package/src/events.ts +2 -2
  141. package/src/extensions.tsx +30 -26
  142. package/src/hooks/useSelectCurrentThread.tsx +3 -3
  143. package/src/index.ts +4 -1
  144. package/src/meta.ts +10 -8
  145. package/src/translations.ts +9 -7
  146. package/src/types/Markdown.ts +55 -0
  147. package/src/types/MarkdownAction.ts +31 -0
  148. package/src/types/index.ts +2 -1
  149. package/src/types/types.ts +6 -51
  150. package/src/util.tsx +20 -6
  151. package/dist/lib/browser/MarkdownContainer-EFWQ6DHD.mjs.map +0 -7
  152. package/dist/lib/browser/MarkdownPreview-F4PYFW5L.mjs.map +0 -7
  153. package/dist/lib/browser/anchor-sort-BMAN2ABT.mjs.map +0 -7
  154. package/dist/lib/browser/app-graph-serializer-EI6TEHRQ.mjs.map +0 -7
  155. package/dist/lib/browser/artifact-definition-FQ2R6KPT.mjs +0 -145
  156. package/dist/lib/browser/artifact-definition-FQ2R6KPT.mjs.map +0 -7
  157. package/dist/lib/browser/chunk-354IBM5X.mjs +0 -20
  158. package/dist/lib/browser/chunk-354IBM5X.mjs.map +0 -7
  159. package/dist/lib/browser/chunk-D767LUGU.mjs.map +0 -7
  160. package/dist/lib/browser/chunk-JX6XNEHE.mjs +0 -22
  161. package/dist/lib/browser/chunk-JX6XNEHE.mjs.map +0 -7
  162. package/dist/lib/browser/chunk-LXSRQPEP.mjs.map +0 -7
  163. package/dist/lib/browser/chunk-N2D26K6W.mjs +0 -79
  164. package/dist/lib/browser/chunk-N2D26K6W.mjs.map +0 -7
  165. package/dist/lib/browser/chunk-QVJETNGS.mjs +0 -16
  166. package/dist/lib/browser/chunk-QVJETNGS.mjs.map +0 -7
  167. package/dist/lib/browser/intent-resolver-6ZOABX2J.mjs.map +0 -7
  168. package/dist/lib/browser/react-surface-4B5ELMEW.mjs.map +0 -7
  169. package/dist/lib/browser/settings-PLH54VC7.mjs.map +0 -7
  170. package/dist/lib/browser/state-KI6PJ6DT.mjs.map +0 -7
  171. package/dist/lib/node/MarkdownContainer-KYGUEZIL.cjs +0 -783
  172. package/dist/lib/node/MarkdownContainer-KYGUEZIL.cjs.map +0 -7
  173. package/dist/lib/node/MarkdownPreview-GCJJCXY6.cjs +0 -103
  174. package/dist/lib/node/MarkdownPreview-GCJJCXY6.cjs.map +0 -7
  175. package/dist/lib/node/anchor-sort-V3T4SFFI.cjs +0 -48
  176. package/dist/lib/node/anchor-sort-V3T4SFFI.cjs.map +0 -7
  177. package/dist/lib/node/app-graph-serializer-E6BXEDEL.cjs +0 -65
  178. package/dist/lib/node/app-graph-serializer-E6BXEDEL.cjs.map +0 -7
  179. package/dist/lib/node/artifact-definition-U27MH5SC.cjs +0 -158
  180. package/dist/lib/node/artifact-definition-U27MH5SC.cjs.map +0 -7
  181. package/dist/lib/node/chunk-3HHV4MM6.cjs +0 -101
  182. package/dist/lib/node/chunk-3HHV4MM6.cjs.map +0 -7
  183. package/dist/lib/node/chunk-CJLYFGPI.cjs +0 -74
  184. package/dist/lib/node/chunk-CJLYFGPI.cjs.map +0 -7
  185. package/dist/lib/node/chunk-FU3XZZCO.cjs +0 -58
  186. package/dist/lib/node/chunk-FU3XZZCO.cjs.map +0 -7
  187. package/dist/lib/node/chunk-IFYSBQE5.cjs +0 -35
  188. package/dist/lib/node/chunk-IFYSBQE5.cjs.map +0 -7
  189. package/dist/lib/node/chunk-LQAC5HL7.cjs +0 -68
  190. package/dist/lib/node/chunk-LQAC5HL7.cjs.map +0 -7
  191. package/dist/lib/node/chunk-ZU5OIHCY.cjs +0 -45
  192. package/dist/lib/node/chunk-ZU5OIHCY.cjs.map +0 -7
  193. package/dist/lib/node/index.cjs +0 -165
  194. package/dist/lib/node/index.cjs.map +0 -7
  195. package/dist/lib/node/intent-resolver-OEFLRNEJ.cjs +0 -77
  196. package/dist/lib/node/intent-resolver-OEFLRNEJ.cjs.map +0 -7
  197. package/dist/lib/node/meta.json +0 -1
  198. package/dist/lib/node/react-surface-456HQ4KZ.cjs +0 -218
  199. package/dist/lib/node/react-surface-456HQ4KZ.cjs.map +0 -7
  200. package/dist/lib/node/settings-E3NUTXJ4.cjs +0 -42
  201. package/dist/lib/node/settings-E3NUTXJ4.cjs.map +0 -7
  202. package/dist/lib/node/state-KKDRAG7X.cjs +0 -51
  203. package/dist/lib/node/state-KKDRAG7X.cjs.map +0 -7
  204. package/dist/lib/node/types/index.cjs +0 -40
  205. package/dist/lib/node/types/index.cjs.map +0 -7
  206. package/dist/lib/node-esm/MarkdownContainer-O3SGMH4G.mjs.map +0 -7
  207. package/dist/lib/node-esm/MarkdownPreview-KFDRV4GC.mjs.map +0 -7
  208. package/dist/lib/node-esm/anchor-sort-BXL7BE67.mjs.map +0 -7
  209. package/dist/lib/node-esm/app-graph-serializer-F7DGNF3G.mjs.map +0 -7
  210. package/dist/lib/node-esm/artifact-definition-NQOHB6S5.mjs +0 -146
  211. package/dist/lib/node-esm/artifact-definition-NQOHB6S5.mjs.map +0 -7
  212. package/dist/lib/node-esm/chunk-BWDDFDJY.mjs.map +0 -7
  213. package/dist/lib/node-esm/chunk-JXXDCSMW.mjs +0 -17
  214. package/dist/lib/node-esm/chunk-JXXDCSMW.mjs.map +0 -7
  215. package/dist/lib/node-esm/chunk-K26TX5V4.mjs.map +0 -7
  216. package/dist/lib/node-esm/chunk-RX63ZNML.mjs +0 -24
  217. package/dist/lib/node-esm/chunk-RX63ZNML.mjs.map +0 -7
  218. package/dist/lib/node-esm/chunk-T2Y2BT53.mjs +0 -80
  219. package/dist/lib/node-esm/chunk-T2Y2BT53.mjs.map +0 -7
  220. package/dist/lib/node-esm/chunk-YOABAQ7A.mjs +0 -22
  221. package/dist/lib/node-esm/chunk-YOABAQ7A.mjs.map +0 -7
  222. package/dist/lib/node-esm/intent-resolver-CLMSVF2K.mjs.map +0 -7
  223. package/dist/lib/node-esm/react-surface-YHFOQTVO.mjs.map +0 -7
  224. package/dist/lib/node-esm/settings-SIY33P3F.mjs.map +0 -7
  225. package/dist/lib/node-esm/state-LLGVRYKL.mjs.map +0 -7
  226. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts +0 -6
  227. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts.map +0 -1
  228. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts +0 -17
  229. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts.map +0 -1
  230. package/dist/types/src/components/MarkdownPreview/index.d.ts +0 -4
  231. package/dist/types/src/components/MarkdownPreview/index.d.ts.map +0 -1
  232. package/dist/types/src/types/schema.d.ts +0 -35
  233. package/dist/types/src/types/schema.d.ts.map +0 -1
  234. package/src/components/MarkdownPreview/MarkdownPreview.stories.tsx +0 -74
  235. package/src/components/MarkdownPreview/index.ts +0 -9
  236. package/src/types/schema.ts +0 -39
@@ -1,62 +1,278 @@
1
- import "./chunk-354IBM5X.mjs";
1
+ import "./chunk-JHH7VL52.mjs";
2
2
  import {
3
3
  MarkdownCapabilities
4
- } from "./chunk-QVJETNGS.mjs";
4
+ } from "./chunk-LMJPXTPL.mjs";
5
5
  import {
6
6
  getFallbackName,
7
7
  setFallbackName
8
- } from "./chunk-LXSRQPEP.mjs";
8
+ } from "./chunk-JMBQG2ZC.mjs";
9
9
  import {
10
- DocumentType
11
- } from "./chunk-N2D26K6W.mjs";
10
+ Markdown_exports
11
+ } from "./chunk-JTIGSUMB.mjs";
12
12
  import {
13
- MARKDOWN_PLUGIN
14
- } from "./chunk-JX6XNEHE.mjs";
13
+ meta
14
+ } from "./chunk-IKPZHFTW.mjs";
15
15
 
16
- // packages/plugins/plugin-markdown/src/components/MarkdownContainer.tsx
16
+ // src/components/MarkdownContainer.tsx
17
17
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
18
18
  import { Rx } from "@effect-rx/rx-react";
19
19
  import React3, { useCallback as useCallback2, useEffect as useEffect2, useMemo as useMemo4, useState } from "react";
20
20
  import { createPortal } from "react-dom";
21
21
  import { Capabilities, Surface, useAppGraph, useCapabilities as useCapabilities2, usePluginManager } from "@dxos/app-framework";
22
- import { DXN, Filter, Obj, Query } from "@dxos/echo";
22
+ import { DXN, Filter, Obj, Query, Type } from "@dxos/echo";
23
+ import { ClientCapabilities } from "@dxos/plugin-client";
23
24
  import { SpaceCapabilities } from "@dxos/plugin-space";
24
25
  import { fullyQualifiedId as fullyQualifiedId2, getSpace as getSpace2, useQuery, useSpace } from "@dxos/react-client/echo";
25
26
  import { toLocalizedString as toLocalizedString2, useTranslation as useTranslation2 } from "@dxos/react-ui";
26
27
  import { insertAtCursor, insertAtLineStart } from "@dxos/react-ui-editor";
27
28
  import { DataType } from "@dxos/schema";
28
29
 
29
- // packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditor.tsx
30
+ // src/extensions.tsx
31
+ import React, { useMemo } from "react";
32
+ import { createRoot } from "react-dom/client";
33
+ import { LayoutAction, createIntent, useCapabilities, useIntentDispatcher } from "@dxos/app-framework";
34
+ import { debounceAndThrottle } from "@dxos/async";
35
+ import { invariant } from "@dxos/invariant";
36
+ import { createDocAccessor, fullyQualifiedId, getSpace } from "@dxos/react-client/echo";
37
+ import { useIdentity } from "@dxos/react-client/halo";
38
+ import { Icon, ThemeProvider } from "@dxos/react-ui";
39
+ import { Cursor, EditorView, InputModeExtensions, autocomplete, createDataExtensions, decorateMarkdown, documentId, folding, formattingKeymap, linkTooltip, listener, preview, selectionState, typewriter } from "@dxos/react-ui-editor";
40
+ import { defaultTx } from "@dxos/react-ui-theme";
41
+ import { isNotFalsy } from "@dxos/util";
42
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/extensions.tsx";
43
+ var useExtensions = ({ document, id, text, settings, selectionManager, viewMode, editorStateStore, previewOptions }) => {
44
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
45
+ const identity = useIdentity();
46
+ const space = getSpace(document) ?? getSpace(text);
47
+ const baseExtensions = useMemo(() => createBaseExtensions({
48
+ document,
49
+ id,
50
+ text,
51
+ settings,
52
+ selectionManager,
53
+ viewMode,
54
+ previewOptions,
55
+ dispatch
56
+ }), [
57
+ document,
58
+ id,
59
+ text,
60
+ viewMode,
61
+ dispatch,
62
+ previewOptions,
63
+ settings,
64
+ settings.editorInputMode,
65
+ settings.folding,
66
+ settings.numberedHeadings,
67
+ settings.debug,
68
+ settings.typewriter,
69
+ selectionManager
70
+ ]);
71
+ const extensionProviders = useCapabilities(MarkdownCapabilities.Extensions);
72
+ const pluginExtensions = useMemo(() => {
73
+ if (!document) {
74
+ return [];
75
+ }
76
+ return extensionProviders.flat().reduce((acc, provider) => {
77
+ const extension = typeof provider === "function" ? provider({
78
+ document
79
+ }) : provider;
80
+ if (extension) {
81
+ acc.push(extension);
82
+ }
83
+ return acc;
84
+ }, []);
85
+ }, [
86
+ extensionProviders,
87
+ document
88
+ ]);
89
+ return useMemo(() => [
90
+ // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
91
+ document && createDataExtensions({
92
+ id: document.id,
93
+ text: document.content.target && createDocAccessor(document.content.target, [
94
+ "content"
95
+ ]),
96
+ space,
97
+ identity
98
+ }),
99
+ text && id && createDataExtensions({
100
+ id,
101
+ text: createDocAccessor(text, [
102
+ "content"
103
+ ]),
104
+ space,
105
+ identity
106
+ }),
107
+ selectionState(editorStateStore),
108
+ document && listener({
109
+ onChange: (text2) => setFallbackName(document, text2)
110
+ }),
111
+ baseExtensions,
112
+ pluginExtensions
113
+ ].filter(isNotFalsy), [
114
+ baseExtensions,
115
+ pluginExtensions,
116
+ document,
117
+ document?.content?.target,
118
+ text,
119
+ id,
120
+ space,
121
+ identity
122
+ ]);
123
+ };
124
+ var createBaseExtensions = ({ document, id, dispatch, settings, selectionManager, query, viewMode, previewOptions }) => {
125
+ const extensions = [
126
+ selectionManager && selectionChange(selectionManager),
127
+ settings.editorInputMode && InputModeExtensions[settings.editorInputMode],
128
+ settings.folding && folding()
129
+ ].filter(isNotFalsy);
130
+ if (viewMode !== "source") {
131
+ extensions.push(...[
132
+ formattingKeymap(),
133
+ decorateMarkdown({
134
+ selectionChangeDelay: 100,
135
+ numberedHeadings: settings.numberedHeadings ? {
136
+ from: 2
137
+ } : void 0,
138
+ // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
139
+ renderLinkButton: dispatch && (document || id) ? createLinkRenderer((id2) => {
140
+ void dispatch(createIntent(LayoutAction.Open, {
141
+ part: "main",
142
+ subject: [
143
+ id2
144
+ ],
145
+ options: {
146
+ pivotId: document ? fullyQualifiedId(document) : id2
147
+ }
148
+ }));
149
+ }) : void 0
150
+ }),
151
+ linkTooltip(renderLinkTooltip),
152
+ preview(previewOptions)
153
+ ]);
154
+ }
155
+ if (query) {
156
+ extensions.push(autocomplete({
157
+ onSearch: (text) => {
158
+ return query.objects.map((object) => object.name?.length && object.id !== document?.id ? {
159
+ label: object.name,
160
+ // TODO(burdon): Factor out URL builder.
161
+ apply: `[${object.name}](/${fullyQualifiedId(object)})`
162
+ } : void 0).filter(isNotFalsy);
163
+ }
164
+ }));
165
+ }
166
+ if (settings.debug) {
167
+ const items = settings.typewriter?.split(/[,\n]/) ?? "";
168
+ if (items) {
169
+ extensions.push(typewriter({
170
+ items
171
+ }));
172
+ }
173
+ }
174
+ return extensions;
175
+ };
176
+ var selectionChange = (selectionManager) => {
177
+ return EditorView.updateListener.of(debounceAndThrottle((update) => {
178
+ if (update.selectionSet) {
179
+ const id = update.state.facet(documentId);
180
+ const cursorConverter = update.state.facet(Cursor.converter);
181
+ const selection = update.state.selection;
182
+ const ranges = selection.ranges.map((range) => ({
183
+ from: cursorConverter.toCursor(range.from),
184
+ to: cursorConverter.toCursor(range.to)
185
+ })).filter(({ from, to }) => to > from);
186
+ selectionManager.updateMultiRange(id, ranges);
187
+ }
188
+ }, 100));
189
+ };
190
+ var style = {
191
+ hover: "rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400",
192
+ icon: "inline-block leading-none mis-1 cursor-pointer"
193
+ };
194
+ var createLinkRenderer = (onSelectObject) => (el, { url }) => {
195
+ const isInternal = url.startsWith("/") || // TODO(wittjosiah): This should probably be parsed out on paste?
196
+ url.startsWith(window.location.origin);
197
+ const options = isInternal ? {
198
+ onClick: () => {
199
+ const qualifiedId = url.split("/").at(-1);
200
+ invariant(qualifiedId, "Invalid link format.", {
201
+ F: __dxlog_file,
202
+ L: 291,
203
+ S: void 0,
204
+ A: [
205
+ "qualifiedId",
206
+ "'Invalid link format.'"
207
+ ]
208
+ });
209
+ onSelectObject(qualifiedId);
210
+ }
211
+ } : {
212
+ href: url,
213
+ rel: "noreferrer",
214
+ target: "_blank"
215
+ };
216
+ renderRoot(el, /* @__PURE__ */ React.createElement("a", {
217
+ ...options,
218
+ className: style.hover
219
+ }, /* @__PURE__ */ React.createElement(Icon, {
220
+ icon: isInternal ? "ph--arrow-square-down--bold" : "ph--arrow-square-out--bold",
221
+ size: 4,
222
+ classNames: style.icon
223
+ })));
224
+ };
225
+ var renderLinkTooltip = (el, { url }) => {
226
+ const web = new URL(url);
227
+ renderRoot(el, /* @__PURE__ */ React.createElement("a", {
228
+ href: url,
229
+ rel: "noreferrer",
230
+ target: "_blank",
231
+ className: style.hover
232
+ }, web.origin, /* @__PURE__ */ React.createElement(Icon, {
233
+ icon: "ph--arrow-square-out--bold",
234
+ size: 4,
235
+ classNames: style.icon
236
+ })));
237
+ };
238
+ var renderRoot = (root, node) => {
239
+ createRoot(root).render(/* @__PURE__ */ React.createElement(ThemeProvider, {
240
+ tx: defaultTx
241
+ }, node));
242
+ return root;
243
+ };
244
+
245
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
30
246
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
31
- import React, { forwardRef, useMemo as useMemo2, useEffect, useCallback, useImperativeHandle, useRef } from "react";
247
+ import React2, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo as useMemo3, useRef } from "react";
32
248
  import { useDropzone } from "react-dropzone";
33
- import { invariant as invariant2 } from "@dxos/invariant";
249
+ import { invariant as invariant3 } from "@dxos/invariant";
34
250
  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";
251
+ import { CommandMenu, EditorToolbar, RefPopover, addLink, coreSlashCommands, createBasicExtensions, createElement, createMarkdownExtensions, createThemeExtensions, dropFile, editorGutter, editorSlots, filterItems, linkSlashCommands, processEditorPayload, stackItemContentEditorClassNames, useCommandMenu, useEditorToolbarState, useFormattingState, useTextEditor } from "@dxos/react-ui-editor";
36
252
  import { StackItem } from "@dxos/react-ui-stack";
37
- import { isNotFalsy, isNonNullable } from "@dxos/util";
253
+ import { isNonNullable, isNotFalsy as isNotFalsy2 } from "@dxos/util";
38
254
 
39
- // packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx
40
- import { EditorView } from "@codemirror/view";
255
+ // src/hooks/useSelectCurrentThread.tsx
256
+ import { EditorView as EditorView2 } from "@codemirror/view";
41
257
  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";
258
+ import { useMemo as useMemo2 } from "react";
259
+ import { LayoutAction as LayoutAction2, createResolver, useIntentResolver } from "@dxos/app-framework";
260
+ import { invariant as invariant2 } from "@dxos/invariant";
261
+ import { Cursor as Cursor2, setSelection } from "@dxos/react-ui-editor";
262
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx";
47
263
  var useSelectCurrentThread = (editorView, documentId2) => {
48
- const scrollIntoViewResolver = useMemo(() => createResolver({
49
- intent: LayoutAction.UpdateLayout,
264
+ const scrollIntoViewResolver = useMemo2(() => createResolver({
265
+ intent: LayoutAction2.UpdateLayout,
50
266
  position: "hoist",
51
267
  filter: (data) => {
52
- if (!Schema.is(LayoutAction.ScrollIntoView.fields.input)(data)) {
268
+ if (!Schema.is(LayoutAction2.ScrollIntoView.fields.input)(data)) {
53
269
  return false;
54
270
  }
55
271
  return !!editorView && data.subject === documentId2 && !!data.options?.cursor;
56
272
  },
57
273
  resolve: ({ options: { cursor } }) => {
58
- invariant(editorView, "Editor view is not defined.", {
59
- F: __dxlog_file,
274
+ invariant2(editorView, "Editor view is not defined.", {
275
+ F: __dxlog_file2,
60
276
  L: 32,
61
277
  S: void 0,
62
278
  A: [
@@ -64,14 +280,14 @@ var useSelectCurrentThread = (editorView, documentId2) => {
64
280
  "'Editor view is not defined.'"
65
281
  ]
66
282
  });
67
- const range = Cursor.getRangeFromCursor(editorView.state, cursor);
283
+ const range = Cursor2.getRangeFromCursor(editorView.state, cursor);
68
284
  if (range) {
69
285
  const selection = editorView.state.selection.main.from !== range.from ? {
70
286
  anchor: range.from
71
287
  } : void 0;
72
288
  const effects = [
73
289
  // NOTE: This does not use the DOM scrollIntoView function.
74
- EditorView.scrollIntoView(range.from, {
290
+ EditorView2.scrollIntoView(range.from, {
75
291
  y: "start",
76
292
  yMargin: 96
77
293
  })
@@ -93,11 +309,11 @@ var useSelectCurrentThread = (editorView, documentId2) => {
93
309
  documentId2,
94
310
  editorView
95
311
  ]);
96
- useIntentResolver(MARKDOWN_PLUGIN, scrollIntoViewResolver);
312
+ useIntentResolver(meta.id, scrollIntoViewResolver);
97
313
  };
98
314
 
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";
315
+ // src/components/MarkdownEditor/MarkdownEditor.tsx
316
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditor.tsx";
101
317
  var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery, ...props }) => {
102
318
  var _effect = _useSignals();
103
319
  try {
@@ -119,7 +335,7 @@ var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery
119
335
  onLinkQuery,
120
336
  slashCommandGroups
121
337
  ]);
122
- const options = useMemo2(() => {
338
+ const options = useMemo3(() => {
123
339
  const trigger = onLinkQuery ? [
124
340
  "/",
125
341
  "@"
@@ -152,21 +368,21 @@ var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery
152
368
  getMenu
153
369
  ]);
154
370
  const { commandMenu, groupsRef, currentItem, onSelect, ...refPopoverProps } = useCommandMenu(options);
155
- const extensions = useMemo2(() => [
371
+ const extensions = useMemo3(() => [
156
372
  _extensions,
157
373
  commandMenu
158
- ].filter(isNotFalsy), [
374
+ ].filter(isNotFalsy2), [
159
375
  _extensions,
160
376
  commandMenu
161
377
  ]);
162
- return /* @__PURE__ */ React.createElement(RefPopover, {
378
+ return /* @__PURE__ */ React2.createElement(RefPopover, {
163
379
  modal: false,
164
380
  ...refPopoverProps
165
- }, /* @__PURE__ */ React.createElement(MarkdownEditorImpl, {
381
+ }, /* @__PURE__ */ React2.createElement(MarkdownEditorImpl, {
166
382
  ref: viewRef,
167
383
  ...props,
168
384
  extensions
169
- }), /* @__PURE__ */ React.createElement(CommandMenu, {
385
+ }), /* @__PURE__ */ React2.createElement(CommandMenu, {
170
386
  groups: groupsRef.current,
171
387
  currentItem,
172
388
  onSelect
@@ -178,16 +394,16 @@ var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery
178
394
  var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", initialValue, customActions, editorStateStore, extensions, extensionProviders, scrollPastEnd, toolbar, viewMode, onFileUpload, onViewModeChange }, forwardedRef) => {
179
395
  var _effect = _useSignals();
180
396
  try {
181
- const { t } = useTranslation(MARKDOWN_PLUGIN);
397
+ const { t } = useTranslation(meta.id);
182
398
  const { themeMode } = useThemeContext();
183
399
  const toolbarState = useEditorToolbarState({
184
400
  viewMode
185
401
  });
186
402
  const formattingObserver = useFormattingState(toolbarState);
187
- const { scrollTo, selection } = useMemo2(() => editorStateStore?.getState(id) ?? {}, [
403
+ const { scrollTo, selection } = useMemo3(() => editorStateStore?.getState(id) ?? {}, [
188
404
  id
189
405
  ]);
190
- const providerExtensions = useMemo2(() => extensionProviders?.flatMap((provider) => provider({})).filter(isNonNullable), [
406
+ const providerExtensions = useMemo3(() => extensionProviders?.flatMap((provider) => provider({})).filter(isNonNullable), [
191
407
  extensionProviders
192
408
  ]);
193
409
  const handleDrop = async (view, { files }) => {
@@ -207,7 +423,8 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
207
423
  createBasicExtensions({
208
424
  readOnly: viewMode === "readonly",
209
425
  placeholder: t("editor placeholder"),
210
- scrollPastEnd: role === "section" ? false : scrollPastEnd
426
+ scrollPastEnd: role === "section" ? false : scrollPastEnd,
427
+ search: true
211
428
  }),
212
429
  createMarkdownExtensions({
213
430
  themeMode
@@ -223,7 +440,7 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
223
440
  }),
224
441
  providerExtensions,
225
442
  extensions
226
- ].filter(isNotFalsy),
443
+ ].filter(isNotFalsy2),
227
444
  ...role !== "section" && {
228
445
  id,
229
446
  scrollTo,
@@ -282,9 +499,9 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
282
499
  onFileUpload
283
500
  ]);
284
501
  const getView = useCallback(() => {
285
- invariant2(editorView, void 0, {
286
- F: __dxlog_file2,
287
- L: 240,
502
+ invariant3(editorView, void 0, {
503
+ F: __dxlog_file3,
504
+ L: 241,
288
505
  S: void 0,
289
506
  A: [
290
507
  "editorView",
@@ -306,9 +523,9 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
306
523
  }, [
307
524
  onFileUpload
308
525
  ]);
309
- return /* @__PURE__ */ React.createElement(StackItem.Content, {
526
+ return /* @__PURE__ */ React2.createElement(StackItem.Content, {
310
527
  toolbar: !!toolbar
311
- }, toolbar && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(EditorToolbar, {
528
+ }, toolbar && /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(EditorToolbar, {
312
529
  attendableId: id,
313
530
  role,
314
531
  state: toolbarState,
@@ -316,7 +533,7 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
316
533
  getView,
317
534
  image: handleImageUpload,
318
535
  viewMode: handleViewModeChange
319
- }), /* @__PURE__ */ React.createElement("input", getInputProps())), /* @__PURE__ */ React.createElement("div", {
536
+ }), /* @__PURE__ */ React2.createElement("input", getInputProps())), /* @__PURE__ */ React2.createElement("div", {
320
537
  role: "none",
321
538
  ref: parentRef,
322
539
  "data-testid": "composer.markdownRoot",
@@ -340,227 +557,13 @@ var useTest = (view) => {
340
557
  ]);
341
558
  };
342
559
 
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
560
+ // src/components/MarkdownContainer.tsx
558
561
  var MarkdownContainer = ({ id, role, object, settings, selectionManager, viewMode, editorStateStore, onViewModeChange }) => {
559
562
  var _effect = _useSignals2();
560
563
  try {
561
564
  const { t } = useTranslation2();
562
565
  const scrollPastEnd = role === "article";
563
- const doc = Obj.instanceOf(DocumentType, object) ? object : void 0;
566
+ const doc = Obj.instanceOf(Markdown_exports.Document, object) ? object : void 0;
564
567
  const text = Obj.instanceOf(DataType.Text, object) ? object : void 0;
565
568
  const [previewBlocks, setPreviewBlocks] = useState([]);
566
569
  const previewOptions = useMemo4(() => ({
@@ -593,16 +596,22 @@ var MarkdownContainer = ({ id, role, object, settings, selectionManager, viewMod
593
596
  ]);
594
597
  const space = getSpace2(object);
595
598
  const objectForms = useCapabilities2(SpaceCapabilities.ObjectForm);
596
- const filter = useMemo4(() => Filter.or(...objectForms.map((form) => Filter.type(form.objectSchema))), [
597
- objectForms
599
+ const schemaWhiteList = useCapabilities2(ClientCapabilities.SchemaWhiteList);
600
+ const filter = useMemo4(() => Filter.or(...objectForms.map((form) => Filter.type(form.objectSchema)), ...schemaWhiteList.flat().map((schema) => Filter.typename(Type.getTypename(schema)))), [
601
+ objectForms,
602
+ schemaWhiteList
598
603
  ]);
599
604
  const onLinkQuery = useCallback2(async (query) => {
600
605
  const name = query?.startsWith("@") ? query.slice(1).toLowerCase() : query?.toLowerCase() ?? "";
601
606
  const results = await space?.db.query(Query.select(filter)).run();
602
607
  const getLabel = (object2) => {
608
+ const label = Obj.getLabel(object2);
609
+ if (label) {
610
+ return label;
611
+ }
603
612
  const type = Obj.getTypename(object2);
604
613
  const metadata = resolve(type);
605
- return metadata.label?.(object2) || object2.name || [
614
+ return metadata.label?.(object2) || [
606
615
  "object name placeholder",
607
616
  {
608
617
  ns: type,
@@ -698,7 +707,7 @@ var PreviewBlock = ({ link, el }) => {
698
707
  subject
699
708
  ]);
700
709
  return /* @__PURE__ */ createPortal(/* @__PURE__ */ React3.createElement(Surface, {
701
- role: "card--document",
710
+ role: "card--transclusion",
702
711
  data,
703
712
  limit: 1
704
713
  }), el);
@@ -765,6 +774,7 @@ var DocumentEditor = ({ id, document: doc, settings, viewMode, ...props }) => {
765
774
  var MarkdownContainer_default = MarkdownContainer;
766
775
  export {
767
776
  DocumentEditor,
777
+ MarkdownContainer,
768
778
  MarkdownContainer_default as default
769
779
  };
770
- //# sourceMappingURL=MarkdownContainer-EFWQ6DHD.mjs.map
780
+ //# sourceMappingURL=MarkdownContainer-VGJPHMVG.mjs.map