@dxos/plugin-markdown 0.8.4-main.bc674ce → 0.8.4-main.c351d160a8
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-WIPSLZ6L.mjs → MarkdownCard-R6VVXOMN.mjs} +27 -26
- package/dist/lib/browser/MarkdownCard-R6VVXOMN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-KDKXFKDN.mjs → MarkdownContainer-LSOAAG6R.mjs} +48 -25
- package/dist/lib/browser/MarkdownContainer-LSOAAG6R.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-35SV33JX.mjs} +6 -4
- package/dist/lib/browser/anchor-sort-35SV33JX.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-ULZUJKOD.mjs → app-graph-serializer-RMUNNVUY.mjs} +9 -7
- package/dist/lib/browser/app-graph-serializer-RMUNNVUY.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-SFGTWLSY.mjs +18 -0
- package/dist/lib/browser/blueprint-definition-SFGTWLSY.mjs.map +7 -0
- package/dist/lib/browser/blueprints/index.mjs +5 -4
- package/dist/lib/browser/{chunk-LMO5UVKL.mjs → chunk-4CSOMIT4.mjs} +29 -61
- package/dist/lib/browser/chunk-4CSOMIT4.mjs.map +7 -0
- package/dist/lib/browser/chunk-646I24Q2.mjs +178 -0
- package/dist/lib/browser/chunk-646I24Q2.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BX73DASG.mjs → chunk-B6S4YQWZ.mjs} +285 -206
- package/dist/lib/browser/chunk-B6S4YQWZ.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-WU3CQIPM.mjs} +2 -2
- package/dist/lib/browser/{chunk-JOXYQLKH.mjs → chunk-YKXQWJX6.mjs} +9 -4
- package/dist/lib/browser/chunk-YKXQWJX6.mjs.map +7 -0
- 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 +49 -48
- 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-MVI2ZJ7M.mjs} +6 -18
- package/dist/lib/browser/operation-resolver-MVI2ZJ7M.mjs.map +7 -0
- package/dist/lib/browser/react-surface-OJYNFGZB.mjs +117 -0
- package/dist/lib/browser/react-surface-OJYNFGZB.mjs.map +7 -0
- package/dist/lib/browser/{settings-JY5JE7MI.mjs → settings-R722LDFD.mjs} +8 -5
- package/dist/lib/browser/settings-R722LDFD.mjs.map +7 -0
- package/dist/lib/browser/{state-QE7VSJWJ.mjs → state-MRJLGZW4.mjs} +7 -5
- package/dist/lib/{node-esm/state-LXE5XIN4.mjs.map → browser/state-MRJLGZW4.mjs.map} +2 -2
- package/dist/lib/browser/types/index.mjs +2 -1
- package/dist/lib/node-esm/{chunk-RQP7G7XW.mjs → MarkdownCard-EE3Q2JPL.mjs} +27 -26
- package/dist/lib/node-esm/MarkdownCard-EE3Q2JPL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-3JYPCC7M.mjs → MarkdownContainer-NMFVVFBR.mjs} +48 -25
- package/dist/lib/node-esm/MarkdownContainer-NMFVVFBR.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-QCV4U222.mjs} +6 -4
- package/dist/lib/node-esm/anchor-sort-QCV4U222.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-W5YMQP7P.mjs → app-graph-serializer-I27YTNDW.mjs} +9 -7
- package/dist/lib/node-esm/app-graph-serializer-I27YTNDW.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-VZEIBTAP.mjs +19 -0
- package/dist/lib/node-esm/blueprint-definition-VZEIBTAP.mjs.map +7 -0
- package/dist/lib/node-esm/blueprints/index.mjs +5 -4
- package/dist/lib/node-esm/{chunk-PRV35A7Z.mjs → chunk-2LVNBTQT.mjs} +29 -61
- package/dist/lib/node-esm/chunk-2LVNBTQT.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-W3IIKDV5.mjs → chunk-HVAZON2M.mjs} +2 -2
- package/dist/lib/node-esm/chunk-KHTJJ45U.mjs +179 -0
- package/dist/lib/node-esm/chunk-KHTJJ45U.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-44VJC3QF.mjs → chunk-TR2NZYXO.mjs} +9 -4
- package/dist/lib/node-esm/chunk-TR2NZYXO.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-D4BCFPKK.mjs → chunk-VG2PIENM.mjs} +285 -206
- package/dist/lib/node-esm/chunk-VG2PIENM.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 +49 -48
- 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-6TK6ARJ6.mjs} +6 -18
- package/dist/lib/node-esm/operation-resolver-6TK6ARJ6.mjs.map +7 -0
- package/dist/lib/node-esm/react-surface-UVNCUX77.mjs +118 -0
- package/dist/lib/node-esm/react-surface-UVNCUX77.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-4UGMPIRY.mjs → settings-RDYNOKVE.mjs} +8 -5
- package/dist/lib/node-esm/settings-RDYNOKVE.mjs.map +7 -0
- package/dist/lib/node-esm/{state-LXE5XIN4.mjs → state-7HQSNXXQ.mjs} +7 -5
- package/dist/lib/{browser/state-QE7VSJWJ.mjs.map → node-esm/state-7HQSNXXQ.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 +5 -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 +64 -57
- package/src/MarkdownPlugin.tsx +29 -38
- 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 +44 -17
- package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +6 -5
- package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +13 -13
- package/src/components/index.ts +2 -14
- package/src/{components → containers}/MarkdownCard/MarkdownCard.stories.tsx +17 -7
- package/src/{components → containers}/MarkdownCard/MarkdownCard.tsx +21 -24
- 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-WHK3ORP7.mjs +0 -12
- package/dist/lib/browser/MarkdownCard-WHK3ORP7.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-WIPSLZ6L.mjs.map +0 -7
- package/dist/lib/browser/operation-resolver-EGCWOQKJ.mjs.map +0 -7
- package/dist/lib/browser/react-surface-SRPLD3ED.mjs +0 -213
- package/dist/lib/browser/react-surface-SRPLD3ED.mjs.map +0 -7
- package/dist/lib/browser/settings-JY5JE7MI.mjs.map +0 -7
- package/dist/lib/node-esm/MarkdownCard-WJPLQTFS.mjs +0 -13
- package/dist/lib/node-esm/MarkdownCard-WJPLQTFS.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-PRV35A7Z.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RQP7G7XW.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-RONSOJIQ.mjs +0 -214
- package/dist/lib/node-esm/react-surface-RONSOJIQ.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-WU3CQIPM.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-W3IIKDV5.mjs.map → chunk-HVAZON2M.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-2LVNBTQT.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
|
-
resolve
|
|
79
|
-
]);
|
|
80
|
-
return handleLinkQuery;
|
|
61
|
+
return text;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return "";
|
|
81
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") ?? "";
|
|
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,23 +594,22 @@ 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,
|
|
556
|
-
L:
|
|
612
|
+
L: 40,
|
|
557
613
|
S: void 0,
|
|
558
614
|
A: [
|
|
559
615
|
"editorView",
|
|
@@ -565,10 +621,17 @@ 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", {
|
|
625
|
+
className,
|
|
626
|
+
...rest
|
|
627
|
+
});
|
|
569
628
|
}
|
|
570
|
-
return /* @__PURE__ */
|
|
571
|
-
|
|
629
|
+
return /* @__PURE__ */ React3.createElement("div", {
|
|
630
|
+
role: "none",
|
|
631
|
+
className: "contents"
|
|
632
|
+
}, /* @__PURE__ */ React3.createElement(EditorToolbar, {
|
|
633
|
+
...rest,
|
|
634
|
+
classNames: className,
|
|
572
635
|
attendableId: id,
|
|
573
636
|
role,
|
|
574
637
|
state,
|
|
@@ -576,8 +639,8 @@ var MarkdownEditorToolbar = ({ classNames, id, role, state, editorView, customAc
|
|
|
576
639
|
getView,
|
|
577
640
|
onAction,
|
|
578
641
|
onImageUpload: upload ?? void 0,
|
|
579
|
-
onViewModeChange
|
|
580
|
-
}), onFileUpload && /* @__PURE__ */
|
|
642
|
+
onViewModeChange
|
|
643
|
+
}), onFileUpload && /* @__PURE__ */ React3.createElement(FileUpload, {
|
|
581
644
|
ref: uploadRef,
|
|
582
645
|
editorView,
|
|
583
646
|
onFileUpload
|
|
@@ -586,7 +649,7 @@ var MarkdownEditorToolbar = ({ classNames, id, role, state, editorView, customAc
|
|
|
586
649
|
|
|
587
650
|
// src/components/MarkdownEditor/MarkdownEditor.tsx
|
|
588
651
|
var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("MarkdownEditor.Context");
|
|
589
|
-
var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionManager, settings, viewMode, extensions: extensionsProp, slashCommandGroups, onLinkQuery, ...props }) => {
|
|
652
|
+
var MarkdownEditorRoot = ({ children, id, attendableId, object, editorStateStore, selectionManager, settings, viewMode, extensions: extensionsProp, slashCommandGroups, onLinkQuery, onSelectObject, ...props }) => {
|
|
590
653
|
const [editorView, setEditorView] = useState2();
|
|
591
654
|
const [previewBlocks, setPreviewBlocks] = useState2([]);
|
|
592
655
|
const previewOptions = useMemo6(() => ({
|
|
@@ -597,7 +660,7 @@ var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionMan
|
|
|
597
660
|
]);
|
|
598
661
|
},
|
|
599
662
|
removeBlockContainer: ({ link }) => {
|
|
600
|
-
setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.
|
|
663
|
+
setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));
|
|
601
664
|
}
|
|
602
665
|
}), []);
|
|
603
666
|
const toolbarState = useEditorToolbar({
|
|
@@ -616,7 +679,8 @@ var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionMan
|
|
|
616
679
|
previewOptions,
|
|
617
680
|
selectionManager,
|
|
618
681
|
settings,
|
|
619
|
-
viewMode
|
|
682
|
+
viewMode,
|
|
683
|
+
onSelectObject
|
|
620
684
|
});
|
|
621
685
|
const extensions = useMemo6(() => [
|
|
622
686
|
coreExtensions,
|
|
@@ -627,8 +691,9 @@ var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionMan
|
|
|
627
691
|
menuExtension,
|
|
628
692
|
extensionsProp
|
|
629
693
|
]);
|
|
630
|
-
return /* @__PURE__ */
|
|
694
|
+
return /* @__PURE__ */ React4.createElement(MarkdownEditorContextProvider, {
|
|
631
695
|
id,
|
|
696
|
+
attendableId,
|
|
632
697
|
editorView,
|
|
633
698
|
setEditorView,
|
|
634
699
|
extensions,
|
|
@@ -640,51 +705,59 @@ var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionMan
|
|
|
640
705
|
}, children);
|
|
641
706
|
};
|
|
642
707
|
MarkdownEditorRoot.displayName = "MarkdownEditor.Root";
|
|
708
|
+
var MARKDOWN_EDITOR_CONTENT_NAME = "MarkdownEditor.Content";
|
|
643
709
|
var MarkdownEditorContent2 = (props) => {
|
|
644
|
-
const { id, editorView, setEditorView, viewMode, toolbarState, extensions, popoverMenu: { groupsRef, ...menuProps } } = useMarkdownEditorContext(
|
|
645
|
-
return /* @__PURE__ */
|
|
710
|
+
const { id, attendableId, editorView, setEditorView, viewMode, toolbarState, extensions, popoverMenu: { groupsRef, ...menuProps } } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
|
|
711
|
+
return /* @__PURE__ */ React4.createElement(EditorMenuProvider, {
|
|
646
712
|
view: editorView,
|
|
647
713
|
groups: groupsRef.current,
|
|
648
714
|
...menuProps
|
|
649
|
-
}, /* @__PURE__ */
|
|
715
|
+
}, /* @__PURE__ */ React4.createElement(MarkdownEditorContent, {
|
|
650
716
|
...props,
|
|
651
717
|
id,
|
|
718
|
+
attendableId,
|
|
652
719
|
viewMode,
|
|
653
720
|
toolbarState,
|
|
654
721
|
extensions,
|
|
655
722
|
ref: setEditorView
|
|
656
723
|
}));
|
|
657
724
|
};
|
|
658
|
-
MarkdownEditorContent2.displayName =
|
|
725
|
+
MarkdownEditorContent2.displayName = MARKDOWN_EDITOR_CONTENT_NAME;
|
|
726
|
+
var MARKDOWN_EDITOR_TOOLBAR_NAME = "MarkdownEditor.Toolbar";
|
|
659
727
|
var MarkdownEditorToolbar2 = (props) => {
|
|
660
|
-
const { toolbarState,
|
|
661
|
-
return /* @__PURE__ */
|
|
728
|
+
const { id, attendableId, editorView, toolbarState, onAction, onFileUpload, onViewModeChange } = useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
|
|
729
|
+
return /* @__PURE__ */ React4.createElement(MarkdownEditorToolbar, {
|
|
662
730
|
...props,
|
|
663
|
-
|
|
664
|
-
|
|
731
|
+
id: attendableId ?? id,
|
|
732
|
+
editorView,
|
|
733
|
+
state: toolbarState,
|
|
734
|
+
onAction,
|
|
735
|
+
onFileUpload,
|
|
736
|
+
onViewModeChange
|
|
665
737
|
});
|
|
666
738
|
};
|
|
667
|
-
MarkdownEditorToolbar2.displayName =
|
|
739
|
+
MarkdownEditorToolbar2.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;
|
|
740
|
+
var MARKDOWN_EDITOR_BLOCKS_NAME = "MarkdownEditor.Blocks";
|
|
668
741
|
var MarkdownEditorBlocks = (_props) => {
|
|
669
|
-
const { previewBlocks } = useMarkdownEditorContext(
|
|
670
|
-
return /* @__PURE__ */
|
|
671
|
-
key: link.
|
|
742
|
+
const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);
|
|
743
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, previewBlocks.map(({ link, el }) => /* @__PURE__ */ React4.createElement(PreviewBlock, {
|
|
744
|
+
key: link.dxn,
|
|
672
745
|
link,
|
|
673
746
|
el
|
|
674
747
|
})));
|
|
675
748
|
};
|
|
676
|
-
MarkdownEditorBlocks.displayName =
|
|
749
|
+
MarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;
|
|
677
750
|
var PreviewBlock = ({ el, link }) => {
|
|
678
751
|
const client = useClient();
|
|
679
|
-
const dxn = DXN.parse(link.
|
|
752
|
+
const dxn = DXN.parse(link.dxn);
|
|
680
753
|
const subject = client.graph.makeRef(dxn).target;
|
|
681
754
|
const data = useMemo6(() => ({
|
|
682
755
|
subject
|
|
683
756
|
}), [
|
|
684
757
|
subject
|
|
685
758
|
]);
|
|
686
|
-
return /* @__PURE__ */ createPortal2(/* @__PURE__ */
|
|
687
|
-
role: "card--
|
|
759
|
+
return /* @__PURE__ */ createPortal2(/* @__PURE__ */ React4.createElement(Surface.Surface, {
|
|
760
|
+
role: "card--content",
|
|
688
761
|
data,
|
|
689
762
|
limit: 1
|
|
690
763
|
}), el);
|
|
@@ -697,7 +770,13 @@ var MarkdownEditor = {
|
|
|
697
770
|
};
|
|
698
771
|
|
|
699
772
|
export {
|
|
773
|
+
isEditorModel,
|
|
774
|
+
isMarkdownProperties,
|
|
775
|
+
getFallbackName,
|
|
776
|
+
getContentSnippet,
|
|
777
|
+
setFallbackName,
|
|
778
|
+
serializer,
|
|
700
779
|
useLinkQuery,
|
|
701
780
|
MarkdownEditor
|
|
702
781
|
};
|
|
703
|
-
//# sourceMappingURL=chunk-
|
|
782
|
+
//# sourceMappingURL=chunk-VG2PIENM.mjs.map
|