windmill-components 1.352.2 → 1.352.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/components/EditorBar.svelte +2 -2
- package/package/components/ResourceEditor.svelte +141 -138
- package/package/components/ResourceEditor.svelte.d.ts +2 -9
- package/package/components/ResourcePicker.svelte +2 -2
- package/package/components/build_workers.js +16 -13
- package/package.json +1 -15
- package/package/components/ResourceEditorDrawer.svelte +0 -45
- package/package/components/ResourceEditorDrawer.svelte.d.ts +0 -21
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
<script>import { ResourceService, VariableService } from '../gen';
|
|
5
5
|
import { workspaceStore } from '../stores';
|
|
6
6
|
import ItemPicker from './ItemPicker.svelte';
|
|
7
|
+
import ResourceEditor from './ResourceEditor.svelte';
|
|
7
8
|
import VariableEditor from './VariableEditor.svelte';
|
|
8
9
|
import Button from './common/button/Button.svelte';
|
|
9
10
|
import HighlightCode from './HighlightCode.svelte';
|
|
@@ -26,7 +27,6 @@ import ScriptGen from './copilot/ScriptGen.svelte';
|
|
|
26
27
|
import { getResetCode } from '../script_helpers';
|
|
27
28
|
import CodeCompletionStatus from './copilot/CodeCompletionStatus.svelte';
|
|
28
29
|
import Popover from './Popover.svelte';
|
|
29
|
-
import ResourceEditorDrawer from './ResourceEditorDrawer.svelte';
|
|
30
30
|
export let lang;
|
|
31
31
|
export let editor;
|
|
32
32
|
export let websocketAlive;
|
|
@@ -470,7 +470,7 @@ $res = json_decode(curl_exec($ch));`)
|
|
|
470
470
|
await ResourceService.listResourceType({ workspace: $workspaceStore ?? 'NO_W' })}
|
|
471
471
|
/>
|
|
472
472
|
{/if}
|
|
473
|
-
<
|
|
473
|
+
<ResourceEditor bind:this={resourceEditor} on:refresh={resourcePicker.openDrawer} />
|
|
474
474
|
<VariableEditor bind:this={variableEditor} on:create={variablePicker.openDrawer} />
|
|
475
475
|
|
|
476
476
|
<div class="flex justify-between items-center overflow-y-auto w-full p-0.5">
|
|
@@ -1,66 +1,58 @@
|
|
|
1
1
|
<script>import { ResourceService } from '../gen';
|
|
2
2
|
import { canWrite, emptyString, isOwner, urlize } from '../utils';
|
|
3
3
|
import { createEventDispatcher } from 'svelte';
|
|
4
|
-
import { Alert, Skeleton } from './common';
|
|
4
|
+
import { Alert, Button, Drawer, Skeleton } from './common';
|
|
5
5
|
import Path from './Path.svelte';
|
|
6
6
|
import Required from './Required.svelte';
|
|
7
7
|
import { userStore, workspaceStore } from '../stores';
|
|
8
|
+
import DrawerContent from './common/drawer/DrawerContent.svelte';
|
|
8
9
|
import SchemaForm from './SchemaForm.svelte';
|
|
9
10
|
import SimpleEditor from './SimpleEditor.svelte';
|
|
10
11
|
import Toggle from './Toggle.svelte';
|
|
11
12
|
import { sendUserToast } from '../toast';
|
|
12
13
|
import TestConnection from './TestConnection.svelte';
|
|
13
|
-
import { Pen } from 'lucide-svelte';
|
|
14
|
+
import { Pen, Save } from 'lucide-svelte';
|
|
14
15
|
import Markdown from 'svelte-exmarkdown';
|
|
15
16
|
import autosize from '../autosize';
|
|
16
17
|
import GfmMarkdown from './GfmMarkdown.svelte';
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export let newResource = false;
|
|
21
|
-
export let hidePath = false;
|
|
22
|
-
let isValid = true;
|
|
23
|
-
let jsonError = '';
|
|
24
|
-
let can_write = true;
|
|
25
|
-
$: canSave = can_write && isValid && jsonError == '';
|
|
26
|
-
let initialPath = path;
|
|
27
|
-
let resourceToEdit = undefined;
|
|
18
|
+
let path = '';
|
|
19
|
+
let initialPath = '';
|
|
20
|
+
let resourceToEdit;
|
|
28
21
|
let description = '';
|
|
29
22
|
let DESCRIPTION_PLACEHOLDER = `Describe what this resource is for`;
|
|
30
|
-
let
|
|
23
|
+
let selectedResourceType;
|
|
24
|
+
let resourceSchema;
|
|
31
25
|
let args = {};
|
|
32
|
-
let
|
|
26
|
+
let can_write = true;
|
|
27
|
+
let loadingSchema = false;
|
|
33
28
|
let linkedVars = [];
|
|
29
|
+
let drawer;
|
|
34
30
|
let resourceTypeInfo = undefined;
|
|
35
|
-
let
|
|
36
|
-
let viewJsonSchema = false;
|
|
31
|
+
let renderDescription = true;
|
|
37
32
|
let rawCode = undefined;
|
|
38
33
|
const dispatch = createEventDispatcher();
|
|
39
|
-
async function initEdit() {
|
|
40
|
-
|
|
34
|
+
export async function initEdit(p) {
|
|
35
|
+
initialPath = p;
|
|
36
|
+
path = p;
|
|
37
|
+
resourceToEdit = undefined;
|
|
38
|
+
resourceSchema = undefined;
|
|
39
|
+
viewJsonSchema = false;
|
|
40
|
+
loadingSchema = true;
|
|
41
|
+
drawer.openDrawer?.();
|
|
42
|
+
resourceToEdit = await ResourceService.getResource({ workspace: $workspaceStore, path: p });
|
|
41
43
|
description = resourceToEdit.description ?? '';
|
|
42
|
-
|
|
43
|
-
args = resourceToEdit?.value ?? {};
|
|
44
|
+
selectedResourceType = resourceToEdit.resource_type;
|
|
44
45
|
loadResourceType();
|
|
46
|
+
args = resourceToEdit.value;
|
|
45
47
|
can_write =
|
|
46
48
|
resourceToEdit.workspace_id == $workspaceStore &&
|
|
47
|
-
canWrite(
|
|
49
|
+
canWrite(p, resourceToEdit.extra_perms ?? {}, $userStore);
|
|
48
50
|
linkedVars = Object.entries(args)
|
|
49
51
|
.filter(([_, v]) => typeof v == 'string' && v == `$var:${initialPath}`)
|
|
50
52
|
.map(([k, _]) => k);
|
|
53
|
+
renderDescription = false;
|
|
51
54
|
}
|
|
52
|
-
|
|
53
|
-
initEdit();
|
|
54
|
-
}
|
|
55
|
-
else if (resource_type) {
|
|
56
|
-
loadResourceType();
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
sendUserToast('Resource type cannot be undefined for new resource creation', true);
|
|
60
|
-
}
|
|
61
|
-
$: rawCode && parseJson();
|
|
62
|
-
$: linkedVars.length > 0 && path && updateArgsFromLinkedVars();
|
|
63
|
-
export async function editResource() {
|
|
55
|
+
async function editResource() {
|
|
64
56
|
if (resourceToEdit) {
|
|
65
57
|
await ResourceService.updateResource({
|
|
66
58
|
workspace: $workspaceStore,
|
|
@@ -69,25 +61,18 @@ export async function editResource() {
|
|
|
69
61
|
});
|
|
70
62
|
sendUserToast(`Updated resource at ${path}`);
|
|
71
63
|
dispatch('refresh', path);
|
|
64
|
+
drawer.closeDrawer?.();
|
|
72
65
|
}
|
|
73
66
|
else {
|
|
74
67
|
throw Error('Cannot edit undefined resourceToEdit');
|
|
75
68
|
}
|
|
76
69
|
}
|
|
77
|
-
export async function createResource() {
|
|
78
|
-
await ResourceService.createResource({
|
|
79
|
-
workspace: $workspaceStore,
|
|
80
|
-
requestBody: { path, value: args, description, resource_type: resource_type }
|
|
81
|
-
});
|
|
82
|
-
sendUserToast(`Updated resource at ${path}`);
|
|
83
|
-
dispatch('refresh', path);
|
|
84
|
-
}
|
|
85
70
|
async function loadResourceType() {
|
|
86
|
-
if (
|
|
71
|
+
if (selectedResourceType) {
|
|
87
72
|
try {
|
|
88
73
|
const resourceType = await ResourceService.getResourceType({
|
|
89
74
|
workspace: $workspaceStore,
|
|
90
|
-
path:
|
|
75
|
+
path: selectedResourceType
|
|
91
76
|
});
|
|
92
77
|
resourceTypeInfo = resourceType;
|
|
93
78
|
if (resourceType.schema) {
|
|
@@ -105,6 +90,9 @@ async function loadResourceType() {
|
|
|
105
90
|
}
|
|
106
91
|
loadingSchema = false;
|
|
107
92
|
}
|
|
93
|
+
let isValid = true;
|
|
94
|
+
let jsonError = '';
|
|
95
|
+
$: rawCode && parseJson();
|
|
108
96
|
function parseJson() {
|
|
109
97
|
try {
|
|
110
98
|
args = JSON.parse(rawCode ?? '');
|
|
@@ -114,11 +102,13 @@ function parseJson() {
|
|
|
114
102
|
jsonError = e.message;
|
|
115
103
|
}
|
|
116
104
|
}
|
|
105
|
+
$: linkedVars.length > 0 && path && updateArgsFromLinkedVars();
|
|
117
106
|
function updateArgsFromLinkedVars() {
|
|
118
107
|
linkedVars.forEach((k) => {
|
|
119
108
|
args[k] = `$var:${path}`;
|
|
120
109
|
});
|
|
121
110
|
}
|
|
111
|
+
let viewJsonSchema = false;
|
|
122
112
|
function switchTab(asJson) {
|
|
123
113
|
viewJsonSchema = asJson;
|
|
124
114
|
if (asJson) {
|
|
@@ -130,105 +120,118 @@ function switchTab(asJson) {
|
|
|
130
120
|
}
|
|
131
121
|
</script>
|
|
132
122
|
|
|
133
|
-
<
|
|
134
|
-
<
|
|
135
|
-
{
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
123
|
+
<Drawer bind:this={drawer} size="800px">
|
|
124
|
+
<DrawerContent
|
|
125
|
+
title={resourceToEdit ? 'Edit ' + resourceToEdit.path : 'Add a resource'}
|
|
126
|
+
on:close={drawer.closeDrawer}
|
|
127
|
+
>
|
|
128
|
+
<div>
|
|
129
|
+
<div class="flex flex-col gap-3 py-3">
|
|
130
|
+
<div>
|
|
131
|
+
{#if !can_write}
|
|
132
|
+
<div class="m-2">
|
|
133
|
+
<Alert type="warning" title="Only read access">
|
|
134
|
+
You only have read access to this resource and cannot edit it
|
|
135
|
+
</Alert>
|
|
136
|
+
</div>
|
|
137
|
+
{/if}
|
|
138
|
+
<Path
|
|
139
|
+
disabled={initialPath != '' && !isOwner(initialPath, $userStore, $workspaceStore)}
|
|
140
|
+
bind:path
|
|
141
|
+
{initialPath}
|
|
142
|
+
namePlaceholder="resource"
|
|
143
|
+
kind="resource"
|
|
144
|
+
/>
|
|
145
|
+
</div>
|
|
146
|
+
{#if !emptyString(resourceTypeInfo?.description)}
|
|
147
|
+
<h4 class="mt-4 mb-2">{resourceTypeInfo?.name} description</h4>
|
|
148
|
+
<div class="text-sm">
|
|
149
|
+
<Markdown md={urlize(resourceTypeInfo?.description ?? '', 'md')} />
|
|
142
150
|
</div>
|
|
143
151
|
{/if}
|
|
144
|
-
<
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
{#if !emptyString(resourceTypeInfo?.description)}
|
|
155
|
-
<h4 class="mt-4 mb-2">{resourceTypeInfo?.name} description</h4>
|
|
156
|
-
<div class="text-sm">
|
|
157
|
-
<Markdown md={urlize(resourceTypeInfo?.description ?? '', 'md')} />
|
|
158
|
-
</div>
|
|
159
|
-
{/if}
|
|
160
|
-
<h4 class="mt-4 inline-flex items-center gap-4"
|
|
161
|
-
>Resource description <Required required={false} />
|
|
162
|
-
{#if can_write}
|
|
163
|
-
<div class="flex gap-1 items-center">
|
|
164
|
-
<Toggle size="xs" bind:checked={editDescription} />
|
|
165
|
-
<Pen size={14} />
|
|
166
|
-
</div>
|
|
167
|
-
{/if}</h4
|
|
168
|
-
>
|
|
152
|
+
<h4 class="mt-4 inline-flex items-center gap-4"
|
|
153
|
+
>Resource description <Required required={false} />
|
|
154
|
+
{#if can_write}
|
|
155
|
+
<div class="flex gap-1 items-center">
|
|
156
|
+
<Toggle size="xs" bind:checked={renderDescription} />
|
|
157
|
+
<Pen size={14} />
|
|
158
|
+
</div>
|
|
159
|
+
{/if}</h4
|
|
160
|
+
>
|
|
169
161
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
162
|
+
{#if can_write && renderDescription}
|
|
163
|
+
<div>
|
|
164
|
+
<div class="flex flex-row-reverse text-2xs text-tertiary -mt-1">GH Markdown</div>
|
|
165
|
+
<textarea
|
|
166
|
+
disabled={!can_write}
|
|
167
|
+
use:autosize
|
|
168
|
+
bind:value={description}
|
|
169
|
+
placeholder={DESCRIPTION_PLACEHOLDER}
|
|
170
|
+
/>
|
|
171
|
+
</div>
|
|
172
|
+
{:else if description == undefined || description == ''}
|
|
173
|
+
<div class="text-sm text-tertiary">No description provided</div>
|
|
174
|
+
{:else}
|
|
175
|
+
<div class="mt-2" />
|
|
184
176
|
|
|
185
|
-
|
|
186
|
-
{/if}
|
|
187
|
-
<div class="flex w-full justify-between max-w-lg items-center mt-4">
|
|
188
|
-
<Toggle
|
|
189
|
-
on:change={(e) => switchTab(e.detail)}
|
|
190
|
-
options={{
|
|
191
|
-
right: 'As JSON'
|
|
192
|
-
}}
|
|
193
|
-
/>
|
|
194
|
-
<TestConnection resourceType={resourceToEdit?.resource_type} {args} />
|
|
195
|
-
</div>
|
|
196
|
-
<div class="text-sm">
|
|
197
|
-
{#if loadingSchema}
|
|
198
|
-
<Skeleton layout={[[4]]} />
|
|
199
|
-
{:else if !viewJsonSchema && resourceSchema && resourceSchema?.properties}
|
|
200
|
-
<SchemaForm
|
|
201
|
-
onlyMaskPassword
|
|
202
|
-
noDelete
|
|
203
|
-
disabled={!can_write}
|
|
204
|
-
compact
|
|
205
|
-
schema={resourceSchema}
|
|
206
|
-
bind:args
|
|
207
|
-
bind:isValid
|
|
208
|
-
/>
|
|
209
|
-
{:else if !can_write}
|
|
210
|
-
<input type="text" disabled value={rawCode} />
|
|
211
|
-
{:else}
|
|
212
|
-
{#if !viewJsonSchema}
|
|
213
|
-
<p class="italic text-secondary text-xs mb-4">
|
|
214
|
-
No corresponding resource type found in your workspace for {resource_type}. Define the
|
|
215
|
-
value in JSON directly
|
|
216
|
-
</p>
|
|
177
|
+
<GfmMarkdown md={description} />
|
|
217
178
|
{/if}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
autoHeight
|
|
225
|
-
class="editor"
|
|
226
|
-
lang="json"
|
|
227
|
-
bind:code={rawCode}
|
|
228
|
-
fixedOverflowWidgets={false}
|
|
179
|
+
<div class="flex w-full justify-between max-w-lg items-center mt-4">
|
|
180
|
+
<Toggle
|
|
181
|
+
on:change={(e) => switchTab(e.detail)}
|
|
182
|
+
options={{
|
|
183
|
+
right: 'As JSON'
|
|
184
|
+
}}
|
|
229
185
|
/>
|
|
186
|
+
<TestConnection resourceType={resourceToEdit?.resource_type} {args} />
|
|
230
187
|
</div>
|
|
231
|
-
|
|
188
|
+
<div class="text-sm">
|
|
189
|
+
{#if loadingSchema}
|
|
190
|
+
<Skeleton layout={[[4]]} />
|
|
191
|
+
{:else if !viewJsonSchema && resourceSchema && resourceSchema?.properties}
|
|
192
|
+
<SchemaForm
|
|
193
|
+
onlyMaskPassword
|
|
194
|
+
noDelete
|
|
195
|
+
disabled={!can_write}
|
|
196
|
+
compact
|
|
197
|
+
schema={resourceSchema}
|
|
198
|
+
bind:args
|
|
199
|
+
bind:isValid
|
|
200
|
+
/>
|
|
201
|
+
{:else if !can_write}
|
|
202
|
+
<input type="text" disabled value={rawCode} />
|
|
203
|
+
{:else}
|
|
204
|
+
{#if !viewJsonSchema}
|
|
205
|
+
<p class="italic text-secondary text-xs mb-4">
|
|
206
|
+
No corresponding resource type found in your workspace for {selectedResourceType}.
|
|
207
|
+
Define the value in JSON directly
|
|
208
|
+
</p>
|
|
209
|
+
{/if}
|
|
210
|
+
|
|
211
|
+
{#if !emptyString(jsonError)}<span
|
|
212
|
+
class="text-red-400 text-xs mb-1 flex flex-row-reverse">{jsonError}</span
|
|
213
|
+
>{:else}<div class="py-2" />{/if}
|
|
214
|
+
<div class="h-full w-full border p-1 rounded">
|
|
215
|
+
<SimpleEditor
|
|
216
|
+
autoHeight
|
|
217
|
+
class="editor"
|
|
218
|
+
lang="json"
|
|
219
|
+
bind:code={rawCode}
|
|
220
|
+
fixedOverflowWidgets={false}
|
|
221
|
+
/>
|
|
222
|
+
</div>
|
|
223
|
+
{/if}
|
|
224
|
+
</div>
|
|
225
|
+
</div>
|
|
232
226
|
</div>
|
|
233
|
-
|
|
234
|
-
|
|
227
|
+
<svelte:fragment slot="actions">
|
|
228
|
+
<Button
|
|
229
|
+
startIcon={{ icon: Save }}
|
|
230
|
+
on:click={editResource}
|
|
231
|
+
disabled={!can_write || !isValid || jsonError != ''}
|
|
232
|
+
>
|
|
233
|
+
Save
|
|
234
|
+
</Button>
|
|
235
|
+
</svelte:fragment>
|
|
236
|
+
</DrawerContent>
|
|
237
|
+
</Drawer>
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
|
-
|
|
5
|
-
resource_type?: string | undefined;
|
|
6
|
-
path?: string | undefined;
|
|
7
|
-
newResource?: boolean | undefined;
|
|
8
|
-
hidePath?: boolean | undefined;
|
|
9
|
-
editResource?: (() => Promise<void>) | undefined;
|
|
10
|
-
createResource?: (() => Promise<void>) | undefined;
|
|
4
|
+
initEdit?: ((p: string) => Promise<void>) | undefined;
|
|
11
5
|
};
|
|
12
6
|
events: {
|
|
13
7
|
refresh: CustomEvent<any>;
|
|
@@ -20,7 +14,6 @@ export type ResourceEditorProps = typeof __propDef.props;
|
|
|
20
14
|
export type ResourceEditorEvents = typeof __propDef.events;
|
|
21
15
|
export type ResourceEditorSlots = typeof __propDef.slots;
|
|
22
16
|
export default class ResourceEditor extends SvelteComponent<ResourceEditorProps, ResourceEditorEvents, ResourceEditorSlots> {
|
|
23
|
-
get
|
|
24
|
-
get createResource(): () => Promise<void>;
|
|
17
|
+
get initEdit(): (p: string) => Promise<void>;
|
|
25
18
|
}
|
|
26
19
|
export {};
|
|
@@ -5,10 +5,10 @@ import Select from './apps/svelte-select/lib/index';
|
|
|
5
5
|
import { SELECT_INPUT_DEFAULT_STYLE } from '../defaults';
|
|
6
6
|
import AppConnect from './AppConnectDrawer.svelte';
|
|
7
7
|
import { Button } from './common';
|
|
8
|
+
import ResourceEditor from './ResourceEditor.svelte';
|
|
8
9
|
import DBSchemaExplorer from './DBSchemaExplorer.svelte';
|
|
9
10
|
import DarkModeObserver from './DarkModeObserver.svelte';
|
|
10
11
|
import { Pen, Plus, RotateCw } from 'lucide-svelte';
|
|
11
|
-
import ResourceEditorDrawer from './ResourceEditorDrawer.svelte';
|
|
12
12
|
const dispatch = createEventDispatcher();
|
|
13
13
|
export let initialValue = undefined;
|
|
14
14
|
export let value = initialValue;
|
|
@@ -73,7 +73,7 @@ let darkMode = false;
|
|
|
73
73
|
bind:this={appConnect}
|
|
74
74
|
/>
|
|
75
75
|
|
|
76
|
-
<
|
|
76
|
+
<ResourceEditor
|
|
77
77
|
bind:this={resourceEditor}
|
|
78
78
|
on:refresh={async (e) => {
|
|
79
79
|
await loadResources(resourceType)
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
// inline to make it a library component easy to be imported until this if fixed: https://github.com/vitejs/vite/pull/16418
|
|
2
|
+
// import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker&inline'
|
|
3
|
+
// import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker&inline'
|
|
4
|
+
// import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker&inline'
|
|
5
|
+
// import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker&inline'
|
|
6
|
+
// import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker&inline'
|
|
7
|
+
import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker';
|
|
8
|
+
import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker';
|
|
9
|
+
import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker';
|
|
10
|
+
import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker';
|
|
11
|
+
import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
|
|
1
12
|
export function buildWorkerDefinition(workerPath, basePath, useModuleWorker) {
|
|
2
13
|
const monWin = self;
|
|
3
14
|
const workerOverrideGlobals = {
|
|
@@ -18,30 +29,22 @@ export function buildWorkerDefinition(workerPath, basePath, useModuleWorker) {
|
|
|
18
29
|
const monEnv = monWin.MonacoEnvironment;
|
|
19
30
|
monEnv.workerOverrideGlobals = workerOverrideGlobals;
|
|
20
31
|
const getWorker = (_, label) => {
|
|
21
|
-
const buildWorker = (globals, label, workerName, editorType) => {
|
|
22
|
-
globals.workerOptions.name = label;
|
|
23
|
-
const workerFilename = globals.workerOptions.type === 'module' ? `${workerName}-es.js` : `${workerName}-iife.js`;
|
|
24
|
-
const workerPathLocal = `${globals.workerPath}/${workerFilename}`;
|
|
25
|
-
const workerUrl = new URL(workerPathLocal, globals.basePath);
|
|
26
|
-
console.log(`${editorType}: url: ${workerUrl.href} created from basePath: ${globals.basePath} and file: ${workerPathLocal}`);
|
|
27
|
-
return new Worker(workerUrl.href, globals.workerOptions);
|
|
28
|
-
};
|
|
29
32
|
console.log('getWorker: workerId: ' + _ + ' label: ' + label);
|
|
30
33
|
switch (label) {
|
|
31
34
|
case 'template':
|
|
32
35
|
case 'typescript':
|
|
33
36
|
case 'javascript':
|
|
34
|
-
return
|
|
37
|
+
return new tsWorker();
|
|
35
38
|
case 'html':
|
|
36
39
|
case 'handlebars':
|
|
37
40
|
case 'razor':
|
|
38
|
-
return
|
|
41
|
+
return new htmlWorker();
|
|
39
42
|
case 'css':
|
|
40
43
|
case 'scss':
|
|
41
44
|
case 'less':
|
|
42
|
-
return
|
|
45
|
+
return new cssWorker();
|
|
43
46
|
case 'json':
|
|
44
|
-
return
|
|
47
|
+
return new jsonWorker();
|
|
45
48
|
case 'graphql':
|
|
46
49
|
const workerFilename = `graphql.worker.bundle.js`;
|
|
47
50
|
const workerPathLocal = `${workerOverrideGlobals.workerPath}/${workerFilename}`;
|
|
@@ -50,7 +53,7 @@ export function buildWorkerDefinition(workerPath, basePath, useModuleWorker) {
|
|
|
50
53
|
name: label
|
|
51
54
|
});
|
|
52
55
|
default:
|
|
53
|
-
return
|
|
56
|
+
return new editorWorker();
|
|
54
57
|
}
|
|
55
58
|
};
|
|
56
59
|
monWin.MonacoEnvironment.getWorker = getWorker;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "windmill-components",
|
|
3
|
-
"version": "1.352.
|
|
3
|
+
"version": "1.352.4",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"dev": "vite dev",
|
|
6
6
|
"build": "vite build",
|
|
@@ -115,7 +115,6 @@
|
|
|
115
115
|
"highlight.js": "^11.8.0",
|
|
116
116
|
"lucide-svelte": "^0.293.0",
|
|
117
117
|
"monaco-editor": "npm:@codingame/monaco-editor-treemended@>=1.83.5 <1.84.0",
|
|
118
|
-
"monaco-editor-workers": "^0.44.0",
|
|
119
118
|
"monaco-graphql": "^1.5.1",
|
|
120
119
|
"monaco-languageclient": "~7.0.1",
|
|
121
120
|
"ol": "^7.4.0",
|
|
@@ -245,16 +244,6 @@
|
|
|
245
244
|
"svelte": "./package/components/SchemaForm.svelte",
|
|
246
245
|
"default": "./package/components/SchemaForm.svelte"
|
|
247
246
|
},
|
|
248
|
-
"./components/EditableSchemaWrapper.svelte": {
|
|
249
|
-
"types": "./package/components/EditableSchemaWrapper.svelte.d.ts",
|
|
250
|
-
"svelte": "./package/components/EditableSchemaWrapper.svelte",
|
|
251
|
-
"default": "./package/components/EditableSchemaWrapper.svelte"
|
|
252
|
-
},
|
|
253
|
-
"./components/ResourceEditor.svelte": {
|
|
254
|
-
"types": "./package/components/ResourceEditor.svelte.d.ts",
|
|
255
|
-
"svelte": "./package/components/ResourceEditor.svelte",
|
|
256
|
-
"default": "./package/components/ResourceEditor.svelte"
|
|
257
|
-
},
|
|
258
247
|
"./components/SchemaEditor.svelte": {
|
|
259
248
|
"types": "./package/components/EditableSchemaForm.svelte.d.ts",
|
|
260
249
|
"svelte": "./package/components/EditableSchemaForm.svelte",
|
|
@@ -387,9 +376,6 @@
|
|
|
387
376
|
"components/SchemaEditor.svelte": [
|
|
388
377
|
"./package/components/SchemaEditor.svelte.d.ts"
|
|
389
378
|
],
|
|
390
|
-
"components/EditableSchemaWrapper.svelte": [
|
|
391
|
-
"./package/components/EditableSchemaWrapper.svelte.d.ts"
|
|
392
|
-
],
|
|
393
379
|
"utils": [
|
|
394
380
|
"./package/utils.d.ts"
|
|
395
381
|
],
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
<script>import ResourceEditor from './ResourceEditor.svelte';
|
|
2
|
-
import { Button, Drawer } from './common';
|
|
3
|
-
import DrawerContent from './common/drawer/DrawerContent.svelte';
|
|
4
|
-
import { Save } from 'lucide-svelte';
|
|
5
|
-
let drawer;
|
|
6
|
-
let canSave = true;
|
|
7
|
-
let resource_type = undefined;
|
|
8
|
-
let resourceEditor = undefined;
|
|
9
|
-
let path = undefined;
|
|
10
|
-
export async function initEdit(p) {
|
|
11
|
-
resource_type = undefined;
|
|
12
|
-
path = p;
|
|
13
|
-
drawer.openDrawer?.();
|
|
14
|
-
}
|
|
15
|
-
export async function initNew(resourceType) {
|
|
16
|
-
path = undefined;
|
|
17
|
-
resource_type = resourceType;
|
|
18
|
-
drawer.openDrawer?.();
|
|
19
|
-
}
|
|
20
|
-
</script>
|
|
21
|
-
|
|
22
|
-
<Drawer bind:this={drawer} size="800px">
|
|
23
|
-
<DrawerContent title={path ? 'Edit ' + path : 'Add a resource'} on:close={drawer.closeDrawer}>
|
|
24
|
-
<ResourceEditor
|
|
25
|
-
newResource
|
|
26
|
-
{path}
|
|
27
|
-
{resource_type}
|
|
28
|
-
on:refresh
|
|
29
|
-
bind:this={resourceEditor}
|
|
30
|
-
bind:canSave
|
|
31
|
-
/>
|
|
32
|
-
<svelte:fragment slot="actions">
|
|
33
|
-
<Button
|
|
34
|
-
startIcon={{ icon: Save }}
|
|
35
|
-
on:click={() => {
|
|
36
|
-
resourceEditor?.editResource()
|
|
37
|
-
drawer.closeDrawer()
|
|
38
|
-
}}
|
|
39
|
-
disabled={!canSave}
|
|
40
|
-
>
|
|
41
|
-
Save
|
|
42
|
-
</Button>
|
|
43
|
-
</svelte:fragment>
|
|
44
|
-
</DrawerContent>
|
|
45
|
-
</Drawer>
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { SvelteComponent } from "svelte";
|
|
2
|
-
declare const __propDef: {
|
|
3
|
-
props: {
|
|
4
|
-
initEdit?: ((p: string) => Promise<void>) | undefined;
|
|
5
|
-
initNew?: ((resourceType: string) => Promise<void>) | undefined;
|
|
6
|
-
};
|
|
7
|
-
events: {
|
|
8
|
-
refresh: CustomEvent<any>;
|
|
9
|
-
} & {
|
|
10
|
-
[evt: string]: CustomEvent<any>;
|
|
11
|
-
};
|
|
12
|
-
slots: {};
|
|
13
|
-
};
|
|
14
|
-
export type ResourceEditorDrawerProps = typeof __propDef.props;
|
|
15
|
-
export type ResourceEditorDrawerEvents = typeof __propDef.events;
|
|
16
|
-
export type ResourceEditorDrawerSlots = typeof __propDef.slots;
|
|
17
|
-
export default class ResourceEditorDrawer extends SvelteComponent<ResourceEditorDrawerProps, ResourceEditorDrawerEvents, ResourceEditorDrawerSlots> {
|
|
18
|
-
get initEdit(): (p: string) => Promise<void>;
|
|
19
|
-
get initNew(): (resourceType: string) => Promise<void>;
|
|
20
|
-
}
|
|
21
|
-
export {};
|