@dxos/plugin-markdown 0.8.4-main.28f8d3d → 0.8.4-main.2c6827d

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 (241) hide show
  1. package/dist/lib/browser/MarkdownCard-JYMDPKV5.mjs +12 -0
  2. package/dist/lib/browser/MarkdownCard-JYMDPKV5.mjs.map +7 -0
  3. package/dist/lib/browser/MarkdownContainer-Y75XSVBX.mjs +15 -0
  4. package/dist/lib/browser/MarkdownContainer-Y75XSVBX.mjs.map +7 -0
  5. package/dist/lib/browser/{anchor-sort-AJKRIWFD.mjs → anchor-sort-3HGPGCOO.mjs} +6 -7
  6. package/dist/lib/browser/anchor-sort-3HGPGCOO.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-serializer-OIS3MZX2.mjs → app-graph-serializer-POZN234F.mjs} +10 -11
  8. package/dist/lib/browser/app-graph-serializer-POZN234F.mjs.map +7 -0
  9. package/dist/lib/browser/blueprint-definition-GIPKFDY5.mjs +13 -0
  10. package/dist/lib/browser/blueprint-definition-GIPKFDY5.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-MVL4K3OD.mjs → chunk-22XSSNBS.mjs} +8 -4
  12. package/dist/lib/browser/chunk-22XSSNBS.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-2MLGSYRN.mjs +20 -0
  14. package/dist/lib/browser/chunk-2MLGSYRN.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-IKPZHFTW.mjs → chunk-BQTYJOFB.mjs} +5 -7
  16. package/dist/lib/browser/chunk-BQTYJOFB.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-JMBQG2ZC.mjs → chunk-GH6GQSBL.mjs} +9 -8
  18. package/dist/lib/browser/chunk-GH6GQSBL.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-LMJPXTPL.mjs → chunk-IBCHVMZW.mjs} +2 -2
  20. package/dist/lib/browser/{chunk-LMJPXTPL.mjs.map → chunk-IBCHVMZW.mjs.map} +2 -2
  21. package/dist/lib/browser/chunk-K3LXOU3E.mjs +827 -0
  22. package/dist/lib/browser/chunk-K3LXOU3E.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-PBJLFIOX.mjs +96 -0
  24. package/dist/lib/browser/chunk-PBJLFIOX.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-JTIGSUMB.mjs → chunk-QYSEJ5GP.mjs} +16 -17
  26. package/dist/lib/browser/chunk-QYSEJ5GP.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-Y53FQREH.mjs +150 -0
  28. package/dist/lib/browser/chunk-Y53FQREH.mjs.map +7 -0
  29. package/dist/lib/browser/index.mjs +35 -19
  30. package/dist/lib/browser/index.mjs.map +3 -3
  31. package/dist/lib/browser/{intent-resolver-BLLHRSTQ.mjs → intent-resolver-Z5L7TXUK.mjs} +21 -19
  32. package/dist/lib/browser/intent-resolver-Z5L7TXUK.mjs.map +7 -0
  33. package/dist/lib/browser/meta.json +1 -1
  34. package/dist/lib/browser/{react-surface-NL3BZR6H.mjs → react-surface-GO5ZOKNN.mjs} +88 -85
  35. package/dist/lib/browser/react-surface-GO5ZOKNN.mjs.map +7 -0
  36. package/dist/lib/browser/{settings-Z7ZV7SLC.mjs → settings-TZUDB5EW.mjs} +5 -5
  37. package/dist/lib/browser/{settings-Z7ZV7SLC.mjs.map → settings-TZUDB5EW.mjs.map} +1 -1
  38. package/dist/lib/browser/{state-ORTZIEJU.mjs → state-BTUKVZHY.mjs} +5 -5
  39. package/dist/lib/browser/{state-ORTZIEJU.mjs.map → state-BTUKVZHY.mjs.map} +1 -1
  40. package/dist/lib/browser/toolkit.mjs +13 -0
  41. package/dist/lib/browser/toolkit.mjs.map +7 -0
  42. package/dist/lib/browser/types/index.mjs +2 -2
  43. package/dist/lib/node-esm/MarkdownCard-ZXPJLUYO.mjs +13 -0
  44. package/dist/lib/node-esm/MarkdownCard-ZXPJLUYO.mjs.map +7 -0
  45. package/dist/lib/node-esm/MarkdownContainer-YRDSRDCS.mjs +16 -0
  46. package/dist/lib/node-esm/MarkdownContainer-YRDSRDCS.mjs.map +7 -0
  47. package/dist/lib/node-esm/{anchor-sort-N7WEA5E3.mjs → anchor-sort-PCDXEBJ2.mjs} +6 -7
  48. package/dist/lib/node-esm/anchor-sort-PCDXEBJ2.mjs.map +7 -0
  49. package/dist/lib/node-esm/{app-graph-serializer-Q3B44VFB.mjs → app-graph-serializer-NF65JYAS.mjs} +10 -11
  50. package/dist/lib/node-esm/app-graph-serializer-NF65JYAS.mjs.map +7 -0
  51. package/dist/lib/node-esm/blueprint-definition-ENKJZYQS.mjs +14 -0
  52. package/dist/lib/node-esm/blueprint-definition-ENKJZYQS.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-Z4XQ6C3D.mjs → chunk-AMHACOXW.mjs} +8 -4
  54. package/dist/lib/node-esm/chunk-AMHACOXW.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-CT7CFX5G.mjs +828 -0
  56. package/dist/lib/node-esm/chunk-CT7CFX5G.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-AYWAYBAY.mjs → chunk-GMMVSXQ6.mjs} +2 -2
  58. package/dist/lib/node-esm/{chunk-AYWAYBAY.mjs.map → chunk-GMMVSXQ6.mjs.map} +2 -2
  59. package/dist/lib/node-esm/chunk-HAIEWPU7.mjs +151 -0
  60. package/dist/lib/node-esm/chunk-HAIEWPU7.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-KCHUTL3Q.mjs +22 -0
  62. package/dist/lib/node-esm/chunk-KCHUTL3Q.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-KIRZFVX5.mjs → chunk-NGYJNQ6A.mjs} +16 -17
  64. package/dist/lib/node-esm/chunk-NGYJNQ6A.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-PIOOG7A5.mjs +97 -0
  66. package/dist/lib/node-esm/chunk-PIOOG7A5.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-JDMMLOB6.mjs → chunk-PLZ7EVCT.mjs} +9 -8
  68. package/dist/lib/node-esm/chunk-PLZ7EVCT.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-H4I2FGDZ.mjs → chunk-SHAMSMKQ.mjs} +5 -7
  70. package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs.map +7 -0
  71. package/dist/lib/node-esm/index.mjs +35 -19
  72. package/dist/lib/node-esm/index.mjs.map +3 -3
  73. package/dist/lib/node-esm/{intent-resolver-NHPUPSWK.mjs → intent-resolver-6B3PFQ5F.mjs} +21 -19
  74. package/dist/lib/node-esm/intent-resolver-6B3PFQ5F.mjs.map +7 -0
  75. package/dist/lib/node-esm/meta.json +1 -1
  76. package/dist/lib/node-esm/{react-surface-XJ6ODCBE.mjs → react-surface-I46BPCWT.mjs} +88 -85
  77. package/dist/lib/node-esm/react-surface-I46BPCWT.mjs.map +7 -0
  78. package/dist/lib/node-esm/{settings-UCXEWBCT.mjs → settings-CJ3T5EX4.mjs} +5 -5
  79. package/dist/lib/node-esm/{settings-UCXEWBCT.mjs.map → settings-CJ3T5EX4.mjs.map} +1 -1
  80. package/dist/lib/node-esm/{state-47WSZG54.mjs → state-K6EH7SRZ.mjs} +5 -5
  81. package/dist/lib/node-esm/{state-47WSZG54.mjs.map → state-K6EH7SRZ.mjs.map} +1 -1
  82. package/dist/lib/node-esm/toolkit.mjs +14 -0
  83. package/dist/lib/node-esm/toolkit.mjs.map +7 -0
  84. package/dist/lib/node-esm/types/index.mjs +2 -2
  85. package/dist/types/src/MarkdownPlugin.d.ts +1 -1
  86. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/anchor-sort.d.ts +2 -4
  88. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
  90. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -8
  91. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/blueprint-definition.d.ts +7 -0
  93. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/index.d.ts +9 -10
  96. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  98. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  100. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/settings.d.ts +1 -1
  102. package/dist/types/src/capabilities/state.d.ts +2 -2
  103. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +3 -3
  104. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -1
  105. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +5 -38
  106. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/MarkdownContainer.d.ts +8 -12
  108. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  109. package/dist/types/src/components/MarkdownContainer.stories.d.ts +54 -5
  110. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
  111. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +11 -0
  112. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -0
  113. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +42 -23
  114. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  115. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +8 -15
  116. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  117. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +26 -0
  118. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -0
  119. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +12 -0
  120. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -0
  121. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  122. package/dist/types/src/components/Suggestions.stories.d.ts +1 -2
  123. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/index.d.ts +3 -1
  125. package/dist/types/src/components/index.d.ts.map +1 -1
  126. package/dist/types/src/functions/create.d.ts +8 -0
  127. package/dist/types/src/functions/create.d.ts.map +1 -0
  128. package/dist/types/src/functions/create.test.d.ts +2 -0
  129. package/dist/types/src/functions/create.test.d.ts.map +1 -0
  130. package/dist/types/src/functions/index.d.ts +18 -0
  131. package/dist/types/src/functions/index.d.ts.map +1 -0
  132. package/dist/types/src/functions/open.d.ts +7 -0
  133. package/dist/types/src/functions/open.d.ts.map +1 -0
  134. package/dist/types/src/functions/update.d.ts +6 -0
  135. package/dist/types/src/functions/update.d.ts.map +1 -0
  136. package/dist/types/src/functions/update.test.d.ts +2 -0
  137. package/dist/types/src/functions/update.test.d.ts.map +1 -0
  138. package/dist/types/src/hooks/index.d.ts +3 -0
  139. package/dist/types/src/hooks/index.d.ts.map +1 -1
  140. package/dist/types/src/hooks/useEditorMenuOptions.d.ts +9 -0
  141. package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -0
  142. package/dist/types/src/hooks/useExtensions.d.ts +21 -0
  143. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -0
  144. package/dist/types/src/hooks/useLinkQuery.d.ts +4 -0
  145. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -0
  146. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +1 -1
  147. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +1 -1
  148. package/dist/types/src/meta.d.ts +0 -1
  149. package/dist/types/src/meta.d.ts.map +1 -1
  150. package/dist/types/src/testing.d.ts +6 -0
  151. package/dist/types/src/testing.d.ts.map +1 -0
  152. package/dist/types/src/toolkit.d.ts +3 -0
  153. package/dist/types/src/toolkit.d.ts.map +1 -0
  154. package/dist/types/src/translations.d.ts +4 -0
  155. package/dist/types/src/translations.d.ts.map +1 -1
  156. package/dist/types/src/types/Markdown.d.ts +8 -6
  157. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  158. package/dist/types/src/types/MarkdownAction.d.ts +6 -14
  159. package/dist/types/src/types/MarkdownAction.d.ts.map +1 -1
  160. package/dist/types/src/types/index.d.ts.map +1 -1
  161. package/dist/types/src/types/types.d.ts.map +1 -1
  162. package/dist/types/src/util.d.ts +3 -3
  163. package/dist/types/src/util.d.ts.map +1 -1
  164. package/dist/types/tsconfig.tsbuildinfo +1 -1
  165. package/package.json +72 -53
  166. package/src/MarkdownPlugin.tsx +100 -87
  167. package/src/capabilities/anchor-sort.ts +3 -3
  168. package/src/capabilities/app-graph-serializer.ts +6 -6
  169. package/src/capabilities/artifact-definition.ts +11 -18
  170. package/src/capabilities/blueprint-definition.ts +43 -0
  171. package/src/capabilities/capabilities.ts +1 -0
  172. package/src/capabilities/index.ts +3 -1
  173. package/src/capabilities/intent-resolver.ts +12 -12
  174. package/src/capabilities/react-surface.tsx +44 -66
  175. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +11 -14
  176. package/src/components/MarkdownCard/MarkdownCard.tsx +52 -38
  177. package/src/components/MarkdownContainer.stories.tsx +78 -42
  178. package/src/components/MarkdownContainer.tsx +78 -220
  179. package/src/components/MarkdownEditor/FileUpload.tsx +63 -0
  180. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +56 -34
  181. package/src/components/MarkdownEditor/MarkdownEditor.tsx +221 -273
  182. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +136 -0
  183. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +63 -0
  184. package/src/components/MarkdownSettings/MarkdownSettings.tsx +77 -74
  185. package/src/components/Suggestions.stories.tsx +49 -45
  186. package/src/components/index.ts +3 -1
  187. package/src/functions/create.conversations.json +1 -0
  188. package/src/functions/create.test.ts +128 -0
  189. package/src/functions/create.ts +34 -0
  190. package/src/functions/index.ts +13 -0
  191. package/src/functions/open.ts +32 -0
  192. package/src/functions/update.conversations.json +1 -0
  193. package/src/functions/update.test.ts +151 -0
  194. package/src/functions/update.ts +37 -0
  195. package/src/hooks/index.ts +3 -0
  196. package/src/hooks/useEditorMenuOptions.ts +71 -0
  197. package/src/{extensions.tsx → hooks/useExtensions.tsx} +60 -109
  198. package/src/hooks/useLinkQuery.ts +83 -0
  199. package/src/hooks/useSelectCurrentThread.tsx +15 -5
  200. package/src/meta.ts +3 -6
  201. package/src/testing.ts +27 -0
  202. package/src/toolkit.ts +6 -0
  203. package/src/translations.ts +4 -0
  204. package/src/types/Markdown.ts +10 -7
  205. package/src/types/MarkdownAction.ts +4 -6
  206. package/src/types/index.ts +1 -0
  207. package/src/types/types.ts +1 -0
  208. package/src/util.tsx +10 -5
  209. package/dist/lib/browser/MarkdownCard-IMCR4A4V.mjs +0 -80
  210. package/dist/lib/browser/MarkdownCard-IMCR4A4V.mjs.map +0 -7
  211. package/dist/lib/browser/MarkdownContainer-VGJPHMVG.mjs +0 -780
  212. package/dist/lib/browser/MarkdownContainer-VGJPHMVG.mjs.map +0 -7
  213. package/dist/lib/browser/anchor-sort-AJKRIWFD.mjs.map +0 -7
  214. package/dist/lib/browser/app-graph-serializer-OIS3MZX2.mjs.map +0 -7
  215. package/dist/lib/browser/chunk-IKPZHFTW.mjs.map +0 -7
  216. package/dist/lib/browser/chunk-JHH7VL52.mjs +0 -18
  217. package/dist/lib/browser/chunk-JHH7VL52.mjs.map +0 -7
  218. package/dist/lib/browser/chunk-JMBQG2ZC.mjs.map +0 -7
  219. package/dist/lib/browser/chunk-JTIGSUMB.mjs.map +0 -7
  220. package/dist/lib/browser/chunk-MVL4K3OD.mjs.map +0 -7
  221. package/dist/lib/browser/intent-resolver-BLLHRSTQ.mjs.map +0 -7
  222. package/dist/lib/browser/react-surface-NL3BZR6H.mjs.map +0 -7
  223. package/dist/lib/node-esm/MarkdownCard-JV2YDV3M.mjs +0 -81
  224. package/dist/lib/node-esm/MarkdownCard-JV2YDV3M.mjs.map +0 -7
  225. package/dist/lib/node-esm/MarkdownContainer-BJRNCXJZ.mjs +0 -781
  226. package/dist/lib/node-esm/MarkdownContainer-BJRNCXJZ.mjs.map +0 -7
  227. package/dist/lib/node-esm/anchor-sort-N7WEA5E3.mjs.map +0 -7
  228. package/dist/lib/node-esm/app-graph-serializer-Q3B44VFB.mjs.map +0 -7
  229. package/dist/lib/node-esm/chunk-H4I2FGDZ.mjs.map +0 -7
  230. package/dist/lib/node-esm/chunk-H6TITL7A.mjs +0 -20
  231. package/dist/lib/node-esm/chunk-H6TITL7A.mjs.map +0 -7
  232. package/dist/lib/node-esm/chunk-JDMMLOB6.mjs.map +0 -7
  233. package/dist/lib/node-esm/chunk-KIRZFVX5.mjs.map +0 -7
  234. package/dist/lib/node-esm/chunk-Z4XQ6C3D.mjs.map +0 -7
  235. package/dist/lib/node-esm/intent-resolver-NHPUPSWK.mjs.map +0 -7
  236. package/dist/lib/node-esm/react-surface-XJ6ODCBE.mjs.map +0 -7
  237. package/dist/types/src/components/Toolbar.stories.d.ts +0 -11
  238. package/dist/types/src/components/Toolbar.stories.d.ts.map +0 -1
  239. package/dist/types/src/extensions.d.ts +0 -24
  240. package/dist/types/src/extensions.d.ts.map +0 -1
  241. package/src/components/Toolbar.stories.tsx +0 -112
@@ -1,780 +0,0 @@
1
- import "./chunk-JHH7VL52.mjs";
2
- import {
3
- MarkdownCapabilities
4
- } from "./chunk-LMJPXTPL.mjs";
5
- import {
6
- getFallbackName,
7
- setFallbackName
8
- } from "./chunk-JMBQG2ZC.mjs";
9
- import {
10
- Markdown_exports
11
- } from "./chunk-JTIGSUMB.mjs";
12
- import {
13
- meta
14
- } from "./chunk-IKPZHFTW.mjs";
15
-
16
- // src/components/MarkdownContainer.tsx
17
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
18
- import { Rx } from "@effect-rx/rx-react";
19
- import React3, { useCallback as useCallback2, useEffect as useEffect2, useMemo as useMemo4, useState } from "react";
20
- import { createPortal } from "react-dom";
21
- import { Capabilities, Surface, useAppGraph, useCapabilities as useCapabilities2, usePluginManager } from "@dxos/app-framework";
22
- import { DXN, Filter, Obj, Query, Type } from "@dxos/echo";
23
- import { ClientCapabilities } from "@dxos/plugin-client";
24
- import { SpaceCapabilities } from "@dxos/plugin-space";
25
- import { fullyQualifiedId as fullyQualifiedId2, getSpace as getSpace2, useQuery, useSpace } from "@dxos/react-client/echo";
26
- import { toLocalizedString as toLocalizedString2, useTranslation as useTranslation2 } from "@dxos/react-ui";
27
- import { insertAtCursor, insertAtLineStart } from "@dxos/react-ui-editor";
28
- import { DataType } from "@dxos/schema";
29
-
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
246
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
247
- import React2, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo as useMemo3, useRef } from "react";
248
- import { useDropzone } from "react-dropzone";
249
- import { invariant as invariant3 } from "@dxos/invariant";
250
- import { toLocalizedString, useThemeContext, useTranslation } from "@dxos/react-ui";
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";
252
- import { StackItem } from "@dxos/react-ui-stack";
253
- import { isNonNullable, isNotFalsy as isNotFalsy2 } from "@dxos/util";
254
-
255
- // src/hooks/useSelectCurrentThread.tsx
256
- import { EditorView as EditorView2 } from "@codemirror/view";
257
- import { Schema } from "effect";
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";
263
- var useSelectCurrentThread = (editorView, documentId2) => {
264
- const scrollIntoViewResolver = useMemo2(() => createResolver({
265
- intent: LayoutAction2.UpdateLayout,
266
- position: "hoist",
267
- filter: (data) => {
268
- if (!Schema.is(LayoutAction2.ScrollIntoView.fields.input)(data)) {
269
- return false;
270
- }
271
- return !!editorView && data.subject === documentId2 && !!data.options?.cursor;
272
- },
273
- resolve: ({ options: { cursor } }) => {
274
- invariant2(editorView, "Editor view is not defined.", {
275
- F: __dxlog_file2,
276
- L: 32,
277
- S: void 0,
278
- A: [
279
- "editorView",
280
- "'Editor view is not defined.'"
281
- ]
282
- });
283
- const range = Cursor2.getRangeFromCursor(editorView.state, cursor);
284
- if (range) {
285
- const selection = editorView.state.selection.main.from !== range.from ? {
286
- anchor: range.from
287
- } : void 0;
288
- const effects = [
289
- // NOTE: This does not use the DOM scrollIntoView function.
290
- EditorView2.scrollIntoView(range.from, {
291
- y: "start",
292
- yMargin: 96
293
- })
294
- ];
295
- if (selection) {
296
- effects.push(setSelection.of({
297
- current: documentId2
298
- }));
299
- }
300
- editorView.dispatch({
301
- effects,
302
- selection: selection ? {
303
- anchor: range.from
304
- } : void 0
305
- });
306
- }
307
- }
308
- }), [
309
- documentId2,
310
- editorView
311
- ]);
312
- useIntentResolver(meta.id, scrollIntoViewResolver);
313
- };
314
-
315
- // src/components/MarkdownEditor/MarkdownEditor.tsx
316
- var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditor.tsx";
317
- var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery, ...props }) => {
318
- var _effect = _useSignals();
319
- try {
320
- const { t } = useTranslation();
321
- const viewRef = useRef();
322
- const getMenu = useCallback((trigger, query) => {
323
- switch (trigger) {
324
- case "@":
325
- return onLinkQuery?.(query) ?? [];
326
- case "/":
327
- default:
328
- return filterItems([
329
- coreSlashCommands,
330
- linkSlashCommands,
331
- ...slashCommandGroups ?? []
332
- ], (item) => query ? toLocalizedString(item.label, t).toLowerCase().includes(query.toLowerCase()) : true);
333
- }
334
- }, [
335
- onLinkQuery,
336
- slashCommandGroups
337
- ]);
338
- const options = useMemo3(() => {
339
- const trigger = onLinkQuery ? [
340
- "/",
341
- "@"
342
- ] : [
343
- "/"
344
- ];
345
- return {
346
- viewRef,
347
- trigger,
348
- placeholder: {
349
- delay: 3e3,
350
- content: () => {
351
- return createElement("div", void 0, [
352
- createElement("span", {
353
- text: "Press"
354
- }),
355
- ...trigger.map((text) => createElement("span", {
356
- className: "border border-separator rounded-sm mx-1 px-1.5 pt-[1px] pb-[2px]",
357
- text
358
- })),
359
- createElement("span", {
360
- text: "for commands."
361
- })
362
- ]);
363
- }
364
- },
365
- getMenu
366
- };
367
- }, [
368
- getMenu
369
- ]);
370
- const { commandMenu, groupsRef, currentItem, onSelect, ...refPopoverProps } = useCommandMenu(options);
371
- const extensions = useMemo3(() => [
372
- _extensions,
373
- commandMenu
374
- ].filter(isNotFalsy2), [
375
- _extensions,
376
- commandMenu
377
- ]);
378
- return /* @__PURE__ */ React2.createElement(RefPopover, {
379
- modal: false,
380
- ...refPopoverProps
381
- }, /* @__PURE__ */ React2.createElement(MarkdownEditorImpl, {
382
- ref: viewRef,
383
- ...props,
384
- extensions
385
- }), /* @__PURE__ */ React2.createElement(CommandMenu, {
386
- groups: groupsRef.current,
387
- currentItem,
388
- onSelect
389
- }));
390
- } finally {
391
- _effect.f();
392
- }
393
- };
394
- var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", initialValue, customActions, editorStateStore, extensions, extensionProviders, scrollPastEnd, toolbar, viewMode, onFileUpload, onViewModeChange }, forwardedRef) => {
395
- var _effect = _useSignals();
396
- try {
397
- const { t } = useTranslation(meta.id);
398
- const { themeMode } = useThemeContext();
399
- const toolbarState = useEditorToolbarState({
400
- viewMode
401
- });
402
- const formattingObserver = useFormattingState(toolbarState);
403
- const { scrollTo, selection } = useMemo3(() => editorStateStore?.getState(id) ?? {}, [
404
- id
405
- ]);
406
- const providerExtensions = useMemo3(() => extensionProviders?.flatMap((provider) => provider({})).filter(isNonNullable), [
407
- extensionProviders
408
- ]);
409
- const handleDrop = async (view, { files }) => {
410
- const file = files[0];
411
- const info = file && onFileUpload ? await onFileUpload(file) : void 0;
412
- if (info) {
413
- processEditorPayload(view, {
414
- type: "image",
415
- data: info.url
416
- });
417
- }
418
- };
419
- const { parentRef, view: editorView, focusAttributes } = useTextEditor(() => ({
420
- initialValue,
421
- extensions: [
422
- formattingObserver,
423
- createBasicExtensions({
424
- readOnly: viewMode === "readonly",
425
- placeholder: t("editor placeholder"),
426
- scrollPastEnd: role === "section" ? false : scrollPastEnd,
427
- search: true
428
- }),
429
- createMarkdownExtensions({
430
- themeMode
431
- }),
432
- createThemeExtensions({
433
- themeMode,
434
- syntaxHighlighting: true,
435
- slots: editorSlots
436
- }),
437
- editorGutter,
438
- role !== "section" && onFileUpload && dropFile({
439
- onDrop: handleDrop
440
- }),
441
- providerExtensions,
442
- extensions
443
- ].filter(isNotFalsy2),
444
- ...role !== "section" && {
445
- id,
446
- scrollTo,
447
- selection,
448
- // TODO(wittjosiah): Autofocus based on layout is racy.
449
- // autoFocus: layoutPlugin?.provides.layout ? layoutPlugin?.provides.layout.scrollIntoView === id : true,
450
- moveToEndOfLine: true
451
- }
452
- }), [
453
- id,
454
- formattingObserver,
455
- viewMode,
456
- themeMode,
457
- extensions,
458
- providerExtensions
459
- ]);
460
- useImperativeHandle(forwardedRef, () => editorView, [
461
- editorView
462
- ]);
463
- useTest(editorView);
464
- useSelectCurrentThread(editorView, id);
465
- const { acceptedFiles, getInputProps, open } = useDropzone({
466
- multiple: false,
467
- noDrag: true,
468
- accept: {
469
- "image/*": [
470
- ".jpg",
471
- ".jpeg",
472
- ".png",
473
- ".gif"
474
- ]
475
- }
476
- });
477
- useEffect(() => {
478
- if (editorView && onFileUpload && acceptedFiles.length) {
479
- requestAnimationFrame(async () => {
480
- const f = acceptedFiles[0];
481
- const file = new File([
482
- f
483
- ], f.name, {
484
- type: f.type,
485
- lastModified: f.lastModified
486
- });
487
- const info = await onFileUpload(file);
488
- if (info) {
489
- addLink({
490
- url: info.url,
491
- image: true
492
- })(editorView);
493
- }
494
- });
495
- }
496
- }, [
497
- acceptedFiles,
498
- editorView,
499
- onFileUpload
500
- ]);
501
- const getView = useCallback(() => {
502
- invariant3(editorView, void 0, {
503
- F: __dxlog_file3,
504
- L: 241,
505
- S: void 0,
506
- A: [
507
- "editorView",
508
- ""
509
- ]
510
- });
511
- return editorView;
512
- }, [
513
- editorView
514
- ]);
515
- const handleViewModeChange = useCallback((mode) => onViewModeChange?.(id, mode), [
516
- id,
517
- onViewModeChange
518
- ]);
519
- const handleImageUpload = useCallback(() => {
520
- if (onFileUpload) {
521
- open();
522
- }
523
- }, [
524
- onFileUpload
525
- ]);
526
- return /* @__PURE__ */ React2.createElement(StackItem.Content, {
527
- toolbar: !!toolbar
528
- }, toolbar && /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(EditorToolbar, {
529
- attendableId: id,
530
- role,
531
- state: toolbarState,
532
- customActions,
533
- getView,
534
- image: handleImageUpload,
535
- viewMode: handleViewModeChange
536
- }), /* @__PURE__ */ React2.createElement("input", getInputProps())), /* @__PURE__ */ React2.createElement("div", {
537
- role: "none",
538
- ref: parentRef,
539
- "data-testid": "composer.markdownRoot",
540
- "data-toolbar": toolbar ? "enabled" : "disabled",
541
- className: stackItemContentEditorClassNames(role),
542
- "data-popover-collision-boundary": true,
543
- ...focusAttributes
544
- }));
545
- } finally {
546
- _effect.f();
547
- }
548
- });
549
- var useTest = (view) => {
550
- useEffect(() => {
551
- const composer = window.composer;
552
- if (composer) {
553
- composer.editorView = view;
554
- }
555
- }, [
556
- view
557
- ]);
558
- };
559
-
560
- // src/components/MarkdownContainer.tsx
561
- var MarkdownContainer = ({ id, role, object, settings, selectionManager, viewMode, editorStateStore, onViewModeChange }) => {
562
- var _effect = _useSignals2();
563
- try {
564
- const { t } = useTranslation2();
565
- const scrollPastEnd = role === "article";
566
- const doc = Obj.instanceOf(Markdown_exports.Document, object) ? object : void 0;
567
- const text = Obj.instanceOf(DataType.Text, object) ? object : void 0;
568
- const [previewBlocks, setPreviewBlocks] = useState([]);
569
- const previewOptions = useMemo4(() => ({
570
- addBlockContainer: (link, el) => {
571
- setPreviewBlocks((prev) => [
572
- ...prev,
573
- {
574
- link,
575
- el
576
- }
577
- ]);
578
- },
579
- removeBlockContainer: (link) => {
580
- setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.ref !== link.ref));
581
- }
582
- }), []);
583
- const extensions = useExtensions({
584
- document: doc,
585
- text,
586
- id,
587
- settings,
588
- selectionManager,
589
- viewMode,
590
- editorStateStore,
591
- previewOptions
592
- });
593
- const manager = usePluginManager();
594
- const resolve = useCallback2((typename) => manager.context.getCapabilities(Capabilities.Metadata).find(({ id: id2 }) => id2 === typename)?.metadata ?? {}, [
595
- manager
596
- ]);
597
- const space = getSpace2(object);
598
- const objectForms = useCapabilities2(SpaceCapabilities.ObjectForm);
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
603
- ]);
604
- const onLinkQuery = useCallback2(async (query) => {
605
- const name = query?.startsWith("@") ? query.slice(1).toLowerCase() : query?.toLowerCase() ?? "";
606
- const results = await space?.db.query(Query.select(filter)).run();
607
- const getLabel = (object2) => {
608
- const label = Obj.getLabel(object2);
609
- if (label) {
610
- return label;
611
- }
612
- const type = Obj.getTypename(object2);
613
- const metadata = resolve(type);
614
- return metadata.label?.(object2) || [
615
- "object name placeholder",
616
- {
617
- ns: type,
618
- default: "New object"
619
- }
620
- ];
621
- };
622
- const items = results?.objects.filter((object2) => toLocalizedString2(getLabel(object2), t).toLowerCase().includes(name)).map((object2) => {
623
- const metadata = resolve(Obj.getTypename(object2));
624
- const label = toLocalizedString2(getLabel(object2), t);
625
- return {
626
- id: object2.id,
627
- label,
628
- icon: metadata.icon,
629
- onSelect: (view, head) => {
630
- const link = `[${label}][${Obj.getDXN(object2)}]`;
631
- if (query?.startsWith("@")) {
632
- insertAtLineStart(view, head, `!${link}
633
- `);
634
- } else {
635
- insertAtCursor(view, head, `${link} `);
636
- }
637
- }
638
- };
639
- }) ?? [];
640
- return [
641
- {
642
- id: "echo",
643
- items
644
- }
645
- ];
646
- }, [
647
- filter,
648
- resolve,
649
- space
650
- ]);
651
- const editor = doc ? /* @__PURE__ */ React3.createElement(DocumentEditor, {
652
- id: fullyQualifiedId2(object),
653
- role,
654
- document: doc,
655
- extensions,
656
- viewMode,
657
- settings,
658
- scrollPastEnd,
659
- onViewModeChange,
660
- onLinkQuery: space ? onLinkQuery : void 0
661
- }) : text ? /* @__PURE__ */ React3.createElement(MarkdownEditor, {
662
- id,
663
- role,
664
- initialValue: text.content,
665
- extensions,
666
- viewMode,
667
- toolbar: settings.toolbar,
668
- inputMode: settings.editorInputMode,
669
- scrollPastEnd,
670
- onViewModeChange,
671
- onLinkQuery: space ? onLinkQuery : void 0
672
- }) : (
673
- // TODO(burdon): Normalize with above.
674
- /* @__PURE__ */ React3.createElement(MarkdownEditor, {
675
- id,
676
- role,
677
- initialValue: object.text,
678
- extensions,
679
- viewMode,
680
- toolbar: settings.toolbar,
681
- inputMode: settings.editorInputMode,
682
- scrollPastEnd,
683
- onViewModeChange,
684
- onLinkQuery: space ? onLinkQuery : void 0
685
- })
686
- );
687
- return /* @__PURE__ */ React3.createElement(React3.Fragment, null, editor, previewBlocks.map(({ link, el }) => /* @__PURE__ */ React3.createElement(PreviewBlock, {
688
- key: link.ref,
689
- link,
690
- el
691
- })));
692
- } finally {
693
- _effect.f();
694
- }
695
- };
696
- var PreviewBlock = ({ link, el }) => {
697
- var _effect = _useSignals2();
698
- try {
699
- const echoDXN = useMemo4(() => DXN.parse(link.ref).asEchoDXN(), [
700
- link.ref
701
- ]);
702
- const space = useSpace(echoDXN?.spaceId);
703
- const [subject] = useQuery(space, Query.select(Filter.ids(echoDXN?.echoId ?? "")));
704
- const data = useMemo4(() => ({
705
- subject
706
- }), [
707
- subject
708
- ]);
709
- return /* @__PURE__ */ createPortal(/* @__PURE__ */ React3.createElement(Surface, {
710
- role: "card--transclusion",
711
- data,
712
- limit: 1
713
- }), el);
714
- } finally {
715
- _effect.f();
716
- }
717
- };
718
- var DocumentEditor = ({ id, document: doc, settings, viewMode, ...props }) => {
719
- var _effect = _useSignals2();
720
- try {
721
- const space = getSpace2(doc);
722
- useEffect2(() => {
723
- if (typeof doc.fallbackName === "string") {
724
- return;
725
- }
726
- const fallbackName = doc.content?.target?.content ? getFallbackName(doc.content.target.content) : void 0;
727
- if (fallbackName) {
728
- doc.fallbackName = fallbackName;
729
- }
730
- }, [
731
- doc,
732
- doc.content
733
- ]);
734
- const [upload] = useCapabilities2(Capabilities.FileUploader);
735
- const handleFileUpload = useMemo4(() => {
736
- if (space === void 0 || upload === void 0) {
737
- return void 0;
738
- }
739
- return async (file) => upload(file, space);
740
- }, [
741
- space,
742
- upload
743
- ]);
744
- const { graph } = useAppGraph();
745
- const customActions = useMemo4(() => {
746
- return Rx.make((get) => {
747
- const actions = get(graph.actions(id));
748
- const nodes = actions.filter((action) => action.properties.disposition === "toolbar");
749
- return {
750
- nodes,
751
- edges: nodes.map((node) => ({
752
- source: "root",
753
- target: node.id
754
- }))
755
- };
756
- });
757
- }, [
758
- graph
759
- ]);
760
- return /* @__PURE__ */ React3.createElement(MarkdownEditor, {
761
- id,
762
- initialValue: doc.content?.target?.content,
763
- viewMode,
764
- toolbar: settings.toolbar,
765
- customActions,
766
- inputMode: settings.editorInputMode,
767
- onFileUpload: handleFileUpload,
768
- ...props
769
- });
770
- } finally {
771
- _effect.f();
772
- }
773
- };
774
- var MarkdownContainer_default = MarkdownContainer;
775
- export {
776
- DocumentEditor,
777
- MarkdownContainer,
778
- MarkdownContainer_default as default
779
- };
780
- //# sourceMappingURL=MarkdownContainer-VGJPHMVG.mjs.map