@dxos/plugin-markdown 0.8.4-main.69d29f4 → 0.8.4-main.6fa680abb7
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/{chunk-VQ3WOAB6.mjs → MarkdownCard-KTTAKZAO.mjs} +28 -27
- package/dist/lib/browser/MarkdownCard-KTTAKZAO.mjs.map +7 -0
- package/dist/lib/browser/{chunk-KDKXFKDN.mjs → MarkdownContainer-DB5VCJSG.mjs} +45 -25
- package/dist/lib/browser/MarkdownContainer-DB5VCJSG.mjs.map +7 -0
- package/dist/lib/browser/MarkdownSettings-OD7AJSSJ.mjs +106 -0
- package/dist/lib/browser/MarkdownSettings-OD7AJSSJ.mjs.map +7 -0
- package/dist/lib/browser/{anchor-sort-WQ3TL7ZI.mjs → anchor-sort-KP3XOHL6.mjs} +6 -4
- package/dist/lib/browser/anchor-sort-KP3XOHL6.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-ULZUJKOD.mjs → app-graph-serializer-QJVGW3AI.mjs} +9 -7
- package/dist/lib/browser/app-graph-serializer-QJVGW3AI.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-GYGSMBAL.mjs +18 -0
- package/dist/lib/browser/blueprint-definition-GYGSMBAL.mjs.map +7 -0
- package/dist/lib/browser/blueprints/index.mjs +5 -4
- package/dist/lib/browser/{chunk-LMO5UVKL.mjs → chunk-2JGSYTNW.mjs} +29 -61
- package/dist/lib/browser/chunk-2JGSYTNW.mjs.map +7 -0
- package/dist/lib/browser/chunk-EY5RVGKO.mjs +178 -0
- package/dist/lib/browser/chunk-EY5RVGKO.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BX73DASG.mjs → chunk-G2MHLFEL.mjs} +281 -205
- package/dist/lib/browser/chunk-G2MHLFEL.mjs.map +7 -0
- package/dist/lib/browser/{chunk-JOXYQLKH.mjs → chunk-NAJ3XQLK.mjs} +9 -4
- package/dist/lib/browser/chunk-NAJ3XQLK.mjs.map +7 -0
- package/dist/lib/browser/chunk-RYZHVXZ5.mjs +28 -0
- package/dist/lib/browser/chunk-RYZHVXZ5.mjs.map +7 -0
- package/dist/lib/browser/{chunk-CUGDX7KA.mjs → chunk-TIV2F6SR.mjs} +2 -2
- package/dist/lib/browser/cli/index.mjs +15 -13
- package/dist/lib/browser/cli/index.mjs.map +3 -3
- package/dist/lib/browser/index.mjs +44 -45
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{operation-resolver-EGCWOQKJ.mjs → operation-resolver-QLM762DE.mjs} +6 -18
- package/dist/lib/browser/operation-resolver-QLM762DE.mjs.map +7 -0
- package/dist/lib/browser/react-surface-3KWMKHEU.mjs +117 -0
- package/dist/lib/browser/react-surface-3KWMKHEU.mjs.map +7 -0
- package/dist/lib/browser/{settings-JY5JE7MI.mjs → settings-2PHGT4PJ.mjs} +8 -5
- package/dist/lib/browser/settings-2PHGT4PJ.mjs.map +7 -0
- package/dist/lib/browser/{state-QE7VSJWJ.mjs → state-KNJ7E36W.mjs} +7 -5
- package/dist/lib/{node-esm/state-LXE5XIN4.mjs.map → browser/state-KNJ7E36W.mjs.map} +2 -2
- package/dist/lib/browser/types/index.mjs +2 -1
- package/dist/lib/node-esm/{chunk-KXEQCFMB.mjs → MarkdownCard-EFCQQR22.mjs} +28 -27
- package/dist/lib/node-esm/MarkdownCard-EFCQQR22.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-3JYPCC7M.mjs → MarkdownContainer-X3UQUNWL.mjs} +45 -25
- package/dist/lib/node-esm/MarkdownContainer-X3UQUNWL.mjs.map +7 -0
- package/dist/lib/node-esm/MarkdownSettings-U7GJ4OP3.mjs +107 -0
- package/dist/lib/node-esm/MarkdownSettings-U7GJ4OP3.mjs.map +7 -0
- package/dist/lib/node-esm/{anchor-sort-G7D5TAI6.mjs → anchor-sort-4574EWPS.mjs} +6 -4
- package/dist/lib/node-esm/anchor-sort-4574EWPS.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-W5YMQP7P.mjs → app-graph-serializer-CCMYKW2M.mjs} +9 -7
- package/dist/lib/node-esm/app-graph-serializer-CCMYKW2M.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-TZPCKPPU.mjs +19 -0
- package/dist/lib/node-esm/blueprint-definition-TZPCKPPU.mjs.map +7 -0
- package/dist/lib/node-esm/blueprints/index.mjs +5 -4
- package/dist/lib/node-esm/{chunk-W3IIKDV5.mjs → chunk-4YMS5I4L.mjs} +2 -2
- package/dist/lib/node-esm/chunk-7UHD5AKT.mjs +179 -0
- package/dist/lib/node-esm/chunk-7UHD5AKT.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-CW4FZNMZ.mjs +29 -0
- package/dist/lib/node-esm/chunk-CW4FZNMZ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-44VJC3QF.mjs → chunk-QQF75YGF.mjs} +9 -4
- package/dist/lib/node-esm/chunk-QQF75YGF.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-D4BCFPKK.mjs → chunk-RKTB7TV3.mjs} +281 -205
- package/dist/lib/node-esm/chunk-RKTB7TV3.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-PRV35A7Z.mjs → chunk-XTF6AXHM.mjs} +29 -61
- package/dist/lib/node-esm/chunk-XTF6AXHM.mjs.map +7 -0
- package/dist/lib/node-esm/cli/index.mjs +15 -13
- package/dist/lib/node-esm/cli/index.mjs.map +3 -3
- package/dist/lib/node-esm/index.mjs +44 -45
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{operation-resolver-2HIS2AQZ.mjs → operation-resolver-IYXA7HEG.mjs} +6 -18
- package/dist/lib/node-esm/operation-resolver-IYXA7HEG.mjs.map +7 -0
- package/dist/lib/node-esm/react-surface-CYC6UH4E.mjs +118 -0
- package/dist/lib/node-esm/react-surface-CYC6UH4E.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-4UGMPIRY.mjs → settings-4HAQICPV.mjs} +8 -5
- package/dist/lib/node-esm/settings-4HAQICPV.mjs.map +7 -0
- package/dist/lib/node-esm/{state-LXE5XIN4.mjs → state-XAMY5RVG.mjs} +7 -5
- package/dist/lib/{browser/state-QE7VSJWJ.mjs.map → node-esm/state-XAMY5RVG.mjs.map} +2 -2
- package/dist/lib/node-esm/types/index.mjs +2 -1
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/blueprints/functions/create.d.ts.map +1 -1
- package/dist/types/src/blueprints/functions/index.d.ts +41 -3
- package/dist/types/src/blueprints/functions/index.d.ts.map +1 -1
- package/dist/types/src/blueprints/functions/open.d.ts +8 -1
- package/dist/types/src/blueprints/functions/open.d.ts.map +1 -1
- package/dist/types/src/blueprints/functions/update.d.ts +16 -3
- package/dist/types/src/blueprints/functions/update.d.ts.map +1 -1
- package/dist/types/src/blueprints/index.d.ts +1 -1
- package/dist/types/src/blueprints/index.d.ts.map +1 -1
- package/dist/types/src/blueprints/markdown-blueprint.d.ts +3 -20
- package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -1
- package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts +3 -2
- package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +1 -1
- package/dist/types/src/capabilities/anchor-sort/index.d.ts +1 -1
- package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +2 -2
- package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +1 -1
- package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +3 -7
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts +1 -1
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings/index.d.ts +1 -1
- package/dist/types/src/capabilities/settings/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings/settings.d.ts +3 -2
- package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/state/state.d.ts +1 -1
- package/dist/types/src/cli/plugin.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +2 -2
- package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +4 -3
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +2 -0
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +5 -5
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -8
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -0
- package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/MarkdownCard/index.d.ts +0 -1
- package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers/MarkdownContainer}/MarkdownContainer.d.ts +6 -6
- package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +1 -0
- package/dist/types/src/{components → containers/MarkdownContainer}/MarkdownContainer.stories.d.ts +31 -1
- package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +1 -0
- package/dist/types/src/containers/MarkdownContainer/index.d.ts +3 -0
- package/dist/types/src/containers/MarkdownContainer/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
- package/dist/types/src/containers/MarkdownSettings/index.d.ts +3 -0
- package/dist/types/src/containers/MarkdownSettings/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +6 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/hooks/useExtensions.d.ts +3 -3
- package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
- package/dist/types/src/hooks/useSelectCurrentThread.d.ts +1 -1
- package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +30 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Markdown.d.ts +1 -1
- package/dist/types/src/types/Markdown.d.ts.map +1 -1
- package/dist/types/src/types/MarkdownAction.d.ts +2 -22
- package/dist/types/src/types/MarkdownAction.d.ts.map +1 -1
- package/dist/types/src/types/events.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +1 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +67 -60
- package/src/MarkdownPlugin.tsx +24 -35
- package/src/blueprints/functions/create.conversations.json +1 -1
- package/src/blueprints/functions/create.test.ts +24 -57
- package/src/blueprints/functions/create.ts +6 -5
- package/src/blueprints/functions/index.ts +11 -3
- package/src/blueprints/functions/open.ts +10 -10
- package/src/blueprints/functions/update.conversations.json +1 -1
- package/src/blueprints/functions/update.test.ts +133 -67
- package/src/blueprints/functions/update.ts +54 -13
- package/src/blueprints/index.ts +1 -1
- package/src/blueprints/markdown-blueprint.ts +14 -6
- package/src/capabilities/anchor-sort/anchor-sort.ts +3 -2
- package/src/capabilities/app-graph-serializer/app-graph-serializer.ts +5 -4
- package/src/capabilities/artifact-definition/artifact-definition.ts +2 -2
- package/src/capabilities/blueprint-definition/blueprint-definition.ts +6 -14
- package/src/capabilities/operation-resolver/operation-resolver.ts +3 -14
- package/src/capabilities/react-surface/react-surface.tsx +30 -19
- package/src/capabilities/settings/settings.ts +3 -2
- package/src/capabilities/state/state.ts +2 -2
- package/src/cli/plugin.ts +5 -5
- package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
- package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +25 -22
- package/src/components/MarkdownEditor/MarkdownEditor.tsx +43 -15
- package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +6 -5
- package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +13 -12
- package/src/components/index.ts +2 -14
- package/src/{components → containers}/MarkdownCard/MarkdownCard.stories.tsx +17 -7
- package/src/{components → containers}/MarkdownCard/MarkdownCard.tsx +24 -25
- package/src/{components → containers}/MarkdownCard/index.ts +0 -2
- package/src/{components → containers/MarkdownContainer}/MarkdownContainer.stories.tsx +22 -9
- package/src/{components → containers/MarkdownContainer}/MarkdownContainer.tsx +57 -34
- package/src/containers/MarkdownContainer/index.ts +6 -0
- package/src/{components → containers}/MarkdownSettings/MarkdownSettings.tsx +24 -24
- package/src/containers/MarkdownSettings/index.ts +7 -0
- package/src/containers/index.ts +11 -0
- package/src/hooks/useEditorMenuOptions.ts +1 -1
- package/src/hooks/useExtensions.tsx +52 -89
- package/src/hooks/useLinkQuery.ts +3 -3
- package/src/hooks/useSelectCurrentThread.tsx +6 -6
- package/src/index.ts +2 -0
- package/src/meta.ts +1 -1
- package/src/testing.ts +2 -2
- package/src/translations.ts +3 -0
- package/src/types/Markdown.ts +13 -5
- package/src/types/MarkdownAction.ts +3 -18
- package/src/types/capabilities.ts +4 -4
- package/src/types/events.ts +4 -3
- package/src/util.tsx +2 -2
- package/dist/lib/browser/MarkdownCard-HFNNE4B4.mjs +0 -12
- package/dist/lib/browser/MarkdownCard-HFNNE4B4.mjs.map +0 -7
- package/dist/lib/browser/MarkdownContainer-V7EAADMF.mjs +0 -12
- package/dist/lib/browser/MarkdownContainer-V7EAADMF.mjs.map +0 -7
- package/dist/lib/browser/anchor-sort-WQ3TL7ZI.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-ULZUJKOD.mjs.map +0 -7
- package/dist/lib/browser/blueprint-definition-TLV4PNZW.mjs +0 -19
- package/dist/lib/browser/blueprint-definition-TLV4PNZW.mjs.map +0 -7
- package/dist/lib/browser/chunk-BX73DASG.mjs.map +0 -7
- package/dist/lib/browser/chunk-FWQQW6KU.mjs +0 -144
- package/dist/lib/browser/chunk-FWQQW6KU.mjs.map +0 -7
- package/dist/lib/browser/chunk-JOXYQLKH.mjs.map +0 -7
- package/dist/lib/browser/chunk-KDKXFKDN.mjs.map +0 -7
- package/dist/lib/browser/chunk-LMO5UVKL.mjs.map +0 -7
- package/dist/lib/browser/chunk-S45ULIOG.mjs +0 -101
- package/dist/lib/browser/chunk-S45ULIOG.mjs.map +0 -7
- package/dist/lib/browser/chunk-VQ3WOAB6.mjs.map +0 -7
- package/dist/lib/browser/operation-resolver-EGCWOQKJ.mjs.map +0 -7
- package/dist/lib/browser/react-surface-64FZ7T7F.mjs +0 -213
- package/dist/lib/browser/react-surface-64FZ7T7F.mjs.map +0 -7
- package/dist/lib/browser/settings-JY5JE7MI.mjs.map +0 -7
- package/dist/lib/node-esm/MarkdownCard-GMNXUWWR.mjs +0 -13
- package/dist/lib/node-esm/MarkdownCard-GMNXUWWR.mjs.map +0 -7
- package/dist/lib/node-esm/MarkdownContainer-LUSMORP2.mjs +0 -13
- package/dist/lib/node-esm/MarkdownContainer-LUSMORP2.mjs.map +0 -7
- package/dist/lib/node-esm/anchor-sort-G7D5TAI6.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-W5YMQP7P.mjs.map +0 -7
- package/dist/lib/node-esm/blueprint-definition-HYFA7BKQ.mjs +0 -20
- package/dist/lib/node-esm/blueprint-definition-HYFA7BKQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3JYPCC7M.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-44VJC3QF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-D4BCFPKK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-EYAFC4N7.mjs +0 -145
- package/dist/lib/node-esm/chunk-EYAFC4N7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-KXEQCFMB.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PRV35A7Z.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SDTYEGGL.mjs +0 -102
- package/dist/lib/node-esm/chunk-SDTYEGGL.mjs.map +0 -7
- package/dist/lib/node-esm/operation-resolver-2HIS2AQZ.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-PKEVHTJK.mjs +0 -214
- package/dist/lib/node-esm/react-surface-PKEVHTJK.mjs.map +0 -7
- package/dist/lib/node-esm/settings-4UGMPIRY.mjs.map +0 -7
- package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownCard/index.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownContainer.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownSettings/index.d.ts +0 -2
- package/dist/types/src/components/MarkdownSettings/index.d.ts.map +0 -1
- package/dist/types/src/components/Suggestions.stories.d.ts +0 -11
- package/dist/types/src/components/Suggestions.stories.d.ts.map +0 -1
- package/src/components/MarkdownSettings/index.ts +0 -5
- package/src/components/Suggestions.stories.tsx +0 -215
- /package/dist/lib/browser/{chunk-CUGDX7KA.mjs.map → chunk-TIV2F6SR.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-W3IIKDV5.mjs.map → chunk-4YMS5I4L.mjs.map} +0 -0
- /package/dist/types/src/{components → containers}/MarkdownCard/MarkdownCard.d.ts +0 -0
- /package/dist/types/src/{components → containers}/MarkdownCard/MarkdownCard.stories.d.ts +0 -0
- /package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.d.ts +0 -0
|
@@ -1,93 +1,117 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
} from "./chunk-
|
|
3
|
+
Markdown_exports
|
|
4
|
+
} from "./chunk-XTF6AXHM.mjs";
|
|
5
5
|
import {
|
|
6
|
-
Markdown_exports,
|
|
7
6
|
meta
|
|
8
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CW4FZNMZ.mjs";
|
|
9
8
|
|
|
10
|
-
// src/
|
|
11
|
-
import
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
"object name placeholder",
|
|
45
|
-
{
|
|
46
|
-
ns: type,
|
|
47
|
-
default: "New object"
|
|
9
|
+
// src/util.tsx
|
|
10
|
+
import { debounce } from "@dxos/async";
|
|
11
|
+
import { Obj } from "@dxos/echo";
|
|
12
|
+
var isEditorModel = (data) => data && typeof data === "object" && "id" in data && typeof data.id === "string" && "text" in data && typeof data.text === "string";
|
|
13
|
+
var isMarkdownProperties = (data) => Obj.isObject(data) ? true : data && typeof data === "object" ? "title" in data && typeof data.title === "string" : false;
|
|
14
|
+
var nonTitleChars = /[^\w ]/g;
|
|
15
|
+
var skipPatterns = [
|
|
16
|
+
/^!\[/,
|
|
17
|
+
/^---\s*$/,
|
|
18
|
+
/^```/,
|
|
19
|
+
/^\s*$/
|
|
20
|
+
];
|
|
21
|
+
var titlePatterns = [
|
|
22
|
+
/^#{1,6}\s+(.+)/
|
|
23
|
+
];
|
|
24
|
+
var getFallbackName = (content = "") => {
|
|
25
|
+
const len = content.length;
|
|
26
|
+
let i = 0;
|
|
27
|
+
while (i < len) {
|
|
28
|
+
let lineEnd = i;
|
|
29
|
+
while (lineEnd < len && content[lineEnd] !== "\n") {
|
|
30
|
+
lineEnd++;
|
|
31
|
+
}
|
|
32
|
+
const line = content.slice(i, lineEnd).trim();
|
|
33
|
+
i = lineEnd + 1;
|
|
34
|
+
if (skipPatterns.some((pattern) => pattern.test(line))) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
for (const pattern of titlePatterns) {
|
|
38
|
+
const match = pattern.exec(line);
|
|
39
|
+
if (match) {
|
|
40
|
+
const text2 = match[1].replaceAll(nonTitleChars, "").trim();
|
|
41
|
+
if (text2.length > 0) {
|
|
42
|
+
return text2;
|
|
48
43
|
}
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
insertAtLineStart(view, head, `!${link}
|
|
62
|
-
`);
|
|
63
|
-
} else {
|
|
64
|
-
insertAtCursor(view, head, `${link} `);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const maxLen = 32;
|
|
47
|
+
const text = line.replaceAll(nonTitleChars, "").trim();
|
|
48
|
+
if (text.length > 0) {
|
|
49
|
+
if (text.length > maxLen) {
|
|
50
|
+
const words = text.split(/\s+/);
|
|
51
|
+
let result = "";
|
|
52
|
+
for (const word of words) {
|
|
53
|
+
const next = result.length === 0 ? word : result + " " + word;
|
|
54
|
+
if (next.length > maxLen) {
|
|
55
|
+
break;
|
|
65
56
|
}
|
|
57
|
+
result = next;
|
|
66
58
|
}
|
|
67
|
-
|
|
68
|
-
}) ?? [];
|
|
69
|
-
return [
|
|
70
|
-
{
|
|
71
|
-
id: "echo",
|
|
72
|
-
items
|
|
59
|
+
return result + "\u2026";
|
|
73
60
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
61
|
+
return text;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return "";
|
|
65
|
+
};
|
|
66
|
+
var getContentSnippet = (content = "", maxLines = 3) => {
|
|
67
|
+
const abstract = content.split("\n").filter((line) => !line.startsWith("!")).filter((line) => line.trim() !== "");
|
|
68
|
+
return abstract.slice(0, maxLines).join("\n") ?? "";
|
|
81
69
|
};
|
|
70
|
+
var setFallbackName = debounce((doc, content = "") => {
|
|
71
|
+
const name = getFallbackName(content);
|
|
72
|
+
if (doc.fallbackName !== name) {
|
|
73
|
+
Obj.change(doc, (d) => {
|
|
74
|
+
d.fallbackName = name;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}, 200);
|
|
78
|
+
var serializer = {
|
|
79
|
+
serialize: async ({ object }) => {
|
|
80
|
+
const { content } = await object.content.load();
|
|
81
|
+
return JSON.stringify({
|
|
82
|
+
name: object.name,
|
|
83
|
+
fallbackName: object.fallbackName,
|
|
84
|
+
content
|
|
85
|
+
});
|
|
86
|
+
},
|
|
87
|
+
deserialize: async ({ content: serialized }) => {
|
|
88
|
+
const { name, fallbackName, content } = JSON.parse(serialized);
|
|
89
|
+
return Markdown_exports.make({
|
|
90
|
+
name,
|
|
91
|
+
fallbackName,
|
|
92
|
+
content
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
// src/components/MarkdownEditor/MarkdownEditor.tsx
|
|
98
|
+
import { createContext } from "@radix-ui/react-context";
|
|
99
|
+
import React4, { useMemo as useMemo6, useState as useState2 } from "react";
|
|
100
|
+
import { createPortal as createPortal2 } from "react-dom";
|
|
101
|
+
import { Surface } from "@dxos/app-framework/ui";
|
|
102
|
+
import { DXN } from "@dxos/keys";
|
|
103
|
+
import { useClient } from "@dxos/react-client";
|
|
104
|
+
import { EditorMenuProvider, useEditorMenu, useEditorToolbar } from "@dxos/react-ui-editor";
|
|
105
|
+
import { isNonNullable } from "@dxos/util";
|
|
82
106
|
|
|
83
107
|
// src/hooks/useEditorMenuOptions.ts
|
|
84
|
-
import { useCallback
|
|
85
|
-
import { toLocalizedString
|
|
108
|
+
import { useCallback, useMemo, useRef } from "react";
|
|
109
|
+
import { toLocalizedString, useTranslation } from "@dxos/react-ui";
|
|
86
110
|
import { filterMenuGroups, formattingCommands, linkSlashCommands } from "@dxos/react-ui-editor";
|
|
87
111
|
import { Domino } from "@dxos/ui";
|
|
88
112
|
var useEditorMenuOptions = ({ editorView, slashCommandGroups, onLinkQuery }) => {
|
|
89
|
-
const { t } =
|
|
90
|
-
const getMenu =
|
|
113
|
+
const { t } = useTranslation(meta.id);
|
|
114
|
+
const getMenu = useCallback(({ text, trigger }) => {
|
|
91
115
|
switch (trigger) {
|
|
92
116
|
case "@": {
|
|
93
117
|
return onLinkQuery?.(text) ?? [];
|
|
@@ -98,7 +122,7 @@ var useEditorMenuOptions = ({ editorView, slashCommandGroups, onLinkQuery }) =>
|
|
|
98
122
|
formattingCommands,
|
|
99
123
|
linkSlashCommands,
|
|
100
124
|
...slashCommandGroups ?? []
|
|
101
|
-
], (item) => text ?
|
|
125
|
+
], (item) => text ? toLocalizedString(item.label, t).toLowerCase().includes(text.toLowerCase()) : true);
|
|
102
126
|
}
|
|
103
127
|
}
|
|
104
128
|
}, [
|
|
@@ -106,7 +130,7 @@ var useEditorMenuOptions = ({ editorView, slashCommandGroups, onLinkQuery }) =>
|
|
|
106
130
|
onLinkQuery
|
|
107
131
|
]);
|
|
108
132
|
const viewRef = useRef(editorView);
|
|
109
|
-
return
|
|
133
|
+
return useMemo(() => {
|
|
110
134
|
const trigger = onLinkQuery ? [
|
|
111
135
|
"/",
|
|
112
136
|
"@"
|
|
@@ -117,7 +141,7 @@ var useEditorMenuOptions = ({ editorView, slashCommandGroups, onLinkQuery }) =>
|
|
|
117
141
|
delay: 3e3,
|
|
118
142
|
content: () => {
|
|
119
143
|
const pressEl = Domino.of("span").text("Press");
|
|
120
|
-
const triggerEls = trigger.map((text) => Domino.of("span").classNames("mx-1
|
|
144
|
+
const triggerEls = trigger.map((text) => Domino.of("span").classNames("mx-1 px-1.5 pt-[1px] pb-[2px] border border-separator rounded-xs").text(text));
|
|
121
145
|
const forCommandsEl = Domino.of("span").text("for commands.");
|
|
122
146
|
return Domino.of("div").children(pressEl, ...triggerEls, forCommandsEl).root;
|
|
123
147
|
}
|
|
@@ -135,43 +159,38 @@ var useEditorMenuOptions = ({ editorView, slashCommandGroups, onLinkQuery }) =>
|
|
|
135
159
|
};
|
|
136
160
|
|
|
137
161
|
// src/hooks/useExtensions.tsx
|
|
138
|
-
import
|
|
139
|
-
import { createRoot } from "react-dom/client";
|
|
140
|
-
import { Common as Common2 } from "@dxos/app-framework";
|
|
141
|
-
import { useOperationInvoker } from "@dxos/app-framework/react";
|
|
162
|
+
import { useMemo as useMemo2 } from "react";
|
|
142
163
|
import { debounceAndThrottle } from "@dxos/async";
|
|
143
164
|
import { Obj as Obj2 } from "@dxos/echo";
|
|
144
165
|
import { createDocAccessor } from "@dxos/echo-db";
|
|
145
166
|
import { invariant } from "@dxos/invariant";
|
|
146
167
|
import { getSpace, useObject } from "@dxos/react-client/echo";
|
|
147
168
|
import { useIdentity } from "@dxos/react-client/halo";
|
|
148
|
-
import { Icon, ThemeProvider } from "@dxos/react-ui";
|
|
149
169
|
import { Text } from "@dxos/schema";
|
|
170
|
+
import { Domino as Domino2 } from "@dxos/ui";
|
|
150
171
|
import { Cursor, EditorView, InputModeExtensions, createDataExtensions, decorateMarkdown, documentId, folding, formattingKeymap, linkTooltip, listener, preview, replacer, selectionState, typewriter } from "@dxos/ui-editor";
|
|
151
|
-
import {
|
|
152
|
-
import { isTruthy } from "@dxos/util";
|
|
172
|
+
import { isTruthy, safeUrl } from "@dxos/util";
|
|
153
173
|
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useExtensions.tsx";
|
|
154
|
-
var useExtensions = ({ id, object, settings, selectionManager, viewMode, editorStateStore, previewOptions }) => {
|
|
155
|
-
const { invokePromise } = useOperationInvoker();
|
|
174
|
+
var useExtensions = ({ id, object, settings, selectionManager, viewMode, editorStateStore, previewOptions, onSelectObject }) => {
|
|
156
175
|
const identity = useIdentity();
|
|
157
176
|
const space = getSpace(object);
|
|
158
177
|
const contentRef = Obj2.instanceOf(Markdown_exports.Document, object) ? object.content : void 0;
|
|
159
178
|
useObject(contentRef);
|
|
160
179
|
const target = contentRef?.target ?? (Obj2.instanceOf(Text.Text, object) ? object : void 0);
|
|
161
|
-
const baseExtensions =
|
|
180
|
+
const baseExtensions = useMemo2(() => createBaseExtensions({
|
|
162
181
|
id,
|
|
163
182
|
object,
|
|
164
183
|
settings,
|
|
165
184
|
selectionManager,
|
|
166
185
|
viewMode,
|
|
167
186
|
previewOptions,
|
|
168
|
-
|
|
187
|
+
onSelectObject
|
|
169
188
|
}), [
|
|
170
189
|
id,
|
|
171
190
|
object,
|
|
172
191
|
viewMode,
|
|
173
|
-
invokePromise,
|
|
174
192
|
previewOptions,
|
|
193
|
+
onSelectObject,
|
|
175
194
|
settings,
|
|
176
195
|
settings?.debug,
|
|
177
196
|
settings?.editorInputMode,
|
|
@@ -180,7 +199,7 @@ var useExtensions = ({ id, object, settings, selectionManager, viewMode, editorS
|
|
|
180
199
|
settings?.typewriter,
|
|
181
200
|
selectionManager
|
|
182
201
|
]);
|
|
183
|
-
return
|
|
202
|
+
return useMemo2(() => [
|
|
184
203
|
// TODO(burdon): Pass this in?
|
|
185
204
|
// NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
|
|
186
205
|
target && createDataExtensions({
|
|
@@ -208,7 +227,7 @@ var useExtensions = ({ id, object, settings, selectionManager, viewMode, editorS
|
|
|
208
227
|
baseExtensions
|
|
209
228
|
]);
|
|
210
229
|
};
|
|
211
|
-
var createBaseExtensions = ({ id, object,
|
|
230
|
+
var createBaseExtensions = ({ id, object, onSelectObject, settings, selectionManager, viewMode, previewOptions }) => {
|
|
212
231
|
const extensions = [
|
|
213
232
|
selectionManager && selectionChange(selectionManager),
|
|
214
233
|
settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],
|
|
@@ -222,16 +241,8 @@ var createBaseExtensions = ({ id, object, invokePromise, settings, selectionMana
|
|
|
222
241
|
numberedHeadings: settings?.numberedHeadings ? {
|
|
223
242
|
from: 2
|
|
224
243
|
} : void 0,
|
|
225
|
-
// TODO(wittjosiah): For internal links
|
|
226
|
-
|
|
227
|
-
renderLinkButton: invokePromise && (object || id) ? createLinkRenderer((targetId) => {
|
|
228
|
-
void invokePromise(Common2.LayoutOperation.Open, {
|
|
229
|
-
subject: [
|
|
230
|
-
targetId
|
|
231
|
-
],
|
|
232
|
-
pivotId: object && Obj2.isObject(object) ? Obj2.getDXN(object).toString() : id
|
|
233
|
-
});
|
|
234
|
-
}) : void 0
|
|
244
|
+
// TODO(wittjosiah): For internal links render the label of the object.
|
|
245
|
+
renderLinkButton: onSelectObject && createRenderLink(onSelectObject)
|
|
235
246
|
}),
|
|
236
247
|
linkTooltip(renderLinkTooltip),
|
|
237
248
|
preview(previewOptions),
|
|
@@ -249,32 +260,31 @@ var createBaseExtensions = ({ id, object, invokePromise, settings, selectionMana
|
|
|
249
260
|
return extensions;
|
|
250
261
|
};
|
|
251
262
|
var selectionChange = (selectionManager) => {
|
|
252
|
-
|
|
263
|
+
const debouncedHandler = debounceAndThrottle((update) => {
|
|
264
|
+
const id = update.state.facet(documentId);
|
|
265
|
+
const cursorConverter = update.state.facet(Cursor.converter);
|
|
266
|
+
const selection = update.state.selection;
|
|
267
|
+
const ranges = selection.ranges.map((range) => ({
|
|
268
|
+
from: cursorConverter.toCursor(range.from),
|
|
269
|
+
to: cursorConverter.toCursor(range.to)
|
|
270
|
+
})).filter(({ from, to }) => to > from);
|
|
271
|
+
selectionManager.updateMultiRange(id, ranges);
|
|
272
|
+
}, 100);
|
|
273
|
+
return EditorView.updateListener.of((update) => {
|
|
253
274
|
if (update.selectionSet) {
|
|
254
|
-
|
|
255
|
-
const cursorConverter = update.state.facet(Cursor.converter);
|
|
256
|
-
const selection = update.state.selection;
|
|
257
|
-
const ranges = selection.ranges.map((range) => ({
|
|
258
|
-
from: cursorConverter.toCursor(range.from),
|
|
259
|
-
to: cursorConverter.toCursor(range.to)
|
|
260
|
-
})).filter(({ from, to }) => to > from);
|
|
261
|
-
selectionManager.updateMultiRange(id, ranges);
|
|
275
|
+
debouncedHandler(update);
|
|
262
276
|
}
|
|
263
|
-
}
|
|
264
|
-
};
|
|
265
|
-
var style = {
|
|
266
|
-
hover: "rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400",
|
|
267
|
-
icon: "inline-block leading-none mis-1 cursor-pointer"
|
|
277
|
+
});
|
|
268
278
|
};
|
|
269
|
-
var
|
|
270
|
-
const isInternal = url.startsWith("/") ||
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
279
|
+
var createRenderLink = (onSelectObject) => (el, { url }) => {
|
|
280
|
+
const isInternal = url.startsWith("/") || url.startsWith(window.location.origin);
|
|
281
|
+
const anchor = Domino2.of("a").classNames("dx-link dx-icon-inline ms-1").children(Domino2.svg(isInternal ? "ph--arrow-square-down--regular" : "ph--arrow-square-out--regular"));
|
|
282
|
+
if (isInternal) {
|
|
283
|
+
anchor.on("click", () => {
|
|
274
284
|
const qualifiedId = url.split("/").at(-1);
|
|
275
285
|
invariant(qualifiedId, "Invalid link format.", {
|
|
276
286
|
F: __dxlog_file,
|
|
277
|
-
L:
|
|
287
|
+
L: 219,
|
|
278
288
|
S: void 0,
|
|
279
289
|
A: [
|
|
280
290
|
"qualifiedId",
|
|
@@ -282,56 +292,112 @@ var createLinkRenderer = (onSelectObject) => (el, { url }) => {
|
|
|
282
292
|
]
|
|
283
293
|
});
|
|
284
294
|
onSelectObject(qualifiedId);
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
}, /* @__PURE__ */ React.createElement(Icon, {
|
|
295
|
-
icon: isInternal ? "ph--arrow-square-down--bold" : "ph--arrow-square-out--bold",
|
|
296
|
-
size: 4,
|
|
297
|
-
classNames: style.icon
|
|
298
|
-
})));
|
|
295
|
+
});
|
|
296
|
+
} else {
|
|
297
|
+
anchor.attributes({
|
|
298
|
+
href: url,
|
|
299
|
+
rel: "noreferrer",
|
|
300
|
+
target: "_blank"
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
el.appendChild(anchor.root);
|
|
299
304
|
};
|
|
300
305
|
var renderLinkTooltip = (el, { url }) => {
|
|
301
|
-
|
|
302
|
-
renderRoot(el, /* @__PURE__ */ React.createElement("a", {
|
|
306
|
+
el.appendChild(Domino2.of("a").attributes({
|
|
303
307
|
href: url,
|
|
304
|
-
rel: "noreferrer",
|
|
305
308
|
target: "_blank",
|
|
306
|
-
|
|
307
|
-
}
|
|
308
|
-
icon: "ph--arrow-square-out--bold",
|
|
309
|
-
size: 4,
|
|
310
|
-
classNames: style.icon
|
|
311
|
-
})));
|
|
309
|
+
rel: "noreferrer"
|
|
310
|
+
}).classNames("dx-link flex items-center gap-2").text(safeUrl(url)?.origin ?? url).children(Domino2.svg("ph--arrow-square-out--regular")).root);
|
|
312
311
|
};
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
312
|
+
|
|
313
|
+
// src/hooks/useLinkQuery.ts
|
|
314
|
+
import * as Option from "effect/Option";
|
|
315
|
+
import { useCallback as useCallback2, useMemo as useMemo3 } from "react";
|
|
316
|
+
import { usePluginManager } from "@dxos/app-framework/ui";
|
|
317
|
+
import { AppCapabilities } from "@dxos/app-toolkit";
|
|
318
|
+
import { Filter, Obj as Obj3, Query, Type } from "@dxos/echo";
|
|
319
|
+
import { EntityKind, SystemTypeAnnotation, getTypeAnnotation } from "@dxos/echo/internal";
|
|
320
|
+
import { toLocalizedString as toLocalizedString2, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
321
|
+
import { insertAtCursor, insertAtLineStart } from "@dxos/ui-editor";
|
|
322
|
+
var useLinkQuery = (db) => {
|
|
323
|
+
const { t } = useTranslation2();
|
|
324
|
+
const manager = usePluginManager();
|
|
325
|
+
const resolve = useCallback2((typename) => manager.capabilities.getAll(AppCapabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {}, [
|
|
326
|
+
manager
|
|
327
|
+
]);
|
|
328
|
+
const filter = useMemo3(() => Filter.or(...(db?.schemaRegistry.query({
|
|
329
|
+
location: [
|
|
330
|
+
"database",
|
|
331
|
+
"runtime"
|
|
332
|
+
]
|
|
333
|
+
}).runSync() ?? []).filter((schema) => getTypeAnnotation(schema)?.kind !== EntityKind.Relation).filter((schema) => !SystemTypeAnnotation.get(schema).pipe(Option.getOrElse(() => false))).map((schema) => Filter.typename(Type.getTypename(schema)))), [
|
|
334
|
+
db
|
|
335
|
+
]);
|
|
336
|
+
const handleLinkQuery = useCallback2(async (query) => {
|
|
337
|
+
const name = query?.startsWith("@") ? query.slice(1).toLowerCase() : query?.toLowerCase() ?? "";
|
|
338
|
+
const results = await db?.query(Query.select(filter)).run();
|
|
339
|
+
const getLabel = (object) => {
|
|
340
|
+
const label = Obj3.getLabel(object);
|
|
341
|
+
if (label) {
|
|
342
|
+
return label;
|
|
343
|
+
}
|
|
344
|
+
const type = Obj3.getTypename(object);
|
|
345
|
+
const metadata = resolve(type);
|
|
346
|
+
return metadata.label?.(object) || [
|
|
347
|
+
"object name placeholder",
|
|
348
|
+
{
|
|
349
|
+
ns: type,
|
|
350
|
+
default: "New object"
|
|
351
|
+
}
|
|
352
|
+
];
|
|
353
|
+
};
|
|
354
|
+
const items = results?.filter((object) => toLocalizedString2(getLabel(object), t).toLowerCase().includes(name)).map((object) => {
|
|
355
|
+
const metadata = resolve(Obj3.getTypename(object));
|
|
356
|
+
const label = toLocalizedString2(getLabel(object), t);
|
|
357
|
+
return {
|
|
358
|
+
id: object.id,
|
|
359
|
+
label,
|
|
360
|
+
icon: metadata.icon,
|
|
361
|
+
onSelect: ({ view, head }) => {
|
|
362
|
+
const link = `[${label}](${Obj3.getDXN(object)})`;
|
|
363
|
+
if (query?.startsWith("@")) {
|
|
364
|
+
insertAtLineStart(view, head, `!${link}
|
|
365
|
+
`);
|
|
366
|
+
} else {
|
|
367
|
+
insertAtCursor(view, head, `${link} `);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
};
|
|
371
|
+
}) ?? [];
|
|
372
|
+
return [
|
|
373
|
+
{
|
|
374
|
+
id: "echo",
|
|
375
|
+
items
|
|
376
|
+
}
|
|
377
|
+
];
|
|
378
|
+
}, [
|
|
379
|
+
db,
|
|
380
|
+
filter,
|
|
381
|
+
resolve
|
|
382
|
+
]);
|
|
383
|
+
return handleLinkQuery;
|
|
318
384
|
};
|
|
319
385
|
|
|
320
386
|
// src/hooks/useSelectCurrentThread.tsx
|
|
321
387
|
import { EditorView as EditorView2 } from "@codemirror/view";
|
|
322
388
|
import * as Effect from "effect/Effect";
|
|
323
389
|
import { useMemo as useMemo4 } from "react";
|
|
324
|
-
import {
|
|
325
|
-
import {
|
|
390
|
+
import { useOperationResolver } from "@dxos/app-framework/ui";
|
|
391
|
+
import { LayoutOperation } from "@dxos/app-toolkit";
|
|
326
392
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
327
393
|
import { OperationResolver } from "@dxos/operation";
|
|
328
394
|
import { Cursor as Cursor2, setSelection } from "@dxos/ui-editor";
|
|
329
395
|
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx";
|
|
330
|
-
var useSelectCurrentThread = (editorView, documentId2) => {
|
|
396
|
+
var useSelectCurrentThread = (editorView, documentId2, attendableId) => {
|
|
331
397
|
const scrollIntoViewHandler = useMemo4(() => OperationResolver.make({
|
|
332
|
-
operation:
|
|
398
|
+
operation: LayoutOperation.ScrollIntoView,
|
|
333
399
|
position: "hoist",
|
|
334
|
-
filter: (input) => !!editorView && input.
|
|
400
|
+
filter: (input) => !!editorView && !!input.cursor && input.subject === attendableId,
|
|
335
401
|
handler: (input) => Effect.sync(() => {
|
|
336
402
|
invariant2(editorView, "Editor view is not defined.", {
|
|
337
403
|
F: __dxlog_file2,
|
|
@@ -373,30 +439,21 @@ var useSelectCurrentThread = (editorView, documentId2) => {
|
|
|
373
439
|
})
|
|
374
440
|
}), [
|
|
375
441
|
documentId2,
|
|
442
|
+
attendableId,
|
|
376
443
|
editorView
|
|
377
444
|
]);
|
|
378
445
|
useOperationResolver(meta.id, scrollIntoViewHandler);
|
|
379
446
|
};
|
|
380
447
|
|
|
381
|
-
// src/components/MarkdownEditor/MarkdownEditor.tsx
|
|
382
|
-
import { createContext } from "@radix-ui/react-context";
|
|
383
|
-
import React5, { useMemo as useMemo6, useState as useState2 } from "react";
|
|
384
|
-
import { createPortal as createPortal2 } from "react-dom";
|
|
385
|
-
import { Surface } from "@dxos/app-framework/react";
|
|
386
|
-
import { DXN } from "@dxos/keys";
|
|
387
|
-
import { useClient } from "@dxos/react-client";
|
|
388
|
-
import { EditorMenuProvider, useEditorMenu, useEditorToolbar } from "@dxos/react-ui-editor";
|
|
389
|
-
import { isNonNullable } from "@dxos/util";
|
|
390
|
-
|
|
391
448
|
// src/components/MarkdownEditor/MarkdownEditorContent.tsx
|
|
392
449
|
import { RegistryContext } from "@effect-atom/atom-react";
|
|
393
|
-
import
|
|
450
|
+
import React, { forwardRef, useCallback as useCallback3, useContext, useEffect, useImperativeHandle, useMemo as useMemo5 } from "react";
|
|
394
451
|
import { useThemeContext, useTranslation as useTranslation3 } from "@dxos/react-ui";
|
|
395
452
|
import { useTextEditor } from "@dxos/react-ui-editor";
|
|
396
453
|
import { createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, editorSlots, formattingListener, processEditorPayload, stackItemContentEditorClassNames } from "@dxos/ui-editor";
|
|
397
454
|
import { mx } from "@dxos/ui-theme";
|
|
398
455
|
import { isTruthy as isTruthy2 } from "@dxos/util";
|
|
399
|
-
var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, role, viewMode, initialValue, editorStateStore, toolbarState, extensions, scrollPastEnd, slots = editorSlots, onFileUpload }, forwardedRef) => {
|
|
456
|
+
var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, attendableId, role, viewMode, initialValue, editorStateStore, toolbarState, extensions, scrollPastEnd, slots = editorSlots, onFileUpload }, forwardedRef) => {
|
|
400
457
|
const { t } = useTranslation3(meta.id);
|
|
401
458
|
const { themeMode } = useThemeContext();
|
|
402
459
|
const registry = useContext(RegistryContext);
|
|
@@ -462,15 +519,15 @@ var MarkdownEditorContent = /* @__PURE__ */ forwardRef(({ classNames, id, role,
|
|
|
462
519
|
useImperativeHandle(forwardedRef, () => editorView, [
|
|
463
520
|
editorView
|
|
464
521
|
]);
|
|
465
|
-
useSelectCurrentThread(editorView, id);
|
|
522
|
+
useSelectCurrentThread(editorView, id, attendableId ?? id);
|
|
466
523
|
useTest(editorView);
|
|
467
|
-
return /* @__PURE__ */
|
|
524
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
525
|
+
...focusAttributes,
|
|
468
526
|
role: "none",
|
|
469
|
-
ref: parentRef,
|
|
470
527
|
"data-testid": "composer.markdownRoot",
|
|
471
|
-
className: mx(stackItemContentEditorClassNames(role), classNames),
|
|
472
528
|
"data-popover-collision-boundary": true,
|
|
473
|
-
|
|
529
|
+
className: mx(stackItemContentEditorClassNames(role), classNames),
|
|
530
|
+
ref: parentRef
|
|
474
531
|
});
|
|
475
532
|
});
|
|
476
533
|
var useTest = (view) => {
|
|
@@ -485,12 +542,12 @@ var useTest = (view) => {
|
|
|
485
542
|
};
|
|
486
543
|
|
|
487
544
|
// src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
|
|
488
|
-
import
|
|
545
|
+
import React3, { useCallback as useCallback4, useState } from "react";
|
|
489
546
|
import { invariant as invariant3 } from "@dxos/invariant";
|
|
490
547
|
import { EditorToolbar } from "@dxos/react-ui-editor";
|
|
491
548
|
|
|
492
549
|
// src/components/MarkdownEditor/FileUpload.tsx
|
|
493
|
-
import
|
|
550
|
+
import React2, { forwardRef as forwardRef2, useEffect as useEffect2, useImperativeHandle as useImperativeHandle2 } from "react";
|
|
494
551
|
import { createPortal } from "react-dom";
|
|
495
552
|
import { useDropzone } from "react-dropzone";
|
|
496
553
|
import { addLink } from "@dxos/ui-editor";
|
|
@@ -537,19 +594,18 @@ var FileUpload = /* @__PURE__ */ forwardRef2(({ editorView, onFileUpload }, forw
|
|
|
537
594
|
if (!onFileUpload) {
|
|
538
595
|
return null;
|
|
539
596
|
}
|
|
540
|
-
return /* @__PURE__ */
|
|
597
|
+
return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ createPortal(/* @__PURE__ */ React2.createElement("input", {
|
|
541
598
|
ref: inputRef
|
|
542
599
|
}), document.body), " ");
|
|
543
600
|
});
|
|
544
601
|
|
|
545
602
|
// src/components/MarkdownEditor/MarkdownEditorToolbar.tsx
|
|
603
|
+
import { composableProps } from "@dxos/ui-theme";
|
|
546
604
|
var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx";
|
|
547
|
-
var MarkdownEditorToolbar = ({
|
|
605
|
+
var MarkdownEditorToolbar = ({ id, role, state, editorView, customActions, onAction, onFileUpload, onViewModeChange, ...props }) => {
|
|
606
|
+
const { className, ...rest } = composableProps(props);
|
|
548
607
|
const [upload, setUpload] = useState(null);
|
|
549
608
|
const uploadRef = useCallback4((next) => setUpload(() => next), []);
|
|
550
|
-
const handleViewModeChange = useCallback4((mode) => onViewModeChange?.(mode), [
|
|
551
|
-
onViewModeChange
|
|
552
|
-
]);
|
|
553
609
|
const getView = useCallback4(() => {
|
|
554
610
|
invariant3(editorView, void 0, {
|
|
555
611
|
F: __dxlog_file3,
|
|
@@ -565,10 +621,14 @@ var MarkdownEditorToolbar = ({ classNames, id, role, state, editorView, customAc
|
|
|
565
621
|
editorView
|
|
566
622
|
]);
|
|
567
623
|
if (!editorView) {
|
|
568
|
-
return /* @__PURE__ */
|
|
624
|
+
return /* @__PURE__ */ React3.createElement("div", props);
|
|
569
625
|
}
|
|
570
|
-
return /* @__PURE__ */
|
|
571
|
-
|
|
626
|
+
return /* @__PURE__ */ React3.createElement("div", {
|
|
627
|
+
role: "none",
|
|
628
|
+
className: "contents"
|
|
629
|
+
}, /* @__PURE__ */ React3.createElement(EditorToolbar, {
|
|
630
|
+
...rest,
|
|
631
|
+
classNames: className,
|
|
572
632
|
attendableId: id,
|
|
573
633
|
role,
|
|
574
634
|
state,
|
|
@@ -576,8 +636,8 @@ var MarkdownEditorToolbar = ({ classNames, id, role, state, editorView, customAc
|
|
|
576
636
|
getView,
|
|
577
637
|
onAction,
|
|
578
638
|
onImageUpload: upload ?? void 0,
|
|
579
|
-
onViewModeChange
|
|
580
|
-
}), onFileUpload && /* @__PURE__ */
|
|
639
|
+
onViewModeChange
|
|
640
|
+
}), onFileUpload && /* @__PURE__ */ React3.createElement(FileUpload, {
|
|
581
641
|
ref: uploadRef,
|
|
582
642
|
editorView,
|
|
583
643
|
onFileUpload
|
|
@@ -586,7 +646,7 @@ var MarkdownEditorToolbar = ({ classNames, id, role, state, editorView, customAc
|
|
|
586
646
|
|
|
587
647
|
// src/components/MarkdownEditor/MarkdownEditor.tsx
|
|
588
648
|
var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("MarkdownEditor.Context");
|
|
589
|
-
var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionManager, settings, viewMode, extensions: extensionsProp, slashCommandGroups, onLinkQuery, ...props }) => {
|
|
649
|
+
var MarkdownEditorRoot = ({ children, id, attendableId, object, editorStateStore, selectionManager, settings, viewMode, extensions: extensionsProp, slashCommandGroups, onLinkQuery, onSelectObject, ...props }) => {
|
|
590
650
|
const [editorView, setEditorView] = useState2();
|
|
591
651
|
const [previewBlocks, setPreviewBlocks] = useState2([]);
|
|
592
652
|
const previewOptions = useMemo6(() => ({
|
|
@@ -597,7 +657,7 @@ var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionMan
|
|
|
597
657
|
]);
|
|
598
658
|
},
|
|
599
659
|
removeBlockContainer: ({ link }) => {
|
|
600
|
-
setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.
|
|
660
|
+
setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));
|
|
601
661
|
}
|
|
602
662
|
}), []);
|
|
603
663
|
const toolbarState = useEditorToolbar({
|
|
@@ -616,7 +676,8 @@ var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionMan
|
|
|
616
676
|
previewOptions,
|
|
617
677
|
selectionManager,
|
|
618
678
|
settings,
|
|
619
|
-
viewMode
|
|
679
|
+
viewMode,
|
|
680
|
+
onSelectObject
|
|
620
681
|
});
|
|
621
682
|
const extensions = useMemo6(() => [
|
|
622
683
|
coreExtensions,
|
|
@@ -627,8 +688,9 @@ var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionMan
|
|
|
627
688
|
menuExtension,
|
|
628
689
|
extensionsProp
|
|
629
690
|
]);
|
|
630
|
-
return /* @__PURE__ */
|
|
691
|
+
return /* @__PURE__ */ React4.createElement(MarkdownEditorContextProvider, {
|
|
631
692
|
id,
|
|
693
|
+
attendableId,
|
|
632
694
|
editorView,
|
|
633
695
|
setEditorView,
|
|
634
696
|
extensions,
|
|
@@ -640,51 +702,59 @@ var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionMan
|
|
|
640
702
|
}, children);
|
|
641
703
|
};
|
|
642
704
|
MarkdownEditorRoot.displayName = "MarkdownEditor.Root";
|
|
705
|
+
var MARKDOWN_EDITOR_CONTENT_NAME = "MarkdownEditor.Content";
|
|
643
706
|
var MarkdownEditorContent2 = (props) => {
|
|
644
|
-
const { id, editorView, setEditorView, viewMode, toolbarState, extensions, popoverMenu: { groupsRef, ...menuProps } } = useMarkdownEditorContext(
|
|
645
|
-
return /* @__PURE__ */
|
|
707
|
+
const { id, attendableId, editorView, setEditorView, viewMode, toolbarState, extensions, popoverMenu: { groupsRef, ...menuProps } } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
|
|
708
|
+
return /* @__PURE__ */ React4.createElement(EditorMenuProvider, {
|
|
646
709
|
view: editorView,
|
|
647
710
|
groups: groupsRef.current,
|
|
648
711
|
...menuProps
|
|
649
|
-
}, /* @__PURE__ */
|
|
712
|
+
}, /* @__PURE__ */ React4.createElement(MarkdownEditorContent, {
|
|
650
713
|
...props,
|
|
651
714
|
id,
|
|
715
|
+
attendableId,
|
|
652
716
|
viewMode,
|
|
653
717
|
toolbarState,
|
|
654
718
|
extensions,
|
|
655
719
|
ref: setEditorView
|
|
656
720
|
}));
|
|
657
721
|
};
|
|
658
|
-
MarkdownEditorContent2.displayName =
|
|
722
|
+
MarkdownEditorContent2.displayName = MARKDOWN_EDITOR_CONTENT_NAME;
|
|
723
|
+
var MARKDOWN_EDITOR_TOOLBAR_NAME = "MarkdownEditor.Toolbar";
|
|
659
724
|
var MarkdownEditorToolbar2 = (props) => {
|
|
660
|
-
const { toolbarState,
|
|
661
|
-
return /* @__PURE__ */
|
|
725
|
+
const { id, attendableId, editorView, toolbarState, onAction, onFileUpload, onViewModeChange } = useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
|
|
726
|
+
return /* @__PURE__ */ React4.createElement(MarkdownEditorToolbar, {
|
|
662
727
|
...props,
|
|
663
|
-
|
|
664
|
-
|
|
728
|
+
id: attendableId ?? id,
|
|
729
|
+
editorView,
|
|
730
|
+
state: toolbarState,
|
|
731
|
+
onAction,
|
|
732
|
+
onFileUpload,
|
|
733
|
+
onViewModeChange
|
|
665
734
|
});
|
|
666
735
|
};
|
|
667
|
-
MarkdownEditorToolbar2.displayName =
|
|
736
|
+
MarkdownEditorToolbar2.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;
|
|
737
|
+
var MARKDOWN_EDITOR_BLOCKS_NAME = "MarkdownEditor.Blocks";
|
|
668
738
|
var MarkdownEditorBlocks = (_props) => {
|
|
669
|
-
const { previewBlocks } = useMarkdownEditorContext(
|
|
670
|
-
return /* @__PURE__ */
|
|
671
|
-
key: link.
|
|
739
|
+
const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);
|
|
740
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, previewBlocks.map(({ link, el }) => /* @__PURE__ */ React4.createElement(PreviewBlock, {
|
|
741
|
+
key: link.dxn,
|
|
672
742
|
link,
|
|
673
743
|
el
|
|
674
744
|
})));
|
|
675
745
|
};
|
|
676
|
-
MarkdownEditorBlocks.displayName =
|
|
746
|
+
MarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;
|
|
677
747
|
var PreviewBlock = ({ el, link }) => {
|
|
678
748
|
const client = useClient();
|
|
679
|
-
const dxn = DXN.parse(link.
|
|
749
|
+
const dxn = DXN.parse(link.dxn);
|
|
680
750
|
const subject = client.graph.makeRef(dxn).target;
|
|
681
751
|
const data = useMemo6(() => ({
|
|
682
752
|
subject
|
|
683
753
|
}), [
|
|
684
754
|
subject
|
|
685
755
|
]);
|
|
686
|
-
return /* @__PURE__ */ createPortal2(/* @__PURE__ */
|
|
687
|
-
role: "card--
|
|
756
|
+
return /* @__PURE__ */ createPortal2(/* @__PURE__ */ React4.createElement(Surface.Surface, {
|
|
757
|
+
role: "card--content",
|
|
688
758
|
data,
|
|
689
759
|
limit: 1
|
|
690
760
|
}), el);
|
|
@@ -697,7 +767,13 @@ var MarkdownEditor = {
|
|
|
697
767
|
};
|
|
698
768
|
|
|
699
769
|
export {
|
|
770
|
+
isEditorModel,
|
|
771
|
+
isMarkdownProperties,
|
|
772
|
+
getFallbackName,
|
|
773
|
+
getContentSnippet,
|
|
774
|
+
setFallbackName,
|
|
775
|
+
serializer,
|
|
700
776
|
useLinkQuery,
|
|
701
777
|
MarkdownEditor
|
|
702
778
|
};
|
|
703
|
-
//# sourceMappingURL=chunk-
|
|
779
|
+
//# sourceMappingURL=chunk-RKTB7TV3.mjs.map
|