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
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<script lang="ts">import SchemaForm from './SchemaForm.svelte';
|
|
2
|
-
import
|
|
2
|
+
import JobLoader from './JobLoader.svelte';
|
|
3
3
|
import { Button } from './common';
|
|
4
4
|
import { WindmillIcon } from './icons';
|
|
5
5
|
import LogPanel from './scriptEditor/LogPanel.svelte';
|
|
6
6
|
import { JobService, OpenAPI, WorkspaceService } from '../gen';
|
|
7
7
|
import { inferArgs } from '../infer';
|
|
8
8
|
import { setCopilotInfo, userStore, workspaceStore } from '../stores';
|
|
9
|
-
import { emptySchema, sendUserToast } from '../utils';
|
|
9
|
+
import { emptySchema, readFieldsRecursively, sendUserToast } from '../utils';
|
|
10
10
|
import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
11
11
|
import { onDestroy, onMount, setContext, untrack } from 'svelte';
|
|
12
12
|
import DarkModeToggle from './sidebar/DarkModeToggle.svelte';
|
|
@@ -66,7 +66,7 @@ function initializeMode() {
|
|
|
66
66
|
modeInitialized = true;
|
|
67
67
|
darkModeToggle?.toggle();
|
|
68
68
|
}
|
|
69
|
-
let
|
|
69
|
+
let jobLoader = $state();
|
|
70
70
|
let socket = undefined;
|
|
71
71
|
// Test args input
|
|
72
72
|
let args = $state({});
|
|
@@ -78,7 +78,8 @@ let pastPreviews = $state([]);
|
|
|
78
78
|
let validCode = $state(true);
|
|
79
79
|
// Flow preview
|
|
80
80
|
let flowPreviewButtons = $state();
|
|
81
|
-
const
|
|
81
|
+
const flowPreviewContent = $derived(flowPreviewButtons?.getFlowPreviewContent());
|
|
82
|
+
const job = $derived(flowPreviewContent?.getJob());
|
|
82
83
|
let showJobStatus = $state(false);
|
|
83
84
|
let testModuleId = $state(undefined);
|
|
84
85
|
let currentScript = $state(undefined);
|
|
@@ -113,7 +114,11 @@ const el = (event) => {
|
|
|
113
114
|
}
|
|
114
115
|
else if (event.data.type == 'testPreviewBundle') {
|
|
115
116
|
if (event.data.id == lastCommandId && currentScript) {
|
|
116
|
-
|
|
117
|
+
jobLoader?.runPreview(currentScript.path, event.data.file, currentScript.language, args, currentScript.tag, useLock ? currentScript.lock : undefined, undefined, {
|
|
118
|
+
done(x) {
|
|
119
|
+
loadPastTests();
|
|
120
|
+
}
|
|
121
|
+
});
|
|
117
122
|
}
|
|
118
123
|
else {
|
|
119
124
|
sendUserToast(`Bundle received ${lastCommandId} was obsolete, ignoring`, true);
|
|
@@ -164,7 +169,7 @@ onMount(() => {
|
|
|
164
169
|
window.parent?.postMessage({ type: 'refresh' }, '*');
|
|
165
170
|
});
|
|
166
171
|
async function testBundle(file, isTar) {
|
|
167
|
-
|
|
172
|
+
jobLoader?.abstractRun(async () => {
|
|
168
173
|
try {
|
|
169
174
|
const form = new FormData();
|
|
170
175
|
form.append('preview', JSON.stringify({
|
|
@@ -205,6 +210,10 @@ async function testBundle(file, isTar) {
|
|
|
205
210
|
sendUserToast(`Failed to send bundle ${e}`, true);
|
|
206
211
|
throw Error(e);
|
|
207
212
|
}
|
|
213
|
+
}, {
|
|
214
|
+
done(x) {
|
|
215
|
+
loadPastTests();
|
|
216
|
+
}
|
|
208
217
|
});
|
|
209
218
|
loadingCodebaseButton = false;
|
|
210
219
|
}
|
|
@@ -273,7 +282,7 @@ function runTest() {
|
|
|
273
282
|
}
|
|
274
283
|
else {
|
|
275
284
|
//@ts-ignore
|
|
276
|
-
|
|
285
|
+
jobLoader.runPreview(currentScript.path, currentScript.content, currentScript.language, args, currentScript.tag, useLock ? currentScript.lock : undefined);
|
|
277
286
|
}
|
|
278
287
|
}
|
|
279
288
|
}
|
|
@@ -419,8 +428,8 @@ function updateFlow(flow) {
|
|
|
419
428
|
return;
|
|
420
429
|
}
|
|
421
430
|
if (!deepEqual(flow, lastSent)) {
|
|
422
|
-
lastSent =
|
|
423
|
-
window?.parent.postMessage({ type: 'flow', flow, uriPath: lastUriPath }, '*');
|
|
431
|
+
lastSent = $state.snapshot(flow);
|
|
432
|
+
window?.parent.postMessage({ type: 'flow', flow: lastSent, uriPath: lastUriPath }, '*');
|
|
424
433
|
}
|
|
425
434
|
}
|
|
426
435
|
let reload = $state(0);
|
|
@@ -429,7 +438,7 @@ async function inferModuleArgs(selectedIdStore) {
|
|
|
429
438
|
return;
|
|
430
439
|
}
|
|
431
440
|
//@ts-ignore
|
|
432
|
-
dfs(flowStore.value.modules, async (mod) => {
|
|
441
|
+
dfs(flowStore.val.value.modules, async (mod) => {
|
|
433
442
|
if (mod.id == selectedIdStore) {
|
|
434
443
|
if (mod.value.type == 'rawscript' ||
|
|
435
444
|
mod.value.type === 'script' ||
|
|
@@ -481,14 +490,15 @@ $effect(() => {
|
|
|
481
490
|
untrack(() => initializeMode());
|
|
482
491
|
});
|
|
483
492
|
$effect(() => {
|
|
493
|
+
readFieldsRecursively(flowStore.val);
|
|
484
494
|
flowStore.val && untrack(() => updateFlow(flowStore.val));
|
|
485
495
|
});
|
|
486
496
|
$effect(() => {
|
|
487
497
|
$selectedIdStore && untrack(() => inferModuleArgs($selectedIdStore));
|
|
488
498
|
});
|
|
489
|
-
const localModuleStates = $derived(
|
|
490
|
-
const localDurationStatuses = $derived(
|
|
491
|
-
const suspendStatus = $derived(
|
|
499
|
+
const localModuleStates = $derived(flowPreviewContent?.getLocalModuleStates() ?? writable({}));
|
|
500
|
+
const localDurationStatuses = $derived(flowPreviewContent?.getLocalDurationStatuses() ?? writable({}));
|
|
501
|
+
const suspendStatus = $derived(flowPreviewContent?.getSuspendStatus() ?? writable({}));
|
|
492
502
|
// Create a derived store that only shows the module states when showModuleStatus is true
|
|
493
503
|
// this store can also be updated
|
|
494
504
|
let derivedModuleStates = writable({});
|
|
@@ -533,16 +543,12 @@ function resetModulesStates() {
|
|
|
533
543
|
showJobStatus = false;
|
|
534
544
|
}
|
|
535
545
|
const individualStepTests = $derived(!(showJobStatus && job) && Object.keys($derivedModuleStates).length > 0);
|
|
546
|
+
const flowHasChanged = $derived(flowPreviewContent?.flowHasChanged());
|
|
536
547
|
</script>
|
|
537
548
|
|
|
538
549
|
<svelte:window onkeydown={onKeyDown} />
|
|
539
550
|
|
|
540
|
-
<
|
|
541
|
-
on:done={loadPastTests}
|
|
542
|
-
bind:this={testJobLoader}
|
|
543
|
-
bind:isLoading={testIsLoading}
|
|
544
|
-
bind:job={testJob}
|
|
545
|
-
/>
|
|
551
|
+
<JobLoader noCode={true} bind:this={jobLoader} bind:isLoading={testIsLoading} bind:job={testJob} />
|
|
546
552
|
|
|
547
553
|
<main class="h-screen w-full">
|
|
548
554
|
{#if mode == 'script'}
|
|
@@ -603,7 +609,7 @@ const individualStepTests = $derived(!(showJobStatus && job) && Object.keys($der
|
|
|
603
609
|
{/if}
|
|
604
610
|
<div class="flex justify-center pt-1">
|
|
605
611
|
{#if testIsLoading}
|
|
606
|
-
<Button on:click={
|
|
612
|
+
<Button on:click={jobLoader?.cancelJob} btnClasses="w-full" color="red" size="xs">
|
|
607
613
|
<WindmillIcon
|
|
608
614
|
white={true}
|
|
609
615
|
class="mr-2 text-white"
|
|
@@ -692,10 +698,10 @@ const individualStepTests = $derived(!(showJobStatus && job) && Object.keys($der
|
|
|
692
698
|
disableStaticInputs
|
|
693
699
|
localModuleStates={derivedModuleStates}
|
|
694
700
|
onTestUpTo={flowPreviewButtons?.testUpTo}
|
|
695
|
-
isOwner={
|
|
701
|
+
isOwner={flowPreviewContent?.getIsOwner?.()}
|
|
696
702
|
onTestFlow={flowPreviewButtons?.runPreview}
|
|
697
|
-
isRunning={
|
|
698
|
-
onCancelTestFlow={
|
|
703
|
+
isRunning={flowPreviewContent?.getIsRunning?.()}
|
|
704
|
+
onCancelTestFlow={flowPreviewContent?.cancelTest}
|
|
699
705
|
onOpenPreview={flowPreviewButtons?.openPreview}
|
|
700
706
|
onHideJobStatus={resetModulesStates}
|
|
701
707
|
{individualStepTests}
|
|
@@ -704,6 +710,7 @@ const individualStepTests = $derived(!(showJobStatus && job) && Object.keys($der
|
|
|
704
710
|
onDelete={(id) => {
|
|
705
711
|
delete $derivedModuleStates[id]
|
|
706
712
|
}}
|
|
713
|
+
{flowHasChanged}
|
|
707
714
|
/>
|
|
708
715
|
{:else}
|
|
709
716
|
<div class="text-red-400 mt-20">Missing flow modules</div>
|
|
@@ -725,7 +732,7 @@ const individualStepTests = $derived(!(showJobStatus && job) && Object.keys($der
|
|
|
725
732
|
}}
|
|
726
733
|
onTestFlow={flowPreviewButtons?.runPreview}
|
|
727
734
|
{job}
|
|
728
|
-
isOwner={
|
|
735
|
+
isOwner={flowPreviewContent?.getIsOwner()}
|
|
729
736
|
{localDurationStatuses}
|
|
730
737
|
{suspendStatus}
|
|
731
738
|
onOpenDetails={flowPreviewButtons?.openPreview}
|
|
@@ -24,6 +24,7 @@ import Tooltip from './Tooltip.svelte';
|
|
|
24
24
|
import HighlightTheme from './HighlightTheme.svelte';
|
|
25
25
|
import { getContext, hasContext, createEventDispatcher, onDestroy } from 'svelte';
|
|
26
26
|
import { toJsonStr } from '../utils';
|
|
27
|
+
import { userStore } from '../stores';
|
|
27
28
|
const IMG_MAX_SIZE = 10000000;
|
|
28
29
|
const TABLE_MAX_SIZE = 5000000;
|
|
29
30
|
const DISPLAY_MAX_SIZE = 100000;
|
|
@@ -183,6 +184,28 @@ function inferResultKind(result) {
|
|
|
183
184
|
else if (isTableCol(result, keys)) {
|
|
184
185
|
return 'table-col';
|
|
185
186
|
}
|
|
187
|
+
else if (keys.length < 1000 && keys.includes('wm_renderer')) {
|
|
188
|
+
const renderer = result['wm_renderer'];
|
|
189
|
+
if (typeof renderer === 'string') {
|
|
190
|
+
if ([
|
|
191
|
+
'json',
|
|
192
|
+
'html',
|
|
193
|
+
'png',
|
|
194
|
+
'file',
|
|
195
|
+
'jpeg',
|
|
196
|
+
'gif',
|
|
197
|
+
'svg',
|
|
198
|
+
'filename',
|
|
199
|
+
's3object',
|
|
200
|
+
'plain',
|
|
201
|
+
'markdown',
|
|
202
|
+
'map',
|
|
203
|
+
'pdf'
|
|
204
|
+
].includes(renderer)) {
|
|
205
|
+
return renderer;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
186
209
|
}
|
|
187
210
|
}
|
|
188
211
|
catch (err) { }
|
|
@@ -624,34 +647,38 @@ $effect(() => {
|
|
|
624
647
|
language={json}
|
|
625
648
|
code={toJsonStr(result).replace(/\\n/g, '\n')}
|
|
626
649
|
/>
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
><
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
650
|
+
{#if $userStore}
|
|
651
|
+
<button
|
|
652
|
+
class="text-secondary underline text-2xs whitespace-nowrap"
|
|
653
|
+
onclick={() => {
|
|
654
|
+
s3FileViewer?.open?.(result)
|
|
655
|
+
}}
|
|
656
|
+
><span class="flex items-center gap-1"
|
|
657
|
+
><PanelRightOpen size={12} />object store explorer<Tooltip
|
|
658
|
+
>Require admin privilege or "S3 resource details and content can be accessed
|
|
659
|
+
by all users of this workspace" of S3 Storage to be set in the workspace
|
|
660
|
+
settings</Tooltip
|
|
661
|
+
></span
|
|
662
|
+
>
|
|
663
|
+
</button>
|
|
664
|
+
{/if}
|
|
640
665
|
{:else if !result?.disable_download}
|
|
641
666
|
<FileDownload {workspaceId} s3object={result} {appPath} />
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
><
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
667
|
+
{#if $userStore}
|
|
668
|
+
<button
|
|
669
|
+
class="text-secondary underline text-2xs whitespace-nowrap"
|
|
670
|
+
onclick={() => {
|
|
671
|
+
s3FileViewer?.open?.(result)
|
|
672
|
+
}}
|
|
673
|
+
><span class="flex items-center gap-1"
|
|
674
|
+
><PanelRightOpen size={12} />object store explorer<Tooltip
|
|
675
|
+
>Require admin privilege or "S3 resource details and content can be accessed
|
|
676
|
+
by all users of this workspace" of S3 Storage to be set in the workspace
|
|
677
|
+
settings</Tooltip
|
|
678
|
+
></span
|
|
679
|
+
>
|
|
680
|
+
</button>
|
|
681
|
+
{/if}
|
|
655
682
|
{/if}
|
|
656
683
|
</div>
|
|
657
684
|
{#if typeof result?.s3 === 'string'}
|
|
@@ -40,6 +40,6 @@ declare const DisplayResult: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
40
40
|
}, {}, {
|
|
41
41
|
openDrawer: () => void;
|
|
42
42
|
getToolbarLocation: () => "external" | "self" | undefined;
|
|
43
|
-
}, "
|
|
43
|
+
}, "drawerOpen" | "forceJson">;
|
|
44
44
|
type DisplayResult = InstanceType<typeof DisplayResult>;
|
|
45
45
|
export default DisplayResult;
|
|
@@ -16,7 +16,7 @@ function validSelectObject(x) {
|
|
|
16
16
|
|
|
17
17
|
<script lang="ts">import { usePromise } from '../svelte5Utils.svelte';
|
|
18
18
|
import { deepEqual } from 'fast-equals';
|
|
19
|
-
import
|
|
19
|
+
import JobLoader from './JobLoader.svelte';
|
|
20
20
|
import Select from './select/Select.svelte';
|
|
21
21
|
import Tooltip from './Tooltip.svelte';
|
|
22
22
|
import { Loader2 } from 'lucide-svelte';
|
|
@@ -54,7 +54,7 @@ async function getItemsFromOptions() {
|
|
|
54
54
|
error: (err) => reject(err)
|
|
55
55
|
};
|
|
56
56
|
helperScript?.type == 'inline'
|
|
57
|
-
? resultJobLoader?.runPreview(helperScript?.path ?? 'NO_PATH', helperScript.code, helperScript.lang, { ...args, filterText, _ENTRYPOINT_OVERRIDE: entrypoint }, undefined, cb)
|
|
57
|
+
? resultJobLoader?.runPreview(helperScript?.path ?? 'NO_PATH', helperScript.code, helperScript.lang, { ...args, filterText, _ENTRYPOINT_OVERRIDE: entrypoint }, undefined, undefined, undefined, cb)
|
|
58
58
|
: resultJobLoader?.runScriptByHash(helperScript?.hash ?? 'NO_HASH', { ...args, filterText, _ENTRYPOINT_OVERRIDE: entrypoint }, cb);
|
|
59
59
|
});
|
|
60
60
|
}
|
|
@@ -71,7 +71,7 @@ let open = $state(false);
|
|
|
71
71
|
</script>
|
|
72
72
|
|
|
73
73
|
{#if helperScript}
|
|
74
|
-
<
|
|
74
|
+
<JobLoader bind:this={resultJobLoader} />
|
|
75
75
|
|
|
76
76
|
<div class="w-full flex-col flex">
|
|
77
77
|
<Select
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
<script context="module">
|
|
1
|
+
<script module>
|
|
4
2
|
import '@codingame/monaco-vscode-standalone-languages'
|
|
5
3
|
import '@codingame/monaco-vscode-standalone-typescript-language-features'
|
|
6
4
|
import processStdContent from '../process.d.ts.txt?raw'
|
|
@@ -73,7 +71,7 @@
|
|
|
73
71
|
|
|
74
72
|
<script lang="ts">import { BROWSER } from 'esm-env';
|
|
75
73
|
import { sendUserToast } from '../toast';
|
|
76
|
-
import { createEventDispatcher, onDestroy, onMount } from 'svelte';
|
|
74
|
+
import { createEventDispatcher, onDestroy, onMount, untrack } from 'svelte';
|
|
77
75
|
// import libStdContent from '../es6.d.ts.txt?raw'
|
|
78
76
|
// import domContent from '../dom.d.ts.txt?raw'
|
|
79
77
|
// import denoFetchContent from '../deno_fetch.d.ts.txt?raw'
|
|
@@ -113,45 +111,23 @@ import { editorPositionMap } from '../utils';
|
|
|
113
111
|
import { extToLang, langToExt } from '../editorLangUtils';
|
|
114
112
|
import { aiChatManager } from './copilot/chat/AIChatManager.svelte';
|
|
115
113
|
// import EditorTheme from './EditorTheme.svelte'
|
|
116
|
-
let divEl = null;
|
|
117
|
-
let editor = null;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
export let yContent = undefined;
|
|
134
|
-
export let awareness = undefined;
|
|
135
|
-
export let folding = false;
|
|
136
|
-
export let args = undefined;
|
|
137
|
-
export let useWebsockets = true;
|
|
138
|
-
export let small = false;
|
|
139
|
-
export let scriptLang;
|
|
140
|
-
export let disabled = false;
|
|
141
|
-
export let lineNumbersMinChars = 3;
|
|
142
|
-
export let files = {};
|
|
143
|
-
export let extraLib = undefined;
|
|
144
|
-
export let changeTimeout = 500;
|
|
145
|
-
export let loadAsync = false;
|
|
146
|
-
export let key = undefined;
|
|
147
|
-
let lang = scriptLangToEditorLang(scriptLang);
|
|
148
|
-
$: lang = scriptLangToEditorLang(scriptLang);
|
|
149
|
-
let filePath = computePath(path);
|
|
150
|
-
$: filePath = computePath(path);
|
|
151
|
-
let initialPath = path;
|
|
152
|
-
$: path != initialPath &&
|
|
153
|
-
(scriptLang == 'deno' || scriptLang == 'bun' || scriptLang == 'bunnative') &&
|
|
154
|
-
handlePathChange();
|
|
114
|
+
let divEl = $state(null);
|
|
115
|
+
let editor = $state(null);
|
|
116
|
+
let { code = $bindable(), cmdEnterAction = undefined, formatAction = undefined, automaticLayout = true, websocketAlive = $bindable(), shouldBindKey = true, fixedOverflowWidgets = true, path = undefined, yContent = undefined, awareness = undefined, folding = false, args = undefined, useWebsockets = true, small = false, scriptLang, disabled = false, lineNumbersMinChars = 3, files = {}, extraLib = undefined, changeTimeout = 500, loadAsync = false, key = undefined, class: clazz = undefined } = $props();
|
|
117
|
+
$effect.pre(() => {
|
|
118
|
+
if (websocketAlive == undefined) {
|
|
119
|
+
websocketAlive = {
|
|
120
|
+
pyright: false,
|
|
121
|
+
ruff: false,
|
|
122
|
+
deno: false,
|
|
123
|
+
go: false,
|
|
124
|
+
shellcheck: false
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
let lang = $state(scriptLangToEditorLang(scriptLang));
|
|
129
|
+
let filePath = $state(computePath(path));
|
|
130
|
+
let initialPath = $state(path);
|
|
155
131
|
let websockets = [];
|
|
156
132
|
let languageClients = [];
|
|
157
133
|
let websocketInterval;
|
|
@@ -160,7 +136,7 @@ let nbWsAttempt = 0;
|
|
|
160
136
|
let disposeMethod;
|
|
161
137
|
const dispatch = createEventDispatcher();
|
|
162
138
|
let graphqlService = undefined;
|
|
163
|
-
let dbSchema = undefined;
|
|
139
|
+
let dbSchema = $state(undefined);
|
|
164
140
|
let destroyed = false;
|
|
165
141
|
const uri = computeUri(filePath, scriptLang);
|
|
166
142
|
console.log('uri', uri);
|
|
@@ -375,10 +351,7 @@ export function getScriptLang() {
|
|
|
375
351
|
return scriptLang;
|
|
376
352
|
}
|
|
377
353
|
let command = undefined;
|
|
378
|
-
let sqlTypeCompletor = undefined;
|
|
379
|
-
$: initialized && lang === 'sql' && scriptLang
|
|
380
|
-
? addSqlTypeCompletions()
|
|
381
|
-
: sqlTypeCompletor?.dispose();
|
|
354
|
+
let sqlTypeCompletor = $state(undefined);
|
|
382
355
|
function addSqlTypeCompletions() {
|
|
383
356
|
if (sqlTypeCompletor) {
|
|
384
357
|
sqlTypeCompletor.dispose();
|
|
@@ -441,16 +414,12 @@ function updateSchema() {
|
|
|
441
414
|
dbSchema = undefined;
|
|
442
415
|
}
|
|
443
416
|
}
|
|
444
|
-
$: lang && args && $dbSchemas && updateSchema();
|
|
445
|
-
$: initialized && dbSchema && ['sql', 'graphql'].includes(lang) && addDBSchemaCompletions();
|
|
446
417
|
function disposeSqlSchemaCompletor() {
|
|
447
418
|
sqlSchemaCompletor?.dispose();
|
|
448
419
|
}
|
|
449
|
-
$: (!dbSchema || lang !== 'sql') && disposeSqlSchemaCompletor();
|
|
450
420
|
function disposeGaphqlService() {
|
|
451
421
|
graphqlService = undefined;
|
|
452
422
|
}
|
|
453
|
-
$: (!dbSchema || lang !== 'graphql') && disposeGaphqlService();
|
|
454
423
|
function addDBSchemaCompletions() {
|
|
455
424
|
const { lang: schemaLang, schema } = dbSchema || {};
|
|
456
425
|
if (!schemaLang || !schema) {
|
|
@@ -544,12 +513,12 @@ function addDBSchemaCompletions() {
|
|
|
544
513
|
});
|
|
545
514
|
}
|
|
546
515
|
}
|
|
547
|
-
let reviewingChanges = writable(false);
|
|
548
|
-
let aiChatEditorHandler = undefined;
|
|
516
|
+
let reviewingChanges = $state(writable(false));
|
|
517
|
+
let aiChatEditorHandler = $state(undefined);
|
|
549
518
|
// Inline ai chat widget
|
|
550
|
-
let showInlineAIChat = false;
|
|
551
|
-
let inlineAIChatSelection = null;
|
|
552
|
-
let selectedCode = '';
|
|
519
|
+
let showInlineAIChat = $state(false);
|
|
520
|
+
let inlineAIChatSelection = $state(null);
|
|
521
|
+
let selectedCode = $state('');
|
|
553
522
|
export function reviewAndApplyCode(code) {
|
|
554
523
|
aiChatEditorHandler?.reviewAndApply(code);
|
|
555
524
|
}
|
|
@@ -562,22 +531,13 @@ function addChatHandler(editor) {
|
|
|
562
531
|
console.error('Could not add chat handler', err);
|
|
563
532
|
}
|
|
564
533
|
}
|
|
565
|
-
let autocompletor = undefined;
|
|
534
|
+
let autocompletor = $state(undefined);
|
|
566
535
|
function addAutoCompletor(editor, scriptLang) {
|
|
567
536
|
if (autocompletor) {
|
|
568
537
|
autocompletor.dispose();
|
|
569
538
|
}
|
|
570
539
|
autocompletor = new Autocompletor(editor, scriptLang);
|
|
571
540
|
}
|
|
572
|
-
$: $copilotInfo.enabled &&
|
|
573
|
-
$codeCompletionSessionEnabled &&
|
|
574
|
-
Autocompletor.isProviderModelSupported($copilotInfo.codeCompletionModel) &&
|
|
575
|
-
initialized &&
|
|
576
|
-
editor &&
|
|
577
|
-
scriptLang &&
|
|
578
|
-
addAutoCompletor(editor, scriptLang);
|
|
579
|
-
$: $copilotInfo.enabled && initialized && editor && addChatHandler(editor);
|
|
580
|
-
$: !$codeCompletionSessionEnabled && autocompletor?.dispose();
|
|
581
541
|
const outputChannel = {
|
|
582
542
|
name: 'Language Server Client',
|
|
583
543
|
appendLine: (msg) => {
|
|
@@ -688,6 +648,10 @@ export async function reloadWebsocket() {
|
|
|
688
648
|
try {
|
|
689
649
|
console.log('starting client');
|
|
690
650
|
await languageClient.start();
|
|
651
|
+
// for python we want to use the pyright client for signature help, not ruff
|
|
652
|
+
if (lang !== 'python' || (lang === 'python' && name == 'pyright')) {
|
|
653
|
+
autocompletor?.setLanguageClient(languageClient);
|
|
654
|
+
}
|
|
691
655
|
console.log('started client');
|
|
692
656
|
}
|
|
693
657
|
catch (err) {
|
|
@@ -914,21 +878,15 @@ async function closeWebsockets() {
|
|
|
914
878
|
websocketInterval && clearInterval(websocketInterval);
|
|
915
879
|
}
|
|
916
880
|
// let widgets: HTMLElement | undefined = document.getElementById('monaco-widgets-root') ?? undefined
|
|
917
|
-
let model = undefined;
|
|
918
|
-
let monacoBinding = undefined;
|
|
919
|
-
|
|
920
|
-
monacoBinding && monacoBinding.destroy();
|
|
921
|
-
monacoBinding = new MonacoBinding(yContent, model, new Set([editor]), awareness);
|
|
922
|
-
}
|
|
923
|
-
let initialized = false;
|
|
881
|
+
let model = $state(undefined);
|
|
882
|
+
let monacoBinding = $state(undefined);
|
|
883
|
+
let initialized = $state(false);
|
|
924
884
|
let ata = undefined;
|
|
925
|
-
let statusDiv = null;
|
|
885
|
+
let statusDiv = $state(null);
|
|
926
886
|
function saveDraft() {
|
|
927
887
|
dispatch('saveDraft', code);
|
|
928
888
|
}
|
|
929
|
-
let vimDisposable = undefined;
|
|
930
|
-
$: editor && $vimMode && statusDiv && onVimMode();
|
|
931
|
-
$: !$vimMode && vimDisposable && onVimDisable();
|
|
889
|
+
let vimDisposable = $state(undefined);
|
|
932
890
|
function onVimDisable() {
|
|
933
891
|
vimDisposable?.dispose();
|
|
934
892
|
}
|
|
@@ -937,7 +895,6 @@ function onVimMode() {
|
|
|
937
895
|
vimDisposable = initVim(editor, statusDiv, saveDraft);
|
|
938
896
|
}
|
|
939
897
|
}
|
|
940
|
-
$: files && model && onFileChanges();
|
|
941
898
|
let svelteRegistered = false;
|
|
942
899
|
let vueRegistered = false;
|
|
943
900
|
function onFileChanges() {
|
|
@@ -1019,7 +976,7 @@ async function loadMonaco() {
|
|
|
1019
976
|
// console.log('af ready')
|
|
1020
977
|
initialized = true;
|
|
1021
978
|
try {
|
|
1022
|
-
model = meditor.createModel(code, lang == 'nu' ? 'python' : lang, mUri.parse(uri));
|
|
979
|
+
model = meditor.createModel(code ?? '', lang == 'nu' ? 'python' : lang, mUri.parse(uri));
|
|
1023
980
|
}
|
|
1024
981
|
catch (err) {
|
|
1025
982
|
console.log('model already existed', err);
|
|
@@ -1033,7 +990,7 @@ async function loadMonaco() {
|
|
|
1033
990
|
onFileChanges();
|
|
1034
991
|
try {
|
|
1035
992
|
editor = meditor.create(divEl, {
|
|
1036
|
-
...editorConfig(code, lang, automaticLayout, fixedOverflowWidgets),
|
|
993
|
+
...editorConfig(code ?? '', lang, automaticLayout, fixedOverflowWidgets),
|
|
1037
994
|
model,
|
|
1038
995
|
fontSize: !small ? 14 : 12,
|
|
1039
996
|
lineNumbersMinChars,
|
|
@@ -1074,11 +1031,14 @@ async function loadMonaco() {
|
|
|
1074
1031
|
});
|
|
1075
1032
|
editor?.onDidFocusEditorText(() => {
|
|
1076
1033
|
dispatch('focus');
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1034
|
+
// for escape we use onkeydown instead of addCommand because addCommand on escape specifically prevents default behavior (like autocomplete cancellation)
|
|
1035
|
+
editor?.onKeyDown((e) => {
|
|
1036
|
+
if (e.keyCode === KeyCode.Escape) {
|
|
1037
|
+
if (showInlineAIChat) {
|
|
1038
|
+
closeAIInlineWidget();
|
|
1039
|
+
}
|
|
1040
|
+
aiChatEditorHandler?.rejectAll();
|
|
1080
1041
|
}
|
|
1081
|
-
aiChatEditorHandler?.rejectAll();
|
|
1082
1042
|
});
|
|
1083
1043
|
editor?.addCommand(KeyMod.CtrlCmd | KeyCode.DownArrow, function () {
|
|
1084
1044
|
if (aiChatManager.pendingNewCode) {
|
|
@@ -1244,7 +1204,7 @@ async function setTypescriptExtraLibs() {
|
|
|
1244
1204
|
});
|
|
1245
1205
|
if (scriptLang == 'bun') {
|
|
1246
1206
|
ata?.('import "bun-types"');
|
|
1247
|
-
ata?.(code);
|
|
1207
|
+
ata?.(code ?? '');
|
|
1248
1208
|
}
|
|
1249
1209
|
dispatch('ataReady');
|
|
1250
1210
|
}
|
|
@@ -1280,7 +1240,7 @@ function closeAIInlineWidget() {
|
|
|
1280
1240
|
inlineAIChatSelection = null;
|
|
1281
1241
|
selectedCode = '';
|
|
1282
1242
|
}
|
|
1283
|
-
let aiChatInlineWidget = null;
|
|
1243
|
+
let aiChatInlineWidget = $state(null);
|
|
1284
1244
|
let loadTimeout = undefined;
|
|
1285
1245
|
onMount(async () => {
|
|
1286
1246
|
if (BROWSER) {
|
|
@@ -1334,6 +1294,73 @@ function onKeyDown(e) {
|
|
|
1334
1294
|
}
|
|
1335
1295
|
}
|
|
1336
1296
|
}
|
|
1297
|
+
$effect(() => {
|
|
1298
|
+
lang = scriptLangToEditorLang(scriptLang);
|
|
1299
|
+
});
|
|
1300
|
+
$effect(() => {
|
|
1301
|
+
filePath = computePath(path);
|
|
1302
|
+
});
|
|
1303
|
+
$effect(() => {
|
|
1304
|
+
path != initialPath &&
|
|
1305
|
+
(scriptLang == 'deno' || scriptLang == 'bun' || scriptLang == 'bunnative') &&
|
|
1306
|
+
untrack(() => {
|
|
1307
|
+
handlePathChange();
|
|
1308
|
+
});
|
|
1309
|
+
});
|
|
1310
|
+
$effect(() => {
|
|
1311
|
+
initialized && lang === 'sql' && scriptLang
|
|
1312
|
+
? untrack(() => addSqlTypeCompletions())
|
|
1313
|
+
: sqlTypeCompletor?.dispose();
|
|
1314
|
+
});
|
|
1315
|
+
$effect(() => {
|
|
1316
|
+
lang && args && $dbSchemas && untrack(() => updateSchema());
|
|
1317
|
+
});
|
|
1318
|
+
$effect(() => {
|
|
1319
|
+
initialized &&
|
|
1320
|
+
dbSchema &&
|
|
1321
|
+
['sql', 'graphql'].includes(lang) &&
|
|
1322
|
+
untrack(() => addDBSchemaCompletions());
|
|
1323
|
+
});
|
|
1324
|
+
$effect(() => {
|
|
1325
|
+
;
|
|
1326
|
+
(!dbSchema || lang !== 'sql') && untrack(() => disposeSqlSchemaCompletor());
|
|
1327
|
+
});
|
|
1328
|
+
$effect(() => {
|
|
1329
|
+
;
|
|
1330
|
+
(!dbSchema || lang !== 'graphql') && untrack(() => disposeGaphqlService());
|
|
1331
|
+
});
|
|
1332
|
+
$effect(() => {
|
|
1333
|
+
$copilotInfo.enabled &&
|
|
1334
|
+
$codeCompletionSessionEnabled &&
|
|
1335
|
+
Autocompletor.isProviderModelSupported($copilotInfo.codeCompletionModel) &&
|
|
1336
|
+
initialized &&
|
|
1337
|
+
editor &&
|
|
1338
|
+
scriptLang &&
|
|
1339
|
+
untrack(() => editor && addAutoCompletor(editor, scriptLang));
|
|
1340
|
+
});
|
|
1341
|
+
$effect(() => {
|
|
1342
|
+
$copilotInfo.enabled && initialized && editor && untrack(() => editor && addChatHandler(editor));
|
|
1343
|
+
});
|
|
1344
|
+
$effect(() => {
|
|
1345
|
+
!$codeCompletionSessionEnabled && autocompletor?.dispose();
|
|
1346
|
+
});
|
|
1347
|
+
$effect(() => {
|
|
1348
|
+
if (yContent && awareness && model && editor) {
|
|
1349
|
+
monacoBinding && monacoBinding.destroy();
|
|
1350
|
+
untrack(() => {
|
|
1351
|
+
monacoBinding = new MonacoBinding(yContent, model, new Set([editor]), awareness);
|
|
1352
|
+
});
|
|
1353
|
+
}
|
|
1354
|
+
});
|
|
1355
|
+
$effect(() => {
|
|
1356
|
+
editor && $vimMode && statusDiv && untrack(() => onVimMode());
|
|
1357
|
+
});
|
|
1358
|
+
$effect(() => {
|
|
1359
|
+
!$vimMode && vimDisposable && untrack(() => onVimDisable());
|
|
1360
|
+
});
|
|
1361
|
+
$effect(() => {
|
|
1362
|
+
files && model && untrack(() => onFileChanges());
|
|
1363
|
+
});
|
|
1337
1364
|
</script>
|
|
1338
1365
|
|
|
1339
1366
|
<svelte:window onkeydown={onKeyDown} />
|
|
@@ -1343,7 +1370,7 @@ function onKeyDown(e) {
|
|
|
1343
1370
|
<FakeMonacoPlaceHolder {code} />
|
|
1344
1371
|
</div>
|
|
1345
1372
|
{/if}
|
|
1346
|
-
<div bind:this={divEl} class="{
|
|
1373
|
+
<div bind:this={divEl} class="{clazz} editor {disabled ? 'disabled' : ''}"></div>
|
|
1347
1374
|
{#if $vimMode}
|
|
1348
1375
|
<div class="fixed bottom-0 z-30" bind:this={statusDiv}></div>
|
|
1349
1376
|
{/if}
|