@dxos/plugin-markdown 0.8.3 → 0.8.4-main.1068cf700f
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/MarkdownCard-7VIO7R66.mjs +11 -0
- package/dist/lib/browser/MarkdownCard-7VIO7R66.mjs.map +7 -0
- package/dist/lib/browser/MarkdownContainer-6E43EDAU.mjs +11 -0
- package/dist/lib/browser/MarkdownContainer-6E43EDAU.mjs.map +7 -0
- package/dist/lib/browser/anchor-sort-JBAZRPE7.mjs +33 -0
- package/dist/lib/browser/anchor-sort-JBAZRPE7.mjs.map +7 -0
- package/dist/lib/browser/app-graph-serializer-6Q5YBUPW.mjs +59 -0
- package/dist/lib/browser/app-graph-serializer-6Q5YBUPW.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-6HOAW2E6.mjs +20 -0
- package/dist/lib/browser/blueprint-definition-6HOAW2E6.mjs.map +7 -0
- package/dist/lib/browser/blueprints/index.mjs +8 -0
- package/dist/lib/browser/blueprints/index.mjs.map +7 -0
- package/dist/lib/browser/{chunk-D767LUGU.mjs → chunk-2AAD3W6X.mjs} +21 -15
- package/dist/lib/browser/chunk-2AAD3W6X.mjs.map +7 -0
- package/dist/lib/browser/chunk-4GT3QWMK.mjs +167 -0
- package/dist/lib/browser/chunk-4GT3QWMK.mjs.map +7 -0
- package/dist/lib/browser/chunk-6SM75KL3.mjs +8 -0
- package/dist/lib/browser/chunk-6SM75KL3.mjs.map +7 -0
- package/dist/lib/browser/chunk-7AQTX6D5.mjs +105 -0
- package/dist/lib/browser/chunk-7AQTX6D5.mjs.map +7 -0
- package/dist/lib/browser/chunk-EZZFREFN.mjs +58 -0
- package/dist/lib/browser/chunk-EZZFREFN.mjs.map +7 -0
- package/dist/lib/browser/chunk-HHRUUWGH.mjs +796 -0
- package/dist/lib/browser/chunk-HHRUUWGH.mjs.map +7 -0
- package/dist/lib/browser/chunk-HQTBT5IY.mjs +176 -0
- package/dist/lib/browser/chunk-HQTBT5IY.mjs.map +7 -0
- package/dist/lib/browser/cli/index.mjs +33 -0
- package/dist/lib/browser/cli/index.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +132 -137
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/operation-resolver-UBQUPSXC.mjs +53 -0
- package/dist/lib/browser/operation-resolver-UBQUPSXC.mjs.map +7 -0
- package/dist/lib/browser/react-surface-7Z6AB26V.mjs +213 -0
- package/dist/lib/browser/react-surface-7Z6AB26V.mjs.map +7 -0
- package/dist/lib/browser/settings-V2XOFSD5.mjs +36 -0
- package/dist/lib/browser/settings-V2XOFSD5.mjs.map +7 -0
- package/dist/lib/browser/state-6Y3JB64H.mjs +29 -0
- package/dist/lib/browser/state-6Y3JB64H.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +13 -14
- package/dist/lib/node-esm/MarkdownCard-YC3R2TQW.mjs +12 -0
- package/dist/lib/node-esm/MarkdownCard-YC3R2TQW.mjs.map +7 -0
- package/dist/lib/node-esm/MarkdownContainer-TTRUOXU6.mjs +12 -0
- package/dist/lib/node-esm/MarkdownContainer-TTRUOXU6.mjs.map +7 -0
- package/dist/lib/node-esm/anchor-sort-IQMDZRA3.mjs +34 -0
- package/dist/lib/node-esm/anchor-sort-IQMDZRA3.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-serializer-STEPJH57.mjs +60 -0
- package/dist/lib/node-esm/app-graph-serializer-STEPJH57.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-UGDFF5OZ.mjs +21 -0
- package/dist/lib/node-esm/blueprint-definition-UGDFF5OZ.mjs.map +7 -0
- package/dist/lib/node-esm/blueprints/index.mjs +9 -0
- package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-AGZOFIK2.mjs +10 -0
- package/dist/lib/node-esm/chunk-AGZOFIK2.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-D46D75SK.mjs +797 -0
- package/dist/lib/node-esm/chunk-D46D75SK.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-DCKB3AVD.mjs +59 -0
- package/dist/lib/node-esm/chunk-DCKB3AVD.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-K2IIYNCG.mjs +106 -0
- package/dist/lib/node-esm/chunk-K2IIYNCG.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-LOZVC2WA.mjs +177 -0
- package/dist/lib/node-esm/chunk-LOZVC2WA.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-BWDDFDJY.mjs → chunk-MLZQCT2N.mjs} +21 -15
- package/dist/lib/node-esm/chunk-MLZQCT2N.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-USKAPINH.mjs +168 -0
- package/dist/lib/node-esm/chunk-USKAPINH.mjs.map +7 -0
- package/dist/lib/node-esm/cli/index.mjs +34 -0
- package/dist/lib/node-esm/cli/index.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +132 -137
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/operation-resolver-QAGXDA5E.mjs +54 -0
- package/dist/lib/node-esm/operation-resolver-QAGXDA5E.mjs.map +7 -0
- package/dist/lib/node-esm/react-surface-VIXAH5CF.mjs +214 -0
- package/dist/lib/node-esm/react-surface-VIXAH5CF.mjs.map +7 -0
- package/dist/lib/node-esm/settings-EXSH2KF4.mjs +37 -0
- package/dist/lib/node-esm/settings-EXSH2KF4.mjs.map +7 -0
- package/dist/lib/node-esm/state-TVF2XT2T.mjs +30 -0
- package/dist/lib/node-esm/state-TVF2XT2T.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +13 -14
- package/dist/types/src/MarkdownPlugin.d.ts +2 -1
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/blueprints/functions/create.d.ts +8 -0
- package/dist/types/src/blueprints/functions/create.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/create.test.d.ts +2 -0
- package/dist/types/src/blueprints/functions/create.test.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/index.d.ts +4 -0
- package/dist/types/src/blueprints/functions/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/open.d.ts +14 -0
- package/dist/types/src/blueprints/functions/open.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/update.d.ts +19 -0
- package/dist/types/src/blueprints/functions/update.d.ts.map +1 -0
- package/dist/types/src/blueprints/functions/update.test.d.ts +2 -0
- package/dist/types/src/blueprints/functions/update.test.d.ts.map +1 -0
- package/dist/types/src/blueprints/index.d.ts +2 -0
- package/dist/types/src/blueprints/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/markdown-blueprint.d.ts +21 -0
- package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -0
- package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts +6 -0
- package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +1 -0
- package/dist/types/src/capabilities/anchor-sort/index.d.ts +3 -0
- package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +5 -0
- package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +3 -0
- package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +5 -0
- package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/artifact-definition/index.d.ts +3 -0
- package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +11 -0
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +7 -16
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings/index.d.ts +3 -0
- package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings/settings.d.ts +7 -0
- package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
- package/dist/types/src/capabilities/state/index.d.ts +3 -0
- package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/state/state.d.ts +5 -0
- package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
- package/dist/types/src/cli/index.d.ts +2 -0
- package/dist/types/src/cli/index.d.ts.map +1 -0
- package/dist/types/src/cli/plugin.d.ts +3 -0
- package/dist/types/src/cli/plugin.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +8 -0
- package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +9 -0
- package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownCard/index.d.ts +4 -0
- package/dist/types/src/components/MarkdownCard/index.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownContainer.d.ts +22 -12
- package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownContainer.stories.d.ts +84 -5
- package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +11 -0
- package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +43 -23
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +8 -15
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +30 -0
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +12 -0
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +6 -4
- package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
- package/dist/types/src/components/Suggestions.stories.d.ts +4 -5
- package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +7 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +3 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useEditorMenuOptions.d.ts +9 -0
- package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -0
- package/dist/types/src/hooks/useExtensions.d.ts +21 -0
- package/dist/types/src/hooks/useExtensions.d.ts.map +1 -0
- package/dist/types/src/hooks/useLinkQuery.d.ts +4 -0
- package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -0
- 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 +4 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -3
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/testing.d.ts +6 -0
- package/dist/types/src/testing.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +69 -80
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Markdown.d.ts +45 -0
- package/dist/types/src/types/Markdown.d.ts.map +1 -0
- package/dist/types/src/types/MarkdownAction.d.ts +66 -0
- package/dist/types/src/types/MarkdownAction.d.ts.map +1 -0
- package/dist/types/src/types/capabilities.d.ts +22 -0
- package/dist/types/src/types/capabilities.d.ts.map +1 -0
- package/dist/types/src/types/events.d.ts +5 -0
- package/dist/types/src/types/events.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +5 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +4 -59
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +17 -5
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/src/util.test.d.ts +2 -0
- package/dist/types/src/util.test.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +99 -58
- package/src/MarkdownPlugin.tsx +83 -104
- package/src/blueprints/functions/create.conversations.json +1 -0
- package/src/blueprints/functions/create.test.ts +92 -0
- package/src/blueprints/functions/create.ts +35 -0
- package/src/blueprints/functions/index.ts +7 -0
- package/src/blueprints/functions/open.ts +33 -0
- package/src/blueprints/functions/update.conversations.json +1 -0
- package/src/blueprints/functions/update.test.ts +215 -0
- package/src/blueprints/functions/update.ts +79 -0
- package/src/blueprints/index.ts +5 -0
- package/src/blueprints/markdown-blueprint.ts +38 -0
- package/src/capabilities/anchor-sort/anchor-sort.ts +37 -0
- package/src/capabilities/anchor-sort/index.ts +7 -0
- package/src/capabilities/app-graph-serializer/app-graph-serializer.ts +60 -0
- package/src/capabilities/app-graph-serializer/index.ts +7 -0
- package/src/capabilities/artifact-definition/artifact-definition.ts +110 -0
- package/src/capabilities/artifact-definition/index.ts +7 -0
- package/src/capabilities/blueprint-definition/blueprint-definition.ts +26 -0
- package/src/capabilities/blueprint-definition/index.ts +7 -0
- package/src/capabilities/index.ts +7 -11
- package/src/capabilities/operation-resolver/index.ts +7 -0
- package/src/capabilities/operation-resolver/operation-resolver.ts +45 -0
- package/src/capabilities/react-surface/index.ts +7 -0
- package/src/capabilities/react-surface/react-surface.tsx +102 -0
- package/src/capabilities/settings/index.ts +7 -0
- package/src/capabilities/settings/settings.ts +37 -0
- package/src/capabilities/state/index.ts +7 -0
- package/src/capabilities/state/state.ts +31 -0
- package/src/cli/index.ts +5 -0
- package/src/cli/plugin.ts +30 -0
- package/src/components/MarkdownCard/MarkdownCard.stories.tsx +58 -0
- package/src/components/MarkdownCard/MarkdownCard.tsx +64 -0
- package/src/components/MarkdownCard/index.ts +9 -0
- package/src/components/MarkdownContainer.stories.tsx +82 -62
- package/src/components/MarkdownContainer.tsx +106 -234
- package/src/components/MarkdownEditor/FileUpload.tsx +63 -0
- package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +59 -37
- package/src/components/MarkdownEditor/MarkdownEditor.tsx +226 -272
- package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +162 -0
- package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +66 -0
- package/src/components/MarkdownSettings/MarkdownSettings.tsx +97 -80
- package/src/components/Suggestions.stories.tsx +74 -74
- package/src/components/index.ts +10 -3
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useEditorMenuOptions.ts +68 -0
- package/src/{extensions.tsx → hooks/useExtensions.tsx} +96 -145
- package/src/hooks/useLinkQuery.ts +83 -0
- package/src/hooks/useSelectCurrentThread.tsx +39 -34
- package/src/index.ts +7 -3
- package/src/meta.ts +9 -10
- package/src/testing.ts +27 -0
- package/src/translations.ts +16 -7
- package/src/types/Markdown.ts +57 -0
- package/src/types/MarkdownAction.ts +59 -0
- package/src/types/capabilities.ts +38 -0
- package/src/types/events.ts +14 -0
- package/src/types/index.ts +6 -1
- package/src/types/types.ts +7 -50
- package/src/util.test.ts +44 -0
- package/src/util.tsx +100 -11
- package/dist/lib/browser/MarkdownContainer-EFWQ6DHD.mjs +0 -770
- package/dist/lib/browser/MarkdownContainer-EFWQ6DHD.mjs.map +0 -7
- package/dist/lib/browser/MarkdownPreview-F4PYFW5L.mjs +0 -80
- package/dist/lib/browser/MarkdownPreview-F4PYFW5L.mjs.map +0 -7
- package/dist/lib/browser/anchor-sort-BMAN2ABT.mjs +0 -32
- package/dist/lib/browser/anchor-sort-BMAN2ABT.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-EI6TEHRQ.mjs +0 -52
- package/dist/lib/browser/app-graph-serializer-EI6TEHRQ.mjs.map +0 -7
- package/dist/lib/browser/artifact-definition-FQ2R6KPT.mjs +0 -145
- package/dist/lib/browser/artifact-definition-FQ2R6KPT.mjs.map +0 -7
- package/dist/lib/browser/chunk-354IBM5X.mjs +0 -20
- package/dist/lib/browser/chunk-354IBM5X.mjs.map +0 -7
- package/dist/lib/browser/chunk-D767LUGU.mjs.map +0 -7
- package/dist/lib/browser/chunk-JX6XNEHE.mjs +0 -22
- package/dist/lib/browser/chunk-JX6XNEHE.mjs.map +0 -7
- package/dist/lib/browser/chunk-LXSRQPEP.mjs +0 -51
- package/dist/lib/browser/chunk-LXSRQPEP.mjs.map +0 -7
- package/dist/lib/browser/chunk-N2D26K6W.mjs +0 -79
- package/dist/lib/browser/chunk-N2D26K6W.mjs.map +0 -7
- package/dist/lib/browser/chunk-QVJETNGS.mjs +0 -16
- package/dist/lib/browser/chunk-QVJETNGS.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-6ZOABX2J.mjs +0 -64
- package/dist/lib/browser/intent-resolver-6ZOABX2J.mjs.map +0 -7
- package/dist/lib/browser/react-surface-4B5ELMEW.mjs +0 -205
- package/dist/lib/browser/react-surface-4B5ELMEW.mjs.map +0 -7
- package/dist/lib/browser/settings-PLH54VC7.mjs +0 -28
- package/dist/lib/browser/settings-PLH54VC7.mjs.map +0 -7
- package/dist/lib/browser/state-KI6PJ6DT.mjs +0 -37
- package/dist/lib/browser/state-KI6PJ6DT.mjs.map +0 -7
- package/dist/lib/node/MarkdownContainer-KYGUEZIL.cjs +0 -783
- package/dist/lib/node/MarkdownContainer-KYGUEZIL.cjs.map +0 -7
- package/dist/lib/node/MarkdownPreview-GCJJCXY6.cjs +0 -103
- package/dist/lib/node/MarkdownPreview-GCJJCXY6.cjs.map +0 -7
- package/dist/lib/node/anchor-sort-V3T4SFFI.cjs +0 -48
- package/dist/lib/node/anchor-sort-V3T4SFFI.cjs.map +0 -7
- package/dist/lib/node/app-graph-serializer-E6BXEDEL.cjs +0 -65
- package/dist/lib/node/app-graph-serializer-E6BXEDEL.cjs.map +0 -7
- package/dist/lib/node/artifact-definition-U27MH5SC.cjs +0 -158
- package/dist/lib/node/artifact-definition-U27MH5SC.cjs.map +0 -7
- package/dist/lib/node/chunk-3HHV4MM6.cjs +0 -101
- package/dist/lib/node/chunk-3HHV4MM6.cjs.map +0 -7
- package/dist/lib/node/chunk-CJLYFGPI.cjs +0 -74
- package/dist/lib/node/chunk-CJLYFGPI.cjs.map +0 -7
- package/dist/lib/node/chunk-FU3XZZCO.cjs +0 -58
- package/dist/lib/node/chunk-FU3XZZCO.cjs.map +0 -7
- package/dist/lib/node/chunk-IFYSBQE5.cjs +0 -35
- package/dist/lib/node/chunk-IFYSBQE5.cjs.map +0 -7
- package/dist/lib/node/chunk-LQAC5HL7.cjs +0 -68
- package/dist/lib/node/chunk-LQAC5HL7.cjs.map +0 -7
- package/dist/lib/node/chunk-ZU5OIHCY.cjs +0 -45
- package/dist/lib/node/chunk-ZU5OIHCY.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -165
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-OEFLRNEJ.cjs +0 -77
- package/dist/lib/node/intent-resolver-OEFLRNEJ.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/react-surface-456HQ4KZ.cjs +0 -218
- package/dist/lib/node/react-surface-456HQ4KZ.cjs.map +0 -7
- package/dist/lib/node/settings-E3NUTXJ4.cjs +0 -42
- package/dist/lib/node/settings-E3NUTXJ4.cjs.map +0 -7
- package/dist/lib/node/state-KKDRAG7X.cjs +0 -51
- package/dist/lib/node/state-KKDRAG7X.cjs.map +0 -7
- package/dist/lib/node/types/index.cjs +0 -40
- package/dist/lib/node/types/index.cjs.map +0 -7
- package/dist/lib/node-esm/MarkdownContainer-O3SGMH4G.mjs +0 -771
- package/dist/lib/node-esm/MarkdownContainer-O3SGMH4G.mjs.map +0 -7
- package/dist/lib/node-esm/MarkdownPreview-KFDRV4GC.mjs +0 -81
- package/dist/lib/node-esm/MarkdownPreview-KFDRV4GC.mjs.map +0 -7
- package/dist/lib/node-esm/anchor-sort-BXL7BE67.mjs +0 -33
- package/dist/lib/node-esm/anchor-sort-BXL7BE67.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-F7DGNF3G.mjs +0 -53
- package/dist/lib/node-esm/app-graph-serializer-F7DGNF3G.mjs.map +0 -7
- package/dist/lib/node-esm/artifact-definition-NQOHB6S5.mjs +0 -146
- package/dist/lib/node-esm/artifact-definition-NQOHB6S5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BWDDFDJY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JXXDCSMW.mjs +0 -17
- package/dist/lib/node-esm/chunk-JXXDCSMW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-K26TX5V4.mjs +0 -52
- package/dist/lib/node-esm/chunk-K26TX5V4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RX63ZNML.mjs +0 -24
- package/dist/lib/node-esm/chunk-RX63ZNML.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-T2Y2BT53.mjs +0 -80
- package/dist/lib/node-esm/chunk-T2Y2BT53.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YOABAQ7A.mjs +0 -22
- package/dist/lib/node-esm/chunk-YOABAQ7A.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-CLMSVF2K.mjs +0 -65
- package/dist/lib/node-esm/intent-resolver-CLMSVF2K.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-YHFOQTVO.mjs +0 -206
- package/dist/lib/node-esm/react-surface-YHFOQTVO.mjs.map +0 -7
- package/dist/lib/node-esm/settings-SIY33P3F.mjs +0 -29
- package/dist/lib/node-esm/settings-SIY33P3F.mjs.map +0 -7
- package/dist/lib/node-esm/state-LLGVRYKL.mjs +0 -38
- package/dist/lib/node-esm/state-LLGVRYKL.mjs.map +0 -7
- package/dist/types/src/capabilities/anchor-sort.d.ts +0 -6
- package/dist/types/src/capabilities/anchor-sort.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-serializer.d.ts +0 -4
- package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +0 -1
- package/dist/types/src/capabilities/artifact-definition.d.ts +0 -11
- package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/capabilities.d.ts +0 -12
- package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface.d.ts +0 -4
- package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings.d.ts +0 -4
- package/dist/types/src/capabilities/settings.d.ts.map +0 -1
- package/dist/types/src/capabilities/state.d.ts +0 -11
- package/dist/types/src/capabilities/state.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts +0 -6
- package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts +0 -17
- package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownPreview/index.d.ts +0 -4
- package/dist/types/src/components/MarkdownPreview/index.d.ts.map +0 -1
- package/dist/types/src/components/Toolbar.stories.d.ts +0 -11
- package/dist/types/src/components/Toolbar.stories.d.ts.map +0 -1
- package/dist/types/src/events.d.ts +0 -4
- package/dist/types/src/events.d.ts.map +0 -1
- package/dist/types/src/extensions.d.ts +0 -24
- package/dist/types/src/extensions.d.ts.map +0 -1
- package/dist/types/src/types/schema.d.ts +0 -35
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/src/capabilities/anchor-sort.ts +0 -30
- package/src/capabilities/app-graph-serializer.ts +0 -52
- package/src/capabilities/artifact-definition.ts +0 -116
- package/src/capabilities/capabilities.ts +0 -20
- package/src/capabilities/intent-resolver.ts +0 -63
- package/src/capabilities/react-surface.tsx +0 -113
- package/src/capabilities/settings.ts +0 -25
- package/src/capabilities/state.ts +0 -31
- package/src/components/MarkdownPreview/MarkdownPreview.stories.tsx +0 -74
- package/src/components/MarkdownPreview/MarkdownPreview.tsx +0 -71
- package/src/components/MarkdownPreview/index.ts +0 -9
- package/src/components/Toolbar.stories.tsx +0 -113
- package/src/events.ts +0 -11
- package/src/types/schema.ts +0 -39
|
@@ -2,58 +2,56 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { type ViewUpdate } from '@codemirror/view';
|
|
5
6
|
import React, { type AnchorHTMLAttributes, type ReactNode, useMemo } from 'react';
|
|
6
7
|
import { createRoot } from 'react-dom/client';
|
|
7
8
|
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} from '@dxos/app-framework';
|
|
9
|
+
import { type Capabilities } from '@dxos/app-framework';
|
|
10
|
+
import { useOperationInvoker } from '@dxos/app-framework/ui';
|
|
11
|
+
import { LayoutOperation } from '@dxos/app-toolkit';
|
|
12
|
+
import { debounceAndThrottle } from '@dxos/async';
|
|
13
|
+
import { Obj } from '@dxos/echo';
|
|
14
|
+
import { createDocAccessor } from '@dxos/echo-db';
|
|
15
15
|
import { invariant } from '@dxos/invariant';
|
|
16
|
-
import {
|
|
16
|
+
import { getSpace, useObject } from '@dxos/react-client/echo';
|
|
17
17
|
import { useIdentity } from '@dxos/react-client/halo';
|
|
18
18
|
import { Icon, ThemeProvider } from '@dxos/react-ui';
|
|
19
19
|
import { type SelectionManager } from '@dxos/react-ui-attention';
|
|
20
|
+
import { Text } from '@dxos/schema';
|
|
20
21
|
import {
|
|
21
|
-
|
|
22
|
+
Cursor,
|
|
22
23
|
type EditorStateStore,
|
|
24
|
+
EditorView,
|
|
23
25
|
type EditorViewMode,
|
|
24
26
|
type Extension,
|
|
25
27
|
InputModeExtensions,
|
|
28
|
+
type PreviewOptions,
|
|
29
|
+
type RenderCallback,
|
|
26
30
|
createDataExtensions,
|
|
27
|
-
autocomplete,
|
|
28
31
|
decorateMarkdown,
|
|
32
|
+
documentId,
|
|
29
33
|
folding,
|
|
30
34
|
formattingKeymap,
|
|
31
35
|
linkTooltip,
|
|
32
36
|
listener,
|
|
33
37
|
preview,
|
|
38
|
+
replacer,
|
|
34
39
|
selectionState,
|
|
35
40
|
typewriter,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Cursor,
|
|
40
|
-
type PreviewOptions,
|
|
41
|
-
} from '@dxos/react-ui-editor';
|
|
42
|
-
import { defaultTx } from '@dxos/react-ui-theme';
|
|
43
|
-
import { type DataType } from '@dxos/schema';
|
|
44
|
-
import { isNotFalsy } from '@dxos/util';
|
|
41
|
+
} from '@dxos/ui-editor';
|
|
42
|
+
import { defaultTx } from '@dxos/ui-theme';
|
|
43
|
+
import { isTruthy } from '@dxos/util';
|
|
45
44
|
|
|
46
|
-
import {
|
|
47
|
-
import {
|
|
48
|
-
import { setFallbackName } from './util';
|
|
45
|
+
import { Markdown } from '../types';
|
|
46
|
+
import { setFallbackName } from '../util';
|
|
49
47
|
|
|
50
|
-
type
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
settings
|
|
48
|
+
export type DocumentType = Markdown.Document | Text.Text | { id: string; text: string };
|
|
49
|
+
|
|
50
|
+
export type ExtensionsOptions = {
|
|
51
|
+
id: string;
|
|
52
|
+
object?: DocumentType;
|
|
53
|
+
invokePromise?: Capabilities.OperationInvoker['invokePromise'];
|
|
54
|
+
settings?: Markdown.Settings;
|
|
57
55
|
selectionManager?: SelectionManager;
|
|
58
56
|
viewMode?: EditorViewMode;
|
|
59
57
|
editorStateStore?: EditorStateStore;
|
|
@@ -62,104 +60,82 @@ type ExtensionsOptions = {
|
|
|
62
60
|
|
|
63
61
|
// TODO(burdon): Merge with createBaseExtensions below.
|
|
64
62
|
export const useExtensions = ({
|
|
65
|
-
document,
|
|
66
63
|
id,
|
|
67
|
-
|
|
64
|
+
object,
|
|
68
65
|
settings,
|
|
69
66
|
selectionManager,
|
|
70
67
|
viewMode,
|
|
71
68
|
editorStateStore,
|
|
72
69
|
previewOptions,
|
|
73
70
|
}: ExtensionsOptions): Extension[] => {
|
|
74
|
-
const {
|
|
71
|
+
const { invokePromise } = useOperationInvoker();
|
|
75
72
|
const identity = useIdentity();
|
|
76
|
-
const space = getSpace(
|
|
73
|
+
const space = getSpace(object);
|
|
74
|
+
|
|
75
|
+
// Get the content reference from Document objects.
|
|
76
|
+
const contentRef = Obj.instanceOf(Markdown.Document, object) ? (object as Markdown.Document).content : undefined;
|
|
77
|
+
// Use useObject to trigger re-render when the reference loads (returns snapshot for reactivity).
|
|
78
|
+
useObject(contentRef);
|
|
79
|
+
// Get the actual live object target via .target (needed for createDocAccessor).
|
|
80
|
+
const target = contentRef?.target ?? (Obj.instanceOf(Text.Text, object) ? object : undefined);
|
|
77
81
|
|
|
78
82
|
// TODO(wittjosiah): Autocomplete is not working and this query is causing performance issues.
|
|
79
83
|
// TODO(burdon): Unsubscribe.
|
|
80
84
|
// const query = space?.db.query(Filter.type(DocumentType));
|
|
81
85
|
// query?.subscribe();
|
|
86
|
+
|
|
82
87
|
const baseExtensions = useMemo(
|
|
83
88
|
() =>
|
|
84
89
|
createBaseExtensions({
|
|
85
|
-
document,
|
|
86
90
|
id,
|
|
87
|
-
|
|
91
|
+
object,
|
|
88
92
|
settings,
|
|
89
93
|
selectionManager,
|
|
90
94
|
viewMode,
|
|
91
95
|
previewOptions,
|
|
92
|
-
|
|
93
|
-
// query,
|
|
96
|
+
invokePromise,
|
|
94
97
|
}),
|
|
95
98
|
[
|
|
96
|
-
document,
|
|
97
99
|
id,
|
|
98
|
-
|
|
100
|
+
object,
|
|
99
101
|
viewMode,
|
|
100
|
-
|
|
102
|
+
invokePromise,
|
|
101
103
|
previewOptions,
|
|
102
104
|
settings,
|
|
103
|
-
settings
|
|
104
|
-
settings
|
|
105
|
-
settings
|
|
106
|
-
settings
|
|
107
|
-
settings
|
|
105
|
+
settings?.debug,
|
|
106
|
+
settings?.editorInputMode,
|
|
107
|
+
settings?.folding,
|
|
108
|
+
settings?.numberedHeadings,
|
|
109
|
+
settings?.typewriter,
|
|
108
110
|
selectionManager,
|
|
109
111
|
],
|
|
110
112
|
);
|
|
111
113
|
|
|
112
|
-
const extensionProviders = useCapabilities(MarkdownCapabilities.Extensions);
|
|
113
|
-
|
|
114
|
-
//
|
|
115
|
-
// External extensions from other plugins.
|
|
116
|
-
//
|
|
117
|
-
const pluginExtensions = useMemo<Extension[]>(() => {
|
|
118
|
-
if (!document) {
|
|
119
|
-
return [];
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
return extensionProviders.flat().reduce((acc: Extension[], provider) => {
|
|
123
|
-
const extension = typeof provider === 'function' ? provider({ document }) : provider;
|
|
124
|
-
if (extension) {
|
|
125
|
-
acc.push(extension);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
return acc;
|
|
129
|
-
}, []);
|
|
130
|
-
}, [extensionProviders, document]);
|
|
131
|
-
|
|
132
|
-
//
|
|
133
|
-
// Basic plugins.
|
|
134
|
-
//
|
|
135
114
|
return useMemo<Extension[]>(
|
|
136
115
|
() =>
|
|
137
116
|
[
|
|
117
|
+
// TODO(burdon): Pass this in?
|
|
138
118
|
// NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
|
|
139
|
-
|
|
140
|
-
createDataExtensions({
|
|
141
|
-
id: document.id,
|
|
142
|
-
text: document.content.target && createDocAccessor(document.content.target, ['content']),
|
|
143
|
-
space,
|
|
144
|
-
identity,
|
|
145
|
-
}),
|
|
146
|
-
text &&
|
|
147
|
-
id &&
|
|
119
|
+
target &&
|
|
148
120
|
createDataExtensions({
|
|
149
121
|
id,
|
|
150
|
-
text: createDocAccessor(
|
|
151
|
-
space,
|
|
122
|
+
text: createDocAccessor(target, ['content']),
|
|
123
|
+
messenger: space,
|
|
152
124
|
identity,
|
|
153
125
|
}),
|
|
154
|
-
|
|
155
|
-
|
|
126
|
+
|
|
127
|
+
// TODO(burdon): Reconcile with effect in parent.
|
|
128
|
+
Obj.instanceOf(Markdown.Document, object) &&
|
|
156
129
|
listener({
|
|
157
|
-
onChange: (text) =>
|
|
130
|
+
onChange: ({ text }) => {
|
|
131
|
+
setFallbackName(object as Markdown.Document, text);
|
|
132
|
+
},
|
|
158
133
|
}),
|
|
134
|
+
|
|
159
135
|
baseExtensions,
|
|
160
|
-
|
|
161
|
-
].filter(
|
|
162
|
-
[
|
|
136
|
+
selectionState(editorStateStore),
|
|
137
|
+
].filter(isTruthy),
|
|
138
|
+
[identity, space, id, object, target, baseExtensions],
|
|
163
139
|
);
|
|
164
140
|
};
|
|
165
141
|
|
|
@@ -167,20 +143,19 @@ export const useExtensions = ({
|
|
|
167
143
|
* Create extension instances for editor.
|
|
168
144
|
*/
|
|
169
145
|
const createBaseExtensions = ({
|
|
170
|
-
document,
|
|
171
146
|
id,
|
|
172
|
-
|
|
147
|
+
object,
|
|
148
|
+
invokePromise,
|
|
173
149
|
settings,
|
|
174
150
|
selectionManager,
|
|
175
|
-
query,
|
|
176
151
|
viewMode,
|
|
177
152
|
previewOptions,
|
|
178
153
|
}: ExtensionsOptions): Extension[] => {
|
|
179
154
|
const extensions: Extension[] = [
|
|
180
155
|
selectionManager && selectionChange(selectionManager),
|
|
181
|
-
settings
|
|
182
|
-
settings
|
|
183
|
-
].filter(
|
|
156
|
+
settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],
|
|
157
|
+
settings?.folding && folding(),
|
|
158
|
+
].filter(isTruthy);
|
|
184
159
|
|
|
185
160
|
//
|
|
186
161
|
// Markdown
|
|
@@ -191,54 +166,27 @@ const createBaseExtensions = ({
|
|
|
191
166
|
formattingKeymap(),
|
|
192
167
|
decorateMarkdown({
|
|
193
168
|
selectionChangeDelay: 100,
|
|
194
|
-
numberedHeadings: settings
|
|
169
|
+
numberedHeadings: settings?.numberedHeadings ? { from: 2 } : undefined,
|
|
195
170
|
// TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
|
|
171
|
+
// TODO(burdon): Create dx-tag.
|
|
196
172
|
renderLinkButton:
|
|
197
|
-
|
|
198
|
-
? createLinkRenderer((
|
|
199
|
-
void
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
options: {
|
|
204
|
-
pivotId: document ? fullyQualifiedId(document) : id,
|
|
205
|
-
},
|
|
206
|
-
}),
|
|
207
|
-
);
|
|
173
|
+
invokePromise && (object || id)
|
|
174
|
+
? createLinkRenderer((targetId: string) => {
|
|
175
|
+
void invokePromise(LayoutOperation.Open, {
|
|
176
|
+
subject: [targetId],
|
|
177
|
+
pivotId: object && Obj.isObject(object) ? Obj.getDXN(object).toString() : id,
|
|
178
|
+
});
|
|
208
179
|
})
|
|
209
180
|
: undefined,
|
|
210
181
|
}),
|
|
211
182
|
linkTooltip(renderLinkTooltip),
|
|
212
183
|
preview(previewOptions),
|
|
184
|
+
replacer(),
|
|
213
185
|
],
|
|
214
186
|
);
|
|
215
187
|
}
|
|
216
188
|
|
|
217
|
-
|
|
218
|
-
// Autocomplete object links.
|
|
219
|
-
//
|
|
220
|
-
if (query) {
|
|
221
|
-
extensions.push(
|
|
222
|
-
autocomplete({
|
|
223
|
-
onSearch: (text: string) => {
|
|
224
|
-
// TODO(burdon): Specify filter (e.g., stack).
|
|
225
|
-
return query.objects
|
|
226
|
-
.map<AutocompleteResult | undefined>((object) =>
|
|
227
|
-
object.name?.length && object.id !== document?.id
|
|
228
|
-
? {
|
|
229
|
-
label: object.name,
|
|
230
|
-
// TODO(burdon): Factor out URL builder.
|
|
231
|
-
apply: `[${object.name}](/${fullyQualifiedId(object)})`,
|
|
232
|
-
}
|
|
233
|
-
: undefined,
|
|
234
|
-
)
|
|
235
|
-
.filter(isNotFalsy);
|
|
236
|
-
},
|
|
237
|
-
}),
|
|
238
|
-
);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
if (settings.debug) {
|
|
189
|
+
if (settings?.debug) {
|
|
242
190
|
const items = settings.typewriter?.split(/[,\n]/) ?? '';
|
|
243
191
|
if (items) {
|
|
244
192
|
extensions.push(typewriter({ items }));
|
|
@@ -248,21 +196,24 @@ const createBaseExtensions = ({
|
|
|
248
196
|
return extensions;
|
|
249
197
|
};
|
|
250
198
|
|
|
251
|
-
|
|
252
|
-
return EditorView.updateListener.of(
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
199
|
+
const selectionChange = (selectionManager: SelectionManager) => {
|
|
200
|
+
return EditorView.updateListener.of(
|
|
201
|
+
debounceAndThrottle((update: ViewUpdate) => {
|
|
202
|
+
if (update.selectionSet) {
|
|
203
|
+
const id = update.state.facet(documentId);
|
|
204
|
+
const cursorConverter = update.state.facet(Cursor.converter);
|
|
205
|
+
const selection = update.state.selection;
|
|
206
|
+
const ranges = selection.ranges
|
|
207
|
+
.map((range) => ({
|
|
208
|
+
from: cursorConverter.toCursor(range.from),
|
|
209
|
+
to: cursorConverter.toCursor(range.to),
|
|
210
|
+
}))
|
|
211
|
+
.filter(({ from, to }) => to > from);
|
|
212
|
+
|
|
213
|
+
selectionManager.updateMultiRange(id, ranges);
|
|
214
|
+
}
|
|
215
|
+
}, 100),
|
|
216
|
+
);
|
|
266
217
|
};
|
|
267
218
|
|
|
268
219
|
// TODO(burdon): Factor out styles.
|
|
@@ -317,8 +268,8 @@ const renderLinkTooltip: RenderCallback<{ url: string }> = (el, { url }) => {
|
|
|
317
268
|
);
|
|
318
269
|
};
|
|
319
270
|
|
|
320
|
-
// TODO(burdon):
|
|
321
|
-
|
|
271
|
+
// TODO(burdon): REMOVE.
|
|
272
|
+
const renderRoot = <T extends Element>(root: T, node: ReactNode): T => {
|
|
322
273
|
createRoot(root).render(<ThemeProvider tx={defaultTx}>{node}</ThemeProvider>);
|
|
323
274
|
return root;
|
|
324
275
|
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Option from 'effect/Option';
|
|
6
|
+
import { useCallback, useMemo } from 'react';
|
|
7
|
+
|
|
8
|
+
import { usePluginManager } from '@dxos/app-framework/ui';
|
|
9
|
+
import { AppCapabilities } from '@dxos/app-toolkit';
|
|
10
|
+
import { type Database, Filter, Obj, Query, Type } from '@dxos/echo';
|
|
11
|
+
import { EntityKind, SystemTypeAnnotation, getTypeAnnotation } from '@dxos/echo/internal';
|
|
12
|
+
import { toLocalizedString, useTranslation } from '@dxos/react-ui';
|
|
13
|
+
import { type EditorMenuGroup, type EditorMenuItem } from '@dxos/react-ui-editor';
|
|
14
|
+
import { insertAtCursor, insertAtLineStart } from '@dxos/ui-editor';
|
|
15
|
+
|
|
16
|
+
export const useLinkQuery = (db: Database.Database | undefined) => {
|
|
17
|
+
const { t } = useTranslation();
|
|
18
|
+
|
|
19
|
+
const manager = usePluginManager();
|
|
20
|
+
const resolve = useCallback(
|
|
21
|
+
(typename: string) =>
|
|
22
|
+
manager.capabilities.getAll(AppCapabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {},
|
|
23
|
+
[manager],
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
const filter = useMemo(
|
|
27
|
+
() =>
|
|
28
|
+
Filter.or(
|
|
29
|
+
...(db?.schemaRegistry.query({ location: ['database', 'runtime'] }).runSync() ?? [])
|
|
30
|
+
.filter((schema) => getTypeAnnotation(schema)?.kind !== EntityKind.Relation)
|
|
31
|
+
.filter((schema) => !SystemTypeAnnotation.get(schema).pipe(Option.getOrElse(() => false)))
|
|
32
|
+
.map((schema) => Filter.typename(Type.getTypename(schema))),
|
|
33
|
+
),
|
|
34
|
+
[db],
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
const handleLinkQuery = useCallback(
|
|
38
|
+
async (query?: string): Promise<EditorMenuGroup[]> => {
|
|
39
|
+
const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : (query?.toLowerCase() ?? '');
|
|
40
|
+
const results = await db?.query(Query.select(filter)).run();
|
|
41
|
+
|
|
42
|
+
// TODO(wittjosiah): Use `Obj.Unknown` type.
|
|
43
|
+
const getLabel = (object: any) => {
|
|
44
|
+
const label = Obj.getLabel(object);
|
|
45
|
+
if (label) {
|
|
46
|
+
return label;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// TODO(wittjosiah): Remove metadata labels.
|
|
50
|
+
const type = Obj.getTypename(object)!;
|
|
51
|
+
const metadata = resolve(type);
|
|
52
|
+
return metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New object' }];
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const items =
|
|
56
|
+
results
|
|
57
|
+
?.filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name))
|
|
58
|
+
// TODO(wittjosiah): Remove `any` type.
|
|
59
|
+
.map((object: any): EditorMenuItem => {
|
|
60
|
+
const metadata = resolve(Obj.getTypename(object)!);
|
|
61
|
+
const label = toLocalizedString(getLabel(object), t);
|
|
62
|
+
return {
|
|
63
|
+
id: object.id,
|
|
64
|
+
label,
|
|
65
|
+
icon: metadata.icon,
|
|
66
|
+
onSelect: ({ view, head }) => {
|
|
67
|
+
const link = `[${label}](${Obj.getDXN(object)})`;
|
|
68
|
+
if (query?.startsWith('@')) {
|
|
69
|
+
insertAtLineStart(view, head, `!${link}\n`);
|
|
70
|
+
} else {
|
|
71
|
+
insertAtCursor(view, head, `${link} `);
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}) ?? [];
|
|
76
|
+
|
|
77
|
+
return [{ id: 'echo', items }];
|
|
78
|
+
},
|
|
79
|
+
[db, filter, resolve],
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
return handleLinkQuery;
|
|
83
|
+
};
|
|
@@ -3,54 +3,59 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { EditorView } from '@codemirror/view';
|
|
6
|
-
import
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
7
7
|
import { useMemo } from 'react';
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { useOperationResolver } from '@dxos/app-framework/ui';
|
|
10
|
+
import { LayoutOperation } from '@dxos/app-toolkit';
|
|
10
11
|
import { invariant } from '@dxos/invariant';
|
|
11
|
-
import {
|
|
12
|
+
import { OperationResolver } from '@dxos/operation';
|
|
13
|
+
import { Cursor, setSelection } from '@dxos/ui-editor';
|
|
12
14
|
|
|
13
|
-
import {
|
|
15
|
+
import { meta } from '../meta';
|
|
14
16
|
|
|
15
17
|
/**
|
|
16
18
|
* Handle scrolling and selection of the current thread in a markdown editor.
|
|
17
19
|
*/
|
|
18
|
-
export const useSelectCurrentThread = (editorView: EditorView |
|
|
19
|
-
const
|
|
20
|
+
export const useSelectCurrentThread = (editorView: EditorView | null, documentId: string) => {
|
|
21
|
+
const scrollIntoViewHandler = useMemo(
|
|
20
22
|
() =>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
OperationResolver.make({
|
|
24
|
+
operation: LayoutOperation.ScrollIntoView,
|
|
23
25
|
position: 'hoist',
|
|
24
|
-
filter: (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
resolve: ({ options: { cursor } }) => {
|
|
32
|
-
invariant(editorView, 'Editor view is not defined.');
|
|
33
|
-
const range = Cursor.getRangeFromCursor(editorView.state, cursor!);
|
|
34
|
-
if (range) {
|
|
35
|
-
const selection = editorView.state.selection.main.from !== range.from ? { anchor: range.from } : undefined;
|
|
36
|
-
const effects = [
|
|
37
|
-
// NOTE: This does not use the DOM scrollIntoView function.
|
|
38
|
-
EditorView.scrollIntoView(range.from, { y: 'start', yMargin: 96 }),
|
|
39
|
-
];
|
|
40
|
-
if (selection) {
|
|
41
|
-
// Update the editor selection to get bi-directional highlighting.
|
|
42
|
-
effects.push(setSelection.of({ current: documentId }));
|
|
26
|
+
filter: (input) => !!editorView && input.subject === documentId && !!input.cursor,
|
|
27
|
+
handler: (input) =>
|
|
28
|
+
Effect.sync(() => {
|
|
29
|
+
invariant(editorView, 'Editor view is not defined.');
|
|
30
|
+
const cursor = input.cursor;
|
|
31
|
+
if (!cursor) {
|
|
32
|
+
return;
|
|
43
33
|
}
|
|
34
|
+
const range = Cursor.getRangeFromCursor(editorView.state, cursor);
|
|
35
|
+
if (range) {
|
|
36
|
+
const selection =
|
|
37
|
+
editorView.state.selection.main.from !== range.from ? { anchor: range.from } : undefined;
|
|
38
|
+
const effects = [
|
|
39
|
+
// NOTE: This does not use the DOM scrollIntoView function.
|
|
40
|
+
EditorView.scrollIntoView(range.from, {
|
|
41
|
+
y: 'start',
|
|
42
|
+
yMargin: 96,
|
|
43
|
+
}),
|
|
44
|
+
];
|
|
45
|
+
if (selection) {
|
|
46
|
+
// Update the editor selection to get bi-directional highlighting.
|
|
47
|
+
effects.push(setSelection.of({ current: documentId }));
|
|
48
|
+
}
|
|
44
49
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
editorView.dispatch({
|
|
51
|
+
effects,
|
|
52
|
+
selection: selection ? { anchor: range.from } : undefined,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}),
|
|
51
56
|
}),
|
|
52
57
|
[documentId, editorView],
|
|
53
58
|
);
|
|
54
59
|
|
|
55
|
-
|
|
60
|
+
useOperationResolver(meta.id, scrollIntoViewHandler);
|
|
56
61
|
};
|
package/src/index.ts
CHANGED
|
@@ -2,8 +2,12 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
export { MarkdownCapabilities } from './
|
|
6
|
-
|
|
7
|
-
export * from './MarkdownPlugin';
|
|
5
|
+
export { MarkdownCapabilities, MarkdownEvents } from './types';
|
|
6
|
+
|
|
8
7
|
export * from './meta';
|
|
8
|
+
export * from './types';
|
|
9
9
|
export * from './util';
|
|
10
|
+
|
|
11
|
+
export * from './MarkdownPlugin';
|
|
12
|
+
|
|
13
|
+
export { MarkdownEditor } from './components/MarkdownEditor';
|
package/src/meta.ts
CHANGED
|
@@ -2,19 +2,18 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { type
|
|
5
|
+
import { type Plugin } from '@dxos/app-framework';
|
|
6
|
+
import { trim } from '@dxos/util';
|
|
6
7
|
|
|
7
|
-
export const
|
|
8
|
-
|
|
9
|
-
export const meta: PluginMeta = {
|
|
10
|
-
id: MARKDOWN_PLUGIN,
|
|
8
|
+
export const meta: Plugin.Meta = {
|
|
9
|
+
id: 'dxos.org/plugin/markdown',
|
|
11
10
|
name: 'Markdown',
|
|
12
|
-
description: `
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Your AI agent will have access to all markdown docs in your Space which means you can use them to extend the memory of your personal agent and add long term context for automated workflows.
|
|
11
|
+
description: trim`
|
|
12
|
+
Full-featured collaborative markdown editor with real-time editing, inline comments, and rich formatting.
|
|
13
|
+
Supports AI-powered editing assistance and seamlessly integrates with other workspace objects.
|
|
16
14
|
`,
|
|
17
|
-
source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown',
|
|
18
15
|
icon: 'ph--text-aa--regular',
|
|
16
|
+
iconHue: 'indigo',
|
|
17
|
+
source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-markdown',
|
|
19
18
|
screenshots: ['https://dxos.network/plugin-details-markdown-dark.png'],
|
|
20
19
|
};
|
package/src/testing.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Toolkit from '@effect/ai/Toolkit';
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
7
|
+
|
|
8
|
+
import { SpaceProperties } from '@dxos/client-protocol';
|
|
9
|
+
import { Obj, Ref } from '@dxos/echo';
|
|
10
|
+
import { Database } from '@dxos/echo';
|
|
11
|
+
import { Collection } from '@dxos/schema';
|
|
12
|
+
|
|
13
|
+
// TODO(wittjosiah): Factor out.
|
|
14
|
+
export const WithProperties = <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R | Database.Service> =>
|
|
15
|
+
Effect.zipRight(
|
|
16
|
+
Effect.gen(function* () {
|
|
17
|
+
// TODO(wittjosiah): Remove cast.
|
|
18
|
+
yield* Database.add(
|
|
19
|
+
Obj.make(SpaceProperties, {
|
|
20
|
+
[Collection.Collection.typename]: Ref.make(Collection.make()),
|
|
21
|
+
}) as any,
|
|
22
|
+
);
|
|
23
|
+
}),
|
|
24
|
+
effect,
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
export const testToolkit = Toolkit.empty as Toolkit.Toolkit<any>;
|
package/src/translations.ts
CHANGED
|
@@ -2,23 +2,28 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { type Resource } from '@dxos/react-ui';
|
|
6
|
+
import { translations as editorTranslations } from '@dxos/react-ui-editor';
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
8
|
+
import { meta } from './meta';
|
|
9
|
+
import { Markdown } from './types';
|
|
9
10
|
|
|
10
|
-
export
|
|
11
|
+
export const translations = [
|
|
11
12
|
{
|
|
12
13
|
'en-US': {
|
|
13
|
-
[
|
|
14
|
+
[Markdown.Document.typename]: {
|
|
14
15
|
'typename label': 'Document',
|
|
15
16
|
'typename label_zero': 'Documents',
|
|
16
17
|
'typename label_one': 'Document',
|
|
17
18
|
'typename label_other': 'Documents',
|
|
18
19
|
'object name placeholder': 'New document',
|
|
20
|
+
'rename object label': 'Rename document',
|
|
21
|
+
'delete object label': 'Delete document',
|
|
22
|
+
'object deleted label': 'Document deleted',
|
|
19
23
|
},
|
|
20
|
-
[
|
|
24
|
+
[meta.id]: {
|
|
21
25
|
'plugin name': 'Editor',
|
|
26
|
+
'settings title': 'Editor settings',
|
|
22
27
|
'choose markdown from space dialog title': 'Choose one or more documents to add',
|
|
23
28
|
// TODO(burdon): Style-guide for user-facing text (e.g., hints, questions, capitalization, etc.)
|
|
24
29
|
'empty choose markdown from space message': 'None available; try creating a new one instead?',
|
|
@@ -40,7 +45,11 @@ export default [
|
|
|
40
45
|
'upload image label': 'Upload image',
|
|
41
46
|
'fallback title': 'Untitled',
|
|
42
47
|
'navigate to document label': 'Open document',
|
|
48
|
+
'words label_zero': 'words',
|
|
49
|
+
'words label_one': 'word',
|
|
50
|
+
'words label_other': 'words',
|
|
43
51
|
},
|
|
44
52
|
},
|
|
45
53
|
},
|
|
46
|
-
|
|
54
|
+
...editorTranslations,
|
|
55
|
+
] as const satisfies Resource[];
|