windmill-components 1.447.7 → 1.448.1
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/package/autosize.js +3 -8
- package/package/components/AppConnectInner.svelte +7 -1
- package/package/components/ArgInput.svelte +673 -596
- package/package/components/ArgInput.svelte.d.ts +11 -0
- package/package/components/AssignableTags.svelte +2 -1
- package/package/components/AssignableTags.svelte.d.ts +1 -0
- package/package/components/AssignableTagsInner.svelte +5 -1
- package/package/components/AssignableTagsInner.svelte.d.ts +3 -1
- package/package/components/AuthSettings.svelte +1 -1
- package/package/components/AuthSettings.svelte.d.ts +1 -0
- package/package/components/EditableSchemaForm.svelte +61 -29
- package/package/components/EditableSchemaForm.svelte.d.ts +9 -0
- package/package/components/FirstStepInputs.svelte +3 -1
- package/package/components/FlowPreviewContent.svelte +46 -45
- package/package/components/HistoricInputs.svelte +2 -0
- package/package/components/InstanceSettings.svelte +5 -1
- package/package/components/Range.svelte +5 -4
- package/package/components/Range.svelte.d.ts +2 -0
- package/package/components/RunFormAdvancedPopup.svelte +2 -2
- package/package/components/SavedInputsPicker.svelte +6 -0
- package/package/components/SchemaForm.svelte +70 -4
- package/package/components/SchemaForm.svelte.d.ts +11 -0
- package/package/components/ScriptBuilder.svelte +9 -1
- package/package/components/ScriptEditor.svelte.d.ts +2 -2
- package/package/components/ScriptPicker.svelte.d.ts +1 -1
- package/package/components/SimpleEditor.svelte +3 -1
- package/package/components/TestConnection.svelte +1 -1
- package/package/components/WorkerGroup.svelte +21 -0
- package/package/components/WorkerTagPicker.svelte +2 -2
- package/package/components/WorkerTagSelect.svelte +2 -2
- package/package/components/apps/components/display/table/AppAggridTable.svelte +3 -1
- package/package/components/apps/editor/component/components.d.ts +79 -79
- package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +1 -1
- package/package/components/flows/content/FlowEditorPanel.svelte +2 -2
- package/package/components/flows/content/FlowInput.svelte +193 -130
- package/package/components/flows/content/FlowInputEditor.svelte +12 -36
- package/package/components/flows/content/FlowInputEditor.svelte.d.ts +1 -5
- package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +1 -1
- package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +2 -2
- package/package/components/flows/flowStateUtils.d.ts +1 -2
- package/package/components/flows/flowStateUtils.js +1 -1
- package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte.d.ts +1 -1
- package/package/components/meltComponents/SideBarTab.svelte +60 -0
- package/package/components/meltComponents/SideBarTab.svelte.d.ts +24 -0
- package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -1
- package/package/components/schema/AddProperty.svelte +3 -1
- package/package/components/schema/AddPropertyV2.svelte +5 -8
- package/package/components/schema/AddPropertyV2.svelte.d.ts +3 -0
- package/package/components/schema/EditableSchemaDrawer.svelte +12 -3
- package/package/components/schema/EditableSchemaWrapper.svelte +5 -0
- package/package/components/schema/SchemaFormDND.svelte +25 -9
- package/package/components/schema/SchemaFormDND.svelte.d.ts +12 -0
- package/package/components/schema/schemaUtils.d.ts +26 -0
- package/package/components/schema/schemaUtils.js +185 -0
- package/package/components/settings/PremiumInfo.svelte +212 -30
- package/package/components/triggers/CaptureSection.svelte.d.ts +1 -1
- package/package/components/triggers/CaptureTable.svelte +10 -2
- package/package/components/triggers/CaptureWrapper.svelte +2 -1
- package/package/components/triggers/KafkaTriggersConfigSection.svelte.d.ts +1 -1
- package/package/components/triggers/NatsTriggersConfigSection.svelte.d.ts +1 -1
- package/package/components/triggers/RouteEditorConfigSection.svelte +3 -2
- package/package/components/triggers/RouteEditorConfigSection.svelte.d.ts +2 -1
- package/package/components/triggers/RoutesPanel.svelte +2 -0
- package/package/components/triggers/RoutesPanel.svelte.d.ts +1 -0
- package/package/components/triggers/TriggersEditor.svelte +3 -1
- package/package/components/triggers/TriggersEditor.svelte.d.ts +1 -0
- package/package/components/triggers/TriggersEditorSection.svelte +0 -1
- package/package/components/triggers/TriggersWrapper.svelte +1 -1
- package/package/components/triggers/WebhooksConfigSection.svelte +9 -9
- package/package/components/triggers/WebhooksConfigSection.svelte.d.ts +2 -2
- package/package/components/triggers/WebhooksPanel.svelte +2 -2
- package/package/components/triggers/WebhooksPanel.svelte.d.ts +1 -1
- package/package/components/triggers/WebsocketEditorConfigSection.svelte.d.ts +1 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +2 -2
- package/package/gen/schemas.gen.js +2 -2
- package/package/gen/services.gen.d.ts +22 -2
- package/package/gen/services.gen.js +44 -2
- package/package/gen/types.gen.d.ts +62 -2
- package/package/script_helpers.d.ts +1 -1
- package/package/script_helpers.js +7 -7
- package/package.json +11 -3
|
@@ -71,8 +71,7 @@ onMount(() => {
|
|
|
71
71
|
on:applyArgs
|
|
72
72
|
on:addPreprocessor={async () => {
|
|
73
73
|
await insertNewPreprocessorModule(flowStore, flowStateStore, {
|
|
74
|
-
language: 'bun'
|
|
75
|
-
subkind: 'preprocessor'
|
|
74
|
+
language: 'bun'
|
|
76
75
|
})
|
|
77
76
|
$selectedId = 'preprocessor'
|
|
78
77
|
}}
|
|
@@ -88,6 +87,7 @@ onMount(() => {
|
|
|
88
87
|
}
|
|
89
88
|
}}
|
|
90
89
|
on:testWithArgs
|
|
90
|
+
args={$previewArgs}
|
|
91
91
|
currentPath={$pathStore}
|
|
92
92
|
{initialPath}
|
|
93
93
|
schema={$flowStore.schema}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script>import { Button } from '../../common';
|
|
2
2
|
import { ButtonType } from '../../common/button/model';
|
|
3
|
-
import { getContext } from 'svelte';
|
|
3
|
+
import { getContext, tick } from 'svelte';
|
|
4
4
|
import FlowCard from '../common/FlowCard.svelte';
|
|
5
5
|
import Drawer from '../../common/drawer/Drawer.svelte';
|
|
6
6
|
import SimpleEditor from '../../SimpleEditor.svelte';
|
|
@@ -12,14 +12,15 @@ import FlowInputViewer from '../../FlowInputViewer.svelte';
|
|
|
12
12
|
import HistoricInputs from '../../HistoricInputs.svelte';
|
|
13
13
|
import SavedInputsPicker from '../../SavedInputsPicker.svelte';
|
|
14
14
|
import FirstStepInputs from '../../FirstStepInputs.svelte';
|
|
15
|
-
import { CornerDownLeft, Pen, ChevronRight,
|
|
15
|
+
import { CornerDownLeft, Pen, ChevronRight, Plus, History, Braces, Code, Save, X, Check } from 'lucide-svelte';
|
|
16
16
|
import CaptureIcon from '../../triggers/CaptureIcon.svelte';
|
|
17
17
|
import FlowPreviewContent from '../../FlowPreviewContent.svelte';
|
|
18
18
|
import FlowInputEditor from './FlowInputEditor.svelte';
|
|
19
19
|
import CapturesInputs from '../../CapturesInputs.svelte';
|
|
20
20
|
import { twMerge } from 'tailwind-merge';
|
|
21
|
-
import ButtonDropDown from '../../meltComponents/ButtonDropDown.svelte';
|
|
22
21
|
import CaptureButton from '../../triggers/CaptureButton.svelte';
|
|
22
|
+
import { getFullPath, setNestedProperty, getNestedProperty, schemaFromDiff, computeDiff, applyDiff } from '../../schema/schemaUtils';
|
|
23
|
+
import SideBarTab from '../../meltComponents/SideBarTab.svelte';
|
|
23
24
|
export let noEditor;
|
|
24
25
|
export let disabled;
|
|
25
26
|
const { flowStore, previewArgs, pathStore, initialPath, flowInputEditorState } = getContext('FlowEditorContext');
|
|
@@ -28,9 +29,13 @@ let addProperty = undefined;
|
|
|
28
29
|
let previewSchema = undefined;
|
|
29
30
|
let payloadData = undefined;
|
|
30
31
|
let previewArguments = $previewArgs;
|
|
31
|
-
let editOptionsOpen = false;
|
|
32
32
|
let dropdownItems = [];
|
|
33
|
+
let diff = {};
|
|
33
34
|
let editPanelSize = $flowInputEditorState?.editPanelSize ?? 0;
|
|
35
|
+
let selectedSchema = undefined;
|
|
36
|
+
let runDisabled = false;
|
|
37
|
+
let editableSchemaForm = undefined;
|
|
38
|
+
let savedPreviewArgs = undefined;
|
|
34
39
|
function updateEditPanelSize(size) {
|
|
35
40
|
if (!$flowInputEditorState)
|
|
36
41
|
return;
|
|
@@ -50,7 +55,8 @@ const getDropdownItems = () => {
|
|
|
50
55
|
},
|
|
51
56
|
disabled: !$flowInputEditorState?.selectedTab ||
|
|
52
57
|
$flowInputEditorState?.selectedTab === 'inputEditor',
|
|
53
|
-
icon: Pen
|
|
58
|
+
icon: Pen,
|
|
59
|
+
selected: $flowInputEditorState?.selectedTab === 'inputEditor'
|
|
54
60
|
},
|
|
55
61
|
{
|
|
56
62
|
label: 'Trigger captures',
|
|
@@ -58,7 +64,8 @@ const getDropdownItems = () => {
|
|
|
58
64
|
handleEditSchema('captures');
|
|
59
65
|
},
|
|
60
66
|
disabled: $flowInputEditorState?.selectedTab === 'captures',
|
|
61
|
-
icon: CaptureIcon
|
|
67
|
+
icon: CaptureIcon,
|
|
68
|
+
selected: $flowInputEditorState?.selectedTab === 'captures'
|
|
62
69
|
},
|
|
63
70
|
{
|
|
64
71
|
label: 'History',
|
|
@@ -66,7 +73,8 @@ const getDropdownItems = () => {
|
|
|
66
73
|
handleEditSchema('history');
|
|
67
74
|
},
|
|
68
75
|
disabled: $flowInputEditorState?.selectedTab === 'history',
|
|
69
|
-
icon: History
|
|
76
|
+
icon: History,
|
|
77
|
+
selected: $flowInputEditorState?.selectedTab === 'history'
|
|
70
78
|
},
|
|
71
79
|
{
|
|
72
80
|
label: 'Json payload',
|
|
@@ -74,14 +82,16 @@ const getDropdownItems = () => {
|
|
|
74
82
|
handleEditSchema('json');
|
|
75
83
|
},
|
|
76
84
|
disabled: $flowInputEditorState?.selectedTab === 'json',
|
|
77
|
-
icon: Braces
|
|
85
|
+
icon: Braces,
|
|
86
|
+
selected: $flowInputEditorState?.selectedTab === 'json'
|
|
78
87
|
},
|
|
79
88
|
{
|
|
80
89
|
label: "First step's inputs",
|
|
81
90
|
onClick: () => {
|
|
82
91
|
handleEditSchema('firstStepInputs');
|
|
83
92
|
},
|
|
84
|
-
icon: Code
|
|
93
|
+
icon: Code,
|
|
94
|
+
selected: $flowInputEditorState?.selectedTab === 'firstStepInputs'
|
|
85
95
|
},
|
|
86
96
|
{
|
|
87
97
|
label: 'Saved inputs',
|
|
@@ -89,9 +99,10 @@ const getDropdownItems = () => {
|
|
|
89
99
|
handleEditSchema('savedInputs');
|
|
90
100
|
},
|
|
91
101
|
disabled: $flowInputEditorState?.selectedTab === 'savedInputs',
|
|
92
|
-
icon: Save
|
|
102
|
+
icon: Save,
|
|
103
|
+
selected: $flowInputEditorState?.selectedTab === 'savedInputs'
|
|
93
104
|
}
|
|
94
|
-
]
|
|
105
|
+
];
|
|
95
106
|
};
|
|
96
107
|
function handleEditSchema(editTab) {
|
|
97
108
|
if (!$flowInputEditorState) {
|
|
@@ -107,7 +118,8 @@ function handleEditSchema(editTab) {
|
|
|
107
118
|
$flowInputEditorState.selectedTab = undefined;
|
|
108
119
|
}
|
|
109
120
|
}
|
|
110
|
-
function schemaFromPayload(
|
|
121
|
+
function schemaFromPayload(payloadData) {
|
|
122
|
+
const payload = structuredClone(payloadData);
|
|
111
123
|
const parsed = JSON.parse(JSON.stringify(payload));
|
|
112
124
|
if (!parsed) {
|
|
113
125
|
sendUserToast('Invalid Schema', true);
|
|
@@ -130,76 +142,81 @@ function handleKeydown(event) {
|
|
|
130
142
|
if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') {
|
|
131
143
|
runPreview();
|
|
132
144
|
}
|
|
145
|
+
else if (event.key === 'Enter' && previewSchema && !preventEnter) {
|
|
146
|
+
applySchemaAndArgs();
|
|
147
|
+
connectFirstNode();
|
|
148
|
+
event.stopPropagation();
|
|
149
|
+
event.preventDefault();
|
|
150
|
+
}
|
|
133
151
|
}
|
|
134
152
|
function runPreview() {
|
|
135
153
|
if (previewArguments) {
|
|
136
|
-
$previewArgs = previewArguments;
|
|
154
|
+
$previewArgs = structuredClone(previewArguments);
|
|
137
155
|
}
|
|
138
156
|
previewOpen = true;
|
|
139
157
|
flowPreviewContent?.test();
|
|
140
158
|
}
|
|
141
159
|
function updatePreviewSchemaAndArgs(payload) {
|
|
142
|
-
payloadData = payload;
|
|
143
160
|
if (!payload) {
|
|
161
|
+
payloadData = undefined;
|
|
162
|
+
selectedSchema = undefined;
|
|
144
163
|
updatePreviewArguments(undefined);
|
|
145
|
-
|
|
164
|
+
updatePreviewSchema(undefined);
|
|
146
165
|
return;
|
|
147
166
|
}
|
|
148
|
-
|
|
149
|
-
|
|
167
|
+
payloadData = structuredClone(payload);
|
|
168
|
+
selectedSchema = schemaFromPayload(payloadData);
|
|
169
|
+
updatePreviewSchema(selectedSchema);
|
|
170
|
+
updatePreviewArguments(payloadData);
|
|
150
171
|
}
|
|
151
|
-
function
|
|
152
|
-
if (!
|
|
172
|
+
async function updatePreviewSchema(newSchema) {
|
|
173
|
+
if (!newSchema) {
|
|
174
|
+
previewSchema = undefined;
|
|
175
|
+
if (runDisabled) {
|
|
176
|
+
await tick();
|
|
177
|
+
runDisabled = false;
|
|
178
|
+
}
|
|
179
|
+
diff = {};
|
|
153
180
|
return;
|
|
154
181
|
}
|
|
155
|
-
|
|
182
|
+
diff = {};
|
|
183
|
+
const diffSchema = computeDiff(newSchema, $flowStore.schema);
|
|
184
|
+
diff = diffSchema;
|
|
185
|
+
previewSchema = schemaFromDiff(diffSchema, $flowStore.schema);
|
|
186
|
+
runDisabled = true;
|
|
187
|
+
}
|
|
188
|
+
async function applySchemaAndArgs() {
|
|
189
|
+
$flowStore.schema = applyDiff($flowStore.schema, diff);
|
|
156
190
|
if (previewArguments) {
|
|
157
|
-
|
|
191
|
+
savedPreviewArgs = structuredClone(previewArguments);
|
|
158
192
|
}
|
|
159
|
-
|
|
160
|
-
$flowInputEditorState.selectedTab = undefined;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
function applySchema() {
|
|
164
|
-
$flowStore.schema = previewSchema;
|
|
193
|
+
updatePreviewSchemaAndArgs(undefined);
|
|
165
194
|
if ($flowInputEditorState) {
|
|
166
195
|
$flowInputEditorState.selectedTab = undefined;
|
|
167
196
|
}
|
|
168
197
|
}
|
|
169
198
|
function updatePreviewArguments(payloadData) {
|
|
170
199
|
if (!payloadData) {
|
|
171
|
-
previewArguments =
|
|
200
|
+
previewArguments = savedPreviewArgs;
|
|
172
201
|
return;
|
|
173
202
|
}
|
|
174
|
-
|
|
203
|
+
savedPreviewArgs = structuredClone(previewArguments);
|
|
204
|
+
previewArguments = structuredClone(payloadData);
|
|
175
205
|
}
|
|
176
|
-
let jsonValid = false;
|
|
177
206
|
function updatePayloadFromJson(jsonInput) {
|
|
178
207
|
if (jsonInput === undefined || jsonInput === null || jsonInput.trim() === '') {
|
|
179
208
|
updatePreviewSchemaAndArgs(undefined);
|
|
180
|
-
jsonValid = false;
|
|
181
209
|
return;
|
|
182
210
|
}
|
|
183
211
|
try {
|
|
184
212
|
const parsed = JSON.parse(jsonInput);
|
|
185
213
|
updatePreviewSchemaAndArgs(parsed);
|
|
186
|
-
jsonValid = true;
|
|
187
214
|
}
|
|
188
215
|
catch (error) {
|
|
189
216
|
updatePreviewSchemaAndArgs(undefined);
|
|
190
|
-
jsonValid = false;
|
|
191
217
|
}
|
|
192
218
|
}
|
|
193
219
|
let tabButtonWidth = 0;
|
|
194
|
-
const TAB_TITLES = {
|
|
195
|
-
inputEditor: 'Input editor',
|
|
196
|
-
captures: 'Captures',
|
|
197
|
-
history: 'History',
|
|
198
|
-
savedInputs: 'Saved inputs',
|
|
199
|
-
json: 'JSON',
|
|
200
|
-
firstStepInputs: 'First step',
|
|
201
|
-
undefined: ''
|
|
202
|
-
};
|
|
203
220
|
let connectFirstNode = () => { };
|
|
204
221
|
let init = false;
|
|
205
222
|
function initPayloadData() {
|
|
@@ -211,6 +228,44 @@ function initPayloadData() {
|
|
|
211
228
|
}
|
|
212
229
|
$: $flowInputEditorState && ((dropdownItems = getDropdownItems()), initPayloadData());
|
|
213
230
|
let preventEnter = false;
|
|
231
|
+
async function acceptChange(arg) {
|
|
232
|
+
handleChange(arg, $flowStore.schema, diff, (newSchema) => {
|
|
233
|
+
$flowStore.schema = newSchema;
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
async function rejectChange(arg) {
|
|
237
|
+
const revertDiff = computeDiff($flowStore.schema, selectedSchema);
|
|
238
|
+
handleChange(arg, selectedSchema, revertDiff, (newSchema) => {
|
|
239
|
+
selectedSchema = newSchema;
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
function handleChange(arg, currentSchema, diffSchema, updateCurrentSchema) {
|
|
243
|
+
if (!diff || !currentSchema) {
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
const path = getFullPath(arg);
|
|
247
|
+
const parentPath = path.slice(0, -1);
|
|
248
|
+
const diffStatus = getNestedProperty({ diff: diffSchema }, path, 'diff');
|
|
249
|
+
const schema = getNestedProperty(currentSchema, parentPath, 'properties');
|
|
250
|
+
const localDiff = {
|
|
251
|
+
[arg.label]: diffStatus
|
|
252
|
+
};
|
|
253
|
+
const schemaUpdated = applyDiff(schema, localDiff);
|
|
254
|
+
if (parentPath.length > 0) {
|
|
255
|
+
setNestedProperty(currentSchema, parentPath, schemaUpdated);
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
updateCurrentSchema(schemaUpdated);
|
|
259
|
+
}
|
|
260
|
+
diff = computeDiff(selectedSchema, $flowStore.schema);
|
|
261
|
+
previewSchema = schemaFromDiff(diff, $flowStore.schema);
|
|
262
|
+
}
|
|
263
|
+
function resetArgs() {
|
|
264
|
+
if (!previewSchema) {
|
|
265
|
+
previewArguments = undefined;
|
|
266
|
+
savedPreviewArgs = undefined;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
214
269
|
</script>
|
|
215
270
|
|
|
216
271
|
<!-- Add svelte:window to listen for keyboard events -->
|
|
@@ -231,6 +286,7 @@ let preventEnter = false;
|
|
|
231
286
|
{#if !disabled}
|
|
232
287
|
<div class="py-2 px-4 h-full">
|
|
233
288
|
<EditableSchemaForm
|
|
289
|
+
bind:this={editableSchemaForm}
|
|
234
290
|
bind:schema={$flowStore.schema}
|
|
235
291
|
isFlowInput
|
|
236
292
|
on:edit={(e) => {
|
|
@@ -246,78 +302,84 @@ let preventEnter = false;
|
|
|
246
302
|
bind:editPanelSize
|
|
247
303
|
editPanelInitialSize={$flowInputEditorState?.editPanelSize}
|
|
248
304
|
pannelExtraButtonWidth={$flowInputEditorState?.editPanelSize ? tabButtonWidth : 0}
|
|
305
|
+
{diff}
|
|
306
|
+
disableDnd={!!previewSchema}
|
|
307
|
+
on:rejectChange={(e) => {
|
|
308
|
+
rejectChange(e.detail).then(() => {
|
|
309
|
+
updatePreviewSchema(selectedSchema)
|
|
310
|
+
})
|
|
311
|
+
}}
|
|
312
|
+
on:acceptChange={(e) => {
|
|
313
|
+
acceptChange(e.detail).then(() => {
|
|
314
|
+
updatePreviewSchema(selectedSchema)
|
|
315
|
+
})
|
|
316
|
+
}}
|
|
317
|
+
shouldDispatchChanges={true}
|
|
318
|
+
on:change={() => {
|
|
319
|
+
previewArguments = previewArguments
|
|
320
|
+
if (!previewSchema) {
|
|
321
|
+
savedPreviewArgs = structuredClone(previewArguments)
|
|
322
|
+
}
|
|
323
|
+
}}
|
|
324
|
+
on:schemaChange={() => {
|
|
325
|
+
resetArgs()
|
|
326
|
+
}}
|
|
249
327
|
>
|
|
250
328
|
<svelte:fragment slot="openEditTab">
|
|
251
|
-
<div
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
closeOnClick={true}
|
|
278
|
-
bind:open={editOptionsOpen}
|
|
279
|
-
placement="bottom-end"
|
|
280
|
-
>
|
|
281
|
-
<div
|
|
282
|
-
class={twMerge(
|
|
283
|
-
'p-2 center-center hover:bg-surface-hover',
|
|
284
|
-
ButtonType.ColorVariants.blue.contained,
|
|
285
|
-
'flex flex-row items-center rounded-br-md',
|
|
286
|
-
'transition-all duration-150 ease-in-out overflow-hidden whitespace-nowrap',
|
|
287
|
-
!!$flowInputEditorState?.selectedTab ? 'w-[122px] px-3' : 'w-[30px]'
|
|
288
|
-
)}
|
|
289
|
-
bind:clientWidth={tabButtonWidth}
|
|
290
|
-
>
|
|
291
|
-
<div class="flex flex-row items-center gap-1 justify-between w-full">
|
|
292
|
-
{#if !!$flowInputEditorState?.selectedTab}
|
|
293
|
-
<h2 class="text-xs">{TAB_TITLES[$flowInputEditorState?.selectedTab]}</h2>
|
|
294
|
-
{/if}
|
|
295
|
-
<ChevronDown size={14} />
|
|
296
|
-
</div>
|
|
297
|
-
</div>
|
|
298
|
-
</ButtonDropDown>
|
|
329
|
+
<div class={twMerge('flex flex-row divide-x', ButtonType.ColorVariants.blue.divider)}>
|
|
330
|
+
<SideBarTab {dropdownItems} fullMenu={!!$flowInputEditorState?.selectedTab}>
|
|
331
|
+
<svelte:fragment slot="close button">
|
|
332
|
+
<button
|
|
333
|
+
on:click={() => {
|
|
334
|
+
handleEditSchema()
|
|
335
|
+
}}
|
|
336
|
+
title={!!$flowInputEditorState?.selectedTab
|
|
337
|
+
? 'Close input editor'
|
|
338
|
+
: 'Open input editor'}
|
|
339
|
+
class={twMerge(
|
|
340
|
+
ButtonType.ColorVariants.blue.contained,
|
|
341
|
+
!!$flowInputEditorState?.selectedTab
|
|
342
|
+
? 'rounded-tl-md border-l border-t'
|
|
343
|
+
: 'rounded-md border'
|
|
344
|
+
)}
|
|
345
|
+
>
|
|
346
|
+
<div class="p-2 center-center">
|
|
347
|
+
<svelte:component
|
|
348
|
+
this={!!$flowInputEditorState?.selectedTab ? ChevronRight : Pen}
|
|
349
|
+
size={14}
|
|
350
|
+
/>
|
|
351
|
+
</div>
|
|
352
|
+
</button>
|
|
353
|
+
</svelte:fragment>
|
|
354
|
+
</SideBarTab>
|
|
299
355
|
</div>
|
|
300
356
|
</svelte:fragment>
|
|
301
357
|
<svelte:fragment slot="addProperty">
|
|
302
358
|
{#if !!previewSchema}
|
|
303
|
-
<div
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
359
|
+
<div class="flex flex-row items-center gap-2 right-2 justify-end">
|
|
360
|
+
<Button
|
|
361
|
+
size="xs"
|
|
362
|
+
color="green"
|
|
363
|
+
disabled={!previewSchema}
|
|
364
|
+
shortCut={{ Icon: CornerDownLeft, hide: false, withoutModifier: true }}
|
|
365
|
+
startIcon={{ icon: Check }}
|
|
366
|
+
on:click={() => {
|
|
367
|
+
applySchemaAndArgs()
|
|
368
|
+
connectFirstNode()
|
|
369
|
+
}}
|
|
370
|
+
>
|
|
371
|
+
{Object.values(diff).every((el) => el.diff === 'same')
|
|
372
|
+
? 'Apply args'
|
|
373
|
+
: 'Update schema'}
|
|
374
|
+
</Button>
|
|
375
|
+
<Button
|
|
376
|
+
variant="border"
|
|
377
|
+
color="light"
|
|
378
|
+
size="xs"
|
|
379
|
+
startIcon={{ icon: X }}
|
|
380
|
+
shortCut={{ key: 'esc', withoutModifier: true }}
|
|
381
|
+
nonCaptureEvent
|
|
382
|
+
/>
|
|
321
383
|
</div>
|
|
322
384
|
{:else}
|
|
323
385
|
<AddPropertyV2
|
|
@@ -325,6 +387,14 @@ let preventEnter = false;
|
|
|
325
387
|
bind:this={addProperty}
|
|
326
388
|
on:change={() => {
|
|
327
389
|
$flowStore = $flowStore
|
|
390
|
+
if (editableSchemaForm) {
|
|
391
|
+
editableSchemaForm.updateJson()
|
|
392
|
+
}
|
|
393
|
+
}}
|
|
394
|
+
on:addNew={(e) => {
|
|
395
|
+
handleEditSchema('inputEditor')
|
|
396
|
+
editableSchemaForm?.openField(e.detail)
|
|
397
|
+
$flowStore = $flowStore
|
|
328
398
|
}}
|
|
329
399
|
>
|
|
330
400
|
<svelte:fragment slot="trigger">
|
|
@@ -340,9 +410,7 @@ let preventEnter = false;
|
|
|
340
410
|
<svelte:fragment slot="extraTab">
|
|
341
411
|
{#if $flowInputEditorState?.selectedTab === 'history'}
|
|
342
412
|
<FlowInputEditor
|
|
343
|
-
|
|
344
|
-
on:applySchemaAndArgs={applySchemaAndArgs}
|
|
345
|
-
on:applySchema={applySchema}
|
|
413
|
+
title="History"
|
|
346
414
|
on:destroy={() => {
|
|
347
415
|
updatePreviewSchemaAndArgs(undefined)
|
|
348
416
|
}}
|
|
@@ -358,12 +426,10 @@ let preventEnter = false;
|
|
|
358
426
|
</FlowInputEditor>
|
|
359
427
|
{:else if $flowInputEditorState?.selectedTab === 'captures'}
|
|
360
428
|
<FlowInputEditor
|
|
361
|
-
disabled={!payloadData}
|
|
362
|
-
on:applySchemaAndArgs={applySchemaAndArgs}
|
|
363
|
-
on:applySchema={applySchema}
|
|
364
429
|
on:destroy={() => {
|
|
365
430
|
updatePreviewSchemaAndArgs(undefined)
|
|
366
431
|
}}
|
|
432
|
+
title="Trigger captures"
|
|
367
433
|
>
|
|
368
434
|
<svelete:fragment slot="action">
|
|
369
435
|
<div class="center-center">
|
|
@@ -379,13 +445,10 @@ let preventEnter = false;
|
|
|
379
445
|
</FlowInputEditor>
|
|
380
446
|
{:else if $flowInputEditorState?.selectedTab === 'savedInputs'}
|
|
381
447
|
<FlowInputEditor
|
|
382
|
-
{preventEnter}
|
|
383
|
-
disabled={!payloadData}
|
|
384
|
-
on:applySchemaAndArgs={applySchemaAndArgs}
|
|
385
|
-
on:applySchema={applySchema}
|
|
386
448
|
on:destroy={() => {
|
|
387
449
|
updatePreviewSchemaAndArgs(undefined)
|
|
388
450
|
}}
|
|
451
|
+
title="Saved inputs"
|
|
389
452
|
>
|
|
390
453
|
<SavedInputsPicker
|
|
391
454
|
flowPath={initialPath}
|
|
@@ -400,13 +463,10 @@ let preventEnter = false;
|
|
|
400
463
|
</FlowInputEditor>
|
|
401
464
|
{:else if $flowInputEditorState?.selectedTab === 'json'}
|
|
402
465
|
<FlowInputEditor
|
|
403
|
-
{preventEnter}
|
|
404
|
-
disabled={!jsonValid}
|
|
405
|
-
on:applySchemaAndArgs={applySchemaAndArgs}
|
|
406
|
-
on:applySchema={applySchema}
|
|
407
466
|
on:destroy={() => {
|
|
408
467
|
updatePreviewSchemaAndArgs(undefined)
|
|
409
468
|
}}
|
|
469
|
+
title="Json payload"
|
|
410
470
|
>
|
|
411
471
|
<SimpleEditor
|
|
412
472
|
on:focus={() => {
|
|
@@ -432,22 +492,25 @@ let preventEnter = false;
|
|
|
432
492
|
</FlowInputEditor>
|
|
433
493
|
{:else if $flowInputEditorState?.selectedTab === 'firstStepInputs'}
|
|
434
494
|
<FlowInputEditor
|
|
435
|
-
disabled={!previewSchema}
|
|
436
|
-
on:applySchemaAndArgs={() => {
|
|
437
|
-
applySchemaAndArgs()
|
|
438
|
-
connectFirstNode()
|
|
439
|
-
}}
|
|
440
|
-
on:applySchema={applySchema}
|
|
441
495
|
on:destroy={() => {
|
|
442
496
|
updatePreviewSchemaAndArgs(undefined)
|
|
497
|
+
connectFirstNode = () => {}
|
|
443
498
|
}}
|
|
499
|
+
title="First step's inputs"
|
|
444
500
|
>
|
|
445
501
|
<FirstStepInputs
|
|
446
502
|
on:connectFirstNode={({ detail }) => {
|
|
447
503
|
connectFirstNode = detail.connectFirstNode
|
|
448
504
|
}}
|
|
449
505
|
on:select={(e) => {
|
|
450
|
-
|
|
506
|
+
if (e.detail) {
|
|
507
|
+
const diffSchema = computeDiff(e.detail, $flowStore.schema)
|
|
508
|
+
diff = diffSchema
|
|
509
|
+
previewSchema = schemaFromDiff(diffSchema, $flowStore.schema)
|
|
510
|
+
runDisabled = true
|
|
511
|
+
} else {
|
|
512
|
+
updatePreviewSchemaAndArgs(undefined)
|
|
513
|
+
}
|
|
451
514
|
}}
|
|
452
515
|
/>
|
|
453
516
|
</FlowInputEditor>
|
|
@@ -458,7 +521,7 @@ let preventEnter = false;
|
|
|
458
521
|
<Button
|
|
459
522
|
color="dark"
|
|
460
523
|
btnClasses="w-fit"
|
|
461
|
-
disabled={
|
|
524
|
+
disabled={runDisabled}
|
|
462
525
|
size="xs"
|
|
463
526
|
shortCut={{ Icon: CornerDownLeft, hide: false }}
|
|
464
527
|
on:click={() => {
|
|
@@ -1,46 +1,22 @@
|
|
|
1
1
|
<script>import { createEventDispatcher, onDestroy } from 'svelte';
|
|
2
|
-
import Section from '../../Section.svelte';
|
|
3
|
-
import Button from '../../common/button/Button.svelte';
|
|
4
|
-
import { CornerDownLeft, Save } from 'lucide-svelte';
|
|
5
|
-
export let name = '';
|
|
6
|
-
export let disabled = false;
|
|
7
|
-
export let preventEnter = false;
|
|
8
2
|
const dispatch = createEventDispatcher();
|
|
9
|
-
|
|
10
|
-
dispatch('applySchemaAndArgs');
|
|
11
|
-
}
|
|
3
|
+
export let title = '';
|
|
12
4
|
onDestroy(() => {
|
|
13
5
|
dispatch('destroy');
|
|
14
6
|
});
|
|
15
7
|
</script>
|
|
16
8
|
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
/>
|
|
9
|
+
<div class="flex flex-col h-full px-3 pb-3">
|
|
10
|
+
<div
|
|
11
|
+
class="items-center grow-0 flex flex-row justify-between gap-2 data-schema-picker min-h-[40px]"
|
|
12
|
+
>
|
|
13
|
+
<h2 class="font-semibold text-secondary text-sm flex flex-row items-center gap-1 leading-6">
|
|
14
|
+
{title}
|
|
15
|
+
</h2>
|
|
16
|
+
<slot name="action" />
|
|
17
|
+
</div>
|
|
25
18
|
|
|
26
|
-
<div class="
|
|
27
|
-
<Section label={name} class="h-full" small={true}>
|
|
28
|
-
<svelte:fragment slot="header">
|
|
29
|
-
<slot name="header" />
|
|
30
|
-
</svelte:fragment>
|
|
31
|
-
<svelte:fragment slot="action">
|
|
32
|
-
<div class="flex flex-row gap-2 data-schema-picker">
|
|
33
|
-
<slot name="action" />
|
|
34
|
-
<Button
|
|
35
|
-
size="xs2"
|
|
36
|
-
color="dark"
|
|
37
|
-
{disabled}
|
|
38
|
-
shortCut={{ Icon: CornerDownLeft, hide: false, withoutModifier: true }}
|
|
39
|
-
startIcon={{ icon: Save }}
|
|
40
|
-
on:click={applySchemaAndArgs}>Update schema</Button
|
|
41
|
-
>
|
|
42
|
-
</div>
|
|
43
|
-
</svelte:fragment>
|
|
19
|
+
<div class="w-full min-h-0 grow">
|
|
44
20
|
<slot />
|
|
45
|
-
</
|
|
21
|
+
</div>
|
|
46
22
|
</div>
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
|
-
|
|
5
|
-
disabled?: boolean | undefined;
|
|
6
|
-
preventEnter?: boolean | undefined;
|
|
4
|
+
title?: string | undefined;
|
|
7
5
|
};
|
|
8
6
|
events: {
|
|
9
|
-
applySchemaAndArgs: CustomEvent<any>;
|
|
10
7
|
destroy: CustomEvent<any>;
|
|
11
8
|
} & {
|
|
12
9
|
[evt: string]: CustomEvent<any>;
|
|
13
10
|
};
|
|
14
11
|
slots: {
|
|
15
|
-
header: {};
|
|
16
12
|
action: {};
|
|
17
13
|
default: {};
|
|
18
14
|
};
|
|
@@ -13,7 +13,7 @@ declare const __propDef: {
|
|
|
13
13
|
loading?: boolean | undefined;
|
|
14
14
|
small?: boolean | undefined;
|
|
15
15
|
kind: 'trigger' | 'script' | 'preprocessor' | 'failure' | 'approval';
|
|
16
|
-
selectedKind?: "script" | "failure" | "trigger" | "approval" | "
|
|
16
|
+
selectedKind?: "script" | "failure" | "trigger" | "approval" | "preprocessor" | "flow" | undefined;
|
|
17
17
|
displayPath?: boolean | undefined;
|
|
18
18
|
};
|
|
19
19
|
events: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script>import { getContext } from 'svelte';
|
|
2
|
-
import { workerTags } from '../../../stores';
|
|
2
|
+
import { workerTags, workspaceStore } from '../../../stores';
|
|
3
3
|
import { WorkerService } from '../../../gen';
|
|
4
4
|
import WorkerTagSelect from '../../WorkerTagSelect.svelte';
|
|
5
5
|
export let tag;
|
|
@@ -8,7 +8,7 @@ const { flowStore, selectedId } = getContext('FlowEditorContext');
|
|
|
8
8
|
loadWorkerGroups();
|
|
9
9
|
async function loadWorkerGroups() {
|
|
10
10
|
if (!$workerTags) {
|
|
11
|
-
$workerTags = await WorkerService.getCustomTags();
|
|
11
|
+
$workerTags = await WorkerService.getCustomTags({ workspace: $workspaceStore });
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
</script>
|