windmill-components 1.291.4 → 1.305.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/autosize.d.ts +4 -0
- package/package/autosize.js +76 -0
- package/package/components/AppConnect.svelte +26 -7
- package/package/components/ArgInput.svelte +129 -103
- package/package/components/ContentSearch.svelte +8 -2
- package/package/components/ContextualVariableEditor.svelte +69 -0
- package/package/components/ContextualVariableEditor.svelte.d.ts +21 -0
- package/package/components/CronInput.svelte +3 -0
- package/package/components/DBSchemaExplorer.svelte +2 -2
- package/package/components/DarkModeObserver.svelte +2 -2
- package/package/components/DateTimeInput.svelte +9 -3
- package/package/components/DefaultScripts.svelte +1 -0
- package/package/components/DisplayResult.svelte +83 -41
- package/package/components/DisplayResult.svelte.d.ts +1 -0
- package/package/components/DurationMs.svelte +1 -10
- package/package/components/DurationMs.svelte.d.ts +0 -1
- package/package/components/Editor.svelte +40 -10
- package/package/components/ErrorOrRecoveryHandler.svelte +5 -2
- package/package/components/FlowBuilder.svelte +9 -5
- package/package/components/FlowBuilder.svelte.d.ts +1 -0
- package/package/components/FlowGraphViewerStep.svelte +5 -4
- package/package/components/FlowJobResult.svelte +36 -1
- package/package/components/FlowJobResult.svelte.d.ts +2 -1
- package/package/components/FlowLoopIterationPreview.svelte +18 -2
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +6 -0
- package/package/components/FlowStatusViewer.svelte +1 -1
- package/package/components/FlowStatusViewerInner.svelte +117 -44
- package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -0
- package/package/components/FlowStatusWaitingForEvents.svelte +97 -54
- package/package/components/GfmMarkdown.svelte +14 -0
- package/package/components/GfmMarkdown.svelte.d.ts +16 -0
- package/package/components/GroupEditor.svelte +1 -2
- package/package/components/HighlightCode.svelte +1 -1
- package/package/components/InputTransformForm.svelte +24 -2
- package/package/components/InstanceGroupEditor.svelte +1 -2
- package/package/components/InstanceSettings.svelte +4 -0
- package/package/components/JobArgs.svelte +5 -4
- package/package/components/JobArgs.svelte.d.ts +1 -0
- package/package/components/JobStatus.svelte +2 -8
- package/package/components/LightweightArgInput.svelte +3 -6
- package/package/components/LightweightArgInput.svelte.d.ts +0 -1
- package/package/components/LogId.svelte +3 -0
- package/package/components/LogId.svelte.d.ts +16 -0
- package/package/components/LogViewer.svelte +14 -5
- package/package/components/MapResult.svelte +151 -0
- package/package/components/MapResult.svelte.d.ts +27 -0
- package/package/components/MoveDrawer.svelte +2 -1
- package/package/components/ObjectStoreConfigSettings.svelte +169 -0
- package/package/components/ObjectStoreConfigSettings.svelte.d.ts +32 -0
- package/package/components/ParqetTableRenderer.svelte +3 -2
- package/package/components/ResourceEditor.svelte +33 -11
- package/package/components/RunChart.svelte +0 -1
- package/package/components/RunForm.svelte.d.ts +1 -1
- package/package/components/RunFormAdvancedPopup.svelte.d.ts +1 -1
- package/package/components/SavedInputs.svelte +1 -1
- package/package/components/ScriptBuilder.svelte +38 -8
- package/package/components/SimpleEditor.svelte +1 -3
- package/package/components/SimpleEditor.svelte.d.ts +0 -3
- package/package/components/SupabaseConnect.svelte +2 -2
- package/package/components/TableSimple.svelte +12 -1
- package/package/components/TableSimple.svelte.d.ts +1 -0
- package/package/components/TestConnection.svelte +29 -4
- package/package/components/TestConnection.svelte.d.ts +2 -0
- package/package/components/TestJobLoader.svelte +19 -2
- package/package/components/TestJobLoader.svelte.d.ts +3 -0
- package/package/components/UserSettings.svelte +5 -2
- package/package/components/UserSettings.svelte.d.ts +4 -0
- package/package/components/VariableEditor.svelte +2 -3
- package/package/components/WorkspaceGroup.svelte +10 -1
- package/package/components/apps/components/display/AppCustomComponent.svelte +3 -0
- package/package/components/apps/components/display/AppText.svelte +14 -19
- package/package/components/apps/components/display/PlotlyHtml.svelte +5 -1
- package/package/components/apps/components/display/PlotlyHtmlV2.svelte +4 -1
- package/package/components/apps/components/display/VegaLiteHtml.svelte +3 -3
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +18 -2
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +8 -5
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte.d.ts +2 -0
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +32 -18
- package/package/components/apps/components/display/dbtable/queries/count.js +2 -2
- package/package/components/apps/components/display/dbtable/queries/select.js +8 -6
- package/package/components/apps/components/display/dbtable/utils.d.ts +10 -5
- package/package/components/apps/components/display/dbtable/utils.js +83 -29
- package/package/components/apps/components/display/table/AppAggridTable.svelte +1 -1
- package/package/components/apps/components/display/table/AppTable.svelte +5 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -0
- package/package/components/apps/components/helpers/eval.d.ts +1 -0
- package/package/components/apps/components/inputs/AppFileInput.svelte +8 -1
- package/package/components/apps/editor/AppEditorHeader.svelte +1 -1
- package/package/components/apps/editor/GridEditorMenu.svelte +11 -1
- package/package/components/apps/editor/RunnableJobPanel.svelte +5 -30
- package/package/components/apps/editor/appUtils.js +2 -1
- package/package/components/apps/editor/component/components.d.ts +78 -78
- package/package/components/apps/editor/component/components.js +12 -12
- package/package/components/apps/editor/component/default-codes.js +5 -1
- package/package/components/apps/editor/componentsPanel/CssEval.svelte +0 -1
- package/package/components/apps/editor/componentsPanel/CssProperty.svelte +113 -109
- package/package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +14 -7
- package/package/components/apps/editor/componentsPanel/componentControlUtils.js +2 -0
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +2 -1
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +3 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +6 -0
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -0
- package/package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/GridPane.svelte +11 -15
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/StylePanel.svelte +40 -39
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +2 -0
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +0 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +13 -6
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +6 -2
- package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +1 -6
- package/package/components/apps/svelte-select/lib/Select.svelte.d.ts +2 -2
- package/package/components/apps/types.d.ts +1 -0
- package/package/components/apps/utils.js +3 -3
- package/package/components/build_workers.js +2 -1
- package/package/components/common/FileProgressBar.svelte +1 -1
- package/package/components/common/clearableInput/ClearableInput.svelte.d.ts +1 -1
- package/package/components/common/fileInput/FileInput.svelte +4 -0
- package/package/components/common/fileInput/FileInput.svelte.d.ts +2 -0
- package/package/components/common/modal/Modal.svelte +2 -0
- package/package/components/copilot/MetadataGen.svelte +17 -12
- package/package/components/copilot/MetadataGen.svelte.d.ts +1 -1
- package/package/components/copilot/ScriptGen.svelte +61 -27
- package/package/components/copilot/lib.d.ts +4 -1
- package/package/components/copilot/lib.js +46 -31
- package/package/components/copilot/prompts/edit.yaml +1 -0
- package/package/components/copilot/prompts/editPrompt.js +1 -1
- package/package/components/copilot/prompts/fix.yaml +1 -0
- package/package/components/copilot/prompts/fixPrompt.js +1 -1
- package/package/components/copilot/prompts/gen.yaml +1 -0
- package/package/components/copilot/prompts/genPrompt.js +1 -1
- package/package/components/details/WebhooksPanel.svelte +10 -3
- package/package/components/flows/content/FlowInputs.svelte +35 -36
- package/package/components/flows/content/FlowLoop.svelte +0 -1
- package/package/components/flows/content/FlowModuleComponent.svelte +18 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +7 -0
- package/package/components/flows/content/FlowModuleWrapper.svelte +4 -1
- package/package/components/flows/content/FlowSettings.svelte +32 -4
- package/package/components/flows/content/FlowWhileLoop.svelte +137 -0
- package/package/components/flows/content/FlowWhileLoop.svelte.d.ts +19 -0
- package/package/components/flows/content/SuspendDrawer.svelte +4 -4
- package/package/components/flows/dfs.js +1 -1
- package/package/components/flows/flowExplorer.js +1 -1
- package/package/components/flows/flowStateUtils.d.ts +1 -0
- package/package/components/flows/flowStateUtils.js +12 -0
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +6 -2
- package/package/components/flows/map/InsertModuleButton.svelte +12 -0
- package/package/components/flows/map/MapItem.svelte +5 -5
- package/package/components/flows/map/MapItem.svelte.d.ts +1 -1
- package/package/components/flows/types.d.ts +1 -0
- package/package/components/flows/utils.d.ts +1 -0
- package/package/components/flows/utils.js +3 -0
- package/package/components/graph/FlowGraph.svelte +1 -1
- package/package/components/graph/model.d.ts +5 -2
- package/package/components/graph/svelvet/container/views/GraphView.svelte +2 -0
- package/package/components/home/Item.svelte +7 -2
- package/package/components/home/TreeView.svelte +4 -2
- package/package/components/home/TreeViewRoot.svelte +1 -1
- package/package/components/instanceSettings.d.ts +1 -1
- package/package/components/instanceSettings.js +12 -4
- package/package/components/jobs/JobPreview.svelte +1 -4
- package/package/components/propertyPicker/ObjectViewer.svelte +3 -0
- package/package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
- package/package/components/runs/JobLoader.svelte +3 -2
- package/package/components/runs/JobPreview.svelte +13 -7
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +6 -8
- package/package/components/settings/ChangeWorkspaceId.svelte +98 -0
- package/package/components/settings/ChangeWorkspaceId.svelte.d.ts +16 -0
- package/package/components/settings/ChangeWorkspaceName.svelte +71 -0
- package/package/components/settings/ChangeWorkspaceName.svelte.d.ts +16 -0
- package/package/components/settings/PremiumInfo.svelte +2 -1
- package/package/components/sidebar/OperatorMenu.svelte +3 -2
- package/package/components/sidebar/UserMenu.svelte +13 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +30 -1
- package/package/components/sidebar/changelogs.js +51 -1
- package/package/components/table/AutoDataTable.svelte +62 -41
- package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +2 -2
- package/package/es6.d.ts.txt +1 -12395
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/index.d.ts +2 -0
- package/package/gen/models/CacheTtl.d.ts +4 -0
- package/package/gen/models/CacheTtl.js +5 -0
- package/package/gen/models/ContextualVariable.d.ts +1 -0
- package/package/gen/models/CreateWorkspace.d.ts +1 -1
- package/package/gen/models/FlowMetadata.d.ts +1 -0
- package/package/gen/models/FlowModule.d.ts +2 -0
- package/package/gen/models/FlowModuleValue.d.ts +2 -1
- package/package/gen/models/FlowStatus.d.ts +1 -0
- package/package/gen/models/FlowValue.d.ts +1 -0
- package/package/gen/models/GitRepositorySettings.d.ts +2 -1
- package/package/gen/models/GlobalUserInfo.d.ts +1 -0
- package/package/gen/models/NewScript.d.ts +1 -0
- package/package/gen/models/OpenFlowWPath.d.ts +1 -0
- package/package/gen/models/Script.d.ts +1 -0
- package/package/gen/models/WhileloopFlow.d.ts +8 -0
- package/package/gen/models/WhileloopFlow.js +5 -0
- package/package/gen/models/WorkspaceGitSyncSettings.d.ts +1 -1
- package/package/gen/services/JobService.d.ts +74 -8
- package/package/gen/services/JobService.js +55 -8
- package/package/gen/services/ScheduleService.d.ts +5 -1
- package/package/gen/services/ScheduleService.js +2 -1
- package/package/gen/services/SettingService.d.ts +11 -0
- package/package/gen/services/SettingService.js +13 -0
- package/package/gen/services/UserService.d.ts +29 -1
- package/package/gen/services/UserService.js +30 -0
- package/package/gen/services/WorkspaceService.d.ts +57 -2
- package/package/gen/services/WorkspaceService.js +76 -0
- package/package/hub.d.ts +3 -3
- package/package/hub.js +6 -6
- package/package/infer.d.ts +1 -20
- package/package/infer.js +1 -95
- package/package/inferArgSig.d.ts +20 -0
- package/package/inferArgSig.js +95 -0
- package/package/script_helpers.d.ts +3 -3
- package/package/script_helpers.js +47 -7
- package/package/scripts.d.ts +2 -2
- package/package/scripts.js +4 -4
- package/package/stores.d.ts +4 -0
- package/package/stores.js +2 -0
- package/package/utils.js +1 -0
- package/package.json +3 -2
|
@@ -103,10 +103,10 @@ onMount(() => {
|
|
|
103
103
|
|
|
104
104
|
{#if component}
|
|
105
105
|
{#key component?.id}
|
|
106
|
-
<div class="px-2 flex
|
|
107
|
-
{#if
|
|
106
|
+
<div class="px-2 flex gap-1 flex-col w-full pb-4">
|
|
107
|
+
{#if !$cssEditorOpen}
|
|
108
108
|
<Button
|
|
109
|
-
color="
|
|
109
|
+
color="light"
|
|
110
110
|
size="xs2"
|
|
111
111
|
variant="border"
|
|
112
112
|
on:click={() => {
|
|
@@ -114,7 +114,7 @@ onMount(() => {
|
|
|
114
114
|
}}
|
|
115
115
|
>
|
|
116
116
|
<div class="flex flex-row gap-1 text-xs items-center">
|
|
117
|
-
Open
|
|
117
|
+
Open theme editor{$enterpriseLicense === undefined ? ' (EE only)' : ''}
|
|
118
118
|
<Tooltip light>
|
|
119
119
|
You can also use the App CSS Editor to customise the CSS of all components.
|
|
120
120
|
</Tooltip>
|
|
@@ -124,19 +124,18 @@ onMount(() => {
|
|
|
124
124
|
<div />
|
|
125
125
|
{/if}
|
|
126
126
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
</div>
|
|
127
|
+
{#if $enterpriseLicense !== undefined}
|
|
128
|
+
<Button
|
|
129
|
+
color="light"
|
|
130
|
+
size="xs2"
|
|
131
|
+
variant="border"
|
|
132
|
+
on:click={() => {
|
|
133
|
+
migrationModal?.open()
|
|
134
|
+
}}
|
|
135
|
+
>
|
|
136
|
+
Convert to global CSS
|
|
137
|
+
</Button>
|
|
138
|
+
{/if}
|
|
140
139
|
</div>
|
|
141
140
|
|
|
142
141
|
<Tabs bind:selected={tab}>
|
|
@@ -166,28 +165,30 @@ onMount(() => {
|
|
|
166
165
|
<svelte:fragment slot="content">
|
|
167
166
|
<TabContent value="local">
|
|
168
167
|
{#if component && component.customCss !== undefined}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
<
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
hasStyleValue(component.
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
168
|
+
<div class="flex-col flex gap-4 divide-y">
|
|
169
|
+
{#each Object.keys(ccomponents[component.type].customCss ?? {}) as name}
|
|
170
|
+
<div class="w-full">
|
|
171
|
+
<CssProperty
|
|
172
|
+
quickStyleProperties={quickStyleProperties?.[component.type]?.[name]}
|
|
173
|
+
forceStyle={ccomponents[component.type].customCss[name].style !== undefined}
|
|
174
|
+
forceClass={ccomponents[component.type].customCss[name].class !== undefined}
|
|
175
|
+
tooltip={ccomponents[component.type].customCss[name].tooltip}
|
|
176
|
+
{name}
|
|
177
|
+
wmClass={getSelector(name)}
|
|
178
|
+
componentType={component.type}
|
|
179
|
+
bind:value={component.customCss[name]}
|
|
180
|
+
on:change={() => app.set($app)}
|
|
181
|
+
shouldDisplayRight={hasStyleValue(component.customCss[name])}
|
|
182
|
+
on:right={() => {
|
|
183
|
+
copyLocalToGlobal(name, component?.customCss?.[name])
|
|
184
|
+
tab = 'global'
|
|
185
|
+
}}
|
|
186
|
+
overridding={hasStyleValue($app.css?.[component.type]?.[name]) &&
|
|
187
|
+
hasStyleValue(component.customCss[name])}
|
|
188
|
+
/>
|
|
189
|
+
</div>
|
|
190
|
+
{/each}
|
|
191
|
+
</div>
|
|
191
192
|
{/if}
|
|
192
193
|
</TabContent>
|
|
193
194
|
<TabContent value="global">
|
|
@@ -3,6 +3,7 @@ export let value;
|
|
|
3
3
|
export let componentInput;
|
|
4
4
|
export let subFieldType;
|
|
5
5
|
export let id;
|
|
6
|
+
export let dragging = false;
|
|
6
7
|
let fakeComponentInput = {
|
|
7
8
|
...componentInput,
|
|
8
9
|
value
|
|
@@ -16,4 +17,5 @@ $: fakeComponentInput && (value = fakeComponentInput.value);
|
|
|
16
17
|
fieldType={subFieldType}
|
|
17
18
|
bind:componentInput={fakeComponentInput}
|
|
18
19
|
on:remove
|
|
20
|
+
{dragging}
|
|
19
21
|
/>
|
|
@@ -7,7 +7,7 @@ import ColorInput from './ColorInput.svelte';
|
|
|
7
7
|
import TabSelectInput from './TabSelectInput.svelte';
|
|
8
8
|
import Toggle from '../../../../Toggle.svelte';
|
|
9
9
|
import SchemaEditor from '../../../../SchemaEditor.svelte';
|
|
10
|
-
import autosize from '
|
|
10
|
+
import autosize from '../../../../../autosize';
|
|
11
11
|
import Button from '../../../../common/button/Button.svelte';
|
|
12
12
|
import { Settings } from 'lucide-svelte';
|
|
13
13
|
import AgGridWizard from '../../../../wizards/AgGridWizard.svelte';
|
|
@@ -26,6 +26,7 @@ export let selectOptions = undefined;
|
|
|
26
26
|
export let placeholder = undefined;
|
|
27
27
|
export let format = undefined;
|
|
28
28
|
export let id;
|
|
29
|
+
export let dragging = false;
|
|
29
30
|
const { onchange } = getContext('AppViewerContext');
|
|
30
31
|
$: componentInput && onchange?.();
|
|
31
32
|
</script>
|
|
@@ -147,11 +148,17 @@ $: componentInput && onchange?.();
|
|
|
147
148
|
/>
|
|
148
149
|
{:else}
|
|
149
150
|
<div class="flex w-full flex-col">
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
151
|
+
{#if dragging}
|
|
152
|
+
<div class="text-xs text-secondary whitespace-pre border p-1"
|
|
153
|
+
>{JSON.stringify(componentInput.value, null, 2)}</div
|
|
154
|
+
>
|
|
155
|
+
{:else}
|
|
156
|
+
<JsonEditor
|
|
157
|
+
small
|
|
158
|
+
bind:value={componentInput.value}
|
|
159
|
+
code={JSON.stringify(componentInput.value, null, 2)}
|
|
160
|
+
/>
|
|
161
|
+
{/if}
|
|
155
162
|
</div>
|
|
156
163
|
{/if}
|
|
157
164
|
{:else if fieldType === 'array'}
|
|
@@ -17,7 +17,11 @@ let picker;
|
|
|
17
17
|
const { app, workspace } = getContext('AppViewerContext');
|
|
18
18
|
const dispatch = createEventDispatcher();
|
|
19
19
|
async function loadSchemaFromTriggerable(path, runType) {
|
|
20
|
-
|
|
20
|
+
const schema = await loadSchema(workspace, path, runType);
|
|
21
|
+
if (!schema.schema.order) {
|
|
22
|
+
schema.schema.order = Object.keys(schema.schema.properties ?? {});
|
|
23
|
+
}
|
|
24
|
+
return schema ?? { schema: emptySchema(), summary: undefined };
|
|
21
25
|
}
|
|
22
26
|
async function pickScript(path) {
|
|
23
27
|
const schema = await loadSchemaFromTriggerable(path, 'script');
|
|
@@ -26,7 +30,7 @@ async function pickScript(path) {
|
|
|
26
30
|
type: 'runnableByPath',
|
|
27
31
|
path,
|
|
28
32
|
runType: 'script',
|
|
29
|
-
schema,
|
|
33
|
+
schema: schema.schema,
|
|
30
34
|
name: defaultIfEmptyString(schema.summary, path)
|
|
31
35
|
};
|
|
32
36
|
dispatch('pick', {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
<script>import { fly } from 'svelte/transition';
|
|
2
|
-
import { Badge } from '../../../../common';
|
|
3
2
|
import { secondaryMenuLeft, secondaryMenuRight } from './';
|
|
4
3
|
import { getContext } from 'svelte';
|
|
5
4
|
import CloseButton from '../../../../common/CloseButton.svelte';
|
|
@@ -29,11 +28,7 @@ $: if (right && lastSelected !== $selectedComponent) {
|
|
|
29
28
|
class="flex justify-between {right ? '' : 'flex-row-reverse'} items-center gap-1 px-3 py-2"
|
|
30
29
|
>
|
|
31
30
|
<CloseButton on:close={() => secondaryMenu?.close()} />
|
|
32
|
-
|
|
33
|
-
<Badge color="blue">{$selectedComponent}</Badge>
|
|
34
|
-
{:else}
|
|
35
|
-
<div />
|
|
36
|
-
{/if}
|
|
31
|
+
<div class="text-xs font-bold"> Style Panel</div>
|
|
37
32
|
</div>
|
|
38
33
|
<div class="relative h-full overflow-y-auto">
|
|
39
34
|
{#if typeof $secondaryMenu.component === 'string'}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
/** @typedef {typeof __propDef.slots} SelectSlots */
|
|
4
4
|
export default class Select extends SvelteComponent<{
|
|
5
5
|
value?: any;
|
|
6
|
+
input?: any;
|
|
6
7
|
id?: null | undefined;
|
|
7
8
|
name?: null | undefined;
|
|
8
|
-
input?: any;
|
|
9
9
|
filter?: typeof _filter | undefined;
|
|
10
10
|
class?: string | undefined;
|
|
11
11
|
label?: string | undefined;
|
|
@@ -107,9 +107,9 @@ import { SvelteComponent } from "svelte";
|
|
|
107
107
|
declare const __propDef: {
|
|
108
108
|
props: {
|
|
109
109
|
value?: any;
|
|
110
|
+
input?: any;
|
|
110
111
|
id?: null | undefined;
|
|
111
112
|
name?: null | undefined;
|
|
112
|
-
input?: any;
|
|
113
113
|
filter?: typeof _filter | undefined;
|
|
114
114
|
class?: string | undefined;
|
|
115
115
|
label?: string | undefined;
|
|
@@ -194,6 +194,7 @@ export type AppViewerContext = {
|
|
|
194
194
|
invalidate?: (key: string, error: string) => void;
|
|
195
195
|
validateAll?: () => void;
|
|
196
196
|
clearFiles?: () => void;
|
|
197
|
+
showToast?: (message: string, error?: boolean) => void;
|
|
197
198
|
}>>;
|
|
198
199
|
hoverStore: Writable<string | undefined>;
|
|
199
200
|
allIdsInPath: Writable<string[]>;
|
|
@@ -177,18 +177,18 @@ declare function close(id: string): void;
|
|
|
177
177
|
* @param id component's id
|
|
178
178
|
* @param key property's key to validate
|
|
179
179
|
*/
|
|
180
|
-
declare function validate(id: string, key:
|
|
180
|
+
declare function validate(id: string, key: string): void;
|
|
181
181
|
|
|
182
182
|
/** validate form field property 'key'
|
|
183
183
|
* @param id component's id
|
|
184
184
|
* @param key property's key to validate
|
|
185
185
|
*/
|
|
186
|
-
declare function invalidate(id: string, key:
|
|
186
|
+
declare function invalidate(id: string, key: string, error: string): void;
|
|
187
187
|
|
|
188
188
|
/** validate all form's properties
|
|
189
189
|
* @param id component's id
|
|
190
190
|
*/
|
|
191
|
-
declare function validateAll(id: string
|
|
191
|
+
declare function validateAll(id: string): void;
|
|
192
192
|
|
|
193
193
|
/** Clear the files of a file input component
|
|
194
194
|
* @param id component's id
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker';
|
|
2
2
|
import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker';
|
|
3
|
+
import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker';
|
|
3
4
|
import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker';
|
|
4
5
|
import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
|
|
5
6
|
export function buildWorkerDefinition(workerPath, basePath, useModuleWorker) {
|
|
@@ -27,7 +28,7 @@ export function buildWorkerDefinition(workerPath, basePath, useModuleWorker) {
|
|
|
27
28
|
case 'template':
|
|
28
29
|
case 'typescript':
|
|
29
30
|
case 'javascript':
|
|
30
|
-
return new
|
|
31
|
+
return new tsWorker();
|
|
31
32
|
case 'html':
|
|
32
33
|
case 'handlebars':
|
|
33
34
|
case 'razor':
|
|
@@ -18,7 +18,7 @@ $: tweenedProgress.set(progress);
|
|
|
18
18
|
<div class="progress-bar">
|
|
19
19
|
<div
|
|
20
20
|
class={`progress ${!ended ? 'blinking' : ''}`}
|
|
21
|
-
style={`--color: ${color}; width: ${$tweenedProgress}%`}
|
|
21
|
+
style={`--color: ${color}; width: ${Math.round($tweenedProgress)}%`}
|
|
22
22
|
/>
|
|
23
23
|
</div>
|
|
24
24
|
<span class="text-xs p-1">{Math.round($tweenedProgress)}%</span>
|
|
@@ -4,7 +4,7 @@ declare const __propDef: {
|
|
|
4
4
|
[x: string]: any;
|
|
5
5
|
value?: any;
|
|
6
6
|
placeholder?: string | undefined;
|
|
7
|
-
type?: "number" | "
|
|
7
|
+
type?: "number" | "textarea" | "text" | undefined;
|
|
8
8
|
inputClass?: string | undefined;
|
|
9
9
|
wrapperClass?: string | undefined;
|
|
10
10
|
buttonClass?: string | undefined;
|
|
@@ -13,6 +13,7 @@ declare const __propDef: {
|
|
|
13
13
|
returnFileNames?: boolean | undefined;
|
|
14
14
|
submittedText?: string | undefined;
|
|
15
15
|
defaultFile?: string | undefined;
|
|
16
|
+
clearFiles?: (() => void) | undefined;
|
|
16
17
|
};
|
|
17
18
|
events: {
|
|
18
19
|
change: CustomEvent<any>;
|
|
@@ -28,5 +29,6 @@ export type FileInputProps = typeof __propDef.props;
|
|
|
28
29
|
export type FileInputEvents = typeof __propDef.events;
|
|
29
30
|
export type FileInputSlots = typeof __propDef.slots;
|
|
30
31
|
export default class FileInput extends SvelteComponent<FileInputProps, FileInputEvents, FileInputSlots> {
|
|
32
|
+
get clearFiles(): () => void;
|
|
31
33
|
}
|
|
32
34
|
export {};
|
|
@@ -35,6 +35,7 @@ function fadeFast(node) {
|
|
|
35
35
|
|
|
36
36
|
{#if open}
|
|
37
37
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
38
|
+
<!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
|
|
38
39
|
<div
|
|
39
40
|
on:click={() => (open = false)}
|
|
40
41
|
transition:fadeFast|local
|
|
@@ -50,6 +51,7 @@ function fadeFast(node) {
|
|
|
50
51
|
|
|
51
52
|
<div class="fixed inset-0 z-10 overflow-y-auto">
|
|
52
53
|
<div class="flex min-h-full items-center justify-center p-4">
|
|
54
|
+
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
53
55
|
<div
|
|
54
56
|
on:click|stopPropagation
|
|
55
57
|
class={twMerge(
|
|
@@ -5,7 +5,7 @@ import { copilotInfo, metadataCompletionEnabled } from '../../stores';
|
|
|
5
5
|
import { createEventDispatcher, onDestroy } from 'svelte';
|
|
6
6
|
import { sendUserToast } from '../../toast';
|
|
7
7
|
import { twMerge } from 'tailwind-merge';
|
|
8
|
-
import autosize from '
|
|
8
|
+
import autosize from '../../autosize';
|
|
9
9
|
import { yamlStringifyExceptKeys } from './utils';
|
|
10
10
|
const promptConfigs = {
|
|
11
11
|
summary: {
|
|
@@ -197,7 +197,9 @@ onDestroy(() => {
|
|
|
197
197
|
}}
|
|
198
198
|
>
|
|
199
199
|
<div
|
|
200
|
-
class=
|
|
200
|
+
class="absolute left-[0.5rem] {elementType === 'textarea'
|
|
201
|
+
? 'top-[1.3rem]'
|
|
202
|
+
: 'top-[0.3rem]'} flex flex-row gap-2 items-start pointer-events-none"
|
|
201
203
|
>
|
|
202
204
|
{#if active}
|
|
203
205
|
<span
|
|
@@ -236,16 +238,19 @@ onDestroy(() => {
|
|
|
236
238
|
{/if}
|
|
237
239
|
</div>
|
|
238
240
|
{#if elementType === 'textarea'}
|
|
239
|
-
<
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
241
|
+
<div>
|
|
242
|
+
<div class="flex flex-row-reverse text-2xs text-tertiary -mt-4">GH Markdown</div>
|
|
243
|
+
<textarea
|
|
244
|
+
bind:this={el}
|
|
245
|
+
bind:value={content}
|
|
246
|
+
use:autosize
|
|
247
|
+
{...elementProps}
|
|
248
|
+
placeholder={!active ? elementProps.placeholder : ''}
|
|
249
|
+
class={active ? '!indent-[3.5rem]' : ''}
|
|
250
|
+
on:focus={() => (focused = true)}
|
|
251
|
+
on:blur={() => (focused = false)}
|
|
252
|
+
/>
|
|
253
|
+
</div>
|
|
249
254
|
{:else}
|
|
250
255
|
<input
|
|
251
256
|
bind:this={el}
|
|
@@ -8,7 +8,7 @@ declare const __propDef: {
|
|
|
8
8
|
flow?: FlowValue | undefined;
|
|
9
9
|
promptConfigName: "summary" | "description" | "flowSummary" | "flowDescription";
|
|
10
10
|
generateOnAppear?: boolean | undefined;
|
|
11
|
-
elementType?: "
|
|
11
|
+
elementType?: "textarea" | "input" | undefined;
|
|
12
12
|
elementProps?: Record<string, any> | undefined;
|
|
13
13
|
};
|
|
14
14
|
events: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script>import { Button } from '../common';
|
|
2
|
-
import { SUPPORTED_LANGUAGES, copilot } from './lib';
|
|
2
|
+
import { MAX_SCHEMA_LENGTH, SUPPORTED_LANGUAGES, addThousandsSeparator, copilot } from './lib';
|
|
3
3
|
import { sendUserToast } from '../../toast';
|
|
4
4
|
import Popup from '../common/popup/Popup.svelte';
|
|
5
5
|
import { dbSchemas, copilotInfo, workspaceStore } from '../../stores';
|
|
@@ -8,15 +8,16 @@ import Tooltip from '../Tooltip.svelte';
|
|
|
8
8
|
import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
9
9
|
import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
|
|
10
10
|
import { writable } from 'svelte/store';
|
|
11
|
-
import { WindmillIcon } from '../icons';
|
|
12
11
|
import HighlightCode from '../HighlightCode.svelte';
|
|
13
12
|
import LoadingIcon from '../apps/svelte-select/lib/LoadingIcon.svelte';
|
|
14
13
|
import { sleep } from '../../utils';
|
|
15
14
|
import { autoPlacement } from '@floating-ui/core';
|
|
16
|
-
import { Ban, Bot, Check, ExternalLink, HistoryIcon, Wand2, X } from 'lucide-svelte';
|
|
15
|
+
import { AlertTriangle, Ban, Bot, Check, ExternalLink, HistoryIcon, Wand2, X } from 'lucide-svelte';
|
|
17
16
|
import { fade } from 'svelte/transition';
|
|
18
17
|
import { isInitialCode } from '../../script_helpers';
|
|
19
18
|
import { twMerge } from 'tailwind-merge';
|
|
19
|
+
import Popover from '../Popover.svelte';
|
|
20
|
+
import { onDestroy } from 'svelte';
|
|
20
21
|
// props
|
|
21
22
|
export let iconOnly = false;
|
|
22
23
|
export let lang;
|
|
@@ -27,6 +28,7 @@ export let args;
|
|
|
27
28
|
export let transformer = false;
|
|
28
29
|
// state
|
|
29
30
|
let funcDesc = '';
|
|
31
|
+
let trimmedDesc = '';
|
|
30
32
|
let genLoading = false;
|
|
31
33
|
let input;
|
|
32
34
|
let generatedCode = writable('');
|
|
@@ -35,8 +37,9 @@ let abortController = undefined;
|
|
|
35
37
|
let blockPopupOpen = false;
|
|
36
38
|
let mode = 'gen';
|
|
37
39
|
let button;
|
|
40
|
+
$: trimmedDesc = funcDesc.trim();
|
|
38
41
|
async function onGenerate(closePopup) {
|
|
39
|
-
if (
|
|
42
|
+
if (trimmedDesc.length <= 0) {
|
|
40
43
|
return;
|
|
41
44
|
}
|
|
42
45
|
savePrompt();
|
|
@@ -47,7 +50,7 @@ async function onGenerate(closePopup) {
|
|
|
47
50
|
if (mode === 'edit') {
|
|
48
51
|
await copilot({
|
|
49
52
|
language: transformer && lang === 'frontend' ? 'transformer' : lang,
|
|
50
|
-
description:
|
|
53
|
+
description: trimmedDesc,
|
|
51
54
|
code: editor?.getCode() || '',
|
|
52
55
|
dbSchema: dbSchema,
|
|
53
56
|
type: 'edit',
|
|
@@ -57,7 +60,7 @@ async function onGenerate(closePopup) {
|
|
|
57
60
|
else {
|
|
58
61
|
await copilot({
|
|
59
62
|
language: transformer && lang === 'frontend' ? 'transformer' : lang,
|
|
60
|
-
description:
|
|
63
|
+
description: trimmedDesc,
|
|
61
64
|
dbSchema: dbSchema,
|
|
62
65
|
type: 'gen',
|
|
63
66
|
workspace: $workspaceStore
|
|
@@ -86,6 +89,9 @@ async function onGenerate(closePopup) {
|
|
|
86
89
|
finally {
|
|
87
90
|
genLoading = false;
|
|
88
91
|
blockPopupOpen = false;
|
|
92
|
+
setTimeout(() => {
|
|
93
|
+
autoResize();
|
|
94
|
+
}, 0);
|
|
89
95
|
}
|
|
90
96
|
}
|
|
91
97
|
function acceptDiff() {
|
|
@@ -148,10 +154,10 @@ function getPromptHistory() {
|
|
|
148
154
|
}
|
|
149
155
|
}
|
|
150
156
|
function savePrompt() {
|
|
151
|
-
if (promptHistory.includes(
|
|
157
|
+
if (promptHistory.includes(trimmedDesc)) {
|
|
152
158
|
return;
|
|
153
159
|
}
|
|
154
|
-
promptHistory.unshift(
|
|
160
|
+
promptHistory.unshift(trimmedDesc);
|
|
155
161
|
while (promptHistory.length > 5) {
|
|
156
162
|
promptHistory.pop();
|
|
157
163
|
}
|
|
@@ -173,6 +179,18 @@ function clearPromptHistory() {
|
|
|
173
179
|
}
|
|
174
180
|
$: lang && getPromptHistory();
|
|
175
181
|
$: $generatedCode && updateScroll();
|
|
182
|
+
function autoResize() {
|
|
183
|
+
if (input) {
|
|
184
|
+
const maxLinesHeight = 100; // Adjust this value based on your font size and line-height to fit 5 lines
|
|
185
|
+
input.style.height = 'auto'; // Reset height to recalibrate
|
|
186
|
+
const newHeight = Math.min(input.scrollHeight, maxLinesHeight); // Calculate new height, but not exceed max
|
|
187
|
+
input.style.height = newHeight + 'px'; // Set new height
|
|
188
|
+
input.style.overflowY = newHeight >= maxLinesHeight ? 'scroll' : 'hidden'; // Show scrollbar if at max height
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
onDestroy(() => {
|
|
192
|
+
abortController?.abort();
|
|
193
|
+
});
|
|
176
194
|
</script>
|
|
177
195
|
|
|
178
196
|
{#if genLoading}
|
|
@@ -247,7 +265,7 @@ $: $generatedCode && updateScroll();
|
|
|
247
265
|
size="xs"
|
|
248
266
|
color={genLoading ? 'red' : 'light'}
|
|
249
267
|
btnClasses={genLoading ? '!px-3 z-[5000]' : '!px-2'}
|
|
250
|
-
propagateEvent
|
|
268
|
+
propagateEvent={!genLoading}
|
|
251
269
|
on:click={genLoading
|
|
252
270
|
? () => abortController?.abort()
|
|
253
271
|
: () => {
|
|
@@ -258,6 +276,9 @@ $: $generatedCode && updateScroll();
|
|
|
258
276
|
mode = 'edit'
|
|
259
277
|
}
|
|
260
278
|
}
|
|
279
|
+
setTimeout(() => {
|
|
280
|
+
autoResize()
|
|
281
|
+
}, 0)
|
|
261
282
|
}}
|
|
262
283
|
bind:element={button}
|
|
263
284
|
iconOnly
|
|
@@ -276,8 +297,8 @@ $: $generatedCode && updateScroll();
|
|
|
276
297
|
size="xs"
|
|
277
298
|
color={genLoading ? 'red' : 'light'}
|
|
278
299
|
spacingSize="md"
|
|
279
|
-
startIcon={genLoading ?
|
|
280
|
-
propagateEvent
|
|
300
|
+
startIcon={genLoading ? { icon: Ban } : { icon: Wand2 }}
|
|
301
|
+
propagateEvent={!genLoading}
|
|
281
302
|
on:click={genLoading
|
|
282
303
|
? () => abortController?.abort()
|
|
283
304
|
: () => {
|
|
@@ -288,18 +309,14 @@ $: $generatedCode && updateScroll();
|
|
|
288
309
|
mode = 'edit'
|
|
289
310
|
}
|
|
290
311
|
}
|
|
312
|
+
setTimeout(() => {
|
|
313
|
+
autoResize()
|
|
314
|
+
}, 0)
|
|
291
315
|
}}
|
|
292
316
|
bind:element={button}
|
|
293
317
|
{iconOnly}
|
|
294
318
|
>
|
|
295
319
|
{#if genLoading}
|
|
296
|
-
<WindmillIcon
|
|
297
|
-
white={true}
|
|
298
|
-
class="mr-1 text-white"
|
|
299
|
-
height="16px"
|
|
300
|
-
width="20px"
|
|
301
|
-
spin="veryfast"
|
|
302
|
-
/>
|
|
303
320
|
Stop
|
|
304
321
|
{:else}
|
|
305
322
|
AI Gen
|
|
@@ -330,31 +347,34 @@ $: $generatedCode && updateScroll();
|
|
|
330
347
|
GPT-4 Turbo<Bot size={14} />
|
|
331
348
|
</div>
|
|
332
349
|
</div>
|
|
333
|
-
<div class="flex w-96">
|
|
334
|
-
<
|
|
335
|
-
type="text"
|
|
350
|
+
<div class="flex w-96 items-start">
|
|
351
|
+
<textarea
|
|
336
352
|
bind:this={input}
|
|
337
353
|
bind:value={funcDesc}
|
|
338
|
-
on:
|
|
339
|
-
|
|
354
|
+
on:input={autoResize}
|
|
355
|
+
on:keydown={({ key, shiftKey }) => {
|
|
356
|
+
if (key === 'Enter' && !shiftKey && trimmedDesc.length > 0) {
|
|
340
357
|
onGenerate(() => close(input || null))
|
|
358
|
+
return false
|
|
341
359
|
}
|
|
342
360
|
}}
|
|
343
361
|
placeholder={mode === 'edit'
|
|
344
362
|
? 'Describe the changes you want'
|
|
345
363
|
: 'Describe what the script should do'}
|
|
364
|
+
rows="1"
|
|
365
|
+
class="resize-none overflow-hidden"
|
|
346
366
|
/>
|
|
347
367
|
<Button
|
|
348
368
|
size="xs"
|
|
349
369
|
color="light"
|
|
350
370
|
buttonType="button"
|
|
351
|
-
btnClasses="!p-1 !w-[38px] !ml-2 text-violet-800 dark:text-violet-400 bg-violet-100 dark:bg-gray-700"
|
|
371
|
+
btnClasses="h-[36px] !p-1 !w-[38px] !ml-2 text-violet-800 dark:text-violet-400 bg-violet-100 dark:bg-gray-700"
|
|
352
372
|
title="Generate code from prompt"
|
|
353
373
|
aria-label="Generate"
|
|
354
374
|
on:click={() => {
|
|
355
375
|
onGenerate(() => close(input || null))
|
|
356
376
|
}}
|
|
357
|
-
disabled={
|
|
377
|
+
disabled={trimmedDesc.length <= 0}
|
|
358
378
|
iconOnly
|
|
359
379
|
startIcon={{ icon: Wand2 }}
|
|
360
380
|
/>
|
|
@@ -369,6 +389,9 @@ $: $generatedCode && updateScroll();
|
|
|
369
389
|
startIcon={{ icon: HistoryIcon, classes: 'shrink-0' }}
|
|
370
390
|
on:click={() => {
|
|
371
391
|
funcDesc = p
|
|
392
|
+
setTimeout(() => {
|
|
393
|
+
autoResize()
|
|
394
|
+
}, 0)
|
|
372
395
|
}}>{p}</Button
|
|
373
396
|
>
|
|
374
397
|
{/each}
|
|
@@ -381,13 +404,24 @@ $: $generatedCode && updateScroll();
|
|
|
381
404
|
|
|
382
405
|
{#if ['postgresql', 'mysql', 'snowflake', 'bigquery', 'mssql', 'graphql'].includes(lang) && dbSchema?.lang === lang}
|
|
383
406
|
<div class="flex flex-row items-center justify-between gap-2 w-96">
|
|
384
|
-
<div class="flex flex-row items-center">
|
|
407
|
+
<div class="flex flex-row items-center gap-1">
|
|
385
408
|
<p class="text-xs text-secondary">
|
|
386
409
|
Context: {lang === 'graphql' ? 'GraphQL' : 'DB'} schema
|
|
387
410
|
</p>
|
|
388
|
-
<Tooltip>
|
|
411
|
+
<Tooltip placement="top">
|
|
389
412
|
We pass the selected schema to GPT-4 Turbo for better script generation.
|
|
390
413
|
</Tooltip>
|
|
414
|
+
{#if dbSchema.stringified.length > MAX_SCHEMA_LENGTH}
|
|
415
|
+
<Popover notClickable placement="top">
|
|
416
|
+
<AlertTriangle size={16} class="text-yellow-500" />
|
|
417
|
+
<svelte:fragment slot="text">
|
|
418
|
+
The schema is about {addThousandsSeparator(dbSchema.stringified.length / 3.5)}
|
|
419
|
+
tokens. To avoid exceeding the model's context length, it will be truncated to
|
|
420
|
+
{addThousandsSeparator(MAX_SCHEMA_LENGTH / 3.5)}
|
|
421
|
+
tokens.
|
|
422
|
+
</svelte:fragment>
|
|
423
|
+
</Popover>
|
|
424
|
+
{/if}
|
|
391
425
|
</div>
|
|
392
426
|
{#if dbSchema.lang !== 'graphql' && (dbSchema.schema?.public || dbSchema.schema?.PUBLIC || dbSchema.schema?.dbo)}
|
|
393
427
|
<ToggleButtonGroup class="w-auto shrink-0" bind:selected={dbSchema.publicOnly}>
|