@dxos/plugin-script 0.8.4-main.c1de068 → 0.8.4-main.c4373fc
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-7FNPALCV.mjs +12 -0
- package/dist/lib/browser/NotebookContainer-ZSXYRRZB.mjs +578 -0
- package/dist/lib/browser/NotebookContainer-ZSXYRRZB.mjs.map +7 -0
- package/dist/lib/browser/ScriptContainer-24LLLTLB.mjs +149 -0
- package/dist/lib/browser/ScriptContainer-24LLLTLB.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-HLQ7K3BT.mjs → app-graph-builder-DPYULSME.mjs} +9 -8
- package/dist/lib/browser/app-graph-builder-DPYULSME.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-ET5KZ46I.mjs +28 -0
- package/dist/lib/browser/blueprint-definition-ET5KZ46I.mjs.map +7 -0
- package/dist/lib/browser/{chunk-3U6DTUH3.mjs → chunk-DXWTBOND.mjs} +26 -27
- package/dist/lib/browser/chunk-DXWTBOND.mjs.map +7 -0
- package/dist/lib/browser/{chunk-FMDXKOP7.mjs → chunk-ETFBQURU.mjs} +71 -50
- package/dist/lib/browser/chunk-ETFBQURU.mjs.map +7 -0
- package/dist/lib/browser/{chunk-QYAREHGH.mjs → chunk-EZVXV6DA.mjs} +3 -5
- package/dist/lib/browser/chunk-EZVXV6DA.mjs.map +7 -0
- package/dist/lib/browser/chunk-I3THDIT5.mjs +90 -0
- package/dist/lib/browser/chunk-I3THDIT5.mjs.map +7 -0
- package/dist/lib/browser/chunk-N6M34EUC.mjs +112 -0
- package/dist/lib/browser/chunk-N6M34EUC.mjs.map +7 -0
- package/dist/lib/browser/{chunk-P4HQKUCP.mjs → chunk-NNYSARXK.mjs} +15 -15
- package/dist/lib/browser/chunk-NNYSARXK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-5TVBECWH.mjs → chunk-OKXN2N7M.mjs} +2 -2
- package/dist/lib/browser/{chunk-FIM2MVNJ.mjs → chunk-SRSEZWDY.mjs} +159 -68
- package/dist/lib/browser/chunk-SRSEZWDY.mjs.map +7 -0
- package/dist/lib/browser/chunk-SWBZUZDX.mjs +80 -0
- package/dist/lib/browser/chunk-SWBZUZDX.mjs.map +7 -0
- package/dist/lib/browser/chunk-VFJJA4WR.mjs +88 -0
- package/dist/lib/browser/chunk-VFJJA4WR.mjs.map +7 -0
- package/dist/lib/browser/{compiler-CXCUA4UQ.mjs → compiler-G2N2CG63.mjs} +24 -8
- package/dist/lib/browser/compiler-G2N2CG63.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +96 -39
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-7B77IG3N.mjs → intent-resolver-FYZRLYNT.mjs} +30 -16
- package/dist/lib/browser/intent-resolver-FYZRLYNT.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-FYYXZA7C.mjs → react-surface-CFRYAL2P.mjs} +36 -13
- package/dist/lib/browser/react-surface-CFRYAL2P.mjs.map +7 -0
- package/dist/lib/browser/{settings-KCTBK5TY.mjs → settings-L3HCZRBP.mjs} +8 -8
- package/dist/lib/browser/settings-L3HCZRBP.mjs.map +7 -0
- package/dist/lib/browser/templates/index.mjs +1 -1
- package/dist/lib/browser/types/index.mjs +6 -4
- package/dist/lib/node-esm/{DeploymentDialog-3KPRWFE7.mjs → DeploymentDialog-AKAGR37W.mjs} +5 -5
- package/dist/lib/node-esm/NotebookContainer-2O3N3XPE.mjs +579 -0
- package/dist/lib/node-esm/NotebookContainer-2O3N3XPE.mjs.map +7 -0
- package/dist/lib/node-esm/ScriptContainer-IKOB6FHQ.mjs +150 -0
- package/dist/lib/node-esm/ScriptContainer-IKOB6FHQ.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-7EYIHWH4.mjs → app-graph-builder-UXJGHXSL.mjs} +9 -8
- package/dist/lib/node-esm/app-graph-builder-UXJGHXSL.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-AIYFOT7Q.mjs +30 -0
- package/dist/lib/node-esm/blueprint-definition-AIYFOT7Q.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-QKK3NDHW.mjs → chunk-5IKGUOMI.mjs} +15 -15
- package/dist/lib/node-esm/chunk-5IKGUOMI.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-RT43MACC.mjs → chunk-7MR2L4T3.mjs} +26 -27
- package/dist/lib/node-esm/chunk-7MR2L4T3.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-C33FKUSC.mjs +91 -0
- package/dist/lib/node-esm/chunk-C33FKUSC.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-35M3CHYE.mjs → chunk-NUXZQQ6P.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-AHXJ6NQU.mjs → chunk-OG2SIKHE.mjs} +3 -5
- package/dist/lib/node-esm/chunk-OG2SIKHE.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-OQGBKNYU.mjs +90 -0
- package/dist/lib/node-esm/chunk-OQGBKNYU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-7NMI4CEU.mjs → chunk-PMQ3D535.mjs} +159 -68
- package/dist/lib/node-esm/chunk-PMQ3D535.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-XJPK3IYI.mjs → chunk-U4CZGISN.mjs} +71 -50
- package/dist/lib/node-esm/chunk-U4CZGISN.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-VRSDE4CI.mjs +114 -0
- package/dist/lib/node-esm/chunk-VRSDE4CI.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-ZF5ULKED.mjs +81 -0
- package/dist/lib/node-esm/chunk-ZF5ULKED.mjs.map +7 -0
- package/dist/lib/node-esm/{compiler-EPFKQXPE.mjs → compiler-PLDAZ5GJ.mjs} +24 -8
- package/dist/lib/node-esm/compiler-PLDAZ5GJ.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +96 -39
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-FRZGS4TB.mjs → intent-resolver-6J3CFL5T.mjs} +30 -16
- package/dist/lib/node-esm/intent-resolver-6J3CFL5T.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-V32NWHKN.mjs → react-surface-NPKEO7SA.mjs} +36 -13
- package/dist/lib/node-esm/react-surface-NPKEO7SA.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-DXZ334A3.mjs → settings-YWGZP4EW.mjs} +8 -8
- package/dist/lib/node-esm/settings-YWGZP4EW.mjs.map +7 -0
- package/dist/lib/node-esm/templates/index.mjs +1 -1
- package/dist/lib/node-esm/types/index.mjs +6 -4
- package/dist/types/src/ScriptPlugin.d.ts +1 -1
- package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/artifact-definition.d.ts +1 -1
- package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/compiler.d.ts +1 -1
- package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +6 -6
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -1
- package/dist/types/src/compiler/compiler.d.ts.map +1 -1
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +2 -2
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +225 -13
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/DeploymentDialog/index.d.ts +1 -1
- package/dist/types/src/components/DeploymentDialog/index.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 +10 -0
- package/dist/types/src/components/NotebookContainer.d.ts.map +1 -0
- package/dist/types/src/components/NotebookContainer.stories.d.ts +231 -0
- package/dist/types/src/components/NotebookContainer.stories.d.ts.map +1 -0
- package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +16 -0
- package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -0
- package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +231 -0
- package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -0
- package/dist/types/src/components/NotebookStack/index.d.ts +2 -0
- package/dist/types/src/components/NotebookStack/index.d.ts.map +1 -0
- package/dist/types/src/components/ScriptContainer.d.ts +2 -2
- package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +227 -10
- 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/components/Settings/ScriptPluginSettings.d.ts +2 -2
- package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -1
- package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +1 -1
- package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +4 -2
- package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
- package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +17 -4
- package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +3 -4
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/hooks/deploy.d.ts +11 -10
- package/dist/types/src/hooks/deploy.d.ts.map +1 -1
- package/dist/types/src/hooks/template.d.ts.map +1 -1
- package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +0 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/notebook/index.d.ts +2 -0
- package/dist/types/src/notebook/index.d.ts.map +1 -0
- package/dist/types/src/notebook/notebook.d.ts +39 -0
- package/dist/types/src/notebook/notebook.d.ts.map +1 -0
- package/dist/types/src/notebook/notebook.test.d.ts +2 -0
- package/dist/types/src/notebook/notebook.test.d.ts.map +1 -0
- package/dist/types/src/notebook/vfs-parser.d.ts +74 -0
- package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -0
- package/dist/types/src/notebook/vfs-parser.test.d.ts +2 -0
- package/dist/types/src/notebook/vfs-parser.test.d.ts.map +1 -0
- package/dist/types/src/templates/chess.d.ts.map +1 -1
- package/dist/types/src/templates/data-generator.d.ts.map +1 -1
- package/dist/types/src/templates/discord.d.ts.map +1 -1
- package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
- package/dist/types/src/templates/forex.d.ts.map +1 -1
- package/dist/types/src/templates/gmail.d.ts.map +1 -1
- package/dist/types/src/testing/data.d.ts +10 -0
- package/dist/types/src/testing/data.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +2 -0
- package/dist/types/src/testing/index.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +21 -2
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/actions.d.ts +58 -0
- package/dist/types/src/types/actions.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +1 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +29 -32
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/util/deploy.d.ts +3 -3
- package/dist/types/src/util/deploy.d.ts.map +1 -1
- package/dist/types/src/util/functions.d.ts +5 -2
- package/dist/types/src/util/functions.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +73 -69
- package/src/ScriptPlugin.tsx +91 -69
- package/src/capabilities/app-graph-builder.ts +6 -5
- package/src/capabilities/artifact-definition.ts +8 -12
- package/src/capabilities/blueprint-definition.ts +30 -0
- package/src/capabilities/compiler.ts +2 -1
- package/src/capabilities/index.ts +1 -1
- package/src/capabilities/intent-resolver.ts +15 -8
- package/src/capabilities/react-surface.tsx +20 -7
- package/src/capabilities/settings.ts +3 -3
- package/src/compiler/compiler.ts +1 -1
- package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +34 -20
- package/src/components/DeploymentDialog/DeploymentDialog.tsx +16 -22
- package/src/components/DeploymentDialog/index.ts +1 -1
- package/src/components/FrameContainer/FrameContainer.tsx +3 -2
- package/src/components/NotebookContainer.stories.tsx +36 -0
- package/src/components/NotebookContainer.tsx +82 -0
- package/src/components/NotebookStack/NotebookStack.stories.tsx +36 -0
- package/src/components/NotebookStack/NotebookStack.tsx +113 -0
- package/src/components/NotebookStack/index.ts +5 -0
- package/src/components/ScriptContainer.tsx +4 -3
- package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +33 -17
- package/src/components/ScriptToolbar/ScriptToolbar.tsx +30 -23
- package/src/components/Settings/ScriptObjectSettings.tsx +111 -31
- package/src/components/Settings/ScriptPluginSettings.tsx +37 -47
- package/src/components/TestPanel/TestContainer.tsx +2 -1
- package/src/components/TestPanel/TestPanel.tsx +6 -6
- package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +84 -30
- package/src/components/TypescriptEditor/TypescriptEditor.tsx +32 -25
- package/src/components/index.ts +3 -0
- package/src/events.ts +2 -2
- package/src/hooks/deploy.ts +18 -19
- package/src/hooks/format.ts +2 -2
- package/src/hooks/template.ts +4 -3
- package/src/hooks/useCreateAndDeployScriptTemplates.ts +4 -3
- package/src/index.ts +1 -0
- package/src/meta.ts +2 -4
- package/src/notebook/index.ts +5 -0
- package/src/notebook/notebook.test.ts +38 -0
- package/src/notebook/notebook.ts +188 -0
- package/src/notebook/vfs-parser.test.ts +149 -0
- package/src/notebook/vfs-parser.ts +490 -0
- package/src/templates/chess.ts +3 -1
- package/src/templates/data-generator.ts +9 -3
- package/src/templates/discord.ts +12 -4
- package/src/templates/forex-effect.ts +7 -3
- package/src/templates/forex.ts +3 -1
- package/src/templates/gmail.ts +33 -62
- package/src/testing/data.ts +37 -0
- package/src/testing/index.ts +5 -0
- package/src/translations.ts +24 -4
- package/src/types/actions.ts +49 -0
- package/src/types/index.ts +1 -0
- package/src/types/schema.ts +24 -19
- package/src/util/deploy.ts +20 -33
- package/src/util/functions.ts +35 -6
- package/dist/lib/browser/DeploymentDialog-M4QIHTDR.mjs +0 -12
- package/dist/lib/browser/ScriptContainer-Z6SIGRRC.mjs +0 -262
- package/dist/lib/browser/ScriptContainer-Z6SIGRRC.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-HLQ7K3BT.mjs.map +0 -7
- package/dist/lib/browser/artifact-definition-24Q3IHOU.mjs +0 -249
- package/dist/lib/browser/artifact-definition-24Q3IHOU.mjs.map +0 -7
- package/dist/lib/browser/chunk-3U6DTUH3.mjs.map +0 -7
- package/dist/lib/browser/chunk-FIM2MVNJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-FMDXKOP7.mjs.map +0 -7
- package/dist/lib/browser/chunk-IS4OG2UW.mjs +0 -39
- package/dist/lib/browser/chunk-IS4OG2UW.mjs.map +0 -7
- package/dist/lib/browser/chunk-P4HQKUCP.mjs.map +0 -7
- package/dist/lib/browser/chunk-QYAREHGH.mjs.map +0 -7
- package/dist/lib/browser/chunk-R4R7VOFY.mjs +0 -88
- package/dist/lib/browser/chunk-R4R7VOFY.mjs.map +0 -7
- package/dist/lib/browser/compiler-CXCUA4UQ.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-7B77IG3N.mjs.map +0 -7
- package/dist/lib/browser/react-surface-FYYXZA7C.mjs.map +0 -7
- package/dist/lib/browser/settings-KCTBK5TY.mjs.map +0 -7
- package/dist/lib/node-esm/ScriptContainer-KPU75HHI.mjs +0 -263
- package/dist/lib/node-esm/ScriptContainer-KPU75HHI.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-7EYIHWH4.mjs.map +0 -7
- package/dist/lib/node-esm/artifact-definition-WAJFALUI.mjs +0 -250
- package/dist/lib/node-esm/artifact-definition-WAJFALUI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-7NMI4CEU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AHXJ6NQU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-F5GFJ3PY.mjs +0 -90
- package/dist/lib/node-esm/chunk-F5GFJ3PY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JIPFLBYA.mjs +0 -40
- package/dist/lib/node-esm/chunk-JIPFLBYA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-QKK3NDHW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RT43MACC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XJPK3IYI.mjs.map +0 -7
- package/dist/lib/node-esm/compiler-EPFKQXPE.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-FRZGS4TB.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-V32NWHKN.mjs.map +0 -7
- package/dist/lib/node-esm/settings-DXZ334A3.mjs.map +0 -7
- /package/dist/lib/browser/{DeploymentDialog-M4QIHTDR.mjs.map → DeploymentDialog-7FNPALCV.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-5TVBECWH.mjs.map → chunk-OKXN2N7M.mjs.map} +0 -0
- /package/dist/lib/node-esm/{DeploymentDialog-3KPRWFE7.mjs.map → DeploymentDialog-AKAGR37W.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-35M3CHYE.mjs.map → chunk-NUXZQQ6P.mjs.map} +0 -0
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ScriptAction
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SWBZUZDX.mjs";
|
|
4
4
|
|
|
5
5
|
// src/util/functions.ts
|
|
6
|
-
import { getInvocationUrl,
|
|
6
|
+
import { getInvocationUrl, getUserFunctionIdInMetadata } from "@dxos/functions";
|
|
7
7
|
import { log } from "@dxos/log";
|
|
8
8
|
import { getMeta, getSpace } from "@dxos/react-client/echo";
|
|
9
9
|
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/util/functions.ts";
|
|
10
10
|
var getFunctionUrl = ({ script, fn, edgeUrl }) => {
|
|
11
11
|
const space = getSpace(script);
|
|
12
|
-
const
|
|
13
|
-
if (!
|
|
12
|
+
const existingFunctionId = fn && getUserFunctionIdInMetadata(getMeta(fn));
|
|
13
|
+
if (!existingFunctionId) {
|
|
14
14
|
return void 0;
|
|
15
15
|
}
|
|
16
|
-
return getInvocationUrl(
|
|
16
|
+
return getInvocationUrl(existingFunctionId, edgeUrl, {
|
|
17
17
|
spaceId: space?.id
|
|
18
18
|
});
|
|
19
19
|
};
|
|
@@ -27,7 +27,7 @@ var updateFunctionMetadata = (script, storedFunction, meta, functionId) => {
|
|
|
27
27
|
functionId
|
|
28
28
|
}, {
|
|
29
29
|
F: __dxlog_file,
|
|
30
|
-
L:
|
|
30
|
+
L: 45,
|
|
31
31
|
S: void 0,
|
|
32
32
|
C: (f, a) => f(...a)
|
|
33
33
|
});
|
|
@@ -39,7 +39,7 @@ var updateFunctionMetadata = (script, storedFunction, meta, functionId) => {
|
|
|
39
39
|
functionId
|
|
40
40
|
}, {
|
|
41
41
|
F: __dxlog_file,
|
|
42
|
-
L:
|
|
42
|
+
L: 51,
|
|
43
43
|
S: void 0,
|
|
44
44
|
C: (f, a) => f(...a)
|
|
45
45
|
});
|
|
@@ -51,25 +51,55 @@ var updateFunctionMetadata = (script, storedFunction, meta, functionId) => {
|
|
|
51
51
|
functionId
|
|
52
52
|
}, {
|
|
53
53
|
F: __dxlog_file,
|
|
54
|
-
L:
|
|
54
|
+
L: 57,
|
|
55
55
|
S: void 0,
|
|
56
56
|
C: (f, a) => f(...a)
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
|
+
if (meta.key) {
|
|
60
|
+
storedFunction.key = meta.key;
|
|
61
|
+
} else {
|
|
62
|
+
log.verbose("no key in function metadata", {
|
|
63
|
+
functionId
|
|
64
|
+
}, {
|
|
65
|
+
F: __dxlog_file,
|
|
66
|
+
L: 63,
|
|
67
|
+
S: void 0,
|
|
68
|
+
C: (f, a) => f(...a)
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
var getAccessCredential = (identityKey) => {
|
|
73
|
+
return {
|
|
74
|
+
issuer: identityKey,
|
|
75
|
+
issuanceDate: /* @__PURE__ */ new Date(),
|
|
76
|
+
subject: {
|
|
77
|
+
id: identityKey,
|
|
78
|
+
assertion: {
|
|
79
|
+
"@type": "dxos.halo.credentials.ServiceAccess",
|
|
80
|
+
serverName: "hub.dxos.network",
|
|
81
|
+
serverKey: identityKey,
|
|
82
|
+
identityKey,
|
|
83
|
+
capabilities: [
|
|
84
|
+
"composer:beta"
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
};
|
|
59
89
|
};
|
|
60
90
|
|
|
61
91
|
// src/util/deploy.ts
|
|
62
92
|
import { Obj, Ref } from "@dxos/echo";
|
|
63
|
-
import { FunctionType,
|
|
93
|
+
import { FunctionType, getUserFunctionIdInMetadata as getUserFunctionIdInMetadata2, setUserFunctionIdInMetadata } from "@dxos/functions";
|
|
64
94
|
import { Bundler } from "@dxos/functions/bundler";
|
|
65
95
|
import { incrementSemverPatch, uploadWorkerFunction } from "@dxos/functions/edge";
|
|
66
96
|
import { log as log2 } from "@dxos/log";
|
|
67
97
|
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-script/src/util/deploy.ts";
|
|
68
98
|
var isScriptDeployed = ({ script, fn }) => {
|
|
69
|
-
const
|
|
70
|
-
return Boolean(
|
|
99
|
+
const existingFunctionId = fn && getUserFunctionIdInMetadata2(Obj.getMeta(fn));
|
|
100
|
+
return Boolean(existingFunctionId) && !script.changed;
|
|
71
101
|
};
|
|
72
|
-
var deployScript = async ({ script, client, space, fn,
|
|
102
|
+
var deployScript = async ({ script, client, space, fn, existingFunctionId }) => {
|
|
73
103
|
const validationError = validateDeployInputs(script, space);
|
|
74
104
|
if (validationError) {
|
|
75
105
|
return {
|
|
@@ -78,17 +108,26 @@ var deployScript = async ({ script, client, space, fn, existingFunctionUrl }) =>
|
|
|
78
108
|
};
|
|
79
109
|
}
|
|
80
110
|
try {
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
111
|
+
const bundler = new Bundler({
|
|
112
|
+
platform: "browser",
|
|
113
|
+
sandboxedModules: [],
|
|
114
|
+
remoteModules: {}
|
|
115
|
+
});
|
|
116
|
+
const buildResult = await bundler.bundle({
|
|
117
|
+
source: script.source.target.content
|
|
118
|
+
});
|
|
119
|
+
if ("error" in buildResult) {
|
|
120
|
+
throw buildResult.error || new Error("Bundle creation failed");
|
|
85
121
|
}
|
|
86
122
|
const { functionId, version, meta } = await uploadWorkerFunction({
|
|
87
123
|
client,
|
|
88
124
|
ownerPublicKey: space.key,
|
|
89
125
|
version: fn ? incrementSemverPatch(fn.version) : "0.0.1",
|
|
90
126
|
functionId: existingFunctionId,
|
|
91
|
-
|
|
127
|
+
entryPoint: buildResult.entryPoint,
|
|
128
|
+
assets: {
|
|
129
|
+
[buildResult.entryPoint]: buildResult.asset
|
|
130
|
+
}
|
|
92
131
|
});
|
|
93
132
|
if (functionId === void 0 || version === void 0) {
|
|
94
133
|
throw new Error(`Upload didn't return expected data: ${JSON.stringify({
|
|
@@ -99,18 +138,15 @@ var deployScript = async ({ script, client, space, fn, existingFunctionUrl }) =>
|
|
|
99
138
|
const storedFunction = createOrUpdateFunctionInSpace(space, fn, script, functionId, version);
|
|
100
139
|
script.changed = false;
|
|
101
140
|
updateFunctionMetadata(script, storedFunction, meta, functionId);
|
|
102
|
-
|
|
103
|
-
functionId
|
|
104
|
-
});
|
|
105
|
-
setUserFunctionUrlInMetadata(Obj.getMeta(storedFunction), functionUrl);
|
|
141
|
+
setUserFunctionIdInMetadata(Obj.getMeta(storedFunction), functionId);
|
|
106
142
|
return {
|
|
107
143
|
success: true,
|
|
108
|
-
|
|
144
|
+
functionId
|
|
109
145
|
};
|
|
110
146
|
} catch (err) {
|
|
111
147
|
log2.catch(err, void 0, {
|
|
112
148
|
F: __dxlog_file2,
|
|
113
|
-
L:
|
|
149
|
+
L: 78,
|
|
114
150
|
S: void 0,
|
|
115
151
|
C: (f, a) => f(...a)
|
|
116
152
|
});
|
|
@@ -126,42 +162,25 @@ var validateDeployInputs = (script, space) => {
|
|
|
126
162
|
}
|
|
127
163
|
return null;
|
|
128
164
|
};
|
|
129
|
-
var extractFunctionId = (functionUrl) => {
|
|
130
|
-
return functionUrl?.split("/").at(-1);
|
|
131
|
-
};
|
|
132
|
-
var bundleScript = async (source) => {
|
|
133
|
-
const bundler = new Bundler({
|
|
134
|
-
platform: "browser",
|
|
135
|
-
sandboxedModules: [],
|
|
136
|
-
remoteModules: {}
|
|
137
|
-
});
|
|
138
|
-
const buildResult = await bundler.bundle({
|
|
139
|
-
source
|
|
140
|
-
});
|
|
141
|
-
if (buildResult.error || !buildResult.bundle) {
|
|
142
|
-
return {
|
|
143
|
-
error: buildResult.error || new Error("Bundle creation failed")
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
return {
|
|
147
|
-
bundle: buildResult.bundle
|
|
148
|
-
};
|
|
149
|
-
};
|
|
150
165
|
var createOrUpdateFunctionInSpace = (space, fn, script, functionId, version) => {
|
|
151
166
|
if (fn) {
|
|
167
|
+
fn.name = script.name ?? "New Function";
|
|
152
168
|
fn.version = version;
|
|
153
169
|
return fn;
|
|
154
170
|
} else {
|
|
155
|
-
|
|
156
|
-
name:
|
|
171
|
+
const fn2 = Obj.make(FunctionType, {
|
|
172
|
+
name: script.name ?? "New Function",
|
|
157
173
|
version,
|
|
158
174
|
source: Ref.make(script)
|
|
159
|
-
})
|
|
175
|
+
});
|
|
176
|
+
space.db.add(fn2);
|
|
177
|
+
setUserFunctionIdInMetadata(Obj.getMeta(fn2), functionId);
|
|
178
|
+
return fn2;
|
|
160
179
|
}
|
|
161
180
|
};
|
|
162
181
|
|
|
163
182
|
// src/hooks/useCreateAndDeployScriptTemplates.ts
|
|
164
|
-
import
|
|
183
|
+
import * as Function from "effect/Function";
|
|
165
184
|
import { useCallback, useState } from "react";
|
|
166
185
|
import { chain, createIntent, useIntentDispatcher } from "@dxos/app-framework";
|
|
167
186
|
import { Obj as Obj2 } from "@dxos/echo";
|
|
@@ -188,7 +207,7 @@ var useCreateAndDeployScriptTemplates = (space, scriptTemplates) => {
|
|
|
188
207
|
setStatus("pending");
|
|
189
208
|
setError(void 0);
|
|
190
209
|
const deploymentResults = await Promise.all(scriptTemplates.map(async (template) => {
|
|
191
|
-
const result = await dispatch(pipe(createIntent(ScriptAction.
|
|
210
|
+
const result = await dispatch(Function.pipe(createIntent(ScriptAction.CreateScript, {
|
|
192
211
|
space,
|
|
193
212
|
initialTemplateId: template.id
|
|
194
213
|
}), chain(SpaceAction.AddObject, {
|
|
@@ -226,8 +245,10 @@ var useCreateAndDeployScriptTemplates = (space, scriptTemplates) => {
|
|
|
226
245
|
|
|
227
246
|
export {
|
|
228
247
|
getFunctionUrl,
|
|
248
|
+
updateFunctionMetadata,
|
|
249
|
+
getAccessCredential,
|
|
229
250
|
isScriptDeployed,
|
|
230
251
|
deployScript,
|
|
231
252
|
useCreateAndDeployScriptTemplates
|
|
232
253
|
};
|
|
233
|
-
//# sourceMappingURL=chunk-
|
|
254
|
+
//# sourceMappingURL=chunk-ETFBQURU.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/util/functions.ts", "../../../src/util/deploy.ts", "../../../src/hooks/useCreateAndDeployScriptTemplates.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type FunctionType, type ScriptType, getInvocationUrl, getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';\nimport { getMeta, getSpace } from '@dxos/react-client/echo';\n/**\n * Get the function URL for a given script and client configuration\n */\nexport const getFunctionUrl = ({\n script,\n fn,\n edgeUrl,\n}: {\n script: ScriptType;\n fn: any;\n edgeUrl: string;\n}): string | undefined => {\n const space = getSpace(script);\n const existingFunctionId = fn && getUserFunctionIdInMetadata(getMeta(fn));\n\n if (!existingFunctionId) {\n return undefined;\n }\n\n return getInvocationUrl(existingFunctionId, edgeUrl, {\n spaceId: space?.id,\n });\n};\n\nexport const updateFunctionMetadata = (\n script: ScriptType,\n storedFunction: FunctionType,\n meta: any,\n functionId: string,\n) => {\n if (script.description !== undefined && script.description.trim() !== '') {\n storedFunction.description = script.description;\n } else if (meta.description) {\n storedFunction.description = meta.description;\n } else {\n log.verbose('no description in function metadata', { functionId });\n }\n\n if (meta.inputSchema) {\n storedFunction.inputSchema = meta.inputSchema;\n } else {\n log.verbose('no input schema in function metadata', { functionId });\n }\n\n if (meta.outputSchema) {\n storedFunction.outputSchema = meta.outputSchema;\n } else {\n log.verbose('no output schema in function metadata', { functionId });\n }\n\n if (meta.key) {\n storedFunction.key = meta.key;\n } else {\n log.verbose('no key in function metadata', { functionId });\n }\n};\n\nexport const getAccessCredential = (identityKey: PublicKey): Credential => {\n return {\n issuer: identityKey,\n issuanceDate: new Date(),\n subject: {\n id: identityKey,\n assertion: {\n '@type': 'dxos.halo.credentials.ServiceAccess',\n serverName: 'hub.dxos.network',\n serverKey: identityKey,\n identityKey,\n capabilities: ['composer:beta'],\n },\n },\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Client } from '@dxos/client';\nimport { Obj, Ref } from '@dxos/echo';\nimport {\n FunctionType,\n type ScriptType,\n getUserFunctionIdInMetadata,\n setUserFunctionIdInMetadata,\n} from '@dxos/functions';\nimport { Bundler } from '@dxos/functions/bundler';\nimport { incrementSemverPatch, uploadWorkerFunction } from '@dxos/functions/edge';\nimport { log } from '@dxos/log';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { updateFunctionMetadata } from './functions';\n\nexport const isScriptDeployed = ({ script, fn }: { script: ScriptType; fn: any }): boolean => {\n const existingFunctionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));\n return Boolean(existingFunctionId) && !script.changed;\n};\n\ntype DeployScriptProps = {\n script: ScriptType;\n client: Client;\n space: Space;\n fn?: FunctionType;\n existingFunctionId?: string;\n};\n\ntype DeployScriptResult = { success: boolean; error?: Error; functionId?: string };\n\n/**\n * Deploy a script to a space, handling bundling and uploading to the FaaS infrastructure.\n */\nexport const deployScript = async ({\n script,\n client,\n space,\n fn,\n existingFunctionId,\n}: DeployScriptProps): Promise<DeployScriptResult> => {\n const validationError = validateDeployInputs(script, space);\n if (validationError) {\n return { success: false, error: validationError };\n }\n\n try {\n const bundler = new Bundler({ platform: 'browser', sandboxedModules: [], remoteModules: {} });\n const buildResult = await bundler.bundle({ source: script.source!.target!.content });\n if ('error' in buildResult) {\n throw buildResult.error || new Error('Bundle creation failed');\n }\n\n const { functionId, version, meta } = await uploadWorkerFunction({\n client,\n ownerPublicKey: space.key,\n version: fn ? incrementSemverPatch(fn.version) : '0.0.1',\n functionId: existingFunctionId,\n entryPoint: buildResult.entryPoint,\n assets: { [buildResult.entryPoint]: buildResult.asset },\n });\n\n if (functionId === undefined || version === undefined) {\n throw new Error(`Upload didn't return expected data: ${JSON.stringify({ functionId, version })}`);\n }\n\n const storedFunction = createOrUpdateFunctionInSpace(space, fn, script, functionId, version);\n script.changed = false;\n updateFunctionMetadata(script, storedFunction, meta, functionId);\n\n setUserFunctionIdInMetadata(Obj.getMeta(storedFunction), functionId);\n\n return { success: true, functionId };\n } catch (err: any) {\n log.catch(err);\n return { success: false, error: err };\n }\n};\n\n/**\n * Validate inputs for script deployment.\n */\nconst validateDeployInputs = (script: ScriptType, space: Space): Error | null => {\n if (!script.source || !space) {\n return new Error('Script source or space not available');\n }\n return null;\n};\n\nconst createOrUpdateFunctionInSpace = (\n space: Space,\n fn: FunctionType | undefined,\n script: ScriptType,\n functionId: string,\n version: string,\n): FunctionType => {\n if (fn) {\n fn.name = script.name ?? 'New Function';\n fn.version = version;\n return fn;\n } else {\n const fn = Obj.make(FunctionType, { name: script.name ?? 'New Function', version, source: Ref.make(script) });\n space.db.add(fn);\n setUserFunctionIdInMetadata(Obj.getMeta(fn), functionId);\n return fn;\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Function from 'effect/Function';\nimport { useCallback, useState } from 'react';\n\nimport { chain, createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { ScriptType } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { useClient } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { type Template } from '../templates';\nimport { ScriptAction } from '../types';\nimport { deployScript } from '../util';\n\ntype DeploymentStatus = 'idle' | 'pending' | 'success' | 'error';\n\n/**\n * Hook for creating and deploying multiple script templates concurrently.\n *\n * Takes a space and an array of script template IDs, then provides a callback\n * function that creates each script from its template and deploys it to the space.\n * All creation / deployment operations run concurrently for improved performance.\n */\nexport const useCreateAndDeployScriptTemplates = (space: Space | undefined, scriptTemplates: Template[]) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const client = useClient();\n const [status, setStatus] = useState<DeploymentStatus>('idle');\n const [error, setError] = useState<Error | undefined>(undefined);\n\n const handleCreateAndDeployScripts = useCallback(async () => {\n invariant(space);\n setStatus('pending');\n setError(undefined);\n\n const deploymentResults = await Promise.all(\n scriptTemplates.map(async (template) => {\n const result = await dispatch(\n Function.pipe(\n createIntent(ScriptAction.CreateScript, { space, initialTemplateId: template.id }),\n chain(SpaceAction.AddObject, { target: space }),\n ),\n );\n invariant(Obj.instanceOf(ScriptType, result.data?.object));\n\n return deployScript({ space, client, script: result.data.object });\n }),\n );\n\n const hasErrors = deploymentResults.some((result) => !result.success);\n setStatus(hasErrors ? 'error' : 'success');\n }, [space, dispatch, client, scriptTemplates]);\n\n // TODO(burdon): Return onCreateAndDeployScripts.\n return { handleCreateAndDeployScripts, status, error };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["getInvocationUrl", "getUserFunctionIdInMetadata", "log", "getMeta", "getSpace", "getFunctionUrl", "script", "fn", "edgeUrl", "space", "existingFunctionId", "undefined", "spaceId", "id", "updateFunctionMetadata", "storedFunction", "meta", "functionId", "description", "trim", "verbose", "inputSchema", "outputSchema", "key", "getAccessCredential", "identityKey", "issuer", "issuanceDate", "Date", "subject", "assertion", "serverName", "serverKey", "capabilities", "Obj", "Ref", "FunctionType", "getUserFunctionIdInMetadata", "setUserFunctionIdInMetadata", "Bundler", "incrementSemverPatch", "uploadWorkerFunction", "log", "isScriptDeployed", "script", "fn", "existingFunctionId", "getUserFunctionIdInMetadata", "Obj", "getMeta", "Boolean", "changed", "deployScript", "client", "space", "validationError", "validateDeployInputs", "success", "error", "bundler", "Bundler", "platform", "sandboxedModules", "remoteModules", "buildResult", "bundle", "source", "target", "content", "Error", "functionId", "version", "meta", "uploadWorkerFunction", "ownerPublicKey", "key", "incrementSemverPatch", "entryPoint", "assets", "asset", "undefined", "JSON", "stringify", "storedFunction", "createOrUpdateFunctionInSpace", "updateFunctionMetadata", "setUserFunctionIdInMetadata", "err", "log", "catch", "name", "make", "FunctionType", "Ref", "db", "add", "Function", "useCallback", "useState", "chain", "createIntent", "useIntentDispatcher", "Obj", "ScriptType", "invariant", "SpaceAction", "useClient", "useCreateAndDeployScriptTemplates", "space", "scriptTemplates", "dispatchPromise", "dispatch", "useIntentDispatcher", "client", "useClient", "status", "setStatus", "useState", "error", "setError", "undefined", "handleCreateAndDeployScripts", "useCallback", "invariant", "deploymentResults", "Promise", "all", "map", "template", "result", "pipe", "createIntent", "ScriptAction", "CreateScript", "initialTemplateId", "id", "chain", "SpaceAction", "AddObject", "target", "Obj", "instanceOf", "ScriptType", "data", "object", "deployScript", "script", "hasErrors", "some", "success"]
|
|
7
|
+
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
// src/meta.ts
|
|
2
|
-
var SCRIPT_PLUGIN = "dxos.org/plugin/script";
|
|
3
2
|
var meta = {
|
|
4
|
-
id:
|
|
3
|
+
id: "dxos.org/plugin/script",
|
|
5
4
|
name: "Scripts",
|
|
6
|
-
description: "Scripts
|
|
5
|
+
description: "Scripts enable you to deploy custom functions that run on the edge. These functions can be referenced by your AI agent and called inside of cells in any Sheet. Use scripts to interact with API\u2019s or external data inside of Composer.",
|
|
7
6
|
icon: "ph--code--regular",
|
|
8
7
|
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-explorer",
|
|
9
8
|
tags: [
|
|
@@ -21,8 +20,7 @@ var defaultScriptsForIntegration = {
|
|
|
21
20
|
};
|
|
22
21
|
|
|
23
22
|
export {
|
|
24
|
-
SCRIPT_PLUGIN,
|
|
25
23
|
meta,
|
|
26
24
|
defaultScriptsForIntegration
|
|
27
25
|
};
|
|
28
|
-
//# sourceMappingURL=chunk-
|
|
26
|
+
//# sourceMappingURL=chunk-EZVXV6DA.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/meta.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const meta: PluginMeta = {\n id: 'dxos.org/plugin/script',\n name: 'Scripts',\n description:\n 'Scripts enable you to deploy custom functions that run on the edge. These functions can be referenced by your AI agent and called inside of cells in any Sheet. Use scripts to interact with API’s or external data inside of Composer.',\n icon: 'ph--code--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-explorer',\n tags: ['labs'],\n screenshots: ['https://dxos.network/plugin-details-scripts-dark.png'],\n};\n\n// TODO(ZaymonFC): Configure by scopes?\nexport const defaultScriptsForIntegration: Record<string, string[]> = {\n // TODO(wittjosiah): Also include content extraction scripts in the default set.\n 'gmail.com': ['dxos.org/script/gmail'],\n};\n"],
|
|
5
|
+
"mappings": ";AAMO,IAAMA,OAAmB;EAC9BC,IAAI;EACJC,MAAM;EACNC,aACE;EACFC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;EACPC,aAAa;IAAC;;AAChB;AAGO,IAAMC,+BAAyD;;EAEpE,aAAa;IAAC;;AAChB;",
|
|
6
|
+
"names": ["meta", "id", "name", "description", "icon", "source", "tags", "screenshots", "defaultScriptsForIntegration"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import {
|
|
2
|
+
TypescriptEditor
|
|
3
|
+
} from "./chunk-N6M34EUC.mjs";
|
|
4
|
+
import {
|
|
5
|
+
meta
|
|
6
|
+
} from "./chunk-EZVXV6DA.mjs";
|
|
7
|
+
|
|
8
|
+
// src/components/NotebookStack/NotebookStack.tsx
|
|
9
|
+
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
10
|
+
import React, { useMemo } from "react";
|
|
11
|
+
import { createDocAccessor } from "@dxos/react-client/echo";
|
|
12
|
+
import { DropdownMenu, Icon, useTranslation } from "@dxos/react-ui";
|
|
13
|
+
import { createDataExtensions } from "@dxos/react-ui-editor";
|
|
14
|
+
import { Stack, StackItem } from "@dxos/react-ui-stack";
|
|
15
|
+
var NotebookStack = ({ notebook, ...props }) => {
|
|
16
|
+
var _effect = _useSignals();
|
|
17
|
+
try {
|
|
18
|
+
return /* @__PURE__ */ React.createElement(Stack, {
|
|
19
|
+
orientation: "vertical",
|
|
20
|
+
size: "contain",
|
|
21
|
+
rail: true
|
|
22
|
+
}, notebook?.cells.map((cell, i) => /* @__PURE__ */ React.createElement(NotebookSection, {
|
|
23
|
+
key: i,
|
|
24
|
+
cell,
|
|
25
|
+
...props
|
|
26
|
+
})));
|
|
27
|
+
} finally {
|
|
28
|
+
_effect.f();
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
var NotebookSection = ({ cell, graph, env, onCellInsert, onCellDelete }) => {
|
|
32
|
+
var _effect = _useSignals();
|
|
33
|
+
try {
|
|
34
|
+
const { t } = useTranslation(meta.id);
|
|
35
|
+
const extensions = useMemo(() => {
|
|
36
|
+
return cell.script.target ? [
|
|
37
|
+
createDataExtensions({
|
|
38
|
+
id: cell.id,
|
|
39
|
+
text: createDocAccessor(cell.script.target, [
|
|
40
|
+
"content"
|
|
41
|
+
])
|
|
42
|
+
})
|
|
43
|
+
] : [];
|
|
44
|
+
}, [
|
|
45
|
+
cell.script.target
|
|
46
|
+
]);
|
|
47
|
+
const name = graph?.expressions.value[cell.id]?.name;
|
|
48
|
+
const value = graph?.values.value[cell.id];
|
|
49
|
+
return /* @__PURE__ */ React.createElement(StackItem.Root, {
|
|
50
|
+
role: "section",
|
|
51
|
+
item: cell
|
|
52
|
+
}, /* @__PURE__ */ React.createElement(StackItem.Heading, {
|
|
53
|
+
classNames: "attention-surface"
|
|
54
|
+
}, /* @__PURE__ */ React.createElement(StackItem.HeadingStickyContent, null, /* @__PURE__ */ React.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React.createElement(DropdownMenu.Trigger, {
|
|
55
|
+
asChild: true
|
|
56
|
+
}, /* @__PURE__ */ React.createElement(StackItem.SigilButton, null, /* @__PURE__ */ React.createElement(Icon, {
|
|
57
|
+
icon: "ph--list--regular",
|
|
58
|
+
size: 5
|
|
59
|
+
}))), /* @__PURE__ */ React.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React.createElement(DropdownMenu.Content, null, /* @__PURE__ */ React.createElement(DropdownMenu.Viewport, null, /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
|
|
60
|
+
onClick: () => onCellInsert?.(cell.id)
|
|
61
|
+
}, t("notebook cell insert label")), /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
|
|
62
|
+
onClick: () => onCellDelete?.(cell.id)
|
|
63
|
+
}, t("notebook cell delete label"))), /* @__PURE__ */ React.createElement(DropdownMenu.Arrow, null)))))), /* @__PURE__ */ React.createElement(StackItem.Content, null, /* @__PURE__ */ React.createElement(TypescriptEditor, {
|
|
64
|
+
id: cell.id,
|
|
65
|
+
role: "section",
|
|
66
|
+
initialValue: cell.script.target?.content,
|
|
67
|
+
extensions,
|
|
68
|
+
env,
|
|
69
|
+
options: {
|
|
70
|
+
placeholder: t("notebook cell placeholder"),
|
|
71
|
+
highlightActiveLine: false,
|
|
72
|
+
lineNumbers: false
|
|
73
|
+
},
|
|
74
|
+
classNames: "p-2 pbs-3"
|
|
75
|
+
}), value != null && /* @__PURE__ */ React.createElement("div", {
|
|
76
|
+
className: "flex p-2 bg-groupSurface border-t border-subduedSeparator text-description font-mono"
|
|
77
|
+
}, name && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("span", {
|
|
78
|
+
className: "text-successText"
|
|
79
|
+
}, name), /* @__PURE__ */ React.createElement("span", {
|
|
80
|
+
className: "text-description"
|
|
81
|
+
}, "\xA0=\xA0")), /* @__PURE__ */ React.createElement("span", null, value))));
|
|
82
|
+
} finally {
|
|
83
|
+
_effect.f();
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export {
|
|
88
|
+
NotebookStack
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=chunk-I3THDIT5.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/NotebookStack/NotebookStack.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { DropdownMenu, Icon, useTranslation } from '@dxos/react-ui';\nimport { createDataExtensions } from '@dxos/react-ui-editor';\nimport { Stack, StackItem } from '@dxos/react-ui-stack';\n\nimport { meta } from '../../meta';\nimport { type ComputeGraph } from '../../notebook';\nimport { type Notebook } from '../../types';\nimport { TypescriptEditor } from '../TypescriptEditor';\nimport { type TypescriptEditorProps } from '../TypescriptEditor';\n\nexport type NotebookStackProps = {\n notebook?: Notebook.Notebook;\n} & Pick<NotebookSectionProps, 'graph' | 'onCellInsert' | 'onCellDelete'> &\n Pick<TypescriptEditorProps, 'env'>;\n\n// TODO(burdon): Option for narrow rail (with compact buttons that align with first button in toolbar).\nexport const NotebookStack = ({ notebook, ...props }: NotebookStackProps) => {\n return (\n <Stack orientation='vertical' size='contain' rail>\n {notebook?.cells.map((cell, i) => (\n <NotebookSection key={i} cell={cell} {...props} />\n ))}\n </Stack>\n );\n};\n\n// TODO(burdon): Support calling named deployed functions (as with sheet).\n// TODO(burdon): Different section types (value, query, expression, prompt).\n// TODO(burdon): Display errors.\n// TODO(burdon): Allow moving cursor between sections (CMD Up/Down).\n\ntype NotebookSectionProps = {\n cell: Notebook.Cell;\n graph?: ComputeGraph;\n onCellInsert?: (after: string | undefined) => void;\n onCellDelete?: (id: string) => void;\n} & Pick<TypescriptEditorProps, 'env'>;\n\nconst NotebookSection = ({ cell, graph, env, onCellInsert, onCellDelete }: NotebookSectionProps) => {\n const { t } = useTranslation(meta.id);\n const extensions = useMemo(() => {\n return cell.script.target\n ? [createDataExtensions({ id: cell.id, text: createDocAccessor(cell.script.target, ['content']) })]\n : [];\n }, [cell.script.target]);\n\n const name = graph?.expressions.value[cell.id]?.name;\n const value = graph?.values.value[cell.id];\n\n return (\n <StackItem.Root role='section' item={cell}>\n <StackItem.Heading classNames='attention-surface'>\n <StackItem.HeadingStickyContent>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <StackItem.SigilButton>\n <Icon icon='ph--list--regular' size={5} />\n </StackItem.SigilButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>\n <DropdownMenu.Item onClick={() => onCellInsert?.(cell.id)}>\n {t('notebook cell insert label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onCellDelete?.(cell.id)}>\n {t('notebook cell delete label')}\n </DropdownMenu.Item>\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n </StackItem.HeadingStickyContent>\n </StackItem.Heading>\n\n <StackItem.Content>\n <TypescriptEditor\n id={cell.id}\n role='section'\n initialValue={cell.script.target?.content}\n extensions={extensions}\n env={env}\n options={{\n placeholder: t('notebook cell placeholder'),\n highlightActiveLine: false,\n lineNumbers: false,\n }}\n classNames='p-2 pbs-3'\n />\n\n {value != null && (\n <div className='flex p-2 bg-groupSurface border-t border-subduedSeparator text-description font-mono'>\n {name && (\n <>\n <span className='text-successText'>{name}</span>\n <span className='text-description'> = </span>\n </>\n )}\n <span>{value}</span>\n </div>\n )}\n </StackItem.Content>\n </StackItem.Root>\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;AAIA,OAAOA,SAASC,eAAe;AAE/B,SAASC,yBAAyB;AAClC,SAASC,cAAcC,MAAMC,sBAAsB;AACnD,SAASC,4BAA4B;AACrC,SAASC,OAAOC,iBAAiB;AAc1B,IAAMC,gBAAgB,CAAC,EAAEC,UAAU,GAAGC,MAAAA,MAA2B;;;AACtE,WACE,sBAAA,cAACC,OAAAA;MAAMC,aAAY;MAAWC,MAAK;MAAUC,MAAAA;OAC1CL,UAAUM,MAAMC,IAAI,CAACC,MAAMC,MAC1B,sBAAA,cAACC,iBAAAA;MAAgBC,KAAKF;MAAGD;MAAa,GAAGP;;;;;AAIjD;AAcA,IAAMS,kBAAkB,CAAC,EAAEF,MAAMI,OAAOC,KAAKC,cAAcC,aAAY,MAAwB;;;AAC7F,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,UAAMC,aAAaC,QAAQ,MAAA;AACzB,aAAOb,KAAKc,OAAOC,SACf;QAACC,qBAAqB;UAAEL,IAAIX,KAAKW;UAAIM,MAAMC,kBAAkBlB,KAAKc,OAAOC,QAAQ;YAAC;WAAU;QAAE,CAAA;UAC9F,CAAA;IACN,GAAG;MAACf,KAAKc,OAAOC;KAAO;AAEvB,UAAMI,OAAOf,OAAOgB,YAAYC,MAAMrB,KAAKW,EAAE,GAAGQ;AAChD,UAAME,QAAQjB,OAAOkB,OAAOD,MAAMrB,KAAKW,EAAE;AAEzC,WACE,sBAAA,cAACY,UAAUC,MAAI;MAACC,MAAK;MAAUC,MAAM1B;OACnC,sBAAA,cAACuB,UAAUI,SAAO;MAACC,YAAW;OAC5B,sBAAA,cAACL,UAAUM,sBAAoB,MAC7B,sBAAA,cAACC,aAAaN,MAAI,MAChB,sBAAA,cAACM,aAAaC,SAAO;MAACC,SAAAA;OACpB,sBAAA,cAACT,UAAUU,aAAW,MACpB,sBAAA,cAACC,MAAAA;MAAKC,MAAK;MAAoBvC,MAAM;UAGzC,sBAAA,cAACkC,aAAaM,QAAM,MAClB,sBAAA,cAACN,aAAaO,SAAO,MACnB,sBAAA,cAACP,aAAaQ,UAAQ,MACpB,sBAAA,cAACR,aAAaS,MAAI;MAACC,SAAS,MAAMlC,eAAeN,KAAKW,EAAE;OACrDH,EAAE,4BAAA,CAAA,GAEL,sBAAA,cAACsB,aAAaS,MAAI;MAACC,SAAS,MAAMjC,eAAeP,KAAKW,EAAE;OACrDH,EAAE,4BAAA,CAAA,CAAA,GAGP,sBAAA,cAACsB,aAAaW,OAAK,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAO7B,sBAAA,cAAClB,UAAUc,SAAO,MAChB,sBAAA,cAACK,kBAAAA;MACC/B,IAAIX,KAAKW;MACTc,MAAK;MACLkB,cAAc3C,KAAKc,OAAOC,QAAQ6B;MAClChC;MACAP;MACAwC,SAAS;QACPC,aAAatC,EAAE,2BAAA;QACfuC,qBAAqB;QACrBC,aAAa;MACf;MACApB,YAAW;QAGZP,SAAS,QACR,sBAAA,cAAC4B,OAAAA;MAAIC,WAAU;OACZ/B,QACC,sBAAA,cAAA,MAAA,UAAA,MACE,sBAAA,cAACgC,QAAAA;MAAKD,WAAU;OAAoB/B,IAAAA,GACpC,sBAAA,cAACgC,QAAAA;MAAKD,WAAU;OAAmB,WAAA,CAAA,GAGvC,sBAAA,cAACC,QAAAA,MAAM9B,KAAAA,CAAAA,CAAAA,CAAAA;;;;AAMnB;",
|
|
6
|
+
"names": ["React", "useMemo", "createDocAccessor", "DropdownMenu", "Icon", "useTranslation", "createDataExtensions", "Stack", "StackItem", "NotebookStack", "notebook", "props", "Stack", "orientation", "size", "rail", "cells", "map", "cell", "i", "NotebookSection", "key", "graph", "env", "onCellInsert", "onCellDelete", "t", "useTranslation", "meta", "id", "extensions", "useMemo", "script", "target", "createDataExtensions", "text", "createDocAccessor", "name", "expressions", "value", "values", "StackItem", "Root", "role", "item", "Heading", "classNames", "HeadingStickyContent", "DropdownMenu", "Trigger", "asChild", "SigilButton", "Icon", "icon", "Portal", "Content", "Viewport", "Item", "onClick", "Arrow", "TypescriptEditor", "initialValue", "content", "options", "placeholder", "highlightActiveLine", "lineNumbers", "div", "className", "span"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// src/components/TypescriptEditor/TypescriptEditor.tsx
|
|
2
|
+
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
3
|
+
import { autocompletion, completionKeymap } from "@codemirror/autocomplete";
|
|
4
|
+
import { javascript } from "@codemirror/lang-javascript";
|
|
5
|
+
import { HighlightStyle } from "@codemirror/language";
|
|
6
|
+
import { lintKeymap } from "@codemirror/lint";
|
|
7
|
+
import { Prec } from "@codemirror/state";
|
|
8
|
+
import { keymap } from "@codemirror/view";
|
|
9
|
+
import { tags } from "@lezer/highlight";
|
|
10
|
+
import { continueKeymap } from "@valtown/codemirror-continue";
|
|
11
|
+
import { tsAutocomplete, tsFacet, tsHover, tsLinter, tsSync } from "@valtown/codemirror-ts";
|
|
12
|
+
import React from "react";
|
|
13
|
+
import { Domino, useThemeContext } from "@dxos/react-ui";
|
|
14
|
+
import { InputModeExtensions, createBasicExtensions, createThemeExtensions, defaultStyles, useTextEditor } from "@dxos/react-ui-editor";
|
|
15
|
+
import { mx } from "@dxos/react-ui-theme";
|
|
16
|
+
import { isNonNullable } from "@dxos/util";
|
|
17
|
+
var TypescriptEditor = ({ classNames, id, role = "article", inputMode = "vscode", toolbar, env, options, initialValue, extensions, scrollTo, selection }) => {
|
|
18
|
+
var _effect = _useSignals();
|
|
19
|
+
try {
|
|
20
|
+
const { themeMode } = useThemeContext();
|
|
21
|
+
const { parentRef, focusAttributes } = useTextEditor(() => ({
|
|
22
|
+
id,
|
|
23
|
+
initialValue,
|
|
24
|
+
selection,
|
|
25
|
+
scrollTo,
|
|
26
|
+
extensions: [
|
|
27
|
+
extensions,
|
|
28
|
+
createBasicExtensions({
|
|
29
|
+
highlightActiveLine: true,
|
|
30
|
+
indentWithTab: true,
|
|
31
|
+
lineNumbers: true,
|
|
32
|
+
lineWrapping: false,
|
|
33
|
+
monospace: true,
|
|
34
|
+
scrollPastEnd: role !== "section",
|
|
35
|
+
search: true,
|
|
36
|
+
...options
|
|
37
|
+
}),
|
|
38
|
+
createThemeExtensions({
|
|
39
|
+
themeMode,
|
|
40
|
+
syntaxHighlighting: true
|
|
41
|
+
}),
|
|
42
|
+
InputModeExtensions[inputMode],
|
|
43
|
+
javascript({
|
|
44
|
+
typescript: true
|
|
45
|
+
}),
|
|
46
|
+
autocompletion({
|
|
47
|
+
override: env ? [
|
|
48
|
+
tsAutocomplete()
|
|
49
|
+
] : void 0
|
|
50
|
+
}),
|
|
51
|
+
// Continues block comments when pressing Enter.
|
|
52
|
+
Prec.high(keymap.of(continueKeymap)),
|
|
53
|
+
keymap.of(completionKeymap),
|
|
54
|
+
keymap.of(lintKeymap),
|
|
55
|
+
// https://github.com/val-town/codemirror-ts
|
|
56
|
+
env && [
|
|
57
|
+
tsFacet.of({
|
|
58
|
+
env,
|
|
59
|
+
path: `/src/${id}.ts`
|
|
60
|
+
}),
|
|
61
|
+
tsSync(),
|
|
62
|
+
tsLinter(),
|
|
63
|
+
tsHover({
|
|
64
|
+
renderTooltip: createTooltipRenderer(themeMode)
|
|
65
|
+
})
|
|
66
|
+
]
|
|
67
|
+
].filter(isNonNullable)
|
|
68
|
+
}), [
|
|
69
|
+
id,
|
|
70
|
+
extensions,
|
|
71
|
+
themeMode,
|
|
72
|
+
inputMode,
|
|
73
|
+
selection,
|
|
74
|
+
scrollTo
|
|
75
|
+
]);
|
|
76
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
77
|
+
ref: parentRef,
|
|
78
|
+
"data-toolbar": toolbar ? "enabled" : "disabled",
|
|
79
|
+
className: mx(classNames),
|
|
80
|
+
...focusAttributes
|
|
81
|
+
});
|
|
82
|
+
} finally {
|
|
83
|
+
_effect.f();
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
var createTooltipRenderer = (themeMode) => {
|
|
87
|
+
const theme = HighlightStyle.define(themeMode === "dark" ? defaultStyles.dark : defaultStyles.light);
|
|
88
|
+
const classFromKind = (_kind) => {
|
|
89
|
+
const kind = _kind.endsWith("Name") ? "name" : _kind;
|
|
90
|
+
const validTag = kind in tags;
|
|
91
|
+
if (!validTag) {
|
|
92
|
+
return "";
|
|
93
|
+
}
|
|
94
|
+
const tag = tags[kind];
|
|
95
|
+
if (typeof tag === "function") {
|
|
96
|
+
return "";
|
|
97
|
+
}
|
|
98
|
+
return theme.style([
|
|
99
|
+
tag
|
|
100
|
+
]) ?? "";
|
|
101
|
+
};
|
|
102
|
+
return (info) => {
|
|
103
|
+
return {
|
|
104
|
+
dom: Domino.of("div").classNames("xs:max-is-80 max-is-lg p-1 bg-baseSurface rounded border border-separator").children(...info.quickInfo?.displayParts?.map(({ kind, text }) => Domino.of("span").classNames(classFromKind(kind)).text(text)) ?? []).build()
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
export {
|
|
110
|
+
TypescriptEditor
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=chunk-N6M34EUC.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/TypescriptEditor/TypescriptEditor.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { autocompletion, completionKeymap } from '@codemirror/autocomplete';\nimport { javascript } from '@codemirror/lang-javascript';\nimport { HighlightStyle } from '@codemirror/language';\nimport { lintKeymap } from '@codemirror/lint';\nimport { Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { tags } from '@lezer/highlight';\nimport { type VirtualTypeScriptEnvironment } from '@typescript/vfs';\nimport { continueKeymap } from '@valtown/codemirror-continue';\nimport { type HoverInfo, tsAutocomplete, tsFacet, tsHover, tsLinter, tsSync } from '@valtown/codemirror-ts';\nimport React from 'react';\n\nimport { Domino, type ThemeMode, type ThemedClassName, useThemeContext } from '@dxos/react-ui';\nimport {\n type BasicExtensionsOptions,\n type EditorInputMode,\n InputModeExtensions,\n type UseTextEditorProps,\n createBasicExtensions,\n createThemeExtensions,\n defaultStyles,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nexport type TypescriptEditorProps = ThemedClassName<\n {\n id: string;\n role?: string;\n inputMode?: EditorInputMode;\n toolbar?: boolean;\n env?: VirtualTypeScriptEnvironment;\n options?: BasicExtensionsOptions;\n } & Pick<UseTextEditorProps, 'initialValue' | 'extensions' | 'scrollTo' | 'selection'>\n>;\n\nexport const TypescriptEditor = ({\n classNames,\n id,\n role = 'article',\n inputMode = 'vscode',\n toolbar,\n env,\n options,\n initialValue,\n extensions,\n scrollTo,\n selection,\n}: TypescriptEditorProps) => {\n const { themeMode } = useThemeContext();\n const { parentRef, focusAttributes } = useTextEditor(\n () => ({\n id,\n initialValue,\n selection,\n scrollTo,\n extensions: [\n extensions,\n createBasicExtensions({\n highlightActiveLine: true,\n indentWithTab: true,\n lineNumbers: true,\n lineWrapping: false,\n monospace: true,\n scrollPastEnd: role !== 'section',\n search: true,\n ...options,\n }),\n createThemeExtensions({ themeMode, syntaxHighlighting: true }),\n InputModeExtensions[inputMode],\n\n javascript({ typescript: true }),\n autocompletion({ override: env ? [tsAutocomplete()] : undefined }),\n\n // Continues block comments when pressing Enter.\n Prec.high(keymap.of(continueKeymap)),\n keymap.of(completionKeymap),\n keymap.of(lintKeymap),\n\n // https://github.com/val-town/codemirror-ts\n env && [\n tsFacet.of({ env, path: `/src/${id}.ts` }),\n tsSync(),\n tsLinter(),\n tsHover({ renderTooltip: createTooltipRenderer(themeMode) }),\n ],\n ].filter(isNonNullable),\n }),\n [id, extensions, themeMode, inputMode, selection, scrollTo],\n );\n\n // TODO(brudon): Use react-ui-editor's Editor component.\n return (\n <div\n ref={parentRef}\n data-toolbar={toolbar ? 'enabled' : 'disabled'}\n className={mx(classNames)}\n {...focusAttributes}\n />\n );\n};\n\n// TODO(burdon): Factor out (react-ui-editor).\nconst createTooltipRenderer = (themeMode: ThemeMode) => {\n const theme = HighlightStyle.define(themeMode === 'dark' ? defaultStyles.dark : defaultStyles.light);\n\n const classFromKind = (_kind: string) => {\n // E.g., localName, methodName, parameterName, etc.\n const kind = _kind.endsWith('Name') ? 'name' : _kind;\n const validTag = kind in tags;\n if (!validTag) {\n return '';\n }\n\n const tag = tags[kind as keyof typeof tags];\n if (typeof tag === 'function') {\n return '';\n }\n\n return theme.style([tag]) ?? '';\n };\n\n return (info: HoverInfo) => {\n return {\n dom: Domino.of('div')\n .classNames('xs:max-is-80 max-is-lg p-1 bg-baseSurface rounded border border-separator')\n .children(\n ...(info.quickInfo?.displayParts?.map(({ kind, text }) =>\n Domino.of('span').classNames(classFromKind(kind)).text(text),\n ) ?? []),\n )\n .build(),\n };\n };\n};\n\nexport default TypescriptEditor;\n"],
|
|
5
|
+
"mappings": ";;AAIA,SAASA,gBAAgBC,wBAAwB;AACjD,SAASC,kBAAkB;AAC3B,SAASC,sBAAsB;AAC/B,SAASC,kBAAkB;AAC3B,SAASC,YAAY;AACrB,SAASC,cAAc;AACvB,SAASC,YAAY;AAErB,SAASC,sBAAsB;AAC/B,SAAyBC,gBAAgBC,SAASC,SAASC,UAAUC,cAAc;AACnF,OAAOC,WAAW;AAElB,SAASC,QAA8CC,uBAAuB;AAC9E,SAGEC,qBAEAC,uBACAC,uBACAC,eACAC,qBACK;AACP,SAASC,UAAU;AACnB,SAASC,qBAAqB;AAavB,IAAMC,mBAAmB,CAAC,EAC/BC,YACAC,IACAC,OAAO,WACPC,YAAY,UACZC,SACAC,KACAC,SACAC,cACAC,YACAC,UACAC,UAAS,MACa;;;AACtB,UAAM,EAAEC,UAAS,IAAKC,gBAAAA;AACtB,UAAM,EAAEC,WAAWC,gBAAe,IAAKC,cACrC,OAAO;MACLd;MACAM;MACAG;MACAD;MACAD,YAAY;QACVA;QACAQ,sBAAsB;UACpBC,qBAAqB;UACrBC,eAAe;UACfC,aAAa;UACbC,cAAc;UACdC,WAAW;UACXC,eAAepB,SAAS;UACxBqB,QAAQ;UACR,GAAGjB;QACL,CAAA;QACAkB,sBAAsB;UAAEb;UAAWc,oBAAoB;QAAK,CAAA;QAC5DC,oBAAoBvB,SAAAA;QAEpBwB,WAAW;UAAEC,YAAY;QAAK,CAAA;QAC9BC,eAAe;UAAEC,UAAUzB,MAAM;YAAC0B,eAAAA;cAAoBC;QAAU,CAAA;;QAGhEC,KAAKC,KAAKC,OAAOC,GAAGC,cAAAA,CAAAA;QACpBF,OAAOC,GAAGE,gBAAAA;QACVH,OAAOC,GAAGG,UAAAA;;QAGVlC,OAAO;UACLmC,QAAQJ,GAAG;YAAE/B;YAAKoC,MAAM,QAAQxC,EAAAA;UAAQ,CAAA;UACxCyC,OAAAA;UACAC,SAAAA;UACAC,QAAQ;YAAEC,eAAeC,sBAAsBnC,SAAAA;UAAW,CAAA;;QAE5DoC,OAAOC,aAAAA;IACX,IACA;MAAC/C;MAAIO;MAAYG;MAAWR;MAAWO;MAAWD;KAAS;AAI7D,WACE,sBAAA,cAACwC,OAAAA;MACCC,KAAKrC;MACLsC,gBAAc/C,UAAU,YAAY;MACpCgD,WAAWC,GAAGrD,UAAAA;MACb,GAAGc;;;;;AAGV;AAGA,IAAMgC,wBAAwB,CAACnC,cAAAA;AAC7B,QAAM2C,QAAQC,eAAeC,OAAO7C,cAAc,SAAS8C,cAAcC,OAAOD,cAAcE,KAAK;AAEnG,QAAMC,gBAAgB,CAACC,UAAAA;AAErB,UAAMC,OAAOD,MAAME,SAAS,MAAA,IAAU,SAASF;AAC/C,UAAMG,WAAWF,QAAQG;AACzB,QAAI,CAACD,UAAU;AACb,aAAO;IACT;AAEA,UAAME,MAAMD,KAAKH,IAAAA;AACjB,QAAI,OAAOI,QAAQ,YAAY;AAC7B,aAAO;IACT;AAEA,WAAOZ,MAAMa,MAAM;MAACD;KAAI,KAAK;EAC/B;AAEA,SAAO,CAACE,SAAAA;AACN,WAAO;MACLC,KAAKC,OAAOlC,GAAG,KAAA,EACZpC,WAAW,2EAAA,EACXuE,SAAQ,GACHH,KAAKI,WAAWC,cAAcC,IAAI,CAAC,EAAEZ,MAAMa,KAAI,MACjDL,OAAOlC,GAAG,MAAA,EAAQpC,WAAW4D,cAAcE,IAAAA,CAAAA,EAAOa,KAAKA,IAAAA,CAAAA,KACpD,CAAA,CAAE,EAERC,MAAK;IACV;EACF;AACF;",
|
|
6
|
+
"names": ["autocompletion", "completionKeymap", "javascript", "HighlightStyle", "lintKeymap", "Prec", "keymap", "tags", "continueKeymap", "tsAutocomplete", "tsFacet", "tsHover", "tsLinter", "tsSync", "React", "Domino", "useThemeContext", "InputModeExtensions", "createBasicExtensions", "createThemeExtensions", "defaultStyles", "useTextEditor", "mx", "isNonNullable", "TypescriptEditor", "classNames", "id", "role", "inputMode", "toolbar", "env", "options", "initialValue", "extensions", "scrollTo", "selection", "themeMode", "useThemeContext", "parentRef", "focusAttributes", "useTextEditor", "createBasicExtensions", "highlightActiveLine", "indentWithTab", "lineNumbers", "lineWrapping", "monospace", "scrollPastEnd", "search", "createThemeExtensions", "syntaxHighlighting", "InputModeExtensions", "javascript", "typescript", "autocompletion", "override", "tsAutocomplete", "undefined", "Prec", "high", "keymap", "of", "continueKeymap", "completionKeymap", "lintKeymap", "tsFacet", "path", "tsSync", "tsLinter", "tsHover", "renderTooltip", "createTooltipRenderer", "filter", "isNonNullable", "div", "ref", "data-toolbar", "className", "mx", "theme", "HighlightStyle", "define", "defaultStyles", "dark", "light", "classFromKind", "_kind", "kind", "endsWith", "validTag", "tags", "tag", "style", "info", "dom", "Domino", "children", "quickInfo", "displayParts", "map", "text", "build"]
|
|
7
|
+
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useCreateAndDeployScriptTemplates
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ETFBQURU.mjs";
|
|
4
4
|
import {
|
|
5
|
-
|
|
6
|
-
} from "./chunk-
|
|
5
|
+
meta
|
|
6
|
+
} from "./chunk-EZVXV6DA.mjs";
|
|
7
7
|
|
|
8
8
|
// src/components/DeploymentDialog/DeploymentDialog.tsx
|
|
9
9
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
10
10
|
import React, { useEffect, useMemo } from "react";
|
|
11
|
-
import {
|
|
11
|
+
import { LayoutAction, createIntent, useIntentDispatcher } from "@dxos/app-framework";
|
|
12
12
|
import { getSpace } from "@dxos/react-client/echo";
|
|
13
13
|
import { Button, Dialog, Icon, useTranslation } from "@dxos/react-ui";
|
|
14
|
-
var DEPLOYMENT_DIALOG = `${
|
|
14
|
+
var DEPLOYMENT_DIALOG = `${meta.id}/deployment/dialog`;
|
|
15
15
|
var DeploymentDialog = ({ accessToken, scriptTemplates }) => {
|
|
16
16
|
var _effect = _useSignals();
|
|
17
17
|
try {
|
|
18
|
-
const { t } = useTranslation(
|
|
18
|
+
const { t } = useTranslation(meta.id);
|
|
19
19
|
const space = useMemo(() => getSpace(accessToken), [
|
|
20
20
|
accessToken
|
|
21
21
|
]);
|
|
@@ -26,27 +26,27 @@ var DeploymentDialog = ({ accessToken, scriptTemplates }) => {
|
|
|
26
26
|
void dispatch(createIntent(LayoutAction.AddToast, {
|
|
27
27
|
part: "toast",
|
|
28
28
|
subject: {
|
|
29
|
-
id: `${
|
|
29
|
+
id: `${meta.id}/deployment-success`,
|
|
30
30
|
icon: "ph--check--regular",
|
|
31
31
|
duration: Infinity,
|
|
32
32
|
title: [
|
|
33
33
|
"script deployment toast label",
|
|
34
34
|
{
|
|
35
|
-
ns:
|
|
35
|
+
ns: meta.id,
|
|
36
36
|
count: scriptTemplates.length
|
|
37
37
|
}
|
|
38
38
|
],
|
|
39
39
|
description: [
|
|
40
40
|
"script deployment toast description",
|
|
41
41
|
{
|
|
42
|
-
ns:
|
|
42
|
+
ns: meta.id,
|
|
43
43
|
count: scriptTemplates.length
|
|
44
44
|
}
|
|
45
45
|
],
|
|
46
46
|
closeLabel: [
|
|
47
47
|
"script deployment toast close label",
|
|
48
48
|
{
|
|
49
|
-
ns:
|
|
49
|
+
ns: meta.id,
|
|
50
50
|
count: scriptTemplates.length
|
|
51
51
|
}
|
|
52
52
|
]
|
|
@@ -69,27 +69,27 @@ var DeploymentDialog = ({ accessToken, scriptTemplates }) => {
|
|
|
69
69
|
void dispatch(createIntent(LayoutAction.AddToast, {
|
|
70
70
|
part: "toast",
|
|
71
71
|
subject: {
|
|
72
|
-
id: `${
|
|
72
|
+
id: `${meta.id}/deployment-error`,
|
|
73
73
|
icon: "ph--warning--regular",
|
|
74
74
|
duration: Infinity,
|
|
75
75
|
title: [
|
|
76
76
|
"script deployment error toast label",
|
|
77
77
|
{
|
|
78
|
-
ns:
|
|
78
|
+
ns: meta.id,
|
|
79
79
|
count: scriptTemplates.length
|
|
80
80
|
}
|
|
81
81
|
],
|
|
82
82
|
description: [
|
|
83
83
|
"script deployment error toast description",
|
|
84
84
|
{
|
|
85
|
-
ns:
|
|
85
|
+
ns: meta.id,
|
|
86
86
|
count: scriptTemplates.length
|
|
87
87
|
}
|
|
88
88
|
],
|
|
89
89
|
closeLabel: [
|
|
90
90
|
"script deployment error toast close label",
|
|
91
91
|
{
|
|
92
|
-
ns:
|
|
92
|
+
ns: meta.id,
|
|
93
93
|
count: scriptTemplates.length
|
|
94
94
|
}
|
|
95
95
|
]
|
|
@@ -150,4 +150,4 @@ export {
|
|
|
150
150
|
DEPLOYMENT_DIALOG,
|
|
151
151
|
DeploymentDialog_default
|
|
152
152
|
};
|
|
153
|
-
//# sourceMappingURL=chunk-
|
|
153
|
+
//# sourceMappingURL=chunk-NNYSARXK.mjs.map
|