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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { OpenFlow } from '../../gen';
|
|
1
|
+
import type { Job, OpenFlow } from '../../gen';
|
|
2
2
|
import type { History } from '../../history.svelte';
|
|
3
3
|
import type { Writable } from 'svelte/store';
|
|
4
4
|
import type ScriptEditorDrawer from './content/ScriptEditorDrawer.svelte';
|
|
@@ -7,12 +7,13 @@ import type { FlowBuilderWhitelabelCustomUi } from '../custom_ui';
|
|
|
7
7
|
import type Editor from '../Editor.svelte';
|
|
8
8
|
import type SimpleEditor from '../SimpleEditor.svelte';
|
|
9
9
|
import type { StateStore } from '../../utils';
|
|
10
|
-
import type {
|
|
10
|
+
import type { StepsInputArgs } from './stepsInputArgs.svelte';
|
|
11
11
|
import type { Asset, AssetWithAccessType } from '../assets/lib';
|
|
12
12
|
import type S3FilePicker from '../S3FilePicker.svelte';
|
|
13
13
|
import type DbManagerDrawer from '../DBManagerDrawer.svelte';
|
|
14
14
|
import type ResourceEditorDrawer from '../ResourceEditorDrawer.svelte';
|
|
15
15
|
import type { ModulesTestStates } from '../modulesTest.svelte';
|
|
16
|
+
import type { ButtonProp } from '../DiffEditor.svelte';
|
|
16
17
|
export type FlowInput = Record<string, {
|
|
17
18
|
flowStepWarnings?: Record<string, {
|
|
18
19
|
message: string;
|
|
@@ -38,6 +39,8 @@ export type CurrentEditor = (({
|
|
|
38
39
|
hideDiffMode: () => void;
|
|
39
40
|
diffMode: boolean;
|
|
40
41
|
lastDeployedCode: string | undefined;
|
|
42
|
+
setDiffOriginal?: (code: string) => void;
|
|
43
|
+
setDiffButtons?: (buttons: ButtonProp[]) => void;
|
|
41
44
|
} | {
|
|
42
45
|
type: 'iterator';
|
|
43
46
|
editor: SimpleEditor;
|
|
@@ -57,7 +60,7 @@ export type FlowEditorContext = {
|
|
|
57
60
|
flowStore: StateStore<ExtendedOpenFlow>;
|
|
58
61
|
flowInputEditorState: Writable<FlowInputEditorState>;
|
|
59
62
|
flowStateStore: StateStore<FlowState>;
|
|
60
|
-
|
|
63
|
+
stepsInputArgs: StepsInputArgs;
|
|
61
64
|
saveDraft: () => void;
|
|
62
65
|
initialPathStore: Writable<string>;
|
|
63
66
|
fakeInitialPath: string;
|
|
@@ -79,3 +82,13 @@ export type FlowGraphAssetContext = StateStore<{
|
|
|
79
82
|
additionalAssetsMap: Record<string, AssetWithAccessType[]>;
|
|
80
83
|
computeAssetsCount: (asset: Asset) => number;
|
|
81
84
|
}>;
|
|
85
|
+
export type OutputViewerJob = ((Job | {
|
|
86
|
+
id: string;
|
|
87
|
+
result: unknown;
|
|
88
|
+
type: 'CompletedJob';
|
|
89
|
+
workspace_id: string;
|
|
90
|
+
success: boolean;
|
|
91
|
+
}) & {
|
|
92
|
+
result_stream?: string;
|
|
93
|
+
result?: unknown;
|
|
94
|
+
}) | undefined;
|
|
@@ -303,7 +303,7 @@ let graph = $derived.by(() => {
|
|
|
303
303
|
suspendStatus,
|
|
304
304
|
flowHasChanged,
|
|
305
305
|
additionalAssetsMap: flowGraphAssetsCtx?.val.additionalAssetsMap
|
|
306
|
-
}, untrack(() => failureModule),
|
|
306
|
+
}, untrack(() => failureModule), preprocessorModule, eventHandler, success, $useDataflow, untrack(() => $selectedId), moving, simplifiableFlow, triggerNode ? path : undefined, expandedSubflows);
|
|
307
307
|
});
|
|
308
308
|
$effect(() => {
|
|
309
309
|
;
|
|
@@ -7,7 +7,7 @@ export const BELOW_ADDITIONAL_OFFSET = 19;
|
|
|
7
7
|
export const AI_TOOL_CALL_PREFIX = '_wm_ai_agent_tool_call';
|
|
8
8
|
export const AI_TOOL_MESSAGE_PREFIX = '_wm_ai_agent_message';
|
|
9
9
|
const ROW_WIDTH = 275;
|
|
10
|
-
const NEW_TOOL_NODE_WIDTH =
|
|
10
|
+
const NEW_TOOL_NODE_WIDTH = 50;
|
|
11
11
|
const MAX_TOOLS_PER_ROW = 2;
|
|
12
12
|
let computeAIToolNodesCache;
|
|
13
13
|
export function getToolCallId(idx, agentModuleId, moduleId) {
|
|
@@ -100,13 +100,13 @@ export function computeAIToolNodes(nodes, eventHandlers, insertable, flowModuleS
|
|
|
100
100
|
id: `${node.id}-tool-${tool.id}`,
|
|
101
101
|
width: inputToolWidth,
|
|
102
102
|
position: {
|
|
103
|
-
x: tools.length === 1
|
|
103
|
+
x: (tools.length === 1
|
|
104
104
|
? (ROW_WIDTH - inputToolWidth) / 2
|
|
105
105
|
: (i + 1) % 2 === 0
|
|
106
106
|
? inputToolWidth + inputToolXGap
|
|
107
107
|
: isLastRow && tools.length % 2 === 1
|
|
108
108
|
? (ROW_WIDTH - inputToolWidth) / 2
|
|
109
|
-
: 0,
|
|
109
|
+
: 0) + node.data.offset,
|
|
110
110
|
y: baseOffset +
|
|
111
111
|
rowOffset *
|
|
112
112
|
(agentActions
|
|
@@ -132,7 +132,7 @@ export function computeAIToolNodes(nodes, eventHandlers, insertable, flowModuleS
|
|
|
132
132
|
parentId: node.id,
|
|
133
133
|
width: NEW_TOOL_NODE_WIDTH,
|
|
134
134
|
position: {
|
|
135
|
-
x: (ROW_WIDTH - NEW_TOOL_NODE_WIDTH) / 2,
|
|
135
|
+
x: (ROW_WIDTH - NEW_TOOL_NODE_WIDTH) / 2 + node.data.offset,
|
|
136
136
|
y: baseOffset + rowOffset
|
|
137
137
|
}
|
|
138
138
|
});
|
|
@@ -1,64 +1,81 @@
|
|
|
1
|
-
<script lang="ts">import {
|
|
1
|
+
<script lang="ts">import { preventDefault, stopPropagation } from 'svelte/legacy';
|
|
2
|
+
import { twMerge } from 'tailwind-merge';
|
|
2
3
|
import {} from '../../graphBuilder.svelte';
|
|
3
|
-
import NodeWrapper from './NodeWrapper.svelte';
|
|
4
|
-
import Popover from '../../../meltComponents/Popover.svelte';
|
|
5
4
|
import InsertModuleInner from '../../../flows/map/InsertModuleInner.svelte';
|
|
5
|
+
import { Cross } from 'lucide-svelte';
|
|
6
|
+
import PopupV2 from '../../../common/popup/PopupV2.svelte';
|
|
7
|
+
import { flip, offset } from 'svelte-floating-ui/dom';
|
|
6
8
|
let funcDesc = $state('');
|
|
7
9
|
let { data } = $props();
|
|
10
|
+
let floatingConfig = {
|
|
11
|
+
strategy: 'fixed',
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
placement: 'bottom-center',
|
|
14
|
+
middleware: [offset(8), flip()],
|
|
15
|
+
autoUpdate: true
|
|
16
|
+
};
|
|
8
17
|
</script>
|
|
9
18
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
|
|
19
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
20
|
+
<PopupV2 {floatingConfig} target="#flow-editor">
|
|
21
|
+
{#snippet button({ pointerdown, pointerup })}
|
|
22
|
+
<button
|
|
23
|
+
title={`Add 'tool'
|
|
24
|
+
}`}
|
|
25
|
+
type="button"
|
|
16
26
|
class={twMerge(
|
|
17
|
-
'!w-full
|
|
18
|
-
'hover:bg-surface-hover'
|
|
27
|
+
'!w-full h-6 flex items-center justify-center !outline-[1px] outline dark:outline-gray-500 outline-gray-300 text-secondary bg-surface focus:outline-none hover:bg-surface-hover rounded'
|
|
19
28
|
)}
|
|
20
|
-
|
|
29
|
+
onpointerdown={stopPropagation(
|
|
30
|
+
preventDefault(() => {
|
|
31
|
+
pointerdown()
|
|
32
|
+
})
|
|
33
|
+
)}
|
|
34
|
+
onpointerup={pointerup}
|
|
21
35
|
>
|
|
22
|
-
<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
36
|
+
<div class="flex flex-row items-center gap-1 font-medium text-2xs">
|
|
37
|
+
<Cross size={12} />
|
|
38
|
+
tool
|
|
39
|
+
</div>
|
|
40
|
+
</button>
|
|
41
|
+
{/snippet}
|
|
42
|
+
{#snippet children({ close })}
|
|
43
|
+
<InsertModuleInner
|
|
44
|
+
bind:funcDesc
|
|
45
|
+
scriptOnly
|
|
46
|
+
on:close={() => {
|
|
47
|
+
close()
|
|
48
|
+
}}
|
|
49
|
+
on:new={(e) => {
|
|
50
|
+
data.eventHandlers.insert({
|
|
51
|
+
index: -1, // ignored when agentId is set
|
|
52
|
+
agentId: data.agentModuleId,
|
|
53
|
+
...e.detail
|
|
54
|
+
})
|
|
55
|
+
close()
|
|
56
|
+
}}
|
|
57
|
+
on:insert={(e) => {
|
|
58
|
+
data.eventHandlers.insert({
|
|
59
|
+
index: -1, // ignored when agentId is set
|
|
60
|
+
agentId: data.agentModuleId,
|
|
61
|
+
...e.detail
|
|
62
|
+
})
|
|
63
|
+
close()
|
|
64
|
+
}}
|
|
65
|
+
on:pickScript={(e) => {
|
|
66
|
+
data.eventHandlers.insert({
|
|
67
|
+
index: -1, // ignored when agentId is set
|
|
68
|
+
agentId: data.agentModuleId,
|
|
69
|
+
kind: e.detail.kind,
|
|
70
|
+
script: {
|
|
71
|
+
...e.detail,
|
|
72
|
+
summary: e.detail.summary
|
|
73
|
+
? e.detail.summary.replace(/\s/, '_').replace(/[^a-zA-Z0-9_]/g, '')
|
|
74
|
+
: e.detail.path.split('/').pop()
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
close()
|
|
78
|
+
}}
|
|
79
|
+
/>
|
|
63
80
|
{/snippet}
|
|
64
|
-
</
|
|
81
|
+
</PopupV2>
|
|
@@ -40,6 +40,11 @@ export function getTypeAsString(arg) {
|
|
|
40
40
|
if (Object.keys(arg).length === 1 && Object.keys(arg).includes('s3')) {
|
|
41
41
|
return 's3object';
|
|
42
42
|
}
|
|
43
|
+
if (Object.keys(arg).length === 2 &&
|
|
44
|
+
Object.keys(arg).includes('s3') &&
|
|
45
|
+
Object.keys(arg).includes('filename')) {
|
|
46
|
+
return 's3object';
|
|
47
|
+
}
|
|
43
48
|
return typeof arg;
|
|
44
49
|
}
|
|
45
50
|
function collapse() {
|
|
@@ -123,9 +128,12 @@ let fullyCollapsed = $derived(keys.length > 1 && collapsed);
|
|
|
123
128
|
</span>
|
|
124
129
|
{/snippet}
|
|
125
130
|
|
|
126
|
-
|
|
127
|
-
<
|
|
128
|
-
|
|
131
|
+
{#if getTypeAsString(jsonFiltered) === 's3object'}
|
|
132
|
+
<Portal name="object-viewer">
|
|
133
|
+
<S3FilePicker bind:this={s3FileViewer} readOnlyMode={true} />
|
|
134
|
+
</Portal>
|
|
135
|
+
{/if}
|
|
136
|
+
|
|
129
137
|
{#if level == 0}
|
|
130
138
|
<div class="float-right">
|
|
131
139
|
{#if searchOpen}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
<script lang="ts">import { modalToSchema } from '../../common';
|
|
2
2
|
import { emptySchema, sendUserToast } from '../../utils';
|
|
3
|
-
import { createEventDispatcher } from 'svelte';
|
|
4
3
|
import AddPropertyFormV2 from './AddPropertyFormV2.svelte';
|
|
5
|
-
let { schema = $bindable(emptySchema()), trigger, noPopover } = $props();
|
|
4
|
+
let { schema = $bindable(emptySchema()), trigger, noPopover, onAddNew } = $props();
|
|
6
5
|
export const DEFAULT_PROPERTY = {
|
|
7
6
|
selectedType: 'string',
|
|
8
7
|
description: '',
|
|
9
8
|
name: '',
|
|
10
9
|
required: false
|
|
11
10
|
};
|
|
12
|
-
const dispatch = createEventDispatcher();
|
|
13
11
|
if (!schema) {
|
|
14
12
|
schema = emptySchema();
|
|
15
13
|
}
|
|
@@ -89,7 +87,6 @@ export function handleAddOrEditArgument(modalProperty) {
|
|
|
89
87
|
editing = false;
|
|
90
88
|
oldArgName = undefined;
|
|
91
89
|
schema = $state.snapshot(newSchema);
|
|
92
|
-
dispatch('change', schema);
|
|
93
90
|
}
|
|
94
91
|
if (argError !== '') {
|
|
95
92
|
sendUserToast(argError, true);
|
|
@@ -117,14 +114,12 @@ export function handleDeleteArgument(argPath, nschema) {
|
|
|
117
114
|
if (modifiedObject.order) {
|
|
118
115
|
modifiedObject.order = modifiedObject.order.filter((arg) => arg !== argName);
|
|
119
116
|
}
|
|
120
|
-
dispatch('change', schema);
|
|
121
117
|
}
|
|
122
118
|
else {
|
|
123
119
|
throw Error('Argument not found!');
|
|
124
120
|
}
|
|
125
121
|
syncOrders(modifiedObject);
|
|
126
122
|
schema = $state.snapshot(modifiedObject);
|
|
127
|
-
dispatch('change', schema);
|
|
128
123
|
}
|
|
129
124
|
catch (err) {
|
|
130
125
|
sendUserToast(`Could not delete argument: ${err}`, true);
|
|
@@ -142,7 +137,7 @@ const trigger_render = $derived(trigger);
|
|
|
142
137
|
selectedType: 'string',
|
|
143
138
|
name: e.detail.name
|
|
144
139
|
})
|
|
145
|
-
|
|
140
|
+
onAddNew?.(e.detail.name)
|
|
146
141
|
} catch (err) {
|
|
147
142
|
sendUserToast(`Could not add argument: ${err}`, true)
|
|
148
143
|
}
|
|
@@ -3,29 +3,12 @@ interface Props {
|
|
|
3
3
|
schema?: Schema | any;
|
|
4
4
|
trigger?: import('svelte').Snippet;
|
|
5
5
|
noPopover?: boolean;
|
|
6
|
+
onAddNew?: (argName: string) => void;
|
|
6
7
|
}
|
|
7
|
-
|
|
8
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
9
|
-
$$bindings?: Bindings;
|
|
10
|
-
} & Exports;
|
|
11
|
-
(internal: unknown, props: Props & {
|
|
12
|
-
$$events?: Events;
|
|
13
|
-
$$slots?: Slots;
|
|
14
|
-
}): Exports & {
|
|
15
|
-
$set?: any;
|
|
16
|
-
$on?: any;
|
|
17
|
-
};
|
|
18
|
-
z_$$bindings?: Bindings;
|
|
19
|
-
}
|
|
20
|
-
declare const AddPropertyV2: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
21
|
-
addNew: CustomEvent<any>;
|
|
22
|
-
change: CustomEvent<any>;
|
|
23
|
-
} & {
|
|
24
|
-
[evt: string]: CustomEvent<any>;
|
|
25
|
-
}, {}, {
|
|
8
|
+
declare const AddPropertyV2: import("svelte").Component<Props, {
|
|
26
9
|
DEFAULT_PROPERTY: ModalSchemaProperty;
|
|
27
10
|
handleAddOrEditArgument: (modalProperty: ModalSchemaProperty) => void;
|
|
28
11
|
handleDeleteArgument: (argPath: string[], nschema?: Schema) => void;
|
|
29
12
|
}, "schema">;
|
|
30
|
-
type AddPropertyV2 =
|
|
13
|
+
type AddPropertyV2 = ReturnType<typeof AddPropertyV2>;
|
|
31
14
|
export default AddPropertyV2;
|
|
@@ -5,7 +5,7 @@ import { Drawer, DrawerContent } from '../common';
|
|
|
5
5
|
import AddProperty from './AddProperty.svelte';
|
|
6
6
|
import { dragHandle, dragHandleZone } from '@windmill-labs/svelte-dnd-action';
|
|
7
7
|
import { flip } from 'svelte/animate';
|
|
8
|
-
import { emptyString } from '../../utils';
|
|
8
|
+
import { emptyString, generateRandomString } from '../../utils';
|
|
9
9
|
import Button from '../common/button/Button.svelte';
|
|
10
10
|
import { createEventDispatcher, tick } from 'svelte';
|
|
11
11
|
import Label from '../Label.svelte';
|
|
@@ -35,16 +35,19 @@ function handleFinalize(e) {
|
|
|
35
35
|
};
|
|
36
36
|
tick().then(() => dispatch('change', schema));
|
|
37
37
|
}
|
|
38
|
-
let { schema = $bindable(),
|
|
38
|
+
let { schema = $bindable(), jsonView = $bindable(false), hiddenArgs = undefined } = $props();
|
|
39
39
|
// let schema = $state(structuredClone($state.snapshot(schema)))
|
|
40
40
|
let schemaString = $state(JSON.stringify(schema, null, '\t'));
|
|
41
41
|
let editor = $state(undefined);
|
|
42
42
|
let error = $state(undefined);
|
|
43
43
|
let items = $derived([
|
|
44
|
-
...new Set((schema?.order ?? Object.keys(schema?.properties ?? {}))
|
|
44
|
+
...new Set((schema?.order ?? Object.keys(schema?.properties ?? {}))
|
|
45
|
+
?.map((item, index) => {
|
|
45
46
|
return { value: item, id: item };
|
|
46
|
-
})
|
|
47
|
+
})
|
|
48
|
+
.filter((item) => !hiddenArgs?.includes(item.value)) ?? [])
|
|
47
49
|
]);
|
|
50
|
+
const rnd = generateRandomString();
|
|
48
51
|
</script>
|
|
49
52
|
|
|
50
53
|
<div class="flex flex-col items-end mb-2 w-full">
|
|
@@ -77,124 +80,115 @@ let items = $derived([
|
|
|
77
80
|
/>
|
|
78
81
|
|
|
79
82
|
{#if !jsonView}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
{#
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
<
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
83
|
+
{#key rnd}
|
|
84
|
+
<div
|
|
85
|
+
use:dragHandleZone={{
|
|
86
|
+
items,
|
|
87
|
+
flipDurationMs,
|
|
88
|
+
dropTargetStyle: {},
|
|
89
|
+
type: rnd
|
|
90
|
+
}}
|
|
91
|
+
onconsider={handleConsider}
|
|
92
|
+
onfinalize={handleFinalize}
|
|
93
|
+
class="gap-1 flex flex-col mt-2"
|
|
94
|
+
>
|
|
95
|
+
{#if items?.length > 0}
|
|
96
|
+
{#each items as item (item.id)}
|
|
97
|
+
<!-- svelte-ignore a11y_no_noninteractive_tabindex -->
|
|
98
|
+
<div
|
|
99
|
+
animate:flip={{ duration: 200 }}
|
|
100
|
+
class="w-full flex flex-col justify-between border items-center py-1 px-2 rounded-md bg-surface text-sm"
|
|
101
|
+
>
|
|
102
|
+
{#if schema.properties?.[item.value]}
|
|
103
|
+
<div class="flex flex-row justify-between items-center w-full">
|
|
104
|
+
{`${item.value}${
|
|
105
|
+
schema.properties?.[item.value]?.title
|
|
106
|
+
? ` (title: ${schema.properties?.[item.value]?.title})`
|
|
107
|
+
: ''
|
|
108
|
+
} `}
|
|
109
|
+
<!-- svelte-ignore a11y_no_noninteractive_tabindex -->
|
|
110
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
111
|
+
<div class="flex flex-row gap-1 item-center h-full justify-center">
|
|
112
|
+
<Button
|
|
113
|
+
iconOnly
|
|
114
|
+
size="xs2"
|
|
115
|
+
color="light"
|
|
116
|
+
startIcon={{ icon: Trash }}
|
|
117
|
+
on:click={() => {
|
|
118
|
+
addPropertyComponent?.handleDeleteArgument([item.value])
|
|
119
|
+
}}
|
|
120
|
+
/>
|
|
121
|
+
<Button
|
|
122
|
+
iconOnly
|
|
123
|
+
size="xs2"
|
|
124
|
+
color="light"
|
|
125
|
+
startIcon={{ icon: Pen }}
|
|
126
|
+
on:click={() => {
|
|
127
|
+
schemaFormDrawer?.openDrawer()
|
|
124
128
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
tick().then(() => {
|
|
130
|
+
editableSchemaForm?.openField(item.value)
|
|
131
|
+
})
|
|
132
|
+
}}
|
|
133
|
+
/>
|
|
130
134
|
|
|
131
|
-
|
|
132
|
-
|
|
135
|
+
<div class="flex items-center handle" use:dragHandle>
|
|
136
|
+
<GripVertical size={16} />
|
|
137
|
+
</div>
|
|
133
138
|
</div>
|
|
134
139
|
</div>
|
|
135
|
-
</div>
|
|
136
140
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
parentId={item.value}
|
|
147
|
-
/>
|
|
148
|
-
</Label>
|
|
149
|
-
</div>
|
|
141
|
+
{#if schema.properties[item.value]?.type === 'object' && !(schema.properties[item.value].oneOf && schema.properties[item.value].oneOf.length >= 2)}
|
|
142
|
+
<div class="flex flex-col w-full mt-2">
|
|
143
|
+
<Label label="Nested properties">
|
|
144
|
+
<EditableSchemaDrawer bind:schema={schema.properties[item.value]} />
|
|
145
|
+
</Label>
|
|
146
|
+
</div>
|
|
147
|
+
{/if}
|
|
148
|
+
{:else}
|
|
149
|
+
<div class="text-tertiary"> Value is undefined </div>
|
|
150
150
|
{/if}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
{/if}
|
|
157
|
-
</div>
|
|
158
|
-
|
|
151
|
+
</div>
|
|
152
|
+
{/each}
|
|
153
|
+
{/if}
|
|
154
|
+
</div>
|
|
155
|
+
{/key}
|
|
159
156
|
<Drawer bind:this={schemaFormDrawer} size="1200px">
|
|
160
|
-
|
|
161
|
-
<
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
{/snippet}
|
|
196
|
-
</EditableSchemaForm>
|
|
197
|
-
</DrawerContent>
|
|
157
|
+
{#snippet children()}
|
|
158
|
+
<DrawerContent title="UI Customisation" on:close={() => schemaFormDrawer?.closeDrawer()}>
|
|
159
|
+
<EditableSchemaForm
|
|
160
|
+
schemaFormClassName="h-full"
|
|
161
|
+
bind:this={editableSchemaForm}
|
|
162
|
+
bind:schema
|
|
163
|
+
isAppInput
|
|
164
|
+
on:edit={(e) => {
|
|
165
|
+
addPropertyComponent?.openDrawer(e.detail)
|
|
166
|
+
}}
|
|
167
|
+
on:delete={(e) => {
|
|
168
|
+
addPropertyComponent?.handleDeleteArgument([e.detail])
|
|
169
|
+
}}
|
|
170
|
+
{hiddenArgs}
|
|
171
|
+
editTab="inputEditor"
|
|
172
|
+
>
|
|
173
|
+
{#snippet addProperty()}
|
|
174
|
+
<AddPropertyV2
|
|
175
|
+
bind:schema
|
|
176
|
+
onAddNew={(argName) => {
|
|
177
|
+
editableSchemaForm?.openField(argName)
|
|
178
|
+
}}
|
|
179
|
+
>
|
|
180
|
+
{#snippet trigger()}
|
|
181
|
+
<div
|
|
182
|
+
class="w-full py-2 flex justify-center items-center border border-dashed rounded-md hover:bg-surface-hover"
|
|
183
|
+
>
|
|
184
|
+
<Plus size={14} />
|
|
185
|
+
</div>
|
|
186
|
+
{/snippet}
|
|
187
|
+
</AddPropertyV2>
|
|
188
|
+
{/snippet}
|
|
189
|
+
</EditableSchemaForm>
|
|
190
|
+
</DrawerContent>
|
|
191
|
+
{/snippet}
|
|
198
192
|
</Drawer>
|
|
199
193
|
{:else}
|
|
200
194
|
<div class="mt-2"></div>
|
|
@@ -2,8 +2,9 @@ import EditableSchemaDrawer from './EditableSchemaDrawer.svelte';
|
|
|
2
2
|
import type { Schema } from '../../common';
|
|
3
3
|
interface Props {
|
|
4
4
|
schema: Schema | undefined | any;
|
|
5
|
-
parentId?: string | undefined;
|
|
6
5
|
jsonView?: boolean;
|
|
6
|
+
hiddenArgs?: string[];
|
|
7
|
+
onClose?: () => void;
|
|
7
8
|
}
|
|
8
9
|
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> {
|
|
9
10
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|