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