windmill-components 1.383.9 → 1.389.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/assets/app.css +25 -1
- package/package/components/ArgInput.svelte +2 -1
- package/package/components/ChangeInstanceUsername.svelte +9 -108
- package/package/components/ChangeInstanceUsernameInner.svelte +112 -0
- package/package/components/ChangeInstanceUsernameInner.svelte.d.ts +21 -0
- package/package/components/DiffDrawer.svelte +27 -20
- package/package/components/DiffEditor.svelte +5 -1
- package/package/components/DisplayResult.svelte +39 -9
- package/package/components/DropdownV2.svelte +4 -26
- package/package/components/DropdownV2.svelte.d.ts +9 -1
- package/package/components/DropdownV2Inner.svelte +42 -0
- package/package/components/DropdownV2Inner.svelte.d.ts +40 -0
- package/package/components/Editor.svelte +24 -4
- package/package/components/Editor.svelte.d.ts +5 -4
- package/package/components/EditorBar.svelte +9 -11
- package/package/components/EditorSettings.svelte +44 -0
- package/package/components/EditorSettings.svelte.d.ts +17 -0
- package/package/components/EditorTheme.svelte +1 -1
- package/package/components/ErrorOrRecoveryHandler.svelte +27 -20
- package/package/components/FlowBuilder.svelte +17 -3
- package/package/components/FlowBuilder.svelte.d.ts +3 -0
- package/package/components/FlowGraphViewerStep.svelte +1 -1
- package/package/components/FlowStatusViewer.svelte +3 -1
- package/package/components/FlowStatusViewer.svelte.d.ts +1 -0
- package/package/components/FlowStatusViewerInner.svelte +5 -2
- package/package/components/FlowViewerInner.svelte +3 -7
- package/package/components/FormatOnSave.svelte +12 -29
- package/package/components/GraphqlSchemaViewer.svelte +1 -1
- package/package/components/GraphqlSchemaViewer.svelte.d.ts +1 -1
- package/package/components/HighlightCode.svelte +3 -0
- package/package/components/InstanceNameEditor.svelte +64 -0
- package/package/components/InstanceNameEditor.svelte.d.ts +23 -0
- package/package/components/LightweightArgInput.svelte +6 -11
- package/package/components/LogViewer.svelte +37 -29
- package/package/components/LogViewer.svelte.d.ts +2 -0
- package/package/components/ObjectResourceInput.svelte +1 -1
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/Path.svelte +3 -3
- package/package/components/QueueMetricsDrawer.svelte +6 -218
- package/package/components/QueueMetricsDrawer.svelte.d.ts +2 -3
- package/package/components/QueueMetricsDrawerInner.svelte +211 -0
- package/package/components/QueueMetricsDrawerInner.svelte.d.ts +15 -0
- package/package/components/ResourceEditorDrawer.svelte +14 -11
- package/package/components/ResourceEditorDrawer.svelte.d.ts +1 -1
- package/package/components/ResultJobLoader.svelte.d.ts +1 -1
- package/package/components/S3FilePicker.svelte +20 -8
- package/package/components/ScheduleEditorInner.svelte +497 -469
- package/package/components/ScriptBuilder.svelte +12 -1
- package/package/components/ScriptBuilder.svelte.d.ts +3 -0
- package/package/components/ScriptEditor.svelte +1 -0
- package/package/components/ScriptEditor.svelte.d.ts +2 -1
- package/package/components/ServiceLogsInner.svelte +511 -0
- package/package/components/ServiceLogsInner.svelte.d.ts +20 -0
- package/package/components/SimpleEditor.svelte +27 -2
- package/package/components/SimpleEditor.svelte.d.ts +5 -3
- package/package/components/Summary.svelte +33 -31
- package/package/components/Summary.svelte.d.ts +1 -0
- package/package/components/SuperadminSettings.svelte +28 -10
- package/package/components/TemplateEditor.svelte +1 -1
- package/package/components/TestJobLoader.svelte.d.ts +1 -1
- package/package/components/VimMode.svelte +16 -0
- package/package/components/VimMode.svelte.d.ts +14 -0
- package/package/components/WorkerTagPicker.svelte +4 -1
- package/package/components/WorkspaceGroup.svelte +139 -68
- package/package/components/WorkspaceGroup.svelte.d.ts +3 -0
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +19 -2
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +2 -1
- package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte +2 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte.d.ts +2 -1
- package/package/components/apps/components/display/table/AppAggridTable.svelte +45 -3
- package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +2 -1
- package/package/components/apps/components/display/table/AppAggridTableEe.svelte +2 -0
- package/package/components/apps/components/display/table/AppAggridTableEe.svelte.d.ts +2 -1
- package/package/components/apps/editor/AppEditor.svelte +239 -92
- package/package/components/apps/editor/AppEditorBottomPanel.svelte +22 -0
- package/package/components/apps/editor/AppEditorBottomPanel.svelte.d.ts +24 -0
- package/package/components/apps/editor/AppEditorHeader.svelte +44 -2
- package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +9 -0
- package/package/components/apps/editor/AppExportButton.svelte +1 -1
- package/package/components/apps/editor/AppPreview.svelte +4 -0
- package/package/components/apps/editor/DeploymentHistory.svelte +7 -3
- package/package/components/apps/editor/GridEditor.svelte +4 -13
- package/package/components/apps/editor/RunnableJobPanel.svelte +25 -58
- package/package/components/apps/editor/RunnableJobPanel.svelte.d.ts +10 -1
- package/package/components/apps/editor/RunnalbeJobPanelInner.svelte +56 -0
- package/package/components/apps/editor/RunnalbeJobPanelInner.svelte.d.ts +18 -0
- package/package/components/apps/editor/SubGridEditor.svelte +3 -1
- package/package/components/apps/editor/component/Component.svelte +26 -4
- package/package/components/apps/editor/component/Component.svelte.d.ts +1 -0
- package/package/components/apps/editor/component/components.d.ts +5 -0
- package/package/components/apps/editor/componentsPanel/CssProperty.svelte +2 -0
- package/package/components/apps/editor/componentsPanel/tailwindUtils.js +267 -1
- package/package/components/apps/editor/contextPanel/ContextPanel.svelte +9 -1
- package/package/components/apps/editor/contextPanel/ContextPanel.svelte.d.ts +2 -0
- package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -0
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +3 -0
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +7 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte.d.ts +5 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +14 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +25 -5
- package/package/components/apps/editor/settingsPanel/HideButton.svelte +47 -0
- package/package/components/apps/editor/settingsPanel/HideButton.svelte.d.ts +22 -0
- package/package/components/apps/editor/settingsPanel/TableActions.svelte +43 -4
- package/package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
- package/package/components/apps/svelte-grid/Grid.svelte +6 -2
- package/package/components/apps/svelte-grid/Grid.svelte.d.ts +1 -0
- package/package/components/apps/svelte-grid/MoveResize.svelte +11 -3
- package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +1 -0
- package/package/components/apps/svelte-grid/utils/item.d.ts +4 -1
- package/package/components/apps/svelte-grid/utils/item.js +11 -4
- package/package/components/common/button/Button.svelte.d.ts +2 -2
- package/package/components/common/calendarPicker/CalendarPicker.svelte +6 -2
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
- package/package/components/common/drawer/ConditionalPortal.svelte +2 -1
- package/package/components/common/drawer/ConditionalPortal.svelte.d.ts +1 -0
- package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
- package/package/components/common/popup/Popup.svelte +2 -1
- package/package/components/common/popup/Popup.svelte.d.ts +1 -0
- package/package/components/common/table/AppRow.svelte +11 -8
- package/package/components/common/table/AppRow.svelte.d.ts +1 -2
- package/package/components/common/table/FlowRow.svelte +3 -3
- package/package/components/common/table/FlowRow.svelte.d.ts +1 -2
- package/package/components/common/table/RawAppRow.svelte +3 -3
- package/package/components/common/table/RawAppRow.svelte.d.ts +1 -2
- package/package/components/common/table/ScriptRow.svelte +3 -3
- package/package/components/common/table/ScriptRow.svelte.d.ts +1 -2
- package/package/components/copilot/CodeCompletionStatus.svelte +21 -46
- package/package/components/copilot/StepGen.svelte +2 -1
- package/package/components/custom_ui.d.ts +4 -1
- package/package/components/flows/CreateActionsApp.svelte +11 -8
- package/package/components/flows/CreateActionsFlow.svelte +11 -8
- package/package/components/flows/FlowEditor.svelte +1 -2
- package/package/components/flows/FlowEditor.svelte.d.ts +0 -1
- package/package/components/flows/FlowHistory.svelte +6 -3
- package/package/components/flows/content/FlowModuleScript.svelte +15 -11
- package/package/components/flows/content/FlowSettings.svelte +1 -4
- package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -0
- package/package/components/flows/header/FlowYamlEditor.svelte +55 -0
- package/package/components/flows/header/FlowYamlEditor.svelte.d.ts +17 -0
- package/package/components/flows/map/InsertTriggerButton.svelte +1 -1
- package/package/components/flows/map/InsertTriggerButton.svelte.d.ts +1 -0
- package/package/components/flows/map/VirtualItem.svelte +1 -1
- package/package/components/flows/pickers/PickHubScript.svelte +1 -0
- package/package/components/flows/types.d.ts +7 -6
- package/package/components/flows/utils.d.ts +9 -0
- package/package/components/flows/utils.js +21 -0
- package/package/components/graph/graphBuilder.js +1 -0
- package/package/components/graph/model.d.ts +1 -0
- package/package/components/graph/renderers/edges/BaseEdge.svelte +16 -0
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
- package/package/components/graph/renderers/nodes/NoBranchNode.svelte +5 -1
- package/package/components/graph/renderers/nodes/NoBranchNode.svelte.d.ts +1 -0
- package/package/components/home/Item.svelte +0 -17
- package/package/components/home/deploy_ui.d.ts +2 -0
- package/package/components/home/deploy_ui.js +21 -0
- package/package/components/icons/RustIcon.svelte +70 -0
- package/package/components/icons/RustIcon.svelte.d.ts +25 -0
- package/package/components/icons/rust-logo.svg +1 -0
- package/package/components/instanceSettings.js +2 -2
- package/package/components/monaco_keybindings.d.ts +3 -0
- package/package/components/monaco_keybindings.js +9 -0
- package/package/components/preview/FlowPreviewStatus.svelte +6 -2
- package/package/components/runs/JobLoader.svelte +12 -3
- package/package/components/runs/JobLoader.svelte.d.ts +1 -1
- package/package/components/runs/ManuelDatePicker.svelte +31 -44
- package/package/components/runs/ManuelDatePicker.svelte.d.ts +6 -2
- package/package/components/runs/RunsFilter.svelte +4 -1
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -0
- package/package/components/search/GlobalSearchModal.svelte +36 -25
- package/package/components/wizards/TableActionsWizard.svelte +84 -0
- package/package/components/wizards/TableActionsWizard.svelte.d.ts +22 -0
- package/package/editorUtils.js +2 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +8 -8
- package/package/gen/schemas.gen.js +8 -8
- package/package/gen/services.gen.d.ts +4 -0
- package/package/gen/services.gen.js +16 -0
- package/package/gen/types.gen.d.ts +20 -8
- package/package/infer.d.ts +1 -1
- package/package/infer.js +48 -7
- package/package/script_helpers.d.ts +1 -0
- package/package/script_helpers.js +39 -1
- package/package/scripts.d.ts +1 -1
- package/package/scripts.js +11 -3
- package/package/stores.d.ts +5 -1
- package/package/stores.js +7 -2
- package/package.json +13 -7
package/package/assets/app.css
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
|
|
29
29
|
@font-face {
|
|
30
30
|
font-family: 'Inter';
|
|
31
|
-
src: url('/Inter-Variable.
|
|
31
|
+
src: url('/Inter-Variable.woff2') format('woff2');
|
|
32
32
|
font-weight: 100 900;
|
|
33
33
|
font-display: swap;
|
|
34
34
|
}
|
|
@@ -120,3 +120,27 @@ svelte-virtual-list-contents > * + * {
|
|
|
120
120
|
@apply bg-surface;
|
|
121
121
|
@apply disabled:placeholder:text-gray-200 disabled:placeholder:dark:text-gray-500 disabled:text-gray-200 disabled:dark:text-gray-500 disabled:border-gray-200 disabled:dark:border-gray-600;
|
|
122
122
|
}
|
|
123
|
+
|
|
124
|
+
.nonmain-editor .cursor.monaco-mouse-cursor-text {
|
|
125
|
+
width: 1px !important;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.bg-locked {
|
|
129
|
+
background-image: repeating-linear-gradient(
|
|
130
|
+
-45deg,
|
|
131
|
+
rgba(128, 128, 128, 0.2),
|
|
132
|
+
rgba(128, 128, 128, 0.2) 10px,
|
|
133
|
+
rgba(192, 192, 192, 0.2) 10px,
|
|
134
|
+
rgba(192, 192, 192, 0.2) 20px
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.bg-locked-hover {
|
|
139
|
+
background-image: repeating-linear-gradient(
|
|
140
|
+
-45deg,
|
|
141
|
+
rgba(255, 99, 71, 0.2),
|
|
142
|
+
rgba(255, 99, 71, 0.2) 10px,
|
|
143
|
+
rgba(255, 69, 58, 0.2),
|
|
144
|
+
rgba(255, 69, 58, 0.2) 20px
|
|
145
|
+
);
|
|
146
|
+
}
|
|
@@ -366,7 +366,8 @@ $: shouldDispatchChanges && debounced(value);
|
|
|
366
366
|
/>
|
|
367
367
|
{:else if itemsType?.type == 'resource' && itemsType?.resourceType && resourceTypes?.includes(itemsType.resourceType)}
|
|
368
368
|
<ObjectResourceInput
|
|
369
|
-
|
|
369
|
+
value={v ? `$res:${v}` : undefined}
|
|
370
|
+
bind:path={v}
|
|
370
371
|
format={'resource-' + itemsType?.resourceType}
|
|
371
372
|
defaultValue={undefined}
|
|
372
373
|
/>
|
|
@@ -1,52 +1,9 @@
|
|
|
1
|
-
<script>import {
|
|
2
|
-
import { Button, Popup } from './common';
|
|
3
|
-
import { sendUserToast } from '../toast';
|
|
4
|
-
import Alert from './common/alert/Alert.svelte';
|
|
1
|
+
<script>import { Button, Popup } from './common';
|
|
5
2
|
import { autoPlacement } from '@floating-ui/core';
|
|
6
|
-
import
|
|
3
|
+
import ChangeInstanceUsernameInner from './ChangeInstanceUsernameInner.svelte';
|
|
7
4
|
export let email;
|
|
8
5
|
export let username;
|
|
9
6
|
export let isConflict = false;
|
|
10
|
-
let loading = false;
|
|
11
|
-
let usernameInfo = undefined;
|
|
12
|
-
function handleKeyUp(event) {
|
|
13
|
-
const key = event.key;
|
|
14
|
-
if (key === 'Enter') {
|
|
15
|
-
event.preventDefault();
|
|
16
|
-
renameUser();
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
async function getUsernameInfo() {
|
|
20
|
-
usernameInfo = await UserService.globalUsernameInfo({
|
|
21
|
-
email
|
|
22
|
-
});
|
|
23
|
-
if (isConflict) {
|
|
24
|
-
username = usernameInfo.username;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
getUsernameInfo();
|
|
28
|
-
const dispatch = createEventDispatcher();
|
|
29
|
-
async function renameUser() {
|
|
30
|
-
loading = true;
|
|
31
|
-
try {
|
|
32
|
-
const automateUsernameCreation = (await SettingService.getGlobal({ key: 'automate_username_creation' })) ?? false;
|
|
33
|
-
if (!automateUsernameCreation) {
|
|
34
|
-
sendUserToast('Modifying the username is only possible when the creation of usernames is automated and defined at instance level..');
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
await UserService.globalUserRename({
|
|
38
|
-
email,
|
|
39
|
-
requestBody: {
|
|
40
|
-
new_username: username
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
sendUserToast(`Renamed user ${email} to ${username}`);
|
|
44
|
-
dispatch('renamed');
|
|
45
|
-
}
|
|
46
|
-
finally {
|
|
47
|
-
loading = false;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
7
|
</script>
|
|
51
8
|
|
|
52
9
|
<Popup
|
|
@@ -65,67 +22,11 @@ async function renameUser() {
|
|
|
65
22
|
>{isConflict ? 'Fix username conflict' : 'Change username'}</Button
|
|
66
23
|
>
|
|
67
24
|
</svelte:fragment>
|
|
68
|
-
<
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
>
|
|
76
|
-
<input
|
|
77
|
-
type="text"
|
|
78
|
-
class="mb-4"
|
|
79
|
-
on:keyup={handleKeyUp}
|
|
80
|
-
bind:value={username}
|
|
81
|
-
disabled={isConflict}
|
|
82
|
-
/>
|
|
83
|
-
|
|
84
|
-
{#if isConflict}
|
|
85
|
-
<Alert title="Username conflict" class="mb-4">
|
|
86
|
-
Users are required to have an instance-wide username that is shared across all workspaces.
|
|
87
|
-
However, this user has different usernames in different workspaces.
|
|
88
|
-
|
|
89
|
-
{#if usernameInfo?.workspace_usernames && usernameInfo.workspace_usernames.filter((w) => w.username !== username).length > 0}
|
|
90
|
-
<br />
|
|
91
|
-
<br />
|
|
92
|
-
Workspaces requiring username modification: {usernameInfo.workspace_usernames
|
|
93
|
-
.filter((w) => w.username !== username)
|
|
94
|
-
.map((wu) => `${wu.workspace_id} (${wu.username})`)
|
|
95
|
-
.join(', ')}
|
|
96
|
-
{/if}
|
|
97
|
-
</Alert>
|
|
98
|
-
{/if}
|
|
99
|
-
|
|
100
|
-
{#if !isConflict && usernameInfo?.workspace_usernames && usernameInfo.workspace_usernames.filter((w) => w.username !== username).length > 0}
|
|
101
|
-
<Alert title="Concerned workspaces" class="mb-4">
|
|
102
|
-
{usernameInfo.workspace_usernames
|
|
103
|
-
.filter((w) => w.username !== username)
|
|
104
|
-
.map((wu) => `${wu.workspace_id}`)
|
|
105
|
-
.join(', ')}
|
|
106
|
-
</Alert>
|
|
107
|
-
{/if}
|
|
108
|
-
|
|
109
|
-
<Alert type="warning" title="Manual action required" class="mb-4">
|
|
110
|
-
This operation does not handle references in scripts, workflows and applications to scripts in
|
|
111
|
-
the workspace, and references in resources to variables. You will have to handle those
|
|
112
|
-
manually.
|
|
113
|
-
<br />
|
|
114
|
-
</Alert>
|
|
115
|
-
|
|
116
|
-
<Button
|
|
117
|
-
variant="contained"
|
|
118
|
-
color="blue"
|
|
119
|
-
size="xs"
|
|
120
|
-
on:click={() => {
|
|
121
|
-
renameUser().then(() => {
|
|
122
|
-
close(null)
|
|
123
|
-
})
|
|
124
|
-
}}
|
|
125
|
-
disabled={email === undefined || !username}
|
|
126
|
-
{loading}
|
|
127
|
-
>
|
|
128
|
-
Confirm username change
|
|
129
|
-
</Button>
|
|
130
|
-
</div>
|
|
25
|
+
<ChangeInstanceUsernameInner
|
|
26
|
+
{email}
|
|
27
|
+
{username}
|
|
28
|
+
{isConflict}
|
|
29
|
+
on:close={() => close(null)}
|
|
30
|
+
on:renamed
|
|
31
|
+
/>
|
|
131
32
|
</Popup>
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<script>import { SettingService, UserService } from '../gen';
|
|
2
|
+
import { Button } from './common';
|
|
3
|
+
import { sendUserToast } from '../toast';
|
|
4
|
+
import Alert from './common/alert/Alert.svelte';
|
|
5
|
+
import { createEventDispatcher } from 'svelte';
|
|
6
|
+
export let email;
|
|
7
|
+
export let username;
|
|
8
|
+
export let isConflict = false;
|
|
9
|
+
let loading = false;
|
|
10
|
+
let usernameInfo = undefined;
|
|
11
|
+
function handleKeyUp(event) {
|
|
12
|
+
const key = event.key;
|
|
13
|
+
if (key === 'Enter') {
|
|
14
|
+
event.preventDefault();
|
|
15
|
+
renameUser();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async function getUsernameInfo() {
|
|
19
|
+
usernameInfo = await UserService.globalUsernameInfo({
|
|
20
|
+
email
|
|
21
|
+
});
|
|
22
|
+
if (isConflict) {
|
|
23
|
+
username = usernameInfo.username;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
getUsernameInfo();
|
|
27
|
+
const dispatch = createEventDispatcher();
|
|
28
|
+
async function renameUser() {
|
|
29
|
+
loading = true;
|
|
30
|
+
try {
|
|
31
|
+
const automateUsernameCreation = (await SettingService.getGlobal({ key: 'automate_username_creation' })) ?? false;
|
|
32
|
+
if (!automateUsernameCreation) {
|
|
33
|
+
sendUserToast('Modifying the username is only possible when the creation of usernames is automated and defined at instance level..');
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
await UserService.globalUserRename({
|
|
37
|
+
email,
|
|
38
|
+
requestBody: {
|
|
39
|
+
new_username: username
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
sendUserToast(`Renamed user ${email} to ${username}`);
|
|
43
|
+
dispatch('renamed');
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
loading = false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
</script>
|
|
50
|
+
|
|
51
|
+
<div class="flex flex-col max-w-2xl p-2">
|
|
52
|
+
<span class="text-sm mb-2 leading-6 font-semibold"
|
|
53
|
+
>{isConflict ? 'Fix username conflict' : 'Change username'}</span
|
|
54
|
+
>
|
|
55
|
+
|
|
56
|
+
<span class="text-xs mb-1 leading-6"
|
|
57
|
+
>{isConflict ? 'Auto-generated instance username' : 'New username'}</span
|
|
58
|
+
>
|
|
59
|
+
<input
|
|
60
|
+
type="text"
|
|
61
|
+
class="mb-4"
|
|
62
|
+
on:keyup={handleKeyUp}
|
|
63
|
+
bind:value={username}
|
|
64
|
+
disabled={isConflict}
|
|
65
|
+
/>
|
|
66
|
+
|
|
67
|
+
{#if isConflict}
|
|
68
|
+
<Alert title="Username conflict" class="mb-4">
|
|
69
|
+
Users are required to have an instance-wide username that is shared across all workspaces.
|
|
70
|
+
However, this user has different usernames in different workspaces.
|
|
71
|
+
|
|
72
|
+
{#if usernameInfo?.workspace_usernames && usernameInfo.workspace_usernames.filter((w) => w.username !== username).length > 0}
|
|
73
|
+
<br />
|
|
74
|
+
<br />
|
|
75
|
+
Workspaces requiring username modification: {usernameInfo.workspace_usernames
|
|
76
|
+
.filter((w) => w.username !== username)
|
|
77
|
+
.map((wu) => `${wu.workspace_id} (${wu.username})`)
|
|
78
|
+
.join(', ')}
|
|
79
|
+
{/if}
|
|
80
|
+
</Alert>
|
|
81
|
+
{/if}
|
|
82
|
+
|
|
83
|
+
{#if !isConflict && usernameInfo?.workspace_usernames && usernameInfo.workspace_usernames.filter((w) => w.username !== username).length > 0}
|
|
84
|
+
<Alert title="Concerned workspaces" class="mb-4">
|
|
85
|
+
{usernameInfo.workspace_usernames
|
|
86
|
+
.filter((w) => w.username !== username)
|
|
87
|
+
.map((wu) => `${wu.workspace_id}`)
|
|
88
|
+
.join(', ')}
|
|
89
|
+
</Alert>
|
|
90
|
+
{/if}
|
|
91
|
+
|
|
92
|
+
<Alert type="warning" title="Manual action required" class="mb-4">
|
|
93
|
+
This operation does not handle references in scripts, workflows and applications to scripts in
|
|
94
|
+
the workspace, and references in resources to variables. You will have to handle those manually.
|
|
95
|
+
<br />
|
|
96
|
+
</Alert>
|
|
97
|
+
|
|
98
|
+
<Button
|
|
99
|
+
variant="contained"
|
|
100
|
+
color="blue"
|
|
101
|
+
size="xs"
|
|
102
|
+
on:click={() => {
|
|
103
|
+
renameUser().then(() => {
|
|
104
|
+
dispatch('close')
|
|
105
|
+
})
|
|
106
|
+
}}
|
|
107
|
+
disabled={email === undefined || !username}
|
|
108
|
+
{loading}
|
|
109
|
+
>
|
|
110
|
+
Confirm username change
|
|
111
|
+
</Button>
|
|
112
|
+
</div>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
email: string;
|
|
5
|
+
username: string;
|
|
6
|
+
isConflict?: boolean | undefined;
|
|
7
|
+
};
|
|
8
|
+
events: {
|
|
9
|
+
close: CustomEvent<any>;
|
|
10
|
+
renamed: CustomEvent<any>;
|
|
11
|
+
} & {
|
|
12
|
+
[evt: string]: CustomEvent<any>;
|
|
13
|
+
};
|
|
14
|
+
slots: {};
|
|
15
|
+
};
|
|
16
|
+
export type ChangeInstanceUsernameInnerProps = typeof __propDef.props;
|
|
17
|
+
export type ChangeInstanceUsernameInnerEvents = typeof __propDef.events;
|
|
18
|
+
export type ChangeInstanceUsernameInnerSlots = typeof __propDef.slots;
|
|
19
|
+
export default class ChangeInstanceUsernameInner extends SvelteComponent<ChangeInstanceUsernameInnerProps, ChangeInstanceUsernameInnerEvents, ChangeInstanceUsernameInnerSlots> {
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
<script>import { Alert, Button, Drawer, DrawerContent } from './common';
|
|
2
2
|
import { Loader2 } from 'lucide-svelte';
|
|
3
|
-
import DiffEditor from './DiffEditor.svelte';
|
|
4
3
|
import { scriptLangToEditorLang } from '../scripts';
|
|
5
4
|
import Tabs from './common/tabs/Tabs.svelte';
|
|
6
5
|
import Tab from './common/tabs/Tab.svelte';
|
|
@@ -157,26 +156,34 @@ $: updateContentType(data, diffType);
|
|
|
157
156
|
<div class="flex-1">
|
|
158
157
|
{#key diffType}
|
|
159
158
|
{#if contentType === 'content'}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
159
|
+
{#await import('./DiffEditor.svelte')}
|
|
160
|
+
<Loader2 class="animate-spin" />
|
|
161
|
+
{:then Module}
|
|
162
|
+
<Module.default
|
|
163
|
+
open={true}
|
|
164
|
+
automaticLayout
|
|
165
|
+
class="h-full"
|
|
166
|
+
defaultLang={lang}
|
|
167
|
+
defaultModifiedLang={data.current.lang}
|
|
168
|
+
defaultOriginal={content}
|
|
169
|
+
defaultModified={data.current.content}
|
|
170
|
+
readOnly
|
|
171
|
+
/>
|
|
172
|
+
{/await}
|
|
170
173
|
{:else if contentType === 'metadata'}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
174
|
+
{#await import('./DiffEditor.svelte')}
|
|
175
|
+
<Loader2 class="animate-spin" />
|
|
176
|
+
{:then Module}
|
|
177
|
+
<Module.default
|
|
178
|
+
open={true}
|
|
179
|
+
automaticLayout
|
|
180
|
+
class="h-full"
|
|
181
|
+
defaultLang="yaml"
|
|
182
|
+
defaultOriginal={metadata}
|
|
183
|
+
defaultModified={data.current.metadata}
|
|
184
|
+
readOnly
|
|
185
|
+
/>
|
|
186
|
+
{/await}
|
|
180
187
|
{/if}
|
|
181
188
|
{/key}
|
|
182
189
|
</div>
|
|
@@ -99,5 +99,9 @@ onMount(() => {
|
|
|
99
99
|
|
|
100
100
|
{#if open}
|
|
101
101
|
<EditorTheme />
|
|
102
|
-
<div
|
|
102
|
+
<div
|
|
103
|
+
bind:this={diffDivEl}
|
|
104
|
+
class="{$$props.class} editor nonmain-editor"
|
|
105
|
+
bind:clientWidth={editorWidth}
|
|
106
|
+
/>
|
|
103
107
|
{/if}
|
|
@@ -555,15 +555,26 @@ let seeS3PreviewFileFromList = '';
|
|
|
555
555
|
</button>
|
|
556
556
|
{/if}
|
|
557
557
|
</div>
|
|
558
|
-
{#if typeof result?.s3
|
|
559
|
-
{#
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
558
|
+
{#if typeof result?.s3 === 'string'}
|
|
559
|
+
{#if result?.s3?.endsWith('.parquet') || result?.s3?.endsWith('.csv')}
|
|
560
|
+
{#key result.s3}
|
|
561
|
+
<ParqetTableRenderer
|
|
562
|
+
disable_download={result?.disable_download}
|
|
563
|
+
{workspaceId}
|
|
564
|
+
s3resource={result?.s3}
|
|
565
|
+
storage={result?.storage}
|
|
566
|
+
/>
|
|
567
|
+
{/key}
|
|
568
|
+
{:else if result?.s3?.endsWith('.png') || result?.s3?.endsWith('.jpeg') || result?.s3?.endsWith('.jpg') || result?.s3?.endsWith('.webp')}
|
|
569
|
+
<div class="h-full mt-2">
|
|
570
|
+
<img
|
|
571
|
+
alt="preview rendered"
|
|
572
|
+
class="w-auto h-full"
|
|
573
|
+
src={`/api/w/${workspaceId}/job_helpers/load_image_preview?file_key=${result.s3}` +
|
|
574
|
+
(result.storage ? `&storage=${result.storage}` : '')}
|
|
575
|
+
/>
|
|
576
|
+
</div>
|
|
577
|
+
{/if}
|
|
567
578
|
{/if}
|
|
568
579
|
</div>
|
|
569
580
|
{:else if !forceJson && resultKind == 's3object-list'}
|
|
@@ -612,6 +623,25 @@ let seeS3PreviewFileFromList = '';
|
|
|
612
623
|
>open table preview <ArrowDownFromLine />
|
|
613
624
|
</button>
|
|
614
625
|
{/if}
|
|
626
|
+
{:else if s3object?.s3?.endsWith('.png') || s3object?.s3?.endsWith('.jpeg') || s3object?.s3?.endsWith('.jpg') || s3object?.s3?.endsWith('.webp')}
|
|
627
|
+
{#if seeS3PreviewFileFromList == s3object?.s3}
|
|
628
|
+
<div class="h-full mt-2">
|
|
629
|
+
<img
|
|
630
|
+
alt="preview rendered"
|
|
631
|
+
class="w-auto h-full"
|
|
632
|
+
src={`/api/w/${workspaceId}/job_helpers/load_image_preview?file_key=${s3object.s3}` +
|
|
633
|
+
(s3object.storage ? `&storage=${s3object.storage}` : '')}
|
|
634
|
+
/>
|
|
635
|
+
</div>
|
|
636
|
+
{:else}
|
|
637
|
+
<button
|
|
638
|
+
class="text-secondary whitespace-nowrap flex gap-2 items-center"
|
|
639
|
+
on:click={() => {
|
|
640
|
+
seeS3PreviewFileFromList = s3object?.s3
|
|
641
|
+
}}
|
|
642
|
+
>open image preview <ArrowDownFromLine />
|
|
643
|
+
</button>
|
|
644
|
+
{/if}
|
|
615
645
|
{/if}
|
|
616
646
|
{/each}
|
|
617
647
|
</div>
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
<script>import { MoreVertical } from 'lucide-svelte';
|
|
2
2
|
import Menu from './common/menu/MenuV2.svelte';
|
|
3
|
-
import
|
|
4
|
-
import { twMerge } from 'tailwind-merge';
|
|
3
|
+
import DropdownV2Inner from './DropdownV2Inner.svelte';
|
|
5
4
|
export let items = [];
|
|
6
5
|
export let justifyEnd = true;
|
|
7
|
-
function computeItems() {
|
|
6
|
+
async function computeItems() {
|
|
8
7
|
if (typeof items === 'function') {
|
|
9
|
-
return (items() ?? []).filter((item) => !item.hide);
|
|
8
|
+
return ((await items()) ?? []).filter((item) => !item.hide);
|
|
10
9
|
}
|
|
11
10
|
else {
|
|
12
11
|
return items.filter((item) => !item.hide);
|
|
@@ -26,26 +25,5 @@ function computeItems() {
|
|
|
26
25
|
{/if}
|
|
27
26
|
</div>
|
|
28
27
|
|
|
29
|
-
<
|
|
30
|
-
{#each computeItems() ?? [] as item}
|
|
31
|
-
<MenuItem
|
|
32
|
-
on:click={(e) => item?.action?.(e)}
|
|
33
|
-
href={item?.href}
|
|
34
|
-
disabled={item?.disabled}
|
|
35
|
-
class={twMerge(
|
|
36
|
-
'px-4 py-2 text-primary hover:bg-surface-hover hover:text-primary cursor-pointer text-xs transition-all',
|
|
37
|
-
'flex flex-row gap-2 items-center',
|
|
38
|
-
item?.disabled && 'text-gray-400 cursor-not-allowed',
|
|
39
|
-
item?.type === 'delete' &&
|
|
40
|
-
!item?.disabled &&
|
|
41
|
-
'text-red-500 hover:bg-red-100 hover:text-red-500'
|
|
42
|
-
)}
|
|
43
|
-
>
|
|
44
|
-
{#if item.icon}
|
|
45
|
-
<svelte:component this={item.icon} size={14} />
|
|
46
|
-
{/if}
|
|
47
|
-
{item.displayName}
|
|
48
|
-
</MenuItem>
|
|
49
|
-
{/each}
|
|
50
|
-
</div>
|
|
28
|
+
<DropdownV2Inner items={computeItems} />
|
|
51
29
|
</Menu>
|
|
@@ -17,7 +17,15 @@ declare const __propDef: {
|
|
|
17
17
|
disabled?: boolean | undefined;
|
|
18
18
|
type?: "action" | "delete" | undefined;
|
|
19
19
|
hide?: boolean | undefined;
|
|
20
|
-
}[]) |
|
|
20
|
+
}[]) | (() => Promise<{
|
|
21
|
+
displayName: string;
|
|
22
|
+
action?: ((e: CustomEvent<any>) => void) | undefined;
|
|
23
|
+
icon?: any;
|
|
24
|
+
href?: string | undefined;
|
|
25
|
+
disabled?: boolean | undefined;
|
|
26
|
+
type?: "action" | "delete" | undefined;
|
|
27
|
+
hide?: boolean | undefined;
|
|
28
|
+
}[]>) | undefined;
|
|
21
29
|
justifyEnd?: boolean | undefined;
|
|
22
30
|
};
|
|
23
31
|
events: {
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<script>import { MenuItem } from '@rgossiaux/svelte-headlessui';
|
|
2
|
+
import { Loader2 } from 'lucide-svelte';
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
|
+
export let items = [];
|
|
5
|
+
let computedItems = undefined;
|
|
6
|
+
async function computeItems() {
|
|
7
|
+
if (typeof items === 'function') {
|
|
8
|
+
computedItems = ((await items()) ?? []).filter((item) => !item.hide);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
computedItems = items.filter((item) => !item.hide);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
computeItems();
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
{#if computedItems}
|
|
18
|
+
<div class="flex flex-col">
|
|
19
|
+
{#each computedItems ?? [] as item}
|
|
20
|
+
<MenuItem
|
|
21
|
+
on:click={(e) => item?.action?.(e)}
|
|
22
|
+
href={item?.href}
|
|
23
|
+
disabled={item?.disabled}
|
|
24
|
+
class={twMerge(
|
|
25
|
+
'px-4 py-2 text-primary hover:bg-surface-hover hover:text-primary cursor-pointer text-xs transition-all',
|
|
26
|
+
'flex flex-row gap-2 items-center',
|
|
27
|
+
item?.disabled && 'text-gray-400 cursor-not-allowed',
|
|
28
|
+
item?.type === 'delete' &&
|
|
29
|
+
!item?.disabled &&
|
|
30
|
+
'text-red-500 hover:bg-red-100 hover:text-red-500'
|
|
31
|
+
)}
|
|
32
|
+
>
|
|
33
|
+
{#if item.icon}
|
|
34
|
+
<svelte:component this={item.icon} size={14} />
|
|
35
|
+
{/if}
|
|
36
|
+
{item.displayName}
|
|
37
|
+
</MenuItem>
|
|
38
|
+
{/each}
|
|
39
|
+
</div>
|
|
40
|
+
{:else}
|
|
41
|
+
<Loader2 class="animate-spin mx-auto p-4" size={24} />
|
|
42
|
+
{/if}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
items?: {
|
|
5
|
+
displayName: string;
|
|
6
|
+
action?: ((e: CustomEvent<any>) => void) | undefined;
|
|
7
|
+
icon?: any;
|
|
8
|
+
href?: string | undefined;
|
|
9
|
+
disabled?: boolean | undefined;
|
|
10
|
+
type?: "action" | "delete" | undefined;
|
|
11
|
+
hide?: boolean | undefined;
|
|
12
|
+
}[] | (() => {
|
|
13
|
+
displayName: string;
|
|
14
|
+
action?: ((e: CustomEvent<any>) => void) | undefined;
|
|
15
|
+
icon?: any;
|
|
16
|
+
href?: string | undefined;
|
|
17
|
+
disabled?: boolean | undefined;
|
|
18
|
+
type?: "action" | "delete" | undefined;
|
|
19
|
+
hide?: boolean | undefined;
|
|
20
|
+
}[]) | (() => Promise<{
|
|
21
|
+
displayName: string;
|
|
22
|
+
action?: ((e: CustomEvent<any>) => void) | undefined;
|
|
23
|
+
icon?: any;
|
|
24
|
+
href?: string | undefined;
|
|
25
|
+
disabled?: boolean | undefined;
|
|
26
|
+
type?: "action" | "delete" | undefined;
|
|
27
|
+
hide?: boolean | undefined;
|
|
28
|
+
}[]>) | undefined;
|
|
29
|
+
};
|
|
30
|
+
events: {
|
|
31
|
+
[evt: string]: CustomEvent<any>;
|
|
32
|
+
};
|
|
33
|
+
slots: {};
|
|
34
|
+
};
|
|
35
|
+
export type DropdownV2InnerProps = typeof __propDef.props;
|
|
36
|
+
export type DropdownV2InnerEvents = typeof __propDef.events;
|
|
37
|
+
export type DropdownV2InnerSlots = typeof __propDef.slots;
|
|
38
|
+
export default class DropdownV2Inner extends SvelteComponent<DropdownV2InnerProps, DropdownV2InnerEvents, DropdownV2InnerSlots> {
|
|
39
|
+
}
|
|
40
|
+
export {};
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
<script context="module">
|
|
4
4
|
import '@codingame/monaco-vscode-standalone-languages'
|
|
5
5
|
import '@codingame/monaco-vscode-standalone-typescript-language-features'
|
|
6
|
-
|
|
7
6
|
import processStdContent from '../process.d.ts.txt?raw'
|
|
8
7
|
import windmillFetchContent from '../windmill_fetch.d.ts.txt?raw'
|
|
9
8
|
|
|
@@ -115,7 +114,7 @@ import { MonacoLanguageClient } from 'monaco-languageclient';
|
|
|
115
114
|
import { toSocket, WebSocketMessageReader, WebSocketMessageWriter } from 'vscode-ws-jsonrpc';
|
|
116
115
|
import { CloseAction, ErrorAction, RequestType } from 'vscode-languageclient';
|
|
117
116
|
import { MonacoBinding } from 'y-monaco';
|
|
118
|
-
import { dbSchemas, copilotInfo, codeCompletionSessionEnabled, lspTokenStore, formatOnSave } from '../stores';
|
|
117
|
+
import { dbSchemas, copilotInfo, codeCompletionSessionEnabled, lspTokenStore, formatOnSave, vimMode } from '../stores';
|
|
119
118
|
import { createHash as randomHash, editorConfig, langToExt, updateOptions } from '../editorUtils';
|
|
120
119
|
import { buildWorkerDefinition } from './build_workers';
|
|
121
120
|
import { workspaceStore } from '../stores';
|
|
@@ -128,7 +127,8 @@ import { editor as meditor, languages, KeyCode, KeyMod, Uri as mUri } from 'mona
|
|
|
128
127
|
import EditorTheme from './EditorTheme.svelte';
|
|
129
128
|
import { BIGQUERY_TYPES, MSSQL_TYPES, MYSQL_TYPES, POSTGRES_TYPES, SNOWFLAKE_TYPES } from '../consts';
|
|
130
129
|
import { setupTypeAcquisition } from '../ata/index';
|
|
131
|
-
import {
|
|
130
|
+
import { initWasmTs, parseDeps } from '../infer';
|
|
131
|
+
import { initVim } from './monaco_keybindings';
|
|
132
132
|
// import EditorTheme from './EditorTheme.svelte'
|
|
133
133
|
let divEl = null;
|
|
134
134
|
let editor = null;
|
|
@@ -856,6 +856,21 @@ $: if (yContent && awareness && model && editor) {
|
|
|
856
856
|
}
|
|
857
857
|
let initialized = false;
|
|
858
858
|
let ata = undefined;
|
|
859
|
+
let statusDiv = null;
|
|
860
|
+
function saveDraft() {
|
|
861
|
+
dispatch('saveDraft', code);
|
|
862
|
+
}
|
|
863
|
+
let vimDisposable = undefined;
|
|
864
|
+
$: editor && $vimMode && statusDiv && onVimMode();
|
|
865
|
+
$: !$vimMode && vimDisposable && onVimDisable();
|
|
866
|
+
function onVimDisable() {
|
|
867
|
+
vimDisposable?.dispose();
|
|
868
|
+
}
|
|
869
|
+
function onVimMode() {
|
|
870
|
+
if (editor && statusDiv) {
|
|
871
|
+
vimDisposable = initVim(editor, statusDiv, saveDraft);
|
|
872
|
+
}
|
|
873
|
+
}
|
|
859
874
|
async function loadMonaco() {
|
|
860
875
|
try {
|
|
861
876
|
console.log("Loading Monaco's language client");
|
|
@@ -888,6 +903,7 @@ async function loadMonaco() {
|
|
|
888
903
|
tabSize: lang == 'python' ? 4 : 2,
|
|
889
904
|
folding
|
|
890
905
|
});
|
|
906
|
+
// updateEditorKeybindingsMode(editor, 'vim', undefined)
|
|
891
907
|
let timeoutModel = undefined;
|
|
892
908
|
let ataModel = undefined;
|
|
893
909
|
editor?.onDidChangeModelContent((event) => {
|
|
@@ -939,6 +955,7 @@ async function loadMonaco() {
|
|
|
939
955
|
ata = undefined;
|
|
940
956
|
try {
|
|
941
957
|
closeWebsockets();
|
|
958
|
+
vimDisposable?.dispose();
|
|
942
959
|
model?.dispose();
|
|
943
960
|
editor && editor.dispose();
|
|
944
961
|
console.log('disposed editor');
|
|
@@ -1009,7 +1026,7 @@ async function setTypescriptExtraLibs() {
|
|
|
1009
1026
|
}
|
|
1010
1027
|
}
|
|
1011
1028
|
};
|
|
1012
|
-
await
|
|
1029
|
+
await initWasmTs();
|
|
1013
1030
|
const root = await genRoot(hostname);
|
|
1014
1031
|
console.log('SETUP TYPE ACQUISITION', { root, path });
|
|
1015
1032
|
ata = setupTypeAcquisition({
|
|
@@ -1082,6 +1099,9 @@ async function genRoot(hostname) {
|
|
|
1082
1099
|
|
|
1083
1100
|
<EditorTheme />
|
|
1084
1101
|
<div bind:this={divEl} class="{$$props.class} editor {disabled ? 'disabled' : ''}" />
|
|
1102
|
+
{#if $vimMode}
|
|
1103
|
+
<div class="fixed bottom-0 z-30" bind:this={statusDiv} />
|
|
1104
|
+
{/if}
|
|
1085
1105
|
|
|
1086
1106
|
<style global>
|
|
1087
1107
|
:global(.editor) {
|