windmill-components 1.35.1 → 1.35.42
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/components/ArgInput.svelte +2 -2
- package/components/ArgInput.svelte.d.ts +2 -2
- package/components/Editor.svelte +7 -82
- package/components/Editor.svelte.d.ts +0 -2
- package/components/IconedResourceType.svelte +1 -1
- package/components/InputTransformForm.svelte +2 -2
- package/components/SchemaEditor.svelte +2 -2
- package/components/SimpleEditor.svelte +143 -0
- package/components/SimpleEditor.svelte.d.ts +35 -0
- package/components/flows/FlowSettings.svelte +2 -2
- package/editorUtils.d.ts +25 -0
- package/editorUtils.js +43 -0
- package/package.json +3 -1
|
@@ -4,13 +4,13 @@ import { setInputCat as computeInputCat } from '../utils';
|
|
|
4
4
|
import { Button, Tooltip } from 'flowbite-svelte';
|
|
5
5
|
import { createEventDispatcher } from 'svelte';
|
|
6
6
|
import Icon from 'svelte-awesome';
|
|
7
|
-
import Editor from './Editor.svelte';
|
|
8
7
|
import FieldHeader from './FieldHeader.svelte';
|
|
9
8
|
import ObjectResourceInput from './ObjectResourceInput.svelte';
|
|
10
9
|
import ObjectTypeNarrowing from './ObjectTypeNarrowing.svelte';
|
|
11
10
|
import ResourcePicker from './ResourcePicker.svelte';
|
|
12
11
|
import StringTypeNarrowing from './StringTypeNarrowing.svelte';
|
|
13
12
|
import SchemaForm from './SchemaForm.svelte';
|
|
13
|
+
import SimpleEditor from './SimpleEditor.svelte';
|
|
14
14
|
export let label = '';
|
|
15
15
|
export let value;
|
|
16
16
|
export let defaultValue = undefined;
|
|
@@ -275,7 +275,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
|
|
|
275
275
|
<input class="inline-block" type="datetime-local" bind:value />
|
|
276
276
|
{:else if inputCat == 'sql'}
|
|
277
277
|
<div class="border rounded mb-4 w-full border-gray-700">
|
|
278
|
-
<
|
|
278
|
+
<SimpleEditor
|
|
279
279
|
on:focus={() => dispatch('focus')}
|
|
280
280
|
on:blur={() => dispatch('blur')}
|
|
281
281
|
bind:this={editor}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
2
|
import { type InputCat } from '../utils';
|
|
3
|
-
import Editor from './Editor.svelte';
|
|
4
3
|
import type { SchemaProperty } from '../common';
|
|
4
|
+
import SimpleEditor from './SimpleEditor.svelte';
|
|
5
5
|
declare const __propDef: {
|
|
6
6
|
props: {
|
|
7
7
|
label?: string | undefined;
|
|
@@ -27,7 +27,7 @@ declare const __propDef: {
|
|
|
27
27
|
properties?: {
|
|
28
28
|
[name: string]: SchemaProperty;
|
|
29
29
|
} | undefined;
|
|
30
|
-
editor?:
|
|
30
|
+
editor?: SimpleEditor | undefined;
|
|
31
31
|
evalValueToRaw?: (() => void) | undefined;
|
|
32
32
|
inputCat?: InputCat | undefined;
|
|
33
33
|
};
|
package/components/Editor.svelte
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
<script context="module">import * as monaco from 'monaco-editor';
|
|
2
|
-
monaco.languages.typescript.javascriptDefaults.setCompilerOptions({
|
|
3
|
-
target: monaco.languages.typescript.ScriptTarget.Latest,
|
|
4
|
-
allowNonTsExtensions: true,
|
|
5
|
-
noLib: true
|
|
6
|
-
});
|
|
7
2
|
monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
|
|
8
3
|
target: monaco.languages.typescript.ScriptTarget.Latest,
|
|
9
4
|
allowNonTsExtensions: true,
|
|
@@ -14,25 +9,19 @@ monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({
|
|
|
14
9
|
noSuggestionDiagnostics: true,
|
|
15
10
|
noSyntaxValidation: true
|
|
16
11
|
});
|
|
17
|
-
monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
|
|
18
|
-
validate: true,
|
|
19
|
-
allowComments: false,
|
|
20
|
-
schemas: [],
|
|
21
|
-
enableSchemaRequest: true
|
|
22
|
-
});
|
|
23
12
|
</script>
|
|
24
13
|
|
|
25
14
|
<script>import { browser, dev } from '$app/env';
|
|
26
15
|
import { page } from '$app/stores';
|
|
27
16
|
import { sendUserToast } from '../utils';
|
|
28
17
|
import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
|
|
29
|
-
import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker';
|
|
30
18
|
import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker';
|
|
31
19
|
import { buildWorkerDefinition } from 'monaco-editor-workers';
|
|
32
20
|
import { createEventDispatcher, onDestroy, onMount } from 'svelte';
|
|
33
21
|
import getMessageServiceOverride from 'vscode/service-override/messages';
|
|
34
22
|
import { StandaloneServices } from 'vscode/services';
|
|
35
23
|
import { DENO_INIT_CODE_CLEAR, PYTHON_INIT_CODE_CLEAR } from '../script_helpers';
|
|
24
|
+
import { createHash as randomHash, editorConfig, langToExt, updateOptions } from '../editorUtils';
|
|
36
25
|
StandaloneServices.initialize({
|
|
37
26
|
...getMessageServiceOverride(document.body)
|
|
38
27
|
});
|
|
@@ -41,13 +30,11 @@ let editor;
|
|
|
41
30
|
export let deno = false;
|
|
42
31
|
export let lang = deno ? 'typescript' : 'python';
|
|
43
32
|
export let code = '';
|
|
44
|
-
export let hash = (
|
|
33
|
+
export let hash = randomHash();
|
|
45
34
|
export let cmdEnterAction = undefined;
|
|
46
35
|
export let formatAction = undefined;
|
|
47
36
|
export let automaticLayout = true;
|
|
48
37
|
export let websocketAlive = { pyright: false, black: false, deno: false };
|
|
49
|
-
export let extraLib = '';
|
|
50
|
-
export let extraLibPath = '';
|
|
51
38
|
export let shouldBindKey = true;
|
|
52
39
|
let websockets = [];
|
|
53
40
|
let websocketInterval;
|
|
@@ -64,10 +51,7 @@ if (browser) {
|
|
|
64
51
|
// @ts-ignore
|
|
65
52
|
self.MonacoEnvironment = {
|
|
66
53
|
getWorker: function (_moduleId, label) {
|
|
67
|
-
if (label === '
|
|
68
|
-
return new jsonWorker();
|
|
69
|
-
}
|
|
70
|
-
else if (label === 'typescript' || label === 'javascript') {
|
|
54
|
+
if (label === 'typescript' || label === 'javascript') {
|
|
71
55
|
return new tsWorker();
|
|
72
56
|
}
|
|
73
57
|
else {
|
|
@@ -85,22 +69,6 @@ export function insertAtCursor(code) {
|
|
|
85
69
|
editor.trigger('keyboard', 'type', { text: code });
|
|
86
70
|
}
|
|
87
71
|
}
|
|
88
|
-
function langToExt(lang) {
|
|
89
|
-
switch (lang) {
|
|
90
|
-
case 'typescript':
|
|
91
|
-
return 'ts';
|
|
92
|
-
case 'python':
|
|
93
|
-
return 'py';
|
|
94
|
-
case 'javascript':
|
|
95
|
-
return 'js';
|
|
96
|
-
case 'json':
|
|
97
|
-
return 'json';
|
|
98
|
-
case 'sql':
|
|
99
|
-
return 'sql';
|
|
100
|
-
default:
|
|
101
|
-
return 'unknown';
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
72
|
export function insertAtBeginning(code) {
|
|
105
73
|
if (editor) {
|
|
106
74
|
const range = { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 1 };
|
|
@@ -336,28 +304,8 @@ async function closeWebsockets() {
|
|
|
336
304
|
}
|
|
337
305
|
async function loadMonaco() {
|
|
338
306
|
const model = monaco.editor.createModel(code, lang, monaco.Uri.parse(uri));
|
|
339
|
-
model.updateOptions(
|
|
340
|
-
editor = monaco.editor.create(divEl,
|
|
341
|
-
model: model,
|
|
342
|
-
value: code,
|
|
343
|
-
language: lang,
|
|
344
|
-
automaticLayout,
|
|
345
|
-
readOnly: false,
|
|
346
|
-
fixedOverflowWidgets: true,
|
|
347
|
-
autoDetectHighContrast: true,
|
|
348
|
-
//lineNumbers: 'off',
|
|
349
|
-
//lineDecorationsWidth: 0,
|
|
350
|
-
lineNumbersMinChars: 4,
|
|
351
|
-
lineNumbers: (ln) => '<span class="pr-4 text-gray-400">' + ln + '</span>',
|
|
352
|
-
folding: false,
|
|
353
|
-
scrollBeyondLastLine: false,
|
|
354
|
-
minimap: {
|
|
355
|
-
enabled: false
|
|
356
|
-
},
|
|
357
|
-
lightbulb: {
|
|
358
|
-
enabled: true
|
|
359
|
-
}
|
|
360
|
-
});
|
|
307
|
+
model.updateOptions(updateOptions);
|
|
308
|
+
editor = monaco.editor.create(divEl, editorConfig(model, code, lang, automaticLayout));
|
|
361
309
|
if (shouldBindKey) {
|
|
362
310
|
editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, function () {
|
|
363
311
|
format();
|
|
@@ -390,14 +338,6 @@ async function loadMonaco() {
|
|
|
390
338
|
editor.onDidBlurEditorText(() => {
|
|
391
339
|
dispatch('blur');
|
|
392
340
|
});
|
|
393
|
-
if (lang == 'javascript' && extraLib != '' && extraLibPath != '') {
|
|
394
|
-
monaco.languages.typescript.javascriptDefaults.setExtraLibs([
|
|
395
|
-
{
|
|
396
|
-
content: extraLib,
|
|
397
|
-
filePath: extraLibPath
|
|
398
|
-
}
|
|
399
|
-
]);
|
|
400
|
-
}
|
|
401
341
|
if (lang == 'python' || deno) {
|
|
402
342
|
reloadWebsocket();
|
|
403
343
|
}
|
|
@@ -433,20 +373,5 @@ onDestroy(() => {
|
|
|
433
373
|
padding-left: 0px;
|
|
434
374
|
padding-right: 0px;
|
|
435
375
|
/* stylelint-disable-next-line unit-allowed-list */
|
|
436
|
-
height: 80vh
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
.small-editor {
|
|
440
|
-
/* stylelint-disable-next-line unit-allowed-list */
|
|
441
|
-
height: 26vh;
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
.few-lines-editor {
|
|
445
|
-
/* stylelint-disable-next-line unit-allowed-list */
|
|
446
|
-
height: 80px;
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
.two-lines-editor {
|
|
450
|
-
/* stylelint-disable-next-line unit-allowed-list */
|
|
451
|
-
height: 40px;
|
|
452
|
-
}</style>
|
|
376
|
+
height: 80vh
|
|
377
|
+
}</style>
|
|
@@ -14,8 +14,6 @@ declare const __propDef: {
|
|
|
14
14
|
black: boolean;
|
|
15
15
|
deno: boolean;
|
|
16
16
|
} | undefined;
|
|
17
|
-
extraLib?: string | undefined;
|
|
18
|
-
extraLibPath?: string | undefined;
|
|
19
17
|
shouldBindKey?: boolean | undefined;
|
|
20
18
|
getCode?: (() => string) | undefined;
|
|
21
19
|
insertAtCursor?: ((code: string) => void) | undefined;
|
|
@@ -42,7 +42,7 @@ export let width = '24px';
|
|
|
42
42
|
{:else if name === 'slack'}
|
|
43
43
|
<Slack {height} {width} />
|
|
44
44
|
{:else if name === 'github'}
|
|
45
|
-
<
|
|
45
|
+
<GithubIcon />
|
|
46
46
|
{:else if name === 'gmail'}
|
|
47
47
|
<GmailIcon {height} {width} />
|
|
48
48
|
{:else if name === 'gsheets'}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { Button, Tooltip } from 'flowbite-svelte';
|
|
3
3
|
import Icon from 'svelte-awesome';
|
|
4
4
|
import ArgInput from './ArgInput.svelte';
|
|
5
|
-
import Editor from './Editor.svelte';
|
|
6
5
|
import FieldHeader from './FieldHeader.svelte';
|
|
7
6
|
import DynamicInputHelpBox from './flows/DynamicInputHelpBox.svelte';
|
|
8
7
|
import { codeToStaticTemplate, getDefaultExpr, isCodeInjection } from './flows/utils';
|
|
9
8
|
import OverlayPropertyPicker from './propertyPicker/OverlayPropertyPicker.svelte';
|
|
9
|
+
import SimpleEditor from './SimpleEditor.svelte';
|
|
10
10
|
import Toggle from './Toggle.svelte';
|
|
11
11
|
export let schema;
|
|
12
12
|
export let arg;
|
|
@@ -188,7 +188,7 @@ $: checked = propertyType == 'javascript';
|
|
|
188
188
|
}}
|
|
189
189
|
>
|
|
190
190
|
<div class="border rounded p-2 mt-2 border-gray-300">
|
|
191
|
-
<
|
|
191
|
+
<SimpleEditor
|
|
192
192
|
bind:this={monacos[argName]}
|
|
193
193
|
on:focus={() => focusProp(argName, true)}
|
|
194
194
|
bind:code={arg.expr}
|
|
@@ -3,9 +3,9 @@ import { faPen, faPlus, faTrash } from '@fortawesome/free-solid-svg-icons';
|
|
|
3
3
|
import { Button } from 'flowbite-svelte';
|
|
4
4
|
import { createEventDispatcher } from 'svelte';
|
|
5
5
|
import Icon from 'svelte-awesome';
|
|
6
|
-
import Editor from './Editor.svelte';
|
|
7
6
|
import SchemaEditorProperty from './SchemaEditorProperty.svelte';
|
|
8
7
|
import SchemaModal, { DEFAULT_PROPERTY, schemaToModal } from './SchemaModal.svelte';
|
|
8
|
+
import SimpleEditor from './SimpleEditor.svelte';
|
|
9
9
|
import TableCustom from './TableCustom.svelte';
|
|
10
10
|
import Toggle from './Toggle.svelte';
|
|
11
11
|
import Tooltip from './Tooltip.svelte';
|
|
@@ -208,7 +208,7 @@ function switchTab() {
|
|
|
208
208
|
</div>
|
|
209
209
|
{:else}
|
|
210
210
|
<div class="border rounded mt-4 p-2">
|
|
211
|
-
<
|
|
211
|
+
<SimpleEditor
|
|
212
212
|
on:change={() => {
|
|
213
213
|
try {
|
|
214
214
|
schema = JSON.parse(schemaString)
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
<script context="module">import * as monaco from 'monaco-editor';
|
|
2
|
+
monaco.languages.typescript.javascriptDefaults.setCompilerOptions({
|
|
3
|
+
target: monaco.languages.typescript.ScriptTarget.Latest,
|
|
4
|
+
allowNonTsExtensions: true,
|
|
5
|
+
noLib: true
|
|
6
|
+
});
|
|
7
|
+
monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
|
|
8
|
+
validate: true,
|
|
9
|
+
allowComments: false,
|
|
10
|
+
schemas: [],
|
|
11
|
+
enableSchemaRequest: true
|
|
12
|
+
});
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<script>import { browser, dev } from '$app/env';
|
|
16
|
+
import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
|
|
17
|
+
import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker';
|
|
18
|
+
import { buildWorkerDefinition } from 'monaco-editor-workers';
|
|
19
|
+
import { createEventDispatcher, onDestroy, onMount } from 'svelte';
|
|
20
|
+
import { createHash, editorConfig, langToExt, updateOptions } from '../editorUtils';
|
|
21
|
+
let divEl = null;
|
|
22
|
+
let editor;
|
|
23
|
+
export let lang;
|
|
24
|
+
export let code = '';
|
|
25
|
+
export let hash = createHash();
|
|
26
|
+
export let cmdEnterAction = undefined;
|
|
27
|
+
export let formatAction = undefined;
|
|
28
|
+
export let automaticLayout = true;
|
|
29
|
+
export let extraLib = '';
|
|
30
|
+
export let extraLibPath = '';
|
|
31
|
+
export let shouldBindKey = true;
|
|
32
|
+
const dispatch = createEventDispatcher();
|
|
33
|
+
const uri = `file:///${hash}.${langToExt(lang)}`;
|
|
34
|
+
if (browser) {
|
|
35
|
+
if (dev) {
|
|
36
|
+
buildWorkerDefinition('../../../node_modules/monaco-editor-workers/dist/workers', import.meta.url, false);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// @ts-ignore
|
|
40
|
+
self.MonacoEnvironment = {
|
|
41
|
+
getWorker: function (_moduleId, label) {
|
|
42
|
+
if (label === 'json') {
|
|
43
|
+
return new jsonWorker();
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return new editorWorker();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export function getCode() {
|
|
53
|
+
return editor?.getValue() ?? '';
|
|
54
|
+
}
|
|
55
|
+
export function insertAtCursor(code) {
|
|
56
|
+
if (editor) {
|
|
57
|
+
editor.trigger('keyboard', 'type', { text: code });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export function setCode(ncode) {
|
|
61
|
+
code = ncode;
|
|
62
|
+
if (editor) {
|
|
63
|
+
editor.setValue(ncode);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function format() {
|
|
67
|
+
if (editor) {
|
|
68
|
+
code = getCode();
|
|
69
|
+
editor.getAction('editor.action.formatDocument').run();
|
|
70
|
+
if (formatAction) {
|
|
71
|
+
formatAction();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async function loadMonaco() {
|
|
76
|
+
const model = monaco.editor.createModel(code, lang, monaco.Uri.parse(uri));
|
|
77
|
+
model.updateOptions(updateOptions);
|
|
78
|
+
editor = monaco.editor.create(divEl, editorConfig(model, code, lang, automaticLayout));
|
|
79
|
+
if (shouldBindKey) {
|
|
80
|
+
editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, function () {
|
|
81
|
+
format();
|
|
82
|
+
});
|
|
83
|
+
editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter, function () {
|
|
84
|
+
if (cmdEnterAction) {
|
|
85
|
+
cmdEnterAction();
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
let timeoutModel = undefined;
|
|
90
|
+
editor.onDidChangeModelContent((event) => {
|
|
91
|
+
timeoutModel && clearTimeout(timeoutModel);
|
|
92
|
+
timeoutModel = setTimeout(() => {
|
|
93
|
+
code = getCode();
|
|
94
|
+
}, 500);
|
|
95
|
+
dispatch('change');
|
|
96
|
+
});
|
|
97
|
+
editor.onDidFocusEditorText(() => {
|
|
98
|
+
dispatch('focus');
|
|
99
|
+
});
|
|
100
|
+
editor.onDidBlurEditorText(() => {
|
|
101
|
+
dispatch('blur');
|
|
102
|
+
});
|
|
103
|
+
if (lang == 'javascript' && extraLib != '' && extraLibPath != '') {
|
|
104
|
+
monaco.languages.typescript.javascriptDefaults.setExtraLibs([
|
|
105
|
+
{
|
|
106
|
+
content: extraLib,
|
|
107
|
+
filePath: extraLibPath
|
|
108
|
+
}
|
|
109
|
+
]);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
onMount(() => {
|
|
113
|
+
if (browser) {
|
|
114
|
+
loadMonaco();
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
onDestroy(() => {
|
|
118
|
+
try {
|
|
119
|
+
editor && editor.dispose();
|
|
120
|
+
}
|
|
121
|
+
catch (err) { }
|
|
122
|
+
});
|
|
123
|
+
</script>
|
|
124
|
+
|
|
125
|
+
<div bind:this={divEl} class={$$props.class} />
|
|
126
|
+
|
|
127
|
+
<style>
|
|
128
|
+
.editor {
|
|
129
|
+
padding-left: 0px;
|
|
130
|
+
padding-right: 0px;
|
|
131
|
+
/* stylelint-disable-next-line unit-allowed-list */
|
|
132
|
+
height: 80vh;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.small-editor {
|
|
136
|
+
/* stylelint-disable-next-line unit-allowed-list */
|
|
137
|
+
height: 26vh;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.few-lines-editor {
|
|
141
|
+
/* stylelint-disable-next-line unit-allowed-list */
|
|
142
|
+
height: 80px;
|
|
143
|
+
}</style>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
[x: string]: any;
|
|
5
|
+
lang: string;
|
|
6
|
+
code?: string | undefined;
|
|
7
|
+
hash?: string | undefined;
|
|
8
|
+
cmdEnterAction?: (() => void) | undefined;
|
|
9
|
+
formatAction?: (() => void) | undefined;
|
|
10
|
+
automaticLayout?: boolean | undefined;
|
|
11
|
+
extraLib?: string | undefined;
|
|
12
|
+
extraLibPath?: string | undefined;
|
|
13
|
+
shouldBindKey?: boolean | undefined;
|
|
14
|
+
getCode?: (() => string) | undefined;
|
|
15
|
+
insertAtCursor?: ((code: string) => void) | undefined;
|
|
16
|
+
setCode?: ((ncode: string) => void) | undefined;
|
|
17
|
+
};
|
|
18
|
+
events: {
|
|
19
|
+
change: CustomEvent<any>;
|
|
20
|
+
focus: CustomEvent<any>;
|
|
21
|
+
blur: CustomEvent<any>;
|
|
22
|
+
} & {
|
|
23
|
+
[evt: string]: CustomEvent<any>;
|
|
24
|
+
};
|
|
25
|
+
slots: {};
|
|
26
|
+
};
|
|
27
|
+
export declare type SimpleEditorProps = typeof __propDef.props;
|
|
28
|
+
export declare type SimpleEditorEvents = typeof __propDef.events;
|
|
29
|
+
export declare type SimpleEditorSlots = typeof __propDef.slots;
|
|
30
|
+
export default class SimpleEditor extends SvelteComponentTyped<SimpleEditorProps, SimpleEditorEvents, SimpleEditorSlots> {
|
|
31
|
+
get getCode(): () => string;
|
|
32
|
+
get insertAtCursor(): (code: string) => void;
|
|
33
|
+
get setCode(): (ncode: string) => void;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
@@ -4,9 +4,9 @@ import { Button } from 'flowbite-svelte';
|
|
|
4
4
|
import Icon from 'svelte-awesome';
|
|
5
5
|
import Menu from '../common/menu/Menu.svelte';
|
|
6
6
|
import MenuItem from '../common/menu/MenuItem.svelte';
|
|
7
|
-
import Editor from '../Editor.svelte';
|
|
8
7
|
import FlowViewer from '../FlowViewer.svelte';
|
|
9
8
|
import Modal from '../Modal.svelte';
|
|
9
|
+
import SimpleEditor from '../SimpleEditor.svelte';
|
|
10
10
|
import CollapseLink from './../CollapseLink.svelte';
|
|
11
11
|
import CronInput from './../CronInput.svelte';
|
|
12
12
|
import FlowBox from './../flows/FlowBox.svelte';
|
|
@@ -32,7 +32,7 @@ let jsonValue = '';
|
|
|
32
32
|
<Modal bind:this={jsonSetter}>
|
|
33
33
|
<div slot="title">Import JSON</div>
|
|
34
34
|
<div slot="content" class="h-full">
|
|
35
|
-
<
|
|
35
|
+
<SimpleEditor bind:code={jsonValue} lang="json" class="h-full" />
|
|
36
36
|
</div>
|
|
37
37
|
<div slot="submission">
|
|
38
38
|
<button
|
package/editorUtils.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare function editorConfig(model: any, code: string, lang: string, automaticLayout: boolean): {
|
|
2
|
+
model: any;
|
|
3
|
+
value: string;
|
|
4
|
+
language: string;
|
|
5
|
+
automaticLayout: boolean;
|
|
6
|
+
readOnly: boolean;
|
|
7
|
+
fixedOverflowWidgets: boolean;
|
|
8
|
+
autoDetectHighContrast: boolean;
|
|
9
|
+
lineNumbersMinChars: number;
|
|
10
|
+
lineNumbers: (ln: any) => string;
|
|
11
|
+
folding: boolean;
|
|
12
|
+
scrollBeyondLastLine: boolean;
|
|
13
|
+
minimap: {
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
};
|
|
16
|
+
lightbulb: {
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export declare function createHash(): string;
|
|
21
|
+
export declare function langToExt(lang: string): string;
|
|
22
|
+
export declare const updateOptions: {
|
|
23
|
+
tabSize: number;
|
|
24
|
+
insertSpaces: boolean;
|
|
25
|
+
};
|
package/editorUtils.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export function editorConfig(model, code, lang, automaticLayout) {
|
|
2
|
+
return {
|
|
3
|
+
model,
|
|
4
|
+
value: code,
|
|
5
|
+
language: lang,
|
|
6
|
+
automaticLayout,
|
|
7
|
+
readOnly: false,
|
|
8
|
+
fixedOverflowWidgets: true,
|
|
9
|
+
autoDetectHighContrast: true,
|
|
10
|
+
//lineNumbers: 'off',
|
|
11
|
+
//lineDecorationsWidth: 0,
|
|
12
|
+
lineNumbersMinChars: 4,
|
|
13
|
+
lineNumbers: (ln) => '<span class="pr-4 text-gray-400">' + ln + '</span>',
|
|
14
|
+
folding: false,
|
|
15
|
+
scrollBeyondLastLine: false,
|
|
16
|
+
minimap: {
|
|
17
|
+
enabled: false
|
|
18
|
+
},
|
|
19
|
+
lightbulb: {
|
|
20
|
+
enabled: true
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export function createHash() {
|
|
25
|
+
return (Math.random() + 1).toString(36).substring(2);
|
|
26
|
+
}
|
|
27
|
+
export function langToExt(lang) {
|
|
28
|
+
switch (lang) {
|
|
29
|
+
case 'javascript':
|
|
30
|
+
return 'js';
|
|
31
|
+
case 'json':
|
|
32
|
+
return 'json';
|
|
33
|
+
case 'sql':
|
|
34
|
+
return 'sql';
|
|
35
|
+
case 'typescript':
|
|
36
|
+
return 'ts';
|
|
37
|
+
case 'python':
|
|
38
|
+
return 'py';
|
|
39
|
+
default:
|
|
40
|
+
return 'unknown';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export const updateOptions = { tabSize: 2, insertSpaces: true };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "windmill-components",
|
|
3
|
-
"version": "1.35.
|
|
3
|
+
"version": "1.35.42",
|
|
4
4
|
"devDependencies": {
|
|
5
5
|
"@playwright/test": "^1.25.1",
|
|
6
6
|
"@sveltejs/adapter-static": "^1.0.0-next.39",
|
|
@@ -116,6 +116,7 @@
|
|
|
116
116
|
"./components/ScriptSchema.svelte": "./components/ScriptSchema.svelte",
|
|
117
117
|
"./components/ShareModal.svelte": "./components/ShareModal.svelte",
|
|
118
118
|
"./components/SharedBadge.svelte": "./components/SharedBadge.svelte",
|
|
119
|
+
"./components/SimpleEditor.svelte": "./components/SimpleEditor.svelte",
|
|
119
120
|
"./components/StringTypeNarrowing.svelte": "./components/StringTypeNarrowing.svelte",
|
|
120
121
|
"./components/Switch.svelte": "./components/Switch.svelte",
|
|
121
122
|
"./components/TableCustom.svelte": "./components/TableCustom.svelte",
|
|
@@ -186,6 +187,7 @@
|
|
|
186
187
|
"./components/sidebar/SidebarContent.svelte": "./components/sidebar/SidebarContent.svelte",
|
|
187
188
|
"./components/sidebar/UserMenu.svelte": "./components/sidebar/UserMenu.svelte",
|
|
188
189
|
"./components/sidebar/WorkspaceMenu.svelte": "./components/sidebar/WorkspaceMenu.svelte",
|
|
190
|
+
"./editorUtils": "./editorUtils.js",
|
|
189
191
|
"./gen/core/ApiError": "./gen/core/ApiError.js",
|
|
190
192
|
"./gen/core/ApiRequestOptions": "./gen/core/ApiRequestOptions.js",
|
|
191
193
|
"./gen/core/ApiResult": "./gen/core/ApiResult.js",
|