@dxos/plugin-script 0.8.4-main.2c6827d → 0.8.4-main.3c1ae3b
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/DeploymentDialog-FIHD4UVK.mjs +15 -0
- package/dist/lib/browser/{NotebookContainer-RTESC4OV.mjs → NotebookContainer-GL2Z5I5Q.mjs} +26 -26
- package/dist/lib/browser/NotebookContainer-GL2Z5I5Q.mjs.map +7 -0
- package/dist/lib/browser/{ScriptContainer-T2BAZDJ4.mjs → ScriptContainer-F4OK3OG6.mjs} +9 -7
- package/dist/lib/browser/ScriptContainer-F4OK3OG6.mjs.map +7 -0
- package/dist/lib/browser/{chunk-4M7U2WVT.mjs → chunk-2SXDKBM7.mjs} +7 -7
- package/dist/lib/browser/chunk-2SXDKBM7.mjs.map +7 -0
- package/dist/lib/browser/{chunk-M6KJPUJK.mjs → chunk-6X7QVTRB.mjs} +4 -3
- package/dist/lib/browser/{chunk-M6KJPUJK.mjs.map → chunk-6X7QVTRB.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-3IJASGG5.mjs → chunk-75RTLLH4.mjs} +2 -2
- package/dist/lib/browser/{chunk-GAFCKEII.mjs → chunk-7WFISUBY.mjs} +11 -10
- package/dist/lib/browser/chunk-7WFISUBY.mjs.map +7 -0
- package/dist/lib/browser/{chunk-LNNCD2H4.mjs → chunk-MQHBMJLH.mjs} +7 -6
- package/dist/lib/browser/chunk-MQHBMJLH.mjs.map +7 -0
- package/dist/lib/browser/{chunk-2G2NA6DQ.mjs → chunk-S22N3BUR.mjs} +5 -5
- package/dist/lib/browser/chunk-S22N3BUR.mjs.map +7 -0
- package/dist/lib/browser/{chunk-5JSNQYZZ.mjs → chunk-UGDRMROB.mjs} +147 -122
- package/dist/lib/browser/chunk-UGDRMROB.mjs.map +7 -0
- package/dist/lib/browser/compiler-2HV5KXV4.mjs +143 -0
- package/dist/lib/browser/compiler-2HV5KXV4.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +40 -58
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/{intent-resolver-AFJ575VK.mjs → intent-resolver-3B4ESSCU.mjs} +9 -8
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-QEQ3QUQA.mjs → react-surface-ASV2KBRA.mjs} +15 -15
- package/dist/lib/browser/react-surface-ASV2KBRA.mjs.map +7 -0
- package/dist/lib/browser/{settings-LNLSTZM4.mjs → settings-4NKLTJTT.mjs} +3 -3
- package/dist/lib/browser/templates/index.mjs +1 -1
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/{DeploymentDialog-GL5AUWMR.mjs → DeploymentDialog-5EN2KZE5.mjs} +6 -5
- package/dist/lib/node-esm/{NotebookContainer-SVD3A3D6.mjs → NotebookContainer-7RCEXND7.mjs} +26 -26
- package/dist/lib/node-esm/NotebookContainer-7RCEXND7.mjs.map +7 -0
- package/dist/lib/node-esm/{ScriptContainer-2CE3H3JJ.mjs → ScriptContainer-763IAKOD.mjs} +9 -7
- package/dist/lib/node-esm/ScriptContainer-763IAKOD.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-57JA6XL5.mjs → chunk-2S43VHAM.mjs} +5 -5
- package/dist/lib/node-esm/chunk-2S43VHAM.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-NNHWLRHT.mjs → chunk-32AMTGGN.mjs} +7 -6
- package/dist/lib/node-esm/chunk-32AMTGGN.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-IQTBVH4L.mjs → chunk-4VVV5L5A.mjs} +147 -122
- package/dist/lib/node-esm/chunk-4VVV5L5A.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-RIE676OW.mjs → chunk-535YDI5V.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-HDKR5WCD.mjs → chunk-6H4FYMCX.mjs} +4 -3
- package/dist/lib/node-esm/{chunk-HDKR5WCD.mjs.map → chunk-6H4FYMCX.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-KJKZ4KNO.mjs → chunk-DKS2EQW6.mjs} +11 -10
- package/dist/lib/node-esm/chunk-DKS2EQW6.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-YRTA4EHU.mjs → chunk-NQN3JE2R.mjs} +7 -7
- package/dist/lib/node-esm/chunk-NQN3JE2R.mjs.map +7 -0
- package/dist/lib/node-esm/compiler-KPEZKEHC.mjs +144 -0
- package/dist/lib/node-esm/compiler-KPEZKEHC.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +40 -58
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/{intent-resolver-A5VVK746.mjs → intent-resolver-GIACMXI4.mjs} +9 -8
- package/dist/lib/{browser/intent-resolver-AFJ575VK.mjs.map → node-esm/intent-resolver-GIACMXI4.mjs.map} +1 -1
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-U77YT7VF.mjs → react-surface-NXBO7VYB.mjs} +15 -15
- package/dist/lib/node-esm/react-surface-NXBO7VYB.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-IUFMOCXY.mjs → settings-PW5NXWLW.mjs} +3 -3
- package/dist/lib/node-esm/templates/index.mjs +1 -1
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/compiler/compiler.d.ts +1 -1
- package/dist/types/src/compiler/compiler.d.ts.map +1 -1
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +3 -0
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
- package/dist/types/src/components/NotebookContainer.d.ts.map +1 -1
- package/dist/types/src/components/NotebookContainer.stories.d.ts +3 -0
- package/dist/types/src/components/NotebookContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
- package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +3 -0
- package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
- package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
- package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
- package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
- package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
- package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
- package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
- package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +3 -0
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
- package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
- package/dist/types/src/e2e/deploy.test.d.ts +2 -0
- package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
- package/dist/types/src/hooks/deploy.d.ts +3 -21
- package/dist/types/src/hooks/deploy.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useCompiler.d.ts +7 -0
- package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
- package/dist/types/src/templates/chess.d.ts +6 -1
- package/dist/types/src/templates/chess.d.ts.map +1 -1
- package/dist/types/src/templates/forex-effect.d.ts +4 -1
- package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
- package/dist/types/src/templates/forex.d.ts +4 -1
- package/dist/types/src/templates/forex.d.ts.map +1 -1
- package/dist/types/src/testing/deploy.test.d.ts +2 -0
- package/dist/types/src/testing/deploy.test.d.ts.map +1 -0
- package/dist/types/src/testing/simulator.test.d.ts +2 -0
- package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +2 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Notebook.d.ts +7 -7
- package/dist/types/src/types/Notebook.d.ts.map +1 -1
- package/dist/types/src/types/actions.d.ts +3 -3
- package/dist/types/src/util/deploy.d.ts.map +1 -1
- package/dist/types/src/util/functions.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +63 -59
- package/src/ScriptPlugin.tsx +13 -28
- package/src/capabilities/artifact-definition.ts +11 -11
- package/src/capabilities/compiler.ts +66 -16
- package/src/capabilities/react-surface.tsx +5 -6
- package/src/compiler/compiler.ts +10 -3
- package/src/components/FrameContainer/FrameContainer.tsx +3 -1
- package/src/components/NotebookContainer.tsx +14 -17
- package/src/components/NotebookStack/NotebookCell.tsx +6 -4
- package/src/components/QueryEditor/QueryEditor.stories.tsx +89 -0
- package/src/components/QueryEditor/QueryEditor.tsx +47 -0
- package/src/components/QueryEditor/index.ts +5 -0
- package/src/components/ScriptContainer.tsx +3 -2
- package/src/components/Settings/ScriptObjectSettings.tsx +5 -4
- package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +1 -1
- package/src/components/TypescriptEditor/TypescriptEditor.tsx +2 -2
- package/src/e2e/deploy.test.ts +64 -0
- package/src/hooks/deploy.ts +3 -2
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useCompiler.ts +23 -0
- package/src/templates/chess.ts +9 -8
- package/src/templates/data-generator.ts +1 -1
- package/src/templates/forex-effect.ts +22 -27
- package/src/templates/forex.ts +7 -6
- package/src/testing/deploy.test.ts +63 -0
- package/src/testing/simulator.test.ts +40 -0
- package/src/translations.ts +2 -0
- package/src/types/Notebook.ts +5 -4
- package/src/util/deploy.ts +18 -28
- package/src/util/functions.ts +3 -2
- package/src/vite-env.d.ts +2 -0
- package/dist/lib/browser/DeploymentDialog-MZX4T77L.mjs +0 -14
- package/dist/lib/browser/NotebookContainer-RTESC4OV.mjs.map +0 -7
- package/dist/lib/browser/ScriptContainer-T2BAZDJ4.mjs.map +0 -7
- package/dist/lib/browser/chunk-2G2NA6DQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-4M7U2WVT.mjs.map +0 -7
- package/dist/lib/browser/chunk-5JSNQYZZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-GAFCKEII.mjs.map +0 -7
- package/dist/lib/browser/chunk-LNNCD2H4.mjs.map +0 -7
- package/dist/lib/browser/compiler-4KHRSX7J.mjs +0 -86
- package/dist/lib/browser/compiler-4KHRSX7J.mjs.map +0 -7
- package/dist/lib/browser/react-surface-QEQ3QUQA.mjs.map +0 -7
- package/dist/lib/node-esm/NotebookContainer-SVD3A3D6.mjs.map +0 -7
- package/dist/lib/node-esm/ScriptContainer-2CE3H3JJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-57JA6XL5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-IQTBVH4L.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-KJKZ4KNO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NNHWLRHT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YRTA4EHU.mjs.map +0 -7
- package/dist/lib/node-esm/compiler-DU5NQISX.mjs +0 -87
- package/dist/lib/node-esm/compiler-DU5NQISX.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-U77YT7VF.mjs.map +0 -7
- /package/dist/lib/browser/{DeploymentDialog-MZX4T77L.mjs.map → DeploymentDialog-FIHD4UVK.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-3IJASGG5.mjs.map → chunk-75RTLLH4.mjs.map} +0 -0
- /package/dist/lib/{node-esm/intent-resolver-A5VVK746.mjs.map → browser/intent-resolver-3B4ESSCU.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-LNLSTZM4.mjs.map → settings-4NKLTJTT.mjs.map} +0 -0
- /package/dist/lib/node-esm/{DeploymentDialog-GL5AUWMR.mjs.map → DeploymentDialog-5EN2KZE5.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-RIE676OW.mjs.map → chunk-535YDI5V.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-IUFMOCXY.mjs.map → settings-PW5NXWLW.mjs.map} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-script",
|
|
3
|
-
"version": "0.8.4-main.
|
|
3
|
+
"version": "0.8.4-main.3c1ae3b",
|
|
4
4
|
"description": "Braneframe notebook plugin",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -58,62 +58,65 @@
|
|
|
58
58
|
"@preact/signals-core": "^1.12.1",
|
|
59
59
|
"@typescript/vfs": "^1.6.0",
|
|
60
60
|
"@valtown/codemirror-continue": "^2.3.1",
|
|
61
|
-
"@valtown/codemirror-ts": "^2.
|
|
61
|
+
"@valtown/codemirror-ts": "^2.3.1",
|
|
62
62
|
"codemirror": "^6.0.1",
|
|
63
63
|
"date-fns": "^3.3.1",
|
|
64
64
|
"esbuild-wasm": "^0.16.14",
|
|
65
65
|
"prettier": "^3.6.2",
|
|
66
66
|
"react-syntax-highlighter": "^15.6.1",
|
|
67
67
|
"typescript": "^5.9.3",
|
|
68
|
-
"@dxos/
|
|
69
|
-
"@dxos/
|
|
70
|
-
"@dxos/
|
|
71
|
-
"@dxos/assistant": "0.8.4-main.
|
|
72
|
-
"@dxos/
|
|
73
|
-
"@dxos/
|
|
74
|
-
"@dxos/
|
|
75
|
-
"@dxos/
|
|
76
|
-
"@dxos/
|
|
77
|
-
"@dxos/
|
|
78
|
-
"@dxos/
|
|
79
|
-
"@dxos/
|
|
80
|
-
"@dxos/echo-
|
|
81
|
-
"@dxos/
|
|
82
|
-
"@dxos/
|
|
83
|
-
"@dxos/
|
|
84
|
-
"@dxos/
|
|
85
|
-
"@dxos/
|
|
86
|
-
"@dxos/
|
|
87
|
-
"@dxos/
|
|
88
|
-
"@dxos/keys": "0.8.4-main.
|
|
89
|
-
"@dxos/
|
|
90
|
-
"@dxos/
|
|
91
|
-
"@dxos/
|
|
92
|
-
"@dxos/plugin-
|
|
93
|
-
"@dxos/plugin-
|
|
94
|
-
"@dxos/plugin-
|
|
95
|
-
"@dxos/plugin-
|
|
96
|
-
"@dxos/plugin-
|
|
97
|
-
"@dxos/plugin-
|
|
98
|
-
"@dxos/plugin-
|
|
99
|
-
"@dxos/plugin-
|
|
100
|
-
"@dxos/
|
|
101
|
-
"@dxos/
|
|
102
|
-
"@dxos/
|
|
103
|
-
"@dxos/
|
|
104
|
-
"@dxos/react-
|
|
105
|
-
"@dxos/react-ui-
|
|
106
|
-
"@dxos/react-ui-
|
|
107
|
-
"@dxos/react-ui-
|
|
108
|
-
"@dxos/react-ui-
|
|
109
|
-
"@dxos/react-ui-
|
|
110
|
-
"@dxos/
|
|
111
|
-
"@dxos/
|
|
112
|
-
"@dxos/react-
|
|
113
|
-
"@dxos/
|
|
114
|
-
"@dxos/
|
|
115
|
-
"@dxos/
|
|
116
|
-
"@dxos/
|
|
68
|
+
"@dxos/app-framework": "0.8.4-main.3c1ae3b",
|
|
69
|
+
"@dxos/ai": "0.8.4-main.3c1ae3b",
|
|
70
|
+
"@dxos/async": "0.8.4-main.3c1ae3b",
|
|
71
|
+
"@dxos/assistant": "0.8.4-main.3c1ae3b",
|
|
72
|
+
"@dxos/blueprints": "0.8.4-main.3c1ae3b",
|
|
73
|
+
"@dxos/assistant-toolkit": "0.8.4-main.3c1ae3b",
|
|
74
|
+
"@dxos/client-protocol": "0.8.4-main.3c1ae3b",
|
|
75
|
+
"@dxos/client": "0.8.4-main.3c1ae3b",
|
|
76
|
+
"@dxos/compute": "0.8.4-main.3c1ae3b",
|
|
77
|
+
"@dxos/config": "0.8.4-main.3c1ae3b",
|
|
78
|
+
"@dxos/debug": "0.8.4-main.3c1ae3b",
|
|
79
|
+
"@dxos/echo": "0.8.4-main.3c1ae3b",
|
|
80
|
+
"@dxos/echo-db": "0.8.4-main.3c1ae3b",
|
|
81
|
+
"@dxos/devtools": "0.8.4-main.3c1ae3b",
|
|
82
|
+
"@dxos/echo-protocol": "0.8.4-main.3c1ae3b",
|
|
83
|
+
"@dxos/echo-query": "0.8.4-main.3c1ae3b",
|
|
84
|
+
"@dxos/functions": "0.8.4-main.3c1ae3b",
|
|
85
|
+
"@dxos/functions-simulator-cloudflare": "0.8.4-main.3c1ae3b",
|
|
86
|
+
"@dxos/invariant": "0.8.4-main.3c1ae3b",
|
|
87
|
+
"@dxos/functions-runtime": "0.8.4-main.3c1ae3b",
|
|
88
|
+
"@dxos/keys": "0.8.4-main.3c1ae3b",
|
|
89
|
+
"@dxos/live-object": "0.8.4-main.3c1ae3b",
|
|
90
|
+
"@dxos/local-storage": "0.8.4-main.3c1ae3b",
|
|
91
|
+
"@dxos/log": "0.8.4-main.3c1ae3b",
|
|
92
|
+
"@dxos/plugin-automation": "0.8.4-main.3c1ae3b",
|
|
93
|
+
"@dxos/plugin-assistant": "0.8.4-main.3c1ae3b",
|
|
94
|
+
"@dxos/plugin-deck": "0.8.4-main.3c1ae3b",
|
|
95
|
+
"@dxos/plugin-client": "0.8.4-main.3c1ae3b",
|
|
96
|
+
"@dxos/plugin-explorer": "0.8.4-main.3c1ae3b",
|
|
97
|
+
"@dxos/plugin-graph": "0.8.4-main.3c1ae3b",
|
|
98
|
+
"@dxos/plugin-markdown": "0.8.4-main.3c1ae3b",
|
|
99
|
+
"@dxos/plugin-space": "0.8.4-main.3c1ae3b",
|
|
100
|
+
"@dxos/plugin-theme": "0.8.4-main.3c1ae3b",
|
|
101
|
+
"@dxos/plugin-stack": "0.8.4-main.3c1ae3b",
|
|
102
|
+
"@dxos/plugin-token-manager": "0.8.4-main.3c1ae3b",
|
|
103
|
+
"@dxos/protocols": "0.8.4-main.3c1ae3b",
|
|
104
|
+
"@dxos/react-client": "0.8.4-main.3c1ae3b",
|
|
105
|
+
"@dxos/react-ui-components": "0.8.4-main.3c1ae3b",
|
|
106
|
+
"@dxos/react-ui-attention": "0.8.4-main.3c1ae3b",
|
|
107
|
+
"@dxos/react-ui-editor": "0.8.4-main.3c1ae3b",
|
|
108
|
+
"@dxos/react-ui-list": "0.8.4-main.3c1ae3b",
|
|
109
|
+
"@dxos/react-ui-menu": "0.8.4-main.3c1ae3b",
|
|
110
|
+
"@dxos/react-ui-form": "0.8.4-main.3c1ae3b",
|
|
111
|
+
"@dxos/react-ui-stack": "0.8.4-main.3c1ae3b",
|
|
112
|
+
"@dxos/react-ui-syntax-highlighter": "0.8.4-main.3c1ae3b",
|
|
113
|
+
"@dxos/rpc": "0.8.4-main.3c1ae3b",
|
|
114
|
+
"@dxos/react-edge-client": "0.8.4-main.3c1ae3b",
|
|
115
|
+
"@dxos/types": "0.8.4-main.3c1ae3b",
|
|
116
|
+
"@dxos/schema": "0.8.4-main.3c1ae3b",
|
|
117
|
+
"@dxos/rpc-tunnel": "0.8.4-main.3c1ae3b",
|
|
118
|
+
"@dxos/util": "0.8.4-main.3c1ae3b",
|
|
119
|
+
"@dxos/vendor-quickjs": "0.8.4-main.3c1ae3b"
|
|
117
120
|
},
|
|
118
121
|
"devDependencies": {
|
|
119
122
|
"@effect-atom/atom-react": "^0.3.4",
|
|
@@ -124,12 +127,13 @@
|
|
|
124
127
|
"react": "~19.2.0",
|
|
125
128
|
"react-dom": "~19.2.0",
|
|
126
129
|
"vite": "7.1.9",
|
|
127
|
-
"@dxos/
|
|
128
|
-
"@dxos/
|
|
129
|
-
"@dxos/
|
|
130
|
-
"@dxos/
|
|
131
|
-
"@dxos/react-ui
|
|
132
|
-
"@dxos/
|
|
130
|
+
"@dxos/config": "0.8.4-main.3c1ae3b",
|
|
131
|
+
"@dxos/echo-db": "0.8.4-main.3c1ae3b",
|
|
132
|
+
"@dxos/plugin-automation": "0.8.4-main.3c1ae3b",
|
|
133
|
+
"@dxos/random": "0.8.4-main.3c1ae3b",
|
|
134
|
+
"@dxos/react-ui": "0.8.4-main.3c1ae3b",
|
|
135
|
+
"@dxos/react-ui-theme": "0.8.4-main.3c1ae3b",
|
|
136
|
+
"@dxos/storybook-utils": "0.8.4-main.3c1ae3b"
|
|
133
137
|
},
|
|
134
138
|
"peerDependencies": {
|
|
135
139
|
"@effect-atom/atom-react": "^0.3.4",
|
|
@@ -137,8 +141,8 @@
|
|
|
137
141
|
"effect": "^3.13.3",
|
|
138
142
|
"react": "^19.0.0",
|
|
139
143
|
"react-dom": "^19.0.0",
|
|
140
|
-
"@dxos/react-ui-theme": "0.8.4-main.
|
|
141
|
-
"@dxos/react-ui": "0.8.4-main.
|
|
144
|
+
"@dxos/react-ui-theme": "0.8.4-main.3c1ae3b",
|
|
145
|
+
"@dxos/react-ui": "0.8.4-main.3c1ae3b"
|
|
142
146
|
},
|
|
143
147
|
"publishConfig": {
|
|
144
148
|
"access": "public"
|
package/src/ScriptPlugin.tsx
CHANGED
|
@@ -5,9 +5,8 @@
|
|
|
5
5
|
import { Capabilities, Events, contributes, createIntent, defineModule, definePlugin } from '@dxos/app-framework';
|
|
6
6
|
import { Ref } from '@dxos/echo';
|
|
7
7
|
import { Script } from '@dxos/functions';
|
|
8
|
-
import { ClientEvents } from '@dxos/plugin-client';
|
|
9
|
-
import {
|
|
10
|
-
import { defineObjectForm } from '@dxos/plugin-space/types';
|
|
8
|
+
import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
|
|
9
|
+
import { type CreateObjectIntent } from '@dxos/plugin-space/types';
|
|
11
10
|
|
|
12
11
|
import {
|
|
13
12
|
AppGraphBuilder,
|
|
@@ -49,6 +48,10 @@ export const ScriptPlugin = definePlugin(meta, () => [
|
|
|
49
48
|
iconHue: 'sky',
|
|
50
49
|
// TODO(wittjosiah): Move out of metadata.
|
|
51
50
|
loadReferences: async (script: Script.Script) => await Ref.Array.loadAll([script.source]),
|
|
51
|
+
inputSchema: ScriptAction.ScriptProps,
|
|
52
|
+
createObjectIntent: ((props, options) =>
|
|
53
|
+
createIntent(ScriptAction.CreateScript, { ...props, space: options.space })) satisfies CreateObjectIntent,
|
|
54
|
+
addToCollectionOnCreate: true,
|
|
52
55
|
},
|
|
53
56
|
}),
|
|
54
57
|
contributes(Capabilities.Metadata, {
|
|
@@ -56,6 +59,10 @@ export const ScriptPlugin = definePlugin(meta, () => [
|
|
|
56
59
|
metadata: {
|
|
57
60
|
icon: 'ph--notebook--regular',
|
|
58
61
|
iconHue: 'sky',
|
|
62
|
+
inputSchema: ScriptAction.NotebookProps,
|
|
63
|
+
createObjectIntent: ((props, options) =>
|
|
64
|
+
createIntent(ScriptAction.CreateNotebook, { ...props, space: options.space })) satisfies CreateObjectIntent,
|
|
65
|
+
addToCollectionOnCreate: true,
|
|
59
66
|
},
|
|
60
67
|
}),
|
|
61
68
|
],
|
|
@@ -66,36 +73,14 @@ export const ScriptPlugin = definePlugin(meta, () => [
|
|
|
66
73
|
activate: AppGraphBuilder,
|
|
67
74
|
}),
|
|
68
75
|
defineModule({
|
|
69
|
-
id: `${meta.id}/module/
|
|
76
|
+
id: `${meta.id}/module/schema`,
|
|
70
77
|
activatesOn: ClientEvents.SetupSchema,
|
|
71
|
-
activate: () =>
|
|
72
|
-
contributes(
|
|
73
|
-
SpaceCapabilities.ObjectForm,
|
|
74
|
-
defineObjectForm({
|
|
75
|
-
objectSchema: Script.Script,
|
|
76
|
-
formSchema: ScriptAction.ScriptProps,
|
|
77
|
-
getIntent: (props, options) => createIntent(ScriptAction.CreateScript, { ...props, space: options.space }),
|
|
78
|
-
}),
|
|
79
|
-
),
|
|
80
|
-
}),
|
|
81
|
-
defineModule({
|
|
82
|
-
id: `${meta.id}/module/notebook/object-form`,
|
|
83
|
-
activatesOn: ClientEvents.SetupSchema,
|
|
84
|
-
activate: () =>
|
|
85
|
-
contributes(
|
|
86
|
-
SpaceCapabilities.ObjectForm,
|
|
87
|
-
defineObjectForm({
|
|
88
|
-
objectSchema: Notebook.Notebook,
|
|
89
|
-
formSchema: ScriptAction.NotebookProps,
|
|
90
|
-
getIntent: (props, options) => createIntent(ScriptAction.CreateNotebook, { ...props, space: options.space }),
|
|
91
|
-
}),
|
|
92
|
-
),
|
|
78
|
+
activate: () => contributes(ClientCapabilities.Schema, [Script.Script]),
|
|
93
79
|
}),
|
|
80
|
+
|
|
94
81
|
defineModule({
|
|
95
82
|
id: `${meta.id}/module/react-surface`,
|
|
96
83
|
activatesOn: Events.SetupReactSurface,
|
|
97
|
-
// TODO(wittjosiah): Should occur before the script editor is loaded when surfaces activation is more granular.
|
|
98
|
-
activatesBefore: [ScriptEvents.SetupCompiler],
|
|
99
84
|
activate: ReactSurface,
|
|
100
85
|
}),
|
|
101
86
|
defineModule({
|
|
@@ -54,7 +54,7 @@ export default () => {
|
|
|
54
54
|
The description is used by AI to understand the script and its purpose.
|
|
55
55
|
The description must provide cases on when the script should be used.
|
|
56
56
|
|
|
57
|
-
Schema:
|
|
57
|
+
Schema:
|
|
58
58
|
The schema is defined using a schema-DSL library called Effect Schema.
|
|
59
59
|
The input schema describes the arguments that the script accepts.
|
|
60
60
|
The output schema describes the result that the script produces.
|
|
@@ -75,18 +75,18 @@ export default () => {
|
|
|
75
75
|
- Detailed output schema
|
|
76
76
|
|
|
77
77
|
<apis>
|
|
78
|
-
export function defineFunction(params: {
|
|
79
|
-
description: string,
|
|
80
|
-
inputSchema: Schema.Schema,
|
|
81
|
-
outputSchema: Schema.Schema,
|
|
82
|
-
handler: (params: { event: { data: TInput } }) => Promise<TOutput>
|
|
78
|
+
export function defineFunction(params: {
|
|
79
|
+
description: string,
|
|
80
|
+
inputSchema: Schema.Schema,
|
|
81
|
+
outputSchema: Schema.Schema,
|
|
82
|
+
handler: (params: { event: { data: TInput } }) => Promise<TOutput>
|
|
83
83
|
}): FunctionDefinition
|
|
84
84
|
/**
|
|
85
85
|
* Effect Schema
|
|
86
86
|
*/
|
|
87
|
-
export const Schema;
|
|
87
|
+
export const Schema;
|
|
88
88
|
|
|
89
|
-
// Examples:
|
|
89
|
+
// Examples:
|
|
90
90
|
|
|
91
91
|
Schema.String
|
|
92
92
|
Schema.Number
|
|
@@ -112,7 +112,7 @@ export default () => {
|
|
|
112
112
|
|
|
113
113
|
The function must return the result that matches the output schema.
|
|
114
114
|
</handler_function>
|
|
115
|
-
|
|
115
|
+
|
|
116
116
|
<example>
|
|
117
117
|
import { defineFunction, S } from 'dxos:functions';
|
|
118
118
|
|
|
@@ -181,7 +181,7 @@ export default () => {
|
|
|
181
181
|
execute: async ({ id }, { extensions }) => {
|
|
182
182
|
invariant(extensions?.space, 'No space');
|
|
183
183
|
|
|
184
|
-
const script = (await extensions.space.db.query(Filter.
|
|
184
|
+
const script = (await extensions.space.db.query(Filter.id(id)).first()) as ScriptType;
|
|
185
185
|
const { content } = await script.source.load();
|
|
186
186
|
|
|
187
187
|
return ToolResult.Success({
|
|
@@ -203,7 +203,7 @@ export default () => {
|
|
|
203
203
|
execute: async ({ id, code }, { extensions }) => {
|
|
204
204
|
invariant(extensions?.space, 'No space');
|
|
205
205
|
|
|
206
|
-
const script = (await extensions.space.db.query(Filter.
|
|
206
|
+
const script = (await extensions.space.db.query(Filter.id(id)).first()) as ScriptType;
|
|
207
207
|
const source = await script.source.load();
|
|
208
208
|
if (!source) {
|
|
209
209
|
return ToolResult.Error('Script not found');
|
|
@@ -2,33 +2,83 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
import * as FetchHttpClient from '@effect/platform/FetchHttpClient';
|
|
6
|
+
import * as HttpClient from '@effect/platform/HttpClient';
|
|
7
|
+
import * as Effect from 'effect/Effect';
|
|
8
|
+
import * as Schedule from 'effect/Schedule';
|
|
9
|
+
import * as Schema from 'effect/Schema';
|
|
6
10
|
import wasmUrl from 'esbuild-wasm/esbuild.wasm?url';
|
|
11
|
+
import * as ts from 'typescript';
|
|
7
12
|
|
|
8
13
|
import { contributes } from '@dxos/app-framework';
|
|
9
14
|
import { initializeBundler } from '@dxos/functions-runtime/bundler';
|
|
15
|
+
import { trim } from '@dxos/util';
|
|
10
16
|
|
|
11
17
|
import { Compiler } from '../compiler';
|
|
12
18
|
|
|
13
19
|
import { ScriptCapabilities } from './capabilities';
|
|
14
20
|
|
|
21
|
+
const SCRIPT_PACKAGES_BUCKET = 'https://pub-5745ae82e450484aa28f75fc6a175935.r2.dev/dev/';
|
|
22
|
+
const DECLARATION_EXTS = ['.d.ts', '.d.mts'];
|
|
23
|
+
const NO_TYPES = true; // Types temopararly disabled due to compiler erorrs.
|
|
24
|
+
|
|
15
25
|
export default async () => {
|
|
16
|
-
const compiler = new Compiler();
|
|
17
|
-
|
|
18
|
-
await compiler.initialize();
|
|
19
|
-
// TODO(wittjosiah): Fetch types for https modules.
|
|
20
|
-
compiler.setFile('/src/typings.d.ts', "declare module 'https://*';");
|
|
21
|
-
// TODO(wittjosiah): Proper function handler types.
|
|
22
|
-
// TODO(wittjosiah): Remove.
|
|
23
|
-
compiler.setFile(
|
|
24
|
-
'/src/runtime.ts',
|
|
25
|
-
`
|
|
26
|
-
export const Filter: any = {};
|
|
27
|
-
export type FunctionHandler = ({ event, context }: { event: any; context: any }) => Promise<Response>;
|
|
28
|
-
export const functionHandler = (handler: FunctionHandler) => handler;
|
|
29
|
-
`,
|
|
30
|
-
);
|
|
31
26
|
await initializeBundler({ wasmUrl });
|
|
32
27
|
|
|
28
|
+
const runtimeModules = await Effect.runPromise(fetchRuntimeModules().pipe(Effect.provide(FetchHttpClient.layer)));
|
|
29
|
+
|
|
30
|
+
const compiler = new Compiler({
|
|
31
|
+
skipLibCheck: true,
|
|
32
|
+
moduleResolution: ts.ModuleResolutionKind.Bundler,
|
|
33
|
+
allowImportingTsExtensions: true,
|
|
34
|
+
noEmit: true,
|
|
35
|
+
strict: true,
|
|
36
|
+
esModuleInterop: true,
|
|
37
|
+
paths: Object.fromEntries(runtimeModules.map((mod) => [mod.moduleName, [`./src/${mod.filename}`]])),
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
await compiler.initialize(trim`
|
|
41
|
+
declare module 'https://*';
|
|
42
|
+
${NO_TYPES ? '' : 'declare module "*";'}
|
|
43
|
+
`);
|
|
44
|
+
if (!NO_TYPES) {
|
|
45
|
+
for (const mod of runtimeModules) {
|
|
46
|
+
compiler.setFile(`/src/${mod.filename}`, mod.content);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
33
50
|
return contributes(ScriptCapabilities.Compiler, compiler);
|
|
34
51
|
};
|
|
52
|
+
|
|
53
|
+
const fetchRuntimeModules = Effect.fnUntraced(function* () {
|
|
54
|
+
const manifest = yield* HttpClient.get(new URL('manifest.json', SCRIPT_PACKAGES_BUCKET)).pipe(
|
|
55
|
+
Effect.flatMap((_) => _.json),
|
|
56
|
+
Effect.flatMap(Schema.decodeUnknown(Schema.Struct({ files: Schema.Array(Schema.String) }))),
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
const declarationFiles = manifest.files.filter((file) => DECLARATION_EXTS.some((ext) => file.endsWith(ext)));
|
|
60
|
+
|
|
61
|
+
let fetched = 0;
|
|
62
|
+
const modules = yield* Effect.forEach(
|
|
63
|
+
declarationFiles,
|
|
64
|
+
Effect.fnUntraced(
|
|
65
|
+
function* (file) {
|
|
66
|
+
const response = yield* HttpClient.get(new URL(file, SCRIPT_PACKAGES_BUCKET)).pipe(
|
|
67
|
+
Effect.retry(Schedule.exponential(1_000).pipe(Schedule.compose(Schedule.recurs(3)))),
|
|
68
|
+
);
|
|
69
|
+
const content = yield* response.text;
|
|
70
|
+
fetched++;
|
|
71
|
+
|
|
72
|
+
const moduleName = file.replace(/\.d\.(ts|mts)$/, '');
|
|
73
|
+
return {
|
|
74
|
+
moduleName,
|
|
75
|
+
filename: file,
|
|
76
|
+
content,
|
|
77
|
+
};
|
|
78
|
+
},
|
|
79
|
+
Effect.retry(Schedule.exponential(1_000).pipe(Schedule.compose(Schedule.recurs(3)))),
|
|
80
|
+
),
|
|
81
|
+
{ concurrency: 20 },
|
|
82
|
+
);
|
|
83
|
+
return modules;
|
|
84
|
+
});
|
|
@@ -24,11 +24,10 @@ import {
|
|
|
24
24
|
ScriptProperties,
|
|
25
25
|
TestContainer,
|
|
26
26
|
} from '../components';
|
|
27
|
+
import { useCompiler } from '../hooks';
|
|
27
28
|
import { meta } from '../meta';
|
|
28
29
|
import { Notebook, type ScriptSettings } from '../types';
|
|
29
30
|
|
|
30
|
-
import { ScriptCapabilities } from './capabilities';
|
|
31
|
-
|
|
32
31
|
export default () =>
|
|
33
32
|
contributes(Capabilities.ReactSurface, [
|
|
34
33
|
createSurface({
|
|
@@ -43,10 +42,10 @@ export default () =>
|
|
|
43
42
|
role: ['article', 'section'],
|
|
44
43
|
filter: (data): data is { subject: Script.Script } => Obj.instanceOf(Script.Script, data.subject),
|
|
45
44
|
component: ({ data, role }) => {
|
|
46
|
-
const compiler =
|
|
45
|
+
const compiler = useCompiler();
|
|
47
46
|
// TODO(dmaretskyi): Since settings store is not reactive, this would break on the script plugin being enabled without a page reload.
|
|
48
47
|
const settings = useCapability(Capabilities.SettingsStore).getStore<ScriptSettings>(meta.id)?.value;
|
|
49
|
-
return <ScriptContainer role={role} script={data.subject} settings={settings} env={compiler
|
|
48
|
+
return <ScriptContainer role={role} script={data.subject} settings={settings} env={compiler?.environment} />;
|
|
50
49
|
},
|
|
51
50
|
}),
|
|
52
51
|
createSurface({
|
|
@@ -54,8 +53,8 @@ export default () =>
|
|
|
54
53
|
role: 'article',
|
|
55
54
|
filter: (data): data is { subject: Notebook.Notebook } => Obj.instanceOf(Notebook.Notebook, data.subject),
|
|
56
55
|
component: ({ data, role }) => {
|
|
57
|
-
const compiler =
|
|
58
|
-
return <NotebookContainer role={role} notebook={data.subject} env={compiler
|
|
56
|
+
const compiler = useCompiler();
|
|
57
|
+
return <NotebookContainer role={role} notebook={data.subject} env={compiler?.environment} />;
|
|
59
58
|
},
|
|
60
59
|
}),
|
|
61
60
|
// TODO(burdon): Standardize PluginSettings vs ObjectSettings.
|
package/src/compiler/compiler.ts
CHANGED
|
@@ -12,6 +12,8 @@ import ts from 'typescript';
|
|
|
12
12
|
|
|
13
13
|
import { invariant } from '@dxos/invariant';
|
|
14
14
|
|
|
15
|
+
const GLOBALS = 'globals.d.ts';
|
|
16
|
+
|
|
15
17
|
const defaultOptions: ts.CompilerOptions = {
|
|
16
18
|
lib: ['DOM', 'es2022'],
|
|
17
19
|
target: ts.ScriptTarget.ES2022,
|
|
@@ -23,16 +25,21 @@ export class Compiler {
|
|
|
23
25
|
|
|
24
26
|
constructor(private readonly _options: ts.CompilerOptions = defaultOptions) {}
|
|
25
27
|
|
|
26
|
-
async initialize(): Promise<void> {
|
|
28
|
+
async initialize(globals?: string): Promise<void> {
|
|
27
29
|
if (this._env) {
|
|
28
30
|
return;
|
|
29
31
|
}
|
|
30
32
|
|
|
31
33
|
// TODO(wittjosiah): Figure out how to get workers working in plugin packages.
|
|
32
34
|
// https://github.com/val-town/codemirror-ts?tab=readme-ov-file#setup-worker
|
|
33
|
-
this._fsMap = await createDefaultMapFromCDN(this._options, '5.
|
|
35
|
+
this._fsMap = await createDefaultMapFromCDN(this._options, '5.7.2', true, ts);
|
|
36
|
+
if (globals) {
|
|
37
|
+
this._fsMap.set(GLOBALS, globals);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const rootFiles = globals ? [GLOBALS] : [];
|
|
34
41
|
const system = createSystem(this._fsMap);
|
|
35
|
-
this._env = createVirtualTypeScriptEnvironment(system,
|
|
42
|
+
this._env = createVirtualTypeScriptEnvironment(system, rootFiles, ts, this._options);
|
|
36
43
|
}
|
|
37
44
|
|
|
38
45
|
get environment() {
|
|
@@ -49,7 +49,9 @@ export const FrameContainer = ({ containerUrl, result, debug = true }: FrameCont
|
|
|
49
49
|
invariant(result.sourceHash, 'Source hash is required.');
|
|
50
50
|
const sourceHash = Buffer.from(result.sourceHash).toString('hex');
|
|
51
51
|
const src =
|
|
52
|
-
'bundle' in result
|
|
52
|
+
'bundle' in result
|
|
53
|
+
? `${containerUrl}?ts=${sourceHash}#code=${encodeURIComponent(new TextDecoder().decode(Object.values(result.bundle as any)[0] as Uint8Array))}`
|
|
54
|
+
: undefined;
|
|
53
55
|
|
|
54
56
|
return (
|
|
55
57
|
<>
|
|
@@ -22,7 +22,7 @@ import { getSpace } from '@dxos/react-client/echo';
|
|
|
22
22
|
import { DropdownMenu, IconButton, Toolbar, useTranslation } from '@dxos/react-ui';
|
|
23
23
|
import { useAttention } from '@dxos/react-ui-attention';
|
|
24
24
|
import { StackItem } from '@dxos/react-ui-stack';
|
|
25
|
-
import { Text } from '@dxos/schema';
|
|
25
|
+
import { Text, View } from '@dxos/schema';
|
|
26
26
|
import { isNonNullable } from '@dxos/util';
|
|
27
27
|
|
|
28
28
|
import { meta } from '../meta';
|
|
@@ -63,26 +63,23 @@ export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) =>
|
|
|
63
63
|
const { name, filter } = builder.build(source);
|
|
64
64
|
if (filter) {
|
|
65
65
|
const ast = Query.select(filter).ast;
|
|
66
|
-
const
|
|
67
|
-
if (!
|
|
68
|
-
const
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
presentation: graph,
|
|
72
|
-
});
|
|
73
|
-
cell.view = Ref.make(view);
|
|
66
|
+
const graph = cell.graph?.target;
|
|
67
|
+
if (!graph) {
|
|
68
|
+
const { view } = await View.makeFromSpace({ space });
|
|
69
|
+
const graph = Graph.make({ query: { ast }, view });
|
|
70
|
+
cell.graph = Ref.make(graph);
|
|
74
71
|
cell.name = name;
|
|
75
72
|
} else {
|
|
76
|
-
|
|
73
|
+
graph.query.ast = ast;
|
|
77
74
|
}
|
|
78
75
|
}
|
|
79
76
|
}
|
|
80
77
|
|
|
81
|
-
if (cell.name && cell.
|
|
82
|
-
const
|
|
83
|
-
const query = Query.fromAst(
|
|
84
|
-
const
|
|
85
|
-
const objectIds =
|
|
78
|
+
if (cell.name && cell.graph?.target) {
|
|
79
|
+
const graph = Obj.getSnapshot(cell.graph?.target);
|
|
80
|
+
const query = Query.fromAst(graph.query.ast);
|
|
81
|
+
const objects = await space?.db.query(query).run();
|
|
82
|
+
const objectIds = objects?.map((obj) => obj.id);
|
|
86
83
|
setQueryValues((prev) => ({ ...prev, [cell.name!]: objectIds }));
|
|
87
84
|
}
|
|
88
85
|
}
|
|
@@ -153,8 +150,8 @@ export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) =>
|
|
|
153
150
|
|
|
154
151
|
case 'prompt': {
|
|
155
152
|
if (space) {
|
|
156
|
-
const
|
|
157
|
-
const blueprints =
|
|
153
|
+
const objects = await space.db.query(Query.select(Filter.type(Blueprint.Blueprint))).run();
|
|
154
|
+
const blueprints = objects
|
|
158
155
|
.filter((blueprint) => INCLUDE_BLUEPRINTS.includes(blueprint.key))
|
|
159
156
|
.map((blueprint) => Ref.make(blueprint));
|
|
160
157
|
cell.prompt = Ref.make(Prompt.make({ instructions: '', blueprints }));
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
import React, { useCallback, useMemo } from 'react';
|
|
6
6
|
|
|
7
7
|
import { Surface } from '@dxos/app-framework/react';
|
|
8
|
+
import { createDocAccessor } from '@dxos/echo-db';
|
|
8
9
|
import { invariant } from '@dxos/invariant';
|
|
9
10
|
import { TemplateEditor } from '@dxos/plugin-assistant';
|
|
10
|
-
import { createDocAccessor } from '@dxos/react-client/echo';
|
|
11
11
|
import { type Space } from '@dxos/react-client/echo';
|
|
12
12
|
import { useThemeContext, useTranslation } from '@dxos/react-ui';
|
|
13
13
|
import { QueryEditor, type QueryEditorProps } from '@dxos/react-ui-components';
|
|
@@ -57,7 +57,7 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
|
|
|
57
57
|
: [];
|
|
58
58
|
}, [cell.source?.target]);
|
|
59
59
|
|
|
60
|
-
const
|
|
60
|
+
const explorerGraph = cell.graph?.target;
|
|
61
61
|
|
|
62
62
|
const handleQueryChange = useCallback<NonNullable<QueryEditorProps['onChange']>>(
|
|
63
63
|
(value: string) => {
|
|
@@ -113,7 +113,9 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
|
|
|
113
113
|
|
|
114
114
|
// TODO(burdon): Remove app-framework deps (via render prop).
|
|
115
115
|
return (
|
|
116
|
-
<div
|
|
116
|
+
<div
|
|
117
|
+
className={mx('bs-full overflow-hidden grid', explorerGraph && !dragging && 'grid-rows-[min-content_1fr]')}
|
|
118
|
+
>
|
|
117
119
|
<QueryEditor
|
|
118
120
|
id={cell.id}
|
|
119
121
|
classNames={[editorStyles, 'border-be border-subduedSeparator']}
|
|
@@ -121,7 +123,7 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
|
|
|
121
123
|
value={cell.source.target.content}
|
|
122
124
|
onChange={handleQueryChange}
|
|
123
125
|
/>
|
|
124
|
-
{
|
|
126
|
+
{explorerGraph && !dragging && <Surface role='section' limit={1} data={{ subject: explorerGraph }} />}
|
|
125
127
|
</div>
|
|
126
128
|
);
|
|
127
129
|
|