@dxos/plugin-automation 0.8.4-main.5ad4a44 → 0.8.4-main.66e292d
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/AutomationPanel-M4M77L4V.mjs +11 -0
- package/dist/lib/browser/{AutomationSettings-3LABN6ER.mjs → AutomationSettings-4HCI6KJR.mjs} +6 -7
- package/dist/lib/{node-esm/AutomationSettings-XENNIIZM.mjs.map → browser/AutomationSettings-4HCI6KJR.mjs.map} +1 -1
- package/dist/lib/browser/FunctionsContainer-CDVBRQCT.mjs +144 -0
- package/dist/lib/browser/FunctionsContainer-CDVBRQCT.mjs.map +7 -0
- package/dist/lib/browser/{FunctionsPanel-NRIKAPQV.mjs → FunctionsPanel-CRW6SJUN.mjs} +3 -3
- package/dist/lib/browser/{app-graph-builder-DV5HMFX4.mjs → app-graph-builder-W7LLC6XW.mjs} +7 -7
- package/dist/lib/browser/app-graph-builder-W7LLC6XW.mjs.map +7 -0
- package/dist/lib/browser/chunk-4MBM6C6A.mjs +100 -0
- package/dist/lib/browser/chunk-4MBM6C6A.mjs.map +7 -0
- package/dist/lib/browser/{chunk-NIJWEQRD.mjs → chunk-7W6QMY3L.mjs} +26 -42
- package/dist/lib/browser/chunk-7W6QMY3L.mjs.map +7 -0
- package/dist/lib/browser/{chunk-AY67OUDA.mjs → chunk-CZVA5NMD.mjs} +5 -5
- package/dist/lib/browser/chunk-LZQFZO3B.mjs +17 -0
- package/dist/lib/browser/chunk-LZQFZO3B.mjs.map +7 -0
- package/dist/lib/browser/{chunk-LC3QQU47.mjs → chunk-T6ZESHDY.mjs} +38 -18
- package/dist/lib/browser/chunk-T6ZESHDY.mjs.map +7 -0
- package/dist/lib/browser/{chunk-DLLE4FKP.mjs → chunk-TWWFNOIR.mjs} +27 -12
- package/dist/lib/browser/chunk-TWWFNOIR.mjs.map +7 -0
- package/dist/lib/browser/{chunk-5ARH77PV.mjs → chunk-XAKZ4ANY.mjs} +2 -2
- package/dist/lib/browser/chunk-XAKZ4ANY.mjs.map +7 -0
- package/dist/lib/browser/{chunk-VGBZKM3O.mjs → chunk-YBPJCY3F.mjs} +2 -2
- package/dist/lib/browser/compute-runtime-B4XJVY4Y.mjs +113 -0
- package/dist/lib/browser/compute-runtime-B4XJVY4Y.mjs.map +7 -0
- package/dist/lib/browser/hooks/index.mjs +5 -4
- package/dist/lib/browser/index.mjs +19 -10
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-D2OHKQRR.mjs → intent-resolver-5HR7M7T6.mjs} +8 -8
- package/dist/lib/browser/intent-resolver-5HR7M7T6.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-JXFO46V4.mjs → react-surface-TKU2EQ5A.mjs} +6 -5
- package/dist/lib/browser/react-surface-TKU2EQ5A.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/{AutomationPanel-GHK5UG4K.mjs → AutomationPanel-F5CTC6AT.mjs} +4 -4
- package/dist/lib/node-esm/{AutomationSettings-XENNIIZM.mjs → AutomationSettings-BQLJIFRT.mjs} +6 -7
- package/dist/lib/node-esm/FunctionsContainer-ZHHJPQAZ.mjs +145 -0
- package/dist/lib/node-esm/FunctionsContainer-ZHHJPQAZ.mjs.map +7 -0
- package/dist/lib/node-esm/{FunctionsPanel-SAMRTELO.mjs → FunctionsPanel-RVVCS6VH.mjs} +3 -3
- package/dist/lib/node-esm/{app-graph-builder-TR2WXPX2.mjs → app-graph-builder-SLQOO7GH.mjs} +7 -7
- package/dist/lib/node-esm/app-graph-builder-SLQOO7GH.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-LWASMQIF.mjs → chunk-3IYSC75Z.mjs} +5 -5
- package/dist/lib/node-esm/chunk-7B6NAAI6.mjs +101 -0
- package/dist/lib/node-esm/chunk-7B6NAAI6.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-5MQJPJR2.mjs → chunk-CEVIVRTY.mjs} +6 -2
- package/dist/lib/node-esm/chunk-CEVIVRTY.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-EX74SIDO.mjs → chunk-CF2SWXPW.mjs} +26 -42
- package/dist/lib/node-esm/chunk-CF2SWXPW.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-CJUI6AKX.mjs → chunk-ECJKIUBO.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-3EWMZAU6.mjs → chunk-F76XVENA.mjs} +38 -18
- package/dist/lib/node-esm/chunk-F76XVENA.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-WHCSOUNN.mjs → chunk-KB7NFEYY.mjs} +2 -2
- package/dist/lib/node-esm/chunk-KB7NFEYY.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-YQXW3JXD.mjs → chunk-RVK52XGK.mjs} +27 -12
- package/dist/lib/node-esm/chunk-RVK52XGK.mjs.map +7 -0
- package/dist/lib/node-esm/compute-runtime-JUWTQXOV.mjs +114 -0
- package/dist/lib/node-esm/compute-runtime-JUWTQXOV.mjs.map +7 -0
- package/dist/lib/node-esm/hooks/index.mjs +5 -4
- package/dist/lib/node-esm/index.mjs +19 -10
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-2LGBVXT5.mjs → intent-resolver-KDRYB5BC.mjs} +8 -8
- package/dist/lib/node-esm/intent-resolver-KDRYB5BC.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-YDJ43B3N.mjs → react-surface-7QROSEGH.mjs} +6 -5
- package/dist/lib/node-esm/react-surface-7QROSEGH.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/capabilities/capabilities.d.ts +2 -1
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/compute-runtime.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +2 -2
- package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
- package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +3 -0
- package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
- package/dist/types/src/components/FunctionsContainer.d.ts.map +1 -1
- package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
- package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts +8 -0
- package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -0
- package/dist/types/src/components/FunctionsRegistry/index.d.ts +2 -0
- package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +1 -0
- package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +2 -2
- package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
- package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
- package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +6 -5
- package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
- package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +3 -1
- package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
- package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +5 -1
- package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -1
- package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +2 -2
- package/dist/types/src/hooks/useTriggerRuntimeControls.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.map +1 -1
- package/dist/types/src/testing/test-functions.d.ts +2 -3
- package/dist/types/src/testing/test-functions.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +3 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +36 -33
- package/src/AutomationPlugin.tsx +2 -2
- package/src/capabilities/app-graph-builder.ts +6 -6
- package/src/capabilities/capabilities.ts +2 -9
- package/src/capabilities/compute-runtime.ts +27 -36
- package/src/capabilities/intent-resolver.ts +5 -5
- package/src/capabilities/react-surface.tsx +2 -1
- package/src/components/AutomationPanel/AutomationPanel.stories.tsx +4 -5
- package/src/components/AutomationPanel/AutomationPanel.tsx +48 -35
- package/src/components/FunctionsContainer.tsx +7 -0
- package/src/components/FunctionsPanel/FunctionsPanel.tsx +32 -13
- package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +127 -0
- package/src/components/FunctionsRegistry/index.ts +5 -0
- package/src/components/TriggerEditor/FunctionInputEditor.tsx +2 -2
- package/src/components/TriggerEditor/SpecSelector.tsx +4 -5
- package/src/components/TriggerEditor/TriggerEditor.stories.tsx +37 -16
- package/src/components/TriggerEditor/TriggerEditor.tsx +24 -54
- package/src/hooks/useComputeRuntimeCallback.ts +40 -2
- package/src/hooks/useTriggerRuntimeControls.ts +4 -3
- package/src/index.ts +1 -0
- package/src/meta.ts +5 -2
- package/src/testing/test-functions.ts +2 -2
- package/src/translations.ts +3 -0
- package/dist/lib/browser/AutomationPanel-PNBH5L5C.mjs +0 -11
- package/dist/lib/browser/FunctionsContainer-HHBMPUOD.mjs +0 -36
- package/dist/lib/browser/FunctionsContainer-HHBMPUOD.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-DV5HMFX4.mjs.map +0 -7
- package/dist/lib/browser/chunk-5ARH77PV.mjs.map +0 -7
- package/dist/lib/browser/chunk-DLLE4FKP.mjs.map +0 -7
- package/dist/lib/browser/chunk-LC3QQU47.mjs.map +0 -7
- package/dist/lib/browser/chunk-MVPRI3DB.mjs +0 -53
- package/dist/lib/browser/chunk-MVPRI3DB.mjs.map +0 -7
- package/dist/lib/browser/chunk-NIJWEQRD.mjs.map +0 -7
- package/dist/lib/browser/chunk-QT3YWUOT.mjs +0 -14
- package/dist/lib/browser/chunk-QT3YWUOT.mjs.map +0 -7
- package/dist/lib/browser/chunk-WWURMV25.mjs +0 -13
- package/dist/lib/browser/chunk-WWURMV25.mjs.map +0 -7
- package/dist/lib/browser/compute-runtime-YJREH6WP.mjs +0 -160
- package/dist/lib/browser/compute-runtime-YJREH6WP.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-D2OHKQRR.mjs.map +0 -7
- package/dist/lib/browser/react-surface-JXFO46V4.mjs.map +0 -7
- package/dist/lib/node-esm/FunctionsContainer-ZKVOBUHV.mjs +0 -37
- package/dist/lib/node-esm/FunctionsContainer-ZKVOBUHV.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-TR2WXPX2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3EWMZAU6.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5MQJPJR2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-EX74SIDO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-QCA543ZR.mjs +0 -54
- package/dist/lib/node-esm/chunk-QCA543ZR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-U7LJXQS4.mjs +0 -16
- package/dist/lib/node-esm/chunk-U7LJXQS4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WHCSOUNN.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YQXW3JXD.mjs.map +0 -7
- package/dist/lib/node-esm/compute-runtime-CMEPAYND.mjs +0 -161
- package/dist/lib/node-esm/compute-runtime-CMEPAYND.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-2LGBVXT5.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-YDJ43B3N.mjs.map +0 -7
- /package/dist/lib/browser/{AutomationPanel-PNBH5L5C.mjs.map → AutomationPanel-M4M77L4V.mjs.map} +0 -0
- /package/dist/lib/browser/{FunctionsPanel-NRIKAPQV.mjs.map → FunctionsPanel-CRW6SJUN.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-AY67OUDA.mjs.map → chunk-CZVA5NMD.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-VGBZKM3O.mjs.map → chunk-YBPJCY3F.mjs.map} +0 -0
- /package/dist/lib/node-esm/{AutomationPanel-GHK5UG4K.mjs.map → AutomationPanel-F5CTC6AT.mjs.map} +0 -0
- /package/dist/lib/{browser/AutomationSettings-3LABN6ER.mjs.map → node-esm/AutomationSettings-BQLJIFRT.mjs.map} +0 -0
- /package/dist/lib/node-esm/{FunctionsPanel-SAMRTELO.mjs.map → FunctionsPanel-RVVCS6VH.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-LWASMQIF.mjs.map → chunk-3IYSC75Z.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-CJUI6AKX.mjs.map → chunk-ECJKIUBO.mjs.map} +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AutomationPanel,
|
|
3
|
+
AutomationPanel_default
|
|
4
|
+
} from "./chunk-T6ZESHDY.mjs";
|
|
5
|
+
import "./chunk-7W6QMY3L.mjs";
|
|
6
|
+
import "./chunk-LZQFZO3B.mjs";
|
|
7
|
+
export {
|
|
8
|
+
AutomationPanel,
|
|
9
|
+
AutomationPanel_default as default
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=AutomationPanel-M4M77L4V.mjs.map
|
package/dist/lib/browser/{AutomationSettings-3LABN6ER.mjs → AutomationSettings-4HCI6KJR.mjs}
RENAMED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useTriggerRuntimeControls
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-5ARH77PV.mjs";
|
|
3
|
+
} from "./chunk-4MBM6C6A.mjs";
|
|
4
|
+
import "./chunk-XAKZ4ANY.mjs";
|
|
6
5
|
import {
|
|
7
6
|
AutomationPanel
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-T6ZESHDY.mjs";
|
|
8
|
+
import "./chunk-7W6QMY3L.mjs";
|
|
10
9
|
import {
|
|
11
10
|
meta
|
|
12
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-LZQFZO3B.mjs";
|
|
13
12
|
|
|
14
13
|
// src/components/AutomationSettings.tsx
|
|
15
14
|
import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
|
|
@@ -66,4 +65,4 @@ export {
|
|
|
66
65
|
AutomationSettings,
|
|
67
66
|
AutomationSettings_default as default
|
|
68
67
|
};
|
|
69
|
-
//# sourceMappingURL=AutomationSettings-
|
|
68
|
+
//# sourceMappingURL=AutomationSettings-4HCI6KJR.mjs.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/AutomationSettings.tsx", "../../../src/components/TriggerSettings.tsx"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\n\nimport { AutomationPanel, type AutomationPanelProps } from './AutomationPanel';\nimport { TriggersSettings } from './TriggerSettings';\n\nexport const AutomationSettings = (props: AutomationPanelProps) => {\n const { t } = useTranslation(meta.id);\n return (\n <ControlPage>\n <ControlSection\n title={t('automation verbose label', { ns: meta.id })}\n description={t('automation description', { ns: meta.id })}\n >\n <AutomationPanel {...props} />\n <TriggersSettings space={props.space} />\n </ControlSection>\n </ControlPage>\n );\n};\n\nexport default AutomationSettings;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\nimport { Input, useTranslation } from '@dxos/react-ui';\nimport { ControlItemInput } from '@dxos/react-ui-form';\n\nimport { useTriggerRuntimeControls } from '../hooks';\nimport { meta } from '../meta';\n\nexport const TriggersSettings = ({ space }: { space: Space }) => {\n const { triggers, isRunning, start, stop } = useTriggerRuntimeControls(space);\n const { t } = useTranslation(meta.id);\n\n return (\n <div className='container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]'>\n <ControlItemInput title={t('runtime label')} description={t('runtime description')}>\n <Input.Switch classNames='justify-self-end' checked={isRunning} onCheckedChange={isRunning ? stop : start} />\n </ControlItemInput>\n </div>\n );\n};\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;AAIA,OAAOA,YAAW;AAElB,SAASC,kBAAAA,uBAAsB;AAC/B,SAASC,aAAaC,sBAAsB;;;;ACH5C,OAAOC,WAAW;AAGlB,SAASC,OAAOC,sBAAsB;AACtC,SAASC,wBAAwB;AAK1B,IAAMC,mBAAmB,CAAC,EAAEC,MAAK,MAAoB;;;AAC1D,UAAM,EAAEC,UAAUC,WAAWC,OAAOC,KAAI,IAAKC,0BAA0BL,KAAAA;AACvE,UAAM,EAAEM,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AAEpC,WACE,sBAAA,cAACC,OAAAA;MAAIC,WAAU;OACb,sBAAA,cAACC,kBAAAA;MAAiBC,OAAOP,EAAE,eAAA;MAAkBQ,aAAaR,EAAE,qBAAA;OAC1D,sBAAA,cAACS,MAAMC,QAAM;MAACC,YAAW;MAAmBC,SAAShB;MAAWiB,iBAAiBjB,YAAYE,OAAOD;;;;;AAI5G;;;ADVO,IAAMiB,qBAAqB,CAACC,UAAAA;;;AACjC,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AACpC,WACE,gBAAAC,OAAA,cAACC,aAAAA,MACC,gBAAAD,OAAA,cAACE,gBAAAA;MACCC,OAAOP,EAAE,4BAA4B;QAAEQ,IAAIN,KAAKC;MAAG,CAAA;MACnDM,aAAaT,EAAE,0BAA0B;QAAEQ,IAAIN,KAAKC;MAAG,CAAA;OAEvD,gBAAAC,OAAA,cAACM,iBAAoBX,KAAAA,GACrB,gBAAAK,OAAA,cAACO,kBAAAA;MAAiBC,OAAOb,MAAMa;;;;;AAIvC;AAEA,IAAA,6BAAed;",
|
|
6
6
|
"names": ["React", "useTranslation", "ControlPage", "ControlSection", "React", "Input", "useTranslation", "ControlItemInput", "TriggersSettings", "space", "triggers", "isRunning", "start", "stop", "useTriggerRuntimeControls", "t", "useTranslation", "meta", "id", "div", "className", "ControlItemInput", "title", "description", "Input", "Switch", "classNames", "checked", "onCheckedChange", "AutomationSettings", "props", "t", "useTranslation", "meta", "id", "React", "ControlPage", "ControlSection", "title", "ns", "description", "AutomationPanel", "TriggersSettings", "space"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FunctionsPanel
|
|
3
|
+
} from "./chunk-TWWFNOIR.mjs";
|
|
4
|
+
import {
|
|
5
|
+
meta
|
|
6
|
+
} from "./chunk-LZQFZO3B.mjs";
|
|
7
|
+
|
|
8
|
+
// src/components/FunctionsContainer.tsx
|
|
9
|
+
import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
|
|
10
|
+
import React2 from "react";
|
|
11
|
+
import { useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
12
|
+
import { ControlPage, ControlSection } from "@dxos/react-ui-form";
|
|
13
|
+
|
|
14
|
+
// src/components/FunctionsRegistry/FunctionsRegistry.tsx
|
|
15
|
+
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
16
|
+
import * as Array from "effect/Array";
|
|
17
|
+
import * as EffectFunction from "effect/Function";
|
|
18
|
+
import * as Order from "effect/Order";
|
|
19
|
+
import * as Schema from "effect/Schema";
|
|
20
|
+
import { useState } from "react";
|
|
21
|
+
import React, { useCallback } from "react";
|
|
22
|
+
import { Function } from "@dxos/functions";
|
|
23
|
+
import { getDeployedFunctions } from "@dxos/functions-runtime/edge";
|
|
24
|
+
import { useClient } from "@dxos/react-client";
|
|
25
|
+
import { Filter, Query, useQuery } from "@dxos/react-client/echo";
|
|
26
|
+
import { useAsyncEffect } from "@dxos/react-ui";
|
|
27
|
+
import { IconButton, useTranslation } from "@dxos/react-ui";
|
|
28
|
+
import { controlItemClasses } from "@dxos/react-ui-form";
|
|
29
|
+
import { List } from "@dxos/react-ui-list";
|
|
30
|
+
import { ghostHover, mx } from "@dxos/react-ui-theme";
|
|
31
|
+
var grid = "grid grid-cols-[1fr_1fr_auto] min-bs-[2.5rem]";
|
|
32
|
+
var FunctionsRegistry = ({ space }) => {
|
|
33
|
+
var _effect = _useSignals();
|
|
34
|
+
try {
|
|
35
|
+
const client = useClient();
|
|
36
|
+
const [loading, setLoading] = useState(true);
|
|
37
|
+
const [functions, setFunctions] = useState([]);
|
|
38
|
+
const { t } = useTranslation(meta.id);
|
|
39
|
+
const dbFunctions = useQuery(space, Filter.type(Function.Function));
|
|
40
|
+
const state = (func) => {
|
|
41
|
+
const dbFunction = dbFunctions.find((f) => f.key === func.key);
|
|
42
|
+
if (!dbFunction) {
|
|
43
|
+
return "import";
|
|
44
|
+
}
|
|
45
|
+
if (dbFunction.version === func.version && dbFunction.updated === func.updated) {
|
|
46
|
+
return "none";
|
|
47
|
+
}
|
|
48
|
+
return "update";
|
|
49
|
+
};
|
|
50
|
+
useAsyncEffect(async () => {
|
|
51
|
+
setLoading(true);
|
|
52
|
+
const functions2 = await getDeployedFunctions(client);
|
|
53
|
+
setFunctions(functions2);
|
|
54
|
+
setLoading(false);
|
|
55
|
+
}, []);
|
|
56
|
+
const dedupedFunctions = EffectFunction.pipe(functions, Array.filter((_) => _.key !== void 0), Array.sort(Order.reverse(Order.mapInput(Order.string, (_) => _.updated ?? ""))), Array.dedupeWith((self, that) => self.key === that.key), Array.sort(Order.mapInput(Order.string, (_) => _.key ?? "")));
|
|
57
|
+
const hanleImportOrUpdate = useCallback(async (func) => {
|
|
58
|
+
const { objects: [existingFunc] } = await space.db.query(Query.type(Function.Function, {
|
|
59
|
+
key: func.key
|
|
60
|
+
})).run();
|
|
61
|
+
if (!existingFunc) {
|
|
62
|
+
space.db.add(func);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
Function.setFrom(existingFunc, func);
|
|
66
|
+
}, [
|
|
67
|
+
space
|
|
68
|
+
]);
|
|
69
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
70
|
+
role: "none",
|
|
71
|
+
className: mx(controlItemClasses)
|
|
72
|
+
}, dedupedFunctions.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
|
|
73
|
+
items: dedupedFunctions,
|
|
74
|
+
isItem: Schema.is(Function.Function),
|
|
75
|
+
getId: (func) => func.id
|
|
76
|
+
}, ({ items }) => /* @__PURE__ */ React.createElement("div", {
|
|
77
|
+
role: "list",
|
|
78
|
+
className: "flex flex-col is-full"
|
|
79
|
+
}, items?.map((func) => /* @__PURE__ */ React.createElement(List.Item, {
|
|
80
|
+
key: func.id,
|
|
81
|
+
item: func,
|
|
82
|
+
classNames: mx(grid, ghostHover, "items-center", "pli-2", "min-bs-[3rem]")
|
|
83
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
84
|
+
className: "flex flex-col truncate"
|
|
85
|
+
}, /* @__PURE__ */ React.createElement(List.ItemTitle, {
|
|
86
|
+
classNames: "truncate"
|
|
87
|
+
}, func.name), /* @__PURE__ */ React.createElement("div", {
|
|
88
|
+
className: "text-xs text-description truncate"
|
|
89
|
+
}, func.key)), /* @__PURE__ */ React.createElement("div", {
|
|
90
|
+
className: "flex flex-col truncate"
|
|
91
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
92
|
+
className: "text-xs text-description truncate"
|
|
93
|
+
}, func.version), /* @__PURE__ */ React.createElement("div", {
|
|
94
|
+
className: "text-xs text-description truncate"
|
|
95
|
+
}, func.updated ? `Uploaded ${new Date(func.updated).toLocaleString()}` : "")), /* @__PURE__ */ React.createElement(IconButton, {
|
|
96
|
+
iconOnly: true,
|
|
97
|
+
icon: state(func) === "update" ? "ph--arrows-clockwise--regular" : "ph--download--regular",
|
|
98
|
+
label: state(func) === "update" ? t("update function button label") : t("import function button label"),
|
|
99
|
+
disabled: state(func) === "none",
|
|
100
|
+
onClick: () => hanleImportOrUpdate(func)
|
|
101
|
+
}))))), dedupedFunctions.length === 0 && !loading && /* @__PURE__ */ React.createElement("div", {
|
|
102
|
+
className: "text-center plb-4 text-gray-500"
|
|
103
|
+
}, t("no functions found")), loading && /* @__PURE__ */ React.createElement("div", {
|
|
104
|
+
className: "text-center plb-4 text-gray-500"
|
|
105
|
+
}, t("loading functions")));
|
|
106
|
+
} finally {
|
|
107
|
+
_effect.f();
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// src/components/FunctionsContainer.tsx
|
|
112
|
+
var FunctionsContainer = ({ space }) => {
|
|
113
|
+
var _effect = _useSignals2();
|
|
114
|
+
try {
|
|
115
|
+
const { t } = useTranslation2(meta.id);
|
|
116
|
+
return /* @__PURE__ */ React2.createElement(ControlPage, null, /* @__PURE__ */ React2.createElement(ControlSection, {
|
|
117
|
+
title: t("functions verbose label", {
|
|
118
|
+
ns: meta.id
|
|
119
|
+
}),
|
|
120
|
+
description: t("functions description", {
|
|
121
|
+
ns: meta.id
|
|
122
|
+
})
|
|
123
|
+
}, /* @__PURE__ */ React2.createElement(FunctionsPanel, {
|
|
124
|
+
space
|
|
125
|
+
})), /* @__PURE__ */ React2.createElement(ControlSection, {
|
|
126
|
+
title: t("functions registry verbose label", {
|
|
127
|
+
ns: meta.id
|
|
128
|
+
}),
|
|
129
|
+
description: t("functions registry description", {
|
|
130
|
+
ns: meta.id
|
|
131
|
+
})
|
|
132
|
+
}, /* @__PURE__ */ React2.createElement(FunctionsRegistry, {
|
|
133
|
+
space
|
|
134
|
+
})));
|
|
135
|
+
} finally {
|
|
136
|
+
_effect.f();
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
var FunctionsContainer_default = FunctionsContainer;
|
|
140
|
+
export {
|
|
141
|
+
FunctionsContainer,
|
|
142
|
+
FunctionsContainer_default as default
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=FunctionsContainer-CDVBRQCT.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/FunctionsContainer.tsx", "../../../src/components/FunctionsRegistry/FunctionsRegistry.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\n\nimport { FunctionsPanel } from './FunctionsPanel';\nimport { FunctionsRegistry } from './FunctionsRegistry';\n\nexport const FunctionsContainer = ({ space }: { space: Space }) => {\n const { t } = useTranslation(meta.id);\n return (\n <ControlPage>\n <ControlSection\n title={t('functions verbose label', { ns: meta.id })}\n description={t('functions description', { ns: meta.id })}\n >\n <FunctionsPanel space={space} />\n </ControlSection>\n <ControlSection\n title={t('functions registry verbose label', { ns: meta.id })}\n description={t('functions registry description', { ns: meta.id })}\n >\n <FunctionsRegistry space={space} />\n </ControlSection>\n </ControlPage>\n );\n};\n\nexport default FunctionsContainer;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Array from 'effect/Array';\nimport * as EffectFunction from 'effect/Function';\nimport * as Order from 'effect/Order';\nimport * as Schema from 'effect/Schema';\nimport { useState } from 'react';\nimport React, { useCallback } from 'react';\n\nimport { Function } from '@dxos/functions';\nimport { getDeployedFunctions } from '@dxos/functions-runtime/edge';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, Query, type Space, useQuery } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\nimport { IconButton, useTranslation } from '@dxos/react-ui';\nimport { controlItemClasses } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/react-ui-theme';\n\nimport { meta } from '../../meta';\n\nconst grid = 'grid grid-cols-[1fr_1fr_auto] min-bs-[2.5rem]';\n\ntype FunctionsRegistryProps = {\n space: Space;\n};\n\nexport const FunctionsRegistry = ({ space }: FunctionsRegistryProps) => {\n const client = useClient();\n const [loading, setLoading] = useState(true);\n const [functions, setFunctions] = useState<Function.Function[]>([]);\n const { t } = useTranslation(meta.id);\n\n const dbFunctions = useQuery(space, Filter.type(Function.Function));\n\n const state = (func: Function.Function) => {\n const dbFunction = dbFunctions.find((f) => f.key === func.key);\n if (!dbFunction) {\n return 'import';\n }\n if (dbFunction.version === func.version && dbFunction.updated === func.updated) {\n return 'none';\n }\n return 'update';\n };\n\n useAsyncEffect(async () => {\n setLoading(true);\n const functions = await getDeployedFunctions(client);\n setFunctions(functions);\n setLoading(false);\n }, []);\n\n const dedupedFunctions = EffectFunction.pipe(\n functions,\n Array.filter((_) => _.key !== undefined),\n Array.sort(Order.reverse(Order.mapInput(Order.string, (_: Function.Function) => _.updated ?? ''))),\n Array.dedupeWith((self, that) => self.key === that.key),\n Array.sort(Order.mapInput(Order.string, (_: Function.Function) => _.key ?? '')),\n );\n\n const hanleImportOrUpdate = useCallback(\n async (func: Function.Function) => {\n const {\n objects: [existingFunc],\n } = await space.db.query(Query.type(Function.Function, { key: func.key })).run();\n if (!existingFunc) {\n space.db.add(func);\n return;\n }\n Function.setFrom(existingFunc, func);\n },\n [space],\n );\n\n return (\n <div role='none' className={mx(controlItemClasses)}>\n {dedupedFunctions.length > 0 && (\n <List.Root<Function.Function>\n items={dedupedFunctions}\n isItem={Schema.is(Function.Function)}\n getId={(func) => func.id}\n >\n {({ items }) => (\n <div role='list' className='flex flex-col is-full'>\n {items?.map((func) => (\n <List.Item<Function.Function>\n key={func.id}\n item={func}\n classNames={mx(grid, ghostHover, 'items-center', 'pli-2', 'min-bs-[3rem]')}\n >\n <div className='flex flex-col truncate'>\n <List.ItemTitle classNames='truncate'>{func.name}</List.ItemTitle>\n <div className='text-xs text-description truncate'>{func.key}</div>\n </div>\n <div className='flex flex-col truncate'>\n <div className='text-xs text-description truncate'>{func.version}</div>\n <div className='text-xs text-description truncate'>\n {func.updated ? `Uploaded ${new Date(func.updated).toLocaleString()}` : ''}\n </div>\n </div>\n\n <IconButton\n iconOnly\n icon={state(func) === 'update' ? 'ph--arrows-clockwise--regular' : 'ph--download--regular'}\n label={\n state(func) === 'update' ? t('update function button label') : t('import function button label')\n }\n disabled={state(func) === 'none'}\n onClick={() => hanleImportOrUpdate(func)}\n />\n </List.Item>\n ))}\n </div>\n )}\n </List.Root>\n )}\n\n {dedupedFunctions.length === 0 && !loading && (\n <div className='text-center plb-4 text-gray-500'>{t('no functions found')}</div>\n )}\n {loading && <div className='text-center plb-4 text-gray-500'>{t('loading functions')}</div>}\n </div>\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "useTranslation", "ControlPage", "ControlSection", "Array", "EffectFunction", "Order", "Schema", "useState", "React", "useCallback", "Function", "getDeployedFunctions", "useClient", "Filter", "Query", "useQuery", "useAsyncEffect", "IconButton", "useTranslation", "controlItemClasses", "List", "ghostHover", "mx", "grid", "FunctionsRegistry", "space", "client", "useClient", "loading", "setLoading", "useState", "functions", "setFunctions", "t", "useTranslation", "meta", "id", "dbFunctions", "useQuery", "Filter", "type", "Function", "state", "func", "dbFunction", "find", "f", "key", "version", "updated", "useAsyncEffect", "getDeployedFunctions", "dedupedFunctions", "pipe", "filter", "_", "undefined", "sort", "reverse", "mapInput", "string", "dedupeWith", "self", "that", "hanleImportOrUpdate", "useCallback", "objects", "existingFunc", "db", "query", "Query", "run", "add", "setFrom", "div", "role", "className", "mx", "controlItemClasses", "length", "List", "Root", "items", "isItem", "is", "getId", "map", "Item", "item", "classNames", "ghostHover", "ItemTitle", "name", "Date", "toLocaleString", "IconButton", "iconOnly", "icon", "label", "disabled", "onClick", "FunctionsContainer", "space", "t", "useTranslation", "meta", "id", "React", "ControlPage", "ControlSection", "title", "ns", "description", "FunctionsPanel", "FunctionsRegistry"]
|
|
7
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FunctionsPanel,
|
|
3
3
|
FunctionsPanel_default
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-TWWFNOIR.mjs";
|
|
5
|
+
import "./chunk-LZQFZO3B.mjs";
|
|
6
6
|
export {
|
|
7
7
|
FunctionsPanel,
|
|
8
8
|
FunctionsPanel_default as default
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=FunctionsPanel-
|
|
10
|
+
//# sourceMappingURL=FunctionsPanel-CRW6SJUN.mjs.map
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
meta
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LZQFZO3B.mjs";
|
|
4
4
|
|
|
5
5
|
// src/capabilities/app-graph-builder.ts
|
|
6
|
-
import {
|
|
6
|
+
import { Atom } from "@effect-atom/atom-react";
|
|
7
7
|
import * as Function from "effect/Function";
|
|
8
8
|
import * as Option from "effect/Option";
|
|
9
9
|
import { Capabilities, contributes } from "@dxos/app-framework";
|
|
10
10
|
import { Obj } from "@dxos/echo";
|
|
11
|
-
import {
|
|
11
|
+
import { Script } from "@dxos/functions";
|
|
12
12
|
import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
|
|
13
13
|
import { createExtension } from "@dxos/plugin-graph";
|
|
14
14
|
import { meta as spaceMeta } from "@dxos/plugin-space";
|
|
15
15
|
var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphBuilder, [
|
|
16
16
|
createExtension({
|
|
17
17
|
id: `${meta.id}/space-settings-automation`,
|
|
18
|
-
connector: (node) =>
|
|
18
|
+
connector: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.type === `${spaceMeta.id}/settings` ? Option.some(node2) : Option.none()), Option.map((node2) => [
|
|
19
19
|
{
|
|
20
20
|
id: `automation-${node2.id}`,
|
|
21
21
|
type: `${meta.id}/space-settings-automation`,
|
|
@@ -34,7 +34,7 @@ var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphB
|
|
|
34
34
|
}),
|
|
35
35
|
createExtension({
|
|
36
36
|
id: `${meta.id}/space-settings-functions`,
|
|
37
|
-
connector: (node) =>
|
|
37
|
+
connector: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.type === `${spaceMeta.id}/settings` ? Option.some(node2) : Option.none()), Option.map((node2) => [
|
|
38
38
|
{
|
|
39
39
|
id: `functions-${node2.id}`,
|
|
40
40
|
type: `${meta.id}/space-settings-functions`,
|
|
@@ -53,7 +53,7 @@ var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphB
|
|
|
53
53
|
}),
|
|
54
54
|
createExtension({
|
|
55
55
|
id: `${meta.id}/script-companion`,
|
|
56
|
-
connector: (node) =>
|
|
56
|
+
connector: (node) => Atom.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(Script.Script, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
|
|
57
57
|
{
|
|
58
58
|
id: [
|
|
59
59
|
node2.id,
|
|
@@ -78,4 +78,4 @@ var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphB
|
|
|
78
78
|
export {
|
|
79
79
|
app_graph_builder_default as default
|
|
80
80
|
};
|
|
81
|
-
//# sourceMappingURL=app-graph-builder-
|
|
81
|
+
//# sourceMappingURL=app-graph-builder-W7LLC6XW.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\n\nimport { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { Script } from '@dxos/functions';\nimport { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { createExtension } from '@dxos/plugin-graph';\nimport { meta as spaceMeta } from '@dxos/plugin-space';\n\nimport { meta } from '../meta';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${meta.id}/space-settings-automation`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.type === `${spaceMeta.id}/settings` ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: `automation-${node.id}`,\n type: `${meta.id}/space-settings-automation`,\n data: `${meta.id}/space-settings-automation`,\n properties: {\n label: ['automation panel label', { ns: meta.id }],\n icon: 'ph--lightning--regular',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/space-settings-functions`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.type === `${spaceMeta.id}/settings` ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: `functions-${node.id}`,\n type: `${meta.id}/space-settings-functions`,\n data: `${meta.id}/space-settings-functions`,\n properties: {\n label: ['functions panel label', { ns: meta.id }],\n icon: 'ph--function--regular',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/script-companion`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(Script.Script, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'automation'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'automation',\n properties: {\n label: ['script automation label', { ns: meta.id }],\n icon: 'ph--lightning--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n"],
|
|
5
|
+
"mappings": ";;;;;AAIA,SAASA,YAAY;AACrB,YAAYC,cAAc;AAC1B,YAAYC,YAAY;AAExB,SAASC,cAAkCC,mBAAmB;AAC9D,SAASC,WAAW;AACpB,SAASC,cAAc;AACvB,SAASC,2BAA2BC,4BAA4B;AAChE,SAASC,uBAAuB;AAChC,SAASC,QAAQC,iBAAiB;AAIlC,IAAA,6BAAe,CAACC,YACdC,YAAYC,aAAaC,iBAAiB;EACxCC,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,KAAKC,KAAK,CAACC,QACAC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAUA,MAAKM,SAAS,GAAGC,UAAUV,EAAE,cAAqBW,YAAKR,KAAAA,IAAeS,YAAI,CAAA,GAC7FC,WAAI,CAACV,UAAS;MACnB;QACEH,IAAI,cAAcG,MAAKH,EAAE;QACzBS,MAAM,GAAGR,KAAKD,EAAE;QAChBc,MAAM,GAAGb,KAAKD,EAAE;QAChBe,YAAY;UACVC,OAAO;YAAC;YAA0B;cAAEC,IAAIhB,KAAKD;YAAG;;UAChDkB,MAAM;QACR;MACF;KACD,GACMC,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;EACApB,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,KAAKC,KAAK,CAACC,QACAC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAUA,MAAKM,SAAS,GAAGC,UAAUV,EAAE,cAAqBW,YAAKR,KAAAA,IAAeS,YAAI,CAAA,GAC7FC,WAAI,CAACV,UAAS;MACnB;QACEH,IAAI,aAAaG,MAAKH,EAAE;QACxBS,MAAM,GAAGR,KAAKD,EAAE;QAChBc,MAAM,GAAGb,KAAKD,EAAE;QAChBe,YAAY;UACVC,OAAO;YAAC;YAAyB;cAAEC,IAAIhB,KAAKD;YAAG;;UAC/CkB,MAAM;QACR;MACF;KACD,GACMC,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;EACApB,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,KAAKC,KAAK,CAACC,QACAC,cACPD,IAAIH,IAAAA,GACGK,eAAQ,CAACL,UAAUiB,IAAIC,WAAWC,OAAOA,QAAQnB,MAAKW,IAAI,IAAWH,YAAKR,KAAAA,IAAeS,YAAI,CAAA,GAC7FC,WAAI,CAACV,UAAS;MACnB;QACEH,IAAI;UAACG,MAAKH;UAAI;UAAcuB,KAAKC,yBAAAA;QACjCf,MAAMgB;QACNX,MAAM;QACNC,YAAY;UACVC,OAAO;YAAC;YAA2B;cAAEC,IAAIhB,KAAKD;YAAG;;UACjDkB,MAAM;UACNQ,aAAa;QACf;MACF;KACD,GACMP,iBAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;CACD;",
|
|
6
|
+
"names": ["Atom", "Function", "Option", "Capabilities", "contributes", "Obj", "Script", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "createExtension", "meta", "spaceMeta", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "meta", "connector", "node", "Atom", "make", "get", "pipe", "flatMap", "type", "spaceMeta", "some", "none", "map", "data", "properties", "label", "ns", "icon", "getOrElse", "Obj", "instanceOf", "Script", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "disposition"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AutomationCapabilities
|
|
3
|
+
} from "./chunk-XAKZ4ANY.mjs";
|
|
4
|
+
|
|
5
|
+
// src/hooks/useComputeRuntimeCallback.ts
|
|
6
|
+
import * as Cause from "effect/Cause";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Exit from "effect/Exit";
|
|
9
|
+
import { useCallback } from "react";
|
|
10
|
+
import { useCapability } from "@dxos/app-framework/react";
|
|
11
|
+
import { FunctionInvocationService } from "@dxos/functions";
|
|
12
|
+
import { InvocationTracer, TracingServiceExt } from "@dxos/functions-runtime";
|
|
13
|
+
import { log } from "@dxos/log";
|
|
14
|
+
|
|
15
|
+
// src/capabilities/index.ts
|
|
16
|
+
import { lazy } from "@dxos/app-framework";
|
|
17
|
+
var AppGraphBuilder = lazy(() => import("./app-graph-builder-W7LLC6XW.mjs"));
|
|
18
|
+
var ComputeRuntime = lazy(() => import("./compute-runtime-B4XJVY4Y.mjs"));
|
|
19
|
+
var IntentResolver = lazy(() => import("./intent-resolver-5HR7M7T6.mjs"));
|
|
20
|
+
var ReactSurface = lazy(() => import("./react-surface-TKU2EQ5A.mjs"));
|
|
21
|
+
|
|
22
|
+
// src/hooks/useComputeRuntimeCallback.ts
|
|
23
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-automation/src/hooks/useComputeRuntimeCallback.ts";
|
|
24
|
+
var useComputeRuntimeCallback = (space, fn, deps) => {
|
|
25
|
+
const computeRuntime = useCapability(AutomationCapabilities.ComputeRuntime);
|
|
26
|
+
const runtime = space !== void 0 ? computeRuntime.getRuntime(space.id) : void 0;
|
|
27
|
+
return useCallback(() => {
|
|
28
|
+
if (!runtime) {
|
|
29
|
+
throw new TypeError("Space not provided to useComputeRuntimeCallback");
|
|
30
|
+
}
|
|
31
|
+
return runtime.runPromise(fn());
|
|
32
|
+
}, [
|
|
33
|
+
runtime,
|
|
34
|
+
...deps ?? []
|
|
35
|
+
]);
|
|
36
|
+
};
|
|
37
|
+
var invokeFunctionWithTracing = (functionDef, inputData) => Effect.gen(function* () {
|
|
38
|
+
const tracer = yield* InvocationTracer;
|
|
39
|
+
const trace = yield* tracer.traceInvocationStart({
|
|
40
|
+
target: void 0,
|
|
41
|
+
payload: {
|
|
42
|
+
data: {}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
const result = yield* FunctionInvocationService.invokeFunction(functionDef, inputData).pipe(Effect.provide(TracingServiceExt.layerQueue(trace.invocationTraceQueue)), Effect.exit);
|
|
46
|
+
if (Exit.isFailure(result)) {
|
|
47
|
+
const error = Cause.prettyErrors(result.cause)[0];
|
|
48
|
+
log.error(error.message, error.cause ?? error.stack, {
|
|
49
|
+
F: __dxlog_file,
|
|
50
|
+
L: 58,
|
|
51
|
+
S: this,
|
|
52
|
+
C: (f, a) => f(...a)
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
yield* tracer.traceInvocationEnd({
|
|
56
|
+
trace,
|
|
57
|
+
// TODO(dmaretskyi): Might miss errors.
|
|
58
|
+
exception: Exit.isFailure(result) ? Cause.prettyErrors(result.cause)[0] : void 0
|
|
59
|
+
});
|
|
60
|
+
return result;
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
// src/hooks/useTriggerRuntimeControls.ts
|
|
64
|
+
import * as Effect2 from "effect/Effect";
|
|
65
|
+
import { Filter } from "@dxos/echo";
|
|
66
|
+
import { Trigger } from "@dxos/functions";
|
|
67
|
+
import { TriggerDispatcher } from "@dxos/functions-runtime";
|
|
68
|
+
import { useQuery } from "@dxos/react-client/echo";
|
|
69
|
+
import { useAsyncState } from "@dxos/react-ui";
|
|
70
|
+
var useTriggerRuntimeControls = (space) => {
|
|
71
|
+
const triggers = useQuery(space, Filter.type(Trigger.Trigger));
|
|
72
|
+
const [isRunningState, setIsRunningState] = useAsyncState(useComputeRuntimeCallback(space, () => TriggerDispatcher.pipe(Effect2.map((t) => t.running))));
|
|
73
|
+
const start = useComputeRuntimeCallback(space, Effect2.fnUntraced(function* () {
|
|
74
|
+
const dispatcher = yield* TriggerDispatcher;
|
|
75
|
+
yield* dispatcher.start();
|
|
76
|
+
setIsRunningState(true);
|
|
77
|
+
}));
|
|
78
|
+
const stop = useComputeRuntimeCallback(space, Effect2.fnUntraced(function* () {
|
|
79
|
+
const dispatcher = yield* TriggerDispatcher;
|
|
80
|
+
yield* dispatcher.stop();
|
|
81
|
+
setIsRunningState(false);
|
|
82
|
+
}));
|
|
83
|
+
return {
|
|
84
|
+
triggers,
|
|
85
|
+
isRunning: isRunningState ?? false,
|
|
86
|
+
start: () => void start(),
|
|
87
|
+
stop: () => void stop()
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
export {
|
|
92
|
+
useComputeRuntimeCallback,
|
|
93
|
+
invokeFunctionWithTracing,
|
|
94
|
+
useTriggerRuntimeControls,
|
|
95
|
+
AppGraphBuilder,
|
|
96
|
+
ComputeRuntime,
|
|
97
|
+
IntentResolver,
|
|
98
|
+
ReactSurface
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=chunk-4MBM6C6A.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/hooks/useComputeRuntimeCallback.ts", "../../../src/capabilities/index.ts", "../../../src/hooks/useTriggerRuntimeControls.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Cause from 'effect/Cause';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport { useCallback } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/react';\nimport { type FunctionDefinition, FunctionInvocationService } from '@dxos/functions';\nimport { InvocationTracer, TracingServiceExt } from '@dxos/functions-runtime';\nimport { log } from '@dxos/log';\nimport type { Space } from '@dxos/react-client/echo';\n\nimport { AutomationCapabilities } from '../capabilities';\n\n/**\n * Create an effectful function that has access to compute services\n */\n// TODO(burdon): Factor out (figure out cross-plugin capabilities dependencies).\nexport const useComputeRuntimeCallback = <T>(\n space: Space | undefined,\n fn: () => Effect.Effect<T, any, AutomationCapabilities.ComputeServices>,\n deps?: React.DependencyList,\n): (() => Promise<T>) => {\n const computeRuntime = useCapability(AutomationCapabilities.ComputeRuntime);\n const runtime = space !== undefined ? computeRuntime.getRuntime(space.id) : undefined;\n\n return useCallback(() => {\n if (!runtime) {\n throw new TypeError('Space not provided to useComputeRuntimeCallback');\n }\n\n return runtime.runPromise(fn());\n }, [runtime, ...(deps ?? [])]);\n};\n\n// TODO(wittjosiah): Function invoking should automatically be traced (DX-647).\nexport const invokeFunctionWithTracing = <I, O>(functionDef: FunctionDefinition<I, O>, inputData: I) =>\n Effect.gen(function* () {\n const tracer = yield* InvocationTracer;\n const trace = yield* tracer.traceInvocationStart({\n target: undefined,\n payload: {\n data: {},\n },\n });\n\n // Invoke the function.\n const result = yield* FunctionInvocationService.invokeFunction(functionDef, inputData).pipe(\n Effect.provide(TracingServiceExt.layerQueue(trace.invocationTraceQueue)),\n Effect.exit,\n );\n\n if (Exit.isFailure(result)) {\n const error = Cause.prettyErrors(result.cause)[0];\n log.error(error.message, error.cause ?? error.stack);\n }\n\n yield* tracer.traceInvocationEnd({\n trace,\n // TODO(dmaretskyi): Might miss errors.\n exception: Exit.isFailure(result) ? Cause.prettyErrors(result.cause)[0] : undefined,\n });\n\n return result;\n });\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const ComputeRuntime = lazy(() => import('./compute-runtime'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\n\nexport * from './capabilities';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Filter } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { TriggerDispatcher } from '@dxos/functions-runtime';\nimport { type Space, useQuery } from '@dxos/react-client/echo';\nimport { useAsyncState } from '@dxos/react-ui';\n\nimport { useComputeRuntimeCallback } from './useComputeRuntimeCallback';\n\ninterface TriggerRuntimeControls {\n triggers: Trigger.Trigger[];\n isRunning: boolean;\n start: () => void;\n stop: () => void;\n}\n\nexport const useTriggerRuntimeControls = (space: Space | undefined): TriggerRuntimeControls => {\n const triggers = useQuery(space, Filter.type(Trigger.Trigger));\n\n const [isRunningState, setIsRunningState] = useAsyncState(\n useComputeRuntimeCallback(space, () => TriggerDispatcher.pipe(Effect.map((t) => t.running))),\n );\n\n const start = useComputeRuntimeCallback(\n space,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n yield* dispatcher.start();\n setIsRunningState(true);\n }),\n );\n\n const stop = useComputeRuntimeCallback(\n space,\n Effect.fnUntraced(function* () {\n const dispatcher = yield* TriggerDispatcher;\n yield* dispatcher.stop();\n setIsRunningState(false);\n }),\n );\n\n return {\n triggers,\n isRunning: isRunningState ?? false,\n start: () => void start(),\n stop: () => void stop(),\n };\n};\n"],
|
|
5
|
+
"mappings": ";;;;;AAIA,YAAYA,WAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,UAAU;AACtB,SAASC,mBAAmB;AAE5B,SAASC,qBAAqB;AAC9B,SAAkCC,iCAAiC;AACnE,SAASC,kBAAkBC,yBAAyB;AACpD,SAASC,WAAW;;;ACRpB,SAASC,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,iBAAiBD,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAME,iBAAiBF,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMG,eAAeH,KAAK,MAAM,OAAO,8BAAA,CAAA;;;;ADYvC,IAAMI,4BAA4B,CACvCC,OACAC,IACAC,SAAAA;AAEA,QAAMC,iBAAiBC,cAAcC,uBAAuBC,cAAc;AAC1E,QAAMC,UAAUP,UAAUQ,SAAYL,eAAeM,WAAWT,MAAMU,EAAE,IAAIF;AAE5E,SAAOG,YAAY,MAAA;AACjB,QAAI,CAACJ,SAAS;AACZ,YAAM,IAAIK,UAAU,iDAAA;IACtB;AAEA,WAAOL,QAAQM,WAAWZ,GAAAA,CAAAA;EAC5B,GAAG;IAACM;OAAaL,QAAQ,CAAA;GAAI;AAC/B;AAGO,IAAMY,4BAA4B,CAAOC,aAAuCC,cAC9EC,WAAI,aAAA;AACT,QAAMC,SAAS,OAAOC;AACtB,QAAMC,QAAQ,OAAOF,OAAOG,qBAAqB;IAC/CC,QAAQd;IACRe,SAAS;MACPC,MAAM,CAAC;IACT;EACF,CAAA;AAGA,QAAMC,SAAS,OAAOC,0BAA0BC,eAAeZ,aAAaC,SAAAA,EAAWY,KAC9EC,eAAQC,kBAAkBC,WAAWX,MAAMY,oBAAoB,CAAA,GAC/DC,WAAI;AAGb,MAASC,eAAUT,MAAAA,GAAS;AAC1B,UAAMU,QAAcC,mBAAaX,OAAOY,KAAK,EAAE,CAAA;AAC/CC,QAAIH,MAAMA,MAAMI,SAASJ,MAAME,SAASF,MAAMK,OAAK;;;;;;EACrD;AAEA,SAAOtB,OAAOuB,mBAAmB;IAC/BrB;;IAEAsB,WAAgBR,eAAUT,MAAAA,IAAgBW,mBAAaX,OAAOY,KAAK,EAAE,CAAA,IAAK7B;EAC5E,CAAA;AAEA,SAAOiB;AACT,CAAA;;;AE/DF,YAAYkB,aAAY;AAExB,SAASC,cAAc;AACvB,SAASC,eAAe;AACxB,SAASC,yBAAyB;AAClC,SAAqBC,gBAAgB;AACrC,SAASC,qBAAqB;AAWvB,IAAMC,4BAA4B,CAACC,UAAAA;AACxC,QAAMC,WAAWC,SAASF,OAAOG,OAAOC,KAAKC,QAAQA,OAAO,CAAA;AAE5D,QAAM,CAACC,gBAAgBC,iBAAAA,IAAqBC,cAC1CC,0BAA0BT,OAAO,MAAMU,kBAAkBC,KAAYC,YAAI,CAACC,MAAMA,EAAEC,OAAO,CAAA,CAAA,CAAA;AAG3F,QAAMC,QAAQN,0BACZT,OACOgB,mBAAW,aAAA;AAChB,UAAMC,aAAa,OAAOP;AAC1B,WAAOO,WAAWF,MAAK;AACvBR,sBAAkB,IAAA;EACpB,CAAA,CAAA;AAGF,QAAMW,OAAOT,0BACXT,OACOgB,mBAAW,aAAA;AAChB,UAAMC,aAAa,OAAOP;AAC1B,WAAOO,WAAWC,KAAI;AACtBX,sBAAkB,KAAA;EACpB,CAAA,CAAA;AAGF,SAAO;IACLN;IACAkB,WAAWb,kBAAkB;IAC7BS,OAAO,MAAM,KAAKA,MAAAA;IAClBG,MAAM,MAAM,KAAKA,KAAAA;EACnB;AACF;",
|
|
6
|
+
"names": ["Cause", "Effect", "Exit", "useCallback", "useCapability", "FunctionInvocationService", "InvocationTracer", "TracingServiceExt", "log", "lazy", "AppGraphBuilder", "lazy", "ComputeRuntime", "IntentResolver", "ReactSurface", "useComputeRuntimeCallback", "space", "fn", "deps", "computeRuntime", "useCapability", "AutomationCapabilities", "ComputeRuntime", "runtime", "undefined", "getRuntime", "id", "useCallback", "TypeError", "runPromise", "invokeFunctionWithTracing", "functionDef", "inputData", "gen", "tracer", "InvocationTracer", "trace", "traceInvocationStart", "target", "payload", "data", "result", "FunctionInvocationService", "invokeFunction", "pipe", "provide", "TracingServiceExt", "layerQueue", "invocationTraceQueue", "exit", "isFailure", "error", "prettyErrors", "cause", "log", "message", "stack", "traceInvocationEnd", "exception", "Effect", "Filter", "Trigger", "TriggerDispatcher", "useQuery", "useAsyncState", "useTriggerRuntimeControls", "space", "triggers", "useQuery", "Filter", "type", "Trigger", "isRunningState", "setIsRunningState", "useAsyncState", "useComputeRuntimeCallback", "TriggerDispatcher", "pipe", "map", "t", "running", "start", "fnUntraced", "dispatcher", "stop", "isRunning"]
|
|
7
|
+
}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
meta
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LZQFZO3B.mjs";
|
|
4
4
|
|
|
5
5
|
// src/components/TriggerEditor/TriggerEditor.tsx
|
|
6
6
|
import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
|
|
7
7
|
import React3, { useCallback as useCallback3, useMemo as useMemo3 } from "react";
|
|
8
8
|
import { ComputeGraph } from "@dxos/conductor";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { DXN } from "@dxos/echo";
|
|
10
|
+
import { Function, Script, Trigger as Trigger2 } from "@dxos/functions";
|
|
11
11
|
import { Filter as Filter2, Ref as Ref2, useQuery } from "@dxos/react-client/echo";
|
|
12
|
-
import { Input
|
|
13
|
-
import {
|
|
12
|
+
import { Input } from "@dxos/react-ui";
|
|
13
|
+
import { QueryForm } from "@dxos/react-ui-components";
|
|
14
14
|
import { Form as Form2, InputHeader, SelectInput as SelectInput2, useRefQueryLookupHandler } from "@dxos/react-ui-form";
|
|
15
|
-
import { inputTheme, mx } from "@dxos/react-ui-theme";
|
|
16
15
|
|
|
17
16
|
// src/components/TriggerEditor/FunctionInputEditor.tsx
|
|
18
17
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
@@ -85,7 +84,7 @@ var FunctionInputEditor = ({ functions, getValue, onValueChange, onQueryRefOptio
|
|
|
85
84
|
import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
|
|
86
85
|
import React2, { useCallback as useCallback2, useMemo as useMemo2 } from "react";
|
|
87
86
|
import { Filter, Query } from "@dxos/echo";
|
|
88
|
-
import {
|
|
87
|
+
import { Trigger } from "@dxos/functions";
|
|
89
88
|
import { useTranslation } from "@dxos/react-ui";
|
|
90
89
|
import { SelectInput, useInputProps } from "@dxos/react-ui-form";
|
|
91
90
|
var SpecSelector = (props) => {
|
|
@@ -107,7 +106,6 @@ var SpecSelector = (props) => {
|
|
|
107
106
|
return {
|
|
108
107
|
kind: "subscription",
|
|
109
108
|
query: {
|
|
110
|
-
string: "Query.select(Filter.nothing())",
|
|
111
109
|
ast: Query.select(Filter.nothing()).ast
|
|
112
110
|
}
|
|
113
111
|
};
|
|
@@ -136,7 +134,7 @@ var SpecSelector = (props) => {
|
|
|
136
134
|
}, [
|
|
137
135
|
specProps
|
|
138
136
|
]);
|
|
139
|
-
const options = useMemo2(() =>
|
|
137
|
+
const options = useMemo2(() => Trigger.Kinds.map((kind) => ({
|
|
140
138
|
value: kind,
|
|
141
139
|
label: t(`trigger type ${kind}`)
|
|
142
140
|
})), [
|
|
@@ -153,10 +151,10 @@ var SpecSelector = (props) => {
|
|
|
153
151
|
};
|
|
154
152
|
|
|
155
153
|
// src/components/TriggerEditor/TriggerEditor.tsx
|
|
156
|
-
var TriggerEditor = ({ space, trigger, readonlySpec, onSave, onCancel }) => {
|
|
154
|
+
var TriggerEditor = ({ space, trigger, readonlySpec, types, tags, onSave, onCancel }) => {
|
|
157
155
|
var _effect = _useSignals3();
|
|
158
156
|
try {
|
|
159
|
-
const handleSave = (values) => {
|
|
157
|
+
const handleSave = ({ id: _, ...values }) => {
|
|
160
158
|
onSave?.(values);
|
|
161
159
|
};
|
|
162
160
|
const handleRefQueryLookup = useRefQueryLookupHandler({
|
|
@@ -165,12 +163,14 @@ var TriggerEditor = ({ space, trigger, readonlySpec, onSave, onCancel }) => {
|
|
|
165
163
|
const Custom = useCustomInputs({
|
|
166
164
|
space,
|
|
167
165
|
readonlySpec,
|
|
166
|
+
types,
|
|
167
|
+
tags,
|
|
168
168
|
onQueryRefOptions: handleRefQueryLookup
|
|
169
169
|
});
|
|
170
170
|
return /* @__PURE__ */ React3.createElement(Form2, {
|
|
171
171
|
outerSpacing: false,
|
|
172
172
|
Custom,
|
|
173
|
-
schema:
|
|
173
|
+
schema: Trigger2.Trigger,
|
|
174
174
|
values: trigger,
|
|
175
175
|
onSave: handleSave,
|
|
176
176
|
onCancel,
|
|
@@ -180,11 +180,10 @@ var TriggerEditor = ({ space, trigger, readonlySpec, onSave, onCancel }) => {
|
|
|
180
180
|
_effect.f();
|
|
181
181
|
}
|
|
182
182
|
};
|
|
183
|
-
var useCustomInputs = ({ space, readonlySpec, onQueryRefOptions }) => {
|
|
184
|
-
const
|
|
185
|
-
const functions = useQuery(space, Filter2.type(FunctionType));
|
|
183
|
+
var useCustomInputs = ({ space, readonlySpec, types, tags, onQueryRefOptions }) => {
|
|
184
|
+
const functions = useQuery(space, Filter2.type(Function.Function));
|
|
186
185
|
const workflows = useQuery(space, Filter2.type(ComputeGraph));
|
|
187
|
-
const scripts = useQuery(space, Filter2.type(
|
|
186
|
+
const scripts = useQuery(space, Filter2.type(Script.Script));
|
|
188
187
|
return useMemo3(() => ({
|
|
189
188
|
// Function selector.
|
|
190
189
|
["function"]: (props) => {
|
|
@@ -198,7 +197,7 @@ var useCustomInputs = ({ space, readonlySpec, onQueryRefOptions }) => {
|
|
|
198
197
|
props
|
|
199
198
|
]);
|
|
200
199
|
const handleOnValueChange = useCallback3((_type, dxnString) => {
|
|
201
|
-
const dxn =
|
|
200
|
+
const dxn = DXN.parse(dxnString);
|
|
202
201
|
if (dxn) {
|
|
203
202
|
const ref = Ref2.fromDXN(dxn);
|
|
204
203
|
props.onValueChange("object", ref);
|
|
@@ -221,32 +220,17 @@ var useCustomInputs = ({ space, readonlySpec, onQueryRefOptions }) => {
|
|
|
221
220
|
// TODO(wittjosiah): Copied from ViewEditor.
|
|
222
221
|
// Query input editor.
|
|
223
222
|
["spec.query"]: (props) => {
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
...value,
|
|
230
|
-
string: text
|
|
231
|
-
}), []);
|
|
232
|
-
const extensions = useMemo3(() => [
|
|
233
|
-
createBasicExtensions({
|
|
234
|
-
readOnly: readonlySpec,
|
|
235
|
-
placeholder: t("query placeholder")
|
|
236
|
-
}),
|
|
237
|
-
createThemeExtensions({
|
|
238
|
-
themeMode
|
|
239
|
-
})
|
|
240
|
-
], []);
|
|
223
|
+
const handleChange = useCallback3((query) => props.onValueChange("object", {
|
|
224
|
+
ast: query.ast
|
|
225
|
+
}), [
|
|
226
|
+
props.onValueChange
|
|
227
|
+
]);
|
|
241
228
|
return /* @__PURE__ */ React3.createElement(Input.Root, null, /* @__PURE__ */ React3.createElement(InputHeader, {
|
|
242
229
|
label: props.label
|
|
243
|
-
}), /* @__PURE__ */ React3.createElement(
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}), "flex items-center", "focus-within:bg-focusSurface focus-within:border-separator focus-within:hover:bg-focusSurface"),
|
|
248
|
-
extensions,
|
|
249
|
-
value: value.string,
|
|
230
|
+
}), /* @__PURE__ */ React3.createElement(QueryForm, {
|
|
231
|
+
initialQuery: props.getValue().ast,
|
|
232
|
+
types,
|
|
233
|
+
tags,
|
|
250
234
|
onChange: handleChange
|
|
251
235
|
}));
|
|
252
236
|
},
|
|
@@ -280,4 +264,4 @@ var getFunctionOptions = (scripts, functions) => {
|
|
|
280
264
|
export {
|
|
281
265
|
TriggerEditor
|
|
282
266
|
};
|
|
283
|
-
//# sourceMappingURL=chunk-
|
|
267
|
+
//# sourceMappingURL=chunk-7W6QMY3L.mjs.map
|