@dxos/plugin-markdown 0.8.3 → 0.8.4-main.1da679c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{MarkdownPreview-F4PYFW5L.mjs → MarkdownCard-JLUQITYK.mjs} +18 -18
- package/dist/lib/browser/MarkdownCard-JLUQITYK.mjs.map +7 -0
- package/dist/lib/browser/{MarkdownContainer-EFWQ6DHD.mjs → MarkdownContainer-OZ5DHEIA.mjs} +282 -302
- package/dist/lib/browser/MarkdownContainer-OZ5DHEIA.mjs.map +7 -0
- package/dist/lib/browser/{anchor-sort-BMAN2ABT.mjs → anchor-sort-SUD373SW.mjs} +8 -8
- package/dist/lib/browser/anchor-sort-SUD373SW.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-EI6TEHRQ.mjs → app-graph-serializer-GH7JJZB7.mjs} +16 -17
- package/dist/lib/browser/app-graph-serializer-GH7JJZB7.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-JSNGFAZB.mjs +11 -0
- package/dist/lib/browser/blueprint-definition-JSNGFAZB.mjs.map +7 -0
- package/dist/lib/browser/chunk-BEE7VQPU.mjs +78 -0
- package/dist/lib/browser/chunk-BEE7VQPU.mjs.map +7 -0
- package/dist/lib/browser/{chunk-LXSRQPEP.mjs → chunk-LAVZ2W6X.mjs} +9 -10
- package/dist/lib/browser/chunk-LAVZ2W6X.mjs.map +7 -0
- package/dist/lib/browser/chunk-ODB2PTBP.mjs +28 -0
- package/dist/lib/browser/chunk-ODB2PTBP.mjs.map +7 -0
- package/dist/lib/browser/chunk-OY6CGPOO.mjs +16 -0
- package/dist/lib/browser/chunk-OY6CGPOO.mjs.map +7 -0
- package/dist/lib/browser/chunk-SQLSKQRQ.mjs +22 -0
- package/dist/lib/browser/chunk-SQLSKQRQ.mjs.map +7 -0
- package/dist/lib/browser/chunk-UM2GILLR.mjs +102 -0
- package/dist/lib/browser/chunk-UM2GILLR.mjs.map +7 -0
- package/dist/lib/browser/{chunk-D767LUGU.mjs → chunk-Z7P6JGGW.mjs} +14 -12
- package/dist/lib/browser/chunk-Z7P6JGGW.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +38 -25
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/intent-resolver-SUBIHVU7.mjs +62 -0
- package/dist/lib/browser/intent-resolver-SUBIHVU7.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/{node-esm/react-surface-YHFOQTVO.mjs → browser/react-surface-JBQHF4GR.mjs} +64 -55
- package/dist/lib/browser/react-surface-JBQHF4GR.mjs.map +7 -0
- package/dist/lib/browser/{settings-PLH54VC7.mjs → settings-T5ZMC5TH.mjs} +8 -8
- package/dist/lib/browser/settings-T5ZMC5TH.mjs.map +7 -0
- package/dist/lib/browser/{state-KI6PJ6DT.mjs → state-6QODXCSZ.mjs} +10 -10
- package/dist/lib/browser/state-6QODXCSZ.mjs.map +7 -0
- package/dist/lib/browser/toolkit-GNADYSGW.mjs +74 -0
- package/dist/lib/browser/toolkit-GNADYSGW.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +6 -14
- package/dist/lib/node-esm/{MarkdownPreview-KFDRV4GC.mjs → MarkdownCard-XL5EVSJ7.mjs} +18 -18
- package/dist/lib/node-esm/MarkdownCard-XL5EVSJ7.mjs.map +7 -0
- package/dist/lib/node-esm/{MarkdownContainer-O3SGMH4G.mjs → MarkdownContainer-Z4I23DPN.mjs} +282 -302
- package/dist/lib/node-esm/MarkdownContainer-Z4I23DPN.mjs.map +7 -0
- package/dist/lib/node-esm/{anchor-sort-BXL7BE67.mjs → anchor-sort-J2BK2XLZ.mjs} +8 -8
- package/dist/lib/node-esm/anchor-sort-J2BK2XLZ.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-F7DGNF3G.mjs → app-graph-serializer-LRYCXG7N.mjs} +16 -17
- package/dist/lib/node-esm/app-graph-serializer-LRYCXG7N.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-KX3Y5JHC.mjs +12 -0
- package/dist/lib/node-esm/blueprint-definition-KX3Y5JHC.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-CB2R4YIY.mjs +17 -0
- package/dist/lib/node-esm/chunk-CB2R4YIY.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-FXILAQ5F.mjs +79 -0
- package/dist/lib/node-esm/chunk-FXILAQ5F.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-BWDDFDJY.mjs → chunk-J7A6TUB2.mjs} +14 -12
- package/dist/lib/node-esm/chunk-J7A6TUB2.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-KAXL7TWD.mjs +103 -0
- package/dist/lib/node-esm/chunk-KAXL7TWD.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-MJZPYYIH.mjs +24 -0
- package/dist/lib/node-esm/chunk-MJZPYYIH.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-K26TX5V4.mjs → chunk-O6EXWGGS.mjs} +9 -10
- package/dist/lib/node-esm/chunk-O6EXWGGS.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-VCG2U522.mjs +29 -0
- package/dist/lib/node-esm/chunk-VCG2U522.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +38 -25
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/intent-resolver-YZEGYWGA.mjs +63 -0
- package/dist/lib/node-esm/intent-resolver-YZEGYWGA.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/{browser/react-surface-4B5ELMEW.mjs → node-esm/react-surface-JOXUHXQJ.mjs} +65 -54
- package/dist/lib/node-esm/react-surface-JOXUHXQJ.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-SIY33P3F.mjs → settings-LGG22OH4.mjs} +8 -8
- package/dist/lib/node-esm/settings-LGG22OH4.mjs.map +7 -0
- package/dist/lib/node-esm/{state-LLGVRYKL.mjs → state-W3PECOJX.mjs} +10 -10
- package/dist/lib/node-esm/state-W3PECOJX.mjs.map +7 -0
- package/dist/lib/node-esm/toolkit-ZCFWOGNH.mjs +75 -0
- package/dist/lib/node-esm/toolkit-ZCFWOGNH.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +6 -14
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/anchor-sort.d.ts +2 -2
- package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
- package/dist/types/src/capabilities/artifact-definition.d.ts +1 -9
- package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/capabilities.d.ts +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +12 -10
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -1
- package/dist/types/src/capabilities/state.d.ts +2 -2
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/capabilities/toolkit.d.ts +4 -0
- package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +7 -0
- package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +10 -0
- package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownCard/index.d.ts +4 -0
- package/dist/types/src/components/MarkdownCard/index.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownContainer.d.ts +5 -5
- package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownContainer.stories.d.ts +51 -4
- package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +2 -2
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +110 -12
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +2 -2
- package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
- package/dist/types/src/components/Suggestions.stories.d.ts +3 -3
- package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar.stories.d.ts +44 -7
- package/dist/types/src/components/Toolbar.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/extensions.d.ts +3 -5
- package/dist/types/src/extensions.d.ts.map +1 -1
- package/dist/types/src/functions/diff.d.ts +6 -0
- package/dist/types/src/functions/diff.d.ts.map +1 -0
- package/dist/types/src/functions/index.d.ts +3 -0
- package/dist/types/src/functions/index.d.ts.map +1 -0
- package/dist/types/src/functions/open.d.ts +7 -0
- package/dist/types/src/functions/open.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +2 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +0 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +36 -80
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Markdown.d.ts +43 -0
- package/dist/types/src/types/Markdown.d.ts.map +1 -0
- package/dist/types/src/types/MarkdownAction.d.ts +33 -0
- package/dist/types/src/types/MarkdownAction.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +2 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +4 -59
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +12 -3
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +51 -48
- package/src/MarkdownPlugin.tsx +22 -13
- package/src/capabilities/anchor-sort.ts +3 -3
- package/src/capabilities/app-graph-serializer.ts +10 -8
- package/src/capabilities/artifact-definition.ts +19 -24
- package/src/capabilities/blueprint-definition.ts +39 -0
- package/src/capabilities/capabilities.ts +5 -4
- package/src/capabilities/index.ts +3 -1
- package/src/capabilities/intent-resolver.ts +15 -21
- package/src/capabilities/react-surface.tsx +22 -20
- package/src/capabilities/settings.ts +3 -3
- package/src/capabilities/state.ts +8 -8
- package/src/capabilities/toolkit.ts +47 -0
- package/src/components/MarkdownCard/MarkdownCard.stories.tsx +79 -0
- package/src/components/{MarkdownPreview/MarkdownPreview.tsx → MarkdownCard/MarkdownCard.tsx} +21 -17
- package/src/components/MarkdownCard/index.ts +9 -0
- package/src/components/MarkdownContainer.stories.tsx +39 -31
- package/src/components/MarkdownContainer.tsx +36 -21
- package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +10 -7
- package/src/components/MarkdownEditor/MarkdownEditor.tsx +28 -30
- package/src/components/MarkdownSettings/MarkdownSettings.tsx +81 -78
- package/src/components/Suggestions.stories.tsx +36 -33
- package/src/components/Toolbar.stories.tsx +19 -14
- package/src/components/index.ts +1 -1
- package/src/events.ts +2 -2
- package/src/extensions.tsx +28 -52
- package/src/functions/diff.ts +35 -0
- package/src/functions/index.ts +6 -0
- package/src/functions/open.ts +30 -0
- package/src/hooks/useSelectCurrentThread.tsx +3 -3
- package/src/index.ts +4 -1
- package/src/meta.ts +7 -8
- package/src/translations.ts +10 -7
- package/src/types/Markdown.ts +56 -0
- package/src/types/MarkdownAction.ts +29 -0
- package/src/types/index.ts +2 -1
- package/src/types/types.ts +7 -51
- package/src/util.tsx +20 -6
- package/dist/lib/browser/MarkdownContainer-EFWQ6DHD.mjs.map +0 -7
- package/dist/lib/browser/MarkdownPreview-F4PYFW5L.mjs.map +0 -7
- package/dist/lib/browser/anchor-sort-BMAN2ABT.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-EI6TEHRQ.mjs.map +0 -7
- package/dist/lib/browser/artifact-definition-FQ2R6KPT.mjs +0 -145
- package/dist/lib/browser/artifact-definition-FQ2R6KPT.mjs.map +0 -7
- package/dist/lib/browser/chunk-354IBM5X.mjs +0 -20
- package/dist/lib/browser/chunk-354IBM5X.mjs.map +0 -7
- package/dist/lib/browser/chunk-D767LUGU.mjs.map +0 -7
- package/dist/lib/browser/chunk-JX6XNEHE.mjs +0 -22
- package/dist/lib/browser/chunk-JX6XNEHE.mjs.map +0 -7
- package/dist/lib/browser/chunk-LXSRQPEP.mjs.map +0 -7
- package/dist/lib/browser/chunk-N2D26K6W.mjs +0 -79
- package/dist/lib/browser/chunk-N2D26K6W.mjs.map +0 -7
- package/dist/lib/browser/chunk-QVJETNGS.mjs +0 -16
- package/dist/lib/browser/chunk-QVJETNGS.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-6ZOABX2J.mjs +0 -64
- package/dist/lib/browser/intent-resolver-6ZOABX2J.mjs.map +0 -7
- package/dist/lib/browser/react-surface-4B5ELMEW.mjs.map +0 -7
- package/dist/lib/browser/settings-PLH54VC7.mjs.map +0 -7
- package/dist/lib/browser/state-KI6PJ6DT.mjs.map +0 -7
- package/dist/lib/node/MarkdownContainer-KYGUEZIL.cjs +0 -783
- package/dist/lib/node/MarkdownContainer-KYGUEZIL.cjs.map +0 -7
- package/dist/lib/node/MarkdownPreview-GCJJCXY6.cjs +0 -103
- package/dist/lib/node/MarkdownPreview-GCJJCXY6.cjs.map +0 -7
- package/dist/lib/node/anchor-sort-V3T4SFFI.cjs +0 -48
- package/dist/lib/node/anchor-sort-V3T4SFFI.cjs.map +0 -7
- package/dist/lib/node/app-graph-serializer-E6BXEDEL.cjs +0 -65
- package/dist/lib/node/app-graph-serializer-E6BXEDEL.cjs.map +0 -7
- package/dist/lib/node/artifact-definition-U27MH5SC.cjs +0 -158
- package/dist/lib/node/artifact-definition-U27MH5SC.cjs.map +0 -7
- package/dist/lib/node/chunk-3HHV4MM6.cjs +0 -101
- package/dist/lib/node/chunk-3HHV4MM6.cjs.map +0 -7
- package/dist/lib/node/chunk-CJLYFGPI.cjs +0 -74
- package/dist/lib/node/chunk-CJLYFGPI.cjs.map +0 -7
- package/dist/lib/node/chunk-FU3XZZCO.cjs +0 -58
- package/dist/lib/node/chunk-FU3XZZCO.cjs.map +0 -7
- package/dist/lib/node/chunk-IFYSBQE5.cjs +0 -35
- package/dist/lib/node/chunk-IFYSBQE5.cjs.map +0 -7
- package/dist/lib/node/chunk-LQAC5HL7.cjs +0 -68
- package/dist/lib/node/chunk-LQAC5HL7.cjs.map +0 -7
- package/dist/lib/node/chunk-ZU5OIHCY.cjs +0 -45
- package/dist/lib/node/chunk-ZU5OIHCY.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -165
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-OEFLRNEJ.cjs +0 -77
- package/dist/lib/node/intent-resolver-OEFLRNEJ.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/react-surface-456HQ4KZ.cjs +0 -218
- package/dist/lib/node/react-surface-456HQ4KZ.cjs.map +0 -7
- package/dist/lib/node/settings-E3NUTXJ4.cjs +0 -42
- package/dist/lib/node/settings-E3NUTXJ4.cjs.map +0 -7
- package/dist/lib/node/state-KKDRAG7X.cjs +0 -51
- package/dist/lib/node/state-KKDRAG7X.cjs.map +0 -7
- package/dist/lib/node/types/index.cjs +0 -40
- package/dist/lib/node/types/index.cjs.map +0 -7
- package/dist/lib/node-esm/MarkdownContainer-O3SGMH4G.mjs.map +0 -7
- package/dist/lib/node-esm/MarkdownPreview-KFDRV4GC.mjs.map +0 -7
- package/dist/lib/node-esm/anchor-sort-BXL7BE67.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-F7DGNF3G.mjs.map +0 -7
- package/dist/lib/node-esm/artifact-definition-NQOHB6S5.mjs +0 -146
- package/dist/lib/node-esm/artifact-definition-NQOHB6S5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BWDDFDJY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JXXDCSMW.mjs +0 -17
- package/dist/lib/node-esm/chunk-JXXDCSMW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-K26TX5V4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RX63ZNML.mjs +0 -24
- package/dist/lib/node-esm/chunk-RX63ZNML.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-T2Y2BT53.mjs +0 -80
- package/dist/lib/node-esm/chunk-T2Y2BT53.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YOABAQ7A.mjs +0 -22
- package/dist/lib/node-esm/chunk-YOABAQ7A.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-CLMSVF2K.mjs +0 -65
- package/dist/lib/node-esm/intent-resolver-CLMSVF2K.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-YHFOQTVO.mjs.map +0 -7
- package/dist/lib/node-esm/settings-SIY33P3F.mjs.map +0 -7
- package/dist/lib/node-esm/state-LLGVRYKL.mjs.map +0 -7
- package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts +0 -6
- package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts +0 -17
- package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownPreview/index.d.ts +0 -4
- package/dist/types/src/components/MarkdownPreview/index.d.ts.map +0 -1
- package/dist/types/src/types/schema.d.ts +0 -35
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/src/components/MarkdownPreview/MarkdownPreview.stories.tsx +0 -74
- package/src/components/MarkdownPreview/index.ts +0 -9
- package/src/types/schema.ts +0 -39
package/src/extensions.tsx
CHANGED
|
@@ -2,30 +2,35 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { type ViewUpdate } from '@codemirror/view';
|
|
5
6
|
import React, { type AnchorHTMLAttributes, type ReactNode, useMemo } from 'react';
|
|
6
7
|
import { createRoot } from 'react-dom/client';
|
|
7
8
|
|
|
8
9
|
import {
|
|
9
|
-
createIntent,
|
|
10
10
|
LayoutAction,
|
|
11
11
|
type PromiseIntentDispatcher,
|
|
12
|
+
createIntent,
|
|
12
13
|
useCapabilities,
|
|
13
14
|
useIntentDispatcher,
|
|
14
15
|
} from '@dxos/app-framework';
|
|
16
|
+
import { debounceAndThrottle } from '@dxos/async';
|
|
15
17
|
import { invariant } from '@dxos/invariant';
|
|
16
|
-
import { createDocAccessor, fullyQualifiedId, getSpace
|
|
18
|
+
import { createDocAccessor, fullyQualifiedId, getSpace } from '@dxos/react-client/echo';
|
|
17
19
|
import { useIdentity } from '@dxos/react-client/halo';
|
|
18
20
|
import { Icon, ThemeProvider } from '@dxos/react-ui';
|
|
19
21
|
import { type SelectionManager } from '@dxos/react-ui-attention';
|
|
20
22
|
import {
|
|
21
|
-
|
|
23
|
+
Cursor,
|
|
22
24
|
type EditorStateStore,
|
|
25
|
+
EditorView,
|
|
23
26
|
type EditorViewMode,
|
|
24
27
|
type Extension,
|
|
25
28
|
InputModeExtensions,
|
|
29
|
+
type PreviewOptions,
|
|
30
|
+
type RenderCallback,
|
|
26
31
|
createDataExtensions,
|
|
27
|
-
autocomplete,
|
|
28
32
|
decorateMarkdown,
|
|
33
|
+
documentId,
|
|
29
34
|
folding,
|
|
30
35
|
formattingKeymap,
|
|
31
36
|
linkTooltip,
|
|
@@ -33,27 +38,21 @@ import {
|
|
|
33
38
|
preview,
|
|
34
39
|
selectionState,
|
|
35
40
|
typewriter,
|
|
36
|
-
type RenderCallback,
|
|
37
|
-
EditorView,
|
|
38
|
-
documentId,
|
|
39
|
-
Cursor,
|
|
40
|
-
type PreviewOptions,
|
|
41
41
|
} from '@dxos/react-ui-editor';
|
|
42
42
|
import { defaultTx } from '@dxos/react-ui-theme';
|
|
43
43
|
import { type DataType } from '@dxos/schema';
|
|
44
44
|
import { isNotFalsy } from '@dxos/util';
|
|
45
45
|
|
|
46
46
|
import { MarkdownCapabilities } from './capabilities';
|
|
47
|
-
import { type
|
|
47
|
+
import { type Markdown } from './types';
|
|
48
48
|
import { setFallbackName } from './util';
|
|
49
49
|
|
|
50
50
|
type ExtensionsOptions = {
|
|
51
|
-
document?:
|
|
51
|
+
document?: Markdown.Document;
|
|
52
52
|
id?: string;
|
|
53
53
|
text?: DataType.Text;
|
|
54
54
|
dispatch?: PromiseIntentDispatcher;
|
|
55
|
-
|
|
56
|
-
settings: MarkdownSettingsProps;
|
|
55
|
+
settings: Markdown.Settings;
|
|
57
56
|
selectionManager?: SelectionManager;
|
|
58
57
|
viewMode?: EditorViewMode;
|
|
59
58
|
editorStateStore?: EditorStateStore;
|
|
@@ -172,7 +171,6 @@ const createBaseExtensions = ({
|
|
|
172
171
|
dispatch,
|
|
173
172
|
settings,
|
|
174
173
|
selectionManager,
|
|
175
|
-
query,
|
|
176
174
|
viewMode,
|
|
177
175
|
previewOptions,
|
|
178
176
|
}: ExtensionsOptions): Extension[] => {
|
|
@@ -214,30 +212,6 @@ const createBaseExtensions = ({
|
|
|
214
212
|
);
|
|
215
213
|
}
|
|
216
214
|
|
|
217
|
-
//
|
|
218
|
-
// Autocomplete object links.
|
|
219
|
-
//
|
|
220
|
-
if (query) {
|
|
221
|
-
extensions.push(
|
|
222
|
-
autocomplete({
|
|
223
|
-
onSearch: (text: string) => {
|
|
224
|
-
// TODO(burdon): Specify filter (e.g., stack).
|
|
225
|
-
return query.objects
|
|
226
|
-
.map<AutocompleteResult | undefined>((object) =>
|
|
227
|
-
object.name?.length && object.id !== document?.id
|
|
228
|
-
? {
|
|
229
|
-
label: object.name,
|
|
230
|
-
// TODO(burdon): Factor out URL builder.
|
|
231
|
-
apply: `[${object.name}](/${fullyQualifiedId(object)})`,
|
|
232
|
-
}
|
|
233
|
-
: undefined,
|
|
234
|
-
)
|
|
235
|
-
.filter(isNotFalsy);
|
|
236
|
-
},
|
|
237
|
-
}),
|
|
238
|
-
);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
215
|
if (settings.debug) {
|
|
242
216
|
const items = settings.typewriter?.split(/[,\n]/) ?? '';
|
|
243
217
|
if (items) {
|
|
@@ -249,20 +223,22 @@ const createBaseExtensions = ({
|
|
|
249
223
|
};
|
|
250
224
|
|
|
251
225
|
export const selectionChange = (selectionManager: SelectionManager) => {
|
|
252
|
-
return EditorView.updateListener.of(
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
226
|
+
return EditorView.updateListener.of(
|
|
227
|
+
debounceAndThrottle((update: ViewUpdate) => {
|
|
228
|
+
if (update.selectionSet) {
|
|
229
|
+
const id = update.state.facet(documentId);
|
|
230
|
+
const cursorConverter = update.state.facet(Cursor.converter);
|
|
231
|
+
const selection = update.state.selection;
|
|
232
|
+
const ranges = selection.ranges
|
|
233
|
+
.map((range) => ({
|
|
234
|
+
from: cursorConverter.toCursor(range.from),
|
|
235
|
+
to: cursorConverter.toCursor(range.to),
|
|
236
|
+
}))
|
|
237
|
+
.filter(({ from, to }) => to > from);
|
|
238
|
+
selectionManager.updateMultiRange(id, ranges);
|
|
239
|
+
}
|
|
240
|
+
}, 100),
|
|
241
|
+
);
|
|
266
242
|
};
|
|
267
243
|
|
|
268
244
|
// TODO(burdon): Factor out styles.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Effect, Schema } from 'effect';
|
|
6
|
+
|
|
7
|
+
import { ArtifactId, applyDiffs } from '@dxos/assistant';
|
|
8
|
+
import { createDocAccessor } from '@dxos/echo-db';
|
|
9
|
+
import { DatabaseService, defineFunction } from '@dxos/functions';
|
|
10
|
+
import { trim } from '@dxos/util';
|
|
11
|
+
|
|
12
|
+
import { Markdown } from '../types';
|
|
13
|
+
|
|
14
|
+
// TODO(wittjosiah): Reconcile with ThreadAction.AddProposal.
|
|
15
|
+
export default defineFunction({
|
|
16
|
+
name: 'dxos.org/function/markdown/diff',
|
|
17
|
+
description: trim`
|
|
18
|
+
Applies a set of diffs to the markdown document.
|
|
19
|
+
`,
|
|
20
|
+
inputSchema: Schema.Struct({
|
|
21
|
+
id: ArtifactId.annotations({
|
|
22
|
+
description: 'The ID of the markdown document.',
|
|
23
|
+
}),
|
|
24
|
+
diffs: Schema.Array(Schema.String).annotations({
|
|
25
|
+
description: 'The diffs to apply to the document.',
|
|
26
|
+
}),
|
|
27
|
+
}),
|
|
28
|
+
outputSchema: Schema.Void,
|
|
29
|
+
handler: Effect.fn(function* ({ data: { id, diffs } }) {
|
|
30
|
+
const object = yield* DatabaseService.resolve(ArtifactId.toDXN(id), Markdown.Document);
|
|
31
|
+
const content = yield* Effect.promise(() => object.content.load());
|
|
32
|
+
const accessor = createDocAccessor(content, ['content']);
|
|
33
|
+
applyDiffs(accessor, diffs);
|
|
34
|
+
}),
|
|
35
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Effect, Schema } from 'effect';
|
|
6
|
+
|
|
7
|
+
import { ArtifactId } from '@dxos/assistant';
|
|
8
|
+
import { DatabaseService, defineFunction } from '@dxos/functions';
|
|
9
|
+
|
|
10
|
+
import { Markdown } from '../types';
|
|
11
|
+
|
|
12
|
+
export default defineFunction({
|
|
13
|
+
name: 'dxos.org/function/markdown/open',
|
|
14
|
+
description: 'Opens and reads the contents of a new markdown document.',
|
|
15
|
+
inputSchema: Schema.Struct({
|
|
16
|
+
id: ArtifactId.annotations({
|
|
17
|
+
description: 'The ID of the markdown document.',
|
|
18
|
+
}),
|
|
19
|
+
}),
|
|
20
|
+
outputSchema: Schema.Struct({
|
|
21
|
+
content: Schema.String,
|
|
22
|
+
}),
|
|
23
|
+
handler: Effect.fn(function* ({ data: { id } }) {
|
|
24
|
+
const object = yield* DatabaseService.resolve(ArtifactId.toDXN(id), Markdown.Document);
|
|
25
|
+
const { content } = yield* Effect.promise(() => object.content.load());
|
|
26
|
+
return {
|
|
27
|
+
content,
|
|
28
|
+
};
|
|
29
|
+
}),
|
|
30
|
+
});
|
|
@@ -6,11 +6,11 @@ import { EditorView } from '@codemirror/view';
|
|
|
6
6
|
import { Schema } from 'effect';
|
|
7
7
|
import { useMemo } from 'react';
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { LayoutAction, createResolver, useIntentResolver } from '@dxos/app-framework';
|
|
10
10
|
import { invariant } from '@dxos/invariant';
|
|
11
11
|
import { Cursor, setSelection } from '@dxos/react-ui-editor';
|
|
12
12
|
|
|
13
|
-
import {
|
|
13
|
+
import { meta } from '../meta';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Handle scrolling and selection of the current thread in a markdown editor.
|
|
@@ -52,5 +52,5 @@ export const useSelectCurrentThread = (editorView: EditorView | undefined, docum
|
|
|
52
52
|
[documentId, editorView],
|
|
53
53
|
);
|
|
54
54
|
|
|
55
|
-
useIntentResolver(
|
|
55
|
+
useIntentResolver(meta.id, scrollIntoViewResolver);
|
|
56
56
|
};
|
package/src/index.ts
CHANGED
package/src/meta.ts
CHANGED
|
@@ -3,18 +3,17 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { type PluginMeta } from '@dxos/app-framework';
|
|
6
|
-
|
|
7
|
-
export const MARKDOWN_PLUGIN = 'dxos.org/plugin/markdown';
|
|
6
|
+
import { trim } from '@dxos/util';
|
|
8
7
|
|
|
9
8
|
export const meta: PluginMeta = {
|
|
10
|
-
id:
|
|
9
|
+
id: 'dxos.org/plugin/markdown',
|
|
11
10
|
name: 'Markdown',
|
|
12
|
-
description: `
|
|
13
|
-
A
|
|
14
|
-
In addition to markdown capabilities,
|
|
15
|
-
|
|
11
|
+
description: trim`
|
|
12
|
+
A collaborative and extensible Markdown editor.
|
|
13
|
+
In addition to markdown capabilities, the plugin supports collaborative in-line comments.
|
|
14
|
+
You can use documents to extend the memory of your personal agents and add context for automated workflows.
|
|
16
15
|
`,
|
|
17
|
-
source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown',
|
|
18
16
|
icon: 'ph--text-aa--regular',
|
|
17
|
+
source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown',
|
|
19
18
|
screenshots: ['https://dxos.network/plugin-details-markdown-dark.png'],
|
|
20
19
|
};
|
package/src/translations.ts
CHANGED
|
@@ -2,23 +2,26 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { type Resource } from '@dxos/react-ui';
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { meta } from './meta';
|
|
8
|
+
import { Markdown } from './types';
|
|
9
9
|
|
|
10
|
-
export
|
|
10
|
+
export const translations = [
|
|
11
11
|
{
|
|
12
12
|
'en-US': {
|
|
13
|
-
[
|
|
13
|
+
[Markdown.Document.typename]: {
|
|
14
14
|
'typename label': 'Document',
|
|
15
15
|
'typename label_zero': 'Documents',
|
|
16
16
|
'typename label_one': 'Document',
|
|
17
17
|
'typename label_other': 'Documents',
|
|
18
18
|
'object name placeholder': 'New document',
|
|
19
|
+
'rename object label': 'Rename document',
|
|
20
|
+
'delete object label': 'Delete document',
|
|
19
21
|
},
|
|
20
|
-
[
|
|
22
|
+
[meta.id]: {
|
|
21
23
|
'plugin name': 'Editor',
|
|
24
|
+
'settings title': 'Editor settings',
|
|
22
25
|
'choose markdown from space dialog title': 'Choose one or more documents to add',
|
|
23
26
|
// TODO(burdon): Style-guide for user-facing text (e.g., hints, questions, capitalization, etc.)
|
|
24
27
|
'empty choose markdown from space message': 'None available; try creating a new one instead?',
|
|
@@ -43,4 +46,4 @@ export default [
|
|
|
43
46
|
},
|
|
44
47
|
},
|
|
45
48
|
},
|
|
46
|
-
];
|
|
49
|
+
] as const satisfies Resource[];
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Schema } from 'effect';
|
|
6
|
+
|
|
7
|
+
import { Obj, Ref, Type } from '@dxos/echo';
|
|
8
|
+
import { LabelAnnotation } from '@dxos/echo-schema';
|
|
9
|
+
import { EditorInputMode, EditorViewMode } from '@dxos/react-ui-editor/types';
|
|
10
|
+
import { DataType, ItemAnnotation } from '@dxos/schema';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Document Item type.
|
|
14
|
+
*/
|
|
15
|
+
export const Document = Schema.Struct({
|
|
16
|
+
name: Schema.optional(Schema.String),
|
|
17
|
+
fallbackName: Schema.optional(Schema.String),
|
|
18
|
+
content: Type.Ref(DataType.Text),
|
|
19
|
+
}).pipe(
|
|
20
|
+
Type.Obj({
|
|
21
|
+
typename: 'dxos.org/type/Document',
|
|
22
|
+
version: '0.1.0',
|
|
23
|
+
}),
|
|
24
|
+
LabelAnnotation.set(['name', 'fallbackName']),
|
|
25
|
+
ItemAnnotation.set(true),
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
export type Document = Schema.Schema.Type<typeof Document>;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Document factory.
|
|
32
|
+
*/
|
|
33
|
+
export const makeDocument = ({
|
|
34
|
+
content = '',
|
|
35
|
+
...props
|
|
36
|
+
}: Partial<{ name: string; fallbackName: string; content: string }> = {}) =>
|
|
37
|
+
Obj.make(Document, { ...props, content: Ref.make(DataType.makeText(content)) });
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Plugin settings.
|
|
41
|
+
*/
|
|
42
|
+
export const Settings = Schema.mutable(
|
|
43
|
+
Schema.Struct({
|
|
44
|
+
defaultViewMode: EditorViewMode,
|
|
45
|
+
editorInputMode: Schema.optional(EditorInputMode),
|
|
46
|
+
experimental: Schema.optional(Schema.Boolean),
|
|
47
|
+
debug: Schema.optional(Schema.Boolean),
|
|
48
|
+
toolbar: Schema.optional(Schema.Boolean),
|
|
49
|
+
typewriter: Schema.optional(Schema.String),
|
|
50
|
+
// TODO(burdon): Per document settings.
|
|
51
|
+
numberedHeadings: Schema.optional(Schema.Boolean),
|
|
52
|
+
folding: Schema.optional(Schema.Boolean),
|
|
53
|
+
}),
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
export interface Settings extends Schema.Schema.Type<typeof Settings> {}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Schema } from 'effect';
|
|
6
|
+
|
|
7
|
+
import { EditorViewMode } from '@dxos/react-ui-editor/types';
|
|
8
|
+
|
|
9
|
+
import { meta } from '../meta';
|
|
10
|
+
|
|
11
|
+
import { Document } from './Markdown';
|
|
12
|
+
|
|
13
|
+
export class Create extends Schema.TaggedClass<Create>()(`${meta.id}/action/create`, {
|
|
14
|
+
input: Schema.Struct({
|
|
15
|
+
name: Schema.optional(Schema.String),
|
|
16
|
+
content: Schema.optional(Schema.String),
|
|
17
|
+
}),
|
|
18
|
+
output: Schema.Struct({
|
|
19
|
+
object: Document,
|
|
20
|
+
}),
|
|
21
|
+
}) {}
|
|
22
|
+
|
|
23
|
+
export class SetViewMode extends Schema.TaggedClass<SetViewMode>()(`${meta.id}/action/set-view-mode`, {
|
|
24
|
+
input: Schema.Struct({
|
|
25
|
+
id: Schema.String,
|
|
26
|
+
viewMode: EditorViewMode,
|
|
27
|
+
}),
|
|
28
|
+
output: Schema.Void,
|
|
29
|
+
}) {}
|
package/src/types/index.ts
CHANGED
package/src/types/types.ts
CHANGED
|
@@ -2,44 +2,16 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { type Extension } from '@dxos/react-ui-editor';
|
|
6
|
+
import { type EditorViewMode } from '@dxos/react-ui-editor/types';
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
-
// TODO(wittjosiah): This pulls in UI code into the types entrypoint.
|
|
9
|
-
import { type Extension, EditorInputMode, EditorViewMode } from '@dxos/react-ui-editor';
|
|
8
|
+
import { type Document } from './Markdown';
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
// TODO(burdon): Remove these from ./types since not part of plugin-markdown API?
|
|
11
|
+
// TODO(wittjosiah): MarkdownExtensionProvider is a part of the MarkdownCapabilities api which should be in ./types.
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export namespace MarkdownAction {
|
|
17
|
-
export class Create extends Schema.TaggedClass<Create>()(MARKDOWN_ACTION, {
|
|
18
|
-
input: Schema.Struct({
|
|
19
|
-
spaceId: Type.SpaceId,
|
|
20
|
-
name: Schema.optional(Schema.String),
|
|
21
|
-
content: Schema.optional(Schema.String),
|
|
22
|
-
}),
|
|
23
|
-
output: Schema.Struct({
|
|
24
|
-
object: DocumentType,
|
|
25
|
-
}),
|
|
26
|
-
}) {}
|
|
27
|
-
|
|
28
|
-
export class SetViewMode extends Schema.TaggedClass<SetViewMode>()(`${MARKDOWN_ACTION}/set-view-mode`, {
|
|
29
|
-
input: Schema.Struct({
|
|
30
|
-
id: Schema.String,
|
|
31
|
-
viewMode: EditorViewMode,
|
|
32
|
-
}),
|
|
33
|
-
output: Schema.Void,
|
|
34
|
-
}) {}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export type MarkdownProperties = Record<string, any>;
|
|
38
|
-
|
|
39
|
-
// TODO(burdon): Async.
|
|
40
|
-
export type MarkdownExtensionProvider = (props: { document?: DocumentType }) => Extension | undefined;
|
|
41
|
-
|
|
42
|
-
export type OnChange = (text: string) => void;
|
|
13
|
+
// TODO(burdon): Async?
|
|
14
|
+
export type MarkdownExtensionProvider = (props: { document?: Document }) => Extension | undefined;
|
|
43
15
|
|
|
44
16
|
export type MarkdownPluginState = {
|
|
45
17
|
// Codemirror extensions provided by other plugins.
|
|
@@ -49,19 +21,3 @@ export type MarkdownPluginState = {
|
|
|
49
21
|
// View mode per document.
|
|
50
22
|
viewMode: Record<string, EditorViewMode>;
|
|
51
23
|
};
|
|
52
|
-
|
|
53
|
-
export const MarkdownSettingsSchema = Schema.mutable(
|
|
54
|
-
Schema.Struct({
|
|
55
|
-
defaultViewMode: EditorViewMode,
|
|
56
|
-
editorInputMode: Schema.optional(EditorInputMode),
|
|
57
|
-
experimental: Schema.optional(Schema.Boolean),
|
|
58
|
-
debug: Schema.optional(Schema.Boolean),
|
|
59
|
-
toolbar: Schema.optional(Schema.Boolean),
|
|
60
|
-
typewriter: Schema.optional(Schema.String),
|
|
61
|
-
// TODO(burdon): Per document settings.
|
|
62
|
-
numberedHeadings: Schema.optional(Schema.Boolean),
|
|
63
|
-
folding: Schema.optional(Schema.Boolean),
|
|
64
|
-
}),
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
export type MarkdownSettingsProps = Schema.Schema.Type<typeof MarkdownSettingsSchema>;
|
package/src/util.tsx
CHANGED
|
@@ -3,11 +3,25 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { debounce } from '@dxos/async';
|
|
6
|
-
import { Obj
|
|
6
|
+
import { Obj } from '@dxos/echo';
|
|
7
7
|
import { type TypedObjectSerializer } from '@dxos/plugin-space/types';
|
|
8
|
-
import { DataType } from '@dxos/schema';
|
|
9
8
|
|
|
10
|
-
import {
|
|
9
|
+
import { Markdown } from './types';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Checks if an object conforms to the interface needed to render an editor.
|
|
13
|
+
* @deprecated Use Schema.instanceOf(Markdown.Document, data)
|
|
14
|
+
*/
|
|
15
|
+
// TODO(burdon): Normalize types (from FilesPlugin).
|
|
16
|
+
export const isEditorModel = (data: any): data is { id: string; text: string } =>
|
|
17
|
+
data &&
|
|
18
|
+
typeof data === 'object' &&
|
|
19
|
+
'id' in data &&
|
|
20
|
+
typeof data.id === 'string' &&
|
|
21
|
+
'text' in data &&
|
|
22
|
+
typeof data.text === 'string';
|
|
23
|
+
|
|
24
|
+
export type MarkdownProperties = Record<string, any>;
|
|
11
25
|
|
|
12
26
|
export const isMarkdownProperties = (data: unknown): data is MarkdownProperties =>
|
|
13
27
|
(Obj.isObject(data) as boolean)
|
|
@@ -26,14 +40,14 @@ export const getAbstract = (content: string) => {
|
|
|
26
40
|
return content.substring(0, 128).split('\n')[0].replaceAll(nonTitleChars, '').trim();
|
|
27
41
|
};
|
|
28
42
|
|
|
29
|
-
export const setFallbackName = debounce((doc:
|
|
43
|
+
export const setFallbackName = debounce((doc: Markdown.Document, content: string) => {
|
|
30
44
|
const name = getFallbackName(content);
|
|
31
45
|
if (doc.fallbackName !== name) {
|
|
32
46
|
doc.fallbackName = name;
|
|
33
47
|
}
|
|
34
48
|
}, 200);
|
|
35
49
|
|
|
36
|
-
export const serializer: TypedObjectSerializer<
|
|
50
|
+
export const serializer: TypedObjectSerializer<Markdown.Document> = {
|
|
37
51
|
serialize: async ({ object }): Promise<string> => {
|
|
38
52
|
const { content } = await object.content.load();
|
|
39
53
|
return JSON.stringify({ name: object.name, fallbackName: object.fallbackName, content });
|
|
@@ -41,6 +55,6 @@ export const serializer: TypedObjectSerializer<DocumentType> = {
|
|
|
41
55
|
|
|
42
56
|
deserialize: async ({ content: serialized }) => {
|
|
43
57
|
const { name, fallbackName, content } = JSON.parse(serialized);
|
|
44
|
-
return
|
|
58
|
+
return Markdown.makeDocument({ name, fallbackName, content });
|
|
45
59
|
},
|
|
46
60
|
};
|