windmill-components 1.504.6 → 1.511.0
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 +184 -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 +115 -88
- package/package/components/Editor.svelte.d.ts +30 -55
- 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/HttpAgentWorkerDrawer.svelte +1 -1
- 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/JsonEditor.svelte +11 -11
- package/package/components/JsonEditor.svelte.d.ts +14 -56
- package/package/components/Label.svelte +6 -11
- package/package/components/Label.svelte.d.ts +14 -39
- 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/NumberTypeNarrowing.svelte +13 -16
- package/package/components/NumberTypeNarrowing.svelte.d.ts +4 -18
- package/package/components/PullGitRepoPopover.svelte +355 -0
- package/package/components/PullGitRepoPopover.svelte.d.ts +18 -0
- package/package/components/ResourceTypePicker.svelte +20 -17
- package/package/components/ResourceTypePicker.svelte.d.ts +7 -6
- 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/Section.svelte +7 -20
- package/package/components/Section.svelte.d.ts +20 -47
- package/package/components/ServiceLogsInner.svelte +2 -1
- package/package/components/ServiceLogsInner.svelte.d.ts +1 -0
- package/package/components/SimpleEditor.svelte +4 -4
- package/package/components/SimpleEditor.svelte.d.ts +1 -0
- package/package/components/SqlRepl.svelte +0 -1
- package/package/components/Subsection.svelte +10 -12
- package/package/components/Subsection.svelte.d.ts +15 -39
- package/package/components/UserSettings.svelte +1 -1
- package/package/components/WorkerGroup.svelte +260 -165
- package/package/components/WorkerGroup.svelte.d.ts +2 -0
- package/package/components/WorkerTagPicker.svelte +3 -3
- package/package/components/WorkerTagSelect.svelte +33 -4
- 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/AIFormSettings.svelte +3 -4
- package/package/components/copilot/AIFormSettings.svelte.d.ts +5 -19
- package/package/components/copilot/autocomplete/Autocompletor.d.ts +3 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +269 -35
- package/package/components/copilot/autocomplete/request.d.ts +3 -0
- package/package/components/copilot/autocomplete/request.js +15 -7
- 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 +165 -23
- 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 +30 -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/FlowModuleCache.svelte +4 -4
- package/package/components/flows/content/FlowModuleCache.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleComponent.svelte +16 -19
- package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +3 -4
- package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleSleep.svelte +6 -7
- package/package/components/flows/content/FlowModuleSleep.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleSuspend.svelte +19 -17
- package/package/components/flows/content/FlowModuleSuspend.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleTimeout.svelte +4 -4
- package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +4 -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/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 +47 -6
- package/package/components/triggers/gcp/utils.js +9 -1
- package/package/components/triggers/http/OpenAPISpecGenerator.svelte +3 -2
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +26 -23
- package/package/components/triggers/http/RouteEditorConfigSection.svelte.d.ts +5 -19
- package/package/components/triggers/http/RouteEditorInner.svelte +219 -175
- 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 +47 -6
- 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 +182 -13
- package/package/components/triggers/mqtt/utils.js +9 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +47 -6
- 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 +38 -92
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/sqs/utils.js +9 -1
- package/package/components/triggers/utils.js +12 -0
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +47 -6
- 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
|
@@ -5,15 +5,17 @@ import { sendUserToast } from '../../../toast';
|
|
|
5
5
|
import { workspaceStore } from '../../../stores';
|
|
6
6
|
import { AppService, HelpersService } from '../../../gen';
|
|
7
7
|
import { writable } from 'svelte/store';
|
|
8
|
-
import { Ban, CheckCheck, FileWarning, Files, RefreshCcw, Trash } from 'lucide-svelte';
|
|
8
|
+
import { Ban, CheckCheck, FileWarning, Files, RefreshCcw, Trash, XIcon } from 'lucide-svelte';
|
|
9
9
|
import { twMerge } from 'tailwind-merge';
|
|
10
10
|
import { createEventDispatcher, onDestroy } from 'svelte';
|
|
11
11
|
import { emptyString } from '../../../utils';
|
|
12
|
-
let { acceptedFileTypes = ['*'], allowMultiple = true, allowDelete = true, folderOnly = false, containerText =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
? 'Drag and drop
|
|
16
|
-
:
|
|
12
|
+
let { acceptedFileTypes = ['*'], allowMultiple = true, allowDelete = true, folderOnly = false, containerText: customContainerText = undefined, customResourcePath = undefined, customResourceType = undefined, customClass = '', customStyle = '', randomFileKey = false, pathTransformer = undefined, forceDisplayUploads = $bindable(false), defaultValue = undefined, workspace = undefined, fileUploads = writable([]), appPath = undefined, disabled = false, iconSize = undefined, initialValue = undefined, computeForceViewerPolicies = undefined } = $props();
|
|
13
|
+
const containerText = $derived(customContainerText ??
|
|
14
|
+
(folderOnly
|
|
15
|
+
? 'Drag and drop a folder here or click to browse'
|
|
16
|
+
: allowMultiple
|
|
17
|
+
? 'Drag and drop files here or click to browse'
|
|
18
|
+
: 'Drag and drop a file here or click to browse'));
|
|
17
19
|
const dispatch = createEventDispatcher();
|
|
18
20
|
let initialS3 = $derived(Array.isArray(initialValue)
|
|
19
21
|
? initialValue?.map((v) => v.s3)
|
|
@@ -21,16 +23,15 @@ let initialS3 = $derived(Array.isArray(initialValue)
|
|
|
21
23
|
? [initialValue?.s3]
|
|
22
24
|
: undefined);
|
|
23
25
|
init();
|
|
26
|
+
function transform(initialValue) {
|
|
27
|
+
return {
|
|
28
|
+
name: initialValue?.filename ?? initialValue?.s3 ?? 'Unknown file',
|
|
29
|
+
path: initialValue?.s3,
|
|
30
|
+
fromBucket: true
|
|
31
|
+
};
|
|
32
|
+
}
|
|
24
33
|
function init() {
|
|
25
34
|
if (initialS3) {
|
|
26
|
-
function transform(initialValue) {
|
|
27
|
-
return {
|
|
28
|
-
name: initialValue.filename,
|
|
29
|
-
size: 0,
|
|
30
|
-
progress: 100,
|
|
31
|
-
path: initialValue?.s3
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
35
|
for (const s3 of initialS3) {
|
|
35
36
|
if (!$fileUploads.find((fileUpload) => fileUpload.path === s3)) {
|
|
36
37
|
let initialFileUploads = initialValue
|
|
@@ -43,6 +44,12 @@ function init() {
|
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
}
|
|
47
|
+
export function addUpload(upload) {
|
|
48
|
+
$fileUploads = [...$fileUploads, transform(upload)];
|
|
49
|
+
}
|
|
50
|
+
export function setUpload(upload) {
|
|
51
|
+
$fileUploads = [transform(upload)];
|
|
52
|
+
}
|
|
46
53
|
async function handleChange(files) {
|
|
47
54
|
if (folderOnly) {
|
|
48
55
|
uniqueFolderPrefix = getRandomFolderPrefix();
|
|
@@ -278,8 +285,28 @@ onDestroy(() => {
|
|
|
278
285
|
});
|
|
279
286
|
</script>
|
|
280
287
|
|
|
288
|
+
{#snippet fileInput()}
|
|
289
|
+
<FileInput
|
|
290
|
+
{folderOnly}
|
|
291
|
+
{disabled}
|
|
292
|
+
accept={acceptedFileTypes?.join(',')}
|
|
293
|
+
multiple={allowMultiple}
|
|
294
|
+
returnFileNames
|
|
295
|
+
{iconSize}
|
|
296
|
+
on:change={({ detail }) => {
|
|
297
|
+
forceDisplayUploads = false
|
|
298
|
+
handleChange(detail)
|
|
299
|
+
}}
|
|
300
|
+
class={twMerge('w-full h-full', customClass, 'wm-file-input')}
|
|
301
|
+
style={customStyle}
|
|
302
|
+
defaultFile={defaultValue}
|
|
303
|
+
>
|
|
304
|
+
{containerText}{#if disabled}<br />(Disabled){/if}
|
|
305
|
+
</FileInput>
|
|
306
|
+
{/snippet}
|
|
307
|
+
|
|
281
308
|
<div class="w-full h-full p-0 flex flex-col">
|
|
282
|
-
{#if $fileUploads.length > 0
|
|
309
|
+
{#if $fileUploads.length > 0}
|
|
283
310
|
<div class="border rounded-md flex flex-col gap-1 divide-y h-full w-full p-1">
|
|
284
311
|
<div class="flex h-full overflow-y-auto flex-col">
|
|
285
312
|
{#each $fileUploads as fileUpload}
|
|
@@ -352,7 +379,7 @@ onDestroy(() => {
|
|
|
352
379
|
Remove from list
|
|
353
380
|
</Button>
|
|
354
381
|
{/if}
|
|
355
|
-
{#if fileUpload.progress < 100 && !fileUpload.cancelled && !fileUpload.errorMessage}
|
|
382
|
+
{#if fileUpload.progress !== undefined && fileUpload.progress < 100 && !fileUpload.cancelled && !fileUpload.errorMessage}
|
|
356
383
|
<Button
|
|
357
384
|
size="xs2"
|
|
358
385
|
color="light"
|
|
@@ -390,100 +417,115 @@ onDestroy(() => {
|
|
|
390
417
|
>
|
|
391
418
|
Delete
|
|
392
419
|
</Button>
|
|
420
|
+
{:else if fileUpload.fromBucket}
|
|
421
|
+
<Button
|
|
422
|
+
size="xs2"
|
|
423
|
+
color="red"
|
|
424
|
+
variant="border"
|
|
425
|
+
on:click={() => {
|
|
426
|
+
$fileUploads = $fileUploads.filter(
|
|
427
|
+
(_fileUpload) => _fileUpload.name !== fileUpload.name
|
|
428
|
+
)
|
|
429
|
+
|
|
430
|
+
if (fileUpload.path) {
|
|
431
|
+
dispatch('deletion', { path: fileUpload.path })
|
|
432
|
+
}
|
|
433
|
+
}}
|
|
434
|
+
startIcon={{
|
|
435
|
+
icon: XIcon
|
|
436
|
+
}}
|
|
437
|
+
>
|
|
438
|
+
Remove
|
|
439
|
+
</Button>
|
|
393
440
|
{/if}
|
|
394
441
|
</div>
|
|
395
442
|
</div>
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
443
|
+
{#if !fileUpload.fromBucket}
|
|
444
|
+
<FileProgressBar
|
|
445
|
+
progress={fileUpload.progress}
|
|
446
|
+
color={fileUpload.errorMessage
|
|
447
|
+
? '#ef4444'
|
|
448
|
+
: fileUpload.cancelled
|
|
449
|
+
? '#eab308'
|
|
450
|
+
: fileUpload.progress === 100
|
|
451
|
+
? '#22c55e'
|
|
452
|
+
: '#3b82f6'}
|
|
453
|
+
ended={fileUpload.cancelled || fileUpload.errorMessage !== undefined}
|
|
454
|
+
>
|
|
455
|
+
{#if fileUpload.errorMessage}
|
|
456
|
+
<span class="text-xs text-red-600">{fileUpload.errorMessage}</span>
|
|
457
|
+
{:else if fileUpload.cancelled}
|
|
458
|
+
<span class="text-xs text-yellow-600">Upload cancelled</span>
|
|
459
|
+
{/if}
|
|
460
|
+
</FileProgressBar>
|
|
461
|
+
{/if}
|
|
413
462
|
{#if !(fileUpload.cancelled || fileUpload.errorMessage !== undefined)}
|
|
414
463
|
<span class="text-xs text-gray-500 dark:text-gray-200">
|
|
415
|
-
{fileUpload.
|
|
416
|
-
'N/A'}
|
|
464
|
+
{#if fileUpload.fromBucket}
|
|
465
|
+
{fileUpload.path ?? 'N/A'}
|
|
466
|
+
{:else}
|
|
467
|
+
{fileUpload.progress === 100 ? 'Upload finished' : `Uploading`} to path: {fileUpload.path ??
|
|
468
|
+
'N/A'}
|
|
469
|
+
{/if}
|
|
417
470
|
</span>
|
|
418
471
|
{/if}
|
|
419
472
|
</div>
|
|
420
473
|
{/each}
|
|
421
474
|
</div>
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
475
|
+
<div class="flex flex-row gap-1 items-center justify-end p-1">
|
|
476
|
+
{#if !forceDisplayUploads && (allowMultiple || folderOnly) && !$fileUploads.every((fileUpload) => fileUpload.progress === 100 || fileUpload.cancelled || fileUpload.fromBucket)}
|
|
477
|
+
<Button
|
|
478
|
+
size="xs2"
|
|
479
|
+
color="light"
|
|
480
|
+
on:click={() => {
|
|
481
|
+
$fileUploads = $fileUploads.map((fileUpload) => {
|
|
482
|
+
if (fileUpload.progress === 100 || fileUpload.cancelled) {
|
|
483
|
+
return fileUpload
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
fileUpload.cancelled = true
|
|
487
|
+
fileUpload.progress = 0
|
|
488
|
+
return fileUpload
|
|
489
|
+
})
|
|
490
|
+
}}
|
|
491
|
+
startIcon={{
|
|
492
|
+
icon: Ban
|
|
493
|
+
}}
|
|
494
|
+
>
|
|
495
|
+
Cancel all uploads
|
|
496
|
+
</Button>
|
|
497
|
+
{/if}
|
|
498
|
+
{#if allowMultiple}
|
|
499
|
+
{#if forceDisplayUploads}
|
|
500
|
+
{@render fileInput()}
|
|
501
|
+
{:else}
|
|
425
502
|
<Button
|
|
426
503
|
size="xs2"
|
|
427
504
|
color="light"
|
|
428
505
|
on:click={() => {
|
|
429
|
-
|
|
430
|
-
if (fileUpload.progress === 100 || fileUpload.cancelled) {
|
|
431
|
-
return fileUpload
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
fileUpload.cancelled = true
|
|
435
|
-
fileUpload.progress = 0
|
|
436
|
-
return fileUpload
|
|
437
|
-
})
|
|
506
|
+
forceDisplayUploads = true
|
|
438
507
|
}}
|
|
439
508
|
startIcon={{
|
|
440
|
-
icon:
|
|
509
|
+
icon: Files
|
|
441
510
|
}}
|
|
511
|
+
disabled={$fileUploads.some(
|
|
512
|
+
(fileUpload) =>
|
|
513
|
+
fileUpload.progress !== 100 && !fileUpload.cancelled && !fileUpload.fromBucket
|
|
514
|
+
)}
|
|
442
515
|
>
|
|
443
|
-
|
|
516
|
+
Upload more files
|
|
444
517
|
</Button>
|
|
445
518
|
{/if}
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
color="light"
|
|
449
|
-
on:click={() => {
|
|
450
|
-
forceDisplayUploads = true
|
|
451
|
-
}}
|
|
452
|
-
startIcon={{
|
|
453
|
-
icon: Files
|
|
454
|
-
}}
|
|
455
|
-
disabled={$fileUploads.some(
|
|
456
|
-
(fileUpload) => fileUpload.progress !== 100 && !fileUpload.cancelled
|
|
457
|
-
)}
|
|
458
|
-
>
|
|
459
|
-
Upload more files
|
|
460
|
-
</Button>
|
|
461
|
-
</div>
|
|
462
|
-
{/if}
|
|
519
|
+
{/if}
|
|
520
|
+
</div>
|
|
463
521
|
</div>
|
|
464
522
|
{:else}
|
|
465
|
-
|
|
466
|
-
{folderOnly}
|
|
467
|
-
{disabled}
|
|
468
|
-
accept={acceptedFileTypes?.join(',')}
|
|
469
|
-
multiple={allowMultiple}
|
|
470
|
-
returnFileNames
|
|
471
|
-
{iconSize}
|
|
472
|
-
on:change={({ detail }) => {
|
|
473
|
-
forceDisplayUploads = false
|
|
474
|
-
handleChange(detail)
|
|
475
|
-
}}
|
|
476
|
-
class={twMerge('w-full h-full', customClass, 'wm-file-input')}
|
|
477
|
-
style={customStyle}
|
|
478
|
-
defaultFile={defaultValue}
|
|
479
|
-
>
|
|
480
|
-
{containerText}{#if disabled}<br />(Disabled){/if}
|
|
481
|
-
</FileInput>
|
|
523
|
+
{@render fileInput()}
|
|
482
524
|
{/if}
|
|
483
525
|
{#if initialS3 && initialS3.length > 0 && $fileUploads.length == 0}
|
|
484
526
|
<div class="flex flex-row gap-1 items-center p-1">
|
|
485
527
|
<span class="text-sm">
|
|
486
|
-
File currently selected: {initialS3?.join(', ')}
|
|
528
|
+
File{initialS3.length > 1 ? 's' : ''} currently selected: {initialS3?.join(', ')}
|
|
487
529
|
</span>
|
|
488
530
|
</div>
|
|
489
531
|
{/if}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { type Writable } from 'svelte/store';
|
|
2
2
|
type FileUploadData = {
|
|
3
3
|
name: string;
|
|
4
|
-
size
|
|
5
|
-
progress
|
|
4
|
+
size?: number;
|
|
5
|
+
progress?: number;
|
|
6
6
|
cancelled?: boolean;
|
|
7
7
|
errorMessage?: string;
|
|
8
8
|
path?: string;
|
|
9
9
|
file?: File;
|
|
10
10
|
deleteToken?: string;
|
|
11
|
+
fromBucket?: boolean;
|
|
11
12
|
};
|
|
12
13
|
interface Props {
|
|
13
14
|
acceptedFileTypes?: string[] | undefined;
|
|
@@ -65,6 +66,15 @@ declare const FileUpload: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
65
66
|
}>;
|
|
66
67
|
} & {
|
|
67
68
|
[evt: string]: CustomEvent<any>;
|
|
68
|
-
}, {}, {
|
|
69
|
+
}, {}, {
|
|
70
|
+
addUpload: (upload: {
|
|
71
|
+
s3: string;
|
|
72
|
+
filename?: string;
|
|
73
|
+
}) => void;
|
|
74
|
+
setUpload: (upload: {
|
|
75
|
+
s3: string;
|
|
76
|
+
filename?: string;
|
|
77
|
+
}) => void;
|
|
78
|
+
}, "forceDisplayUploads">;
|
|
69
79
|
type FileUpload = InstanceType<typeof FileUpload>;
|
|
70
80
|
export default FileUpload;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
<script lang="ts">import S3FilePicker from '../../S3FilePicker.svelte';
|
|
2
|
+
import Toggle from '../../Toggle.svelte';
|
|
3
|
+
import { Loader2, Pipette } from 'lucide-svelte';
|
|
4
|
+
import FileUpload from './FileUpload.svelte';
|
|
5
|
+
import Button from '../button/Button.svelte';
|
|
6
|
+
import { userStore } from '../../../stores';
|
|
7
|
+
let { multiple, value = $bindable(), defaultValue, setNewValueFromCode, onFocus, onBlur, computeS3ForceViewerPolicies, workspace, editor = $bindable(), appPath } = $props();
|
|
8
|
+
let s3FileUploadRawMode = $state(false);
|
|
9
|
+
let s3FilePicker = $state(undefined);
|
|
10
|
+
let fileUpload = $state(undefined);
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
{#if $userStore}
|
|
14
|
+
<S3FilePicker
|
|
15
|
+
bind:this={s3FilePicker}
|
|
16
|
+
on:selectAndClose={(ev) => {
|
|
17
|
+
if (multiple) {
|
|
18
|
+
if (Array.isArray(value)) {
|
|
19
|
+
value.push(ev.detail)
|
|
20
|
+
} else {
|
|
21
|
+
value = [ev.detail]
|
|
22
|
+
}
|
|
23
|
+
fileUpload?.addUpload(ev.detail)
|
|
24
|
+
} else {
|
|
25
|
+
value = ev.detail
|
|
26
|
+
fileUpload?.setUpload(value)
|
|
27
|
+
}
|
|
28
|
+
editor?.setCode(JSON.stringify(value))
|
|
29
|
+
}}
|
|
30
|
+
readOnlyMode={false}
|
|
31
|
+
/>
|
|
32
|
+
{/if}
|
|
33
|
+
|
|
34
|
+
<div class="flex flex-col w-full gap-1">
|
|
35
|
+
<Toggle
|
|
36
|
+
class="flex justify-end"
|
|
37
|
+
bind:checked={s3FileUploadRawMode}
|
|
38
|
+
size="xs"
|
|
39
|
+
options={{ left: `Raw S3 object${multiple ? 's' : ''} input` }}
|
|
40
|
+
/>
|
|
41
|
+
{#if s3FileUploadRawMode}
|
|
42
|
+
{#await import('../../JsonEditor.svelte')}
|
|
43
|
+
<Loader2 class="animate-spin" />
|
|
44
|
+
{:then Module}
|
|
45
|
+
<Module.default
|
|
46
|
+
bind:editor
|
|
47
|
+
on:focus={(e) => {
|
|
48
|
+
onFocus()
|
|
49
|
+
}}
|
|
50
|
+
on:blur={(e) => {
|
|
51
|
+
onBlur()
|
|
52
|
+
}}
|
|
53
|
+
code={JSON.stringify(value ?? defaultValue ?? (multiple ? [] : { s3: '' }), null, 2)}
|
|
54
|
+
on:changeValue={(e) => {
|
|
55
|
+
setNewValueFromCode(e.detail)
|
|
56
|
+
}}
|
|
57
|
+
/>
|
|
58
|
+
{/await}
|
|
59
|
+
{:else}
|
|
60
|
+
<FileUpload
|
|
61
|
+
bind:this={fileUpload}
|
|
62
|
+
{appPath}
|
|
63
|
+
computeForceViewerPolicies={computeS3ForceViewerPolicies}
|
|
64
|
+
{workspace}
|
|
65
|
+
allowMultiple={multiple}
|
|
66
|
+
randomFileKey={true}
|
|
67
|
+
on:addition={(evt) => {
|
|
68
|
+
const s3Object = {
|
|
69
|
+
s3: evt.detail?.path ?? '',
|
|
70
|
+
filename: evt.detail?.filename ?? ''
|
|
71
|
+
}
|
|
72
|
+
if (multiple) {
|
|
73
|
+
if (Array.isArray(value)) {
|
|
74
|
+
value.push(s3Object)
|
|
75
|
+
} else {
|
|
76
|
+
value = [s3Object]
|
|
77
|
+
}
|
|
78
|
+
} else {
|
|
79
|
+
value = s3Object
|
|
80
|
+
}
|
|
81
|
+
}}
|
|
82
|
+
on:deletion={(evt) => {
|
|
83
|
+
if (multiple) {
|
|
84
|
+
if (Array.isArray(value)) {
|
|
85
|
+
value = value.filter((v) => v.s3 !== evt.detail?.path)
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
value = {
|
|
89
|
+
s3: ''
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}}
|
|
93
|
+
defaultValue={multiple ? defaultValue?.map((v) => v.s3) : defaultValue?.s3}
|
|
94
|
+
initialValue={value}
|
|
95
|
+
/>
|
|
96
|
+
{/if}
|
|
97
|
+
{#if $userStore}
|
|
98
|
+
<Button
|
|
99
|
+
variant="border"
|
|
100
|
+
color="light"
|
|
101
|
+
size="xs"
|
|
102
|
+
btnClasses="mt-1"
|
|
103
|
+
on:click={() => {
|
|
104
|
+
s3FilePicker?.open?.(value)
|
|
105
|
+
}}
|
|
106
|
+
startIcon={{ icon: Pipette }}
|
|
107
|
+
>
|
|
108
|
+
{multiple ? 'Add' : 'Choose'} an object from the catalog
|
|
109
|
+
</Button>
|
|
110
|
+
{/if}
|
|
111
|
+
</div>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type SimpleEditor from '../../SimpleEditor.svelte';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
multiple: boolean;
|
|
4
|
+
value: any;
|
|
5
|
+
defaultValue: any;
|
|
6
|
+
setNewValueFromCode: (v: any) => void;
|
|
7
|
+
onFocus: () => void;
|
|
8
|
+
onBlur: () => void;
|
|
9
|
+
computeS3ForceViewerPolicies: (() => {
|
|
10
|
+
allowed_resources: string[];
|
|
11
|
+
allow_user_resources: boolean;
|
|
12
|
+
allow_workspace_resource: boolean;
|
|
13
|
+
file_key_regex: string;
|
|
14
|
+
} | undefined) | undefined;
|
|
15
|
+
workspace: string | undefined;
|
|
16
|
+
editor: SimpleEditor | undefined;
|
|
17
|
+
appPath: string | undefined;
|
|
18
|
+
};
|
|
19
|
+
declare const S3ArgInput: import("svelte").Component<$$ComponentProps, {}, "value" | "editor">;
|
|
20
|
+
type S3ArgInput = ReturnType<typeof S3ArgInput>;
|
|
21
|
+
export default S3ArgInput;
|
|
@@ -84,7 +84,9 @@ let versionsDrawerOpen = $state(false);
|
|
|
84
84
|
<NoMainFuncBadge />
|
|
85
85
|
{/if}
|
|
86
86
|
{#if script.kind !== 'script'}
|
|
87
|
-
<Badge color="blue" baseClass="border"
|
|
87
|
+
<Badge color="blue" baseClass="border"
|
|
88
|
+
>{script.kind === 'failure' ? 'Error handler' : capitalize(script.kind)}</Badge
|
|
89
|
+
>
|
|
88
90
|
{/if}
|
|
89
91
|
<SharedBadge canWrite={script.canWrite} extraPerms={script.extra_perms} />
|
|
90
92
|
<DraftBadge has_draft={script.has_draft} draft_only={script.draft_only} />
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
<script lang="ts">import Label from '../Label.svelte';
|
|
2
2
|
import Toggle from '../Toggle.svelte';
|
|
3
3
|
import Tooltip from '../Tooltip.svelte';
|
|
4
|
-
|
|
5
|
-
export let type = 'script';
|
|
4
|
+
let { prompt = $bindable(undefined), type = 'script' } = $props();
|
|
6
5
|
</script>
|
|
7
6
|
|
|
8
7
|
<div class="flex flex-col gap-2">
|
|
@@ -22,13 +21,13 @@ export let type = 'script';
|
|
|
22
21
|
/>
|
|
23
22
|
{#if prompt !== undefined}
|
|
24
23
|
<Label label="Additional prompt for AI">
|
|
25
|
-
|
|
24
|
+
{#snippet header()}
|
|
26
25
|
<Tooltip>
|
|
27
26
|
AI will use script description and each field description to fill the inputs form. In
|
|
28
27
|
addition, any prompt passed here will be used by AI to guide it. You can mention specific
|
|
29
28
|
fields and interaction between fields here.
|
|
30
29
|
</Tooltip>
|
|
31
|
-
|
|
30
|
+
{/snippet}
|
|
32
31
|
<textarea bind:value={prompt} placeholder="Instructions for the AI about how to fill the form"
|
|
33
32
|
></textarea>
|
|
34
33
|
</Label>
|
|
@@ -1,21 +1,7 @@
|
|
|
1
|
-
interface
|
|
2
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
-
$$bindings?: Bindings;
|
|
4
|
-
} & Exports;
|
|
5
|
-
(internal: unknown, props: Props & {
|
|
6
|
-
$$events?: Events;
|
|
7
|
-
$$slots?: Slots;
|
|
8
|
-
}): Exports & {
|
|
9
|
-
$set?: any;
|
|
10
|
-
$on?: any;
|
|
11
|
-
};
|
|
12
|
-
z_$$bindings?: Bindings;
|
|
13
|
-
}
|
|
14
|
-
declare const AiFormSettings: $$__sveltets_2_IsomorphicComponent<{
|
|
1
|
+
interface Props {
|
|
15
2
|
prompt?: string | undefined;
|
|
16
|
-
type?:
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
type AiFormSettings = InstanceType<typeof AiFormSettings>;
|
|
3
|
+
type?: 'flow' | 'script';
|
|
4
|
+
}
|
|
5
|
+
declare const AiFormSettings: import("svelte").Component<Props, {}, "prompt">;
|
|
6
|
+
type AiFormSettings = ReturnType<typeof AiFormSettings>;
|
|
21
7
|
export default AiFormSettings;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { AIProviderModel, ScriptLang } from '../../../gen';
|
|
2
|
-
import {
|
|
2
|
+
import { editor as meditor } from 'monaco-editor';
|
|
3
|
+
import type { MonacoLanguageClient } from 'monaco-languageclient';
|
|
3
4
|
export declare class Autocompletor {
|
|
4
5
|
#private;
|
|
5
6
|
constructor(editor: meditor.IStandaloneCodeEditor, scriptLang: ScriptLang | 'bunnative' | 'jsx' | 'tsx' | 'json');
|
|
6
7
|
static isProviderModelSupported(providerModel: AIProviderModel | undefined): boolean | undefined;
|
|
7
8
|
dispose(): void;
|
|
9
|
+
setLanguageClient(client: MonacoLanguageClient): void;
|
|
8
10
|
}
|