@dxos/plugin-markdown 0.8.2 → 0.8.3-main.7f5a14c
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/{MarkdownContainer-5IEINNQB.mjs → MarkdownContainer-3KTC7Q4C.mjs} +132 -18
- package/dist/lib/browser/MarkdownContainer-3KTC7Q4C.mjs.map +7 -0
- package/dist/lib/browser/{MarkdownPreview-YW5CS3ID.mjs → MarkdownPreview-F4PYFW5L.mjs} +15 -22
- package/dist/lib/browser/MarkdownPreview-F4PYFW5L.mjs.map +7 -0
- package/dist/lib/browser/{anchor-sort-VS4OZVPP.mjs → anchor-sort-BMAN2ABT.mjs} +4 -4
- package/dist/lib/browser/anchor-sort-BMAN2ABT.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-V6RLEHVY.mjs → app-graph-serializer-FLQI6GFL.mjs} +3 -3
- package/dist/lib/browser/{artifact-definition-5NAODQLG.mjs → artifact-definition-FQ2R6KPT.mjs} +6 -6
- package/dist/lib/browser/artifact-definition-FQ2R6KPT.mjs.map +7 -0
- package/dist/lib/browser/{chunk-C5RABVIX.mjs → chunk-CX5GYZYO.mjs} +2 -2
- package/dist/lib/browser/{chunk-ACAID3XF.mjs → chunk-LCMXUTQB.mjs} +7 -7
- package/dist/lib/browser/{chunk-77NGW7EO.mjs → chunk-LXSRQPEP.mjs} +9 -9
- package/dist/lib/browser/chunk-LXSRQPEP.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ECSM56YC.mjs → chunk-N2D26K6W.mjs} +4 -5
- package/dist/lib/browser/chunk-N2D26K6W.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +7 -8
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-4GDYST4Y.mjs → intent-resolver-6ZOABX2J.mjs} +6 -7
- package/dist/lib/browser/intent-resolver-6ZOABX2J.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-QE4SKXBT.mjs → react-surface-RJQKYJJQ.mjs} +8 -8
- package/dist/lib/browser/react-surface-RJQKYJJQ.mjs.map +7 -0
- package/dist/lib/browser/{settings-W5CK4PXP.mjs → settings-PLH54VC7.mjs} +4 -4
- package/dist/lib/browser/settings-PLH54VC7.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node/{MarkdownContainer-LSNNPNRB.cjs → MarkdownContainer-NG4H6AZJ.cjs} +181 -67
- package/dist/lib/node/MarkdownContainer-NG4H6AZJ.cjs.map +7 -0
- package/dist/lib/node/{MarkdownPreview-G34HSQEB.cjs → MarkdownPreview-GCJJCXY6.cjs} +24 -31
- package/dist/lib/node/MarkdownPreview-GCJJCXY6.cjs.map +7 -0
- package/dist/lib/node/{anchor-sort-NHVF23EU.cjs → anchor-sort-V3T4SFFI.cjs} +12 -12
- package/dist/lib/node/anchor-sort-V3T4SFFI.cjs.map +7 -0
- package/dist/lib/node/{app-graph-serializer-CLALIYN3.cjs → app-graph-serializer-BZPM7HHJ.cjs} +9 -9
- package/dist/lib/node/{artifact-definition-VEAHK7BX.cjs → artifact-definition-U27MH5SC.cjs} +16 -16
- package/dist/lib/node/artifact-definition-U27MH5SC.cjs.map +7 -0
- package/dist/lib/node/{chunk-RQS4KBMG.cjs → chunk-3HHV4MM6.cjs} +6 -7
- package/dist/lib/node/chunk-3HHV4MM6.cjs.map +7 -0
- package/dist/lib/node/{chunk-C4HR7UXE.cjs → chunk-4DYNEQG3.cjs} +10 -10
- package/dist/lib/node/{chunk-G7RBJX22.cjs → chunk-CJLYFGPI.cjs} +12 -12
- package/dist/lib/node/chunk-CJLYFGPI.cjs.map +7 -0
- package/dist/lib/node/{chunk-ZDTL47I7.cjs → chunk-SYEFGLXN.cjs} +6 -6
- package/dist/lib/node/index.cjs +26 -27
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-AUZVK3NZ.cjs → intent-resolver-OEFLRNEJ.cjs} +14 -15
- package/dist/lib/node/intent-resolver-OEFLRNEJ.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-WJZTEBYO.cjs → react-surface-5RKEWAXS.cjs} +15 -15
- package/dist/lib/node/react-surface-5RKEWAXS.cjs.map +7 -0
- package/dist/lib/node/{settings-IRKU3WPM.cjs → settings-E3NUTXJ4.cjs} +7 -7
- package/dist/lib/node/settings-E3NUTXJ4.cjs.map +7 -0
- package/dist/lib/node/types/index.cjs +7 -7
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/{MarkdownContainer-UZSLXMWO.mjs → MarkdownContainer-DZPXCA6J.mjs} +132 -18
- package/dist/lib/node-esm/MarkdownContainer-DZPXCA6J.mjs.map +7 -0
- package/dist/lib/node-esm/{MarkdownPreview-TCV7BI32.mjs → MarkdownPreview-KFDRV4GC.mjs} +15 -22
- package/dist/lib/node-esm/MarkdownPreview-KFDRV4GC.mjs.map +7 -0
- package/dist/lib/node-esm/{anchor-sort-G2HLCYFK.mjs → anchor-sort-BXL7BE67.mjs} +4 -4
- package/dist/lib/node-esm/anchor-sort-BXL7BE67.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-C3RNTQGM.mjs → app-graph-serializer-EBH54X6Z.mjs} +3 -3
- package/dist/lib/node-esm/{artifact-definition-7TIJW2CO.mjs → artifact-definition-NQOHB6S5.mjs} +6 -6
- package/dist/lib/node-esm/artifact-definition-NQOHB6S5.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-6RPARLIK.mjs → chunk-K26TX5V4.mjs} +9 -9
- package/dist/lib/node-esm/chunk-K26TX5V4.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-TCFJNUAE.mjs → chunk-Q7WUBLL3.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-NCMPVEXO.mjs → chunk-T2Y2BT53.mjs} +4 -5
- package/dist/lib/node-esm/chunk-T2Y2BT53.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-EIUTPXGL.mjs → chunk-WANCCPU7.mjs} +7 -7
- package/dist/lib/node-esm/index.mjs +7 -8
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-FTNXUNI2.mjs → intent-resolver-CLMSVF2K.mjs} +6 -7
- package/dist/lib/node-esm/intent-resolver-CLMSVF2K.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-XNM3YDFB.mjs → react-surface-Z3DX37JV.mjs} +8 -8
- package/dist/lib/node-esm/react-surface-Z3DX37JV.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-MK7D7LHQ.mjs → settings-SIY33P3F.mjs} +4 -4
- package/dist/lib/node-esm/settings-SIY33P3F.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownContainer.d.ts +1 -1
- package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +4 -2
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts +1 -1
- package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts +2 -6
- package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts.map +1 -1
- package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/package.json +38 -39
- package/src/MarkdownPlugin.tsx +3 -5
- package/src/capabilities/anchor-sort.ts +2 -2
- package/src/capabilities/artifact-definition.ts +3 -3
- package/src/capabilities/intent-resolver.ts +4 -5
- package/src/capabilities/react-surface.tsx +4 -4
- package/src/capabilities/settings.ts +2 -2
- package/src/components/MarkdownContainer.tsx +61 -7
- package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +3 -3
- package/src/components/MarkdownEditor/MarkdownEditor.tsx +196 -144
- package/src/components/MarkdownPreview/MarkdownPreview.stories.tsx +8 -7
- package/src/components/MarkdownPreview/MarkdownPreview.tsx +14 -28
- package/src/components/Suggestions.stories.tsx +8 -9
- package/src/components/Toolbar.stories.tsx +3 -3
- package/src/types/schema.ts +2 -3
- package/src/util.tsx +5 -7
- package/dist/lib/browser/MarkdownContainer-5IEINNQB.mjs.map +0 -7
- package/dist/lib/browser/MarkdownPreview-YW5CS3ID.mjs.map +0 -7
- package/dist/lib/browser/anchor-sort-VS4OZVPP.mjs.map +0 -7
- package/dist/lib/browser/artifact-definition-5NAODQLG.mjs.map +0 -7
- package/dist/lib/browser/chunk-77NGW7EO.mjs.map +0 -7
- package/dist/lib/browser/chunk-ECSM56YC.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-4GDYST4Y.mjs.map +0 -7
- package/dist/lib/browser/react-surface-QE4SKXBT.mjs.map +0 -7
- package/dist/lib/browser/settings-W5CK4PXP.mjs.map +0 -7
- package/dist/lib/node/MarkdownContainer-LSNNPNRB.cjs.map +0 -7
- package/dist/lib/node/MarkdownPreview-G34HSQEB.cjs.map +0 -7
- package/dist/lib/node/anchor-sort-NHVF23EU.cjs.map +0 -7
- package/dist/lib/node/artifact-definition-VEAHK7BX.cjs.map +0 -7
- package/dist/lib/node/chunk-G7RBJX22.cjs.map +0 -7
- package/dist/lib/node/chunk-RQS4KBMG.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-AUZVK3NZ.cjs.map +0 -7
- package/dist/lib/node/react-surface-WJZTEBYO.cjs.map +0 -7
- package/dist/lib/node/settings-IRKU3WPM.cjs.map +0 -7
- package/dist/lib/node-esm/MarkdownContainer-UZSLXMWO.mjs.map +0 -7
- package/dist/lib/node-esm/MarkdownPreview-TCV7BI32.mjs.map +0 -7
- package/dist/lib/node-esm/anchor-sort-G2HLCYFK.mjs.map +0 -7
- package/dist/lib/node-esm/artifact-definition-7TIJW2CO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-6RPARLIK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NCMPVEXO.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-FTNXUNI2.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-XNM3YDFB.mjs.map +0 -7
- package/dist/lib/node-esm/settings-MK7D7LHQ.mjs.map +0 -7
- /package/dist/lib/browser/{app-graph-serializer-V6RLEHVY.mjs.map → app-graph-serializer-FLQI6GFL.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-C5RABVIX.mjs.map → chunk-CX5GYZYO.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-ACAID3XF.mjs.map → chunk-LCMXUTQB.mjs.map} +0 -0
- /package/dist/lib/node/{app-graph-serializer-CLALIYN3.cjs.map → app-graph-serializer-BZPM7HHJ.cjs.map} +0 -0
- /package/dist/lib/node/{chunk-C4HR7UXE.cjs.map → chunk-4DYNEQG3.cjs.map} +0 -0
- /package/dist/lib/node/{chunk-ZDTL47I7.cjs.map → chunk-SYEFGLXN.cjs.map} +0 -0
- /package/dist/lib/node-esm/{app-graph-serializer-C3RNTQGM.mjs.map → app-graph-serializer-EBH54X6Z.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-TCFJNUAE.mjs.map → chunk-Q7WUBLL3.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-EIUTPXGL.mjs.map → chunk-WANCCPU7.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/types/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/types/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,eAAO,MAAM,cAAc;;;;;;;EAI2B,CAAC;AAEvD,eAAO,MAAM,YAAY;;;;;;;OAKxB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,YAAY,CAAC,CAAC;AAGnE,eAAO,MAAM,cAAc,GAAI,mBAAmB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;;;;;;;;EACQ,CAAC;AAE5F;;GAEG;AAEH,eAAO,MAAM,aAAa,GAAI,MAAM,GAAG,KAAG,IAAI,IAAI;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAM7C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGtE,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEhE,eAAO,MAAM,oBAAoB,GAAI,MAAM,OAAO,KAAG,IAAI,IAAI,kBAKhD,CAAC;AAId,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,WAE9C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,WAE1C,CAAC;AAEF,eAAO,MAAM,eAAe,0BAKrB,CAAC;AAER,eAAO,MAAM,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAU1D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-markdown",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3-main.7f5a14c",
|
|
4
4
|
"description": "DXOS Surface plugin for interacting with Markdown",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -39,35 +39,34 @@
|
|
|
39
39
|
"@preact-signals/safe-react": "^0.9.0",
|
|
40
40
|
"@preact/signals-core": "^1.9.0",
|
|
41
41
|
"react-dropzone": "^14.2.3",
|
|
42
|
-
"@dxos/ai": "0.8.
|
|
43
|
-
"@dxos/artifact": "0.8.
|
|
44
|
-
"@dxos/
|
|
45
|
-
"@dxos/
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/echo
|
|
48
|
-
"@dxos/
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/
|
|
54
|
-
"@dxos/
|
|
55
|
-
"@dxos/
|
|
56
|
-
"@dxos/plugin-client": "0.8.
|
|
57
|
-
"@dxos/plugin-deck": "0.8.
|
|
58
|
-
"@dxos/plugin-preview": "0.8.
|
|
59
|
-
"@dxos/plugin-graph": "0.8.
|
|
60
|
-
"@dxos/plugin-
|
|
61
|
-
"@dxos/
|
|
62
|
-
"@dxos/react-
|
|
63
|
-
"@dxos/
|
|
64
|
-
"@dxos/react-client": "0.8.
|
|
65
|
-
"@dxos/react-ui-
|
|
66
|
-
"@dxos/react-ui-
|
|
67
|
-
"@dxos/react-ui-
|
|
68
|
-
"@dxos/
|
|
69
|
-
"@dxos/schema": "0.8.
|
|
70
|
-
"@dxos/util": "0.8.2"
|
|
42
|
+
"@dxos/ai": "0.8.3-main.7f5a14c",
|
|
43
|
+
"@dxos/artifact": "0.8.3-main.7f5a14c",
|
|
44
|
+
"@dxos/app-framework": "0.8.3-main.7f5a14c",
|
|
45
|
+
"@dxos/assistant": "0.8.3-main.7f5a14c",
|
|
46
|
+
"@dxos/async": "0.8.3-main.7f5a14c",
|
|
47
|
+
"@dxos/echo": "0.8.3-main.7f5a14c",
|
|
48
|
+
"@dxos/echo-schema": "0.8.3-main.7f5a14c",
|
|
49
|
+
"@dxos/invariant": "0.8.3-main.7f5a14c",
|
|
50
|
+
"@dxos/keys": "0.8.3-main.7f5a14c",
|
|
51
|
+
"@dxos/lit-ui": "0.8.3-main.7f5a14c",
|
|
52
|
+
"@dxos/local-storage": "0.8.3-main.7f5a14c",
|
|
53
|
+
"@dxos/live-object": "0.8.3-main.7f5a14c",
|
|
54
|
+
"@dxos/log": "0.8.3-main.7f5a14c",
|
|
55
|
+
"@dxos/plugin-attention": "0.8.3-main.7f5a14c",
|
|
56
|
+
"@dxos/plugin-client": "0.8.3-main.7f5a14c",
|
|
57
|
+
"@dxos/plugin-deck": "0.8.3-main.7f5a14c",
|
|
58
|
+
"@dxos/plugin-preview": "0.8.3-main.7f5a14c",
|
|
59
|
+
"@dxos/plugin-graph": "0.8.3-main.7f5a14c",
|
|
60
|
+
"@dxos/plugin-space": "0.8.3-main.7f5a14c",
|
|
61
|
+
"@dxos/plugin-theme": "0.8.3-main.7f5a14c",
|
|
62
|
+
"@dxos/react-hooks": "0.8.3-main.7f5a14c",
|
|
63
|
+
"@dxos/react-ui-attention": "0.8.3-main.7f5a14c",
|
|
64
|
+
"@dxos/react-client": "0.8.3-main.7f5a14c",
|
|
65
|
+
"@dxos/react-ui-form": "0.8.3-main.7f5a14c",
|
|
66
|
+
"@dxos/react-ui-editor": "0.8.3-main.7f5a14c",
|
|
67
|
+
"@dxos/react-ui-stack": "0.8.3-main.7f5a14c",
|
|
68
|
+
"@dxos/util": "0.8.3-main.7f5a14c",
|
|
69
|
+
"@dxos/schema": "0.8.3-main.7f5a14c"
|
|
71
70
|
},
|
|
72
71
|
"devDependencies": {
|
|
73
72
|
"@effect-rx/rx-react": "^0.34.1",
|
|
@@ -79,13 +78,13 @@
|
|
|
79
78
|
"react": "~18.2.0",
|
|
80
79
|
"react-dom": "~18.2.0",
|
|
81
80
|
"vite": "5.4.7",
|
|
82
|
-
"@dxos/debug": "0.8.
|
|
83
|
-
"@dxos/plugin-
|
|
84
|
-
"@dxos/random": "0.8.
|
|
85
|
-
"@dxos/plugin-
|
|
86
|
-
"@dxos/
|
|
87
|
-
"@dxos/react-ui-theme": "0.8.
|
|
88
|
-
"@dxos/
|
|
81
|
+
"@dxos/debug": "0.8.3-main.7f5a14c",
|
|
82
|
+
"@dxos/plugin-storybook-layout": "0.8.3-main.7f5a14c",
|
|
83
|
+
"@dxos/random": "0.8.3-main.7f5a14c",
|
|
84
|
+
"@dxos/plugin-theme": "0.8.3-main.7f5a14c",
|
|
85
|
+
"@dxos/react-ui": "0.8.3-main.7f5a14c",
|
|
86
|
+
"@dxos/react-ui-theme": "0.8.3-main.7f5a14c",
|
|
87
|
+
"@dxos/storybook-utils": "0.8.3-main.7f5a14c"
|
|
89
88
|
},
|
|
90
89
|
"peerDependencies": {
|
|
91
90
|
"@effect-rx/rx-react": "^0.34.1",
|
|
@@ -94,8 +93,8 @@
|
|
|
94
93
|
"effect": "^3.13.3",
|
|
95
94
|
"react": "~18.2.0",
|
|
96
95
|
"react-dom": "~18.2.0",
|
|
97
|
-
"@dxos/react-ui": "0.8.
|
|
98
|
-
"@dxos/react-ui-theme": "0.8.
|
|
96
|
+
"@dxos/react-ui": "0.8.3-main.7f5a14c",
|
|
97
|
+
"@dxos/react-ui-theme": "0.8.3-main.7f5a14c"
|
|
99
98
|
},
|
|
100
99
|
"publishConfig": {
|
|
101
100
|
"access": "public"
|
package/src/MarkdownPlugin.tsx
CHANGED
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';
|
|
6
|
-
import {
|
|
7
|
-
import { RefArray } from '@dxos/live-object';
|
|
6
|
+
import { type Obj, Ref } from '@dxos/echo';
|
|
8
7
|
import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
|
|
9
8
|
import { SpaceCapabilities } from '@dxos/plugin-space';
|
|
10
9
|
import { defineObjectForm } from '@dxos/plugin-space/types';
|
|
@@ -54,14 +53,13 @@ export const MarkdownPlugin = () =>
|
|
|
54
53
|
contributes(Capabilities.Metadata, {
|
|
55
54
|
id: DocumentType.typename,
|
|
56
55
|
metadata: {
|
|
57
|
-
label: (object:
|
|
58
|
-
isInstanceOf(DocumentType, object) ? object.name || object.fallbackName : undefined,
|
|
56
|
+
label: (object: DocumentType) => object.name || object.fallbackName,
|
|
59
57
|
icon: 'ph--text-aa--regular',
|
|
60
58
|
graphProps: {
|
|
61
59
|
managesAutofocus: true,
|
|
62
60
|
},
|
|
63
61
|
// TODO(wittjosiah): Move out of metadata.
|
|
64
|
-
loadReferences: async (doc: DocumentType) => await
|
|
62
|
+
loadReferences: async (doc: DocumentType) => await Ref.Array.loadAll<Obj.Any>([doc.content]),
|
|
65
63
|
serializer,
|
|
66
64
|
// TODO(wittjosiah): Consider how to do generic comments without these.
|
|
67
65
|
comments: 'anchored',
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Capabilities, contributes } from '@dxos/app-framework';
|
|
6
|
-
import {
|
|
6
|
+
import { Type } from '@dxos/echo';
|
|
7
7
|
import { createDocAccessor, getRangeFromCursor, getTarget } from '@dxos/react-client/echo';
|
|
8
8
|
|
|
9
9
|
import { DocumentType } from '../types';
|
|
10
10
|
|
|
11
11
|
export default () =>
|
|
12
12
|
contributes(Capabilities.AnchorSort, {
|
|
13
|
-
key:
|
|
13
|
+
key: Type.getTypename(DocumentType)!,
|
|
14
14
|
sort: (anchorA, anchorB) => {
|
|
15
15
|
const doc = getTarget(anchorA) as DocumentType;
|
|
16
16
|
const accessor = doc.content.target ? createDocAccessor(doc.content.target, ['content']) : undefined;
|
|
@@ -8,7 +8,7 @@ import { createTool, ToolResult } from '@dxos/ai';
|
|
|
8
8
|
import { Capabilities, chain, contributes, createIntent, type PromiseIntentDispatcher } from '@dxos/app-framework';
|
|
9
9
|
import { ArtifactId, defineArtifact } from '@dxos/artifact';
|
|
10
10
|
import { createArtifactElement } from '@dxos/assistant';
|
|
11
|
-
import {
|
|
11
|
+
import { Obj } from '@dxos/echo';
|
|
12
12
|
import { invariant, assertArgument } from '@dxos/invariant';
|
|
13
13
|
import { SpaceAction } from '@dxos/plugin-space/types';
|
|
14
14
|
import { Filter, fullyQualifiedId, type Space } from '@dxos/react-client/echo';
|
|
@@ -78,7 +78,7 @@ export default () => {
|
|
|
78
78
|
const space = extensions.space;
|
|
79
79
|
const { objects: documents } = await space.db.query(Filter.type(DocumentType)).run();
|
|
80
80
|
const documentInfo = documents.map((doc) => {
|
|
81
|
-
invariant(
|
|
81
|
+
invariant(Obj.instanceOf(DocumentType, doc));
|
|
82
82
|
return {
|
|
83
83
|
id: fullyQualifiedId(doc),
|
|
84
84
|
name: doc.name || doc.fallbackName || 'Unnamed Document',
|
|
@@ -99,7 +99,7 @@ export default () => {
|
|
|
99
99
|
execute: async ({ id }, { extensions }) => {
|
|
100
100
|
invariant(extensions?.space, 'No space');
|
|
101
101
|
const document = await extensions.space.db.query(Filter.ids(ArtifactId.toDXN(id).toString())).first();
|
|
102
|
-
assertArgument(
|
|
102
|
+
assertArgument(Obj.instanceOf(DocumentType, document), 'Invalid type');
|
|
103
103
|
|
|
104
104
|
const { content } = await document.content?.load();
|
|
105
105
|
return ToolResult.Success({
|
|
@@ -12,8 +12,7 @@ import {
|
|
|
12
12
|
createResolver,
|
|
13
13
|
type PluginContext,
|
|
14
14
|
} from '@dxos/app-framework';
|
|
15
|
-
import {
|
|
16
|
-
import { live } from '@dxos/live-object';
|
|
15
|
+
import { Obj } from '@dxos/echo';
|
|
17
16
|
import { createDocAccessor, getRangeFromCursor, Ref } from '@dxos/react-client/echo';
|
|
18
17
|
import { DataType } from '@dxos/schema';
|
|
19
18
|
|
|
@@ -25,9 +24,9 @@ export default (context: PluginContext) =>
|
|
|
25
24
|
createResolver({
|
|
26
25
|
intent: MarkdownAction.Create,
|
|
27
26
|
resolve: ({ name, content }) => {
|
|
28
|
-
const doc =
|
|
27
|
+
const doc = Obj.make(DocumentType, {
|
|
29
28
|
name,
|
|
30
|
-
content: Ref.make(
|
|
29
|
+
content: Ref.make(Obj.make(DataType.Text, { content: content ?? '' })),
|
|
31
30
|
});
|
|
32
31
|
|
|
33
32
|
return { data: { object: doc } };
|
|
@@ -46,7 +45,7 @@ export default (context: PluginContext) =>
|
|
|
46
45
|
data,
|
|
47
46
|
): data is Omit<Schema.Schema.Type<typeof CollaborationActions.InsertContent.fields.input>, 'target'> & {
|
|
48
47
|
target: DocumentType;
|
|
49
|
-
} =>
|
|
48
|
+
} => Obj.instanceOf(DocumentType, data.target),
|
|
50
49
|
resolve: async ({ target, object: objectRef, at, label }) => {
|
|
51
50
|
const text = await target.content.load();
|
|
52
51
|
const accessor = createDocAccessor(text, ['content']);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
|
|
7
7
|
import { createSurface, contributes, Capabilities, useCapability } from '@dxos/app-framework';
|
|
8
|
-
import {
|
|
8
|
+
import { Obj } from '@dxos/echo';
|
|
9
9
|
import { SettingsStore } from '@dxos/local-storage';
|
|
10
10
|
import { AttentionCapabilities } from '@dxos/plugin-attention';
|
|
11
11
|
import { fullyQualifiedId } from '@dxos/react-client/echo';
|
|
@@ -22,7 +22,7 @@ export default () =>
|
|
|
22
22
|
id: `${MARKDOWN_PLUGIN}/document`,
|
|
23
23
|
role: ['article', 'section', 'tabpanel'],
|
|
24
24
|
filter: (data): data is { subject: DocumentType; variant: undefined } =>
|
|
25
|
-
|
|
25
|
+
Obj.instanceOf(DocumentType, data.subject) && !data.variant,
|
|
26
26
|
component: ({ data, role }) => {
|
|
27
27
|
const selectionManager = useCapability(AttentionCapabilities.Selection);
|
|
28
28
|
const settingsStore = useCapability(Capabilities.SettingsStore);
|
|
@@ -49,7 +49,7 @@ export default () =>
|
|
|
49
49
|
id: `${MARKDOWN_PLUGIN}/text`,
|
|
50
50
|
role: ['article', 'section', 'tabpanel'],
|
|
51
51
|
filter: (data): data is { id: string; subject: DataType.Text } =>
|
|
52
|
-
typeof data.id === 'string' &&
|
|
52
|
+
typeof data.id === 'string' && Obj.instanceOf(DataType.Text, data.subject),
|
|
53
53
|
component: ({ data, role }) => {
|
|
54
54
|
const selectionManager = useCapability(AttentionCapabilities.Selection);
|
|
55
55
|
const settingsStore = useCapability(Capabilities.SettingsStore);
|
|
@@ -107,7 +107,7 @@ export default () =>
|
|
|
107
107
|
id: `${MARKDOWN_PLUGIN}/preview`,
|
|
108
108
|
role: 'popover',
|
|
109
109
|
filter: (data): data is { subject: DocumentType | DataType.Text } =>
|
|
110
|
-
|
|
110
|
+
Obj.instanceOf(DocumentType, data.subject) || Obj.instanceOf(DataType.Text, data.subject),
|
|
111
111
|
component: ({ data, role }) => <MarkdownPreview {...data} role={role} />,
|
|
112
112
|
}),
|
|
113
113
|
]);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { Capabilities, contributes } from '@dxos/app-framework';
|
|
6
6
|
import { live } from '@dxos/live-object';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { meta } from '../meta';
|
|
9
9
|
import { type MarkdownSettingsProps, MarkdownSettingsSchema } from '../types';
|
|
10
10
|
|
|
11
11
|
export default () => {
|
|
@@ -18,8 +18,8 @@ export default () => {
|
|
|
18
18
|
});
|
|
19
19
|
|
|
20
20
|
return contributes(Capabilities.Settings, {
|
|
21
|
+
prefix: meta.id,
|
|
21
22
|
schema: MarkdownSettingsSchema,
|
|
22
|
-
prefix: MARKDOWN_PLUGIN,
|
|
23
23
|
value: settings,
|
|
24
24
|
});
|
|
25
25
|
};
|
|
@@ -3,12 +3,15 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Rx } from '@effect-rx/rx-react';
|
|
6
|
-
import React, { useEffect, useMemo } from 'react';
|
|
6
|
+
import React, { useCallback, useEffect, useMemo } from 'react';
|
|
7
7
|
|
|
8
|
-
import { Capabilities, useAppGraph, useCapabilities } from '@dxos/app-framework';
|
|
9
|
-
import {
|
|
8
|
+
import { Capabilities, useAppGraph, useCapabilities, usePluginManager } from '@dxos/app-framework';
|
|
9
|
+
import { Filter, Obj, Query } from '@dxos/echo';
|
|
10
|
+
import { SpaceCapabilities } from '@dxos/plugin-space';
|
|
10
11
|
import { fullyQualifiedId, getSpace } from '@dxos/react-client/echo';
|
|
12
|
+
import { toLocalizedString, useTranslation } from '@dxos/react-ui';
|
|
11
13
|
import { type SelectionManager } from '@dxos/react-ui-attention';
|
|
14
|
+
import { type CommandMenuGroup, type CommandMenuItem, insertAtCursor, insertAtLineStart } from '@dxos/react-ui-editor';
|
|
12
15
|
import { DataType } from '@dxos/schema';
|
|
13
16
|
|
|
14
17
|
import { MarkdownEditor, type MarkdownEditorProps } from './MarkdownEditor';
|
|
@@ -26,7 +29,6 @@ export type MarkdownContainerProps = Pick<
|
|
|
26
29
|
selectionManager?: SelectionManager;
|
|
27
30
|
};
|
|
28
31
|
|
|
29
|
-
// TODO(burdon): Factor out difference for ECHO and non-ECHO objects; i.e., single component.
|
|
30
32
|
const MarkdownContainer = ({
|
|
31
33
|
id,
|
|
32
34
|
role,
|
|
@@ -37,11 +39,60 @@ const MarkdownContainer = ({
|
|
|
37
39
|
editorStateStore,
|
|
38
40
|
onViewModeChange,
|
|
39
41
|
}: MarkdownContainerProps) => {
|
|
42
|
+
const { t } = useTranslation();
|
|
40
43
|
const scrollPastEnd = role === 'article';
|
|
41
|
-
const doc =
|
|
42
|
-
const text =
|
|
44
|
+
const doc = Obj.instanceOf(DocumentType, object) ? object : undefined;
|
|
45
|
+
const text = Obj.instanceOf(DataType.Text, object) ? object : undefined;
|
|
43
46
|
const extensions = useExtensions({ document: doc, text, id, settings, selectionManager, viewMode, editorStateStore });
|
|
44
47
|
|
|
48
|
+
// TODO(wittjosiah): Factor out.
|
|
49
|
+
const manager = usePluginManager();
|
|
50
|
+
const resolve = useCallback(
|
|
51
|
+
(typename: string) =>
|
|
52
|
+
manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {},
|
|
53
|
+
[manager],
|
|
54
|
+
);
|
|
55
|
+
const space = getSpace(object);
|
|
56
|
+
const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);
|
|
57
|
+
const filter = useMemo(() => Filter.or(...objectForms.map((form) => Filter.type(form.objectSchema))), [objectForms]);
|
|
58
|
+
const onLinkQuery = useCallback(
|
|
59
|
+
async (query?: string): Promise<CommandMenuGroup[]> => {
|
|
60
|
+
const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : query?.toLowerCase() ?? '';
|
|
61
|
+
const results = await space?.db.query(Query.select(filter)).run();
|
|
62
|
+
// TODO(wittjosiah): Use `Obj.Any` type.
|
|
63
|
+
const getLabel = (object: any) => {
|
|
64
|
+
const type = Obj.getTypename(object)!;
|
|
65
|
+
const metadata = resolve(type);
|
|
66
|
+
return (
|
|
67
|
+
metadata.label?.(object) || object.name || ['object name placeholder', { ns: type, default: 'New object' }]
|
|
68
|
+
);
|
|
69
|
+
};
|
|
70
|
+
const items =
|
|
71
|
+
results?.objects
|
|
72
|
+
.filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name))
|
|
73
|
+
// TODO(wittjosiah): Remove `any` type.
|
|
74
|
+
.map((object: any): CommandMenuItem => {
|
|
75
|
+
const metadata = resolve(Obj.getTypename(object)!);
|
|
76
|
+
const label = toLocalizedString(getLabel(object), t);
|
|
77
|
+
return {
|
|
78
|
+
id: object.id,
|
|
79
|
+
label,
|
|
80
|
+
icon: metadata.icon,
|
|
81
|
+
onSelect: (view, head) => {
|
|
82
|
+
const link = `[${label}][${Obj.getDXN(object)}]`;
|
|
83
|
+
if (query?.startsWith('@')) {
|
|
84
|
+
insertAtLineStart(view, head, `!${link}\n`);
|
|
85
|
+
} else {
|
|
86
|
+
insertAtCursor(view, head, `${link} `);
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}) ?? [];
|
|
91
|
+
return [{ id: 'echo', items }];
|
|
92
|
+
},
|
|
93
|
+
[filter, resolve, space],
|
|
94
|
+
);
|
|
95
|
+
|
|
45
96
|
if (doc) {
|
|
46
97
|
return (
|
|
47
98
|
<DocumentEditor
|
|
@@ -53,6 +104,7 @@ const MarkdownContainer = ({
|
|
|
53
104
|
settings={settings}
|
|
54
105
|
scrollPastEnd={scrollPastEnd}
|
|
55
106
|
onViewModeChange={onViewModeChange}
|
|
107
|
+
onLinkQuery={space ? onLinkQuery : undefined}
|
|
56
108
|
/>
|
|
57
109
|
);
|
|
58
110
|
} else if (text) {
|
|
@@ -67,6 +119,7 @@ const MarkdownContainer = ({
|
|
|
67
119
|
inputMode={settings.editorInputMode}
|
|
68
120
|
scrollPastEnd={scrollPastEnd}
|
|
69
121
|
onViewModeChange={onViewModeChange}
|
|
122
|
+
onLinkQuery={space ? onLinkQuery : undefined}
|
|
70
123
|
/>
|
|
71
124
|
);
|
|
72
125
|
} else {
|
|
@@ -82,13 +135,14 @@ const MarkdownContainer = ({
|
|
|
82
135
|
inputMode={settings.editorInputMode}
|
|
83
136
|
scrollPastEnd={scrollPastEnd}
|
|
84
137
|
onViewModeChange={onViewModeChange}
|
|
138
|
+
onLinkQuery={space ? onLinkQuery : undefined}
|
|
85
139
|
/>
|
|
86
140
|
);
|
|
87
141
|
}
|
|
88
142
|
};
|
|
89
143
|
|
|
90
144
|
type DocumentEditorProps = Omit<MarkdownContainerProps, 'object' | 'extensionProviders' | 'editorStateStore'> &
|
|
91
|
-
Pick<MarkdownEditorProps, 'id' | 'scrollPastEnd' | 'extensions'> & {
|
|
145
|
+
Pick<MarkdownEditorProps, 'id' | 'scrollPastEnd' | 'extensions' | 'onLinkQuery'> & {
|
|
92
146
|
document: DocumentType;
|
|
93
147
|
};
|
|
94
148
|
|
|
@@ -25,7 +25,7 @@ type StoryProps = MarkdownEditorProps & {
|
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
const DefaultStory = ({ content = '# Test', toolbar }: StoryProps) => {
|
|
28
|
-
const doc = useMemo(() => createObject({ content }), [content]);
|
|
28
|
+
const doc = useMemo(() => createObject({ content }), [content]); // TODO(burdon): Remove dependency on createObject.
|
|
29
29
|
const extensions = useMemo(() => [automerge(createDocAccessor(doc, ['content']))], [doc]);
|
|
30
30
|
return <MarkdownEditor id='test' initialValue={doc.content} extensions={extensions} toolbar={toolbar} />;
|
|
31
31
|
};
|
|
@@ -35,10 +35,10 @@ const meta: Meta<typeof MarkdownEditor> = {
|
|
|
35
35
|
component: MarkdownEditor,
|
|
36
36
|
render: DefaultStory,
|
|
37
37
|
decorators: [
|
|
38
|
+
withPluginManager({ plugins: [IntentPlugin()] }),
|
|
39
|
+
withAttention,
|
|
38
40
|
withTheme,
|
|
39
41
|
withLayout({ fullscreen: true }),
|
|
40
|
-
withAttention,
|
|
41
|
-
withPluginManager({ plugins: [IntentPlugin()] }),
|
|
42
42
|
],
|
|
43
43
|
parameters: {
|
|
44
44
|
translations: [...translations, ...editorTranslations],
|