@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,92 +1,116 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./chunk-
|
|
2
|
+
Markdown_exports
|
|
3
|
+
} from "./chunk-4CSOMIT4.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
|
-
resolve
|
|
78
|
-
]);
|
|
79
|
-
return handleLinkQuery;
|
|
60
|
+
return text;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return "";
|
|
80
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") ?? "";
|
|
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,23 +593,22 @@ 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,
|
|
555
|
-
L:
|
|
611
|
+
L: 40,
|
|
556
612
|
S: void 0,
|
|
557
613
|
A: [
|
|
558
614
|
"editorView",
|
|
@@ -564,10 +620,17 @@ 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", {
|
|
624
|
+
className,
|
|
625
|
+
...rest
|
|
626
|
+
});
|
|
568
627
|
}
|
|
569
|
-
return /* @__PURE__ */
|
|
570
|
-
|
|
628
|
+
return /* @__PURE__ */ React3.createElement("div", {
|
|
629
|
+
role: "none",
|
|
630
|
+
className: "contents"
|
|
631
|
+
}, /* @__PURE__ */ React3.createElement(EditorToolbar, {
|
|
632
|
+
...rest,
|
|
633
|
+
classNames: className,
|
|
571
634
|
attendableId: id,
|
|
572
635
|
role,
|
|
573
636
|
state,
|
|
@@ -575,8 +638,8 @@ var MarkdownEditorToolbar = ({ classNames, id, role, state, editorView, customAc
|
|
|
575
638
|
getView,
|
|
576
639
|
onAction,
|
|
577
640
|
onImageUpload: upload ?? void 0,
|
|
578
|
-
onViewModeChange
|
|
579
|
-
}), onFileUpload && /* @__PURE__ */
|
|
641
|
+
onViewModeChange
|
|
642
|
+
}), onFileUpload && /* @__PURE__ */ React3.createElement(FileUpload, {
|
|
580
643
|
ref: uploadRef,
|
|
581
644
|
editorView,
|
|
582
645
|
onFileUpload
|
|
@@ -585,7 +648,7 @@ var MarkdownEditorToolbar = ({ classNames, id, role, state, editorView, customAc
|
|
|
585
648
|
|
|
586
649
|
// src/components/MarkdownEditor/MarkdownEditor.tsx
|
|
587
650
|
var [MarkdownEditorContextProvider, useMarkdownEditorContext] = createContext("MarkdownEditor.Context");
|
|
588
|
-
var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionManager, settings, viewMode, extensions: extensionsProp, slashCommandGroups, onLinkQuery, ...props }) => {
|
|
651
|
+
var MarkdownEditorRoot = ({ children, id, attendableId, object, editorStateStore, selectionManager, settings, viewMode, extensions: extensionsProp, slashCommandGroups, onLinkQuery, onSelectObject, ...props }) => {
|
|
589
652
|
const [editorView, setEditorView] = useState2();
|
|
590
653
|
const [previewBlocks, setPreviewBlocks] = useState2([]);
|
|
591
654
|
const previewOptions = useMemo6(() => ({
|
|
@@ -596,7 +659,7 @@ var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionMan
|
|
|
596
659
|
]);
|
|
597
660
|
},
|
|
598
661
|
removeBlockContainer: ({ link }) => {
|
|
599
|
-
setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.
|
|
662
|
+
setPreviewBlocks((prev) => prev.filter(({ link: prevLink }) => prevLink.dxn !== link.dxn));
|
|
600
663
|
}
|
|
601
664
|
}), []);
|
|
602
665
|
const toolbarState = useEditorToolbar({
|
|
@@ -615,7 +678,8 @@ var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionMan
|
|
|
615
678
|
previewOptions,
|
|
616
679
|
selectionManager,
|
|
617
680
|
settings,
|
|
618
|
-
viewMode
|
|
681
|
+
viewMode,
|
|
682
|
+
onSelectObject
|
|
619
683
|
});
|
|
620
684
|
const extensions = useMemo6(() => [
|
|
621
685
|
coreExtensions,
|
|
@@ -626,8 +690,9 @@ var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionMan
|
|
|
626
690
|
menuExtension,
|
|
627
691
|
extensionsProp
|
|
628
692
|
]);
|
|
629
|
-
return /* @__PURE__ */
|
|
693
|
+
return /* @__PURE__ */ React4.createElement(MarkdownEditorContextProvider, {
|
|
630
694
|
id,
|
|
695
|
+
attendableId,
|
|
631
696
|
editorView,
|
|
632
697
|
setEditorView,
|
|
633
698
|
extensions,
|
|
@@ -639,51 +704,59 @@ var MarkdownEditorRoot = ({ children, id, object, editorStateStore, selectionMan
|
|
|
639
704
|
}, children);
|
|
640
705
|
};
|
|
641
706
|
MarkdownEditorRoot.displayName = "MarkdownEditor.Root";
|
|
707
|
+
var MARKDOWN_EDITOR_CONTENT_NAME = "MarkdownEditor.Content";
|
|
642
708
|
var MarkdownEditorContent2 = (props) => {
|
|
643
|
-
const { id, editorView, setEditorView, viewMode, toolbarState, extensions, popoverMenu: { groupsRef, ...menuProps } } = useMarkdownEditorContext(
|
|
644
|
-
return /* @__PURE__ */
|
|
709
|
+
const { id, attendableId, editorView, setEditorView, viewMode, toolbarState, extensions, popoverMenu: { groupsRef, ...menuProps } } = useMarkdownEditorContext(MARKDOWN_EDITOR_CONTENT_NAME);
|
|
710
|
+
return /* @__PURE__ */ React4.createElement(EditorMenuProvider, {
|
|
645
711
|
view: editorView,
|
|
646
712
|
groups: groupsRef.current,
|
|
647
713
|
...menuProps
|
|
648
|
-
}, /* @__PURE__ */
|
|
714
|
+
}, /* @__PURE__ */ React4.createElement(MarkdownEditorContent, {
|
|
649
715
|
...props,
|
|
650
716
|
id,
|
|
717
|
+
attendableId,
|
|
651
718
|
viewMode,
|
|
652
719
|
toolbarState,
|
|
653
720
|
extensions,
|
|
654
721
|
ref: setEditorView
|
|
655
722
|
}));
|
|
656
723
|
};
|
|
657
|
-
MarkdownEditorContent2.displayName =
|
|
724
|
+
MarkdownEditorContent2.displayName = MARKDOWN_EDITOR_CONTENT_NAME;
|
|
725
|
+
var MARKDOWN_EDITOR_TOOLBAR_NAME = "MarkdownEditor.Toolbar";
|
|
658
726
|
var MarkdownEditorToolbar2 = (props) => {
|
|
659
|
-
const { toolbarState,
|
|
660
|
-
return /* @__PURE__ */
|
|
727
|
+
const { id, attendableId, editorView, toolbarState, onAction, onFileUpload, onViewModeChange } = useMarkdownEditorContext(MARKDOWN_EDITOR_TOOLBAR_NAME);
|
|
728
|
+
return /* @__PURE__ */ React4.createElement(MarkdownEditorToolbar, {
|
|
661
729
|
...props,
|
|
662
|
-
|
|
663
|
-
|
|
730
|
+
id: attendableId ?? id,
|
|
731
|
+
editorView,
|
|
732
|
+
state: toolbarState,
|
|
733
|
+
onAction,
|
|
734
|
+
onFileUpload,
|
|
735
|
+
onViewModeChange
|
|
664
736
|
});
|
|
665
737
|
};
|
|
666
|
-
MarkdownEditorToolbar2.displayName =
|
|
738
|
+
MarkdownEditorToolbar2.displayName = MARKDOWN_EDITOR_TOOLBAR_NAME;
|
|
739
|
+
var MARKDOWN_EDITOR_BLOCKS_NAME = "MarkdownEditor.Blocks";
|
|
667
740
|
var MarkdownEditorBlocks = (_props) => {
|
|
668
|
-
const { previewBlocks } = useMarkdownEditorContext(
|
|
669
|
-
return /* @__PURE__ */
|
|
670
|
-
key: link.
|
|
741
|
+
const { previewBlocks } = useMarkdownEditorContext(MARKDOWN_EDITOR_BLOCKS_NAME);
|
|
742
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, previewBlocks.map(({ link, el }) => /* @__PURE__ */ React4.createElement(PreviewBlock, {
|
|
743
|
+
key: link.dxn,
|
|
671
744
|
link,
|
|
672
745
|
el
|
|
673
746
|
})));
|
|
674
747
|
};
|
|
675
|
-
MarkdownEditorBlocks.displayName =
|
|
748
|
+
MarkdownEditorBlocks.displayName = MARKDOWN_EDITOR_BLOCKS_NAME;
|
|
676
749
|
var PreviewBlock = ({ el, link }) => {
|
|
677
750
|
const client = useClient();
|
|
678
|
-
const dxn = DXN.parse(link.
|
|
751
|
+
const dxn = DXN.parse(link.dxn);
|
|
679
752
|
const subject = client.graph.makeRef(dxn).target;
|
|
680
753
|
const data = useMemo6(() => ({
|
|
681
754
|
subject
|
|
682
755
|
}), [
|
|
683
756
|
subject
|
|
684
757
|
]);
|
|
685
|
-
return /* @__PURE__ */ createPortal2(/* @__PURE__ */
|
|
686
|
-
role: "card--
|
|
758
|
+
return /* @__PURE__ */ createPortal2(/* @__PURE__ */ React4.createElement(Surface.Surface, {
|
|
759
|
+
role: "card--content",
|
|
687
760
|
data,
|
|
688
761
|
limit: 1
|
|
689
762
|
}), el);
|
|
@@ -696,7 +769,13 @@ var MarkdownEditor = {
|
|
|
696
769
|
};
|
|
697
770
|
|
|
698
771
|
export {
|
|
772
|
+
isEditorModel,
|
|
773
|
+
isMarkdownProperties,
|
|
774
|
+
getFallbackName,
|
|
775
|
+
getContentSnippet,
|
|
776
|
+
setFallbackName,
|
|
777
|
+
serializer,
|
|
699
778
|
useLinkQuery,
|
|
700
779
|
MarkdownEditor
|
|
701
780
|
};
|
|
702
|
-
//# sourceMappingURL=chunk-
|
|
781
|
+
//# sourceMappingURL=chunk-B6S4YQWZ.mjs.map
|