windmill-components 1.379.4 → 1.382.3
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/base.d.ts +1 -1
- package/package/base.js +1 -1
- package/package/components/ArgInput.svelte +33 -3
- package/package/components/DisplayResult.svelte +17 -5
- package/package/components/EditorBar.svelte +48 -38
- package/package/components/EditorBar.svelte.d.ts +2 -0
- package/package/components/ErrorOrRecoveryHandler.svelte +3 -2
- package/package/components/FlowBuilder.svelte +18 -12
- package/package/components/FlowBuilder.svelte.d.ts +3 -2
- package/package/components/FlowGraphViewer.svelte +6 -5
- package/package/components/FlowJobResult.svelte +4 -2
- package/package/components/FlowJobResult.svelte.d.ts +2 -0
- package/package/components/FlowStatusViewer.svelte +7 -1
- package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
- package/package/components/FlowStatusViewerInner.svelte +29 -11
- package/package/components/FlowViewer.svelte +3 -1
- package/package/components/FlowViewer.svelte.d.ts +1 -0
- package/package/components/HighlightCode.svelte +2 -2
- package/package/components/ModulePreviewForm.svelte +1 -1
- package/package/components/ObjectResourceInput.svelte +7 -2
- package/package/components/ObjectResourceInput.svelte.d.ts +2 -0
- package/package/components/ResourcePicker.svelte +60 -48
- package/package/components/ScriptBuilder.svelte +42 -36
- package/package/components/ScriptBuilder.svelte.d.ts +2 -0
- package/package/components/ScriptEditor.svelte +3 -1
- package/package/components/ScriptEditor.svelte.d.ts +2 -0
- package/package/components/ScriptVersionHistory.svelte +63 -7
- package/package/components/apps/components/display/AppText.svelte +8 -3
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +3 -2
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +22 -5
- package/package/components/apps/components/display/table/AppAggridTable.svelte +14 -5
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +23 -8
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +5 -3
- package/package/components/apps/components/display/table/utils.js +8 -7
- package/package/components/apps/components/helpers/RunnableComponent.svelte +13 -1
- package/package/components/apps/components/helpers/eval.js +31 -25
- package/package/components/apps/components/inputs/AppSelect.svelte +45 -29
- package/package/components/apps/editor/AppEditorHeader.svelte +1 -0
- package/package/components/apps/editor/AppReportsDrawer.svelte +4 -3
- package/package/components/apps/editor/component/components.d.ts +7 -1
- package/package/components/apps/editor/component/components.js +6 -0
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +0 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphHeader.svelte +55 -45
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphHeader.svelte.d.ts +7 -9
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +66 -59
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte.d.ts +9 -11
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +213 -254
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte.d.ts +0 -1
- package/package/components/apps/editor/settingsPanel/decisionTree/nodeHelpers.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/decisionTree/nodeHelpers.js +2 -6
- package/package/components/custom_ui.d.ts +35 -1
- package/package/components/details/DetailPageDetailPanel.svelte +9 -1
- package/package/components/details/DetailPageDetailPanel.svelte.d.ts +2 -1
- package/package/components/details/DetailPageLayout.svelte +2 -0
- package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
- package/package/components/details/EmailTriggerPanel.svelte +128 -0
- package/package/components/details/EmailTriggerPanel.svelte.d.ts +20 -0
- package/package/components/details/WebhooksPanel.svelte +10 -71
- package/package/components/flows/FlowHistory.svelte +1 -0
- package/package/components/flows/content/FlowInputs.svelte +0 -1
- package/package/components/flows/content/FlowModuleComponent.svelte +8 -2
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +193 -66
- package/package/components/flows/content/FlowModuleHeader.svelte +1 -1
- package/package/components/flows/content/FlowModuleScript.svelte +33 -3
- package/package/components/flows/content/FlowModuleScript.svelte.d.ts +2 -0
- package/package/components/flows/content/FlowModuleSuspend.svelte +15 -0
- package/package/components/flows/content/FlowSettings.svelte +26 -15
- package/package/components/flows/flowExplorer.js +3 -0
- package/package/components/flows/flowInfers.js +1 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +39 -44
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -2
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +4 -3
- package/package/components/flows/map/InsertModuleButton.svelte +16 -9
- package/package/components/flows/map/MapItem.svelte +4 -98
- package/package/components/flows/map/MapItem.svelte.d.ts +0 -5
- package/package/components/flows/map/VirtualItem.svelte +6 -159
- package/package/components/flows/map/VirtualItem.svelte.d.ts +0 -15
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +2 -0
- package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +1 -0
- package/package/components/flows/types.d.ts +2 -0
- package/package/components/graph/FlowGraphV2.svelte +256 -0
- package/package/components/graph/{FlowGraph.svelte.d.ts → FlowGraphV2.svelte.d.ts} +8 -8
- package/package/components/graph/graphBuilder.d.ts +15 -0
- package/package/components/graph/graphBuilder.js +337 -0
- package/package/components/graph/index.d.ts +0 -1
- package/package/components/graph/index.js +0 -1
- package/package/components/graph/model.d.ts +4 -8
- package/package/components/graph/renderers/edges/BaseEdge.svelte +109 -0
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +35 -0
- package/package/components/graph/renderers/edges/DataflowEdge.svelte +37 -0
- package/package/components/graph/renderers/edges/DataflowEdge.svelte.d.ts +29 -0
- package/package/components/graph/renderers/edges/EmptyEdge.svelte +22 -0
- package/package/components/graph/renderers/edges/EmptyEdge.svelte.d.ts +23 -0
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +44 -0
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte.d.ts +29 -0
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +41 -0
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte.d.ts +29 -0
- package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +19 -0
- package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte.d.ts +24 -0
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +20 -0
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte.d.ts +25 -0
- package/package/components/graph/renderers/nodes/InputNode.svelte +74 -0
- package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +23 -0
- package/package/components/graph/renderers/nodes/ModuleNode.svelte +71 -0
- package/package/components/graph/renderers/nodes/ModuleNode.svelte.d.ts +41 -0
- package/package/components/graph/renderers/nodes/NoBranchNode.svelte +20 -0
- package/package/components/graph/renderers/nodes/NoBranchNode.svelte.d.ts +27 -0
- package/package/components/graph/renderers/nodes/NodeWrapper.svelte +21 -0
- package/package/components/graph/renderers/nodes/NodeWrapper.svelte.d.ts +22 -0
- package/package/components/graph/renderers/nodes/ResultNode.svelte +24 -0
- package/package/components/graph/renderers/nodes/ResultNode.svelte.d.ts +22 -0
- package/package/components/graph/renderers/nodes/branchAllEndNode.svelte +19 -0
- package/package/components/graph/renderers/nodes/branchAllEndNode.svelte.d.ts +26 -0
- package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +19 -0
- package/package/components/graph/renderers/nodes/branchOneEndNode.svelte.d.ts +24 -0
- package/package/components/graph/renderers/utils.d.ts +8 -0
- package/package/components/graph/renderers/utils.js +26 -0
- package/package/components/graph/util.d.ts +1 -2
- package/package/components/graph/util.js +2 -8
- package/package/components/propertyPicker/PropPickerResult.svelte +6 -1
- package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
- package/package/components/runs/RunsFilter.svelte +15 -17
- package/package/components/sidebar/changelogs.js +5 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +3 -0
- package/package/gen/schemas.gen.js +3 -0
- package/package/gen/services.gen.d.ts +22 -3
- package/package/gen/services.gen.js +38 -2
- package/package/gen/types.gen.d.ts +69 -6
- package/package/hub.d.ts +11 -0
- package/package/hub.js +2 -0
- package/package/hubPaths.json +9 -0
- package/package/init_scripts/python_failure_module.d.ts +1 -1
- package/package/init_scripts/python_failure_module.js +4 -3
- package/package/script_helpers.d.ts +2 -2
- package/package/script_helpers.js +11 -9
- package/package.json +2 -1
- package/package/components/graph/FlowGraph.svelte +0 -614
- package/package/components/graph/svelvet/LICENSE +0 -21
- package/package/components/graph/svelvet/container/README.md +0 -7
- package/package/components/graph/svelvet/container/controllers/middleware.d.ts +0 -11
- package/package/components/graph/svelvet/container/controllers/middleware.js +0 -87
- package/package/components/graph/svelvet/container/models/index.d.ts +0 -0
- package/package/components/graph/svelvet/container/models/index.js +0 -1
- package/package/components/graph/svelvet/container/views/GraphView.svelte +0 -262
- package/package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +0 -26
- package/package/components/graph/svelvet/container/views/Svelvet.svelte +0 -121
- package/package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +0 -36
- package/package/components/graph/svelvet/customCss/controllers/getCss.d.ts +0 -2
- package/package/components/graph/svelvet/customCss/controllers/getCss.js +0 -46
- package/package/components/graph/svelvet/d3/controllers/d3.d.ts +0 -5
- package/package/components/graph/svelvet/d3/controllers/d3.js +0 -59
- package/package/components/graph/svelvet/edges/controllers/anchorCbDev.d.ts +0 -4
- package/package/components/graph/svelvet/edges/controllers/anchorCbDev.js +0 -92
- package/package/components/graph/svelvet/edges/controllers/anchorCbUser.d.ts +0 -57
- package/package/components/graph/svelvet/edges/controllers/anchorCbUser.js +0 -73
- package/package/components/graph/svelvet/edges/controllers/util.d.ts +0 -37
- package/package/components/graph/svelvet/edges/controllers/util.js +0 -71
- package/package/components/graph/svelvet/edges/models/Anchor.d.ts +0 -48
- package/package/components/graph/svelvet/edges/models/Anchor.js +0 -122
- package/package/components/graph/svelvet/edges/models/Edge.d.ts +0 -48
- package/package/components/graph/svelvet/edges/models/Edge.js +0 -109
- package/package/components/graph/svelvet/edges/types/types.d.ts +0 -18
- package/package/components/graph/svelvet/edges/types/types.js +0 -1
- package/package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte +0 -104
- package/package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte.d.ts +0 -18
- package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +0 -42
- package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte.d.ts +0 -17
- package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +0 -151
- package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte.d.ts +0 -17
- package/package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte +0 -157
- package/package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte.d.ts +0 -60
- package/package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte +0 -8
- package/package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte.d.ts +0 -25
- package/package/components/graph/svelvet/edges/views/Edges/types.d.ts +0 -52
- package/package/components/graph/svelvet/edges/views/Edges/types.js +0 -1
- package/package/components/graph/svelvet/edges/views/Edges/utils.d.ts +0 -33
- package/package/components/graph/svelvet/edges/views/Edges/utils.js +0 -31
- package/package/components/graph/svelvet/nodes/controllers/util.d.ts +0 -9
- package/package/components/graph/svelvet/nodes/controllers/util.js +0 -13
- package/package/components/graph/svelvet/nodes/models/Node.d.ts +0 -74
- package/package/components/graph/svelvet/nodes/models/Node.js +0 -156
- package/package/components/graph/svelvet/nodes/views/Node.svelte +0 -84
- package/package/components/graph/svelvet/nodes/views/Node.svelte.d.ts +0 -21
- package/package/components/graph/svelvet/store/controllers/storeApi.d.ts +0 -25
- package/package/components/graph/svelvet/store/controllers/storeApi.js +0 -91
- package/package/components/graph/svelvet/store/controllers/userApi.d.ts +0 -3
- package/package/components/graph/svelvet/store/controllers/userApi.js +0 -18
- package/package/components/graph/svelvet/store/controllers/util.d.ts +0 -24
- package/package/components/graph/svelvet/store/controllers/util.js +0 -148
- package/package/components/graph/svelvet/store/models/store.d.ts +0 -13
- package/package/components/graph/svelvet/store/models/store.js +0 -12
- package/package/components/graph/svelvet/store/types/types.d.ts +0 -127
- package/package/components/graph/svelvet/store/types/types.js +0 -1
- package/package/components/graph/svelvet/types/README.md +0 -3
- package/package/components/graph/svelvet/types/index.d.ts +0 -2
- package/package/components/graph/svelvet/types/index.js +0 -1
- package/package/components/graph/svelvet/types/types.d.ts +0 -50
- package/package/components/graph/svelvet/types/types.js +0 -18
|
@@ -67,7 +67,7 @@ $: lang = getLang(language);
|
|
|
67
67
|
}}
|
|
68
68
|
iconOnly
|
|
69
69
|
/>
|
|
70
|
-
{#if code?.length <
|
|
70
|
+
{#if code?.length < 10000}
|
|
71
71
|
{#if !lines}
|
|
72
72
|
<Highlight class="nowrap {$$props.class}" language={lang} {code} />
|
|
73
73
|
{:else}
|
|
@@ -76,7 +76,7 @@ $: lang = getLang(language);
|
|
|
76
76
|
</Highlight>
|
|
77
77
|
{/if}
|
|
78
78
|
{:else}
|
|
79
|
-
<pre class="overflow-auto max-h-screen {$$props.class}"
|
|
79
|
+
<pre class="overflow-auto max-h-screen text-xs {$$props.class}"
|
|
80
80
|
><code class="language-{language}">{code}</code></pre
|
|
81
81
|
>
|
|
82
82
|
{/if}
|
|
@@ -35,7 +35,7 @@ $: {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
function plugIt(argName) {
|
|
38
|
-
args[argName] = evalValue(argName, mod, testStepStore, pickableProperties, true);
|
|
38
|
+
args[argName] = structuredClone(evalValue(argName, mod, testStepStore, pickableProperties, true));
|
|
39
39
|
try {
|
|
40
40
|
editor?.[argName]?.setCode(JSON.stringify(args[argName], null, 4));
|
|
41
41
|
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
<script>import
|
|
1
|
+
<script>import JsonEditor from './apps/editor/settingsPanel/inputEditor/JsonEditor.svelte';
|
|
2
|
+
import ResourcePicker from './ResourcePicker.svelte';
|
|
2
3
|
import S3ObjectPicker from './S3ObjectPicker.svelte';
|
|
4
|
+
import SimpleEditor from './SimpleEditor.svelte';
|
|
3
5
|
export let format;
|
|
4
6
|
export let value;
|
|
5
7
|
export let disablePortal = false;
|
|
6
8
|
export let showSchemaExplorer = false;
|
|
7
9
|
export let selectFirst = false;
|
|
8
10
|
export let defaultValue;
|
|
11
|
+
export let editor = undefined;
|
|
9
12
|
function isString(value) {
|
|
10
13
|
return typeof value === 'string' || value instanceof String;
|
|
11
14
|
}
|
|
@@ -32,7 +35,7 @@ $: value && valueToPath();
|
|
|
32
35
|
<div class="flex flex-row w-full flex-wrap gap-x-2 gap-y-0.5">
|
|
33
36
|
{#if format === 'resource-s3_object'}
|
|
34
37
|
<S3ObjectPicker bind:value />
|
|
35
|
-
{:else}
|
|
38
|
+
{:else if value == undefined || typeof value === 'string'}
|
|
36
39
|
<ResourcePicker
|
|
37
40
|
{selectFirst}
|
|
38
41
|
{disablePortal}
|
|
@@ -45,5 +48,7 @@ $: value && valueToPath();
|
|
|
45
48
|
resourceType={format.split('-').length > 1 ? format.substring('resource-'.length) : undefined}
|
|
46
49
|
{showSchemaExplorer}
|
|
47
50
|
/>
|
|
51
|
+
{:else}
|
|
52
|
+
<JsonEditor bind:editor code={JSON.stringify(value, null, 2)} bind:value />
|
|
48
53
|
{/if}
|
|
49
54
|
</div>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
|
+
import SimpleEditor from './SimpleEditor.svelte';
|
|
2
3
|
declare const __propDef: {
|
|
3
4
|
props: {
|
|
4
5
|
format: string;
|
|
@@ -7,6 +8,7 @@ declare const __propDef: {
|
|
|
7
8
|
showSchemaExplorer?: boolean | undefined;
|
|
8
9
|
selectFirst?: boolean | undefined;
|
|
9
10
|
defaultValue: any;
|
|
11
|
+
editor?: SimpleEditor | undefined;
|
|
10
12
|
};
|
|
11
13
|
events: {
|
|
12
14
|
[evt: string]: CustomEvent<any>;
|
|
@@ -9,6 +9,7 @@ import DBSchemaExplorer from './DBSchemaExplorer.svelte';
|
|
|
9
9
|
import DarkModeObserver from './DarkModeObserver.svelte';
|
|
10
10
|
import { Pen, Plus, RotateCw } from 'lucide-svelte';
|
|
11
11
|
import ResourceEditorDrawer from './ResourceEditorDrawer.svelte';
|
|
12
|
+
import { sendUserToast } from '../toast';
|
|
12
13
|
const dispatch = createEventDispatcher();
|
|
13
14
|
export let initialValue = undefined;
|
|
14
15
|
export let value = initialValue;
|
|
@@ -33,27 +34,36 @@ let collection = valueSelect ? [valueSelect] : [];
|
|
|
33
34
|
export async function askNewResource() {
|
|
34
35
|
appConnect?.open?.(resourceType, expressOAuthSetup);
|
|
35
36
|
}
|
|
37
|
+
let loading = true;
|
|
36
38
|
async function loadResources(resourceType) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
39
|
+
loading = true;
|
|
40
|
+
try {
|
|
41
|
+
const nc = (await ResourceService.listResource({
|
|
42
|
+
workspace: $workspaceStore,
|
|
43
|
+
resourceType
|
|
44
|
+
}))
|
|
45
|
+
.filter((x) => x.resource_type != 'state' && x.resource_type != 'cache')
|
|
46
|
+
.map((x) => ({
|
|
47
|
+
value: x.path,
|
|
48
|
+
label: x.path,
|
|
49
|
+
type: x.resource_type
|
|
50
|
+
}));
|
|
51
|
+
// TODO check if this is needed
|
|
52
|
+
if (!nc.find((x) => x.value == value) && (initialValue || value)) {
|
|
53
|
+
nc.push({ value: value ?? initialValue, label: value ?? initialValue, type: '' });
|
|
54
|
+
}
|
|
55
|
+
collection = nc;
|
|
56
|
+
if (collection.length == 1 && selectFirst && valueSelect == undefined) {
|
|
57
|
+
value = collection[0].value;
|
|
58
|
+
valueType = collection[0].type;
|
|
59
|
+
valueSelect = collection[0];
|
|
60
|
+
}
|
|
50
61
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
valueType = collection[0].type;
|
|
55
|
-
valueSelect = collection[0];
|
|
62
|
+
catch (e) {
|
|
63
|
+
sendUserToast('Failed to load resource types', true);
|
|
64
|
+
console.error(e);
|
|
56
65
|
}
|
|
66
|
+
loading = false;
|
|
57
67
|
}
|
|
58
68
|
$: $workspaceStore && loadResources(resourceType);
|
|
59
69
|
$: dispatch('change', value);
|
|
@@ -115,46 +125,48 @@ let darkMode = false;
|
|
|
115
125
|
? SELECT_INPUT_DEFAULT_STYLE.containerStylesDark
|
|
116
126
|
: SELECT_INPUT_DEFAULT_STYLE.containerStyles}
|
|
117
127
|
/>
|
|
118
|
-
{:else}
|
|
128
|
+
{:else if !loading}
|
|
119
129
|
<div class="text-2xs text-tertiary mr-2">0 found</div>
|
|
120
130
|
{/if}
|
|
121
131
|
|
|
122
|
-
{#if
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
132
|
+
{#if !loading}
|
|
133
|
+
{#if value && value != ''}
|
|
134
|
+
<Button
|
|
135
|
+
{disabled}
|
|
136
|
+
color="light"
|
|
137
|
+
variant="border"
|
|
138
|
+
size="xs"
|
|
139
|
+
on:click={() => resourceEditor?.initEdit?.(value ?? '')}
|
|
140
|
+
startIcon={{ icon: Pen }}
|
|
141
|
+
iconOnly
|
|
142
|
+
/>
|
|
143
|
+
{/if}
|
|
133
144
|
|
|
134
|
-
|
|
135
|
-
|
|
145
|
+
{#if resourceType?.includes(',')}
|
|
146
|
+
{#each resourceType.split(',') as rt}
|
|
147
|
+
<Button
|
|
148
|
+
{disabled}
|
|
149
|
+
color="light"
|
|
150
|
+
variant="border"
|
|
151
|
+
size="xs"
|
|
152
|
+
on:click={() => appConnect?.open?.(rt)}
|
|
153
|
+
startIcon={{ icon: Plus }}>{rt}</Button
|
|
154
|
+
>
|
|
155
|
+
{/each}
|
|
156
|
+
{:else}
|
|
136
157
|
<Button
|
|
137
158
|
{disabled}
|
|
138
159
|
color="light"
|
|
139
160
|
variant="border"
|
|
140
161
|
size="xs"
|
|
141
|
-
on:click={() => appConnect?.open?.(
|
|
142
|
-
startIcon={{ icon: Plus }}
|
|
162
|
+
on:click={() => appConnect?.open?.(resourceType, expressOAuthSetup)}
|
|
163
|
+
startIcon={{ icon: Plus }}
|
|
164
|
+
iconOnly={collection?.length > 0}
|
|
165
|
+
>{#if collection?.length == 0}
|
|
166
|
+
Add a {resourceType} resource
|
|
167
|
+
{/if}</Button
|
|
143
168
|
>
|
|
144
|
-
{/
|
|
145
|
-
{:else}
|
|
146
|
-
<Button
|
|
147
|
-
{disabled}
|
|
148
|
-
color="light"
|
|
149
|
-
variant="border"
|
|
150
|
-
size="xs"
|
|
151
|
-
on:click={() => appConnect?.open?.(resourceType, expressOAuthSetup)}
|
|
152
|
-
startIcon={{ icon: Plus }}
|
|
153
|
-
iconOnly={collection?.length > 0}
|
|
154
|
-
>{#if collection?.length == 0}
|
|
155
|
-
Add a {resourceType} resource
|
|
156
|
-
{/if}</Button
|
|
157
|
-
>
|
|
169
|
+
{/if}
|
|
158
170
|
{/if}
|
|
159
171
|
|
|
160
172
|
<Button
|
|
@@ -43,6 +43,7 @@ export let savedScript = undefined;
|
|
|
43
43
|
export let searchParams = new URLSearchParams();
|
|
44
44
|
export let disableHistoryChange = false;
|
|
45
45
|
export let replaceStateFn = (url) => window.history.replaceState(null, '', url);
|
|
46
|
+
export let customUi = {};
|
|
46
47
|
let metadataOpen = showMeta ||
|
|
47
48
|
(initialPath == '' &&
|
|
48
49
|
searchParams.get('state') == undefined &&
|
|
@@ -344,7 +345,7 @@ async function saveDraft(forceSave = false) {
|
|
|
344
345
|
loadingDraft = false;
|
|
345
346
|
}
|
|
346
347
|
function computeDropdownItems(initialPath) {
|
|
347
|
-
let dropdownItems = initialPath != ''
|
|
348
|
+
let dropdownItems = initialPath != '' && customUi?.topBar?.extraDeployOptions != false
|
|
348
349
|
? [
|
|
349
350
|
{
|
|
350
351
|
label: 'Deploy & Stay here',
|
|
@@ -965,32 +966,34 @@ function langToLanguage(lang) {
|
|
|
965
966
|
{$scheduleStore.cron ?? ''}
|
|
966
967
|
</Button>
|
|
967
968
|
{/if}
|
|
968
|
-
|
|
969
|
-
<div>
|
|
970
|
-
<
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
<Badge
|
|
976
|
-
color="gray"
|
|
977
|
-
class="center-center !bg-surface-secondary !text-tertiary !h-[28px] !w-[70px] rounded-none hover:!bg-surface-hover transition-all"
|
|
969
|
+
{#if customUi?.topBar?.path != false}
|
|
970
|
+
<div class="flex justify-start w-full border rounded-md overflow-hidden">
|
|
971
|
+
<div>
|
|
972
|
+
<button
|
|
973
|
+
on:click={async () => {
|
|
974
|
+
metadataOpen = true
|
|
975
|
+
}}
|
|
978
976
|
>
|
|
979
|
-
<
|
|
980
|
-
|
|
981
|
-
|
|
977
|
+
<Badge
|
|
978
|
+
color="gray"
|
|
979
|
+
class="center-center !bg-surface-secondary !text-tertiary !h-[28px] !w-[70px] rounded-none hover:!bg-surface-hover transition-all"
|
|
980
|
+
>
|
|
981
|
+
<Pen size={12} class="mr-2" /> Path
|
|
982
|
+
</Badge>
|
|
983
|
+
</button>
|
|
984
|
+
</div>
|
|
985
|
+
<input
|
|
986
|
+
type="text"
|
|
987
|
+
readonly
|
|
988
|
+
value={script.path}
|
|
989
|
+
size={script.path?.length || 50}
|
|
990
|
+
class="font-mono !text-xs !min-w-[96px] !max-w-[300px] !w-full !h-[28px] !my-0 !py-0 !border-l-0 !rounded-l-none !border-0 !shadow-none"
|
|
991
|
+
on:focus={({ currentTarget }) => {
|
|
992
|
+
currentTarget.select()
|
|
993
|
+
}}
|
|
994
|
+
/>
|
|
982
995
|
</div>
|
|
983
|
-
|
|
984
|
-
type="text"
|
|
985
|
-
readonly
|
|
986
|
-
value={script.path}
|
|
987
|
-
size={script.path?.length || 50}
|
|
988
|
-
class="font-mono !text-xs !min-w-[96px] !max-w-[300px] !w-full !h-[28px] !my-0 !py-0 !border-l-0 !rounded-l-none !border-0 !shadow-none"
|
|
989
|
-
on:focus={({ currentTarget }) => {
|
|
990
|
-
currentTarget.select()
|
|
991
|
-
}}
|
|
992
|
-
/>
|
|
993
|
-
</div>
|
|
996
|
+
{/if}
|
|
994
997
|
</div>
|
|
995
998
|
|
|
996
999
|
{#if $enterpriseLicense && initialPath != ''}
|
|
@@ -1021,17 +1024,19 @@ function langToLanguage(lang) {
|
|
|
1021
1024
|
<span class="hidden lg:flex"> Diff </span>
|
|
1022
1025
|
</div>
|
|
1023
1026
|
</Button>
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1027
|
+
{#if customUi?.topBar?.settings != false}
|
|
1028
|
+
<Button
|
|
1029
|
+
color="light"
|
|
1030
|
+
variant="border"
|
|
1031
|
+
size="xs"
|
|
1032
|
+
on:click={() => {
|
|
1033
|
+
metadataOpen = true
|
|
1034
|
+
}}
|
|
1035
|
+
startIcon={{ icon: Settings }}
|
|
1036
|
+
>
|
|
1037
|
+
<span class="hidden lg:flex"> Settings </span>
|
|
1038
|
+
</Button>
|
|
1039
|
+
{/if}
|
|
1035
1040
|
<Button
|
|
1036
1041
|
loading={loadingDraft}
|
|
1037
1042
|
size="xs"
|
|
@@ -1085,6 +1090,7 @@ function langToLanguage(lang) {
|
|
|
1085
1090
|
</div>
|
|
1086
1091
|
|
|
1087
1092
|
<ScriptEditor
|
|
1093
|
+
{customUi}
|
|
1088
1094
|
collabMode
|
|
1089
1095
|
edit={initialPath != ''}
|
|
1090
1096
|
on:format={() => {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
2
|
import { type NewScript, type NewScriptWithDraft } from '../gen';
|
|
3
3
|
import type DiffDrawer from './DiffDrawer.svelte';
|
|
4
|
+
import type { ScriptBuilderWhitelabelCustomUi } from './custom_ui';
|
|
4
5
|
declare const __propDef: {
|
|
5
6
|
props: {
|
|
6
7
|
script: NewScript;
|
|
@@ -15,6 +16,7 @@ declare const __propDef: {
|
|
|
15
16
|
searchParams?: URLSearchParams | undefined;
|
|
16
17
|
disableHistoryChange?: boolean | undefined;
|
|
17
18
|
replaceStateFn?: ((url: string) => void) | undefined;
|
|
19
|
+
customUi?: ScriptBuilderWhitelabelCustomUi | undefined;
|
|
18
20
|
setCode?: ((code: string) => void) | undefined;
|
|
19
21
|
};
|
|
20
22
|
events: {
|
|
@@ -38,6 +38,7 @@ export let edit = true;
|
|
|
38
38
|
export let noHistory = false;
|
|
39
39
|
export let saveToWorkspace = false;
|
|
40
40
|
export let watchChanges = false;
|
|
41
|
+
export let customUi = {};
|
|
41
42
|
let websocketAlive = {
|
|
42
43
|
pyright: false,
|
|
43
44
|
deno: false,
|
|
@@ -204,6 +205,7 @@ function collabUrl() {
|
|
|
204
205
|
setCollaborationMode()
|
|
205
206
|
}
|
|
206
207
|
}}
|
|
208
|
+
customUi={customUi?.editorBar}
|
|
207
209
|
collabLive={wsProvider?.shouldConnect}
|
|
208
210
|
{collabMode}
|
|
209
211
|
{validCode}
|
|
@@ -221,7 +223,7 @@ function collabUrl() {
|
|
|
221
223
|
{noHistory}
|
|
222
224
|
{saveToWorkspace}
|
|
223
225
|
/>
|
|
224
|
-
{#if !noSyncFromGithub}
|
|
226
|
+
{#if !noSyncFromGithub && customUi?.editorBar?.useVsCode != false}
|
|
225
227
|
<div class="py-1">
|
|
226
228
|
<Button
|
|
227
229
|
target="_blank"
|
|
@@ -3,6 +3,7 @@ import type { Schema, SupportedLanguage } from '../common';
|
|
|
3
3
|
import { type Preview } from '../gen';
|
|
4
4
|
import Editor from './Editor.svelte';
|
|
5
5
|
import DiffEditor from './DiffEditor.svelte';
|
|
6
|
+
import type { ScriptEditorWhitelabelCustomUi } from './custom_ui';
|
|
6
7
|
declare const __propDef: {
|
|
7
8
|
props: {
|
|
8
9
|
schema?: Schema | any;
|
|
@@ -22,6 +23,7 @@ declare const __propDef: {
|
|
|
22
23
|
noHistory?: boolean | undefined;
|
|
23
24
|
saveToWorkspace?: boolean | undefined;
|
|
24
25
|
watchChanges?: boolean | undefined;
|
|
26
|
+
customUi?: ScriptEditorWhitelabelCustomUi | undefined;
|
|
25
27
|
inferSchema?: ((code: string, nlang?: SupportedLanguage) => Promise<void>) | undefined;
|
|
26
28
|
setCollaborationMode?: (() => Promise<void>) | undefined;
|
|
27
29
|
disableCollaboration?: (() => void) | undefined;
|
|
@@ -7,13 +7,16 @@ import { Skeleton } from './common';
|
|
|
7
7
|
import FlowModuleScript from './flows/content/FlowModuleScript.svelte';
|
|
8
8
|
import { createEventDispatcher } from 'svelte';
|
|
9
9
|
import Button from './common/button/Button.svelte';
|
|
10
|
-
import { ExternalLink, Pencil, ArrowRight, X } from 'lucide-svelte';
|
|
10
|
+
import { ExternalLink, Pencil, ArrowRight, X, Diff, Code } from 'lucide-svelte';
|
|
11
|
+
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
12
|
+
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
11
13
|
const dispatch = createEventDispatcher();
|
|
12
14
|
export let openDetails = false;
|
|
13
15
|
export let scriptPath;
|
|
14
16
|
let deploymentMsgUpdateMode = false;
|
|
15
17
|
let deploymentMsgUpdate = undefined;
|
|
16
18
|
let selectedVersion = undefined;
|
|
19
|
+
let selectedVersionIndex = undefined;
|
|
17
20
|
let versions = undefined;
|
|
18
21
|
let loading = false;
|
|
19
22
|
async function loadVersions() {
|
|
@@ -43,6 +46,8 @@ async function updateDeploymentMsg(scriptHash) {
|
|
|
43
46
|
loadVersions();
|
|
44
47
|
}
|
|
45
48
|
loadVersions();
|
|
49
|
+
let showDiff = false;
|
|
50
|
+
let previousHash = undefined;
|
|
46
51
|
</script>
|
|
47
52
|
|
|
48
53
|
<Splitpanes class="!overflow-visible">
|
|
@@ -52,17 +57,34 @@ loadVersions();
|
|
|
52
57
|
{#if !loading}
|
|
53
58
|
{#if versions && versions.length > 0}
|
|
54
59
|
<div class="flex gap-2 flex-col">
|
|
55
|
-
{#each versions ?? [] as version}
|
|
60
|
+
{#each versions ?? [] as version, versionIndex}
|
|
56
61
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
62
|
+
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
57
63
|
<div
|
|
58
64
|
class={classNames(
|
|
59
|
-
'border flex gap-1 truncate justify-between flex-row w-full items-center p-2 rounded-md cursor-pointer
|
|
65
|
+
'border flex gap-1 truncate justify-between flex-row w-full items-center p-2 rounded-md cursor-pointer ',
|
|
60
66
|
selectedVersion?.script_hash == version.script_hash
|
|
61
|
-
? 'bg-
|
|
62
|
-
: ''
|
|
67
|
+
? 'bg-surface-selected'
|
|
68
|
+
: '',
|
|
69
|
+
'hover:bg-surface-hover'
|
|
63
70
|
)}
|
|
64
71
|
on:click={() => {
|
|
65
72
|
selectedVersion = version
|
|
73
|
+
selectedVersionIndex = versionIndex
|
|
74
|
+
|
|
75
|
+
if (showDiff && versions && selectedVersionIndex === versions.length - 1) {
|
|
76
|
+
showDiff = false
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const availableVersions = versions?.slice(selectedVersionIndex + 1)
|
|
80
|
+
|
|
81
|
+
if (
|
|
82
|
+
previousHash &&
|
|
83
|
+
!availableVersions?.find((v) => v.script_hash === previousHash)
|
|
84
|
+
) {
|
|
85
|
+
previousHash = availableVersions?.[0]?.script_hash
|
|
86
|
+
}
|
|
87
|
+
|
|
66
88
|
deploymentMsgUpdate = undefined
|
|
67
89
|
deploymentMsgUpdateMode = false
|
|
68
90
|
}}
|
|
@@ -99,7 +121,7 @@ loadVersions();
|
|
|
99
121
|
<div class="h-full w-full overflow-auto">
|
|
100
122
|
{#if selectedVersion}
|
|
101
123
|
{#key selectedVersion}
|
|
102
|
-
<div class="flex flex-col">
|
|
124
|
+
<div class="flex flex-col min-h-full">
|
|
103
125
|
<span class="flex flex-row text-sm p-2 text-tertiary">
|
|
104
126
|
{#if deploymentMsgUpdateMode}
|
|
105
127
|
<div class="flex w-full">
|
|
@@ -158,7 +180,41 @@ loadVersions();
|
|
|
158
180
|
</button>
|
|
159
181
|
{/if}
|
|
160
182
|
</span>
|
|
161
|
-
|
|
183
|
+
|
|
184
|
+
{#if selectedVersionIndex !== undefined && versions?.slice(selectedVersionIndex + 1).length}
|
|
185
|
+
<div class="p-2 flex flex-row items-center gap-2 h-8">
|
|
186
|
+
<div class="w-min">
|
|
187
|
+
<ToggleButtonGroup bind:selected={showDiff}>
|
|
188
|
+
<ToggleButton light small value={false} label="Code" icon={Code} />
|
|
189
|
+
<ToggleButton light small value={true} label="Diff" icon={Diff} />
|
|
190
|
+
</ToggleButtonGroup>
|
|
191
|
+
</div>
|
|
192
|
+
|
|
193
|
+
{#if showDiff}
|
|
194
|
+
<div class="text-xs">Versions:</div>
|
|
195
|
+
<select bind:value={previousHash} class="!text-xs !w-40">
|
|
196
|
+
{#each versions?.slice(selectedVersionIndex + 1) ?? [] as version}
|
|
197
|
+
<option
|
|
198
|
+
value={version.script_hash}
|
|
199
|
+
selected={version.script_hash === selectedVersion.script_hash}
|
|
200
|
+
class="!text-xs"
|
|
201
|
+
>
|
|
202
|
+
{version.deployment_msg ?? version.script_hash}
|
|
203
|
+
</option>
|
|
204
|
+
{/each}
|
|
205
|
+
</select>
|
|
206
|
+
{/if}
|
|
207
|
+
</div>
|
|
208
|
+
{:else}
|
|
209
|
+
<div class="p-2 text-xs text-secondary"> No previous version found </div>
|
|
210
|
+
{/if}
|
|
211
|
+
<FlowModuleScript
|
|
212
|
+
showDate
|
|
213
|
+
path={scriptPath}
|
|
214
|
+
hash={selectedVersion.script_hash}
|
|
215
|
+
{previousHash}
|
|
216
|
+
{showDiff}
|
|
217
|
+
/>
|
|
162
218
|
</div>
|
|
163
219
|
{/key}
|
|
164
220
|
{:else}
|
|
@@ -21,6 +21,11 @@ export let customCss = undefined;
|
|
|
21
21
|
export let render;
|
|
22
22
|
export let editorMode = false;
|
|
23
23
|
let resolvedConfig = initConfig(components['textcomponent'].initialData.configuration, configuration);
|
|
24
|
+
$: editorMode && onEditorMode();
|
|
25
|
+
function onEditorMode() {
|
|
26
|
+
autosize();
|
|
27
|
+
setTimeout(() => autosize(), 50);
|
|
28
|
+
}
|
|
24
29
|
const { app, worldStore, mode, componentControl } = getContext('AppViewerContext');
|
|
25
30
|
let css = initCss($app.css?.textcomponent, customCss);
|
|
26
31
|
let result = undefined;
|
|
@@ -105,6 +110,7 @@ function autosize() {
|
|
|
105
110
|
el.style.cssText = 'height:auto; padding:0';
|
|
106
111
|
el.style.cssText = 'height:' + el.scrollHeight + 'px';
|
|
107
112
|
}
|
|
113
|
+
// console.log(el, el?.scrollHeight)
|
|
108
114
|
}, 0);
|
|
109
115
|
}
|
|
110
116
|
</script>
|
|
@@ -137,7 +143,6 @@ function autosize() {
|
|
|
137
143
|
if (!editorMode) {
|
|
138
144
|
editorMode = true
|
|
139
145
|
document.getElementById(`text-${id}`)?.focus()
|
|
140
|
-
autosize()
|
|
141
146
|
}
|
|
142
147
|
}}
|
|
143
148
|
on:keydown|stopPropagation
|
|
@@ -146,7 +151,7 @@ function autosize() {
|
|
|
146
151
|
<AlignWrapper {verticalAlignment}>
|
|
147
152
|
<textarea
|
|
148
153
|
class={twMerge(
|
|
149
|
-
'whitespace-pre-wrap !outline-none !border-0 !bg-transparent !resize-none !
|
|
154
|
+
'whitespace-pre-wrap !outline-none !border-0 !bg-transparent !resize-none !ring-0 !p-0',
|
|
150
155
|
css?.text?.class,
|
|
151
156
|
'wm-text',
|
|
152
157
|
classes,
|
|
@@ -188,7 +193,7 @@ function autosize() {
|
|
|
188
193
|
class="flex flex-wrap gap-2 pb-0.5 w-full {$mode === 'dnd' &&
|
|
189
194
|
(componentInput?.type == 'template' || componentInput?.type == 'templatev2')
|
|
190
195
|
? 'cursor-text'
|
|
191
|
-
: ''}"
|
|
196
|
+
: 'overflow-auto'}"
|
|
192
197
|
>
|
|
193
198
|
<svelte:element
|
|
194
199
|
this={component}
|
|
@@ -25,10 +25,11 @@ let renderCountLast = -1;
|
|
|
25
25
|
let quicksearchLast = undefined;
|
|
26
26
|
let localColumnDefs = columnDefs;
|
|
27
27
|
let lastTable = table;
|
|
28
|
-
$:
|
|
28
|
+
$: lastTable != undefined && table && onTableChange();
|
|
29
|
+
function onTableChange() {
|
|
29
30
|
if (table !== lastTable) {
|
|
30
|
-
localColumnDefs = [];
|
|
31
31
|
lastTable = table;
|
|
32
|
+
localColumnDefs = [];
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
$: table && renderCount != undefined && quicksearch != undefined && computeCount();
|
|
@@ -95,20 +95,21 @@ const tableActionsFactory = cellRendererFactory((c, p) => {
|
|
|
95
95
|
['AppViewerContext', context],
|
|
96
96
|
['ContextPanel', contextPanel]
|
|
97
97
|
]);
|
|
98
|
-
new AppAggridTableActions({
|
|
98
|
+
const ta = new AppAggridTableActions({
|
|
99
99
|
target: c.eGui,
|
|
100
100
|
props: {
|
|
101
|
+
p,
|
|
101
102
|
id: id,
|
|
102
103
|
actions,
|
|
103
104
|
rowIndex,
|
|
104
105
|
row,
|
|
105
106
|
render: true,
|
|
106
107
|
wrapActions: resolvedConfig.wrapActions,
|
|
107
|
-
selectRow: () => {
|
|
108
|
+
selectRow: (p) => {
|
|
108
109
|
toggleRow(p);
|
|
109
110
|
p.node.setSelected(true);
|
|
110
111
|
},
|
|
111
|
-
onSet: (id, value) => {
|
|
112
|
+
onSet: (id, value, rowIndex) => {
|
|
112
113
|
if (!inputs[id]) {
|
|
113
114
|
inputs[id] = { [rowIndex]: value };
|
|
114
115
|
}
|
|
@@ -117,7 +118,7 @@ const tableActionsFactory = cellRendererFactory((c, p) => {
|
|
|
117
118
|
}
|
|
118
119
|
outputs?.inputs.set(inputs, true);
|
|
119
120
|
},
|
|
120
|
-
onRemove: (id) => {
|
|
121
|
+
onRemove: (id, rowIndex) => {
|
|
121
122
|
if (inputs?.[id] == undefined) {
|
|
122
123
|
return;
|
|
123
124
|
}
|
|
@@ -132,6 +133,14 @@ const tableActionsFactory = cellRendererFactory((c, p) => {
|
|
|
132
133
|
},
|
|
133
134
|
context: componentContext
|
|
134
135
|
});
|
|
136
|
+
return {
|
|
137
|
+
destroy: () => {
|
|
138
|
+
ta.$destroy();
|
|
139
|
+
},
|
|
140
|
+
refresh(params) {
|
|
141
|
+
ta.$set({ rowIndex: params.node.rowIndex ?? 0, row: params.data, p: params });
|
|
142
|
+
}
|
|
143
|
+
};
|
|
135
144
|
});
|
|
136
145
|
function transformColumnDefs(columnDefs) {
|
|
137
146
|
if (!columnDefs) {
|
|
@@ -148,7 +157,7 @@ function transformColumnDefs(columnDefs) {
|
|
|
148
157
|
field: 'delete',
|
|
149
158
|
headerName: 'Delete',
|
|
150
159
|
cellRenderer: cellRendererFactory((c, p) => {
|
|
151
|
-
new Button({
|
|
160
|
+
let ta = new Button({
|
|
152
161
|
target: c.eGui,
|
|
153
162
|
props: {
|
|
154
163
|
btnClasses: 'w-12',
|
|
@@ -161,6 +170,14 @@ function transformColumnDefs(columnDefs) {
|
|
|
161
170
|
nonCaptureEvent: true
|
|
162
171
|
}
|
|
163
172
|
});
|
|
173
|
+
return {
|
|
174
|
+
destroy: () => {
|
|
175
|
+
ta.$destroy();
|
|
176
|
+
},
|
|
177
|
+
refresh(params) {
|
|
178
|
+
//
|
|
179
|
+
}
|
|
180
|
+
};
|
|
164
181
|
}),
|
|
165
182
|
cellRendererParams: {
|
|
166
183
|
onClick: (e) => {
|