windmill-components 1.531.1 → 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 +69 -19
- 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 +67 -67
- package/package/components/EditableSchemaForm.svelte.d.ts +3 -3
- package/package/components/Editor.svelte +32 -11
- package/package/components/Editor.svelte.d.ts +6 -0
- package/package/components/EditorBar.svelte +2 -2
- package/package/components/EditorBar.svelte.d.ts +1 -0
- package/package/components/FieldHeader.svelte +1 -1
- 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 +10 -6
- 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/ResourceEditor.svelte +4 -0
- 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 +22 -7
- package/package/components/SimpleEditor.svelte +0 -1
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -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/FlowInlineScriptAIButton.svelte +4 -2
- package/package/components/copilot/FlowInlineScriptAIButton.svelte.d.ts +4 -1
- package/package/components/copilot/MetadataGen.svelte +14 -3
- package/package/components/copilot/autocomplete/Autocompletor.js +0 -2
- package/package/components/copilot/chat/AIChat.svelte +2 -4
- package/package/components/copilot/chat/AIChatInput.svelte +3 -3
- package/package/components/copilot/chat/AIChatManager.svelte.js +24 -12
- package/package/components/copilot/chat/AvailableContextList.svelte +243 -26
- package/package/components/copilot/chat/AvailableContextList.svelte.d.ts +2 -1
- package/package/components/copilot/chat/ContextElementBadge.svelte +31 -15
- package/package/components/copilot/chat/ContextElementBadge.svelte.d.ts +5 -20
- package/package/components/copilot/chat/ContextManager.svelte.d.ts +15 -2
- package/package/components/copilot/chat/ContextManager.svelte.js +134 -24
- package/package/components/copilot/chat/ContextTextarea.svelte +22 -49
- 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 +19 -1
- package/package/components/copilot/chat/context.js +1 -0
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +109 -7
- package/package/components/copilot/chat/flow/core.d.ts +13 -1
- package/package/components/copilot/chat/flow/core.js +171 -19
- 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.d.ts +2 -2
- package/package/components/copilot/chat/script/core.js +54 -124
- package/package/components/copilot/chat/shared.d.ts +14 -2
- package/package/components/copilot/chat/shared.js +170 -7
- 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 +15 -1
- package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
- package/package/components/flows/FlowModuleIcon.svelte +39 -0
- package/package/components/flows/FlowModuleIcon.svelte.d.ts +10 -0
- 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 +39 -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 +12 -39
- 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 +83 -57
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.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/schema/jsonSchemaResource.svelte.d.ts +2 -0
- package/package/components/schema/jsonSchemaResource.svelte.js +40 -0
- 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/utils.d.ts +1 -1
- package/package.json +14 -14
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +0 -28
|
@@ -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> & {
|
|
@@ -1,6 +1,19 @@
|
|
|
1
|
-
<script lang="ts">import
|
|
2
|
-
|
|
1
|
+
<script lang="ts">import { readFieldsRecursively } from '../../utils';
|
|
2
|
+
import { deepEqual } from 'fast-equals';
|
|
3
|
+
import EditableSchemaWrapper from './EditableSchemaWrapper.svelte';
|
|
4
|
+
let { schema: oldSchema, onSchemaChange, ...props } = $props();
|
|
3
5
|
let schema = $state(oldSchema);
|
|
6
|
+
let lastSchema = $state.snapshot(schema);
|
|
7
|
+
$effect(() => {
|
|
8
|
+
if (onSchemaChange) {
|
|
9
|
+
readFieldsRecursively(schema);
|
|
10
|
+
let newSchema = $state.snapshot(schema);
|
|
11
|
+
if (!deepEqual(lastSchema, newSchema)) {
|
|
12
|
+
lastSchema = newSchema;
|
|
13
|
+
onSchemaChange(newSchema);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
});
|
|
4
17
|
</script>
|
|
5
18
|
|
|
6
|
-
<EditableSchemaWrapper
|
|
19
|
+
<EditableSchemaWrapper bind:schema {...props} />
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import type { EditableSchemaWrapperProps } from './editable_schema_wrapper';
|
|
2
|
-
|
|
2
|
+
type $$ComponentProps = EditableSchemaWrapperProps & {
|
|
3
|
+
onSchemaChange?: (schema: any) => void;
|
|
4
|
+
};
|
|
5
|
+
declare const EditableSchemaSdkWrapper: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
3
6
|
type EditableSchemaSdkWrapper = ReturnType<typeof EditableSchemaSdkWrapper>;
|
|
4
7
|
export default EditableSchemaSdkWrapper;
|
|
@@ -7,7 +7,7 @@ import AddPropertyV2 from './AddPropertyV2.svelte';
|
|
|
7
7
|
import { Plus } from 'lucide-svelte';
|
|
8
8
|
import Select from '../select/Select.svelte';
|
|
9
9
|
import { safeSelectItems } from '../select/utils.svelte';
|
|
10
|
-
let { schema = $bindable(), uiOnly = false, noPreview = false, fullHeight = true, formatExtension = $bindable(undefined),
|
|
10
|
+
let { schema = $bindable(), uiOnly = false, noPreview = false, fullHeight = true, formatExtension = $bindable(undefined), customUi } = $props();
|
|
11
11
|
let resourceIsTextFile = $state(false);
|
|
12
12
|
let addPropertyComponent = $state(undefined);
|
|
13
13
|
let editableSchemaForm = $state(undefined);
|
|
@@ -35,7 +35,6 @@ function switchResourceIsFile() {
|
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
|
-
onSchemaChange?.({ schema: $state.snapshot(schema) });
|
|
39
38
|
}
|
|
40
39
|
let suggestedFileExtensions = $state([
|
|
41
40
|
'json',
|
|
@@ -64,9 +63,8 @@ let suggestedFileExtensions = $state([
|
|
|
64
63
|
noPopover={customUi?.noAddPopover}
|
|
65
64
|
bind:schema
|
|
66
65
|
bind:this={addPropertyComponent}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
editableSchemaForm?.openField(e.detail)
|
|
66
|
+
onAddNew={(argName) => {
|
|
67
|
+
editableSchemaForm?.openField(argName)
|
|
70
68
|
}}
|
|
71
69
|
>
|
|
72
70
|
{#snippet trigger()}
|
|
@@ -82,11 +80,7 @@ let suggestedFileExtensions = $state([
|
|
|
82
80
|
onlyMaskPassword
|
|
83
81
|
bind:this={editableSchemaForm}
|
|
84
82
|
bind:schema
|
|
85
|
-
on:change={() => onSchemaChange?.({ schema: $state.snapshot(schema) })}
|
|
86
83
|
isFlowInput
|
|
87
|
-
on:edit={(e) => {
|
|
88
|
-
addPropertyComponent?.openDrawer(e.detail)
|
|
89
|
-
}}
|
|
90
84
|
on:delete={(e) => {
|
|
91
85
|
addPropertyComponent?.handleDeleteArgument([e.detail])
|
|
92
86
|
}}
|
|
@@ -100,7 +94,6 @@ let suggestedFileExtensions = $state([
|
|
|
100
94
|
noPopover={customUi?.noAddPopover}
|
|
101
95
|
bind:schema
|
|
102
96
|
bind:this={addPropertyComponent}
|
|
103
|
-
on:change={() => onSchemaChange?.({ schema })}
|
|
104
97
|
>
|
|
105
98
|
{#snippet trigger()}
|
|
106
99
|
<div
|