windmill-components 1.555.1 → 1.558.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/AIAgentLogViewer.svelte.d.ts +3 -3
- package/package/components/AIProviderPicker.svelte.d.ts +3 -3
- package/package/components/ArgInput.svelte +2 -0
- package/package/components/DBManager.svelte.d.ts +3 -3
- package/package/components/DBManagerDrawer.svelte.d.ts +3 -3
- package/package/components/DBSchemaExplorer.svelte.d.ts +3 -3
- package/package/components/DBTable.svelte.d.ts +3 -3
- package/package/components/DBTableEditor.svelte +9 -12
- package/package/components/DBTableEditor.svelte.d.ts +3 -3
- package/package/components/DateTimeInput.svelte +19 -13
- package/package/components/DateTimeInput.svelte.d.ts +5 -0
- package/package/components/DucklakePicker.svelte +32 -0
- package/package/components/DucklakePicker.svelte.d.ts +13 -0
- package/package/components/Editor.svelte +1 -1
- package/package/components/EditorBar.svelte +14 -1
- package/package/components/FakeMonacoPlaceHolder.svelte +1 -1
- package/package/components/FlowGraphViewerStep.svelte +1 -1
- package/package/components/FlowPreviewContent.svelte +1 -1
- package/package/components/HighlightCode.svelte +21 -10
- package/package/components/HighlightCode.svelte.d.ts +12 -22
- package/package/components/InputTransformForm.svelte +9 -41
- package/package/components/InstanceSetting.svelte +1 -6
- package/package/components/ResourceEditor.svelte +1 -1
- package/package/components/ResourcePicker.svelte +0 -5
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +50 -34
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +7 -5
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte.d.ts +2 -2
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte +2 -2
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte.d.ts +3 -2
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +13 -7
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +6 -3
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte.d.ts +2 -1
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte +2 -2
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte.d.ts +3 -2
- package/package/components/apps/components/display/dbtable/queries/count.d.ts +2 -1
- package/package/components/apps/components/display/dbtable/queries/count.js +28 -18
- package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +1 -1
- package/package/components/apps/components/display/dbtable/queries/createTable.js +1 -1
- package/package/components/apps/components/display/dbtable/queries/delete.d.ts +2 -1
- package/package/components/apps/components/display/dbtable/queries/delete.js +19 -10
- package/package/components/apps/components/display/dbtable/queries/insert.d.ts +2 -1
- package/package/components/apps/components/display/dbtable/queries/insert.js +16 -10
- package/package/components/apps/components/display/dbtable/queries/select.d.ts +2 -1
- package/package/components/apps/components/display/dbtable/queries/select.js +20 -16
- package/package/components/apps/components/display/dbtable/queries/update.d.ts +2 -1
- package/package/components/apps/components/display/dbtable/queries/update.js +19 -10
- package/package/components/apps/components/display/dbtable/utils.d.ts +1 -1
- package/package/components/apps/components/display/dbtable/utils.js +12 -3
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +9 -1
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +2 -1
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte +2 -1
- package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +9 -1
- package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridTableEe.svelte +2 -1
- package/package/components/apps/components/display/table/AppAggridTableEe.svelte.d.ts +1 -0
- package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -1
- package/package/components/apps/components/inputs/AppDateInput.svelte +1 -0
- package/package/components/apps/editor/AppEditor.svelte +6 -1
- package/package/components/apps/editor/AppEditorHeader.svelte +12 -8
- package/package/components/apps/editor/AppJobsDrawer.svelte +5 -5
- package/package/components/apps/editor/component/ComponentInner.svelte +4 -0
- package/package/components/apps/editor/component/components.d.ts +16 -0
- package/package/components/apps/editor/component/components.js +17 -1
- package/package/components/apps/editor/settingsPanel/AGChartRichEditor.svelte.d.ts +3 -3
- package/package/components/apps/editor/settingsPanel/CSSMigrationModal.svelte.d.ts +3 -3
- package/package/components/apps/editor/settingsPanel/ChartJSRichEditor.svelte.d.ts +3 -3
- package/package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +23 -23
- package/package/components/apps/editor/settingsPanel/EventHandlers.svelte +7 -2
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -0
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +2 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/DBTableSelect.svelte.d.ts +3 -3
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +10 -0
- package/package/components/apps/inputType.d.ts +2 -2
- package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
- package/package/components/common/button/ConnectionButton.svelte +12 -14
- package/package/components/common/button/ConnectionButton.svelte.d.ts +5 -18
- package/package/components/copilot/AIFormAssistant.svelte.d.ts +3 -3
- package/package/components/copilot/AIFormSettings.svelte.d.ts +3 -3
- package/package/components/copilot/FlowInlineScriptAIButton.svelte.d.ts +3 -3
- package/package/components/copilot/StepInputsGen.svelte +1 -1
- package/package/components/copilot/TestAIKey.svelte.d.ts +3 -3
- package/package/components/copilot/chat/AIChat.svelte.d.ts +3 -3
- package/package/components/copilot/chat/AIChatDisplay.svelte.d.ts +3 -3
- package/package/components/copilot/chat/AIChatInlineWidget.svelte.d.ts +3 -3
- package/package/components/copilot/chat/AIChatInput.svelte.d.ts +3 -3
- package/package/components/copilot/chat/AIChatMessage.svelte.d.ts +3 -3
- package/package/components/copilot/chat/ContextElementBadge.svelte +2 -2
- package/package/components/copilot/chat/flow/AIChangesWarningModal.svelte.d.ts +3 -3
- package/package/components/copilot/chat/flow/FlowAIButton.svelte.d.ts +3 -3
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +4 -1
- package/package/components/copilot/chat/flow/FlowAIChat.svelte.d.ts +3 -3
- package/package/components/copilot/chat/script/CodeDisplay.svelte +30 -9
- package/package/components/copilot/chat/script/core.d.ts +2 -1
- package/package/components/copilot/chat/script/core.js +6 -1
- package/package/components/details/DetailPageLayout.svelte +11 -3
- package/package/components/details/DetailPageLayout.svelte.d.ts +1 -0
- package/package/components/flows/content/DynamicInputHelpBox.svelte +4 -4
- package/package/components/flows/content/FlowInput.svelte +1 -1
- package/package/components/flows/content/FlowInputsQuick.svelte +1 -1
- package/package/components/flows/content/FlowLoop.svelte +143 -10
- package/package/components/flows/conversations/FlowChatInterface.svelte +110 -0
- package/package/components/flows/{FlowChatInterface.svelte.d.ts → conversations/FlowChatInterface.svelte.d.ts} +1 -1
- package/package/components/flows/conversations/FlowChatManager.svelte.d.ts +52 -0
- package/package/components/flows/conversations/FlowChatManager.svelte.js +422 -0
- package/package/components/flows/conversations/FlowChatMessage.svelte +68 -0
- package/package/components/flows/{FlowChatMessage.svelte.d.ts → conversations/FlowChatMessage.svelte.d.ts} +2 -4
- package/package/components/flows/{FlowConversationsSidebar.svelte → conversations/FlowConversationsSidebar.svelte} +6 -6
- package/package/components/flows/flowInfers.js +1 -1
- package/package/components/flows/scheduleUtils.js +2 -1
- package/package/components/graph/renderers/nodes/AIToolNode.svelte.d.ts +3 -3
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte.d.ts +3 -3
- package/package/components/icons/CACertificate.svelte.d.ts +3 -3
- package/package/components/icons/MSSqlServerIcon.svelte.d.ts +3 -3
- package/package/components/icons/MSTeamsIcon.svelte.d.ts +3 -3
- package/package/components/icons/OracleDBIcon.svelte.d.ts +3 -3
- package/package/components/icons/PHPIcon.svelte.d.ts +3 -3
- package/package/components/icons/QRCodeIcon.svelte.d.ts +3 -3
- package/package/components/instanceSettings.js +11 -2
- package/package/components/runs/JobsLoader.svelte +3 -3
- package/package/components/runs/RunRow.svelte +1 -1
- package/package/components/schema/SchemaFormDND.svelte.d.ts +3 -3
- package/package/components/settings/AIUserSettings.svelte.d.ts +3 -3
- package/package/components/sidebar/SidebarContent.svelte +2 -2
- package/package/components/text_input/TextInput.svelte.d.ts +1 -1
- package/package/components/triggers/http/OpenAPISpecGenerator.svelte.d.ts +3 -3
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +42 -1
- package/package/components/vscode.js +16 -12
- package/package/components/wizards/ChartJSWizard.svelte.d.ts +3 -3
- package/package/components/wizards/DBExplorerWizard.svelte.d.ts +3 -3
- package/package/components/wizards/LoggedWizardResult.svelte +95 -0
- package/package/components/wizards/LoggedWizardResult.svelte.d.ts +17 -0
- package/package/components/workspaceSettings/AISettings.svelte.d.ts +3 -3
- package/package/components/workspaceSettings/DucklakeSettings.svelte +223 -89
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +73 -5
- package/package/gen/schemas.gen.js +73 -5
- package/package/gen/services.gen.d.ts +8 -8
- package/package/gen/services.gen.js +14 -12
- package/package/gen/types.gen.d.ts +69 -18
- package/package/svelte5Utils.svelte.d.ts +1 -0
- package/package/svelte5Utils.svelte.js +6 -0
- package/package/utils.js +2 -5
- package/package.json +11 -13
- package/package/components/flows/FlowChatInterface.svelte +0 -404
- package/package/components/flows/FlowChatMessage.svelte +0 -41
- package/package/components/meltComponents/Menubar.svelte.d.ts +0 -503
- /package/package/components/flows/{FlowConversationsSidebar.svelte.d.ts → conversations/FlowConversationsSidebar.svelte.d.ts} +0 -0
|
@@ -8,6 +8,6 @@ interface Props {
|
|
|
8
8
|
storedToolCallJobs?: Record<number, Job>;
|
|
9
9
|
onToolJobLoaded?: (job: Job, idx: number) => void;
|
|
10
10
|
}
|
|
11
|
-
declare const
|
|
12
|
-
type
|
|
13
|
-
export default
|
|
11
|
+
declare const AIAgentLogViewer: import("svelte").Component<Props, {}, "">;
|
|
12
|
+
type AIAgentLogViewer = ReturnType<typeof AIAgentLogViewer>;
|
|
13
|
+
export default AIAgentLogViewer;
|
|
@@ -10,6 +10,6 @@ interface Props {
|
|
|
10
10
|
disabled?: boolean;
|
|
11
11
|
actions?: Snippet;
|
|
12
12
|
}
|
|
13
|
-
declare const
|
|
14
|
-
type
|
|
15
|
-
export default
|
|
13
|
+
declare const AIProviderPicker: import("svelte").Component<Props, {}, "value">;
|
|
14
|
+
type AIProviderPicker = ReturnType<typeof AIProviderPicker>;
|
|
15
|
+
export default AIProviderPicker;
|
|
@@ -1125,6 +1125,8 @@ onDestroy(() => {
|
|
|
1125
1125
|
{:else if inputCat == 'date'}
|
|
1126
1126
|
{#if format === 'date'}
|
|
1127
1127
|
<DateInput {disabled} {autofocus} bind:value dateFormat={extra?.['dateFormat']} />
|
|
1128
|
+
{:else if format === 'naive-date-time'}
|
|
1129
|
+
<DateTimeInput {disabled} useDropdown {autofocus} bind:value timezone="naive" />
|
|
1128
1130
|
{:else}
|
|
1129
1131
|
<DateTimeInput {disabled} useDropdown {autofocus} bind:value />
|
|
1130
1132
|
{/if}
|
|
@@ -16,6 +16,6 @@ type Props = {
|
|
|
16
16
|
selectedSchemaKey?: string;
|
|
17
17
|
}) => DBTableEditorProps;
|
|
18
18
|
};
|
|
19
|
-
declare const
|
|
20
|
-
type
|
|
21
|
-
export default
|
|
19
|
+
declare const DBManager: import("svelte").Component<Props, {}, "">;
|
|
20
|
+
type DBManager = ReturnType<typeof DBManager>;
|
|
21
|
+
export default DBManager;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type DbInput } from './dbOps';
|
|
2
|
-
declare const
|
|
2
|
+
declare const DBManagerDrawer: import("svelte").Component<Record<string, never>, {
|
|
3
3
|
openDrawer: (nInput: DbInput) => void;
|
|
4
4
|
closeDrawer: () => void;
|
|
5
5
|
}, "">;
|
|
6
|
-
type
|
|
7
|
-
export default
|
|
6
|
+
type DBManagerDrawer = ReturnType<typeof DBManagerDrawer>;
|
|
7
|
+
export default DBManagerDrawer;
|
|
@@ -2,6 +2,6 @@ import { type DBSchema } from '../stores';
|
|
|
2
2
|
type Props = {
|
|
3
3
|
dbSchema: DBSchema;
|
|
4
4
|
};
|
|
5
|
-
declare const
|
|
6
|
-
type
|
|
7
|
-
export default
|
|
5
|
+
declare const DBSchemaExplorer: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type DBSchemaExplorer = ReturnType<typeof DBSchemaExplorer>;
|
|
7
|
+
export default DBSchemaExplorer;
|
|
@@ -5,6 +5,6 @@ import './apps/components/display/table/theme/windmill-theme.css';
|
|
|
5
5
|
type Props = {
|
|
6
6
|
dbTableOps: IDbTableOps;
|
|
7
7
|
};
|
|
8
|
-
declare const
|
|
9
|
-
type
|
|
10
|
-
export default
|
|
8
|
+
declare const DBTable: import("svelte").Component<Props, {}, "">;
|
|
9
|
+
type DBTable = ReturnType<typeof DBTable>;
|
|
10
|
+
export default DBTable;
|
|
@@ -46,10 +46,11 @@ import { twMerge } from 'tailwind-merge';
|
|
|
46
46
|
import DarkModeObserver from './DarkModeObserver.svelte';
|
|
47
47
|
import Select from './select/Select.svelte';
|
|
48
48
|
import { safeSelectItems } from './select/utils.svelte';
|
|
49
|
+
import TextInput from './text_input/TextInput.svelte';
|
|
49
50
|
const { onConfirm, dbType, previewSql, dbSchema, currentSchema } = $props();
|
|
50
51
|
const columnTypes = DB_TYPES[dbType];
|
|
51
52
|
const defaultColumnType = {
|
|
52
|
-
postgresql: '
|
|
53
|
+
postgresql: 'BIGSERIAL',
|
|
53
54
|
snowflake: 'varchar',
|
|
54
55
|
ms_sql_server: 'varchar',
|
|
55
56
|
bigquery: 'string',
|
|
@@ -83,9 +84,8 @@ let darkMode = $state(false);
|
|
|
83
84
|
<div class="flex-1 overflow-y-auto flex flex-col gap-6">
|
|
84
85
|
<label>
|
|
85
86
|
Name
|
|
86
|
-
<
|
|
87
|
-
type
|
|
88
|
-
placeholder="my_table"
|
|
87
|
+
<TextInput
|
|
88
|
+
inputProps={{ type: 'text', placeholder: 'my_table' }}
|
|
89
89
|
class={errors?.name ? 'border !border-red-600/60' : ''}
|
|
90
90
|
bind:value={values.name}
|
|
91
91
|
/>
|
|
@@ -106,12 +106,9 @@ let darkMode = $state(false);
|
|
|
106
106
|
{#each values.columns as column, i}
|
|
107
107
|
<tr>
|
|
108
108
|
<Cell first>
|
|
109
|
-
<
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
(errors?.columns?.includes(column.name) ? 'border !border-red-600/60' : '')}
|
|
113
|
-
style="height: 2rem;"
|
|
114
|
-
placeholder="column_name"
|
|
109
|
+
<TextInput
|
|
110
|
+
error={errors?.columns?.includes(column.name)}
|
|
111
|
+
inputProps={{ type: 'text', placeholder: 'column_name' }}
|
|
115
112
|
bind:value={column.name}
|
|
116
113
|
/>
|
|
117
114
|
</Cell>
|
|
@@ -164,8 +161,8 @@ let darkMode = $state(false);
|
|
|
164
161
|
</label>
|
|
165
162
|
{#if !column.primaryKey}
|
|
166
163
|
<label class="flex gap-2 items-center text-xs">
|
|
167
|
-
<input type="checkbox" class="!w-4 !h-4" bind:checked={column.
|
|
168
|
-
|
|
164
|
+
<input type="checkbox" class="!w-4 !h-4" bind:checked={column.nullable} />
|
|
165
|
+
Nullable
|
|
169
166
|
</label>
|
|
170
167
|
{/if}
|
|
171
168
|
{/snippet}
|
|
@@ -8,6 +8,6 @@ export type DBTableEditorProps = {
|
|
|
8
8
|
import { type DbType } from './apps/components/display/dbtable/utils';
|
|
9
9
|
import { type CreateTableValues } from './apps/components/display/dbtable/queries/createTable';
|
|
10
10
|
import { type DBSchema } from '../stores';
|
|
11
|
-
declare const
|
|
12
|
-
type
|
|
13
|
-
export default
|
|
11
|
+
declare const DBTableEditor: import("svelte").Component<DBTableEditorProps, {}, "">;
|
|
12
|
+
type DBTableEditor = ReturnType<typeof DBTableEditor>;
|
|
13
|
+
export default DBTableEditor;
|
|
@@ -6,23 +6,26 @@ import { Clock, X } from 'lucide-svelte';
|
|
|
6
6
|
import { twMerge } from 'tailwind-merge';
|
|
7
7
|
import { createDispatcherIfMounted } from '../createDispatcherIfMounted';
|
|
8
8
|
import { inputBaseClass, inputBorderClass } from './text_input/TextInput.svelte';
|
|
9
|
-
let { value = $bindable(undefined), clearable = false, autofocus = false, useDropdown = false, minDate = undefined, maxDate = undefined, disabled = undefined, inputClass = undefined } = $props();
|
|
9
|
+
let { value = $bindable(undefined), clearable = false, autofocus = false, useDropdown = false, minDate = undefined, maxDate = undefined, disabled = undefined, inputClass = undefined, timezone = 'local' } = $props();
|
|
10
10
|
let date = $state(undefined);
|
|
11
11
|
let time = $state(undefined);
|
|
12
12
|
// let format: 'local' | 'utc' = 'local'
|
|
13
13
|
function parseValue(value = undefined) {
|
|
14
14
|
let dateFromValue = value ? new Date(value) : undefined;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
15
|
+
if (!isValidDate(dateFromValue)) {
|
|
16
|
+
date = undefined;
|
|
17
|
+
time = '12:00';
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
let year = timezone === 'local' ? dateFromValue?.getFullYear() : dateFromValue?.getUTCFullYear();
|
|
21
|
+
let month = timezone === 'local' ? dateFromValue?.getMonth() : dateFromValue?.getUTCMonth();
|
|
22
|
+
let day = timezone === 'local' ? dateFromValue?.getDate() : dateFromValue?.getUTCDate();
|
|
23
|
+
let hours = timezone === 'local' ? dateFromValue.getHours() : dateFromValue.getUTCHours();
|
|
24
|
+
let minutes = timezone === 'local' ? dateFromValue.getMinutes() : dateFromValue.getUTCMinutes();
|
|
25
|
+
date = `${year.toString()}-${(month + 1)
|
|
26
|
+
.toString()
|
|
27
|
+
.padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
|
|
28
|
+
time = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;
|
|
26
29
|
}
|
|
27
30
|
$effect(() => {
|
|
28
31
|
value;
|
|
@@ -34,7 +37,7 @@ let initialDate = untrack(() => date);
|
|
|
34
37
|
let initialTime = untrack(() => time);
|
|
35
38
|
function parseDateAndTime(date, time) {
|
|
36
39
|
if (date && time && (initialDate != date || initialTime != time)) {
|
|
37
|
-
let newDate = new Date(`${date}T${time}`);
|
|
40
|
+
let newDate = new Date(timezone === 'local' ? `${date}T${time}` : `${date}T${time}Z`);
|
|
38
41
|
if (newDate.toString() === 'Invalid Date')
|
|
39
42
|
return;
|
|
40
43
|
if (newDate.getFullYear() < 1900)
|
|
@@ -57,6 +60,9 @@ const dispatch = createEventDispatcher();
|
|
|
57
60
|
const dispatchIfMounted = createDispatcherIfMounted(dispatch);
|
|
58
61
|
function setTimeLater(mins) {
|
|
59
62
|
let newDate = new Date();
|
|
63
|
+
if (timezone === 'naive') {
|
|
64
|
+
newDate.setMinutes(newDate.getMinutes() - newDate.getTimezoneOffset());
|
|
65
|
+
}
|
|
60
66
|
newDate.setMinutes(newDate.getMinutes() + mins);
|
|
61
67
|
value = newDate.toISOString();
|
|
62
68
|
dispatch('change', value);
|
|
@@ -7,6 +7,11 @@ interface Props {
|
|
|
7
7
|
maxDate?: string | undefined;
|
|
8
8
|
disabled?: boolean | undefined;
|
|
9
9
|
inputClass?: string | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* 'naive' will ignore timezone and return a date without timezone
|
|
12
|
+
* 'local' will use the local timezone of the user
|
|
13
|
+
*/
|
|
14
|
+
timezone?: 'naive' | 'local';
|
|
10
15
|
}
|
|
11
16
|
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> {
|
|
12
17
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script lang="ts">import { WorkspaceService } from '../gen';
|
|
2
|
+
import { workspaceStore } from '../stores';
|
|
3
|
+
import Select from './select/Select.svelte';
|
|
4
|
+
import DbManagerDrawer from './DBManagerDrawer.svelte';
|
|
5
|
+
import ExploreAssetButton, { assetCanBeExplored } from './ExploreAssetButton.svelte';
|
|
6
|
+
import { usePromise } from '../svelte5Utils.svelte';
|
|
7
|
+
let { value = $bindable(undefined), disabled = false, disablePortal = false, showSchemaExplorer = false, placeholder = undefined, selectInputClass = '', class: className = '', onClear = undefined } = $props();
|
|
8
|
+
let ducklakes = usePromise(() => WorkspaceService.listDucklakes({ workspace: $workspaceStore ?? '' }));
|
|
9
|
+
let dbManagerDrawer = $state();
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<div class={className}>
|
|
13
|
+
<Select
|
|
14
|
+
items={ducklakes.value?.map((d) => ({ value: d })) ?? []}
|
|
15
|
+
bind:value
|
|
16
|
+
loading={ducklakes.status === 'loading'}
|
|
17
|
+
{disabled}
|
|
18
|
+
{disablePortal}
|
|
19
|
+
{placeholder}
|
|
20
|
+
inputClass={selectInputClass}
|
|
21
|
+
{onClear}
|
|
22
|
+
/>
|
|
23
|
+
{#if showSchemaExplorer && value && assetCanBeExplored({ kind: 'ducklake', path: value })}
|
|
24
|
+
<ExploreAssetButton
|
|
25
|
+
class="mt-1 w-fit"
|
|
26
|
+
asset={{ kind: 'ducklake', path: value }}
|
|
27
|
+
{dbManagerDrawer}
|
|
28
|
+
/>
|
|
29
|
+
{/if}
|
|
30
|
+
|
|
31
|
+
<DbManagerDrawer bind:this={dbManagerDrawer} />
|
|
32
|
+
</div>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
value?: string | undefined;
|
|
3
|
+
disabled?: boolean;
|
|
4
|
+
disablePortal?: boolean;
|
|
5
|
+
showSchemaExplorer?: boolean;
|
|
6
|
+
placeholder?: string | undefined;
|
|
7
|
+
selectInputClass?: string;
|
|
8
|
+
class?: string;
|
|
9
|
+
onClear?: () => void;
|
|
10
|
+
}
|
|
11
|
+
declare const DucklakePicker: import("svelte").Component<Props, {}, "value">;
|
|
12
|
+
type DucklakePicker = ReturnType<typeof DucklakePicker>;
|
|
13
|
+
export default DucklakePicker;
|
|
@@ -1381,8 +1381,8 @@ $effect(() => {
|
|
|
1381
1381
|
});
|
|
1382
1382
|
$effect(() => {
|
|
1383
1383
|
if (yContent && awareness && model && editor) {
|
|
1384
|
-
monacoBinding && monacoBinding.destroy();
|
|
1385
1384
|
untrack(() => {
|
|
1385
|
+
monacoBinding && monacoBinding.destroy();
|
|
1386
1386
|
monacoBinding = new MonacoBinding(yContent, model, new Set([editor]), awareness);
|
|
1387
1387
|
});
|
|
1388
1388
|
}
|
|
@@ -55,7 +55,14 @@ let showContextVarPicker = $derived([
|
|
|
55
55
|
'csharp',
|
|
56
56
|
'nu',
|
|
57
57
|
'java',
|
|
58
|
-
'ruby'
|
|
58
|
+
'ruby',
|
|
59
|
+
'postgresql',
|
|
60
|
+
'mysql',
|
|
61
|
+
'bigquery',
|
|
62
|
+
'mssql',
|
|
63
|
+
'oracledb',
|
|
64
|
+
'snowflake',
|
|
65
|
+
'duckdb'
|
|
59
66
|
// for related places search: ADD_NEW_LANG
|
|
60
67
|
].includes(lang ?? ''));
|
|
61
68
|
let showVarPicker = $derived([
|
|
@@ -347,6 +354,12 @@ function windmillPathToCamelCaseName(path) {
|
|
|
347
354
|
// for related places search: ADD_NEW_LANG
|
|
348
355
|
} else if (lang == 'ruby') {
|
|
349
356
|
editor.insertAtCursor(`ENV['${name}']`)
|
|
357
|
+
} else if (
|
|
358
|
+
['postgresql', 'mysql', 'bigquery', 'mssql', 'oracledb', 'snowflake', 'duckdb'].includes(
|
|
359
|
+
lang ?? ''
|
|
360
|
+
)
|
|
361
|
+
) {
|
|
362
|
+
editor.insertAtCursor(`%%${name}%%`)
|
|
350
363
|
}
|
|
351
364
|
sendUserToast(`${name} inserted at cursor`)
|
|
352
365
|
}}
|
|
@@ -30,7 +30,7 @@ let [editorWidth, editorHeight] = $derived([
|
|
|
30
30
|
<div
|
|
31
31
|
bind:clientWidth
|
|
32
32
|
bind:clientHeight
|
|
33
|
-
class="h-full w-full relative editor
|
|
33
|
+
class="h-full w-full relative editor {className}"
|
|
34
34
|
style="--vscode-editorCodeLens-lineHeight: 18px; --vscode-editorCodeLens-fontSize: 12px; --vscode-editorCodeLens-fontFeatureSettings: 'liga' off, 'calt' off; --code-editorInlayHintsFontFamily: {fontFamily};"
|
|
35
35
|
>
|
|
36
36
|
<div
|
|
@@ -20,7 +20,7 @@ import FlowHistoryJobPicker from './FlowHistoryJobPicker.svelte';
|
|
|
20
20
|
import { getStepHistoryLoaderContext } from './stepHistoryLoader.svelte';
|
|
21
21
|
import { aiChatManager } from './copilot/chat/AIChatManager.svelte';
|
|
22
22
|
import { stateSnapshot } from '../svelte5Utils.svelte';
|
|
23
|
-
import FlowChatInterface from './flows/FlowChatInterface.svelte';
|
|
23
|
+
import FlowChatInterface from './flows/conversations/FlowChatInterface.svelte';
|
|
24
24
|
let { previewMode = $bindable(), open, preventEscape = $bindable(false), jobId = $bindable(undefined), job = $bindable(undefined), initial = $bindable(false), selectedJobStep = $bindable(undefined), selectedJobStepIsTopLevel = $bindable(undefined), selectedJobStepType = $bindable('single'), rightColumnSelect = $bindable('timeline'), branchOrIterationN = $bindable(0), scrollTop = $bindable(0), localModuleStates = $bindable({}), localDurationStatuses = $bindable({}), onRunPreview, render = false, onJobDone, upToId = undefined } = $props();
|
|
25
25
|
let restartBranchNames = [];
|
|
26
26
|
let isRunning = $state(false);
|
|
@@ -17,10 +17,7 @@ import { Button } from './common';
|
|
|
17
17
|
import { copyToClipboard } from '../utils';
|
|
18
18
|
import { ClipboardCopy } from 'lucide-svelte';
|
|
19
19
|
import HighlightTheme from './HighlightTheme.svelte';
|
|
20
|
-
|
|
21
|
-
export let language;
|
|
22
|
-
export let highlightLanguage = undefined;
|
|
23
|
-
export let lines = false;
|
|
20
|
+
let { code = '', language, highlightLanguage = undefined, lines = false, className = '', onApplyCode = undefined, showApplyButton = false, applyButtonIcon = undefined } = $props();
|
|
24
21
|
function getLang(lang) {
|
|
25
22
|
switch (lang) {
|
|
26
23
|
case 'python3':
|
|
@@ -69,12 +66,12 @@ function getLang(lang) {
|
|
|
69
66
|
return java;
|
|
70
67
|
case 'ruby':
|
|
71
68
|
return ruby;
|
|
72
|
-
// for related places search: ADD_NEW_LANG
|
|
69
|
+
// for related places search: ADD_NEW_LANG
|
|
73
70
|
default:
|
|
74
71
|
return typescript;
|
|
75
72
|
}
|
|
76
73
|
}
|
|
77
|
-
|
|
74
|
+
const lang = $derived(highlightLanguage ?? getLang(language));
|
|
78
75
|
</script>
|
|
79
76
|
|
|
80
77
|
<HighlightTheme />
|
|
@@ -82,25 +79,39 @@ $: lang = highlightLanguage ?? getLang(language);
|
|
|
82
79
|
<div class="relative">
|
|
83
80
|
<Button
|
|
84
81
|
wrapperClasses="absolute top-2 right-2 z-20"
|
|
85
|
-
|
|
82
|
+
onclick={() => copyToClipboard(code)}
|
|
86
83
|
color="light"
|
|
87
84
|
size="xs2"
|
|
88
85
|
startIcon={{
|
|
89
86
|
icon: ClipboardCopy
|
|
90
87
|
}}
|
|
91
88
|
iconOnly
|
|
89
|
+
title="Copy to clipboard"
|
|
92
90
|
/>
|
|
91
|
+
{#if showApplyButton}
|
|
92
|
+
<Button
|
|
93
|
+
wrapperClasses="absolute top-2 right-10 z-20"
|
|
94
|
+
onclick={onApplyCode}
|
|
95
|
+
color="light"
|
|
96
|
+
size="xs2"
|
|
97
|
+
startIcon={{
|
|
98
|
+
icon: applyButtonIcon
|
|
99
|
+
}}
|
|
100
|
+
iconOnly
|
|
101
|
+
title="Apply code"
|
|
102
|
+
/>
|
|
103
|
+
{/if}
|
|
93
104
|
<div class="overflow-x-auto">
|
|
94
105
|
{#if code?.length < 10000}
|
|
95
106
|
{#if !lines}
|
|
96
|
-
<Highlight class="nowrap {
|
|
107
|
+
<Highlight class="nowrap {className}" language={lang} {code} />
|
|
97
108
|
{:else}
|
|
98
|
-
<Highlight class="nowrap {
|
|
109
|
+
<Highlight class="nowrap {className}" language={lang} {code} let:highlighted>
|
|
99
110
|
<LineNumbers {highlighted} />
|
|
100
111
|
</Highlight>
|
|
101
112
|
{/if}
|
|
102
113
|
{:else}
|
|
103
|
-
<pre class="overflow-auto max-h-screen text-xs {
|
|
114
|
+
<pre class="overflow-auto max-h-screen text-xs {className}"
|
|
104
115
|
><code class="language-{language}">{code}</code></pre
|
|
105
116
|
>
|
|
106
117
|
{/if}
|
|
@@ -1,26 +1,16 @@
|
|
|
1
1
|
import type { Script } from '../gen';
|
|
2
|
+
import { ClipboardCopy } from 'lucide-svelte';
|
|
2
3
|
import type { LanguageType } from 'svelte-highlight/languages';
|
|
3
|
-
interface
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
} & Exports;
|
|
7
|
-
(internal: unknown, props: Props & {
|
|
8
|
-
$$events?: Events;
|
|
9
|
-
$$slots?: Slots;
|
|
10
|
-
}): Exports & {
|
|
11
|
-
$set?: any;
|
|
12
|
-
$on?: any;
|
|
13
|
-
};
|
|
14
|
-
z_$$bindings?: Bindings;
|
|
15
|
-
}
|
|
16
|
-
declare const HighlightCode: $$__sveltets_2_IsomorphicComponent<{
|
|
17
|
-
[x: string]: any;
|
|
18
|
-
code?: string | undefined;
|
|
19
|
-
language: Script["language"] | "bunnative" | "frontend" | undefined;
|
|
4
|
+
interface Props {
|
|
5
|
+
code?: string;
|
|
6
|
+
language: Script['language'] | 'bunnative' | 'frontend' | undefined;
|
|
20
7
|
highlightLanguage?: LanguageType<string> | undefined;
|
|
21
|
-
lines?: boolean
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
8
|
+
lines?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
onApplyCode?: () => void;
|
|
11
|
+
showApplyButton?: boolean;
|
|
12
|
+
applyButtonIcon?: typeof ClipboardCopy;
|
|
13
|
+
}
|
|
14
|
+
declare const HighlightCode: import("svelte").Component<Props, {}, "">;
|
|
15
|
+
type HighlightCode = ReturnType<typeof HighlightCode>;
|
|
26
16
|
export default HighlightCode;
|
|
@@ -32,7 +32,6 @@ import { inputBorderClass } from './text_input/TextInput.svelte';
|
|
|
32
32
|
let { schema = $bindable(), arg = $bindable(), argName = $bindable(), headerTooltip = undefined, headerTooltipIconClass = '', HeaderTooltipIcon = InfoIcon, extraLib = $bindable('missing extraLib'), inputCheck = $bindable(true), previousModuleId, pickForField = $bindable(undefined), variableEditor = undefined, itemPicker = undefined, noDynamicToggle = false, argExtra = {}, pickableProperties = undefined, enableAi = false, hideHelpButton = false, class: className = '', editor = $bindable(undefined), otherArgs = {}, helperScript = undefined } = $props();
|
|
33
33
|
let monaco = $state(undefined);
|
|
34
34
|
let monacoTemplate = $state(undefined);
|
|
35
|
-
let argInput = $state(undefined);
|
|
36
35
|
let focusedPrev = false;
|
|
37
36
|
let hidden = $state(false);
|
|
38
37
|
const variableMatch = (value) => value.match(/^variable\('([^']+)'\)$/);
|
|
@@ -210,6 +209,7 @@ function connectProperty(rawValue) {
|
|
|
210
209
|
monaco?.setCode(arg.expr);
|
|
211
210
|
}
|
|
212
211
|
}
|
|
212
|
+
// This only works if every fields are static, as we can't eval javascript
|
|
213
213
|
function handleFieldVisibility(schema, arg, otherArgs) {
|
|
214
214
|
const schemaProperty = schema?.properties?.[argName];
|
|
215
215
|
if (schemaProperty?.showExpr) {
|
|
@@ -219,14 +219,18 @@ function handleFieldVisibility(schema, arg, otherArgs) {
|
|
|
219
219
|
const contextArgs = {
|
|
220
220
|
[argName]: currentValue
|
|
221
221
|
};
|
|
222
|
+
let hasJavascript = false;
|
|
222
223
|
// Extract values from InputTransform objects in otherArgs
|
|
223
224
|
Object.keys(otherArgs ?? {}).forEach((key) => {
|
|
225
|
+
if (otherArgs[key].type === 'javascript') {
|
|
226
|
+
hasJavascript = true;
|
|
227
|
+
}
|
|
224
228
|
const otherArg = otherArgs[key];
|
|
225
229
|
const otherArgValue = otherArg.type === 'static' ? otherArg.value : otherArg.expr;
|
|
226
230
|
contextArgs[key] = otherArgValue;
|
|
227
231
|
});
|
|
228
232
|
const shouldShow = computeShow(argName, schemaProperty.showExpr, contextArgs);
|
|
229
|
-
if (shouldShow) {
|
|
233
|
+
if (shouldShow || hasJavascript) {
|
|
230
234
|
hidden = false;
|
|
231
235
|
}
|
|
232
236
|
else if (!hidden) {
|
|
@@ -247,33 +251,6 @@ function handleFieldVisibility(schema, arg, otherArgs) {
|
|
|
247
251
|
}
|
|
248
252
|
function onFocus() {
|
|
249
253
|
focused = true;
|
|
250
|
-
if (isStaticTemplate(inputCat)) {
|
|
251
|
-
focusProp?.(argName, 'append', (path) => {
|
|
252
|
-
// Empty field + variable = use $var:/$res: syntax instead of ${...}
|
|
253
|
-
const isEmpty = !arg.value || arg.value.trim() === '';
|
|
254
|
-
if (isEmpty && variableMatch(path)) {
|
|
255
|
-
connectProperty(path);
|
|
256
|
-
return true;
|
|
257
|
-
}
|
|
258
|
-
else {
|
|
259
|
-
const toAppend = `\$\{${path}}`;
|
|
260
|
-
arg.value = `${arg.value ?? ''}${toAppend}`;
|
|
261
|
-
monacoTemplate?.setCode(arg.value);
|
|
262
|
-
setPropertyType(arg.value);
|
|
263
|
-
argInput?.focus();
|
|
264
|
-
return false;
|
|
265
|
-
}
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
focusProp?.(argName, 'insert', (path) => {
|
|
270
|
-
arg.expr = path;
|
|
271
|
-
arg.type = 'javascript';
|
|
272
|
-
propertyType = 'javascript';
|
|
273
|
-
monaco?.setCode(arg.expr);
|
|
274
|
-
return true;
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
254
|
}
|
|
278
255
|
let prevArg = undefined;
|
|
279
256
|
function onArgChange() {
|
|
@@ -347,7 +324,7 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
|
|
|
347
324
|
['s3object', 's3_object'].includes(schema?.properties?.[argName]?.items?.resourceType));
|
|
348
325
|
</script>
|
|
349
326
|
|
|
350
|
-
{#if arg != undefined}
|
|
327
|
+
{#if arg != undefined && !hidden}
|
|
351
328
|
<div class={twMerge('pt-2 pb-2 relative group', className)}>
|
|
352
329
|
<div class="flex flex-row justify-between gap-1 pb-1">
|
|
353
330
|
<div class="flex flex-wrap grow min-h-7 items-end">
|
|
@@ -588,7 +565,6 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
|
|
|
588
565
|
{resourceTypes}
|
|
589
566
|
noMargin
|
|
590
567
|
compact
|
|
591
|
-
bind:this={argInput}
|
|
592
568
|
on:focus={onFocus}
|
|
593
569
|
on:blur={() => {
|
|
594
570
|
focused = false
|
|
@@ -654,19 +630,11 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
|
|
|
654
630
|
renderLineHighlight="none"
|
|
655
631
|
hideLineNumbers
|
|
656
632
|
fakeMonacoPlaceholderClass="mt-2"
|
|
657
|
-
on:focus={() =>
|
|
658
|
-
|
|
659
|
-
focusProp?.(argName, 'insert', (path) => {
|
|
660
|
-
monaco?.insertAtCursor(path)
|
|
661
|
-
return false
|
|
662
|
-
})
|
|
663
|
-
}}
|
|
633
|
+
on:focus={() => (focused = true)}
|
|
634
|
+
on:blur={() => (focused = false)}
|
|
664
635
|
on:change={() => {
|
|
665
636
|
dispatch('change', { argName, arg })
|
|
666
637
|
}}
|
|
667
|
-
on:blur={() => {
|
|
668
|
-
focused = false
|
|
669
|
-
}}
|
|
670
638
|
autoHeight
|
|
671
639
|
loadAsync
|
|
672
640
|
/>
|
|
@@ -1020,12 +1020,7 @@ function handleChannelChange(channel, i) {
|
|
|
1020
1020
|
bind:value={$values[setting.key]}
|
|
1021
1021
|
/>
|
|
1022
1022
|
{:else if setting.fieldType == 'password'}
|
|
1023
|
-
<
|
|
1024
|
-
autocomplete="new-password"
|
|
1025
|
-
type="password"
|
|
1026
|
-
placeholder={setting.placeholder}
|
|
1027
|
-
bind:value={$values[setting.key]}
|
|
1028
|
-
/>
|
|
1023
|
+
<Password small placeholder={setting.placeholder} bind:password={$values[setting.key]} />
|
|
1029
1024
|
{:else if setting.fieldType == 'boolean'}
|
|
1030
1025
|
<div class="mt-0.5">
|
|
1031
1026
|
<Toggle
|
|
@@ -149,7 +149,7 @@ run(() => {
|
|
|
149
149
|
}
|
|
150
150
|
});
|
|
151
151
|
run(() => {
|
|
152
|
-
canSave = can_write && isValid && jsonError == '';
|
|
152
|
+
canSave = (can_write && isValid && jsonError == '') || (viewJsonSchema && jsonError == '');
|
|
153
153
|
});
|
|
154
154
|
$effect(() => {
|
|
155
155
|
onChange && onChange({ path, args, description });
|
|
@@ -13,7 +13,6 @@ import { twMerge } from 'tailwind-merge';
|
|
|
13
13
|
import DropdownV2 from './DropdownV2.svelte';
|
|
14
14
|
let { initialValue = $bindable(undefined), value = $bindable(undefined), valueType = $bindable(undefined), resourceType = undefined, disabled = false, disablePortal = false, showSchemaExplorer = false, selectFirst = false, expressOAuthSetup = false, defaultValues = undefined, placeholder = undefined, selectInputClass = '', class: className = '', onClear = undefined, excludedValues = undefined } = $props();
|
|
15
15
|
if (initialValue && value == undefined) {
|
|
16
|
-
console.log('initialValue', initialValue);
|
|
17
16
|
value = initialValue;
|
|
18
17
|
}
|
|
19
18
|
onMount(() => {
|
|
@@ -35,17 +34,14 @@ onMount(() => {
|
|
|
35
34
|
$effect(() => {
|
|
36
35
|
if (value === undefined) {
|
|
37
36
|
if (initialValue) {
|
|
38
|
-
console.log('initialValue', initialValue);
|
|
39
37
|
if (initialValue != value) {
|
|
40
38
|
value = initialValue;
|
|
41
39
|
}
|
|
42
40
|
}
|
|
43
41
|
else {
|
|
44
|
-
console.log('no value');
|
|
45
42
|
}
|
|
46
43
|
}
|
|
47
44
|
else {
|
|
48
|
-
console.log('value', value);
|
|
49
45
|
}
|
|
50
46
|
});
|
|
51
47
|
let collection = $state(value ? [{ value, label: value, type: valueType }] : []);
|
|
@@ -76,7 +72,6 @@ async function loadResources(resourceType) {
|
|
|
76
72
|
}
|
|
77
73
|
collection = nc;
|
|
78
74
|
if (collection.length == 1 && selectFirst && (value == undefined || value == '')) {
|
|
79
|
-
console.log('selectFirst', collection[0].value);
|
|
80
75
|
value = collection[0].value;
|
|
81
76
|
valueType = collection[0].type;
|
|
82
77
|
}
|