@dxos/plugin-markdown 0.8.4-main.c1de068 → 0.8.4-main.e098934

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 (235) hide show
  1. package/dist/lib/browser/{MarkdownPreview-S3C7CGAV.mjs → MarkdownCard-JLUQITYK.mjs} +16 -16
  2. package/dist/lib/browser/MarkdownCard-JLUQITYK.mjs.map +7 -0
  3. package/dist/lib/browser/{MarkdownContainer-F3WEEIBX.mjs → MarkdownContainer-HMPNQMNG.mjs} +260 -287
  4. package/dist/lib/browser/MarkdownContainer-HMPNQMNG.mjs.map +7 -0
  5. package/dist/lib/browser/{anchor-sort-UKJJ7ZNP.mjs → anchor-sort-E33BSTYF.mjs} +5 -5
  6. package/dist/lib/browser/anchor-sort-E33BSTYF.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-serializer-ICLAF662.mjs → app-graph-serializer-OX62DNPT.mjs} +10 -11
  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-LFML7LC6.mjs → chunk-LAVZ2W6X.mjs} +8 -9
  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-LHDCHDBW.mjs → chunk-Z7P6JGGW.mjs} +6 -5
  24. package/dist/lib/browser/chunk-Z7P6JGGW.mjs.map +7 -0
  25. package/dist/lib/browser/index.mjs +34 -21
  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-C3Z423TV.mjs → react-surface-NY5K2I5R.mjs} +53 -44
  31. package/dist/lib/browser/react-surface-NY5K2I5R.mjs.map +7 -0
  32. package/dist/lib/browser/{settings-KN75ZQY6.mjs → settings-AABBTB4Q.mjs} +5 -5
  33. package/dist/lib/browser/settings-AABBTB4Q.mjs.map +7 -0
  34. package/dist/lib/browser/{state-LZWTAS65.mjs → state-FTHQQX7V.mjs} +7 -7
  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-77UFEWXT.mjs → MarkdownCard-XL5EVSJ7.mjs} +16 -16
  40. package/dist/lib/node-esm/MarkdownCard-XL5EVSJ7.mjs.map +7 -0
  41. package/dist/lib/node-esm/{MarkdownContainer-VOUHL6IU.mjs → MarkdownContainer-5FTROSXN.mjs} +260 -287
  42. package/dist/lib/node-esm/MarkdownContainer-5FTROSXN.mjs.map +7 -0
  43. package/dist/lib/node-esm/{anchor-sort-IPIS5D5B.mjs → anchor-sort-ALP2NH24.mjs} +5 -5
  44. package/dist/lib/node-esm/anchor-sort-ALP2NH24.mjs.map +7 -0
  45. package/dist/lib/node-esm/{app-graph-serializer-FLBXQKKR.mjs → app-graph-serializer-56TD3BMX.mjs} +10 -11
  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-ACFGXH2K.mjs → chunk-CB2R4YIY.mjs} +5 -5
  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-VIR2ABYE.mjs → chunk-J7A6TUB2.mjs} +6 -5
  56. package/dist/lib/node-esm/chunk-J7A6TUB2.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-CWTFQSN7.mjs → chunk-O6EXWGGS.mjs} +8 -9
  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 +34 -21
  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-TTTBYNI2.mjs → react-surface-AUWSLYJS.mjs} +53 -44
  69. package/dist/lib/node-esm/react-surface-AUWSLYJS.mjs.map +7 -0
  70. package/dist/lib/node-esm/{settings-KVP7TVX7.mjs → settings-CXGR6DH4.mjs} +5 -5
  71. package/dist/lib/node-esm/settings-CXGR6DH4.mjs.map +7 -0
  72. package/dist/lib/node-esm/{state-NW3W4JCQ.mjs → state-NWMQ3XAI.mjs} +7 -7
  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 +2 -2
  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 +3 -2
  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 +3 -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 +49 -44
  147. package/src/MarkdownPlugin.tsx +21 -12
  148. package/src/capabilities/anchor-sort.ts +3 -3
  149. package/src/capabilities/app-graph-serializer.ts +7 -5
  150. package/src/capabilities/artifact-definition.ts +18 -23
  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 +21 -19
  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} +11 -9
  161. package/src/components/MarkdownCard/index.ts +9 -0
  162. package/src/components/MarkdownContainer.stories.tsx +12 -15
  163. package/src/components/MarkdownContainer.tsx +11 -10
  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 +25 -28
  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 +10 -38
  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 +3 -2
  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 +6 -50
  183. package/src/util.tsx +20 -6
  184. package/dist/lib/browser/MarkdownContainer-F3WEEIBX.mjs.map +0 -7
  185. package/dist/lib/browser/MarkdownPreview-S3C7CGAV.mjs.map +0 -7
  186. package/dist/lib/browser/anchor-sort-UKJJ7ZNP.mjs.map +0 -7
  187. package/dist/lib/browser/app-graph-serializer-ICLAF662.mjs.map +0 -7
  188. package/dist/lib/browser/artifact-definition-R2YYWOPN.mjs +0 -145
  189. package/dist/lib/browser/artifact-definition-R2YYWOPN.mjs.map +0 -7
  190. package/dist/lib/browser/chunk-777RIED6.mjs +0 -16
  191. package/dist/lib/browser/chunk-777RIED6.mjs.map +0 -7
  192. package/dist/lib/browser/chunk-EPTSAJZM.mjs +0 -22
  193. package/dist/lib/browser/chunk-EPTSAJZM.mjs.map +0 -7
  194. package/dist/lib/browser/chunk-LFML7LC6.mjs.map +0 -7
  195. package/dist/lib/browser/chunk-LHDCHDBW.mjs.map +0 -7
  196. package/dist/lib/browser/chunk-PHTD5DTR.mjs +0 -20
  197. package/dist/lib/browser/chunk-PHTD5DTR.mjs.map +0 -7
  198. package/dist/lib/browser/chunk-UANWRJZU.mjs +0 -79
  199. package/dist/lib/browser/chunk-UANWRJZU.mjs.map +0 -7
  200. package/dist/lib/browser/intent-resolver-3MXYO3MW.mjs +0 -64
  201. package/dist/lib/browser/intent-resolver-3MXYO3MW.mjs.map +0 -7
  202. package/dist/lib/browser/react-surface-C3Z423TV.mjs.map +0 -7
  203. package/dist/lib/browser/settings-KN75ZQY6.mjs.map +0 -7
  204. package/dist/lib/browser/state-LZWTAS65.mjs.map +0 -7
  205. package/dist/lib/node-esm/MarkdownContainer-VOUHL6IU.mjs.map +0 -7
  206. package/dist/lib/node-esm/MarkdownPreview-77UFEWXT.mjs.map +0 -7
  207. package/dist/lib/node-esm/anchor-sort-IPIS5D5B.mjs.map +0 -7
  208. package/dist/lib/node-esm/app-graph-serializer-FLBXQKKR.mjs.map +0 -7
  209. package/dist/lib/node-esm/artifact-definition-MLTAY4LK.mjs +0 -146
  210. package/dist/lib/node-esm/artifact-definition-MLTAY4LK.mjs.map +0 -7
  211. package/dist/lib/node-esm/chunk-7X6TPTJK.mjs +0 -22
  212. package/dist/lib/node-esm/chunk-7X6TPTJK.mjs.map +0 -7
  213. package/dist/lib/node-esm/chunk-ACFGXH2K.mjs.map +0 -7
  214. package/dist/lib/node-esm/chunk-CWTFQSN7.mjs.map +0 -7
  215. package/dist/lib/node-esm/chunk-CXG7GMYP.mjs +0 -24
  216. package/dist/lib/node-esm/chunk-CXG7GMYP.mjs.map +0 -7
  217. package/dist/lib/node-esm/chunk-JEEQLO7C.mjs +0 -80
  218. package/dist/lib/node-esm/chunk-JEEQLO7C.mjs.map +0 -7
  219. package/dist/lib/node-esm/chunk-VIR2ABYE.mjs.map +0 -7
  220. package/dist/lib/node-esm/intent-resolver-BZYWV53A.mjs +0 -65
  221. package/dist/lib/node-esm/intent-resolver-BZYWV53A.mjs.map +0 -7
  222. package/dist/lib/node-esm/react-surface-TTTBYNI2.mjs.map +0 -7
  223. package/dist/lib/node-esm/settings-KVP7TVX7.mjs.map +0 -7
  224. package/dist/lib/node-esm/state-NW3W4JCQ.mjs.map +0 -7
  225. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts +0 -6
  226. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts.map +0 -1
  227. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts +0 -42
  228. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts.map +0 -1
  229. package/dist/types/src/components/MarkdownPreview/index.d.ts +0 -4
  230. package/dist/types/src/components/MarkdownPreview/index.d.ts.map +0 -1
  231. package/dist/types/src/types/schema.d.ts +0 -35
  232. package/dist/types/src/types/schema.d.ts.map +0 -1
  233. package/src/components/MarkdownPreview/MarkdownPreview.stories.tsx +0 -81
  234. package/src/components/MarkdownPreview/index.ts +0 -9
  235. package/src/types/schema.ts +0 -39
@@ -1,17 +1,18 @@
1
- import "./chunk-PHTD5DTR.mjs";
1
+ import "./chunk-XE66SH4O.mjs";
2
+ import "./chunk-F6JJLKLN.mjs";
2
3
  import {
3
4
  MarkdownCapabilities
4
- } from "./chunk-777RIED6.mjs";
5
+ } from "./chunk-OY6CGPOO.mjs";
5
6
  import {
6
7
  getFallbackName,
7
8
  setFallbackName
8
- } from "./chunk-LFML7LC6.mjs";
9
+ } from "./chunk-LAVZ2W6X.mjs";
9
10
  import {
10
- DocumentType
11
- } from "./chunk-UANWRJZU.mjs";
11
+ Markdown_exports
12
+ } from "./chunk-BEE7VQPU.mjs";
12
13
  import {
13
- MARKDOWN_PLUGIN
14
- } from "./chunk-EPTSAJZM.mjs";
14
+ meta
15
+ } from "./chunk-ODB2PTBP.mjs";
15
16
 
16
17
  // src/components/MarkdownContainer.tsx
17
18
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
@@ -27,37 +28,241 @@ import { toLocalizedString as toLocalizedString2, useTranslation as useTranslati
27
28
  import { insertAtCursor, insertAtLineStart } from "@dxos/react-ui-editor";
28
29
  import { DataType } from "@dxos/schema";
29
30
 
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
+
30
235
  // src/components/MarkdownEditor/MarkdownEditor.tsx
31
236
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
32
- 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";
33
238
  import { useDropzone } from "react-dropzone";
34
- import { invariant as invariant2 } from "@dxos/invariant";
239
+ import { invariant as invariant3 } from "@dxos/invariant";
35
240
  import { toLocalizedString, useThemeContext, useTranslation } from "@dxos/react-ui";
36
- import { CommandMenu, EditorToolbar, RefPopover, addLink, createElement, coreSlashCommands, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, editorGutter, editorSlots, filterItems, linkSlashCommands, processEditorPayload, stackItemContentEditorClassNames, useEditorToolbarState, useFormattingState, useTextEditor, useCommandMenu } from "@dxos/react-ui-editor";
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";
37
242
  import { StackItem } from "@dxos/react-ui-stack";
38
- import { isNotFalsy, isNonNullable } from "@dxos/util";
243
+ import { isNonNullable, isNotFalsy as isNotFalsy2 } from "@dxos/util";
39
244
 
40
245
  // src/hooks/useSelectCurrentThread.tsx
41
- import { EditorView } from "@codemirror/view";
246
+ import { EditorView as EditorView2 } from "@codemirror/view";
42
247
  import { Schema } from "effect";
43
- import { useMemo } from "react";
44
- import { createResolver, LayoutAction, useIntentResolver } from "@dxos/app-framework";
45
- import { invariant } from "@dxos/invariant";
46
- import { Cursor, setSelection } from "@dxos/react-ui-editor";
47
- var __dxlog_file = "/__w/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";
48
253
  var useSelectCurrentThread = (editorView, documentId2) => {
49
- const scrollIntoViewResolver = useMemo(() => createResolver({
50
- intent: LayoutAction.UpdateLayout,
254
+ const scrollIntoViewResolver = useMemo2(() => createResolver({
255
+ intent: LayoutAction2.UpdateLayout,
51
256
  position: "hoist",
52
257
  filter: (data) => {
53
- if (!Schema.is(LayoutAction.ScrollIntoView.fields.input)(data)) {
258
+ if (!Schema.is(LayoutAction2.ScrollIntoView.fields.input)(data)) {
54
259
  return false;
55
260
  }
56
261
  return !!editorView && data.subject === documentId2 && !!data.options?.cursor;
57
262
  },
58
263
  resolve: ({ options: { cursor } }) => {
59
- invariant(editorView, "Editor view is not defined.", {
60
- F: __dxlog_file,
264
+ invariant2(editorView, "Editor view is not defined.", {
265
+ F: __dxlog_file2,
61
266
  L: 32,
62
267
  S: void 0,
63
268
  A: [
@@ -65,14 +270,14 @@ var useSelectCurrentThread = (editorView, documentId2) => {
65
270
  "'Editor view is not defined.'"
66
271
  ]
67
272
  });
68
- const range = Cursor.getRangeFromCursor(editorView.state, cursor);
273
+ const range = Cursor2.getRangeFromCursor(editorView.state, cursor);
69
274
  if (range) {
70
275
  const selection = editorView.state.selection.main.from !== range.from ? {
71
276
  anchor: range.from
72
277
  } : void 0;
73
278
  const effects = [
74
279
  // NOTE: This does not use the DOM scrollIntoView function.
75
- EditorView.scrollIntoView(range.from, {
280
+ EditorView2.scrollIntoView(range.from, {
76
281
  y: "start",
77
282
  yMargin: 96
78
283
  })
@@ -94,12 +299,12 @@ var useSelectCurrentThread = (editorView, documentId2) => {
94
299
  documentId2,
95
300
  editorView
96
301
  ]);
97
- useIntentResolver(MARKDOWN_PLUGIN, scrollIntoViewResolver);
302
+ useIntentResolver(meta.id, scrollIntoViewResolver);
98
303
  };
99
304
 
100
305
  // src/components/MarkdownEditor/MarkdownEditor.tsx
101
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditor.tsx";
102
- var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery, ...props }) => {
306
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditor.tsx";
307
+ var MarkdownEditor = ({ extensions: extensionsParam, slashCommandGroups, onLinkQuery, ...props }) => {
103
308
  var _effect = _useSignals();
104
309
  try {
105
310
  const { t } = useTranslation();
@@ -120,7 +325,7 @@ var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery
120
325
  onLinkQuery,
121
326
  slashCommandGroups
122
327
  ]);
123
- const options = useMemo2(() => {
328
+ const options = useMemo3(() => {
124
329
  const trigger = onLinkQuery ? [
125
330
  "/",
126
331
  "@"
@@ -132,45 +337,28 @@ var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery
132
337
  trigger,
133
338
  placeholder: {
134
339
  delay: 3e3,
135
- content: () => {
136
- return createElement("div", void 0, [
137
- createElement("span", {
138
- text: "Press"
139
- }),
140
- ...trigger.map((text) => createElement("span", {
141
- className: "border border-separator rounded-sm mx-1 px-1.5 pt-[1px] pb-[2px]",
142
- text
143
- })),
144
- createElement("span", {
145
- text: "for commands."
146
- })
147
- ]);
148
- }
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()
149
341
  },
150
342
  getMenu
151
343
  };
152
344
  }, [
153
345
  getMenu
154
346
  ]);
155
- const { commandMenu, groupsRef, currentItem, onSelect, ...refPopoverProps } = useCommandMenu(options);
156
- const extensions = useMemo2(() => [
157
- _extensions,
347
+ const { commandMenu, groupsRef, ...commandMenuProps } = useCommandMenu(options);
348
+ const extensions = useMemo3(() => [
349
+ extensionsParam,
158
350
  commandMenu
159
- ].filter(isNotFalsy), [
160
- _extensions,
351
+ ].filter(isNotFalsy2), [
352
+ extensionsParam,
161
353
  commandMenu
162
354
  ]);
163
- return /* @__PURE__ */ React.createElement(RefPopover, {
164
- modal: false,
165
- ...refPopoverProps
166
- }, /* @__PURE__ */ React.createElement(MarkdownEditorImpl, {
355
+ return /* @__PURE__ */ React2.createElement(CommandMenuProvider, {
356
+ groups: groupsRef.current,
357
+ ...commandMenuProps
358
+ }, /* @__PURE__ */ React2.createElement(MarkdownEditorImpl, {
167
359
  ref: viewRef,
168
360
  ...props,
169
361
  extensions
170
- }), /* @__PURE__ */ React.createElement(CommandMenu, {
171
- groups: groupsRef.current,
172
- currentItem,
173
- onSelect
174
362
  }));
175
363
  } finally {
176
364
  _effect.f();
@@ -179,16 +367,16 @@ var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery
179
367
  var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", initialValue, customActions, editorStateStore, extensions, extensionProviders, scrollPastEnd, toolbar, viewMode, onFileUpload, onViewModeChange }, forwardedRef) => {
180
368
  var _effect = _useSignals();
181
369
  try {
182
- const { t } = useTranslation(MARKDOWN_PLUGIN);
370
+ const { t } = useTranslation(meta.id);
183
371
  const { themeMode } = useThemeContext();
184
372
  const toolbarState = useEditorToolbarState({
185
373
  viewMode
186
374
  });
187
375
  const formattingObserver = useFormattingState(toolbarState);
188
- const { scrollTo, selection } = useMemo2(() => editorStateStore?.getState(id) ?? {}, [
376
+ const { scrollTo, selection } = useMemo3(() => editorStateStore?.getState(id) ?? {}, [
189
377
  id
190
378
  ]);
191
- const providerExtensions = useMemo2(() => extensionProviders?.flatMap((provider) => provider({})).filter(isNonNullable), [
379
+ const providerExtensions = useMemo3(() => extensionProviders?.flatMap((provider) => provider({})).filter(isNonNullable), [
192
380
  extensionProviders
193
381
  ]);
194
382
  const handleDrop = async (view, { files }) => {
@@ -208,11 +396,10 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
208
396
  createBasicExtensions({
209
397
  readOnly: viewMode === "readonly",
210
398
  placeholder: t("editor placeholder"),
211
- scrollPastEnd: role === "section" ? false : scrollPastEnd
212
- }),
213
- createMarkdownExtensions({
214
- themeMode
399
+ scrollPastEnd: role === "section" ? false : scrollPastEnd,
400
+ search: true
215
401
  }),
402
+ createMarkdownExtensions(),
216
403
  createThemeExtensions({
217
404
  themeMode,
218
405
  syntaxHighlighting: true,
@@ -224,7 +411,7 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
224
411
  }),
225
412
  providerExtensions,
226
413
  extensions
227
- ].filter(isNotFalsy),
414
+ ].filter(isNotFalsy2),
228
415
  ...role !== "section" && {
229
416
  id,
230
417
  scrollTo,
@@ -283,9 +470,9 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
283
470
  onFileUpload
284
471
  ]);
285
472
  const getView = useCallback(() => {
286
- invariant2(editorView, void 0, {
287
- F: __dxlog_file2,
288
- L: 240,
473
+ invariant3(editorView, void 0, {
474
+ F: __dxlog_file3,
475
+ L: 238,
289
476
  S: void 0,
290
477
  A: [
291
478
  "editorView",
@@ -307,9 +494,9 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
307
494
  }, [
308
495
  onFileUpload
309
496
  ]);
310
- return /* @__PURE__ */ React.createElement(StackItem.Content, {
497
+ return /* @__PURE__ */ React2.createElement(StackItem.Content, {
311
498
  toolbar: !!toolbar
312
- }, toolbar && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(EditorToolbar, {
499
+ }, toolbar && /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(EditorToolbar, {
313
500
  attendableId: id,
314
501
  role,
315
502
  state: toolbarState,
@@ -317,7 +504,7 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
317
504
  getView,
318
505
  image: handleImageUpload,
319
506
  viewMode: handleViewModeChange
320
- }), /* @__PURE__ */ React.createElement("input", getInputProps())), /* @__PURE__ */ React.createElement("div", {
507
+ }), /* @__PURE__ */ React2.createElement("input", getInputProps())), /* @__PURE__ */ React2.createElement("div", {
321
508
  role: "none",
322
509
  ref: parentRef,
323
510
  "data-testid": "composer.markdownRoot",
@@ -341,228 +528,13 @@ var useTest = (view) => {
341
528
  ]);
342
529
  };
343
530
 
344
- // src/extensions.tsx
345
- import React2, { useMemo as useMemo3 } from "react";
346
- import { createRoot } from "react-dom/client";
347
- import { createIntent, LayoutAction as LayoutAction2, useCapabilities, useIntentDispatcher } from "@dxos/app-framework";
348
- import { debounceAndThrottle } from "@dxos/async";
349
- import { invariant as invariant3 } from "@dxos/invariant";
350
- import { createDocAccessor, fullyQualifiedId, getSpace } from "@dxos/react-client/echo";
351
- import { useIdentity } from "@dxos/react-client/halo";
352
- import { Icon, ThemeProvider } from "@dxos/react-ui";
353
- import { InputModeExtensions, createDataExtensions, autocomplete, decorateMarkdown, folding, formattingKeymap, linkTooltip, listener, preview, selectionState, typewriter, EditorView as EditorView2, documentId, Cursor as Cursor2 } from "@dxos/react-ui-editor";
354
- import { defaultTx } from "@dxos/react-ui-theme";
355
- import { isNotFalsy as isNotFalsy2 } from "@dxos/util";
356
- var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/extensions.tsx";
357
- var useExtensions = ({ document, id, text, settings, selectionManager, viewMode, editorStateStore, previewOptions }) => {
358
- const { dispatchPromise: dispatch } = useIntentDispatcher();
359
- const identity = useIdentity();
360
- const space = getSpace(document) ?? getSpace(text);
361
- const baseExtensions = useMemo3(() => createBaseExtensions({
362
- document,
363
- id,
364
- text,
365
- settings,
366
- selectionManager,
367
- viewMode,
368
- previewOptions,
369
- dispatch
370
- }), [
371
- document,
372
- id,
373
- text,
374
- viewMode,
375
- dispatch,
376
- previewOptions,
377
- settings,
378
- settings.editorInputMode,
379
- settings.folding,
380
- settings.numberedHeadings,
381
- settings.debug,
382
- settings.typewriter,
383
- selectionManager
384
- ]);
385
- const extensionProviders = useCapabilities(MarkdownCapabilities.Extensions);
386
- const pluginExtensions = useMemo3(() => {
387
- if (!document) {
388
- return [];
389
- }
390
- return extensionProviders.flat().reduce((acc, provider) => {
391
- const extension = typeof provider === "function" ? provider({
392
- document
393
- }) : provider;
394
- if (extension) {
395
- acc.push(extension);
396
- }
397
- return acc;
398
- }, []);
399
- }, [
400
- extensionProviders,
401
- document
402
- ]);
403
- return useMemo3(() => [
404
- // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
405
- document && createDataExtensions({
406
- id: document.id,
407
- text: document.content.target && createDocAccessor(document.content.target, [
408
- "content"
409
- ]),
410
- space,
411
- identity
412
- }),
413
- text && id && createDataExtensions({
414
- id,
415
- text: createDocAccessor(text, [
416
- "content"
417
- ]),
418
- space,
419
- identity
420
- }),
421
- selectionState(editorStateStore),
422
- document && listener({
423
- onChange: (text2) => setFallbackName(document, text2)
424
- }),
425
- baseExtensions,
426
- pluginExtensions
427
- ].filter(isNotFalsy2), [
428
- baseExtensions,
429
- pluginExtensions,
430
- document,
431
- document?.content?.target,
432
- text,
433
- id,
434
- space,
435
- identity
436
- ]);
437
- };
438
- var createBaseExtensions = ({ document, id, dispatch, settings, selectionManager, query, viewMode, previewOptions }) => {
439
- const extensions = [
440
- selectionManager && selectionChange(selectionManager),
441
- settings.editorInputMode && InputModeExtensions[settings.editorInputMode],
442
- settings.folding && folding()
443
- ].filter(isNotFalsy2);
444
- if (viewMode !== "source") {
445
- extensions.push(...[
446
- formattingKeymap(),
447
- decorateMarkdown({
448
- selectionChangeDelay: 100,
449
- numberedHeadings: settings.numberedHeadings ? {
450
- from: 2
451
- } : void 0,
452
- // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
453
- renderLinkButton: dispatch && (document || id) ? createLinkRenderer((id2) => {
454
- void dispatch(createIntent(LayoutAction2.Open, {
455
- part: "main",
456
- subject: [
457
- id2
458
- ],
459
- options: {
460
- pivotId: document ? fullyQualifiedId(document) : id2
461
- }
462
- }));
463
- }) : void 0
464
- }),
465
- linkTooltip(renderLinkTooltip),
466
- preview(previewOptions)
467
- ]);
468
- }
469
- if (query) {
470
- extensions.push(autocomplete({
471
- onSearch: (text) => {
472
- return query.objects.map((object) => object.name?.length && object.id !== document?.id ? {
473
- label: object.name,
474
- // TODO(burdon): Factor out URL builder.
475
- apply: `[${object.name}](/${fullyQualifiedId(object)})`
476
- } : void 0).filter(isNotFalsy2);
477
- }
478
- }));
479
- }
480
- if (settings.debug) {
481
- const items = settings.typewriter?.split(/[,\n]/) ?? "";
482
- if (items) {
483
- extensions.push(typewriter({
484
- items
485
- }));
486
- }
487
- }
488
- return extensions;
489
- };
490
- var selectionChange = (selectionManager) => {
491
- return EditorView2.updateListener.of(debounceAndThrottle((update) => {
492
- if (update.selectionSet) {
493
- const id = update.state.facet(documentId);
494
- const cursorConverter = update.state.facet(Cursor2.converter);
495
- const selection = update.state.selection;
496
- const ranges = selection.ranges.map((range) => ({
497
- from: cursorConverter.toCursor(range.from),
498
- to: cursorConverter.toCursor(range.to)
499
- })).filter(({ from, to }) => to > from);
500
- selectionManager.updateMultiRange(id, ranges);
501
- }
502
- }, 100));
503
- };
504
- var style = {
505
- hover: "rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400",
506
- icon: "inline-block leading-none mis-1 cursor-pointer"
507
- };
508
- var createLinkRenderer = (onSelectObject) => (el, { url }) => {
509
- const isInternal = url.startsWith("/") || // TODO(wittjosiah): This should probably be parsed out on paste?
510
- url.startsWith(window.location.origin);
511
- const options = isInternal ? {
512
- onClick: () => {
513
- const qualifiedId = url.split("/").at(-1);
514
- invariant3(qualifiedId, "Invalid link format.", {
515
- F: __dxlog_file3,
516
- L: 291,
517
- S: void 0,
518
- A: [
519
- "qualifiedId",
520
- "'Invalid link format.'"
521
- ]
522
- });
523
- onSelectObject(qualifiedId);
524
- }
525
- } : {
526
- href: url,
527
- rel: "noreferrer",
528
- target: "_blank"
529
- };
530
- renderRoot(el, /* @__PURE__ */ React2.createElement("a", {
531
- ...options,
532
- className: style.hover
533
- }, /* @__PURE__ */ React2.createElement(Icon, {
534
- icon: isInternal ? "ph--arrow-square-down--bold" : "ph--arrow-square-out--bold",
535
- size: 4,
536
- classNames: style.icon
537
- })));
538
- };
539
- var renderLinkTooltip = (el, { url }) => {
540
- const web = new URL(url);
541
- renderRoot(el, /* @__PURE__ */ React2.createElement("a", {
542
- href: url,
543
- rel: "noreferrer",
544
- target: "_blank",
545
- className: style.hover
546
- }, web.origin, /* @__PURE__ */ React2.createElement(Icon, {
547
- icon: "ph--arrow-square-out--bold",
548
- size: 4,
549
- classNames: style.icon
550
- })));
551
- };
552
- var renderRoot = (root, node) => {
553
- createRoot(root).render(/* @__PURE__ */ React2.createElement(ThemeProvider, {
554
- tx: defaultTx
555
- }, node));
556
- return root;
557
- };
558
-
559
531
  // src/components/MarkdownContainer.tsx
560
532
  var MarkdownContainer = ({ id, role, object, settings, selectionManager, viewMode, editorStateStore, onViewModeChange }) => {
561
533
  var _effect = _useSignals2();
562
534
  try {
563
535
  const { t } = useTranslation2();
564
536
  const scrollPastEnd = role === "article";
565
- const doc = Obj.instanceOf(DocumentType, object) ? object : void 0;
537
+ const doc = Obj.instanceOf(Markdown_exports.Document, object) ? object : void 0;
566
538
  const text = Obj.instanceOf(DataType.Text, object) ? object : void 0;
567
539
  const [previewBlocks, setPreviewBlocks] = useState([]);
568
540
  const previewOptions = useMemo4(() => ({
@@ -626,7 +598,7 @@ var MarkdownContainer = ({ id, role, object, settings, selectionManager, viewMod
626
598
  label,
627
599
  icon: metadata.icon,
628
600
  onSelect: (view, head) => {
629
- const link = `[${label}][${Obj.getDXN(object2)}]`;
601
+ const link = `[${label}](${Obj.getDXN(object2)})`;
630
602
  if (query?.startsWith("@")) {
631
603
  insertAtLineStart(view, head, `!${link}
632
604
  `);
@@ -773,6 +745,7 @@ var DocumentEditor = ({ id, document: doc, settings, viewMode, ...props }) => {
773
745
  var MarkdownContainer_default = MarkdownContainer;
774
746
  export {
775
747
  DocumentEditor,
748
+ MarkdownContainer,
776
749
  MarkdownContainer_default as default
777
750
  };
778
- //# sourceMappingURL=MarkdownContainer-F3WEEIBX.mjs.map
751
+ //# sourceMappingURL=MarkdownContainer-HMPNQMNG.mjs.map