windmill-components 1.504.5 → 1.510.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/ata/index.js +1 -1
- package/package/components/AppConnectInner.svelte +161 -29
- package/package/components/ArgInput.svelte +33 -103
- package/package/components/AuthSettings.svelte +45 -1
- package/package/components/Dev.svelte +31 -24
- package/package/components/DisplayResult.svelte +53 -26
- package/package/components/DisplayResult.svelte.d.ts +1 -1
- package/package/components/DynSelect.svelte +3 -3
- package/package/components/Editor.svelte +7 -4
- package/package/components/EditorBar.svelte +2 -2
- package/package/components/ErrorOrRecoveryHandler.svelte +73 -67
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +8 -24
- package/package/components/FlowBuilder.svelte +11 -2
- package/package/components/FlowJobResult.svelte +12 -17
- package/package/components/FlowJobResult.svelte.d.ts +5 -18
- package/package/components/FlowPreviewContent.svelte +13 -10
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowPreviewResult.svelte +14 -6
- package/package/components/FlowStatusViewer.svelte +11 -24
- package/package/components/FlowStatusViewer.svelte.d.ts +19 -18
- package/package/components/FlowStatusViewerInner.svelte +110 -131
- package/package/components/FlowStatusViewerInner.svelte.d.ts +20 -18
- package/package/components/GitDiffPreview.svelte +55 -0
- package/package/components/GitDiffPreview.svelte.d.ts +13 -0
- package/package/components/HistoricInputs.svelte +2 -2
- package/package/components/InitGitRepoPopover.svelte +410 -0
- package/package/components/InitGitRepoPopover.svelte.d.ts +13 -0
- package/package/components/InstanceSetting.svelte +21 -9
- package/package/components/InstanceSettings.svelte +16 -3
- package/package/components/JobLoader.svelte +567 -0
- package/package/components/JobLoader.svelte.d.ts +53 -0
- package/package/components/JobLogs.svelte +6 -4
- package/package/components/JobLogs.svelte.d.ts +5 -18
- package/package/components/LightweightResourcePicker.svelte +18 -39
- package/package/components/LightweightResourcePicker.svelte.d.ts +6 -22
- package/package/components/LogViewer.svelte +35 -41
- package/package/components/LogViewer.svelte.d.ts +6 -20
- package/package/components/ModulePreviewResultViewer.svelte +3 -1
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -0
- package/package/components/ModuleTest.svelte +16 -11
- package/package/components/PullGitRepoPopover.svelte +355 -0
- package/package/components/PullGitRepoPopover.svelte.d.ts +18 -0
- package/package/components/S3FilePicker.svelte +5 -3
- package/package/components/SavedInputs.svelte +2 -2
- package/package/components/ScriptBuilder.svelte +4 -3
- package/package/components/ScriptEditor.svelte +34 -31
- package/package/components/ScriptEditor.svelte.d.ts +3 -3
- package/package/components/ServiceLogsInner.svelte +2 -1
- package/package/components/ServiceLogsInner.svelte.d.ts +1 -0
- package/package/components/UserSettings.svelte +1 -1
- package/package/components/WorkerTagSelect.svelte +32 -3
- package/package/components/apps/components/buttons/AppButton.svelte +7 -1
- package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
- package/package/components/apps/components/display/AppCustomComponent.svelte +1 -1
- package/package/components/apps/components/display/AppDisplayComponentByJobId.svelte +16 -11
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte +13 -10
- package/package/components/apps/components/display/AppMenu.svelte +5 -0
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +3 -3
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte +3 -3
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +3 -3
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte +3 -3
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +3 -3
- package/package/components/apps/components/helpers/RunnableComponent.svelte +65 -54
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +5 -5
- package/package/components/apps/components/inputs/AppUserResource.svelte +26 -8
- package/package/components/apps/editor/AppEditorHeader.svelte +11 -5
- package/package/components/apps/editor/AppJobsDrawer.svelte +5 -5
- package/package/components/apps/editor/RunnableJobPanel.svelte +4 -4
- package/package/components/apps/editor/component/components.d.ts +12 -0
- package/package/components/apps/editor/component/components.js +19 -7
- package/package/components/assets/AssetButtons.svelte +38 -0
- package/package/components/assets/AssetButtons.svelte.d.ts +15 -0
- package/package/components/assets/AssetsDropdownButton.svelte +60 -72
- package/package/components/assets/AssetsDropdownButton.svelte.d.ts +3 -4
- package/package/components/assets/AssetsUsageDrawer.svelte +10 -10
- package/package/components/assets/JobAssetsViewer.svelte +79 -0
- package/package/components/assets/JobAssetsViewer.svelte.d.ts +7 -0
- package/package/components/assets/README_DEV.md +0 -0
- package/package/components/assets/lib.d.ts +9 -1
- package/package/components/assets/lib.js +48 -7
- package/package/components/common/fileUpload/FileUpload.svelte +126 -84
- package/package/components/common/fileUpload/FileUpload.svelte.d.ts +13 -3
- package/package/components/common/fileUpload/S3ArgInput.svelte +111 -0
- package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +21 -0
- package/package/components/common/table/ScriptRow.svelte +3 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +23 -5
- package/package/components/copilot/chat/AIChatDisplay.svelte +8 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +13 -8
- package/package/components/copilot/chat/flow/ModuleAcceptReject.svelte +5 -5
- package/package/components/copilot/chat/flow/core.d.ts +1 -1
- package/package/components/copilot/chat/flow/core.js +2 -38
- package/package/components/copilot/chat/navigator/apiTools.d.ts +8 -0
- package/package/components/copilot/chat/navigator/apiTools.js +95 -15
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +2 -1
- package/package/components/copilot/chat/script/core.d.ts +11 -2
- package/package/components/copilot/chat/script/core.js +135 -1
- package/package/components/copilot/chat/shared.d.ts +10 -0
- package/package/components/copilot/chat/shared.js +56 -0
- package/package/components/copilot/lib.d.ts +1 -0
- package/package/components/copilot/lib.js +27 -9
- package/package/components/custom_ui.d.ts +1 -0
- package/package/components/flows/FlowAssetsHandler.svelte +133 -0
- package/package/components/flows/FlowAssetsHandler.svelte.d.ts +14 -0
- package/package/components/flows/content/FlowModuleComponent.svelte +16 -18
- package/package/components/flows/flowStore.d.ts +1 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -0
- package/package/components/flows/propPicker/OutputPicker.svelte +9 -4
- package/package/components/flows/scheduleUtils.js +1 -1
- package/package/components/flows/types.d.ts +2 -1
- package/package/components/graph/FlowGraphV2.svelte +8 -104
- package/package/components/graph/FlowGraphV2.svelte.d.ts +0 -2
- package/package/components/graph/graphBuilder.svelte.d.ts +6 -3
- package/package/components/graph/graphBuilder.svelte.js +35 -9
- package/package/components/graph/renderers/edges/BaseEdge.svelte +2 -5
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/AssetNode.svelte +23 -20
- package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +5 -10
- package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +1 -1
- package/package/components/graph/util.js +1 -1
- package/package/components/home/ItemsList.svelte +2 -0
- package/package/components/icons/AssetGenericIcon.svelte +0 -3
- package/package/components/jobs/JobPreview.svelte +10 -6
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +13 -12
- package/package/components/runs/BatchReRunOptionsPane.svelte +5 -1
- package/package/components/runs/JobPreview.svelte +26 -16
- package/package/components/runs/{JobLoader.svelte.d.ts → JobsLoader.svelte.d.ts} +3 -3
- package/package/components/runs/NoWorkerWithTagWarning.svelte +2 -2
- package/package/components/runs/NoWorkerWithTagWarning.svelte.d.ts +1 -0
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/schema/AddPropertyFormV2.svelte +42 -33
- package/package/components/schema/AddPropertyFormV2.svelte.d.ts +1 -0
- package/package/components/schema/AddPropertyV2.svelte +2 -1
- package/package/components/schema/AddPropertyV2.svelte.d.ts +1 -0
- package/package/components/schema/EditableSchemaWrapper.svelte +3 -1
- package/package/components/schema/editable_schema_wrapper.d.ts +3 -0
- package/package/components/scriptEditor/LogPanel.svelte +3 -2
- package/package/components/script_builder.d.ts +2 -2
- package/package/components/settings/CreateToken.svelte +76 -41
- package/package/components/settings/CreateToken.svelte.d.ts +1 -1
- package/package/components/settings/ScopeSelector.svelte +613 -0
- package/package/components/settings/ScopeSelector.svelte.d.ts +8 -0
- package/package/components/settings/TokenDisplay.svelte +103 -0
- package/package/components/settings/TokenDisplay.svelte.d.ts +10 -0
- package/package/components/settings/TokensTable.svelte +70 -349
- package/package/components/sidebar/CriticalAlertModal.svelte +3 -0
- package/package/components/triggers/DeleteTriggerButton.svelte +1 -1
- package/package/components/triggers/TriggerEditorToolbar.svelte +3 -3
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte +55 -0
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +13 -0
- package/package/components/triggers/TriggersEditor.svelte +45 -3
- package/package/components/triggers/TriggersWrapper.svelte +2 -2
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +43 -2
- package/package/components/triggers/gcp/utils.js +9 -1
- package/package/components/triggers/http/OpenAPISpecGenerator.svelte +1 -0
- package/package/components/triggers/http/RouteEditorInner.svelte +208 -164
- package/package/components/triggers/http/RouteEditorInner.svelte.d.ts +6 -2
- package/package/components/triggers/http/utils.js +9 -3
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +43 -2
- package/package/components/triggers/kafka/utils.js +9 -1
- package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte +4 -132
- package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte.d.ts +2 -5
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +178 -9
- package/package/components/triggers/mqtt/utils.js +9 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +43 -2
- package/package/components/triggers/nats/utils.js +9 -1
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +41 -2
- package/package/components/triggers/postgres/utils.js +9 -1
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +34 -88
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +43 -2
- package/package/components/triggers/sqs/utils.js +9 -1
- package/package/components/triggers/utils.js +12 -0
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +43 -2
- package/package/components/triggers/websocket/utils.js +11 -1
- package/package/components/workspaceSettings/AISettings.svelte +0 -2
- package/package/components/workspaceSettings/FilterList.svelte +56 -0
- package/package/components/workspaceSettings/FilterList.svelte.d.ts +8 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +785 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +18 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +305 -23
- package/package/gen/schemas.gen.js +305 -23
- package/package/gen/services.gen.d.ts +33 -1
- package/package/gen/services.gen.js +66 -2
- package/package/gen/types.gen.d.ts +216 -11
- package/package/history.svelte.js +0 -2
- package/package/hub.d.ts +1 -0
- package/package/hubPaths.json +5 -2
- package/package/infer.js +16 -10
- package/package/svelte5Utils.svelte.d.ts +1 -0
- package/package/svelte5Utils.svelte.js +25 -18
- package/package/toast.js +10 -0
- package/package/utils.d.ts +3 -2
- package/package/utils.js +20 -5
- package/package.json +11 -11
- package/package/components/ResultJobLoader.svelte +0 -219
- package/package/components/ResultJobLoader.svelte.d.ts +0 -52
- package/package/components/TestJobLoader.svelte +0 -274
- package/package/components/TestJobLoader.svelte.d.ts +0 -43
- package/package/components/icons/AssetVarIcon.svelte +0 -31
- package/package/components/icons/AssetVarIcon.svelte.d.ts +0 -9
- /package/package/components/runs/{JobLoader.svelte → JobsLoader.svelte} +0 -0
|
@@ -3,32 +3,61 @@ import { WorkerService } from '../gen';
|
|
|
3
3
|
import { createEventDispatcher } from 'svelte';
|
|
4
4
|
import Select from './select/Select.svelte';
|
|
5
5
|
import { safeSelectItems } from './select/utils.svelte';
|
|
6
|
+
import { Button } from './common';
|
|
7
|
+
import { RotateCw } from 'lucide-svelte';
|
|
8
|
+
import { sendUserToast } from '../toast';
|
|
6
9
|
let { tag = $bindable(), noLabel = false, nullTag = undefined, disabled = false, placeholder, inputClass } = $props();
|
|
10
|
+
let loading = $state(false);
|
|
7
11
|
loadWorkerGroups();
|
|
8
12
|
const dispatch = createEventDispatcher();
|
|
9
13
|
async function loadWorkerGroups() {
|
|
10
|
-
|
|
11
|
-
|
|
14
|
+
loading = true;
|
|
15
|
+
try {
|
|
16
|
+
if (!$workerTags) {
|
|
17
|
+
$workerTags = await WorkerService.getCustomTags({ workspace: $workspaceStore });
|
|
18
|
+
}
|
|
12
19
|
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
$workerTags = [];
|
|
22
|
+
sendUserToast('Error loading custom tags', true);
|
|
23
|
+
}
|
|
24
|
+
loading = false;
|
|
13
25
|
}
|
|
14
26
|
let items = $derived([
|
|
15
27
|
// ...(tag ? ['reset to default'] : [nullTag ? `default: ${nullTag}` : '']),
|
|
16
28
|
...(tag && tag != '' && !($workerTags ?? []).includes(tag) ? [tag] : []),
|
|
17
29
|
...($workerTags ?? [])
|
|
18
30
|
]);
|
|
31
|
+
let open = $state(false);
|
|
19
32
|
</script>
|
|
20
33
|
|
|
21
|
-
<div class="flex gap-1 items-center">
|
|
34
|
+
<div class="flex gap-1 items-center relative">
|
|
22
35
|
{#if !noLabel}
|
|
23
36
|
<div class="text-tertiary text-2xs">{placeholder ?? 'tag'}</div>
|
|
24
37
|
{/if}
|
|
25
38
|
<Select
|
|
26
39
|
clearable
|
|
27
40
|
class="w-full"
|
|
41
|
+
bind:open
|
|
28
42
|
{inputClass}
|
|
29
43
|
{disabled}
|
|
30
44
|
placeholder={nullTag ? nullTag : (placeholder ?? 'lang default')}
|
|
31
45
|
items={safeSelectItems(items)}
|
|
32
46
|
bind:value={() => tag, (value) => ((tag = value), dispatch('change', value))}
|
|
33
47
|
/>
|
|
48
|
+
{#if open}
|
|
49
|
+
<div class="absolute top-0 -right-12">
|
|
50
|
+
<Button
|
|
51
|
+
iconOnly
|
|
52
|
+
variant="border"
|
|
53
|
+
color="dark"
|
|
54
|
+
size="xs"
|
|
55
|
+
startIcon={{ icon: RotateCw, classes: loading ? 'animate-spin' : '' }}
|
|
56
|
+
on:click={async () => {
|
|
57
|
+
loadWorkerGroups()
|
|
58
|
+
open = true
|
|
59
|
+
}}
|
|
60
|
+
></Button>
|
|
61
|
+
</div>
|
|
62
|
+
{/if}
|
|
34
63
|
</div>
|
|
@@ -11,7 +11,7 @@ import ResolveStyle from '../helpers/ResolveStyle.svelte';
|
|
|
11
11
|
import { initCss } from '../../utils';
|
|
12
12
|
import ConfirmationModal from '../../../common/confirmationModal/ConfirmationModal.svelte';
|
|
13
13
|
import Portal from '../../../Portal.svelte';
|
|
14
|
-
let { id, componentInput, configuration, recomputeIds = undefined, extraQueryParams = {}, horizontalAlignment = undefined, verticalAlignment = undefined, noWFull = false, preclickAction = undefined, customCss = undefined, render, errorHandledByComponent = $bindable(false), extraKey = undefined, isMenuItem = false, noInitialize = false, replaceCallback = false, controls = undefined } = $props();
|
|
14
|
+
let { id, componentInput, configuration, recomputeIds = undefined, extraQueryParams = {}, horizontalAlignment = undefined, verticalAlignment = undefined, noWFull = false, preclickAction = undefined, customCss = undefined, render, errorHandledByComponent = $bindable(false), extraKey = undefined, isMenuItem = false, noInitialize = false, replaceCallback = false, controls = undefined, onDone = undefined } = $props();
|
|
15
15
|
const { worldStore, app, componentControl, selectedComponent } = getContext('AppViewerContext');
|
|
16
16
|
const rowContext = getContext('RowWrapperContext');
|
|
17
17
|
const rowInputs = getContext('RowInputs');
|
|
@@ -159,6 +159,12 @@ let errorsMessage = $derived(Object.values(errors)
|
|
|
159
159
|
listInputs.set(id, inputOutput)
|
|
160
160
|
}
|
|
161
161
|
}}
|
|
162
|
+
on:done={() => {
|
|
163
|
+
onDone?.()
|
|
164
|
+
}}
|
|
165
|
+
on:doneError={() => {
|
|
166
|
+
onDone?.()
|
|
167
|
+
}}
|
|
162
168
|
refreshOnStart={resolvedConfig.triggerOnAppLoad}
|
|
163
169
|
{replaceCallback}
|
|
164
170
|
>
|
|
@@ -21,6 +21,7 @@ interface Props {
|
|
|
21
21
|
left: () => boolean;
|
|
22
22
|
right: () => boolean | string;
|
|
23
23
|
} | undefined;
|
|
24
|
+
onDone?: () => void;
|
|
24
25
|
}
|
|
25
26
|
declare const AppButton: import("svelte").Component<Props, {}, "errorHandledByComponent">;
|
|
26
27
|
type AppButton = ReturnType<typeof AppButton>;
|
|
@@ -84,7 +84,7 @@ $effect(() => {
|
|
|
84
84
|
<InitializeComponent {id} />
|
|
85
85
|
<div class="w-full h-full overflow-auto {customComponent?.name ?? 'no_name'}">
|
|
86
86
|
<RunnableWrapper {outputs} render autoRefresh {componentInput} {id} bind:result>
|
|
87
|
-
{#if !loaded}
|
|
87
|
+
{#if !loaded && render}
|
|
88
88
|
<Loader2 class="animate-spin" />
|
|
89
89
|
{/if}
|
|
90
90
|
<div id={divId}></div>
|
|
@@ -3,7 +3,7 @@ import { twMerge } from 'tailwind-merge';
|
|
|
3
3
|
import { initConfig, initOutput } from '../../editor/appUtils';
|
|
4
4
|
import { IS_APP_PUBLIC_CONTEXT_KEY } from '../../types';
|
|
5
5
|
import { initCss } from '../../utils';
|
|
6
|
-
import
|
|
6
|
+
import JobLoader from '../../../JobLoader.svelte';
|
|
7
7
|
import { components } from '../../editor/component';
|
|
8
8
|
import ResolveConfig from '../helpers/ResolveConfig.svelte';
|
|
9
9
|
import ResolveStyle from '../helpers/ResolveStyle.svelte';
|
|
@@ -21,7 +21,7 @@ const outputs = initOutput($worldStore, id, {
|
|
|
21
21
|
});
|
|
22
22
|
initializing = false;
|
|
23
23
|
let css = $state(initCss($app.css?.jobiddisplaycomponent, customCss));
|
|
24
|
-
let
|
|
24
|
+
let jobLoader = $state(undefined);
|
|
25
25
|
let testIsLoading = $state(false);
|
|
26
26
|
let testJob = $state(undefined);
|
|
27
27
|
$effect(() => {
|
|
@@ -30,12 +30,22 @@ $effect(() => {
|
|
|
30
30
|
outputs.loading.set(true);
|
|
31
31
|
const jobId = resolvedConfig?.['jobId'];
|
|
32
32
|
if (jobId) {
|
|
33
|
-
|
|
33
|
+
jobLoader?.watchJob(jobId, {
|
|
34
|
+
done(x) {
|
|
35
|
+
onDone(x);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
34
38
|
}
|
|
35
39
|
});
|
|
36
40
|
}
|
|
37
41
|
});
|
|
38
42
|
let result = $state(undefined);
|
|
43
|
+
function onDone(job) {
|
|
44
|
+
outputs.loading.set(false);
|
|
45
|
+
outputs.jobId.set(job.id);
|
|
46
|
+
outputs.result.set(job.result);
|
|
47
|
+
result = job.result;
|
|
48
|
+
}
|
|
39
49
|
</script>
|
|
40
50
|
|
|
41
51
|
{#each Object.keys(components['jobiddisplaycomponent'].initialData.configuration) as key (key)}
|
|
@@ -57,17 +67,12 @@ let result = $state(undefined);
|
|
|
57
67
|
/>
|
|
58
68
|
{/each}
|
|
59
69
|
|
|
60
|
-
<
|
|
70
|
+
<JobLoader
|
|
71
|
+
noCode={true}
|
|
61
72
|
workspaceOverride={workspace}
|
|
62
|
-
bind:this={
|
|
73
|
+
bind:this={jobLoader}
|
|
63
74
|
bind:isLoading={testIsLoading}
|
|
64
75
|
bind:job={testJob}
|
|
65
|
-
on:done={(e) => {
|
|
66
|
-
outputs.loading.set(false)
|
|
67
|
-
outputs.jobId.set(e.detail.id)
|
|
68
|
-
outputs.result.set(e.detail.result)
|
|
69
|
-
result = e.detail.result
|
|
70
|
-
}}
|
|
71
76
|
/>
|
|
72
77
|
|
|
73
78
|
<InitializeComponent {id} />
|
|
@@ -3,7 +3,7 @@ import { twMerge } from 'tailwind-merge';
|
|
|
3
3
|
import { initConfig, initOutput } from '../../editor/appUtils';
|
|
4
4
|
import { initCss } from '../../utils';
|
|
5
5
|
import LogViewer from '../../../LogViewer.svelte';
|
|
6
|
-
import
|
|
6
|
+
import JobLoader from '../../../JobLoader.svelte';
|
|
7
7
|
import { components } from '../../editor/component';
|
|
8
8
|
import ResolveConfig from '../helpers/ResolveConfig.svelte';
|
|
9
9
|
import ResolveStyle from '../helpers/ResolveStyle.svelte';
|
|
@@ -23,7 +23,7 @@ const outputs = initOutput($worldStore, id, {
|
|
|
23
23
|
});
|
|
24
24
|
initializing = false;
|
|
25
25
|
let css = $state(initCss($app.css?.jobidlogcomponent, customCss));
|
|
26
|
-
let
|
|
26
|
+
let jobLoader = $state(undefined);
|
|
27
27
|
let testIsLoading = $state(false);
|
|
28
28
|
let testJob = $state(undefined);
|
|
29
29
|
$effect(() => {
|
|
@@ -32,7 +32,14 @@ $effect(() => {
|
|
|
32
32
|
outputs.loading.set(true);
|
|
33
33
|
const jobId = resolvedConfig?.['jobId'];
|
|
34
34
|
if (jobId) {
|
|
35
|
-
|
|
35
|
+
let callbacks = {
|
|
36
|
+
done(x) {
|
|
37
|
+
outputs.loading.set(false);
|
|
38
|
+
outputs.jobId.set(x.id);
|
|
39
|
+
outputs.result.set(x.result);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
jobLoader?.watchJob(jobId, callbacks);
|
|
36
43
|
}
|
|
37
44
|
});
|
|
38
45
|
}
|
|
@@ -58,16 +65,12 @@ $effect(() => {
|
|
|
58
65
|
/>
|
|
59
66
|
{/each}
|
|
60
67
|
|
|
61
|
-
<
|
|
68
|
+
<JobLoader
|
|
69
|
+
noCode={true}
|
|
62
70
|
workspaceOverride={workspace}
|
|
63
|
-
bind:this={
|
|
71
|
+
bind:this={jobLoader}
|
|
64
72
|
bind:isLoading={testIsLoading}
|
|
65
73
|
bind:job={testJob}
|
|
66
|
-
on:done={(e) => {
|
|
67
|
-
outputs.loading.set(false)
|
|
68
|
-
outputs.jobId.set(e.detail.id)
|
|
69
|
-
outputs.result.set(e.detail.result)
|
|
70
|
-
}}
|
|
71
74
|
/>
|
|
72
75
|
|
|
73
76
|
<InitializeComponent {id} />
|
|
@@ -38,6 +38,7 @@ $effect(() => {
|
|
|
38
38
|
$effect(() => {
|
|
39
39
|
resolvedConfig.afterIcon && afterIconComponent && untrack(() => handleAfterIcon());
|
|
40
40
|
});
|
|
41
|
+
let menu = $state();
|
|
41
42
|
</script>
|
|
42
43
|
|
|
43
44
|
<InitializeComponent {id} />
|
|
@@ -66,6 +67,7 @@ $effect(() => {
|
|
|
66
67
|
<Menubar class={resolvedConfig.fillContainer ? 'w-full h-full' : ''}>
|
|
67
68
|
{#snippet children({ createMenu })}
|
|
68
69
|
<Menu
|
|
70
|
+
bind:this={menu}
|
|
69
71
|
{createMenu}
|
|
70
72
|
placement="bottom-end"
|
|
71
73
|
justifyEnd={false}
|
|
@@ -134,6 +136,9 @@ $effect(() => {
|
|
|
134
136
|
componentInput={actionButton.componentInput}
|
|
135
137
|
noWFull={false}
|
|
136
138
|
isMenuItem={true}
|
|
139
|
+
onDone={() => {
|
|
140
|
+
menu?.close()
|
|
141
|
+
}}
|
|
137
142
|
/>
|
|
138
143
|
</div>
|
|
139
144
|
{/if}
|
|
@@ -150,7 +150,7 @@ let datasource = $state({
|
|
|
150
150
|
return;
|
|
151
151
|
}
|
|
152
152
|
runnableComponent?.runComponent(undefined, undefined, undefined, currentParams, {
|
|
153
|
-
|
|
153
|
+
onDone: (items) => {
|
|
154
154
|
let lastRow = -1;
|
|
155
155
|
if (datasource?.rowCount && datasource.rowCount <= params.endRow) {
|
|
156
156
|
lastRow = datasource.rowCount;
|
|
@@ -178,10 +178,10 @@ let datasource = $state({
|
|
|
178
178
|
params.failCallback();
|
|
179
179
|
}
|
|
180
180
|
},
|
|
181
|
-
|
|
181
|
+
onCancel: () => {
|
|
182
182
|
params.failCallback();
|
|
183
183
|
},
|
|
184
|
-
|
|
184
|
+
onError: (error) => {
|
|
185
185
|
params.failCallback();
|
|
186
186
|
}
|
|
187
187
|
});
|
|
@@ -26,14 +26,14 @@ export async function triggerDelete(resource, table, allColumns, data, dbType) {
|
|
|
26
26
|
ndata[x.field] = data[x.field];
|
|
27
27
|
});
|
|
28
28
|
await runnableComponent?.runComponent(undefined, undefined, undefined, { ...ndata }, {
|
|
29
|
-
|
|
29
|
+
onDone: (_x) => {
|
|
30
30
|
sendUserToast('Row deleted', false);
|
|
31
31
|
dispatch('deleted');
|
|
32
32
|
},
|
|
33
|
-
|
|
33
|
+
onCancel: () => {
|
|
34
34
|
sendUserToast('Error deleting row', true);
|
|
35
35
|
},
|
|
36
|
-
|
|
36
|
+
onError: () => {
|
|
37
37
|
sendUserToast('Error updating row', true);
|
|
38
38
|
}
|
|
39
39
|
});
|
|
@@ -23,14 +23,14 @@ export async function insertRow(resource, workspace, table, columns, values, res
|
|
|
23
23
|
await tick();
|
|
24
24
|
if (runnableComponent) {
|
|
25
25
|
await runnableComponent?.runComponent(undefined, undefined, undefined, values, {
|
|
26
|
-
|
|
26
|
+
onDone: (_x) => {
|
|
27
27
|
dispatch('insert');
|
|
28
28
|
sendUserToast('Row inserted', false);
|
|
29
29
|
},
|
|
30
|
-
|
|
30
|
+
onCancel: () => {
|
|
31
31
|
sendUserToast('Error inserting row', true);
|
|
32
32
|
},
|
|
33
|
-
|
|
33
|
+
onError: () => {
|
|
34
34
|
sendUserToast('Error inserting row', true);
|
|
35
35
|
}
|
|
36
36
|
});
|
|
@@ -27,13 +27,13 @@ export async function triggerUpdate(resource, table, column, allColumns, valueTo
|
|
|
27
27
|
});
|
|
28
28
|
ndata[column.field] = oldValue;
|
|
29
29
|
await runnableComponent?.runComponent(undefined, undefined, undefined, { value_to_update: valueToUpdate, ...ndata }, {
|
|
30
|
-
|
|
30
|
+
onDone: (x) => {
|
|
31
31
|
sendUserToast('Value updated', false);
|
|
32
32
|
},
|
|
33
|
-
|
|
33
|
+
onCancel: () => {
|
|
34
34
|
sendUserToast('Error updating value', true);
|
|
35
35
|
},
|
|
36
|
-
|
|
36
|
+
onError: () => {
|
|
37
37
|
sendUserToast('Error updating value', true);
|
|
38
38
|
}
|
|
39
39
|
});
|
|
@@ -67,7 +67,7 @@ const datasource = $state({
|
|
|
67
67
|
return;
|
|
68
68
|
}
|
|
69
69
|
runnableComponent?.runComponent(undefined, undefined, undefined, currentParams, {
|
|
70
|
-
|
|
70
|
+
onDone: (items) => {
|
|
71
71
|
let lastRow = -1;
|
|
72
72
|
if (datasource?.rowCount && datasource.rowCount <= params.endRow) {
|
|
73
73
|
lastRow = datasource.rowCount;
|
|
@@ -92,10 +92,10 @@ const datasource = $state({
|
|
|
92
92
|
params.failCallback();
|
|
93
93
|
}
|
|
94
94
|
},
|
|
95
|
-
|
|
95
|
+
onCancel: () => {
|
|
96
96
|
params.failCallback();
|
|
97
97
|
},
|
|
98
|
-
|
|
98
|
+
onError: () => {
|
|
99
99
|
params.failCallback();
|
|
100
100
|
}
|
|
101
101
|
});
|
|
@@ -8,7 +8,6 @@ import { createEventDispatcher, getContext, onDestroy, onMount, untrack } from '
|
|
|
8
8
|
import { computeGlobalContext, eval_like } from './eval';
|
|
9
9
|
import InputValue from './InputValue.svelte';
|
|
10
10
|
import { collectOneOfFields, selectId } from '../../editor/appUtils';
|
|
11
|
-
import ResultJobLoader from '../../../ResultJobLoader.svelte';
|
|
12
11
|
import { userStore } from '../../../../stores';
|
|
13
12
|
import { get } from 'svelte/store';
|
|
14
13
|
import RefreshButton from './RefreshButton.svelte';
|
|
@@ -16,6 +15,7 @@ import { ctxRegex } from '../../utils';
|
|
|
16
15
|
import { computeWorkspaceS3FileInputPolicy } from '../../editor/appUtilsS3';
|
|
17
16
|
import { executeRunnable } from './executeRunnable';
|
|
18
17
|
import SchemaForm from '../../../SchemaForm.svelte';
|
|
18
|
+
import JobLoader, {} from '../../../JobLoader.svelte';
|
|
19
19
|
let { id, fields, runnable, transformer, extraQueryParams = {}, autoRefresh = true, result = $bindable(undefined), forceSchemaDisplay = false, wrapperClass = '', wrapperStyle = '', render, outputs, extraKey = '', initializing = false, recomputeOnInputChanged = true, loading = $bindable(false), refreshOnStart = false, recomputableByRefreshButton, errorHandledByComponent = false, hideRefreshButton = false, hasChildrens, allowConcurentRequests = false, noInitialize = false, overrideCallback = undefined, overrideAutoRefresh = false, replaceCallback = false, children } = $props();
|
|
20
20
|
const { worldStore, runnableComponents, workspace, appPath, isEditor, jobs, jobsById, noBackend, errorByComponent, mode, stateId, state: stateStore, componentControl, initialized, selectedComponent, app, connectingInput, bgRuns, recomputeAllContext } = getContext('AppViewerContext');
|
|
21
21
|
const editorContext = getContext('AppEditorContext');
|
|
@@ -34,7 +34,7 @@ function setDebouncedExecute() {
|
|
|
34
34
|
executeTimeout && clearTimeout(executeTimeout);
|
|
35
35
|
executeTimeout = setTimeout(() => {
|
|
36
36
|
console.debug('debounce execute');
|
|
37
|
-
executeComponent(
|
|
37
|
+
executeComponent();
|
|
38
38
|
}, 200);
|
|
39
39
|
}
|
|
40
40
|
function computeStaticValues() {
|
|
@@ -56,6 +56,57 @@ function refreshOnStaticChange() {
|
|
|
56
56
|
// $: sendUserToast('args' + JSON.stringify(runnableInputValues) + Boolean(extraQueryParams) || args)
|
|
57
57
|
// $: console.log(runnableInputValues)
|
|
58
58
|
let firstRefresh = true;
|
|
59
|
+
function genCallbacks({ onDone, onCancel, onError }) {
|
|
60
|
+
const callbacks = {
|
|
61
|
+
started({ id }) {
|
|
62
|
+
console.log('started', id);
|
|
63
|
+
loading = true;
|
|
64
|
+
outputs.jobId?.set(id);
|
|
65
|
+
dispatch('started', id);
|
|
66
|
+
},
|
|
67
|
+
doneWithoutCompute(r) {
|
|
68
|
+
onDone?.(r);
|
|
69
|
+
},
|
|
70
|
+
doneResult({ id, result }) {
|
|
71
|
+
onDone?.(result);
|
|
72
|
+
lastJobId = id;
|
|
73
|
+
setResult(result, id);
|
|
74
|
+
loading = false;
|
|
75
|
+
dispatch('done', { id, result });
|
|
76
|
+
},
|
|
77
|
+
cancel({ id }) {
|
|
78
|
+
onCancel?.();
|
|
79
|
+
let jobId = id;
|
|
80
|
+
console.debug('cancel', jobId);
|
|
81
|
+
let job = $jobsById[jobId];
|
|
82
|
+
if (job && job.created_at && !job.duration_ms) {
|
|
83
|
+
$jobsById[jobId] = {
|
|
84
|
+
...job,
|
|
85
|
+
started_at: job.started_at ?? Date.now(),
|
|
86
|
+
duration_ms: Date.now() - (job.started_at ?? job.created_at)
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
dispatch('cancel', { id });
|
|
90
|
+
},
|
|
91
|
+
doneError({ id, error }) {
|
|
92
|
+
onError?.(error);
|
|
93
|
+
setResult({ error }, id);
|
|
94
|
+
loading = false;
|
|
95
|
+
dispatch('doneError', { id, error });
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
if (isEditor) {
|
|
99
|
+
callbacks.running = ({ id }) => {
|
|
100
|
+
console.log('running', id);
|
|
101
|
+
let jobId = id;
|
|
102
|
+
let job = $jobsById[jobId];
|
|
103
|
+
if (job && !job.started_at) {
|
|
104
|
+
$jobsById[jobId] = { ...job, started_at: Date.now() };
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
return callbacks;
|
|
109
|
+
}
|
|
59
110
|
function refreshIfAutoRefresh(src) {
|
|
60
111
|
// console.log(
|
|
61
112
|
// 'refreshIfAutoRefresh',
|
|
@@ -151,7 +202,7 @@ async function executeComponent(noToast = false, inlineScriptOverride, setRunnab
|
|
|
151
202
|
let jobId;
|
|
152
203
|
console.debug(`Executing ${id}`);
|
|
153
204
|
if (iterContext && $iterContext.disabled) {
|
|
154
|
-
callbacks?.
|
|
205
|
+
callbacks?.onDone?.({});
|
|
155
206
|
console.debug(`Skipping execution of ${id} because it is part of a disabled list`);
|
|
156
207
|
return;
|
|
157
208
|
}
|
|
@@ -185,7 +236,7 @@ async function executeComponent(noToast = false, inlineScriptOverride, setRunnab
|
|
|
185
236
|
await setResult(r, job);
|
|
186
237
|
}
|
|
187
238
|
loading = false;
|
|
188
|
-
callbacks?.
|
|
239
|
+
callbacks?.onDone?.(r);
|
|
189
240
|
if (setRunnableJobEditorPanel && editorContext) {
|
|
190
241
|
editorContext.runnableJobEditorPanel.update((p) => {
|
|
191
242
|
return {
|
|
@@ -200,16 +251,16 @@ async function executeComponent(noToast = false, inlineScriptOverride, setRunnab
|
|
|
200
251
|
if (!noToast) {
|
|
201
252
|
sendUserToast('This app is not connected to a windmill backend, it is a static preview');
|
|
202
253
|
}
|
|
203
|
-
callbacks?.
|
|
254
|
+
callbacks?.onDone?.({});
|
|
204
255
|
return;
|
|
205
256
|
}
|
|
206
257
|
if (runnable?.type === 'runnableByName' && !runnable.inlineScript) {
|
|
207
|
-
callbacks?.
|
|
258
|
+
callbacks?.onDone?.({});
|
|
208
259
|
return;
|
|
209
260
|
}
|
|
210
261
|
if (!resultJobLoader) {
|
|
211
262
|
console.warn('No test job loader');
|
|
212
|
-
callbacks?.
|
|
263
|
+
callbacks?.onDone?.({});
|
|
213
264
|
return;
|
|
214
265
|
}
|
|
215
266
|
try {
|
|
@@ -219,7 +270,7 @@ async function executeComponent(noToast = false, inlineScriptOverride, setRunnab
|
|
|
219
270
|
addJob(uuid);
|
|
220
271
|
}
|
|
221
272
|
return uuid;
|
|
222
|
-
}, callbacks);
|
|
273
|
+
}, genCallbacks(callbacks ?? {}));
|
|
223
274
|
if (setRunnableJobEditorPanel && editorContext) {
|
|
224
275
|
editorContext.runnableJobEditorPanel.update((p) => {
|
|
225
276
|
return {
|
|
@@ -234,7 +285,7 @@ async function executeComponent(noToast = false, inlineScriptOverride, setRunnab
|
|
|
234
285
|
let error = e.body ?? e.message;
|
|
235
286
|
updateResult({ error });
|
|
236
287
|
$errorByComponent[id] = { error };
|
|
237
|
-
callbacks?.
|
|
288
|
+
callbacks?.onError?.({ error });
|
|
238
289
|
sendUserToast(error, true);
|
|
239
290
|
loading = false;
|
|
240
291
|
}
|
|
@@ -301,9 +352,6 @@ export async function runComponent(noToast = true, inlineScriptOverride, setRunn
|
|
|
301
352
|
$errorByComponent[id] = { error };
|
|
302
353
|
}
|
|
303
354
|
}
|
|
304
|
-
async function setJobId(jobId) {
|
|
305
|
-
outputs.jobId?.set(jobId);
|
|
306
|
-
}
|
|
307
355
|
function recordJob(jobId, result, jobError, transformer) {
|
|
308
356
|
const error = jobError ?? JSON.stringify(transformer?.error, null, 4);
|
|
309
357
|
if (isEditor && jobId) {
|
|
@@ -415,13 +463,13 @@ onMount(() => {
|
|
|
415
463
|
dispatch('recompute');
|
|
416
464
|
rejectCb = reject;
|
|
417
465
|
executeComponent(true, inlineScript, setRunnableJobEditorPanel, undefined, {
|
|
418
|
-
|
|
466
|
+
onDone: (x) => {
|
|
419
467
|
resolve(x);
|
|
420
468
|
},
|
|
421
|
-
|
|
469
|
+
onCancel: () => {
|
|
422
470
|
reject();
|
|
423
471
|
},
|
|
424
|
-
|
|
472
|
+
onError: (e) => {
|
|
425
473
|
console.error(e);
|
|
426
474
|
reject(e);
|
|
427
475
|
}
|
|
@@ -570,47 +618,10 @@ $effect(() => {
|
|
|
570
618
|
{/each}
|
|
571
619
|
{/if}
|
|
572
620
|
|
|
573
|
-
<
|
|
621
|
+
<JobLoader
|
|
574
622
|
{allowConcurentRequests}
|
|
575
|
-
|
|
576
|
-
on:started={(e) => {
|
|
577
|
-
console.log('started', e.detail)
|
|
578
|
-
loading = true
|
|
579
|
-
setJobId(e.detail)
|
|
580
|
-
dispatch('started', e.detail)
|
|
581
|
-
}}
|
|
623
|
+
onlyResult
|
|
582
624
|
workspaceOverride={workspace}
|
|
583
|
-
on:done={(e) => {
|
|
584
|
-
lastJobId = e.detail.id
|
|
585
|
-
setResult(e.detail.result, e.detail.id)
|
|
586
|
-
loading = false
|
|
587
|
-
dispatch('done', { id: e.detail?.id, result: e.detail?.result })
|
|
588
|
-
}}
|
|
589
|
-
on:cancel={(e) => {
|
|
590
|
-
let jobId = e.detail
|
|
591
|
-
console.debug('cancel', jobId)
|
|
592
|
-
let job = $jobsById[jobId]
|
|
593
|
-
if (job && job.created_at && !job.duration_ms) {
|
|
594
|
-
$jobsById[jobId] = {
|
|
595
|
-
...job,
|
|
596
|
-
started_at: job.started_at ?? Date.now(),
|
|
597
|
-
duration_ms: Date.now() - (job.started_at ?? job.created_at)
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
dispatch('cancel', { id: e.detail })
|
|
601
|
-
}}
|
|
602
|
-
on:running={(e) => {
|
|
603
|
-
let jobId = e.detail
|
|
604
|
-
let job = $jobsById[jobId]
|
|
605
|
-
if (job && !job.started_at) {
|
|
606
|
-
$jobsById[jobId] = { ...job, started_at: Date.now() }
|
|
607
|
-
}
|
|
608
|
-
}}
|
|
609
|
-
on:doneError={(e) => {
|
|
610
|
-
setResult({ error: e.detail.error }, e.detail.id)
|
|
611
|
-
loading = false
|
|
612
|
-
dispatch('doneError', { id: e.detail.id, result: e.detail.result })
|
|
613
|
-
}}
|
|
614
625
|
bind:this={resultJobLoader}
|
|
615
626
|
/>
|
|
616
627
|
|
|
@@ -36,10 +36,10 @@ interface Props {
|
|
|
36
36
|
replaceCallback?: boolean;
|
|
37
37
|
children?: import('svelte').Snippet;
|
|
38
38
|
}
|
|
39
|
-
type
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
type RunnableCallback = {
|
|
40
|
+
onDone?: (r: any) => void;
|
|
41
|
+
onCancel?: () => void;
|
|
42
|
+
onError?: (e: any) => void;
|
|
43
43
|
};
|
|
44
44
|
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> {
|
|
45
45
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
@@ -92,7 +92,7 @@ declare const RunnableComponent: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
92
92
|
};
|
|
93
93
|
force_viewer_allow_user_resources?: Array<(string)>;
|
|
94
94
|
}>;
|
|
95
|
-
runComponent: (noToast?: boolean, inlineScriptOverride?: InlineScript, setRunnableJobEditorPanel?: boolean, dynamicArgsOverride?: Record<string, any>, callbacks?:
|
|
95
|
+
runComponent: (noToast?: boolean, inlineScriptOverride?: InlineScript, setRunnableJobEditorPanel?: boolean, dynamicArgsOverride?: Record<string, any>, callbacks?: RunnableCallback) => Promise<string | undefined>;
|
|
96
96
|
}, "result" | "loading">;
|
|
97
97
|
type RunnableComponent = InstanceType<typeof RunnableComponent>;
|
|
98
98
|
export default RunnableComponent;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang="ts">import { getContext, onDestroy } from 'svelte';
|
|
1
|
+
<script lang="ts">import { getContext, onDestroy, untrack } from 'svelte';
|
|
2
2
|
import { initConfig, initOutput } from '../../editor/appUtils';
|
|
3
3
|
import { initCss } from '../../utils';
|
|
4
4
|
import AlignWrapper from '../helpers/AlignWrapper.svelte';
|
|
@@ -9,7 +9,7 @@ import ResolveStyle from '../helpers/ResolveStyle.svelte';
|
|
|
9
9
|
import { twMerge } from 'tailwind-merge';
|
|
10
10
|
import LightweightResourcePicker from '../../../LightweightResourcePicker.svelte';
|
|
11
11
|
let { id, configuration, verticalAlignment = undefined, customCss = undefined, render } = $props();
|
|
12
|
-
const { app, worldStore, componentControl } = getContext('AppViewerContext');
|
|
12
|
+
const { app, worldStore, componentControl, isEditor, mode } = getContext('AppViewerContext');
|
|
13
13
|
let resolvedConfig = $state(initConfig(components['userresourcecomponent'].initialData.configuration, configuration));
|
|
14
14
|
const iterContext = getContext('ListWrapperContext');
|
|
15
15
|
const listInputs = getContext('ListInputs');
|
|
@@ -18,8 +18,29 @@ let outputs = initOutput($worldStore, id, {
|
|
|
18
18
|
});
|
|
19
19
|
let css = $state(initCss($app.css?.['userresourcecomponent'], customCss));
|
|
20
20
|
let classInput = $derived(twMerge('windmillapp w-full px-2', css?.input?.class ?? '', 'wm-input', 'wm-user-resource-select'));
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
function getDefaultValue() {
|
|
22
|
+
if (resolvedConfig.defaultValue && typeof resolvedConfig.defaultValue === 'string') {
|
|
23
|
+
const nval = resolvedConfig.defaultValue;
|
|
24
|
+
return nval.replace('$res:', '');
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
let value = $state(outputs.result.peak()?.replace('$res:', '') ?? getDefaultValue());
|
|
29
|
+
$effect(() => {
|
|
30
|
+
value;
|
|
31
|
+
untrack(() => assignValue(value));
|
|
32
|
+
});
|
|
33
|
+
let lastDefaultValue = $state(getDefaultValue());
|
|
34
|
+
$effect(() => {
|
|
35
|
+
// when in dnd mode, we react to the default value being changed for better UX
|
|
36
|
+
if (isEditor && $mode === 'dnd') {
|
|
37
|
+
const currentDefaultValue = getDefaultValue(); // reactive
|
|
38
|
+
if (lastDefaultValue !== currentDefaultValue) {
|
|
39
|
+
value = currentDefaultValue;
|
|
40
|
+
lastDefaultValue = currentDefaultValue;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
});
|
|
23
44
|
onDestroy(() => {
|
|
24
45
|
listInputs?.remove(id);
|
|
25
46
|
});
|
|
@@ -76,10 +97,7 @@ let resourcePicker = $state(undefined);
|
|
|
76
97
|
<LightweightResourcePicker
|
|
77
98
|
expressOAuthSetup={resolvedConfig.expressOauthSetup}
|
|
78
99
|
bind:this={resourcePicker}
|
|
79
|
-
|
|
80
|
-
on:change={(e) => {
|
|
81
|
-
assignValue(e.detail)
|
|
82
|
-
}}
|
|
100
|
+
bind:value
|
|
83
101
|
disabled={resolvedConfig.disabled}
|
|
84
102
|
resourceType={resolvedConfig.resourceType}
|
|
85
103
|
/>
|