@dxos/plugin-automation 0.7.5-main.9d2a38b → 0.7.5-main.e94eead
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-ITYXSN5Z.mjs +132 -0
- package/dist/lib/browser/AutomationPanel-ITYXSN5Z.mjs.map +7 -0
- package/dist/lib/browser/{chunk-HKX3D3ZP.mjs → chunk-OFDNNRLE.mjs} +4 -7
- package/dist/lib/browser/{chunk-HKX3D3ZP.mjs.map → chunk-OFDNNRLE.mjs.map} +3 -3
- package/dist/lib/browser/chunk-U7QLNY2S.mjs +8 -0
- package/dist/lib/browser/chunk-U7QLNY2S.mjs.map +7 -0
- package/dist/lib/browser/chunk-WY2C7JY4.mjs +119 -0
- package/dist/lib/browser/chunk-WY2C7JY4.mjs.map +7 -0
- package/dist/lib/browser/complementary-panel-4CPOJL4Y.mjs +56 -0
- package/dist/lib/browser/complementary-panel-4CPOJL4Y.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +21 -313
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-LL72F3F4.mjs → react-surface-SAPMN4PF.mjs} +4 -11
- package/dist/lib/browser/react-surface-SAPMN4PF.mjs.map +7 -0
- package/dist/lib/node/{AutomationPanel-PPODB5XA.cjs → AutomationPanel-X33HHDMQ.cjs} +19 -117
- package/dist/lib/node/AutomationPanel-X33HHDMQ.cjs.map +7 -0
- package/dist/lib/node/chunk-7Q5SNGCL.cjs +148 -0
- package/dist/lib/node/chunk-7Q5SNGCL.cjs.map +7 -0
- package/dist/lib/node/{chunk-25AQIF3L.cjs → chunk-CB5OB6JH.cjs} +5 -8
- package/dist/lib/node/chunk-CB5OB6JH.cjs.map +7 -0
- package/dist/lib/node/{chunk-5VF5JKUN.cjs → chunk-ORMEYEBE.cjs} +7 -10
- package/dist/lib/node/{chunk-5VF5JKUN.cjs.map → chunk-ORMEYEBE.cjs.map} +3 -3
- package/dist/lib/node/complementary-panel-ZYJJ42ZU.cjs +72 -0
- package/dist/lib/node/complementary-panel-ZYJJ42ZU.cjs.map +7 -0
- package/dist/lib/node/index.cjs +26 -318
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-DVAU4MGD.cjs → react-surface-2WRVAPGR.cjs} +9 -15
- package/dist/lib/node/react-surface-2WRVAPGR.cjs.map +7 -0
- package/dist/lib/node-esm/AutomationPanel-HY3GB4BT.mjs +133 -0
- package/dist/lib/node-esm/AutomationPanel-HY3GB4BT.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-X3LPRWIL.mjs → chunk-6MUUH67V.mjs} +4 -7
- package/dist/lib/node-esm/{chunk-X3LPRWIL.mjs.map → chunk-6MUUH67V.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-XW7TEQA3.mjs → chunk-R3P2WPBQ.mjs} +2 -4
- package/dist/lib/node-esm/chunk-R3P2WPBQ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-UDD2VA6G.mjs +120 -0
- package/dist/lib/node-esm/chunk-UDD2VA6G.mjs.map +7 -0
- package/dist/lib/node-esm/complementary-panel-S42RIIAY.mjs +57 -0
- package/dist/lib/node-esm/complementary-panel-S42RIIAY.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +21 -313
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-4BED2PZ4.mjs → react-surface-QWLPOYXO.mjs} +4 -11
- package/dist/lib/node-esm/react-surface-QWLPOYXO.mjs.map +7 -0
- package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/complementary-panel.d.ts +4 -0
- package/dist/types/src/capabilities/complementary-panel.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +2 -178
- package/dist/types/src/capabilities/index.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 +1 -2
- package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
- package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
- package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +1 -2
- package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
- package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +0 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +1 -1
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/{testing.d.ts → test-functions.d.ts} +1 -1
- package/dist/types/src/testing/test-functions.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +2 -20
- package/dist/types/src/translations.d.ts.map +1 -1
- package/package.json +23 -57
- package/src/AutomationPlugin.tsx +10 -42
- package/src/capabilities/complementary-panel.ts +56 -0
- package/src/capabilities/index.ts +1 -1
- package/src/capabilities/react-surface.tsx +1 -6
- package/src/components/AutomationPanel/AutomationPanel.stories.tsx +1 -2
- package/src/components/AutomationPanel/AutomationPanel.tsx +56 -49
- package/src/components/TriggerEditor/TriggerEditor.stories.tsx +1 -2
- package/src/components/TriggerEditor/TriggerEditor.tsx +25 -18
- package/src/components/index.ts +2 -1
- package/src/index.ts +2 -3
- package/src/meta.ts +3 -3
- package/src/testing/index.ts +1 -1
- package/src/testing/{testing.ts → test-functions.ts} +2 -2
- package/src/translations.ts +2 -23
- package/dist/lib/browser/AssistantPanel-N276BTPV.mjs +0 -339
- package/dist/lib/browser/AssistantPanel-N276BTPV.mjs.map +0 -7
- package/dist/lib/browser/AutomationPanel-IHZ4JKVS.mjs +0 -232
- package/dist/lib/browser/AutomationPanel-IHZ4JKVS.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-IJTTULDP.mjs +0 -131
- package/dist/lib/browser/app-graph-builder-IJTTULDP.mjs.map +0 -7
- package/dist/lib/browser/chunk-4AIMDHKY.mjs +0 -10
- package/dist/lib/browser/chunk-4AIMDHKY.mjs.map +0 -7
- package/dist/lib/browser/chunk-DL6LB2NI.mjs +0 -43
- package/dist/lib/browser/chunk-DL6LB2NI.mjs.map +0 -7
- package/dist/lib/browser/react-surface-LL72F3F4.mjs.map +0 -7
- package/dist/lib/browser/types/index.mjs +0 -13
- package/dist/lib/browser/types/index.mjs.map +0 -7
- package/dist/lib/node/AssistantPanel-Z4GVHUF3.cjs +0 -359
- package/dist/lib/node/AssistantPanel-Z4GVHUF3.cjs.map +0 -7
- package/dist/lib/node/AutomationPanel-PPODB5XA.cjs.map +0 -7
- package/dist/lib/node/app-graph-builder-MF5M4QRS.cjs +0 -147
- package/dist/lib/node/app-graph-builder-MF5M4QRS.cjs.map +0 -7
- package/dist/lib/node/chunk-25AQIF3L.cjs.map +0 -7
- package/dist/lib/node/chunk-JNDMZQH7.cjs +0 -68
- package/dist/lib/node/chunk-JNDMZQH7.cjs.map +0 -7
- package/dist/lib/node/react-surface-DVAU4MGD.cjs.map +0 -7
- package/dist/lib/node/types/index.cjs +0 -35
- package/dist/lib/node/types/index.cjs.map +0 -7
- package/dist/lib/node-esm/AssistantPanel-DDCQHBJX.mjs +0 -340
- package/dist/lib/node-esm/AssistantPanel-DDCQHBJX.mjs.map +0 -7
- package/dist/lib/node-esm/AutomationPanel-R3D6CRF5.mjs +0 -233
- package/dist/lib/node-esm/AutomationPanel-R3D6CRF5.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-5N7OK23B.mjs +0 -132
- package/dist/lib/node-esm/app-graph-builder-5N7OK23B.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GIAYUM5I.mjs +0 -45
- package/dist/lib/node-esm/chunk-GIAYUM5I.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XW7TEQA3.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-4BED2PZ4.mjs.map +0 -7
- package/dist/lib/node-esm/types/index.mjs +0 -14
- package/dist/lib/node-esm/types/index.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -180
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts +0 -8
- package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts.map +0 -1
- package/dist/types/src/components/AssistantPanel/index.d.ts +0 -3
- package/dist/types/src/components/AssistantPanel/index.d.ts.map +0 -1
- package/dist/types/src/components/AssistantPanel/system-instructions.d.ts +0 -6
- package/dist/types/src/components/AssistantPanel/system-instructions.d.ts.map +0 -1
- package/dist/types/src/components/PromptEditor/PromptEditor.d.ts +0 -10
- package/dist/types/src/components/PromptEditor/PromptEditor.d.ts.map +0 -1
- package/dist/types/src/components/PromptEditor/PromptEditor.stories.d.ts +0 -6
- package/dist/types/src/components/PromptEditor/PromptEditor.stories.d.ts.map +0 -1
- package/dist/types/src/components/PromptEditor/index.d.ts +0 -2
- package/dist/types/src/components/PromptEditor/index.d.ts.map +0 -1
- package/dist/types/src/components/PromptEditor/prompt-extension.d.ts +0 -4
- package/dist/types/src/components/PromptEditor/prompt-extension.d.ts.map +0 -1
- package/dist/types/src/components/PromptEditor/types.d.ts +0 -18
- package/dist/types/src/components/PromptEditor/types.d.ts.map +0 -1
- package/dist/types/src/hooks/email.d.ts +0 -4
- package/dist/types/src/hooks/email.d.ts.map +0 -1
- package/dist/types/src/hooks/index.d.ts +0 -2
- package/dist/types/src/hooks/index.d.ts.map +0 -1
- package/dist/types/src/hooks/invocation-handler.d.ts +0 -5
- package/dist/types/src/hooks/invocation-handler.d.ts.map +0 -1
- package/dist/types/src/hooks/useLocalTriggerManager.d.ts +0 -3
- package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +0 -1
- package/dist/types/src/presets.d.ts +0 -9
- package/dist/types/src/presets.d.ts.map +0 -1
- package/dist/types/src/testing/testing.d.ts.map +0 -1
- package/dist/types/src/types/index.d.ts +0 -2
- package/dist/types/src/types/index.d.ts.map +0 -1
- package/dist/types/src/types/schema.d.ts +0 -63
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder.ts +0 -127
- package/src/components/AssistantPanel/AssistantPanel.tsx +0 -230
- package/src/components/AssistantPanel/index.ts +0 -7
- package/src/components/AssistantPanel/system-instructions.ts +0 -166
- package/src/components/PromptEditor/PromptEditor.stories.tsx +0 -64
- package/src/components/PromptEditor/PromptEditor.tsx +0 -222
- package/src/components/PromptEditor/index.ts +0 -5
- package/src/components/PromptEditor/prompt-extension.ts +0 -43
- package/src/components/PromptEditor/types.tsx +0 -28
- package/src/hooks/email.ts +0 -49
- package/src/hooks/index.ts +0 -5
- package/src/hooks/invocation-handler.ts +0 -109
- package/src/hooks/useLocalTriggerManager.ts +0 -82
- package/src/presets.ts +0 -248
- package/src/types/index.ts +0 -5
- package/src/types/schema.ts +0 -38
|
@@ -26,12 +26,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var AutomationPanel_X33HHDMQ_exports = {};
|
|
30
|
+
__export(AutomationPanel_X33HHDMQ_exports, {
|
|
31
31
|
default: () => AutomationPanel_default
|
|
32
32
|
});
|
|
33
|
-
module.exports = __toCommonJS(
|
|
34
|
-
var
|
|
33
|
+
module.exports = __toCommonJS(AutomationPanel_X33HHDMQ_exports);
|
|
34
|
+
var import_chunk_7Q5SNGCL = require("./chunk-7Q5SNGCL.cjs");
|
|
35
|
+
var import_chunk_ORMEYEBE = require("./chunk-ORMEYEBE.cjs");
|
|
35
36
|
var import_react = __toESM(require("react"));
|
|
36
37
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
37
38
|
var import_functions = require("@dxos/functions");
|
|
@@ -40,109 +41,9 @@ var import_echo = require("@dxos/react-client/echo");
|
|
|
40
41
|
var import_react_ui = require("@dxos/react-ui");
|
|
41
42
|
var import_react_ui_list = require("@dxos/react-ui-list");
|
|
42
43
|
var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
43
|
-
var import_react2 = __toESM(require("react"));
|
|
44
|
-
var import_functions2 = require("@dxos/functions");
|
|
45
|
-
var import_echo2 = require("@dxos/react-client/echo");
|
|
46
|
-
var import_react_ui2 = require("@dxos/react-ui");
|
|
47
|
-
var import_react_ui_form = require("@dxos/react-ui-form");
|
|
48
|
-
var TriggerEditor = ({ space, trigger, onSave, onCancel }) => {
|
|
49
|
-
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_5VF5JKUN.AUTOMATION_PLUGIN);
|
|
50
|
-
const functions = (0, import_echo2.useQuery)(space, import_echo2.Filter.schema(import_functions2.FunctionType));
|
|
51
|
-
const scripts = (0, import_echo2.useQuery)(space, import_echo2.Filter.schema(import_functions2.ScriptType));
|
|
52
|
-
const handleSave = (values) => {
|
|
53
|
-
onSave?.(values);
|
|
54
|
-
};
|
|
55
|
-
return /* @__PURE__ */ import_react2.default.createElement(import_react_ui_form.Form, {
|
|
56
|
-
schema: import_functions2.FunctionTriggerSchema,
|
|
57
|
-
values: trigger,
|
|
58
|
-
onSave: handleSave,
|
|
59
|
-
onCancel,
|
|
60
|
-
Custom: {
|
|
61
|
-
["function"]: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react_ui_form.SelectInput, {
|
|
62
|
-
...props,
|
|
63
|
-
options: functions.map((fn) => ({
|
|
64
|
-
value: fn.name,
|
|
65
|
-
label: getFunctionName(scripts, fn)
|
|
66
|
-
}))
|
|
67
|
-
}),
|
|
68
|
-
["spec.type"]: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react_ui_form.SelectInput, {
|
|
69
|
-
...props,
|
|
70
|
-
options: Object.values(import_functions2.TriggerKind).map((kind) => ({
|
|
71
|
-
value: kind,
|
|
72
|
-
label: t(`trigger type ${kind}`)
|
|
73
|
-
}))
|
|
74
|
-
}),
|
|
75
|
-
["meta"]: (props) => {
|
|
76
|
-
const meta = props.getValue("meta");
|
|
77
|
-
const [newMetaFieldName, setNewMetaFieldName] = (0, import_react2.useState)("");
|
|
78
|
-
import_react2.default.useEffect(() => props.onValueChange("meta", "object", {
|
|
79
|
-
...meta
|
|
80
|
-
}), []);
|
|
81
|
-
return /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null, /* @__PURE__ */ import_react2.default.createElement("div", null, props.label), [
|
|
82
|
-
...Object.keys(meta)
|
|
83
|
-
].map((key) => {
|
|
84
|
-
const compositeKey = `meta.${key}`;
|
|
85
|
-
return /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
86
|
-
key: compositeKey,
|
|
87
|
-
role: "none",
|
|
88
|
-
className: "flex items-center mt-2 gap-1"
|
|
89
|
-
}, /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
90
|
-
role: "none",
|
|
91
|
-
className: "flex-1"
|
|
92
|
-
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_form.TextInput, {
|
|
93
|
-
...props,
|
|
94
|
-
property: compositeKey,
|
|
95
|
-
type: "string",
|
|
96
|
-
label: key
|
|
97
|
-
})), /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.IconButton, {
|
|
98
|
-
icon: "ph--trash--regular",
|
|
99
|
-
iconOnly: true,
|
|
100
|
-
classNames: "mt-6",
|
|
101
|
-
label: t("trigger meta remove"),
|
|
102
|
-
onClick: () => {
|
|
103
|
-
const newValues = {
|
|
104
|
-
...props.getValue("meta")
|
|
105
|
-
};
|
|
106
|
-
delete newValues[key];
|
|
107
|
-
props.onValueChange("meta", "object", newValues);
|
|
108
|
-
}
|
|
109
|
-
}));
|
|
110
|
-
}), /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
111
|
-
role: "none",
|
|
112
|
-
className: "flex items-center mt-2 gap-1 plb-1"
|
|
113
|
-
}, /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
114
|
-
role: "none",
|
|
115
|
-
className: "flex-1"
|
|
116
|
-
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Input.Root, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Input.TextInput, {
|
|
117
|
-
placeholder: t("trigger meta prop name placeholder"),
|
|
118
|
-
value: newMetaFieldName,
|
|
119
|
-
onChange: (event) => setNewMetaFieldName(event.target.value)
|
|
120
|
-
}))), /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.IconButton, {
|
|
121
|
-
icon: "ph--plus--regular",
|
|
122
|
-
iconOnly: true,
|
|
123
|
-
label: t("trigger meta add"),
|
|
124
|
-
onClick: () => {
|
|
125
|
-
if (newMetaFieldName.length) {
|
|
126
|
-
const meta2 = props.getValue("meta") ?? {};
|
|
127
|
-
const metaWithNewProp = {
|
|
128
|
-
...meta2,
|
|
129
|
-
[newMetaFieldName]: ""
|
|
130
|
-
};
|
|
131
|
-
setNewMetaFieldName("");
|
|
132
|
-
props.onValueChange("meta", "object", metaWithNewProp);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
})));
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
};
|
|
140
|
-
var getFunctionName = (scripts, fn) => {
|
|
141
|
-
return scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;
|
|
142
|
-
};
|
|
143
44
|
var grid = "grid grid-cols-[40px_1fr_32px] min-bs-[2.5rem]";
|
|
144
45
|
var AutomationPanel = ({ space, object }) => {
|
|
145
|
-
const { t } = (0, import_react_ui.useTranslation)(
|
|
46
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_ORMEYEBE.AUTOMATION_PLUGIN);
|
|
146
47
|
const client = (0, import_react_client.useClient)();
|
|
147
48
|
const triggers = (0, import_echo.useQuery)(space, import_echo.Filter.schema(import_functions.FunctionTrigger));
|
|
148
49
|
const functions = (0, import_echo.useQuery)(space, import_echo.Filter.schema(import_functions.FunctionType));
|
|
@@ -177,9 +78,9 @@ var AutomationPanel = ({ space, object }) => {
|
|
|
177
78
|
const handleCancel = () => {
|
|
178
79
|
setTrigger(void 0);
|
|
179
80
|
};
|
|
180
|
-
return /* @__PURE__ */ import_react.default.createElement("div", {
|
|
181
|
-
className: "flex flex-col w-full
|
|
182
|
-
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui_list.List.Root, {
|
|
81
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react_ui.Clipboard.Provider, null, /* @__PURE__ */ import_react.default.createElement("div", {
|
|
82
|
+
className: "flex flex-col w-full"
|
|
83
|
+
}, !trigger && /* @__PURE__ */ import_react.default.createElement(import_react_ui_list.List.Root, {
|
|
183
84
|
items: triggers,
|
|
184
85
|
isItem: import_echo_schema.S.is(import_functions.FunctionTrigger),
|
|
185
86
|
getId: (field) => field.id
|
|
@@ -200,12 +101,13 @@ var AutomationPanel = ({ space, object }) => {
|
|
|
200
101
|
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui_list.List.ItemTitle, {
|
|
201
102
|
classNames: "px-1 cursor-pointer w-0 shrink truncate",
|
|
202
103
|
onClick: () => handleSelect(trigger2)
|
|
203
|
-
},
|
|
204
|
-
|
|
205
|
-
|
|
104
|
+
}, getFunctionName(scripts, functions, trigger2) ?? "\u2205"), copyAction && /* @__PURE__ */ import_react.default.createElement(import_react_ui.Clipboard.IconButton, {
|
|
105
|
+
label: t(copyAction.translationKey),
|
|
106
|
+
value: copyAction.contentProvider()
|
|
107
|
+
})), /* @__PURE__ */ import_react.default.createElement(import_react_ui_list.List.ItemDeleteButton, {
|
|
206
108
|
onClick: () => handleDelete(trigger2)
|
|
207
109
|
}));
|
|
208
|
-
}))), trigger && /* @__PURE__ */ import_react.default.createElement(TriggerEditor, {
|
|
110
|
+
}))), trigger && /* @__PURE__ */ import_react.default.createElement(import_chunk_7Q5SNGCL.TriggerEditor, {
|
|
209
111
|
space,
|
|
210
112
|
trigger,
|
|
211
113
|
onSave: handleSave,
|
|
@@ -214,9 +116,9 @@ var AutomationPanel = ({ space, object }) => {
|
|
|
214
116
|
className: "flex p-2 justify-center"
|
|
215
117
|
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.IconButton, {
|
|
216
118
|
icon: "ph--plus--regular",
|
|
217
|
-
label: t("new trigger"),
|
|
119
|
+
label: t("new trigger label"),
|
|
218
120
|
onClick: handleAdd
|
|
219
|
-
})));
|
|
121
|
+
}))));
|
|
220
122
|
};
|
|
221
123
|
var getCopyAction = (client, trigger) => {
|
|
222
124
|
if (trigger?.spec?.type === import_functions.TriggerKind.Email) {
|
|
@@ -240,13 +142,13 @@ var getWebhookUrl = (client, trigger) => {
|
|
|
240
142
|
edgeUrl.protocol = isSecure ? "https" : "http";
|
|
241
143
|
return new URL(`/webhook/${spaceId}:${trigger.id}`, edgeUrl).toString();
|
|
242
144
|
};
|
|
243
|
-
var
|
|
145
|
+
var getFunctionName = (scripts, functions, trigger) => {
|
|
244
146
|
const shortId = trigger.function && `${trigger.function?.slice(0, 16)}\u2026`;
|
|
245
|
-
const functionObject = functions.find((fn) => fn.name === trigger.function);
|
|
147
|
+
const functionObject = functions.find((fn) => `dxn:worker:${fn.name}` === trigger.function);
|
|
246
148
|
if (!functionObject) {
|
|
247
149
|
return shortId;
|
|
248
150
|
}
|
|
249
151
|
return scripts.find((s) => functionObject.source?.target?.id === s.id)?.name ?? shortId;
|
|
250
152
|
};
|
|
251
153
|
var AutomationPanel_default = AutomationPanel;
|
|
252
|
-
//# sourceMappingURL=AutomationPanel-
|
|
154
|
+
//# sourceMappingURL=AutomationPanel-X33HHDMQ.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/AutomationPanel/AutomationPanel.tsx", "../../../src/components/AutomationPanel/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport { S } from '@dxos/echo-schema';\nimport {\n FunctionType,\n FunctionTrigger,\n FunctionTriggerSchema,\n TriggerKind,\n type FunctionTriggerType,\n ScriptType,\n} from '@dxos/functions';\nimport { type Client, useClient } from '@dxos/react-client';\nimport { create, Filter, useQuery, type Space, type ReactiveObject, getSpace } from '@dxos/react-client/echo';\nimport { Clipboard, IconButton, Input, useTranslation } from '@dxos/react-ui';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/react-ui-theme';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\nimport { TriggerEditor, type TriggerEditorProps } from '../TriggerEditor';\n\nconst grid = 'grid grid-cols-[40px_1fr_32px] min-bs-[2.5rem]';\n\nexport type AutomationPanelProps = {\n space: Space;\n object?: ReactiveObject<any>;\n};\n\n// TODO(burdon): Factor out common layout with ViewEditor.\nexport const AutomationPanel = ({ space, object }: AutomationPanelProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const client = useClient();\n const triggers = useQuery(space, Filter.schema(FunctionTrigger));\n const functions = useQuery(space, Filter.schema(FunctionType));\n const scripts = useQuery(space, Filter.schema(ScriptType));\n\n const [trigger, setTrigger] = useState<FunctionTriggerType>();\n const [selected, setSelected] = useState<FunctionTrigger>();\n\n const handleSelect = (trigger: FunctionTrigger) => {\n const { id: _, ...values } = trigger;\n setTrigger(values);\n setSelected(trigger);\n };\n\n const handleAdd = () => {\n setTrigger(create(FunctionTriggerSchema, { meta: {} }));\n setSelected(undefined);\n };\n\n const handleDelete = (trigger: FunctionTrigger) => {\n space.db.remove(trigger);\n setTrigger(undefined);\n setSelected(undefined);\n };\n\n const handleSave: TriggerEditorProps['onSave'] = (trigger) => {\n if (selected) {\n Object.assign(selected, trigger);\n } else {\n space.db.add(create(FunctionTrigger, trigger));\n }\n\n setTrigger(undefined);\n setSelected(undefined);\n };\n\n const handleCancel: TriggerEditorProps['onCancel'] = () => {\n setTrigger(undefined);\n };\n\n return (\n <Clipboard.Provider>\n <div className='flex flex-col w-full'>\n {!trigger && (\n <List.Root<FunctionTrigger> items={triggers} isItem={S.is(FunctionTrigger)} getId={(field) => field.id}>\n {({ items: triggers }) => (\n <div role='list' className='flex flex-col w-full'>\n {triggers?.map((trigger) => {\n const copyAction = getCopyAction(client, trigger);\n return (\n <List.Item<FunctionTrigger>\n key={trigger.id}\n item={trigger}\n classNames={mx(grid, ghostHover, 'items-center', 'px-2')}\n >\n <Input.Root>\n <Input.Switch\n checked={trigger.enabled}\n onCheckedChange={(checked) => (trigger.enabled = checked)}\n />\n </Input.Root>\n\n <div className={'flex'}>\n <List.ItemTitle\n classNames='px-1 cursor-pointer w-0 shrink truncate'\n onClick={() => handleSelect(trigger)}\n >\n {getFunctionName(scripts, functions, trigger) ?? '∅'}\n </List.ItemTitle>\n\n {/* TODO: a better way to expose copy action */}\n {copyAction && (\n <Clipboard.IconButton\n label={t(copyAction.translationKey)}\n value={copyAction.contentProvider()}\n />\n )}\n </div>\n\n <List.ItemDeleteButton onClick={() => handleDelete(trigger)} />\n </List.Item>\n );\n })}\n </div>\n )}\n </List.Root>\n )}\n\n {trigger && <TriggerEditor space={space} trigger={trigger} onSave={handleSave} onCancel={handleCancel} />}\n\n {!trigger && (\n <div className='flex p-2 justify-center'>\n <IconButton icon='ph--plus--regular' label={t('new trigger label')} onClick={handleAdd} />\n </div>\n )}\n </div>\n </Clipboard.Provider>\n );\n};\n\nconst getCopyAction = (client: Client, trigger: FunctionTrigger | undefined) => {\n if (trigger?.spec?.type === TriggerKind.Email) {\n return { translationKey: 'trigger copy email', contentProvider: () => `${getSpace(trigger)!.id}@dxos.network` };\n }\n\n if (trigger?.spec?.type === TriggerKind.Webhook) {\n return { translationKey: 'trigger copy url', contentProvider: () => getWebhookUrl(client, trigger) };\n }\n\n return undefined;\n};\n\nconst getWebhookUrl = (client: Client, trigger: FunctionTrigger) => {\n const spaceId = getSpace(trigger)!.id;\n const edgeUrl = new URL(client.config.values.runtime!.services!.edge!.url!);\n const isSecure = edgeUrl.protocol.startsWith('https') || edgeUrl.protocol.startsWith('wss');\n edgeUrl.protocol = isSecure ? 'https' : 'http';\n return new URL(`/webhook/${spaceId}:${trigger.id}`, edgeUrl).toString();\n};\n\nconst getFunctionName = (scripts: ScriptType[], functions: FunctionType[], trigger: FunctionTriggerType) => {\n // TODO(wittjosiah): Truncation should be done in the UI.\n // Warning that the List component is currently a can of worms.\n const shortId = trigger.function && `${trigger.function?.slice(0, 16)}…`;\n const functionObject = functions.find((fn) => `dxn:worker:${fn.name}` === trigger.function);\n if (!functionObject) {\n return shortId;\n }\n return scripts.find((s) => functionObject.source?.target?.id === s.id)?.name ?? shortId;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { AutomationPanel } from './AutomationPanel';\n\nexport default AutomationPanel;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["grid", "AutomationPanel", "space", "object", "t", "useTranslation", "AUTOMATION_PLUGIN", "client", "useClient", "triggers", "useQuery", "Filter", "schema", "FunctionTrigger", "functions", "FunctionType", "scripts", "ScriptType", "trigger", "setTrigger", "useState", "selected", "setSelected", "handleSelect", "id", "_", "values", "handleAdd", "create", "FunctionTriggerSchema", "meta", "undefined", "handleDelete", "db", "remove", "handleSave", "Object", "assign", "add", "handleCancel", "React", "Clipboard", "Provider", "div", "className", "List", "Root", "items", "isItem", "S", "is", "getId", "field", "role", "map", "copyAction", "getCopyAction", "Item", "key", "item", "classNames", "mx", "ghostHover", "Input", "Switch", "checked", "enabled", "onCheckedChange", "ItemTitle", "onClick", "getFunctionName", "IconButton", "label", "translationKey", "value", "contentProvider", "ItemDeleteButton", "TriggerEditor", "onSave", "onCancel", "icon", "spec", "type", "TriggerKind", "Email", "getSpace", "Webhook", "getWebhookUrl", "spaceId", "edgeUrl", "URL", "config", "runtime", "services", "edge", "url", "isSecure", "protocol", "startsWith", "toString", "shortId", "function", "slice", "functionObject", "find", "fn", "name", "s", "source", "target"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var chunk_7Q5SNGCL_exports = {};
|
|
30
|
+
__export(chunk_7Q5SNGCL_exports, {
|
|
31
|
+
TriggerEditor: () => TriggerEditor
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(chunk_7Q5SNGCL_exports);
|
|
34
|
+
var import_chunk_ORMEYEBE = require("./chunk-ORMEYEBE.cjs");
|
|
35
|
+
var import_react = __toESM(require("react"));
|
|
36
|
+
var import_conductor = require("@dxos/conductor");
|
|
37
|
+
var import_functions = require("@dxos/functions");
|
|
38
|
+
var import_echo = require("@dxos/react-client/echo");
|
|
39
|
+
var import_react_ui = require("@dxos/react-ui");
|
|
40
|
+
var import_react_ui_form = require("@dxos/react-ui-form");
|
|
41
|
+
var TriggerEditor = ({ space, trigger, onSave, onCancel }) => {
|
|
42
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_ORMEYEBE.AUTOMATION_PLUGIN);
|
|
43
|
+
const functions = (0, import_echo.useQuery)(space, import_echo.Filter.schema(import_functions.FunctionType));
|
|
44
|
+
const workflows = (0, import_echo.useQuery)(space, import_echo.Filter.schema(import_conductor.ComputeGraph));
|
|
45
|
+
const scripts = (0, import_echo.useQuery)(space, import_echo.Filter.schema(import_functions.ScriptType));
|
|
46
|
+
const handleSave = (values) => {
|
|
47
|
+
onSave?.(values);
|
|
48
|
+
};
|
|
49
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.Form, {
|
|
50
|
+
schema: import_functions.FunctionTriggerSchema,
|
|
51
|
+
values: trigger,
|
|
52
|
+
onSave: handleSave,
|
|
53
|
+
onCancel,
|
|
54
|
+
Custom: {
|
|
55
|
+
["function"]: (props) => /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.SelectInput, {
|
|
56
|
+
...props,
|
|
57
|
+
options: getWorkflowOptions(workflows).concat(getFunctionOptions(scripts, functions))
|
|
58
|
+
}),
|
|
59
|
+
["spec.type"]: (props) => /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.SelectInput, {
|
|
60
|
+
...props,
|
|
61
|
+
options: Object.values(import_functions.TriggerKind).map((kind) => ({
|
|
62
|
+
value: kind,
|
|
63
|
+
label: t(`trigger type ${kind}`)
|
|
64
|
+
}))
|
|
65
|
+
}),
|
|
66
|
+
["meta"]: (props) => {
|
|
67
|
+
const meta = props.getValue();
|
|
68
|
+
(0, import_react.useEffect)(() => props.onValueChange("object", {
|
|
69
|
+
...meta
|
|
70
|
+
}), []);
|
|
71
|
+
const [newMetaFieldName, setNewMetaFieldName] = (0, import_react.useState)("");
|
|
72
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("div", null, props.label), [
|
|
73
|
+
...Object.keys(meta)
|
|
74
|
+
].map((key) => {
|
|
75
|
+
const compositeKey = `meta.${key}`;
|
|
76
|
+
return /* @__PURE__ */ import_react.default.createElement("div", {
|
|
77
|
+
key: compositeKey,
|
|
78
|
+
role: "none",
|
|
79
|
+
className: "flex items-center mt-2 gap-1"
|
|
80
|
+
}, /* @__PURE__ */ import_react.default.createElement("div", {
|
|
81
|
+
role: "none",
|
|
82
|
+
className: "flex-1"
|
|
83
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.TextInput, {
|
|
84
|
+
...props,
|
|
85
|
+
getValue: () => props.getValue()[key],
|
|
86
|
+
type: "string",
|
|
87
|
+
label: key
|
|
88
|
+
})), /* @__PURE__ */ import_react.default.createElement(import_react_ui.IconButton, {
|
|
89
|
+
icon: "ph--trash--regular",
|
|
90
|
+
iconOnly: true,
|
|
91
|
+
classNames: "mt-6",
|
|
92
|
+
label: t("trigger meta remove"),
|
|
93
|
+
onClick: () => {
|
|
94
|
+
const newValues = {
|
|
95
|
+
...props.getValue()
|
|
96
|
+
};
|
|
97
|
+
delete newValues[key];
|
|
98
|
+
props.onValueChange("object", newValues);
|
|
99
|
+
}
|
|
100
|
+
}));
|
|
101
|
+
}), /* @__PURE__ */ import_react.default.createElement("div", {
|
|
102
|
+
role: "none",
|
|
103
|
+
className: "flex items-center mt-2 gap-1 plb-1"
|
|
104
|
+
}, /* @__PURE__ */ import_react.default.createElement("div", {
|
|
105
|
+
role: "none",
|
|
106
|
+
className: "flex-1"
|
|
107
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Root, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.TextInput, {
|
|
108
|
+
placeholder: t("trigger meta prop name placeholder"),
|
|
109
|
+
value: newMetaFieldName,
|
|
110
|
+
onChange: (event) => setNewMetaFieldName(event.target.value)
|
|
111
|
+
}))), /* @__PURE__ */ import_react.default.createElement(import_react_ui.IconButton, {
|
|
112
|
+
icon: "ph--plus--regular",
|
|
113
|
+
iconOnly: true,
|
|
114
|
+
label: t("trigger meta add"),
|
|
115
|
+
onClick: () => {
|
|
116
|
+
if (newMetaFieldName.length) {
|
|
117
|
+
const meta2 = props.getValue() ?? {};
|
|
118
|
+
const metaWithNewProp = {
|
|
119
|
+
...meta2,
|
|
120
|
+
[newMetaFieldName]: ""
|
|
121
|
+
};
|
|
122
|
+
setNewMetaFieldName("");
|
|
123
|
+
props.onValueChange("object", metaWithNewProp);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
})));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
var getWorkflowOptions = (graphs) => {
|
|
132
|
+
return graphs.map((graph) => ({
|
|
133
|
+
label: `compute-${graph.id}`,
|
|
134
|
+
value: `dxn:echo:@:${graph.id}`
|
|
135
|
+
}));
|
|
136
|
+
};
|
|
137
|
+
var getFunctionOptions = (scripts, functions) => {
|
|
138
|
+
const getLabel = (fn) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;
|
|
139
|
+
return functions.map((fn) => ({
|
|
140
|
+
label: getLabel(fn),
|
|
141
|
+
value: `dxn:worker:${fn.name}`
|
|
142
|
+
}));
|
|
143
|
+
};
|
|
144
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
145
|
+
0 && (module.exports = {
|
|
146
|
+
TriggerEditor
|
|
147
|
+
});
|
|
148
|
+
//# sourceMappingURL=chunk-7Q5SNGCL.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/TriggerEditor/TriggerEditor.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport {\n FunctionType,\n FunctionTriggerSchema,\n type FunctionTriggerType,\n type FunctionTrigger,\n ScriptType,\n TriggerKind,\n} from '@dxos/functions';\nimport { Filter, useQuery, type Space } from '@dxos/react-client/echo';\nimport { IconButton, Input, useTranslation } from '@dxos/react-ui';\nimport { Form, SelectInput, TextInput } from '@dxos/react-ui-form';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nexport type TriggerEditorProps = {\n space: Space;\n trigger: FunctionTriggerType;\n onSave?: (trigger: Omit<FunctionTrigger, 'id'>) => void;\n onCancel?: () => void;\n};\n\nexport const TriggerEditor = ({ space, trigger, onSave, onCancel }: TriggerEditorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n\n const functions = useQuery(space, Filter.schema(FunctionType));\n const workflows = useQuery(space, Filter.schema(ComputeGraph));\n const scripts = useQuery(space, Filter.schema(ScriptType));\n\n const handleSave = (values: FunctionTriggerType) => {\n onSave?.(values);\n };\n\n return (\n <Form<FunctionTriggerType>\n schema={FunctionTriggerSchema}\n values={trigger}\n onSave={handleSave}\n onCancel={onCancel}\n Custom={{\n ['function' satisfies keyof FunctionTriggerType]: (props) => (\n <SelectInput\n {...props}\n options={getWorkflowOptions(workflows).concat(getFunctionOptions(scripts, functions))}\n />\n ),\n ['spec.type' as const]: (props) => (\n <SelectInput\n {...props}\n options={Object.values(TriggerKind).map((kind) => ({\n value: kind,\n label: t(`trigger type ${kind}`),\n }))}\n />\n ),\n ['meta' as const]: (props) => {\n const meta = props.getValue()!;\n useEffect(() => props.onValueChange('object', { ...meta }), []);\n const [newMetaFieldName, setNewMetaFieldName] = useState('');\n\n return (\n <>\n <div>{props.label}</div>\n {[...Object.keys(meta)].map((key) => {\n const compositeKey: any = `meta.${key}`;\n return (\n <div key={compositeKey} role='none' className='flex items-center mt-2 gap-1'>\n <div role='none' className='flex-1'>\n <TextInput\n {...props}\n getValue={() => (props.getValue() as any)[key]}\n type={'string'}\n label={key}\n />\n </div>\n <IconButton\n icon='ph--trash--regular'\n iconOnly\n classNames={'mt-6'}\n label={t('trigger meta remove')}\n onClick={() => {\n const newValues: any = { ...props.getValue() };\n delete newValues[key];\n props.onValueChange('object', newValues);\n }}\n />\n </div>\n );\n })}\n <div role='none' className='flex items-center mt-2 gap-1 plb-1'>\n <div role='none' className='flex-1'>\n <Input.Root>\n <Input.TextInput\n placeholder={t('trigger meta prop name placeholder')}\n value={newMetaFieldName}\n onChange={(event) => setNewMetaFieldName(event.target.value)}\n />\n </Input.Root>\n </div>\n <IconButton\n icon='ph--plus--regular'\n iconOnly\n label={t('trigger meta add')}\n onClick={() => {\n if (newMetaFieldName.length) {\n const meta = props.getValue() ?? {};\n const metaWithNewProp = { ...meta, [newMetaFieldName]: '' };\n setNewMetaFieldName('');\n props.onValueChange('object', metaWithNewProp);\n }\n }}\n />\n </div>\n </>\n );\n },\n }}\n />\n );\n};\n\nconst getWorkflowOptions = (graphs: ComputeGraph[]) => {\n return graphs.map((graph) => ({ label: `compute-${graph.id}`, value: `dxn:echo:@:${graph.id}` }));\n};\n\nconst getFunctionOptions = (scripts: ScriptType[], functions: FunctionType[]) => {\n const getLabel = (fn: FunctionType) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;\n return functions.map((fn) => ({ label: getLabel(fn), value: `dxn:worker:${fn.name}` }));\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["TriggerEditor", "space", "trigger", "onSave", "onCancel", "t", "useTranslation", "AUTOMATION_PLUGIN", "functions", "useQuery", "Filter", "schema", "FunctionType", "workflows", "ComputeGraph", "scripts", "ScriptType", "handleSave", "values", "React", "Form", "FunctionTriggerSchema", "Custom", "props", "SelectInput", "options", "getWorkflowOptions", "concat", "getFunctionOptions", "Object", "TriggerKind", "map", "kind", "value", "label", "meta", "getValue", "useEffect", "onValueChange", "newMetaFieldName", "setNewMetaFieldName", "useState", "div", "keys", "key", "compositeKey", "role", "className", "TextInput", "type", "IconButton", "icon", "iconOnly", "classNames", "onClick", "newValues", "Input", "Root", "placeholder", "onChange", "event", "target", "length", "metaWithNewProp", "graphs", "graph", "id", "getLabel", "fn", "find", "s", "source", "name"]
|
|
7
|
+
}
|
|
@@ -26,18 +26,15 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
31
|
-
AssistantPanel: () => AssistantPanel,
|
|
29
|
+
var chunk_CB5OB6JH_exports = {};
|
|
30
|
+
__export(chunk_CB5OB6JH_exports, {
|
|
32
31
|
AutomationPanel: () => AutomationPanel
|
|
33
32
|
});
|
|
34
|
-
module.exports = __toCommonJS(
|
|
33
|
+
module.exports = __toCommonJS(chunk_CB5OB6JH_exports);
|
|
35
34
|
var import_react = require("react");
|
|
36
|
-
var
|
|
37
|
-
var AutomationPanel = (0, import_react.lazy)(() => import("./AutomationPanel-PPODB5XA.cjs"));
|
|
35
|
+
var AutomationPanel = (0, import_react.lazy)(() => import("./AutomationPanel-X33HHDMQ.cjs"));
|
|
38
36
|
// Annotate the CommonJS export names for ESM import in node:
|
|
39
37
|
0 && (module.exports = {
|
|
40
|
-
AssistantPanel,
|
|
41
38
|
AutomationPanel
|
|
42
39
|
});
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
40
|
+
//# sourceMappingURL=chunk-CB5OB6JH.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './TriggerEditor';\n\nexport const AutomationPanel = lazy(() => import('./AutomationPanel'));\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAqB;AAId,IAAMA,sBAAkBC,mBAAK,MAAM,OAAO,gCAAA,CAAA;",
|
|
6
|
+
"names": ["AutomationPanel", "lazy"]
|
|
7
|
+
}
|
|
@@ -16,26 +16,23 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_ORMEYEBE_exports = {};
|
|
20
|
+
__export(chunk_ORMEYEBE_exports, {
|
|
21
21
|
AUTOMATION_PLUGIN: () => AUTOMATION_PLUGIN,
|
|
22
22
|
meta: () => meta
|
|
23
23
|
});
|
|
24
|
-
module.exports = __toCommonJS(
|
|
24
|
+
module.exports = __toCommonJS(chunk_ORMEYEBE_exports);
|
|
25
25
|
var AUTOMATION_PLUGIN = "dxos.org/plugin/automation";
|
|
26
26
|
var meta = {
|
|
27
27
|
id: AUTOMATION_PLUGIN,
|
|
28
28
|
name: "Automation",
|
|
29
|
-
description: "Automation workflows.",
|
|
30
|
-
icon: "ph--
|
|
31
|
-
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/experimental/plugin-automation"
|
|
32
|
-
tags: [
|
|
33
|
-
"experimental"
|
|
34
|
-
]
|
|
29
|
+
description: "The Automation tab allows you to trigger pre-defined workflows related to the element you are interacting with inside of Composer.",
|
|
30
|
+
icon: "ph--robot--regular",
|
|
31
|
+
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/experimental/plugin-automation"
|
|
35
32
|
};
|
|
36
33
|
// Annotate the CommonJS export names for ESM import in node:
|
|
37
34
|
0 && (module.exports = {
|
|
38
35
|
AUTOMATION_PLUGIN,
|
|
39
36
|
meta
|
|
40
37
|
});
|
|
41
|
-
//# sourceMappingURL=chunk-
|
|
38
|
+
//# sourceMappingURL=chunk-ORMEYEBE.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const AUTOMATION_PLUGIN = 'dxos.org/plugin/automation';\n\nexport const meta = {\n id: AUTOMATION_PLUGIN,\n name: 'Automation',\n description
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,oBAAoB;AAE1B,IAAMC,OAAO;EAClBC,IAAIF;EACJG,MAAM;EACNC,
|
|
6
|
-
"names": ["AUTOMATION_PLUGIN", "meta", "id", "name", "description", "icon", "source"
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const AUTOMATION_PLUGIN = 'dxos.org/plugin/automation';\n\nexport const meta = {\n id: AUTOMATION_PLUGIN,\n name: 'Automation',\n description:\n 'The Automation tab allows you to trigger pre-defined workflows related to the element you are interacting with inside of Composer.',\n icon: 'ph--robot--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/experimental/plugin-automation',\n} satisfies PluginMeta;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,oBAAoB;AAE1B,IAAMC,OAAO;EAClBC,IAAIF;EACJG,MAAM;EACNC,aACE;EACFC,MAAM;EACNC,QAAQ;AACV;",
|
|
6
|
+
"names": ["AUTOMATION_PLUGIN", "meta", "id", "name", "description", "icon", "source"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var complementary_panel_ZYJJ42ZU_exports = {};
|
|
20
|
+
__export(complementary_panel_ZYJJ42ZU_exports, {
|
|
21
|
+
default: () => complementary_panel_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(complementary_panel_ZYJJ42ZU_exports);
|
|
24
|
+
var import_chunk_ORMEYEBE = require("./chunk-ORMEYEBE.cjs");
|
|
25
|
+
var import_signals_core = require("@preact/signals-core");
|
|
26
|
+
var import_app_framework = require("@dxos/app-framework");
|
|
27
|
+
var import_types = require("@dxos/functions/types");
|
|
28
|
+
var import_live_object = require("@dxos/live-object");
|
|
29
|
+
var import_plugin_client = require("@dxos/plugin-client");
|
|
30
|
+
var import_plugin_deck = require("@dxos/plugin-deck");
|
|
31
|
+
var import_echo = require("@dxos/react-client/echo");
|
|
32
|
+
var complementary_panel_default = (context) => {
|
|
33
|
+
const state = (0, import_live_object.create)({
|
|
34
|
+
functionsAvailable: false
|
|
35
|
+
});
|
|
36
|
+
const setState = (next) => {
|
|
37
|
+
if (next !== state.functionsAvailable) {
|
|
38
|
+
state.functionsAvailable = next;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const unsubscribe = (0, import_signals_core.effect)(() => {
|
|
42
|
+
const client = context.requestCapabilities(import_plugin_client.ClientCapabilities.Client)[0];
|
|
43
|
+
const workspace = context.requestCapabilities(import_app_framework.Capabilities.Layout)[0]?.workspace;
|
|
44
|
+
return (0, import_signals_core.untracked)(() => {
|
|
45
|
+
const { spaceId } = (0, import_echo.parseId)(workspace);
|
|
46
|
+
if (!spaceId || !client) {
|
|
47
|
+
setState(false);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const space = client.spaces.get(spaceId);
|
|
51
|
+
if (!space) {
|
|
52
|
+
setState(false);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
return space.db.query(import_echo.Filter.schema(import_types.FunctionType)).subscribe((query) => setState(query.objects.length > 0), {
|
|
56
|
+
fire: true
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
return (0, import_app_framework.contributes)(import_plugin_deck.DeckCapabilities.ComplementaryPanel, {
|
|
61
|
+
id: "automation",
|
|
62
|
+
label: [
|
|
63
|
+
"automation panel label",
|
|
64
|
+
{
|
|
65
|
+
ns: import_chunk_ORMEYEBE.AUTOMATION_PLUGIN
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
icon: "ph--robot--regular",
|
|
69
|
+
filter: () => state.functionsAvailable
|
|
70
|
+
}, () => unsubscribe());
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=complementary-panel-ZYJJ42ZU.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/complementary-panel.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect, untracked } from '@preact/signals-core';\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { FunctionType } from '@dxos/functions/types';\nimport { create } from '@dxos/live-object';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { DeckCapabilities } from '@dxos/plugin-deck';\nimport { Filter, parseId } from '@dxos/react-client/echo';\n\nimport { AUTOMATION_PLUGIN } from '../meta';\n\nexport default (context: PluginsContext) => {\n const state = create({ functionsAvailable: false });\n const setState = (next: boolean) => {\n if (next !== state.functionsAvailable) {\n state.functionsAvailable = next;\n }\n };\n\n const unsubscribe = effect(() => {\n const client = context.requestCapabilities(ClientCapabilities.Client)[0];\n const workspace = context.requestCapabilities(Capabilities.Layout)[0]?.workspace;\n return untracked(() => {\n const { spaceId } = parseId(workspace);\n if (!spaceId || !client) {\n setState(false);\n return;\n }\n\n const space = client.spaces.get(spaceId);\n if (!space) {\n setState(false);\n return;\n }\n\n return space.db\n .query(Filter.schema(FunctionType))\n .subscribe((query) => setState(query.objects.length > 0), { fire: true });\n });\n });\n\n return contributes(\n DeckCapabilities.ComplementaryPanel,\n {\n id: 'automation',\n label: ['automation panel label', { ns: AUTOMATION_PLUGIN }],\n icon: 'ph--robot--regular',\n filter: () => state.functionsAvailable,\n },\n () => unsubscribe(),\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,0BAAkC;AAElC,2BAA+D;AAC/D,mBAA6B;AAC7B,yBAAuB;AACvB,2BAAmC;AACnC,yBAAiC;AACjC,kBAAgC;AAIhC,IAAA,8BAAe,CAACA,YAAAA;AACd,QAAMC,YAAQC,2BAAO;IAAEC,oBAAoB;EAAM,CAAA;AACjD,QAAMC,WAAW,CAACC,SAAAA;AAChB,QAAIA,SAASJ,MAAME,oBAAoB;AACrCF,YAAME,qBAAqBE;IAC7B;EACF;AAEA,QAAMC,kBAAcC,4BAAO,MAAA;AACzB,UAAMC,SAASR,QAAQS,oBAAoBC,wCAAmBC,MAAM,EAAE,CAAA;AACtE,UAAMC,YAAYZ,QAAQS,oBAAoBI,kCAAaC,MAAM,EAAE,CAAA,GAAIF;AACvE,eAAOG,+BAAU,MAAA;AACf,YAAM,EAAEC,QAAO,QAAKC,qBAAQL,SAAAA;AAC5B,UAAI,CAACI,WAAW,CAACR,QAAQ;AACvBJ,iBAAS,KAAA;AACT;MACF;AAEA,YAAMc,QAAQV,OAAOW,OAAOC,IAAIJ,OAAAA;AAChC,UAAI,CAACE,OAAO;AACVd,iBAAS,KAAA;AACT;MACF;AAEA,aAAOc,MAAMG,GACVC,MAAMC,mBAAOC,OAAOC,yBAAAA,CAAAA,EACpBC,UAAU,CAACJ,UAAUlB,SAASkB,MAAMK,QAAQC,SAAS,CAAA,GAAI;QAAEC,MAAM;MAAK,CAAA;IAC3E,CAAA;EACF,CAAA;AAEA,aAAOC,kCACLC,oCAAiBC,oBACjB;IACEC,IAAI;IACJC,OAAO;MAAC;MAA0B;QAAEC,IAAIC;MAAkB;;IAC1DC,MAAM;IACNC,QAAQ,MAAMrC,MAAME;EACtB,GACA,MAAMG,YAAAA,CAAAA;AAEV;",
|
|
6
|
+
"names": ["context", "state", "create", "functionsAvailable", "setState", "next", "unsubscribe", "effect", "client", "requestCapabilities", "ClientCapabilities", "Client", "workspace", "Capabilities", "Layout", "untracked", "spaceId", "parseId", "space", "spaces", "get", "db", "query", "Filter", "schema", "FunctionType", "subscribe", "objects", "length", "fire", "contributes", "DeckCapabilities", "ComplementaryPanel", "id", "label", "ns", "AUTOMATION_PLUGIN", "icon", "filter"]
|
|
7
|
+
}
|