@dxos/plugin-script 0.8.1-main.ba2dec9 → 0.8.1-staging.31c3ee1
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-AEPYJKPO.mjs +12 -0
- package/dist/lib/browser/DeploymentDialog-AEPYJKPO.mjs.map +7 -0
- package/dist/lib/browser/{ScriptContainer-AIBCQZ7S.mjs → ScriptContainer-R25PRK2D.mjs} +28 -40
- package/dist/lib/browser/ScriptContainer-R25PRK2D.mjs.map +7 -0
- package/dist/lib/browser/app-graph-builder-RRLY67QC.mjs +64 -0
- package/dist/lib/browser/app-graph-builder-RRLY67QC.mjs.map +7 -0
- package/dist/lib/browser/{artifact-definition-GTL3ZSF2.mjs → artifact-definition-WXFYD2V5.mjs} +10 -9
- package/dist/lib/browser/artifact-definition-WXFYD2V5.mjs.map +7 -0
- package/dist/lib/browser/{chunk-5RZVHFGR.mjs → chunk-2CGZFDCR.mjs} +290 -277
- package/dist/lib/browser/chunk-2CGZFDCR.mjs.map +7 -0
- package/dist/lib/browser/chunk-4VD3K3PY.mjs +15 -0
- package/dist/lib/browser/{chunk-6MOQ4BP3.mjs.map → chunk-4VD3K3PY.mjs.map} +3 -3
- package/dist/lib/browser/chunk-CSZXPLYY.mjs +147 -0
- package/dist/lib/browser/chunk-CSZXPLYY.mjs.map +7 -0
- package/dist/lib/browser/chunk-KLEOGVXY.mjs +352 -0
- package/dist/lib/browser/chunk-KLEOGVXY.mjs.map +7 -0
- package/dist/lib/browser/chunk-MQZQB5VD.mjs +233 -0
- package/dist/lib/browser/chunk-MQZQB5VD.mjs.map +7 -0
- package/dist/lib/browser/{chunk-JL34HAEL.mjs → chunk-R2CHVWJ2.mjs} +5 -4
- package/dist/lib/browser/chunk-R2CHVWJ2.mjs.map +7 -0
- package/dist/lib/browser/chunk-SUCBNCEQ.mjs +87 -0
- package/dist/lib/browser/chunk-SUCBNCEQ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-FVVCAWNP.mjs → chunk-WSK3YQXI.mjs} +9 -3
- package/dist/lib/browser/chunk-WSK3YQXI.mjs.map +7 -0
- package/dist/lib/browser/{compiler-YY2XSKHQ.mjs → compiler-56LTBEQB.mjs} +7 -7
- package/dist/lib/browser/index.mjs +65 -61
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/intent-resolver-WCVXKRBR.mjs +90 -0
- package/dist/lib/browser/intent-resolver-WCVXKRBR.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-surface-WXZVPNGI.mjs +117 -0
- package/dist/lib/browser/react-surface-WXZVPNGI.mjs.map +7 -0
- package/dist/lib/browser/{settings-HIWURVAS.mjs → settings-Z7B37V2I.mjs} +6 -6
- package/dist/lib/browser/{settings-HIWURVAS.mjs.map → settings-Z7B37V2I.mjs.map} +3 -3
- package/dist/lib/browser/types.mjs +5 -2
- package/dist/lib/node/DeploymentDialog-O4MU4OMF.cjs +33 -0
- package/dist/lib/node/DeploymentDialog-O4MU4OMF.cjs.map +7 -0
- package/dist/lib/node/{ScriptContainer-ZYVN7ZW6.cjs → ScriptContainer-5KY6ZOQD.cjs} +31 -41
- package/dist/lib/node/ScriptContainer-5KY6ZOQD.cjs.map +7 -0
- package/dist/lib/node/app-graph-builder-6I2BWD46.cjs +80 -0
- package/dist/lib/node/app-graph-builder-6I2BWD46.cjs.map +7 -0
- package/dist/lib/node/{artifact-definition-64KZC4UT.cjs → artifact-definition-6NVXEHJD.cjs} +16 -15
- package/dist/lib/node/artifact-definition-6NVXEHJD.cjs.map +7 -0
- package/dist/lib/node/chunk-65MIJR3Q.cjs +173 -0
- package/dist/lib/node/chunk-65MIJR3Q.cjs.map +7 -0
- package/dist/lib/node/chunk-F4DP7WON.cjs +372 -0
- package/dist/lib/node/chunk-F4DP7WON.cjs.map +7 -0
- package/dist/lib/node/{chunk-ALY3N6PW.cjs → chunk-JICWAOWZ.cjs} +6 -6
- package/dist/lib/node/{chunk-ALY3N6PW.cjs.map → chunk-JICWAOWZ.cjs.map} +3 -3
- package/dist/lib/node/{chunk-PTXU7QFZ.cjs → chunk-SLDJM45C.cjs} +286 -272
- package/dist/lib/node/chunk-SLDJM45C.cjs.map +7 -0
- package/dist/lib/node/chunk-VYBEBLDO.cjs +251 -0
- package/dist/lib/node/chunk-VYBEBLDO.cjs.map +7 -0
- package/dist/lib/node/chunk-X7MHLHHS.cjs +91 -0
- package/dist/lib/node/chunk-X7MHLHHS.cjs.map +7 -0
- package/dist/lib/node/{chunk-VJ73IG7P.cjs → chunk-XFZPWFEG.cjs} +8 -7
- package/dist/lib/node/chunk-XFZPWFEG.cjs.map +7 -0
- package/dist/lib/node/{chunk-5UH3F7TA.cjs → chunk-YJQZHKKA.cjs} +11 -4
- package/dist/lib/node/chunk-YJQZHKKA.cjs.map +7 -0
- package/dist/lib/node/{compiler-UIBLKJKG.cjs → compiler-W2RU3M7U.cjs} +8 -8
- package/dist/lib/node/index.cjs +75 -71
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/intent-resolver-J4NBDNFH.cjs +100 -0
- package/dist/lib/node/intent-resolver-J4NBDNFH.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/react-surface-27KTUBIZ.cjs +129 -0
- package/dist/lib/node/react-surface-27KTUBIZ.cjs.map +7 -0
- package/dist/lib/node/{settings-ZASSNBKR.cjs → settings-EI6VPNKN.cjs} +9 -9
- package/dist/lib/node/{settings-ZASSNBKR.cjs.map → settings-EI6VPNKN.cjs.map} +3 -3
- package/dist/lib/node/types.cjs +6 -4
- package/dist/lib/node/types.cjs.map +2 -2
- package/dist/lib/node-esm/DeploymentDialog-SSQSWLHX.mjs +13 -0
- package/dist/lib/node-esm/DeploymentDialog-SSQSWLHX.mjs.map +7 -0
- package/dist/lib/node-esm/{ScriptContainer-PI7PU5T7.mjs → ScriptContainer-W2F4FGDV.mjs} +28 -40
- package/dist/lib/node-esm/ScriptContainer-W2F4FGDV.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-builder-H5XLRVX3.mjs +65 -0
- package/dist/lib/node-esm/app-graph-builder-H5XLRVX3.mjs.map +7 -0
- package/dist/lib/node-esm/{artifact-definition-SF46QOO7.mjs → artifact-definition-KQ64AYBP.mjs} +10 -9
- package/dist/lib/node-esm/artifact-definition-KQ64AYBP.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-AXFGQDAD.mjs → chunk-4MTPYMV2.mjs} +290 -277
- package/dist/lib/node-esm/chunk-4MTPYMV2.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-CP5LXTK5.mjs → chunk-EB5DSAD4.mjs} +5 -5
- package/dist/lib/node-esm/{chunk-CP5LXTK5.mjs.map → chunk-EB5DSAD4.mjs.map} +3 -3
- package/dist/lib/node-esm/chunk-F4HA5C34.mjs +234 -0
- package/dist/lib/node-esm/chunk-F4HA5C34.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-P2V2Y5LV.mjs → chunk-FDEAVT67.mjs} +9 -3
- package/dist/lib/node-esm/chunk-FDEAVT67.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-MU3JKVL2.mjs +148 -0
- package/dist/lib/node-esm/chunk-MU3JKVL2.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-PBGVTGL2.mjs +353 -0
- package/dist/lib/node-esm/chunk-PBGVTGL2.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-QDYGTY4L.mjs +89 -0
- package/dist/lib/node-esm/chunk-QDYGTY4L.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-FHQKFLM7.mjs → chunk-RW2APVMV.mjs} +5 -4
- package/dist/lib/node-esm/chunk-RW2APVMV.mjs.map +7 -0
- package/dist/lib/node-esm/{compiler-XTXFGZJM.mjs → compiler-VT5C2Z3T.mjs} +7 -7
- package/dist/lib/node-esm/index.mjs +65 -61
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/intent-resolver-PDZ2A26X.mjs +91 -0
- package/dist/lib/node-esm/intent-resolver-PDZ2A26X.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react-surface-UCUVDVSH.mjs +118 -0
- package/dist/lib/node-esm/react-surface-UCUVDVSH.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-FDGLXN4I.mjs → settings-HU5UEFRF.mjs} +6 -6
- package/dist/lib/node-esm/{settings-FDGLXN4I.mjs.map → settings-HU5UEFRF.mjs.map} +3 -3
- package/dist/lib/node-esm/types.mjs +5 -2
- package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +181 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +178 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +11 -0
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -0
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +18 -0
- package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -0
- package/dist/types/src/components/DeploymentDialog/index.d.ts +4 -0
- package/dist/types/src/components/DeploymentDialog/index.d.ts.map +1 -0
- package/dist/types/src/components/ScriptContainer.d.ts +3 -3
- 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/Settings/ScriptObjectSettings.d.ts +8 -0
- package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -0
- package/dist/types/src/components/{ScriptSettings/ScriptSettings.d.ts → Settings/ScriptPluginSettings.d.ts} +2 -2
- package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -0
- package/dist/types/src/components/Settings/index.d.ts +3 -0
- package/dist/types/src/components/Settings/index.d.ts.map +1 -0
- package/dist/types/src/components/TestPanel/TestPanel.d.ts +7 -0
- package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -0
- package/dist/types/src/components/TestPanel/index.d.ts +2 -0
- package/dist/types/src/components/TestPanel/index.d.ts.map +1 -0
- package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +8 -5
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/hooks/deploy.d.ts +16 -12
- package/dist/types/src/hooks/deploy.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +1 -1
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts +17 -0
- package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -0
- package/dist/types/src/hooks/useToolbarAction.d.ts +2 -3
- package/dist/types/src/hooks/useToolbarAction.d.ts.map +1 -1
- package/dist/types/src/hooks/useToolbarState.d.ts +2 -8
- package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +3 -9
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/templates/chess.d.ts.map +1 -1
- package/dist/types/src/templates/data-generator.d.ts +10 -0
- package/dist/types/src/templates/data-generator.d.ts.map +1 -0
- package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
- package/dist/types/src/templates/gmail.d.ts +3 -0
- package/dist/types/src/templates/gmail.d.ts.map +1 -0
- package/dist/types/src/templates/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +68 -21
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +12 -2
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/util/deploy.d.ts +25 -0
- package/dist/types/src/util/deploy.d.ts.map +1 -0
- package/dist/types/src/util/functions.d.ts +11 -0
- package/dist/types/src/util/functions.d.ts.map +1 -0
- package/dist/types/src/util/index.d.ts +3 -0
- package/dist/types/src/util/index.d.ts.map +1 -0
- package/package.json +51 -49
- package/src/ScriptPlugin.tsx +12 -17
- package/src/capabilities/app-graph-builder.ts +47 -0
- package/src/capabilities/artifact-definition.ts +2 -1
- package/src/capabilities/capabilities.ts +2 -2
- package/src/capabilities/index.ts +2 -1
- package/src/capabilities/intent-resolver.ts +39 -5
- package/src/capabilities/react-surface.tsx +64 -25
- package/src/capabilities/settings.ts +2 -2
- package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +39 -0
- package/src/components/DeploymentDialog/DeploymentDialog.tsx +112 -0
- package/src/components/DeploymentDialog/index.ts +9 -0
- package/src/components/ScriptContainer.tsx +21 -32
- package/src/components/ScriptToolbar/ScriptToolbar.tsx +3 -4
- package/src/components/{ScriptSettingsPanel.tsx → Settings/ScriptObjectSettings.tsx} +120 -102
- package/src/components/{ScriptSettings/ScriptSettings.tsx → Settings/ScriptPluginSettings.tsx} +3 -3
- package/src/components/Settings/index.ts +6 -0
- package/src/components/{DebugPanel/DebugPanel.tsx → TestPanel/TestPanel.tsx} +8 -14
- package/src/components/{LogsPanel → TestPanel}/index.ts +1 -1
- package/src/components/TypescriptEditor/TypescriptEditor.tsx +1 -0
- package/src/components/index.ts +4 -4
- package/src/hooks/deploy.ts +31 -81
- package/src/hooks/index.ts +1 -1
- package/src/hooks/useCreateAndDeployScriptTemplates.ts +59 -0
- package/src/hooks/useToolbarAction.ts +9 -13
- package/src/hooks/useToolbarState.ts +2 -2
- package/src/meta.ts +7 -2
- package/src/templates/chess.ts +4 -0
- package/src/templates/data-generator.ts +73 -0
- package/src/templates/discord.ts +1 -1
- package/src/templates/forex-effect.ts +2 -1
- package/src/templates/gmail.ts +244 -0
- package/src/templates/index.ts +14 -0
- package/src/translations.ts +28 -10
- package/src/types.ts +4 -0
- package/src/util/deploy.ts +126 -0
- package/src/util/functions.ts +53 -0
- package/src/util/index.ts +6 -0
- package/dist/lib/browser/ScriptContainer-AIBCQZ7S.mjs.map +0 -7
- package/dist/lib/browser/artifact-definition-GTL3ZSF2.mjs.map +0 -7
- package/dist/lib/browser/chunk-4SSKJNMZ.mjs +0 -69
- package/dist/lib/browser/chunk-4SSKJNMZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-5RZVHFGR.mjs.map +0 -7
- package/dist/lib/browser/chunk-5WPOWUPI.mjs +0 -542
- package/dist/lib/browser/chunk-5WPOWUPI.mjs.map +0 -7
- package/dist/lib/browser/chunk-6MOQ4BP3.mjs +0 -15
- package/dist/lib/browser/chunk-FVVCAWNP.mjs.map +0 -7
- package/dist/lib/browser/chunk-JL34HAEL.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-BJ76DBGE.mjs +0 -45
- package/dist/lib/browser/intent-resolver-BJ76DBGE.mjs.map +0 -7
- package/dist/lib/browser/react-surface-M4RD24IN.mjs +0 -79
- package/dist/lib/browser/react-surface-M4RD24IN.mjs.map +0 -7
- package/dist/lib/node/ScriptContainer-ZYVN7ZW6.cjs.map +0 -7
- package/dist/lib/node/artifact-definition-64KZC4UT.cjs.map +0 -7
- package/dist/lib/node/chunk-5UH3F7TA.cjs.map +0 -7
- package/dist/lib/node/chunk-B2O7H2AU.cjs +0 -564
- package/dist/lib/node/chunk-B2O7H2AU.cjs.map +0 -7
- package/dist/lib/node/chunk-PTXU7QFZ.cjs.map +0 -7
- package/dist/lib/node/chunk-VJ73IG7P.cjs.map +0 -7
- package/dist/lib/node/chunk-XCQNFRZ6.cjs +0 -77
- package/dist/lib/node/chunk-XCQNFRZ6.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-HQ3FGK2K.cjs +0 -59
- package/dist/lib/node/intent-resolver-HQ3FGK2K.cjs.map +0 -7
- package/dist/lib/node/react-surface-JDA5UZCC.cjs +0 -95
- package/dist/lib/node/react-surface-JDA5UZCC.cjs.map +0 -7
- package/dist/lib/node-esm/ScriptContainer-PI7PU5T7.mjs.map +0 -7
- package/dist/lib/node-esm/artifact-definition-SF46QOO7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-4YUSGXJ2.mjs +0 -71
- package/dist/lib/node-esm/chunk-4YUSGXJ2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AXFGQDAD.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FHQKFLM7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GLW67SM7.mjs +0 -543
- package/dist/lib/node-esm/chunk-GLW67SM7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-P2V2Y5LV.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-CDTQKQD4.mjs +0 -46
- package/dist/lib/node-esm/intent-resolver-CDTQKQD4.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-ODWVGWV4.mjs +0 -80
- package/dist/lib/node-esm/react-surface-ODWVGWV4.mjs.map +0 -7
- package/dist/types/src/components/DebugPanel/DebugPanel.d.ts +0 -7
- package/dist/types/src/components/DebugPanel/DebugPanel.d.ts.map +0 -1
- package/dist/types/src/components/DebugPanel/index.d.ts +0 -2
- package/dist/types/src/components/DebugPanel/index.d.ts.map +0 -1
- package/dist/types/src/components/LogsPanel/LogsPanel.d.ts +0 -8
- package/dist/types/src/components/LogsPanel/LogsPanel.d.ts.map +0 -1
- package/dist/types/src/components/LogsPanel/index.d.ts +0 -2
- package/dist/types/src/components/LogsPanel/index.d.ts.map +0 -1
- package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts.map +0 -1
- package/dist/types/src/components/ScriptSettings/index.d.ts +0 -2
- package/dist/types/src/components/ScriptSettings/index.d.ts.map +0 -1
- package/dist/types/src/components/ScriptSettingsPanel.d.ts +0 -7
- package/dist/types/src/components/ScriptSettingsPanel.d.ts.map +0 -1
- package/dist/types/src/hooks/view.d.ts +0 -33
- package/dist/types/src/hooks/view.d.ts.map +0 -1
- package/src/components/DebugPanel/index.ts +0 -5
- package/src/components/LogsPanel/LogsPanel.tsx +0 -111
- package/src/components/ScriptSettings/index.ts +0 -5
- package/src/hooks/view.ts +0 -52
- /package/dist/lib/browser/{compiler-YY2XSKHQ.mjs.map → compiler-56LTBEQB.mjs.map} +0 -0
- /package/dist/lib/node/{compiler-UIBLKJKG.cjs.map → compiler-W2RU3M7U.cjs.map} +0 -0
- /package/dist/lib/node-esm/{compiler-XTXFGZJM.mjs.map → compiler-VT5C2Z3T.mjs.map} +0 -0
package/src/ScriptPlugin.tsx
CHANGED
|
@@ -2,20 +2,23 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
// @ts-ignore
|
|
6
|
-
|
|
7
5
|
import { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';
|
|
8
6
|
import { ScriptType } from '@dxos/functions/types';
|
|
9
7
|
import { RefArray } from '@dxos/live-object';
|
|
10
8
|
import { ClientEvents } from '@dxos/plugin-client';
|
|
11
|
-
import { DeckCapabilities, DeckEvents } from '@dxos/plugin-deck';
|
|
12
9
|
import { SpaceCapabilities } from '@dxos/plugin-space';
|
|
13
10
|
import { defineObjectForm } from '@dxos/plugin-space/types';
|
|
14
|
-
import { getSpace } from '@dxos/react-client/echo';
|
|
15
11
|
|
|
16
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
AppGraphBuilder,
|
|
14
|
+
ArtifactDefinition,
|
|
15
|
+
Compiler,
|
|
16
|
+
IntentResolver,
|
|
17
|
+
ReactSurface,
|
|
18
|
+
ScriptSettings,
|
|
19
|
+
} from './capabilities';
|
|
17
20
|
import { ScriptEvents } from './events';
|
|
18
|
-
import { meta
|
|
21
|
+
import { meta } from './meta';
|
|
19
22
|
import translations from './translations';
|
|
20
23
|
import { ScriptAction } from './types';
|
|
21
24
|
|
|
@@ -43,7 +46,6 @@ export const ScriptPlugin = () =>
|
|
|
43
46
|
contributes(Capabilities.Metadata, {
|
|
44
47
|
id: ScriptType.typename,
|
|
45
48
|
metadata: {
|
|
46
|
-
placeholder: ['object title placeholder', { ns: SCRIPT_PLUGIN }],
|
|
47
49
|
icon: 'ph--code--regular',
|
|
48
50
|
// TODO(wittjosiah): Move out of metadata.
|
|
49
51
|
loadReferences: async (script: ScriptType) => await RefArray.loadAll([script.source]),
|
|
@@ -51,16 +53,9 @@ export const ScriptPlugin = () =>
|
|
|
51
53
|
}),
|
|
52
54
|
}),
|
|
53
55
|
defineModule({
|
|
54
|
-
id: `${meta.id}/module/
|
|
55
|
-
activatesOn:
|
|
56
|
-
activate:
|
|
57
|
-
contributes(DeckCapabilities.ComplementaryPanel, {
|
|
58
|
-
id: 'function',
|
|
59
|
-
label: ['function panel label', { ns: SCRIPT_PLUGIN }],
|
|
60
|
-
icon: 'ph--terminal--regular',
|
|
61
|
-
fixed: true,
|
|
62
|
-
filter: (node) => node.data instanceof ScriptType && !!getSpace(node.data),
|
|
63
|
-
}),
|
|
56
|
+
id: `${meta.id}/module/app-graph-builder`,
|
|
57
|
+
activatesOn: Events.SetupAppGraph,
|
|
58
|
+
activate: AppGraphBuilder,
|
|
64
59
|
}),
|
|
65
60
|
defineModule({
|
|
66
61
|
id: `${meta.id}/module/object-form`,
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';
|
|
6
|
+
import { isInstanceOf } from '@dxos/echo-schema';
|
|
7
|
+
import { ScriptType } from '@dxos/functions';
|
|
8
|
+
import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';
|
|
9
|
+
import { createExtension, type Node } from '@dxos/plugin-graph';
|
|
10
|
+
|
|
11
|
+
import { meta } from '../meta';
|
|
12
|
+
|
|
13
|
+
export default (context: PluginsContext) =>
|
|
14
|
+
contributes(Capabilities.AppGraphBuilder, [
|
|
15
|
+
createExtension({
|
|
16
|
+
id: `${meta.id}/execute`,
|
|
17
|
+
filter: (node): node is Node<ScriptType> => isInstanceOf(ScriptType, node.data),
|
|
18
|
+
connector: ({ node }) => [
|
|
19
|
+
{
|
|
20
|
+
id: [node.id, 'execute'].join(ATTENDABLE_PATH_SEPARATOR),
|
|
21
|
+
type: PLANK_COMPANION_TYPE,
|
|
22
|
+
data: 'execute',
|
|
23
|
+
properties: {
|
|
24
|
+
label: ['script test label', { ns: meta.id }],
|
|
25
|
+
icon: 'ph--terminal--regular',
|
|
26
|
+
disposition: 'hidden',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
}),
|
|
31
|
+
createExtension({
|
|
32
|
+
id: `${meta.id}/logs`,
|
|
33
|
+
filter: (node): node is Node<ScriptType> => isInstanceOf(ScriptType, node.data),
|
|
34
|
+
connector: ({ node }) => [
|
|
35
|
+
{
|
|
36
|
+
id: [node.id, 'logs'].join(ATTENDABLE_PATH_SEPARATOR),
|
|
37
|
+
type: PLANK_COMPANION_TYPE,
|
|
38
|
+
data: 'logs',
|
|
39
|
+
properties: {
|
|
40
|
+
label: ['script logs label', { ns: meta.id }],
|
|
41
|
+
icon: 'ph--clock-countdown--regular',
|
|
42
|
+
disposition: 'hidden',
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
}),
|
|
47
|
+
]);
|
|
@@ -23,7 +23,7 @@ declare global {
|
|
|
23
23
|
|
|
24
24
|
export default () => {
|
|
25
25
|
const definition = defineArtifact({
|
|
26
|
-
id: meta.id
|
|
26
|
+
id: `artifact:${meta.id}`,
|
|
27
27
|
name: meta.name,
|
|
28
28
|
// TODO(dmaretskyi): Since writing scripts requires a lot of domain knowledge,
|
|
29
29
|
// we should offload the work of synthesizing the code to a separate model.
|
|
@@ -31,6 +31,7 @@ export default () => {
|
|
|
31
31
|
instructions: `
|
|
32
32
|
If the user explicitly requests you to write a script, you can create one.
|
|
33
33
|
If the user requests you to change one of the existing script, you can update it.
|
|
34
|
+
You must not create a script unless the user explicitly requests it.
|
|
34
35
|
Scripts are short code pieces of executable code that can be used to perform computations, integrate with external systems, and perform automated tasks.
|
|
35
36
|
Each script must follow as strict shape for the definition but the body can contain any valid executable code.
|
|
36
37
|
Scripts are written in JavaScript or TypeScript.
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
import { defineCapability } from '@dxos/app-framework';
|
|
6
6
|
|
|
7
7
|
import { type Compiler } from '../compiler';
|
|
8
|
-
import {
|
|
8
|
+
import { meta } from '../meta';
|
|
9
9
|
|
|
10
10
|
export namespace ScriptCapabilities {
|
|
11
|
-
export const Compiler = defineCapability<Compiler>(`${
|
|
11
|
+
export const Compiler = defineCapability<Compiler>(`${meta.id}/capability/compiler`);
|
|
12
12
|
}
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
import { lazy } from '@dxos/app-framework';
|
|
6
6
|
|
|
7
|
+
export const AppGraphBuilder = lazy(() => import('./app-graph-builder'));
|
|
8
|
+
export const ArtifactDefinition = lazy(() => import('./artifact-definition'));
|
|
7
9
|
export const Compiler = lazy(() => import('./compiler'));
|
|
8
10
|
export const IntentResolver = lazy(() => import('./intent-resolver'));
|
|
9
11
|
export const ReactSurface = lazy(() => import('./react-surface'));
|
|
10
12
|
export const ScriptSettings = lazy(() => import('./settings'));
|
|
11
|
-
export const ArtifactDefinition = lazy(() => import('./artifact-definition'));
|
|
12
13
|
|
|
13
14
|
export * from './capabilities';
|
|
@@ -3,22 +3,26 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Octokit } from '@octokit/core';
|
|
6
|
+
import { isNotNullable } from 'effect/Predicate';
|
|
6
7
|
|
|
7
|
-
import { contributes, Capabilities, createResolver } from '@dxos/app-framework';
|
|
8
|
+
import { contributes, Capabilities, createResolver, createIntent, LayoutAction } from '@dxos/app-framework';
|
|
8
9
|
import { ScriptType } from '@dxos/functions/types';
|
|
9
10
|
import { create, makeRef } from '@dxos/live-object';
|
|
11
|
+
import { TokenManagerAction } from '@dxos/plugin-token-manager/types';
|
|
10
12
|
import { TextType } from '@dxos/schema';
|
|
11
13
|
|
|
14
|
+
import { DEPLOYMENT_DIALOG } from '../components';
|
|
15
|
+
import { defaultScriptsForIntegration } from '../meta';
|
|
12
16
|
import { templates } from '../templates';
|
|
13
17
|
import { ScriptAction } from '../types';
|
|
14
18
|
|
|
15
19
|
export default () =>
|
|
16
|
-
contributes(
|
|
17
|
-
Capabilities.IntentResolver,
|
|
20
|
+
contributes(Capabilities.IntentResolver, [
|
|
18
21
|
createResolver({
|
|
19
22
|
intent: ScriptAction.Create,
|
|
20
|
-
resolve: async ({ name, gistUrl }) => {
|
|
23
|
+
resolve: async ({ name, gistUrl, initialTemplateId }) => {
|
|
21
24
|
let content = templates[0].source;
|
|
25
|
+
|
|
22
26
|
const gistId = gistUrl?.split('/').at(-1);
|
|
23
27
|
if (gistId) {
|
|
24
28
|
// TODO(wittjosiah): Capability which contributes Octokit?
|
|
@@ -33,6 +37,14 @@ export default () =>
|
|
|
33
37
|
}
|
|
34
38
|
}
|
|
35
39
|
|
|
40
|
+
if (initialTemplateId) {
|
|
41
|
+
const template = templates.find((template) => template.id === initialTemplateId);
|
|
42
|
+
if (template) {
|
|
43
|
+
content = template.source;
|
|
44
|
+
name = template.name;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
36
48
|
return {
|
|
37
49
|
data: {
|
|
38
50
|
object: create(ScriptType, {
|
|
@@ -43,4 +55,26 @@ export default () =>
|
|
|
43
55
|
};
|
|
44
56
|
},
|
|
45
57
|
}),
|
|
46
|
-
|
|
58
|
+
createResolver({
|
|
59
|
+
intent: TokenManagerAction.AccessTokenCreated,
|
|
60
|
+
resolve: async ({ accessToken }) => {
|
|
61
|
+
const scriptTemplates = (defaultScriptsForIntegration[accessToken.source] ?? [])
|
|
62
|
+
.map((id) => templates.find((t) => t.id === id))
|
|
63
|
+
.filter(isNotNullable);
|
|
64
|
+
|
|
65
|
+
if (scriptTemplates.length > 0) {
|
|
66
|
+
return {
|
|
67
|
+
intents: [
|
|
68
|
+
createIntent(LayoutAction.UpdateDialog, {
|
|
69
|
+
part: 'dialog',
|
|
70
|
+
subject: DEPLOYMENT_DIALOG,
|
|
71
|
+
options: { blockAlign: 'start', state: true, props: { accessToken, scriptTemplates } },
|
|
72
|
+
}),
|
|
73
|
+
],
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return { data: undefined };
|
|
78
|
+
},
|
|
79
|
+
}),
|
|
80
|
+
]);
|
|
@@ -5,56 +5,95 @@
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
|
|
7
7
|
import { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';
|
|
8
|
+
import { InvocationTracePanel } from '@dxos/devtools';
|
|
9
|
+
import { isInstanceOf } from '@dxos/echo-schema';
|
|
8
10
|
import { ScriptType } from '@dxos/functions/types';
|
|
9
11
|
import { SettingsStore } from '@dxos/local-storage';
|
|
10
|
-
import {
|
|
12
|
+
import { getSpace } from '@dxos/react-client/echo';
|
|
13
|
+
import { StackItem } from '@dxos/react-ui-stack';
|
|
14
|
+
import { type AccessTokenType } from '@dxos/schema';
|
|
11
15
|
|
|
12
16
|
import { ScriptCapabilities } from './capabilities';
|
|
13
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
ScriptContainer,
|
|
19
|
+
ScriptPluginSettings,
|
|
20
|
+
ScriptObjectSettings,
|
|
21
|
+
TestPanel,
|
|
22
|
+
ScriptProperties,
|
|
23
|
+
DeploymentDialog,
|
|
24
|
+
DEPLOYMENT_DIALOG,
|
|
25
|
+
} from '../components';
|
|
14
26
|
import { useDeployState, useToolbarState } from '../hooks';
|
|
15
|
-
import {
|
|
27
|
+
import { meta } from '../meta';
|
|
16
28
|
import { type ScriptSettingsProps } from '../types';
|
|
17
29
|
|
|
18
30
|
export default () =>
|
|
19
31
|
contributes(Capabilities.ReactSurface, [
|
|
20
32
|
createSurface({
|
|
21
|
-
id: `${
|
|
33
|
+
id: `${meta.id}/plugin-settings`,
|
|
22
34
|
role: 'article',
|
|
23
35
|
filter: (data): data is { subject: SettingsStore<ScriptSettingsProps> } =>
|
|
24
|
-
data.subject instanceof SettingsStore && data.subject.prefix ===
|
|
25
|
-
component: ({ data: { subject } }) => <
|
|
36
|
+
data.subject instanceof SettingsStore && data.subject.prefix === meta.id,
|
|
37
|
+
component: ({ data: { subject } }) => <ScriptPluginSettings settings={subject.value} />,
|
|
26
38
|
}),
|
|
27
39
|
createSurface({
|
|
28
|
-
id: `${
|
|
40
|
+
id: `${meta.id}/article`,
|
|
29
41
|
role: 'article',
|
|
30
|
-
filter: (data): data is { subject: ScriptType } => data.subject
|
|
42
|
+
filter: (data): data is { subject: ScriptType } => isInstanceOf(ScriptType, data.subject),
|
|
31
43
|
component: ({ data, role }) => {
|
|
32
44
|
const compiler = useCapability(ScriptCapabilities.Compiler);
|
|
33
45
|
// TODO(dmaretskyi): Since settings store is not reactive, this would break on the script plugin being enabled without a page reload.
|
|
34
|
-
const settings = useCapability(Capabilities.SettingsStore).getStore<ScriptSettingsProps>(
|
|
46
|
+
const settings = useCapability(Capabilities.SettingsStore).getStore<ScriptSettingsProps>(meta.id)?.value;
|
|
35
47
|
return <ScriptContainer role={role} script={data.subject} settings={settings} env={compiler.environment} />;
|
|
36
48
|
},
|
|
37
49
|
}),
|
|
38
50
|
createSurface({
|
|
39
|
-
id: `${
|
|
40
|
-
role: '
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
51
|
+
id: `${meta.id}/companion/base-settings`,
|
|
52
|
+
role: 'base-object-settings',
|
|
53
|
+
filter: (data): data is { subject: ScriptType } => isInstanceOf(ScriptType, data.subject),
|
|
54
|
+
component: ({ data }) => <ScriptProperties object={data.subject} />,
|
|
55
|
+
}),
|
|
56
|
+
createSurface({
|
|
57
|
+
id: `${meta.id}/companion/settings`,
|
|
58
|
+
role: 'object-settings',
|
|
59
|
+
filter: (data): data is { subject: ScriptType } => isInstanceOf(ScriptType, data.subject),
|
|
60
|
+
component: ({ data }) => <ScriptObjectSettings object={data.subject} />,
|
|
61
|
+
}),
|
|
62
|
+
createSurface({
|
|
63
|
+
id: `${meta.id}/companion/execute`,
|
|
64
|
+
role: 'article',
|
|
65
|
+
filter: (data): data is { companionTo: ScriptType } =>
|
|
66
|
+
isInstanceOf(ScriptType, data.companionTo) && data.subject === 'execute',
|
|
67
|
+
component: ({ data, role }) => {
|
|
44
68
|
// TODO(wittjosiah): Decouple hooks from toolbar state.
|
|
45
|
-
const state = useToolbarState(
|
|
46
|
-
useDeployState({ state, script: data.
|
|
47
|
-
return
|
|
69
|
+
const state = useToolbarState();
|
|
70
|
+
useDeployState({ state, script: data.companionTo });
|
|
71
|
+
return (
|
|
72
|
+
<StackItem.Content role={role}>
|
|
73
|
+
<TestPanel functionUrl={state.functionUrl} />
|
|
74
|
+
</StackItem.Content>
|
|
75
|
+
);
|
|
76
|
+
},
|
|
77
|
+
}),
|
|
78
|
+
createSurface({
|
|
79
|
+
id: `${meta.id}/companion/logs`,
|
|
80
|
+
role: 'article',
|
|
81
|
+
filter: (data): data is { companionTo: ScriptType } =>
|
|
82
|
+
isInstanceOf(ScriptType, data.companionTo) && data.subject === 'logs',
|
|
83
|
+
component: ({ data, role }) => {
|
|
84
|
+
const space = getSpace(data.companionTo);
|
|
85
|
+
return (
|
|
86
|
+
<StackItem.Content role={role}>
|
|
87
|
+
<InvocationTracePanel space={space} script={data.companionTo} detailAxis='block' />
|
|
88
|
+
</StackItem.Content>
|
|
89
|
+
);
|
|
48
90
|
},
|
|
49
91
|
}),
|
|
50
92
|
createSurface({
|
|
51
|
-
id:
|
|
52
|
-
role: '
|
|
53
|
-
filter: (data): data is {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
<ScriptSettingsPanel script={data.subject} />
|
|
57
|
-
</Clipboard.Provider>
|
|
58
|
-
),
|
|
93
|
+
id: DEPLOYMENT_DIALOG,
|
|
94
|
+
role: 'dialog',
|
|
95
|
+
filter: (data): data is { props: { accessToken: AccessTokenType; scriptTemplates: any } } =>
|
|
96
|
+
data.component === DEPLOYMENT_DIALOG,
|
|
97
|
+
component: ({ data }) => <DeploymentDialog {...data.props} />,
|
|
59
98
|
}),
|
|
60
99
|
]);
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
import { Capabilities, contributes } from '@dxos/app-framework';
|
|
6
6
|
import { create } from '@dxos/live-object';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { meta } from '../meta';
|
|
9
9
|
import { ScriptSettingsSchema } from '../types';
|
|
10
10
|
|
|
11
11
|
export default () => {
|
|
12
12
|
const settings = create(ScriptSettingsSchema, { editorInputMode: 'vscode' });
|
|
13
|
-
return contributes(Capabilities.Settings, { schema: ScriptSettingsSchema, prefix:
|
|
13
|
+
return contributes(Capabilities.Settings, { schema: ScriptSettingsSchema, prefix: meta.id, value: settings });
|
|
14
14
|
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import '@dxos-theme';
|
|
6
|
+
|
|
7
|
+
import { type Meta } from '@storybook/react';
|
|
8
|
+
import React from 'react';
|
|
9
|
+
|
|
10
|
+
import { Dialog } from '@dxos/react-ui';
|
|
11
|
+
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
|
12
|
+
|
|
13
|
+
import translations from '../../translations';
|
|
14
|
+
import { DeploymentDialog } from '../DeploymentDialog/DeploymentDialog';
|
|
15
|
+
|
|
16
|
+
export const Default = {
|
|
17
|
+
args: {
|
|
18
|
+
accessToken: { value: 'example-token' },
|
|
19
|
+
scripts: [
|
|
20
|
+
{ label: 'Script 1', templateId: 'template1' },
|
|
21
|
+
{ label: 'Script 2', templateId: 'template2' },
|
|
22
|
+
{ label: 'Script 3', templateId: 'template3' },
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
render: (args: any) => (
|
|
26
|
+
<Dialog.Root defaultOpen={true}>
|
|
27
|
+
<DeploymentDialog {...args} />
|
|
28
|
+
</Dialog.Root>
|
|
29
|
+
),
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const meta: Meta = {
|
|
33
|
+
title: 'plugins/plugin-script/DeploymentDialog',
|
|
34
|
+
component: DeploymentDialog,
|
|
35
|
+
parameters: { translations },
|
|
36
|
+
decorators: [withTheme, withLayout({ tooltips: true })],
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default meta;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { useEffect, useMemo } from 'react';
|
|
6
|
+
|
|
7
|
+
import { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
|
|
8
|
+
import { getSpace } from '@dxos/react-client/echo';
|
|
9
|
+
import { Button, Dialog, Icon, useTranslation } from '@dxos/react-ui';
|
|
10
|
+
import { type AccessTokenType } from '@dxos/schema';
|
|
11
|
+
|
|
12
|
+
import { useCreateAndDeployScriptTemplates } from '../../hooks/useCreateAndDeployScriptTemplates';
|
|
13
|
+
import { SCRIPT_PLUGIN } from '../../meta';
|
|
14
|
+
import { type Template } from '../../templates';
|
|
15
|
+
|
|
16
|
+
export const DEPLOYMENT_DIALOG = `${SCRIPT_PLUGIN}/deployment/dialog`;
|
|
17
|
+
|
|
18
|
+
// TODO(ZaymonFC):
|
|
19
|
+
// - Show activity and feedback to the user.
|
|
20
|
+
// - Only take an array of templateIds and get the name from the data.
|
|
21
|
+
// - Pending / onError states.
|
|
22
|
+
|
|
23
|
+
type DeploymentDialogProps = {
|
|
24
|
+
accessToken: AccessTokenType;
|
|
25
|
+
scriptTemplates: Template[];
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const DeploymentDialog = ({ accessToken, scriptTemplates }: DeploymentDialogProps) => {
|
|
29
|
+
const { t } = useTranslation(SCRIPT_PLUGIN);
|
|
30
|
+
const space = useMemo(() => getSpace(accessToken), [accessToken]);
|
|
31
|
+
|
|
32
|
+
// TODO(ZaymonFC): Thinking further. All of this should get moved to intents to run async in the background.
|
|
33
|
+
// Deployment shouldn't be tied to the lifecycle of the dialogue component.
|
|
34
|
+
const { handleCreateAndDeployScripts, status } = useCreateAndDeployScriptTemplates(space, scriptTemplates);
|
|
35
|
+
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
36
|
+
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (status === 'success') {
|
|
39
|
+
// TODO(ZaymonFC): We can probably re-use this toast for normal script deployment.
|
|
40
|
+
void dispatch(
|
|
41
|
+
createIntent(LayoutAction.AddToast, {
|
|
42
|
+
part: 'toast',
|
|
43
|
+
subject: {
|
|
44
|
+
id: `${SCRIPT_PLUGIN}/deployment-success`,
|
|
45
|
+
icon: 'ph--check--regular',
|
|
46
|
+
duration: Infinity,
|
|
47
|
+
title: ['script deployment toast label', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],
|
|
48
|
+
description: ['script deployment toast description', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],
|
|
49
|
+
closeLabel: ['script deployment toast close label', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],
|
|
50
|
+
},
|
|
51
|
+
}),
|
|
52
|
+
);
|
|
53
|
+
void dispatch(createIntent(LayoutAction.UpdateDialog, { part: 'dialog', options: { state: false } }));
|
|
54
|
+
}
|
|
55
|
+
if (status === 'error') {
|
|
56
|
+
void dispatch(createIntent(LayoutAction.UpdateDialog, { part: 'dialog', options: { state: false } }));
|
|
57
|
+
void dispatch(
|
|
58
|
+
createIntent(LayoutAction.AddToast, {
|
|
59
|
+
part: 'toast',
|
|
60
|
+
subject: {
|
|
61
|
+
id: `${SCRIPT_PLUGIN}/deployment-error`,
|
|
62
|
+
icon: 'ph--warning--regular',
|
|
63
|
+
duration: Infinity,
|
|
64
|
+
title: ['script deployment error toast label', { ns: SCRIPT_PLUGIN, count: scriptTemplates.length }],
|
|
65
|
+
description: [
|
|
66
|
+
'script deployment error toast description',
|
|
67
|
+
{ ns: SCRIPT_PLUGIN, count: scriptTemplates.length },
|
|
68
|
+
],
|
|
69
|
+
closeLabel: [
|
|
70
|
+
'script deployment error toast close label',
|
|
71
|
+
{ ns: SCRIPT_PLUGIN, count: scriptTemplates.length },
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
}),
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
}, [status, dispatch]);
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<Dialog.Content>
|
|
81
|
+
<div className='flex justify-between items-center'>
|
|
82
|
+
<Dialog.Title>{t('deployment dialog title')}</Dialog.Title>
|
|
83
|
+
<Dialog.Close asChild>
|
|
84
|
+
<Button density='fine' variant='ghost'>
|
|
85
|
+
<Icon icon='ph--x--regular' size={4} />
|
|
86
|
+
</Button>
|
|
87
|
+
</Dialog.Close>
|
|
88
|
+
</div>
|
|
89
|
+
<div role='none' className='plb-4'>
|
|
90
|
+
{/* TODO: Implement deployment logic and UI. */}
|
|
91
|
+
<p>{t('deployment dialog scripts found message', { count: scriptTemplates.length })}</p>
|
|
92
|
+
<ul className='pbs-2'>
|
|
93
|
+
{scriptTemplates.map((template) => {
|
|
94
|
+
return <li key={template.id}>{template.name}</li>;
|
|
95
|
+
})}
|
|
96
|
+
</ul>
|
|
97
|
+
</div>
|
|
98
|
+
<div role='none' className='flex flex-row-reverse gap-1'>
|
|
99
|
+
<Button variant='primary' onClick={handleCreateAndDeployScripts} disabled={status === 'pending'}>
|
|
100
|
+
{status === 'pending'
|
|
101
|
+
? t('deployment dialog deploy functions pending button label', { count: scriptTemplates.length })
|
|
102
|
+
: t('deployment dialog deploy functions button label', { count: scriptTemplates.length })}
|
|
103
|
+
</Button>
|
|
104
|
+
<Dialog.Close asChild disabled={status === 'pending'}>
|
|
105
|
+
<Button disabled={status === 'pending'}>{t('deployment dialog skip button label')}</Button>
|
|
106
|
+
</Dialog.Close>
|
|
107
|
+
</div>
|
|
108
|
+
</Dialog.Content>
|
|
109
|
+
);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
export default DeploymentDialog;
|
|
@@ -12,28 +12,30 @@ import { createDataExtensions, listener, stackItemContentEditorClassNames } from
|
|
|
12
12
|
import { StackItem } from '@dxos/react-ui-stack';
|
|
13
13
|
import { mx } from '@dxos/react-ui-theme';
|
|
14
14
|
|
|
15
|
-
import { LogsPanel } from './LogsPanel';
|
|
16
15
|
import { ScriptToolbar } from './ScriptToolbar';
|
|
17
16
|
import { TypescriptEditor, type TypescriptEditorProps } from './TypescriptEditor';
|
|
18
17
|
import { useDeployState, useToolbarState } from '../hooks';
|
|
19
18
|
import { type ScriptSettingsProps } from '../types';
|
|
20
19
|
|
|
21
|
-
export type ScriptEditorProps = ThemedClassName<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
Pick<TypescriptEditorProps, 'env'
|
|
20
|
+
export type ScriptEditorProps = ThemedClassName<
|
|
21
|
+
{
|
|
22
|
+
role?: string;
|
|
23
|
+
script: ScriptType;
|
|
24
|
+
settings?: ScriptSettingsProps;
|
|
25
|
+
} & Pick<TypescriptEditorProps, 'env'>
|
|
26
|
+
>;
|
|
27
27
|
|
|
28
28
|
export const ScriptContainer = ({
|
|
29
|
-
role,
|
|
30
29
|
classNames,
|
|
30
|
+
role,
|
|
31
31
|
script,
|
|
32
32
|
settings = { editorInputMode: 'vscode' },
|
|
33
33
|
env,
|
|
34
34
|
}: ScriptEditorProps) => {
|
|
35
35
|
const identity = useIdentity();
|
|
36
36
|
const space = getSpace(script);
|
|
37
|
+
const state = useToolbarState();
|
|
38
|
+
useDeployState({ state, script });
|
|
37
39
|
|
|
38
40
|
const extensions = useMemo(
|
|
39
41
|
() => [
|
|
@@ -51,34 +53,21 @@ export const ScriptContainer = ({
|
|
|
51
53
|
identity,
|
|
52
54
|
}),
|
|
53
55
|
],
|
|
54
|
-
[script, script.source.target
|
|
56
|
+
[identity, space, script, script.source.target],
|
|
55
57
|
);
|
|
56
58
|
|
|
57
|
-
const state = useToolbarState({ view: 'editor' });
|
|
58
|
-
useDeployState({ state, script });
|
|
59
|
-
|
|
60
|
-
if (!space) {
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
59
|
return (
|
|
65
|
-
<StackItem.Content toolbar>
|
|
60
|
+
<StackItem.Content toolbar classNames='divide-y divide-separator'>
|
|
66
61
|
<ScriptToolbar state={state} role={role} script={script} />
|
|
67
|
-
<
|
|
68
|
-
{
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
toolbar
|
|
77
|
-
/>
|
|
78
|
-
)}
|
|
79
|
-
|
|
80
|
-
{state.view !== 'editor' && <LogsPanel script={script} classNames='grow' />}
|
|
81
|
-
</div>
|
|
62
|
+
<TypescriptEditor
|
|
63
|
+
id={script.id}
|
|
64
|
+
env={env}
|
|
65
|
+
initialValue={script.source?.target?.content}
|
|
66
|
+
extensions={extensions}
|
|
67
|
+
className={mx(stackItemContentEditorClassNames(role))}
|
|
68
|
+
inputMode={settings.editorInputMode}
|
|
69
|
+
toolbar
|
|
70
|
+
/>
|
|
82
71
|
</StackItem.Content>
|
|
83
72
|
);
|
|
84
73
|
};
|
|
@@ -15,7 +15,6 @@ import {
|
|
|
15
15
|
createDeploy,
|
|
16
16
|
createFormat,
|
|
17
17
|
createTemplateSelect,
|
|
18
|
-
createView,
|
|
19
18
|
useToolbarAction,
|
|
20
19
|
} from '../../hooks';
|
|
21
20
|
|
|
@@ -30,10 +29,9 @@ const createToolbar = (state: ScriptToolbarState) => {
|
|
|
30
29
|
const format = createFormat();
|
|
31
30
|
const gap = createGapSeparator();
|
|
32
31
|
const deploy = createDeploy(state);
|
|
33
|
-
const view = createView(state);
|
|
34
32
|
return {
|
|
35
|
-
nodes: [...templateSelect.nodes, ...format.nodes, ...gap.nodes, ...deploy.nodes
|
|
36
|
-
edges: [...templateSelect.edges, ...format.edges, ...gap.edges, ...deploy.edges
|
|
33
|
+
nodes: [...templateSelect.nodes, ...format.nodes, ...gap.nodes, ...deploy.nodes],
|
|
34
|
+
edges: [...templateSelect.edges, ...format.edges, ...gap.edges, ...deploy.edges],
|
|
37
35
|
};
|
|
38
36
|
};
|
|
39
37
|
|
|
@@ -41,6 +39,7 @@ export const ScriptToolbar = ({ script, role, state, classNames }: ScriptToolbar
|
|
|
41
39
|
const handleAction = useToolbarAction({ state, script });
|
|
42
40
|
const toolbarCreator = useCallback(() => createToolbar(state), [state]);
|
|
43
41
|
const menu = useMenuActions(toolbarCreator);
|
|
42
|
+
|
|
44
43
|
return (
|
|
45
44
|
<div role='none' className={stackItemContentToolbarClassNames(role)}>
|
|
46
45
|
<ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>
|