windmill-components 1.532.0 → 1.537.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/components/ArgInput.svelte +25 -18
- package/package/components/Auth0Setting.svelte +8 -3
- package/package/components/Dev.svelte +5 -4
- package/package/components/DiffDrawer.svelte +2 -2
- package/package/components/DiffEditor.svelte +34 -37
- package/package/components/DiffEditor.svelte.d.ts +23 -39
- package/package/components/EditableSchemaForm.svelte +42 -51
- package/package/components/EditableSchemaForm.svelte.d.ts +2 -3
- package/package/components/Editor.svelte +30 -9
- package/package/components/Editor.svelte.d.ts +5 -0
- package/package/components/FlowBuilder.svelte +7 -4
- package/package/components/FlowPreviewContent.svelte +3 -3
- package/package/components/FlowStatusViewer.svelte +28 -0
- package/package/components/FlowStatusViewerInner.svelte +72 -20
- package/package/components/FlowStatusViewerInner.svelte.d.ts +7 -0
- package/package/components/ModulePreview.svelte +2 -1
- package/package/components/ModulePreview.svelte.d.ts +1 -0
- package/package/components/ModulePreviewForm.svelte +72 -65
- package/package/components/ModulePreviewResultViewer.svelte +13 -18
- package/package/components/ModuleTest.svelte +6 -5
- package/package/components/ModuleTest.svelte.d.ts +1 -0
- package/package/components/OktaSetting.svelte +8 -3
- package/package/components/Portal.svelte +11 -7
- package/package/components/Portal.svelte.d.ts +19 -39
- package/package/components/RunForm.svelte +2 -2
- package/package/components/RunForm.svelte.d.ts +1 -1
- package/package/components/RunFormAdvancedPopup.svelte +13 -1
- package/package/components/SchemaForm.svelte +1 -2
- package/package/components/ScriptBuilder.svelte +1 -1
- package/package/components/ScriptEditor.svelte +21 -7
- package/package/components/SimpleEditor.svelte +0 -1
- package/package/components/apps/components/layout/AppModal.svelte +2 -2
- package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +0 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/GridCondition.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +55 -53
- package/package/components/apps/editor/settingsPanel/TableActions.svelte +3 -1
- package/package/components/common/button/model.d.ts +1 -1
- package/package/components/common/drawer/Disposable.svelte +51 -30
- package/package/components/common/drawer/Disposable.svelte.d.ts +12 -44
- package/package/components/common/drawer/Drawer.svelte +15 -11
- package/package/components/copilot/MetadataGen.svelte +14 -3
- package/package/components/copilot/chat/AIChatInput.svelte +0 -1
- package/package/components/copilot/chat/AIChatManager.svelte.js +3 -3
- package/package/components/copilot/chat/AvailableContextList.svelte +192 -66
- package/package/components/copilot/chat/AvailableContextList.svelte.d.ts +2 -2
- package/package/components/copilot/chat/ContextElementBadge.svelte +3 -3
- package/package/components/copilot/chat/ContextManager.svelte.js +36 -13
- package/package/components/copilot/chat/ContextTextarea.svelte +21 -48
- package/package/components/copilot/chat/ToolContentDisplay.svelte +10 -1
- package/package/components/copilot/chat/ToolExecutionDisplay.svelte +3 -3
- package/package/components/copilot/chat/context.d.ts +7 -2
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +110 -8
- package/package/components/copilot/chat/flow/core.d.ts +11 -0
- package/package/components/copilot/chat/flow/core.js +121 -3
- package/package/components/copilot/chat/flow/uiIntents.d.ts +8 -0
- package/package/components/copilot/chat/flow/uiIntents.js +5 -0
- package/package/components/copilot/chat/flow/useUiIntent.d.ts +5 -0
- package/package/components/copilot/chat/flow/useUiIntent.js +12 -0
- package/package/components/copilot/chat/monaco-adapter.d.ts +22 -4
- package/package/components/copilot/chat/monaco-adapter.js +55 -16
- package/package/components/copilot/chat/script/core.js +3 -2
- package/package/components/copilot/chat/shared.d.ts +3 -2
- package/package/components/copilot/chat/shared.js +24 -12
- package/package/components/copilot/lib.js +12 -7
- package/package/components/copilot/shared.d.ts +1 -1
- package/package/components/copilot/shared.js +16 -10
- package/package/components/flows/FlowEditor.svelte +4 -2
- package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
- package/package/components/flows/FlowModuleIcon.svelte +8 -8
- package/package/components/flows/common/FlowCardHeader.svelte +4 -1
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +6 -0
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +6 -0
- package/package/components/flows/content/FlowEditorPanel.svelte +2 -1
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowInput.svelte +31 -34
- package/package/components/flows/content/FlowInput.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowLoop.svelte +7 -0
- package/package/components/flows/content/FlowModuleComponent.svelte +37 -44
- package/package/components/flows/content/FlowModuleScript.svelte +1 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +16 -18
- package/package/components/flows/content/FlowWhileLoop.svelte +6 -0
- package/package/components/flows/content/ScriptEditorDrawer.svelte +9 -11
- package/package/components/flows/dfs.d.ts +1 -1
- package/package/components/flows/dfs.js +6 -6
- package/package/components/flows/flowInfers.js +7 -7
- package/package/components/flows/flowStateUtils.svelte.js +1 -2
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +12 -26
- package/package/components/flows/map/MapItem.svelte +8 -4
- package/package/components/flows/map/VirtualItem.svelte +1 -1
- package/package/components/flows/pickers/TopLevelNode.svelte +1 -1
- package/package/components/flows/propPicker/InputPickerInner.svelte +5 -5
- package/package/components/flows/propPicker/OutputPickerInner.svelte +143 -118
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +7 -16
- package/package/components/flows/{testSteps.svelte.d.ts → stepsInputArgs.svelte.d.ts} +2 -1
- package/package/components/flows/{testSteps.svelte.js → stepsInputArgs.svelte.js} +15 -3
- package/package/components/flows/types.d.ts +16 -3
- package/package/components/flows/utils.js +3 -0
- package/package/components/graph/FlowGraphV2.svelte +1 -1
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +4 -4
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +71 -54
- package/package/components/propertyPicker/ObjectViewer.svelte +11 -3
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +1 -1
- package/package/components/schema/AddPropertyV2.svelte +2 -7
- package/package/components/schema/AddPropertyV2.svelte.d.ts +3 -20
- package/package/components/schema/EditableSchemaDrawer.svelte +109 -115
- package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +2 -1
- package/package/components/schema/EditableSchemaSdkWrapper.svelte +16 -3
- package/package/components/schema/EditableSchemaSdkWrapper.svelte.d.ts +4 -1
- package/package/components/schema/EditableSchemaWrapper.svelte +3 -10
- package/package/components/schema/FlowPropertyEditor.svelte +9 -41
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/SchemaFormDND.svelte +11 -10
- package/package/components/schema/SchemaFormDND.svelte.d.ts +3 -2
- package/package/components/schema/editable_schema_wrapper.d.ts +0 -3
- package/package/components/settings/PremiumInfo.svelte +7 -2
- package/package/components/triggers/CaptureWrapper.svelte +2 -13
- package/package/components/triggers/CaptureWrapper.svelte.d.ts +1 -1
- package/package/components/triggers/TriggersWrapper.svelte +1 -0
- package/package/components/triggers/http/RouteEditorInner.svelte +1 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +23 -20
- package/package/components/triggers/nats/NatsTriggersConfigSection.svelte +15 -27
- package/package/components/triggers/nats/NatsTriggersConfigSection.svelte.d.ts +7 -5
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +16 -16
- package/package/hubPaths.json +3 -1
- package/package/script_helpers.d.ts +2 -2
- package/package/script_helpers.js +2 -0
- package/package/stores.d.ts +1 -0
- package/package/stores.js +8 -1
- package/package.json +2 -2
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +0 -28
|
@@ -766,11 +766,21 @@ onDestroy(() => {
|
|
|
766
766
|
selected={oneOfSelected}
|
|
767
767
|
on:selected={({ detail }) => {
|
|
768
768
|
oneOfSelected = detail
|
|
769
|
-
const
|
|
769
|
+
const selectedObjProperties =
|
|
770
770
|
oneOf?.find((o) => o.title == detail)?.properties ?? {}
|
|
771
|
-
)
|
|
771
|
+
const newValueKeys = Object.keys(selectedObjProperties)
|
|
772
772
|
const toKeep = {}
|
|
773
|
-
for (const key of
|
|
773
|
+
for (const key of newValueKeys) {
|
|
774
|
+
// Check if there is a select (enum) in the newly selected oneOf and if the current value is not in the enum, skip it
|
|
775
|
+
if (
|
|
776
|
+
!['kind', 'label'].includes(key) &&
|
|
777
|
+
selectedObjProperties[key]?.enum &&
|
|
778
|
+
value &&
|
|
779
|
+
value[key] !== undefined &&
|
|
780
|
+
!selectedObjProperties[key].enum.includes(value[key])
|
|
781
|
+
) {
|
|
782
|
+
continue
|
|
783
|
+
}
|
|
774
784
|
toKeep[key] = value[key]
|
|
775
785
|
}
|
|
776
786
|
const tagKey = oneOf.find((o) => Object.keys(o.properties ?? {}).includes('kind'))
|
|
@@ -811,8 +821,11 @@ onDestroy(() => {
|
|
|
811
821
|
}
|
|
812
822
|
}
|
|
813
823
|
bind:args={value}
|
|
814
|
-
|
|
815
|
-
|
|
824
|
+
hiddenArgs={[
|
|
825
|
+
oneOf?.find((o) => Object.keys(o.properties ?? {}).includes('kind'))
|
|
826
|
+
? 'kind'
|
|
827
|
+
: 'label'
|
|
828
|
+
]}
|
|
816
829
|
on:reorder={(e) => {
|
|
817
830
|
if (oneOf && oneOf[objIdx]) {
|
|
818
831
|
const keys = e.detail
|
|
@@ -905,20 +918,14 @@ onDestroy(() => {
|
|
|
905
918
|
{disablePortal}
|
|
906
919
|
{disabled}
|
|
907
920
|
{prettifyHeader}
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
}),
|
|
916
|
-
(newSchema) => {
|
|
917
|
-
dispatch('nestedChange')
|
|
918
|
-
}
|
|
919
|
-
}
|
|
921
|
+
schema={{
|
|
922
|
+
properties,
|
|
923
|
+
$schema: '',
|
|
924
|
+
required: nestedRequired ?? [],
|
|
925
|
+
type: 'object',
|
|
926
|
+
order
|
|
927
|
+
}}
|
|
920
928
|
bind:args={value}
|
|
921
|
-
dndType={`nested-${title}`}
|
|
922
929
|
on:reorder={(e) => {
|
|
923
930
|
const keys = e.detail
|
|
924
931
|
order = keys
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
<script lang="ts">import
|
|
1
|
+
<script lang="ts">import { untrack } from 'svelte';
|
|
2
|
+
import CollapseLink from './CollapseLink.svelte';
|
|
2
3
|
import IconedResourceType from './IconedResourceType.svelte';
|
|
3
4
|
import Toggle from './Toggle.svelte';
|
|
4
5
|
import Tooltip from './Tooltip.svelte';
|
|
@@ -25,8 +26,12 @@ function changeDomain(domain, custom) {
|
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
let enabled = $derived(value != undefined);
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
let lastValues = { domain: undefined, custom: undefined };
|
|
30
|
+
$effect.pre(() => {
|
|
31
|
+
if (value?.['domain'] != lastValues.domain || value?.['custom'] != lastValues.custom) {
|
|
32
|
+
lastValues = { domain: value?.['domain'], custom: value?.['custom'] };
|
|
33
|
+
untrack(() => changeDomain(value?.['domain'], value?.['custom']));
|
|
34
|
+
}
|
|
30
35
|
});
|
|
31
36
|
</script>
|
|
32
37
|
|
|
@@ -27,7 +27,7 @@ import { approximateFindPythonRelativePath, isTypescriptRelativePath, parseTypes
|
|
|
27
27
|
import Tooltip from './Tooltip.svelte';
|
|
28
28
|
import { workspaceAIClients } from './copilot/lib';
|
|
29
29
|
import { Triggers } from './triggers/triggers.svelte';
|
|
30
|
-
import {
|
|
30
|
+
import { StepsInputArgs } from './flows/stepsInputArgs.svelte';
|
|
31
31
|
import { ModulesTestStates } from './modulesTest.svelte';
|
|
32
32
|
let flowCopilotContext = {
|
|
33
33
|
shouldUpdatePropertyType: writable({}),
|
|
@@ -374,7 +374,7 @@ const previewArgsStore = $state({ val: {} });
|
|
|
374
374
|
const scriptEditorDrawer = writable(undefined);
|
|
375
375
|
const moving = writable(undefined);
|
|
376
376
|
const history = initHistory(flowStore.val);
|
|
377
|
-
const
|
|
377
|
+
const stepsInputArgs = new StepsInputArgs();
|
|
378
378
|
const selectedIdStore = writable('settings-metadata');
|
|
379
379
|
const triggersCount = writable(undefined);
|
|
380
380
|
const modulesTestStates = new ModulesTestStates((moduleId) => {
|
|
@@ -397,7 +397,7 @@ setContext('FlowEditorContext', {
|
|
|
397
397
|
pathStore: writable(''),
|
|
398
398
|
flowStateStore,
|
|
399
399
|
flowStore,
|
|
400
|
-
|
|
400
|
+
stepsInputArgs,
|
|
401
401
|
saveDraft: () => { },
|
|
402
402
|
initialPathStore: writable(''),
|
|
403
403
|
fakeInitialPath: '',
|
|
@@ -708,7 +708,7 @@ const flowHasChanged = $derived(flowPreviewContent?.flowHasChanged());
|
|
|
708
708
|
noEditor
|
|
709
709
|
on:applyArgs={(ev) => {
|
|
710
710
|
if (ev.detail.kind === 'preprocessor') {
|
|
711
|
-
|
|
711
|
+
stepsInputArgs.setStepArgs('preprocessor', ev.detail.args ?? {})
|
|
712
712
|
$selectedIdStore = 'preprocessor'
|
|
713
713
|
} else {
|
|
714
714
|
previewArgsStore.val = ev.detail.args ?? {}
|
|
@@ -720,6 +720,7 @@ const flowHasChanged = $derived(flowPreviewContent?.flowHasChanged());
|
|
|
720
720
|
isOwner={flowPreviewContent?.getIsOwner()}
|
|
721
721
|
{suspendStatus}
|
|
722
722
|
onOpenDetails={flowPreviewButtons?.openPreview}
|
|
723
|
+
previewOpen={flowPreviewButtons?.getPreviewOpen()}
|
|
723
724
|
/>
|
|
724
725
|
{/key}
|
|
725
726
|
</Pane>
|
|
@@ -155,7 +155,7 @@ export function setDiff(diff) {
|
|
|
155
155
|
<Module.default
|
|
156
156
|
open={true}
|
|
157
157
|
automaticLayout
|
|
158
|
-
|
|
158
|
+
className="h-full"
|
|
159
159
|
defaultLang={lang}
|
|
160
160
|
defaultModifiedLang={data.current.lang}
|
|
161
161
|
defaultOriginal={content}
|
|
@@ -170,7 +170,7 @@ export function setDiff(diff) {
|
|
|
170
170
|
<Module.default
|
|
171
171
|
open={true}
|
|
172
172
|
automaticLayout
|
|
173
|
-
|
|
173
|
+
className="h-full"
|
|
174
174
|
defaultLang="yaml"
|
|
175
175
|
defaultOriginal={metadata}
|
|
176
176
|
defaultModified={data.current.metadata}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts">import { BROWSER } from 'esm-env';
|
|
2
|
-
import {
|
|
2
|
+
import { onMount } from 'svelte';
|
|
3
3
|
import '@codingame/monaco-vscode-standalone-languages';
|
|
4
4
|
import '@codingame/monaco-vscode-standalone-json-language-features';
|
|
5
5
|
import '@codingame/monaco-vscode-standalone-typescript-language-features';
|
|
@@ -7,20 +7,12 @@ import { editor as meditor } from 'monaco-editor';
|
|
|
7
7
|
import { initializeVscode } from './vscode';
|
|
8
8
|
import EditorTheme from './EditorTheme.svelte';
|
|
9
9
|
import Button from './common/button/Button.svelte';
|
|
10
|
+
import { twMerge } from 'tailwind-merge';
|
|
10
11
|
const SIDE_BY_SIDE_MIN_WIDTH = 700;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
export let defaultOriginal = undefined;
|
|
16
|
-
export let defaultModified = undefined;
|
|
17
|
-
export let readOnly = false;
|
|
18
|
-
export let showButtons = false;
|
|
19
|
-
export let showHistoryButton = true;
|
|
20
|
-
let diffEditor;
|
|
21
|
-
let diffDivEl = null;
|
|
22
|
-
let editorWidth = SIDE_BY_SIDE_MIN_WIDTH;
|
|
23
|
-
export let open = false;
|
|
12
|
+
let { open = false, className = '', automaticLayout = true, fixedOverflowWidgets = true, defaultLang, defaultModifiedLang, defaultOriginal = undefined, defaultModified = undefined, readOnly = false, buttons = [], modifiedModel } = $props();
|
|
13
|
+
let diffEditor = $state(undefined);
|
|
14
|
+
let diffDivEl = $state(null);
|
|
15
|
+
let editorWidth = $state(SIDE_BY_SIDE_MIN_WIDTH);
|
|
24
16
|
async function loadDiffEditor() {
|
|
25
17
|
await initializeVscode();
|
|
26
18
|
if (!diffDivEl) {
|
|
@@ -40,23 +32,17 @@ async function loadDiffEditor() {
|
|
|
40
32
|
lineNumbersMinChars: 2,
|
|
41
33
|
scrollbar: { alwaysConsumeMouseWheel: false }
|
|
42
34
|
});
|
|
43
|
-
if (
|
|
44
|
-
defaultModified !== undefined &&
|
|
45
|
-
defaultLang !== undefined) {
|
|
35
|
+
if (defaultLang !== undefined) {
|
|
46
36
|
setupModel(defaultLang, defaultOriginal, defaultModified, defaultModifiedLang);
|
|
47
37
|
}
|
|
48
38
|
}
|
|
49
39
|
export function setupModel(lang, original, modified, modifiedLang) {
|
|
40
|
+
const o = meditor.createModel(original ?? '', lang);
|
|
41
|
+
const m = modifiedModel ?? meditor.createModel(modified ?? '', modifiedLang ?? lang);
|
|
50
42
|
diffEditor?.setModel({
|
|
51
|
-
original:
|
|
52
|
-
modified:
|
|
43
|
+
original: o,
|
|
44
|
+
modified: m
|
|
53
45
|
});
|
|
54
|
-
if (original) {
|
|
55
|
-
setOriginal(original);
|
|
56
|
-
}
|
|
57
|
-
if (modified) {
|
|
58
|
-
setModified(modified);
|
|
59
|
-
}
|
|
60
46
|
}
|
|
61
47
|
export function setOriginal(code) {
|
|
62
48
|
diffEditor?.getModel()?.original?.setValue(code);
|
|
@@ -69,6 +55,15 @@ export function setModified(code) {
|
|
|
69
55
|
diffEditor?.getModel()?.modified?.setValue(code);
|
|
70
56
|
defaultModified = code;
|
|
71
57
|
}
|
|
58
|
+
export function setModifiedModel(model) {
|
|
59
|
+
const curr = diffEditor?.getModel();
|
|
60
|
+
if (!curr)
|
|
61
|
+
return;
|
|
62
|
+
diffEditor?.setModel({
|
|
63
|
+
original: curr.original,
|
|
64
|
+
modified: model
|
|
65
|
+
});
|
|
66
|
+
}
|
|
72
67
|
export function getModified() {
|
|
73
68
|
return diffEditor?.getModel()?.modified.getValue() ?? '';
|
|
74
69
|
}
|
|
@@ -81,8 +76,14 @@ export function hide() {
|
|
|
81
76
|
function onWidthChange(editorWidth) {
|
|
82
77
|
diffEditor?.updateOptions({ renderSideBySide: editorWidth >= SIDE_BY_SIDE_MIN_WIDTH });
|
|
83
78
|
}
|
|
84
|
-
|
|
85
|
-
|
|
79
|
+
$effect(() => {
|
|
80
|
+
if (open && diffDivEl) {
|
|
81
|
+
loadDiffEditor();
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
$effect(() => {
|
|
85
|
+
onWidthChange(editorWidth);
|
|
86
|
+
});
|
|
86
87
|
onMount(() => {
|
|
87
88
|
if (BROWSER) {
|
|
88
89
|
return () => {
|
|
@@ -90,28 +91,24 @@ onMount(() => {
|
|
|
90
91
|
};
|
|
91
92
|
}
|
|
92
93
|
});
|
|
93
|
-
const dispatch = createEventDispatcher();
|
|
94
94
|
</script>
|
|
95
95
|
|
|
96
96
|
{#if open}
|
|
97
97
|
<EditorTheme />
|
|
98
98
|
<div
|
|
99
99
|
bind:this={diffDivEl}
|
|
100
|
-
class=
|
|
100
|
+
class={twMerge('editor nonmain-editor', className)}
|
|
101
101
|
bind:clientWidth={editorWidth}
|
|
102
102
|
></div>
|
|
103
|
-
{#if
|
|
103
|
+
{#if buttons.length > 0}
|
|
104
104
|
<div
|
|
105
105
|
class="absolute flex flex-row gap-2 bottom-10 left-1/2 z-10 -translate-x-1/2 rounded-md p-1 w-full justify-center"
|
|
106
106
|
>
|
|
107
|
-
{#
|
|
108
|
-
<Button on:click={
|
|
109
|
-
>
|
|
107
|
+
{#each buttons as button}
|
|
108
|
+
<Button on:click={button.onClick} variant="contained" size="sm" color={button.color}
|
|
109
|
+
>{button.text}</Button
|
|
110
110
|
>
|
|
111
|
-
{/
|
|
112
|
-
<Button on:click={() => dispatch('hideDiffMode')} variant="contained" size="sm" color="red"
|
|
113
|
-
>Quit diff mode</Button
|
|
114
|
-
>
|
|
111
|
+
{/each}
|
|
115
112
|
</div>
|
|
116
113
|
{/if}
|
|
117
114
|
{/if}
|
|
@@ -1,51 +1,35 @@
|
|
|
1
1
|
import '@codingame/monaco-vscode-standalone-languages';
|
|
2
2
|
import '@codingame/monaco-vscode-standalone-json-language-features';
|
|
3
3
|
import '@codingame/monaco-vscode-standalone-typescript-language-features';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
$$slots?: Slots;
|
|
11
|
-
}): Exports & {
|
|
12
|
-
$set?: any;
|
|
13
|
-
$on?: any;
|
|
14
|
-
};
|
|
15
|
-
z_$$bindings?: Bindings;
|
|
4
|
+
import { editor as meditor } from 'monaco-editor';
|
|
5
|
+
import type { ButtonType } from './common';
|
|
6
|
+
export interface ButtonProp {
|
|
7
|
+
text: string;
|
|
8
|
+
color?: ButtonType.Color;
|
|
9
|
+
onClick: () => void;
|
|
16
10
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
getOriginal?: (() => string) | undefined;
|
|
32
|
-
setModified?: ((code: string) => void) | undefined;
|
|
33
|
-
getModified?: (() => string) | undefined;
|
|
34
|
-
show?: (() => void) | undefined;
|
|
35
|
-
hide?: (() => void) | undefined;
|
|
36
|
-
}, {
|
|
37
|
-
hideDiffMode: CustomEvent<void>;
|
|
38
|
-
seeHistory: CustomEvent<void>;
|
|
39
|
-
} & {
|
|
40
|
-
[evt: string]: CustomEvent<any>;
|
|
41
|
-
}, {}, {
|
|
11
|
+
interface Props {
|
|
12
|
+
open?: boolean;
|
|
13
|
+
className?: string;
|
|
14
|
+
automaticLayout?: boolean;
|
|
15
|
+
fixedOverflowWidgets?: boolean;
|
|
16
|
+
defaultLang?: string;
|
|
17
|
+
defaultModifiedLang?: string;
|
|
18
|
+
defaultOriginal?: string;
|
|
19
|
+
defaultModified?: string;
|
|
20
|
+
readOnly?: boolean;
|
|
21
|
+
buttons?: ButtonProp[];
|
|
22
|
+
modifiedModel?: meditor.ITextModel;
|
|
23
|
+
}
|
|
24
|
+
declare const DiffEditor: import("svelte").Component<Props, {
|
|
42
25
|
setupModel: (lang: string, original?: string, modified?: string, modifiedLang?: string) => void;
|
|
43
26
|
setOriginal: (code: string) => void;
|
|
44
27
|
getOriginal: () => string;
|
|
45
28
|
setModified: (code: string) => void;
|
|
29
|
+
setModifiedModel: (model: meditor.ITextModel) => void;
|
|
46
30
|
getModified: () => string;
|
|
47
31
|
show: () => void;
|
|
48
32
|
hide: () => void;
|
|
49
|
-
},
|
|
50
|
-
type DiffEditor =
|
|
33
|
+
}, "">;
|
|
34
|
+
type DiffEditor = ReturnType<typeof DiffEditor>;
|
|
51
35
|
export default DiffEditor;
|
|
@@ -11,13 +11,13 @@ import { twMerge } from 'tailwind-merge';
|
|
|
11
11
|
import FlowPropertyEditor from './schema/FlowPropertyEditor.svelte';
|
|
12
12
|
import PropertyEditor from './schema/PropertyEditor.svelte';
|
|
13
13
|
import SimpleEditor from './SimpleEditor.svelte';
|
|
14
|
-
import { createEventDispatcher,
|
|
14
|
+
import { createEventDispatcher, untrack } from 'svelte';
|
|
15
15
|
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
16
16
|
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
17
17
|
import Label from './Label.svelte';
|
|
18
18
|
import { sendUserToast } from '../toast';
|
|
19
19
|
import Toggle from './Toggle.svelte';
|
|
20
|
-
import { DynamicSelect, emptyString } from '../utils';
|
|
20
|
+
import { DynamicSelect, emptyString, generateRandomString, readFieldsRecursively } from '../utils';
|
|
21
21
|
import Popover from './meltComponents/Popover.svelte';
|
|
22
22
|
import SchemaFormDnd from './schema/SchemaFormDND.svelte';
|
|
23
23
|
import { deepEqual } from 'fast-equals';
|
|
@@ -27,7 +27,7 @@ import Editor from './Editor.svelte';
|
|
|
27
27
|
import AddPropertyV2 from './schema/AddPropertyV2.svelte';
|
|
28
28
|
// export let openEditTab: () => void = () => {}
|
|
29
29
|
const dispatch = createEventDispatcher();
|
|
30
|
-
let { schema = $bindable(), hiddenArgs = [], args = $bindable(undefined), shouldHideNoInputs = false, noVariablePicker = false, flexWrap = false, uiOnly = false, isFlowInput = false, noPreview = false, jsonEnabled = true, isAppInput = false, displayWebhookWarning = false, onlyMaskPassword = false,
|
|
30
|
+
let { schema = $bindable(), hiddenArgs = [], args = $bindable(undefined), shouldHideNoInputs = false, noVariablePicker = false, flexWrap = false, uiOnly = false, isFlowInput = false, noPreview = false, jsonEnabled = true, isAppInput = false, displayWebhookWarning = false, onlyMaskPassword = false, editTab, previewSchema = undefined, editPanelInitialSize = undefined, editPanelSize = $bindable(0), diff = {}, disableDnd = false, shouldDispatchChanges = false, isValid = $bindable(true), customUi = undefined, pannelExtraButtonWidth = 0, class: clazz = '', dynSelectCode = $bindable(), dynSelectLang = $bindable(), showDynSelectOpt = false, addPropertyInEditorTab = false, openEditTab, addProperty, runButton, extraTab, schemaFormClassName = undefined, onChange = undefined } = $props();
|
|
31
31
|
$effect.pre(() => {
|
|
32
32
|
if (args == undefined) {
|
|
33
33
|
args = {};
|
|
@@ -39,6 +39,12 @@ $effect.pre(() => {
|
|
|
39
39
|
dynSelectCode = schema?.['x-windmill-dyn-select-code'] || '';
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
+
$effect(() => {
|
|
43
|
+
if (onChange) {
|
|
44
|
+
readFieldsRecursively(args);
|
|
45
|
+
onChange(args ?? {});
|
|
46
|
+
}
|
|
47
|
+
});
|
|
42
48
|
$effect(() => {
|
|
43
49
|
if (schema && dynSelectCode !== undefined && dynSelectLang !== undefined) {
|
|
44
50
|
if (dynSelectCode && dynSelectCode.trim()) {
|
|
@@ -64,9 +70,9 @@ export function setDefaults() {
|
|
|
64
70
|
let pickForField;
|
|
65
71
|
let itemPicker = $state(undefined);
|
|
66
72
|
let variableEditor = $state(undefined);
|
|
67
|
-
let keys = $state(Array.isArray(schema?.order)
|
|
73
|
+
let keys = $state((Array.isArray(schema?.order)
|
|
68
74
|
? [...schema.order]
|
|
69
|
-
: (Object.keys(schema?.properties ?? {}) ?? Object.keys(schema?.properties ?? {})));
|
|
75
|
+
: (Object.keys(schema?.properties ?? {}) ?? Object.keys(schema?.properties ?? {}))).filter((x) => !hiddenArgs?.includes(x)));
|
|
70
76
|
function alignOrderWithProperties(schema) {
|
|
71
77
|
if (schema.order == undefined && !Array.isArray(schema.order)) {
|
|
72
78
|
schema.order = [];
|
|
@@ -92,22 +98,16 @@ function alignOrderWithProperties(schema) {
|
|
|
92
98
|
return hasChanged;
|
|
93
99
|
}
|
|
94
100
|
function onSchemaChange() {
|
|
95
|
-
let editSchema = false;
|
|
96
101
|
if (alignOrderWithProperties(schema)) {
|
|
97
|
-
console.log('alignOrderWithProperties', JSON.stringify(schema, null, 2))
|
|
98
|
-
editSchema = true;
|
|
102
|
+
// console.log('alignOrderWithProperties', JSON.stringify(schema, null, 2))
|
|
99
103
|
}
|
|
100
|
-
let lkeys = schema?.order ?? Object.keys(schema?.properties ?? {});
|
|
104
|
+
let lkeys = (schema?.order ?? Object.keys(schema?.properties ?? {})).filter((x) => !hiddenArgs?.includes(x));
|
|
101
105
|
if (schema?.properties && !deepEqual(lkeys, keys)) {
|
|
102
106
|
keys = [...lkeys];
|
|
103
|
-
editSchema = true;
|
|
104
107
|
if (opened == undefined) {
|
|
105
108
|
opened = keys[0];
|
|
106
109
|
}
|
|
107
110
|
}
|
|
108
|
-
if (editSchema) {
|
|
109
|
-
schema = schema;
|
|
110
|
-
}
|
|
111
111
|
}
|
|
112
112
|
let opened = $state(untrack(() => keys[0]));
|
|
113
113
|
function computeSelected(property) {
|
|
@@ -148,25 +148,25 @@ function renameProperty(oldName, key) {
|
|
|
148
148
|
el.value = oldName;
|
|
149
149
|
}
|
|
150
150
|
else {
|
|
151
|
+
let newSchema = $state.snapshot(schema);
|
|
151
152
|
if (args) {
|
|
152
153
|
args[newName] = args[oldName];
|
|
153
154
|
delete args[oldName];
|
|
154
155
|
}
|
|
155
|
-
|
|
156
|
-
delete
|
|
157
|
-
if (
|
|
158
|
-
|
|
156
|
+
newSchema.properties[newName] = newSchema.properties[oldName];
|
|
157
|
+
delete newSchema.properties[oldName];
|
|
158
|
+
if (newSchema.required?.includes(oldName)) {
|
|
159
|
+
newSchema.required = newSchema.required?.map((x) => (x === oldName ? newName : x));
|
|
159
160
|
}
|
|
160
161
|
// Replace the old name with the new name in the order array
|
|
161
|
-
if (
|
|
162
|
-
const index =
|
|
162
|
+
if (newSchema.order) {
|
|
163
|
+
const index = newSchema.order.indexOf(oldName);
|
|
163
164
|
if (index !== -1) {
|
|
164
|
-
|
|
165
|
+
newSchema.order[index] = newName;
|
|
165
166
|
}
|
|
166
167
|
}
|
|
167
168
|
opened = newName;
|
|
168
|
-
schema =
|
|
169
|
-
dispatch('change', schema);
|
|
169
|
+
schema = newSchema;
|
|
170
170
|
sendUserToast('Argument renamed');
|
|
171
171
|
}
|
|
172
172
|
}
|
|
@@ -247,6 +247,7 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
247
247
|
const code = generateFn(functionName);
|
|
248
248
|
dynSelectCode = dynSelectCode ? dynSelectCode.concat(code) : code;
|
|
249
249
|
}
|
|
250
|
+
let dndType = $state(generateRandomString());
|
|
250
251
|
</script>
|
|
251
252
|
|
|
252
253
|
<div class="w-full h-full">
|
|
@@ -283,15 +284,15 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
283
284
|
class="min-h-0 overflow-y-auto grow rounded-md {runButton ? 'flex flex-col gap-2' : ''}"
|
|
284
285
|
>
|
|
285
286
|
<SchemaFormDnd
|
|
286
|
-
|
|
287
|
+
{dndType}
|
|
288
|
+
nestedClasses={'flex flex-col gap-1 ' + (schemaFormClassName ?? '')}
|
|
287
289
|
bind:schema={
|
|
288
290
|
() => (previewSchema ? previewSchema : schema),
|
|
289
291
|
(newSchema) => {
|
|
290
292
|
schema = newSchema
|
|
291
|
-
tick().then(() => dispatch('change', schema))
|
|
292
293
|
}
|
|
293
294
|
}
|
|
294
|
-
{
|
|
295
|
+
{hiddenArgs}
|
|
295
296
|
{disableDnd}
|
|
296
297
|
{onlyMaskPassword}
|
|
297
298
|
bind:args
|
|
@@ -299,11 +300,16 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
299
300
|
opened = e.detail
|
|
300
301
|
}}
|
|
301
302
|
on:reorder={(e) => {
|
|
303
|
+
let order = e.detail
|
|
304
|
+
let newProperties = {}
|
|
305
|
+
for (let key of order) {
|
|
306
|
+
newProperties[key] = schema.properties[key]
|
|
307
|
+
}
|
|
302
308
|
schema = {
|
|
303
309
|
...schema,
|
|
310
|
+
properties: newProperties,
|
|
304
311
|
order: e.detail
|
|
305
312
|
}
|
|
306
|
-
tick().then(() => dispatch('change', schema))
|
|
307
313
|
}}
|
|
308
314
|
helperScript={{
|
|
309
315
|
type: 'inline',
|
|
@@ -315,9 +321,6 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
315
321
|
{diff}
|
|
316
322
|
on:acceptChange
|
|
317
323
|
on:rejectChange
|
|
318
|
-
on:nestedChange={() => {
|
|
319
|
-
dispatch('change', schema)
|
|
320
|
-
}}
|
|
321
324
|
{shouldDispatchChanges}
|
|
322
325
|
bind:isValid
|
|
323
326
|
noVariablePicker={noVariablePicker || customUi?.disableVariablePicker === true}
|
|
@@ -325,8 +328,8 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
325
328
|
|
|
326
329
|
{@render runButton?.()}
|
|
327
330
|
|
|
328
|
-
|
|
329
|
-
|
|
331
|
+
{#if dynSelectFunctions.length > 0}
|
|
332
|
+
<div class="grow">
|
|
330
333
|
<Section
|
|
331
334
|
label="Dynamic select functions"
|
|
332
335
|
collapsable={true}
|
|
@@ -373,8 +376,8 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
373
376
|
{/key}
|
|
374
377
|
</div>
|
|
375
378
|
</Section>
|
|
376
|
-
|
|
377
|
-
|
|
379
|
+
</div>
|
|
380
|
+
{/if}
|
|
378
381
|
</div>
|
|
379
382
|
</div>
|
|
380
383
|
</Pane>
|
|
@@ -393,7 +396,7 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
393
396
|
{#if jsonEnabled && customUi?.jsonOnly != true}
|
|
394
397
|
<div class="w-full p-3 flex gap-4 justify-end items-center">
|
|
395
398
|
{#if addPropertyInEditorTab}
|
|
396
|
-
<AddPropertyV2 bind:schema
|
|
399
|
+
<AddPropertyV2 bind:schema>
|
|
397
400
|
{#snippet trigger()}
|
|
398
401
|
<Button color="light" size="xs" iconOnly startIcon={{ icon: Plus }} />
|
|
399
402
|
{/snippet}
|
|
@@ -508,7 +511,7 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
508
511
|
</div>
|
|
509
512
|
{#if opened === argName}
|
|
510
513
|
<div class="p-4 border-t">
|
|
511
|
-
{#if
|
|
514
|
+
{#if Object.keys(schema?.properties ?? {}).includes(argName)}
|
|
512
515
|
{#if typeof args == 'object' && schema?.properties[argName]}
|
|
513
516
|
<PropertyEditor
|
|
514
517
|
bind:description={schema.properties[argName].description}
|
|
@@ -529,10 +532,6 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
529
532
|
bind:order={schema.properties[argName].order}
|
|
530
533
|
{isFlowInput}
|
|
531
534
|
{isAppInput}
|
|
532
|
-
on:change={() => {
|
|
533
|
-
schema = $state.snapshot(schema)
|
|
534
|
-
dispatch('change', schema)
|
|
535
|
-
}}
|
|
536
535
|
>
|
|
537
536
|
{#snippet typeeditor()}
|
|
538
537
|
{#if isFlowInput || isAppInput}
|
|
@@ -621,13 +620,9 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
621
620
|
type: v
|
|
622
621
|
}
|
|
623
622
|
}
|
|
623
|
+
schema.properties = schema.properties
|
|
624
624
|
}
|
|
625
625
|
}
|
|
626
|
-
on:selected={(e) => {
|
|
627
|
-
schema = schema
|
|
628
|
-
dispatch('change', schema)
|
|
629
|
-
dispatch('schemaChange')
|
|
630
|
-
}}
|
|
631
626
|
>
|
|
632
627
|
{#snippet children({ item })}
|
|
633
628
|
{#each typeOptions as x}
|
|
@@ -641,6 +636,9 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
641
636
|
|
|
642
637
|
{#if isFlowInput || isAppInput}
|
|
643
638
|
<FlowPropertyEditor
|
|
639
|
+
onDrawerClose={() => {
|
|
640
|
+
dndType = generateRandomString()
|
|
641
|
+
}}
|
|
644
642
|
bind:defaultValue={schema.properties[argName].default}
|
|
645
643
|
{variableEditor}
|
|
646
644
|
{itemPicker}
|
|
@@ -671,12 +669,6 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
671
669
|
(x) => x !== argName
|
|
672
670
|
)
|
|
673
671
|
}
|
|
674
|
-
dispatch('change', schema)
|
|
675
|
-
}}
|
|
676
|
-
on:schemaChange={(e) => {
|
|
677
|
-
schema = $state.snapshot(schema)
|
|
678
|
-
dispatch('change', schema)
|
|
679
|
-
dispatch('schemaChange')
|
|
680
672
|
}}
|
|
681
673
|
/>
|
|
682
674
|
{/if}
|
|
@@ -701,7 +693,6 @@ function updateDynSelectCode(functionName, lang = 'bun') {
|
|
|
701
693
|
on:change={() => {
|
|
702
694
|
try {
|
|
703
695
|
schema = JSON.parse(schemaString)
|
|
704
|
-
dispatch('change', schema)
|
|
705
696
|
error = ''
|
|
706
697
|
} catch (err) {
|
|
707
698
|
error = err.message
|
|
@@ -16,7 +16,6 @@ interface Props {
|
|
|
16
16
|
isAppInput?: boolean;
|
|
17
17
|
displayWebhookWarning?: boolean;
|
|
18
18
|
onlyMaskPassword?: boolean;
|
|
19
|
-
dndType?: string | undefined;
|
|
20
19
|
editTab: 'inputEditor' | 'history' | 'savedInputs' | 'json' | 'captures' | 'firstStepInputs' | undefined;
|
|
21
20
|
previewSchema?: Record<string, any> | undefined;
|
|
22
21
|
editPanelInitialSize?: number | undefined;
|
|
@@ -36,6 +35,8 @@ interface Props {
|
|
|
36
35
|
addProperty?: import('svelte').Snippet;
|
|
37
36
|
runButton?: import('svelte').Snippet;
|
|
38
37
|
extraTab?: import('svelte').Snippet;
|
|
38
|
+
schemaFormClassName?: string;
|
|
39
|
+
onChange?: (args: Record<string, any>) => void;
|
|
39
40
|
}
|
|
40
41
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
41
42
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
@@ -53,9 +54,7 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
|
|
|
53
54
|
declare const EditableSchemaForm: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
54
55
|
acceptChange: CustomEvent<any>;
|
|
55
56
|
rejectChange: CustomEvent<any>;
|
|
56
|
-
change: CustomEvent<any>;
|
|
57
57
|
delete: CustomEvent<any>;
|
|
58
|
-
schemaChange: CustomEvent<any>;
|
|
59
58
|
editPanelSizeChanged: CustomEvent<any>;
|
|
60
59
|
} & {
|
|
61
60
|
[evt: string]: CustomEvent<any>;
|