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
|
@@ -7,18 +7,16 @@ import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
|
7
7
|
import { getContext } from 'svelte';
|
|
8
8
|
import { getStringError } from './copilot/chat/utils';
|
|
9
9
|
import AiAgentLogViewer from './AIAgentLogViewer.svelte';
|
|
10
|
-
let { lang, editor, diffEditor, loopStatus = undefined,
|
|
11
|
-
const {
|
|
12
|
-
let selectedJob = $state(undefined);
|
|
13
|
-
let preview = $state(undefined);
|
|
10
|
+
let { lang, editor, diffEditor, loopStatus = undefined, scriptProgress = $bindable(undefined), testJob = undefined, mod, testIsLoading = false, disableMock = false, disableHistory = false, onUpdateMock, loadingJob = false, tagLabel = undefined } = $props();
|
|
11
|
+
const { stepsInputArgs } = getContext('FlowEditorContext');
|
|
14
12
|
let jobProgressReset = $state(() => { });
|
|
15
|
-
$
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
let forceJson = $state(false);
|
|
13
|
+
let outputPickerInner = $state(undefined);
|
|
14
|
+
export function getOutputPickerInner() {
|
|
15
|
+
return outputPickerInner;
|
|
16
|
+
}
|
|
17
|
+
const selectedJob = $derived.by(() => outputPickerInner?.getSelectedJob?.() ?? undefined);
|
|
21
18
|
const logJob = $derived(testJob ?? selectedJob);
|
|
19
|
+
const preview = $derived.by(() => outputPickerInner?.getPreview?.());
|
|
22
20
|
</script>
|
|
23
21
|
|
|
24
22
|
<Splitpanes horizontal>
|
|
@@ -33,7 +31,6 @@ const logJob = $derived(testJob ?? selectedJob);
|
|
|
33
31
|
{/if}
|
|
34
32
|
|
|
35
33
|
<OutputPickerInner
|
|
36
|
-
{lastJob}
|
|
37
34
|
{testJob}
|
|
38
35
|
fullResult
|
|
39
36
|
moduleId={mod.id}
|
|
@@ -41,24 +38,22 @@ const logJob = $derived(testJob ?? selectedJob);
|
|
|
41
38
|
getLogs
|
|
42
39
|
{onUpdateMock}
|
|
43
40
|
mock={mod.mock}
|
|
44
|
-
bind:forceJson
|
|
45
|
-
bind:selectedJob
|
|
46
41
|
isLoading={testIsLoading || loadingJob}
|
|
47
|
-
bind:preview
|
|
48
42
|
path={`path` in mod.value ? mod.value.path : ''}
|
|
49
43
|
{loopStatus}
|
|
50
44
|
{disableMock}
|
|
51
45
|
{disableHistory}
|
|
46
|
+
bind:this={outputPickerInner}
|
|
52
47
|
>
|
|
53
48
|
{#snippet copilot_fix()}
|
|
54
|
-
{#if lang && editor && diffEditor &&
|
|
49
|
+
{#if lang && editor && diffEditor && stepsInputArgs.getStepArgs(mod.id) && selectedJob?.type === 'CompletedJob' && !selectedJob.success && getStringError(selectedJob.result)}
|
|
55
50
|
<ScriptFix {lang} />
|
|
56
51
|
{/if}
|
|
57
52
|
{/snippet}
|
|
58
53
|
</OutputPickerInner>
|
|
59
54
|
</Pane>
|
|
60
55
|
<Pane size={35} minSize={10}>
|
|
61
|
-
{#if (mod.mock?.enabled && preview
|
|
56
|
+
{#if (mod.mock?.enabled && preview !== 'job' && testJob?.type !== 'QueuedJob') || preview === 'mock'}
|
|
62
57
|
<LogViewer
|
|
63
58
|
small
|
|
64
59
|
content={undefined}
|
|
@@ -82,9 +77,9 @@ const logJob = $derived(testJob ?? selectedJob);
|
|
|
82
77
|
jobId={logJob?.id}
|
|
83
78
|
duration={logJob?.['duration_ms']}
|
|
84
79
|
mem={logJob?.['mem_peak']}
|
|
85
|
-
content={logJob?.logs}
|
|
80
|
+
content={logJob?.['logs']}
|
|
86
81
|
isLoading={(testIsLoading && logJob?.['running'] == false) || loadingJob}
|
|
87
|
-
tag={logJob?.tag}
|
|
82
|
+
tag={logJob?.['tag']}
|
|
88
83
|
{tagLabel}
|
|
89
84
|
/>
|
|
90
85
|
{/if}
|
|
@@ -5,17 +5,17 @@ import { getContext } from 'svelte';
|
|
|
5
5
|
import JobLoader, {} from './JobLoader.svelte';
|
|
6
6
|
import { getStepHistoryLoaderContext } from './stepHistoryLoader.svelte';
|
|
7
7
|
import { loadSchemaFromModule } from './flows/flowInfers';
|
|
8
|
-
let { mod, testJob = $bindable(undefined), testIsLoading = $bindable(false), noEditor = false, scriptProgress = $bindable(undefined) } = $props();
|
|
9
|
-
const { flowStore, flowStateStore, pathStore,
|
|
8
|
+
let { mod, testJob = $bindable(undefined), testIsLoading = $bindable(false), noEditor = false, scriptProgress = $bindable(undefined), onJobDone } = $props();
|
|
9
|
+
const { flowStore, flowStateStore, pathStore, stepsInputArgs, previewArgs, modulesTestStates } = getContext('FlowEditorContext');
|
|
10
10
|
let jobLoader = $state(undefined);
|
|
11
11
|
let jobProgressReset = () => { };
|
|
12
12
|
let stepHistoryLoader = getStepHistoryLoaderContext();
|
|
13
13
|
export function runTestWithStepArgs() {
|
|
14
|
-
runTest(
|
|
14
|
+
runTest(stepsInputArgs.getStepArgs(mod.id));
|
|
15
15
|
}
|
|
16
16
|
export function loadArgsAndRunTest() {
|
|
17
|
-
|
|
18
|
-
runTest(
|
|
17
|
+
stepsInputArgs?.updateStepArgs(mod.id, flowStateStore.val, flowStore?.val, previewArgs?.val);
|
|
18
|
+
runTest(stepsInputArgs.getStepArgs(mod.id));
|
|
19
19
|
}
|
|
20
20
|
export async function runTest(args) {
|
|
21
21
|
// Not defined if JobProgressBar not loaded
|
|
@@ -92,6 +92,7 @@ function jobDone(testJob) {
|
|
|
92
92
|
if (modulesTestStates.states[mod.id]) {
|
|
93
93
|
modulesTestStates.states[mod.id].testJob = testJob;
|
|
94
94
|
}
|
|
95
|
+
onJobDone?.();
|
|
95
96
|
}
|
|
96
97
|
export function cancelJob() {
|
|
97
98
|
modulesTestStates.states[mod.id]?.cancel?.();
|
|
@@ -1,10 +1,12 @@
|
|
|
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';
|
|
5
6
|
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
6
7
|
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
7
8
|
let { value = $bindable() } = $props();
|
|
9
|
+
let lastValues = { domain: undefined, custom: undefined };
|
|
8
10
|
function changeDomain(domain, custom) {
|
|
9
11
|
if (value) {
|
|
10
12
|
let baseUrl = custom ? `https://${domain}` : `https://${domain}.okta.com`;
|
|
@@ -25,8 +27,11 @@ function changeDomain(domain, custom) {
|
|
|
25
27
|
}
|
|
26
28
|
}
|
|
27
29
|
let enabled = $derived(value != undefined);
|
|
28
|
-
$effect(() => {
|
|
29
|
-
|
|
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
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script
|
|
1
|
+
<script module>
|
|
2
2
|
import { tick } from 'svelte'
|
|
3
3
|
|
|
4
4
|
export function portal(el, options) {
|
|
@@ -50,13 +50,17 @@
|
|
|
50
50
|
|
|
51
51
|
<script>
|
|
52
52
|
/**
|
|
53
|
-
*
|
|
54
|
-
* @
|
|
53
|
+
* @typedef {Object} Props
|
|
54
|
+
* @property { HTMLElement|string} [target] - DOM Element or CSS Selector
|
|
55
|
+
* @property {any} [name]
|
|
56
|
+
* @property {string|undefined} [class]
|
|
57
|
+
* @property {import('svelte').Snippet} [children]
|
|
55
58
|
*/
|
|
56
|
-
|
|
57
|
-
|
|
59
|
+
|
|
60
|
+
/** @type {Props} */
|
|
61
|
+
let { target = 'body', name = undefined, class: clazz = undefined, children } = $props()
|
|
58
62
|
</script>
|
|
59
63
|
|
|
60
|
-
<div use:portal={{ target, name }} hidden class={
|
|
61
|
-
|
|
64
|
+
<div use:portal={{ target, name }} hidden class={clazz}>
|
|
65
|
+
{@render children?.()}
|
|
62
66
|
</div>
|
|
@@ -3,45 +3,25 @@ export function portal(el: any, options: any): {
|
|
|
3
3
|
destroy: () => void;
|
|
4
4
|
};
|
|
5
5
|
export default Portal;
|
|
6
|
-
type Portal =
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
target?: string | HTMLElement | undefined;
|
|
10
|
-
}, {
|
|
11
|
-
default: {};
|
|
12
|
-
}>, {
|
|
13
|
-
[evt: string]: CustomEvent<any>;
|
|
14
|
-
}, {
|
|
15
|
-
default: {};
|
|
16
|
-
}> & {
|
|
17
|
-
$$bindings?: string | undefined;
|
|
6
|
+
type Portal = {
|
|
7
|
+
$on?(type: string, callback: (e: any) => void): () => void;
|
|
8
|
+
$set?(props: Partial<Props>): void;
|
|
18
9
|
};
|
|
19
|
-
declare const Portal:
|
|
20
|
-
|
|
10
|
+
declare const Portal: import("svelte").Component<{
|
|
11
|
+
/**
|
|
12
|
+
* - DOM Element or CSS Selector
|
|
13
|
+
*/
|
|
14
|
+
target?: string | HTMLElement | undefined;
|
|
21
15
|
name?: any;
|
|
16
|
+
class?: string | undefined;
|
|
17
|
+
children?: import("svelte").Snippet<[]> | undefined;
|
|
18
|
+
}, {}, "">;
|
|
19
|
+
type Props = {
|
|
20
|
+
/**
|
|
21
|
+
* - DOM Element or CSS Selector
|
|
22
|
+
*/
|
|
22
23
|
target?: string | HTMLElement | undefined;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}, {
|
|
28
|
-
default: {};
|
|
29
|
-
}, {}, string>;
|
|
30
|
-
type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
|
|
31
|
-
default: any;
|
|
32
|
-
} ? Props extends Record<string, never> ? any : {
|
|
33
|
-
children?: any;
|
|
34
|
-
} : {});
|
|
35
|
-
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> {
|
|
36
|
-
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
37
|
-
$$bindings?: Bindings;
|
|
38
|
-
} & Exports;
|
|
39
|
-
(internal: unknown, props: Props & {
|
|
40
|
-
$$events?: Events;
|
|
41
|
-
$$slots?: Slots;
|
|
42
|
-
}): Exports & {
|
|
43
|
-
$set?: any;
|
|
44
|
-
$on?: any;
|
|
45
|
-
};
|
|
46
|
-
z_$$bindings?: Bindings;
|
|
47
|
-
}
|
|
24
|
+
name?: any;
|
|
25
|
+
class?: string | undefined;
|
|
26
|
+
children?: import("svelte").Snippet<[]> | undefined;
|
|
27
|
+
};
|
|
@@ -25,7 +25,7 @@ export async function setArgs(nargs) {
|
|
|
25
25
|
export function run() {
|
|
26
26
|
runAction(scheduledForStr, args ?? {}, invisible_to_owner, overrideTag);
|
|
27
27
|
}
|
|
28
|
-
let { runnable
|
|
28
|
+
let { runnable, runAction, buttonText = 'Run', schedulable = true, detailed = true, autofocus = false, topButton = false, loading = false, noVariablePicker = false, viewKeybinding = false, scheduledForStr = $bindable(), invisible_to_owner = $bindable(), overrideTag = $bindable(), args = $bindable(), jsonView = false, isValid = $bindable(true) } = $props();
|
|
29
29
|
$effect.pre(() => {
|
|
30
30
|
if (args == undefined) {
|
|
31
31
|
args = {};
|
|
@@ -238,7 +238,7 @@ $effect(() => {
|
|
|
238
238
|
bind:scheduledForStr
|
|
239
239
|
bind:invisible_to_owner
|
|
240
240
|
bind:overrideTag
|
|
241
|
-
|
|
241
|
+
{runnable}
|
|
242
242
|
/>
|
|
243
243
|
{/snippet}
|
|
244
244
|
</Popover>
|
|
@@ -33,6 +33,6 @@ declare const RunForm: import("svelte").Component<Props, {
|
|
|
33
33
|
setArgs: (nargs: Record<string, any>) => Promise<void>;
|
|
34
34
|
run: () => void;
|
|
35
35
|
setCode: (code: string) => void;
|
|
36
|
-
}, "args" | "invisible_to_owner" | "
|
|
36
|
+
}, "args" | "invisible_to_owner" | "isValid" | "scheduledForStr" | "overrideTag">;
|
|
37
37
|
type RunForm = ReturnType<typeof RunForm>;
|
|
38
38
|
export default RunForm;
|
|
@@ -53,7 +53,19 @@ async function loadWorkerGroups() {
|
|
|
53
53
|
{#if !$userStore?.operator}
|
|
54
54
|
{#if $workerTags && $workerTags?.length > 0}
|
|
55
55
|
<div class="w-full">
|
|
56
|
-
<select
|
|
56
|
+
<select
|
|
57
|
+
placeholder="Worker group"
|
|
58
|
+
bind:value={
|
|
59
|
+
() => overrideTag ?? '',
|
|
60
|
+
(v) => {
|
|
61
|
+
if (v == '') {
|
|
62
|
+
overrideTag = undefined
|
|
63
|
+
} else {
|
|
64
|
+
overrideTag = v
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
>
|
|
57
69
|
{#if overrideTag}
|
|
58
70
|
<option value="">reset to default</option>
|
|
59
71
|
{:else}
|
|
@@ -14,7 +14,7 @@ import ArgInput from './ArgInput.svelte';
|
|
|
14
14
|
import { createEventDispatcher, untrack } from 'svelte';
|
|
15
15
|
import { deepEqual } from 'fast-equals';
|
|
16
16
|
import { dragHandleZone } from '@windmill-labs/svelte-dnd-action';
|
|
17
|
-
let { schema = $bindable(), hiddenArgs = [], schemaFieldTooltip = {}, args = $bindable(undefined), disabledArgs = [], disabled = false, isValid = $bindable(true), autofocus = false, defaultValues = {}, shouldHideNoInputs = false, compact = false, linkedSecret = $bindable(undefined), linkedSecretCandidates = undefined, noVariablePicker = false, flexWrap = false, noDelete = false, prettifyHeader = false, disablePortal = false, showSchemaExplorer = false, showReset = false, onlyMaskPassword = false, dndConfig = undefined, items = undefined, helperScript = undefined, lightHeader = false, diff = {}, nestedParent = undefined, shouldDispatchChanges = false, nestedClasses = '', dynamicEnums = {}, largeGap = false, css = undefined, displayType = true, appPath = undefined, className = '', computeS3ForceViewerPolicies = undefined, workspace = undefined, actions } = $props();
|
|
17
|
+
let { schema = $bindable(), hiddenArgs = [], schemaFieldTooltip = {}, args = $bindable(undefined), disabledArgs = [], disabled = false, isValid = $bindable(true), autofocus = false, defaultValues = {}, shouldHideNoInputs = false, compact = false, linkedSecret = $bindable(undefined), linkedSecretCandidates = undefined, noVariablePicker = false, flexWrap = false, noDelete = false, prettifyHeader = false, disablePortal = false, showSchemaExplorer = false, showReset = false, onlyMaskPassword = false, dndConfig = undefined, items = undefined, helperScript = undefined, lightHeader = false, diff = {}, nestedParent = undefined, shouldDispatchChanges = false, nestedClasses = '', dynamicEnums = {}, largeGap = false, css = undefined, displayType = true, appPath = undefined, className = '', computeS3ForceViewerPolicies = undefined, workspace = undefined, actions: actions_render = undefined } = $props();
|
|
18
18
|
const dispatch = createEventDispatcher();
|
|
19
19
|
let inputCheck = $state({});
|
|
20
20
|
export function setDefaults() {
|
|
@@ -135,7 +135,6 @@ $effect.pre(() => {
|
|
|
135
135
|
$effect.pre(() => {
|
|
136
136
|
isValid = allTrue(inputCheck ?? {});
|
|
137
137
|
});
|
|
138
|
-
const actions_render = $derived(actions);
|
|
139
138
|
</script>
|
|
140
139
|
|
|
141
140
|
{#if showReset}
|
|
@@ -908,7 +908,7 @@ async function loadWorkerTags() {
|
|
|
908
908
|
>
|
|
909
909
|
<LanguageIcon {lang} />
|
|
910
910
|
<span class="ml-2 py-2 truncate">{label}</span>
|
|
911
|
-
{#if lang === '
|
|
911
|
+
{#if lang === 'ruby'}
|
|
912
912
|
<span class="text-tertiary !text-xs"> BETA </span>
|
|
913
913
|
{/if}
|
|
914
914
|
</Button>
|
|
@@ -35,6 +35,7 @@ import { aiChatManager, AIMode } from './copilot/chat/AIChatManager.svelte';
|
|
|
35
35
|
import { triggerableByAI } from '../actions/triggerableByAI.svelte';
|
|
36
36
|
import AssetsDropdownButton from './assets/AssetsDropdownButton.svelte';
|
|
37
37
|
import { assetEq } from './assets/lib';
|
|
38
|
+
import { editor as meditor } from 'monaco-editor';
|
|
38
39
|
let { schema = $bindable(), code = $bindable(), path, lang, kind = undefined, template = 'script', tag, fixedOverflowWidgets = true, noSyncFromGithub = false, editor = $bindable(undefined), diffEditor = $bindable(undefined), collabMode = false, edit = true, noHistory = false, saveToWorkspace = false, watchChanges = false, customUi = undefined, args = $bindable(), selectedTab = $bindable('main'), hasPreprocessor = $bindable(false), captureTable = $bindable(undefined), showCaptures = true, stablePathForCaptures = '', lastSavedCode = undefined, lastDeployedCode = undefined, disableAi = false, assets = $bindable(), editor_bar_right } = $props();
|
|
39
40
|
$effect.pre(() => {
|
|
40
41
|
if (schema == undefined) {
|
|
@@ -273,7 +274,7 @@ function getError(job) {
|
|
|
273
274
|
function showDiffMode() {
|
|
274
275
|
diffMode = true;
|
|
275
276
|
diffEditor?.setOriginal(lastDeployedCode ?? '');
|
|
276
|
-
diffEditor?.
|
|
277
|
+
diffEditor?.setModifiedModel(editor?.getModel());
|
|
277
278
|
diffEditor?.show();
|
|
278
279
|
editor?.hide();
|
|
279
280
|
}
|
|
@@ -493,16 +494,29 @@ $effect(() => {
|
|
|
493
494
|
{args}
|
|
494
495
|
/>
|
|
495
496
|
<DiffEditor
|
|
496
|
-
|
|
497
|
+
className="h-full"
|
|
497
498
|
bind:this={diffEditor}
|
|
499
|
+
modifiedModel={editor?.getModel() as meditor.ITextModel}
|
|
498
500
|
automaticLayout
|
|
499
501
|
defaultLang={scriptLangToEditorLang(lang)}
|
|
500
502
|
{fixedOverflowWidgets}
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
503
|
+
buttons={diffMode
|
|
504
|
+
? [
|
|
505
|
+
{
|
|
506
|
+
text: 'See changes history',
|
|
507
|
+
onClick: () => {
|
|
508
|
+
showHistoryDrawer = true
|
|
509
|
+
}
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
text: 'Quit diff mode',
|
|
513
|
+
onClick: () => {
|
|
514
|
+
hideDiffMode()
|
|
515
|
+
},
|
|
516
|
+
color: 'red'
|
|
517
|
+
}
|
|
518
|
+
]
|
|
519
|
+
: []}
|
|
506
520
|
/>
|
|
507
521
|
{/key}
|
|
508
522
|
</div>
|
|
@@ -289,7 +289,6 @@ async function loadMonaco() {
|
|
|
289
289
|
return;
|
|
290
290
|
}
|
|
291
291
|
try {
|
|
292
|
-
console.log('fixedOverflowWidgets', fixedOverflowWidgets);
|
|
293
292
|
editor = meditor.create(divEl, {
|
|
294
293
|
...editorConfig(code ?? '', lang, automaticLayout, fixedOverflowWidgets, $relativeLineNumbers),
|
|
295
294
|
model,
|
|
@@ -121,11 +121,11 @@ async function getMenuElements() {
|
|
|
121
121
|
<Disposable
|
|
122
122
|
{id}
|
|
123
123
|
bind:this={disposable}
|
|
124
|
-
|
|
124
|
+
onOpen={() => {
|
|
125
125
|
outputs?.open.set(true)
|
|
126
126
|
onOpenRecomputeIds?.forEach((id) => $runnableComponents?.[id]?.cb?.map((cb) => cb?.()))
|
|
127
127
|
}}
|
|
128
|
-
|
|
128
|
+
onClose={() => {
|
|
129
129
|
outputs?.open.set(false)
|
|
130
130
|
onCloseRecomputeIds?.forEach((id) => $runnableComponents?.[id]?.cb?.map((cb) => cb?.()))
|
|
131
131
|
}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">import { getContext } from 'svelte';
|
|
2
2
|
import { handleEscape, handlePaste, handleArrowUp, handleCut, handleCopy, down, right, left } from './componentCallbacks.svelte';
|
|
3
|
-
const { history, movingcomponents, jobsDrawerOpen } = getContext('AppEditorContext');
|
|
3
|
+
const { history, movingcomponents, jobsDrawerOpen, runnableJobEditorPanel } = getContext('AppEditorContext');
|
|
4
4
|
const { app, selectedComponent, focusedGrid, componentControl } = getContext('AppViewerContext');
|
|
5
5
|
const ctx = {
|
|
6
6
|
history,
|
|
@@ -16,7 +16,8 @@ function keydown(event) {
|
|
|
16
16
|
// Ignore keydown events if the user is typing in monaco
|
|
17
17
|
let classes = event.target?.['className'];
|
|
18
18
|
if ((typeof classes === 'string' && classes.includes('inputarea')) ||
|
|
19
|
-
['INPUT', 'TEXTAREA'].includes(document.activeElement?.tagName)
|
|
19
|
+
['INPUT', 'TEXTAREA'].includes(document.activeElement?.tagName) ||
|
|
20
|
+
$runnableJobEditorPanel.focused) {
|
|
20
21
|
return;
|
|
21
22
|
}
|
|
22
23
|
switch (event.key) {
|
|
@@ -350,7 +350,7 @@ let extraLib = $derived(isFrontend && worldStore
|
|
|
350
350
|
<DiffEditor
|
|
351
351
|
open={false}
|
|
352
352
|
bind:this={diffEditor}
|
|
353
|
-
|
|
353
|
+
className="h-full"
|
|
354
354
|
automaticLayout
|
|
355
355
|
fixedOverflowWidgets
|
|
356
356
|
defaultLang={scriptLangToEditorLang(inlineScript?.language)}
|
|
@@ -218,6 +218,7 @@ $effect(() => {
|
|
|
218
218
|
$effect(() => {
|
|
219
219
|
items != undefined && handleItemsChange();
|
|
220
220
|
});
|
|
221
|
+
const rnd = generateRandomString();
|
|
221
222
|
</script>
|
|
222
223
|
|
|
223
224
|
<div class="flex gap-2 flex-col mt-2 w-full">
|
|
@@ -267,7 +268,8 @@ $effect(() => {
|
|
|
267
268
|
use:dragHandleZone={{
|
|
268
269
|
items,
|
|
269
270
|
flipDurationMs,
|
|
270
|
-
dropTargetStyle: {}
|
|
271
|
+
dropTargetStyle: {},
|
|
272
|
+
type: rnd
|
|
271
273
|
}}
|
|
272
274
|
onconsider={handleConsider}
|
|
273
275
|
onfinalize={handleFinalize}
|
|
@@ -92,6 +92,7 @@ function addCondition() {
|
|
|
92
92
|
});
|
|
93
93
|
component.numberOfSubgrids = items.length + 1;
|
|
94
94
|
}
|
|
95
|
+
const rnd = generateRandomString();
|
|
95
96
|
</script>
|
|
96
97
|
|
|
97
98
|
<PanelSection title={'Conditions'}>
|
|
@@ -107,7 +108,8 @@ function addCondition() {
|
|
|
107
108
|
use:dragHandleZone={{
|
|
108
109
|
items: items,
|
|
109
110
|
flipDurationMs: 200,
|
|
110
|
-
dropTargetStyle: {}
|
|
111
|
+
dropTargetStyle: {},
|
|
112
|
+
type: rnd
|
|
111
113
|
}}
|
|
112
114
|
onconsider={handleConsider}
|
|
113
115
|
onfinalize={handleFinalize}
|
|
@@ -94,6 +94,7 @@ function handleFinalize(e) {
|
|
|
94
94
|
}
|
|
95
95
|
let resolvedPaths = $state([]);
|
|
96
96
|
let resolvedLabels = $state([]);
|
|
97
|
+
const rnd = generateRandomString();
|
|
97
98
|
</script>
|
|
98
99
|
|
|
99
100
|
<PanelSection
|
|
@@ -107,7 +108,8 @@ let resolvedLabels = $state([]);
|
|
|
107
108
|
use:dragHandleZone={{
|
|
108
109
|
items,
|
|
109
110
|
flipDurationMs: 200,
|
|
110
|
-
dropTargetStyle: {}
|
|
111
|
+
dropTargetStyle: {},
|
|
112
|
+
type: rnd
|
|
111
113
|
}}
|
|
112
114
|
onconsider={handleConsider}
|
|
113
115
|
onfinalize={handleFinalize}
|
|
@@ -112,6 +112,7 @@ function handleFinalize(e) {
|
|
|
112
112
|
});
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
+
const rnd = generateRandomString();
|
|
115
116
|
</script>
|
|
116
117
|
|
|
117
118
|
<PanelSection title={`${word}s ${tabs && tabs.length > 0 ? `(${tabs.length})` : ''}`}>
|
|
@@ -123,7 +124,8 @@ function handleFinalize(e) {
|
|
|
123
124
|
use:dragHandleZone={{
|
|
124
125
|
items,
|
|
125
126
|
flipDurationMs: 200,
|
|
126
|
-
dropTargetStyle: {}
|
|
127
|
+
dropTargetStyle: {},
|
|
128
|
+
type: rnd
|
|
127
129
|
}}
|
|
128
130
|
onconsider={handleConsider}
|
|
129
131
|
onfinalize={handleFinalize}
|
|
@@ -3,7 +3,7 @@ import { addWhitespaceBeforeCapitals, capitalize } from '../../../../utils';
|
|
|
3
3
|
import { cleanseOneOfConfiguration } from '../appUtils';
|
|
4
4
|
import InputsSpecEditor from './InputsSpecEditor.svelte';
|
|
5
5
|
let { key, oneOf = $bindable(), inputSpecsConfiguration, labels, shouldCapitalize, id, resourceOnly, tooltip, disabledOptions = [], acceptSelf = false, recomputeOnInputChanged = true, showOnDemandOnlyToggle = true } = $props();
|
|
6
|
-
$effect(() => {
|
|
6
|
+
$effect.pre(() => {
|
|
7
7
|
if (oneOf == undefined) {
|
|
8
8
|
oneOf = { configuration: {}, selected: '' };
|
|
9
9
|
}
|
|
@@ -35,59 +35,61 @@ function getValueOfDeprecated(obj) {
|
|
|
35
35
|
</script>
|
|
36
36
|
|
|
37
37
|
<div class="p-2 border">
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
</div>
|
|
44
|
-
<select
|
|
45
|
-
class="w-full border border-gray-300 rounded-md p-2"
|
|
46
|
-
value={oneOf.selected}
|
|
47
|
-
onchange={(e) => {
|
|
48
|
-
oneOf = { ...oneOf, selected: e?.target?.['value'] }
|
|
49
|
-
}}
|
|
50
|
-
>
|
|
51
|
-
{#each Object.keys(inputSpecsConfiguration ?? {}) as choice}
|
|
52
|
-
{#if (!disabledOptions.includes(choice) && !getValueOfDeprecated(inputSpecsConfiguration[choice])) || oneOf.selected === choice}
|
|
53
|
-
<option value={choice}>{labels?.[choice] ?? choice}</option>
|
|
38
|
+
{#if oneOf}
|
|
39
|
+
<div class="mb-2 text-sm font-semibold">
|
|
40
|
+
{capitalize(addWhitespaceBeforeCapitals(key))}
|
|
41
|
+
{#if tooltip}
|
|
42
|
+
<Tooltip light>{tooltip}</Tooltip>
|
|
54
43
|
{/if}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
{#each Object.keys(inputSpecsConfiguration?.[oneOf.selected] ?? {}) as nestedKey}
|
|
62
|
-
{@const config = {
|
|
63
|
-
...inputSpecsConfiguration?.[oneOf.selected]?.[nestedKey],
|
|
64
|
-
...oneOf.configuration?.[oneOf.selected]?.[nestedKey]
|
|
44
|
+
</div>
|
|
45
|
+
<select
|
|
46
|
+
class="w-full border border-gray-300 rounded-md p-2"
|
|
47
|
+
value={oneOf.selected}
|
|
48
|
+
onchange={(e) => {
|
|
49
|
+
oneOf = { ...oneOf, selected: e?.target?.['value'] }
|
|
65
50
|
}}
|
|
51
|
+
>
|
|
52
|
+
{#each Object.keys(inputSpecsConfiguration ?? {}) as choice}
|
|
53
|
+
{#if (!disabledOptions.includes(choice) && !getValueOfDeprecated(inputSpecsConfiguration[choice])) || oneOf.selected === choice}
|
|
54
|
+
<option value={choice}>{labels?.[choice] ?? choice}</option>
|
|
55
|
+
{/if}
|
|
56
|
+
{/each}
|
|
57
|
+
</select>
|
|
58
|
+
{#if oneOf.selected !== 'none' && oneOf.selected !== 'errorOverlay'}
|
|
59
|
+
<div class="mb-4"></div>
|
|
60
|
+
{/if}
|
|
61
|
+
<div class="flex flex-col gap-4">
|
|
62
|
+
{#each Object.keys(inputSpecsConfiguration?.[oneOf.selected] ?? {}) as nestedKey}
|
|
63
|
+
{@const config = {
|
|
64
|
+
...inputSpecsConfiguration?.[oneOf.selected]?.[nestedKey],
|
|
65
|
+
...oneOf.configuration?.[oneOf.selected]?.[nestedKey]
|
|
66
|
+
}}
|
|
66
67
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
68
|
+
{#if config && oneOf.configuration[oneOf.selected]}
|
|
69
|
+
<InputsSpecEditor
|
|
70
|
+
{recomputeOnInputChanged}
|
|
71
|
+
key={nestedKey}
|
|
72
|
+
bind:componentInput={oneOf.configuration[oneOf.selected][nestedKey]}
|
|
73
|
+
{id}
|
|
74
|
+
{acceptSelf}
|
|
75
|
+
userInputEnabled={false}
|
|
76
|
+
{shouldCapitalize}
|
|
77
|
+
{resourceOnly}
|
|
78
|
+
fieldType={config?.['fieldType']}
|
|
79
|
+
subFieldType={config?.['subFieldType']}
|
|
80
|
+
format={config?.['format']}
|
|
81
|
+
selectOptions={config?.['selectOptions']}
|
|
82
|
+
placeholder={config?.['placeholder']}
|
|
83
|
+
customTitle={config?.['customTitle']}
|
|
84
|
+
tooltip={config?.['tooltip']}
|
|
85
|
+
fileUpload={config?.['fileUpload']}
|
|
86
|
+
loading={config?.['loading']}
|
|
87
|
+
documentationLink={config?.['documentationLink']}
|
|
88
|
+
allowTypeChange={config?.['allowTypeChange']}
|
|
89
|
+
{showOnDemandOnlyToggle}
|
|
90
|
+
/>
|
|
91
|
+
{/if}
|
|
92
|
+
{/each}
|
|
93
|
+
</div>
|
|
94
|
+
{/if}
|
|
93
95
|
</div>
|
|
@@ -72,6 +72,7 @@ function handleFinalize(e) {
|
|
|
72
72
|
const { items: newItems } = e.detail;
|
|
73
73
|
items = newItems;
|
|
74
74
|
}
|
|
75
|
+
const rnd = generateRandomString();
|
|
75
76
|
</script>
|
|
76
77
|
|
|
77
78
|
{#if components}
|
|
@@ -101,7 +102,8 @@ function handleFinalize(e) {
|
|
|
101
102
|
use:dragHandleZone={{
|
|
102
103
|
items,
|
|
103
104
|
flipDurationMs: 200,
|
|
104
|
-
dropTargetStyle: {}
|
|
105
|
+
dropTargetStyle: {},
|
|
106
|
+
type: rnd
|
|
105
107
|
}}
|
|
106
108
|
onconsider={handleConsider}
|
|
107
109
|
onfinalize={handleFinalize}
|