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
|
@@ -1,50 +1,18 @@
|
|
|
1
|
-
<script>import {
|
|
2
|
-
import { Badge } from '../../common';
|
|
1
|
+
<script>import { Badge } from '../../common';
|
|
3
2
|
import { classNames } from '../../../utils';
|
|
4
|
-
import { ClipboardCopy, ExternalLink, Wand2, X } from 'lucide-svelte';
|
|
5
3
|
import { createEventDispatcher, getContext } from 'svelte';
|
|
6
|
-
import InsertModuleButton from './InsertModuleButton.svelte';
|
|
7
|
-
import { copilotInfo } from '../../../stores';
|
|
8
|
-
import Menu from '../../common/menu/Menu.svelte';
|
|
9
|
-
import InsertTriggerButton from './InsertTriggerButton.svelte';
|
|
10
4
|
export let label;
|
|
11
|
-
export let modules;
|
|
12
|
-
export let index;
|
|
13
|
-
export let insertable;
|
|
14
5
|
export let bgColor = '';
|
|
15
6
|
export let selected;
|
|
16
7
|
export let selectable;
|
|
17
|
-
export let deleteBranch = undefined;
|
|
18
8
|
export let id = undefined;
|
|
19
|
-
export let moving = undefined;
|
|
20
9
|
export let center = true;
|
|
21
|
-
export let disableAi = false;
|
|
22
|
-
export let wrapperNode = undefined;
|
|
23
10
|
export let borderColor = undefined;
|
|
24
11
|
export let hideId = false;
|
|
25
12
|
const dispatch = createEventDispatcher();
|
|
26
|
-
|
|
27
|
-
let triggerOpenMenu = false;
|
|
28
|
-
let openNoCopilot = false;
|
|
29
|
-
const { drawerStore: copilotDrawerStore, currentStepStore: copilotCurrentStepStore } = getContext('FlowCopilotContext') || {};
|
|
13
|
+
const { currentStepStore: copilotCurrentStepStore } = getContext('FlowCopilotContext') || {};
|
|
30
14
|
</script>
|
|
31
15
|
|
|
32
|
-
{#if insertable && deleteBranch}
|
|
33
|
-
<div class="w-[27px] absolute -top-[40px] left-[50%] right-[50%] -translate-x-1/2">
|
|
34
|
-
<button
|
|
35
|
-
title="Delete branch"
|
|
36
|
-
on:click|stopPropagation={() => {
|
|
37
|
-
if (deleteBranch) {
|
|
38
|
-
dispatch('deleteBranch', deleteBranch)
|
|
39
|
-
}
|
|
40
|
-
}}
|
|
41
|
-
type="button"
|
|
42
|
-
class="text-primary bg-surface border mx-[1px] 'border-gray-300 dark:border-gray-500 focus:outline-none hover:bg-surface-hover focus:ring-4 focus:ring-gray-200 font-medium rounded-full text-sm w-[25px] h-[25px] flex items-center justify-center"
|
|
43
|
-
>
|
|
44
|
-
<X class="m-[5px]" size={15} />
|
|
45
|
-
</button>
|
|
46
|
-
</div>
|
|
47
|
-
{/if}
|
|
48
16
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
49
17
|
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
50
18
|
<div
|
|
@@ -52,9 +20,10 @@ const { drawerStore: copilotDrawerStore, currentStepStore: copilotCurrentStepSto
|
|
|
52
20
|
'w-full flex relative overflow-hidden rounded-sm',
|
|
53
21
|
selectable ? 'cursor-pointer' : '',
|
|
54
22
|
selected ? 'outline outline-offset-1 outline-2 outline-gray-600' : '',
|
|
55
|
-
label === 'Input' && $copilotCurrentStepStore === 'Input' ? 'z-[901]' : ''
|
|
23
|
+
label === 'Input' && $copilotCurrentStepStore === 'Input' ? 'z-[901]' : '',
|
|
24
|
+
'bg-surface'
|
|
56
25
|
)}
|
|
57
|
-
style="
|
|
26
|
+
style="width: 275px; max-height: 34px; background-color: {bgColor} !important;"
|
|
58
27
|
on:click={() => {
|
|
59
28
|
if (selectable) {
|
|
60
29
|
if (id) {
|
|
@@ -77,7 +46,7 @@ const { drawerStore: copilotDrawerStore, currentStepStore: copilotCurrentStepSto
|
|
|
77
46
|
<span class="mr-2" />
|
|
78
47
|
{/if}
|
|
79
48
|
<div />
|
|
80
|
-
<div class="
|
|
49
|
+
<div class="truncate"><pre>{label}</pre></div>
|
|
81
50
|
<div class="flex items-center space-x-2">
|
|
82
51
|
{#if id && !hideId}
|
|
83
52
|
<Badge color="indigo">{id}</Badge>
|
|
@@ -85,125 +54,3 @@ const { drawerStore: copilotDrawerStore, currentStepStore: copilotCurrentStepSto
|
|
|
85
54
|
</div>
|
|
86
55
|
</div>
|
|
87
56
|
</div>
|
|
88
|
-
|
|
89
|
-
{#if insertable && modules && (label != 'Input' || modules.length == 0)}
|
|
90
|
-
<div
|
|
91
|
-
class="{openMenu
|
|
92
|
-
? 'z-20'
|
|
93
|
-
: ''} w-[27px] absolute top-[49px] left-[50%] right-[50%] -translate-x-1/2"
|
|
94
|
-
>
|
|
95
|
-
{#if moving}
|
|
96
|
-
<button
|
|
97
|
-
title="Add branch"
|
|
98
|
-
on:click={() => {
|
|
99
|
-
if (modules) {
|
|
100
|
-
dispatch('insert', {
|
|
101
|
-
modules,
|
|
102
|
-
index,
|
|
103
|
-
detail: 'move'
|
|
104
|
-
})
|
|
105
|
-
}
|
|
106
|
-
}}
|
|
107
|
-
type="button"
|
|
108
|
-
disabled={wrapperNode?.id === moving}
|
|
109
|
-
class="text-primary bg-surface border mx-[1px] border-gray-300 dark:border-gray-500 focus:outline-none hover:bg-gray-100 focus:ring-4 focus:ring-gray-200 font-medium rounded-full text-sm w-[25px] h-[25px] flex items-center justify-center"
|
|
110
|
-
>
|
|
111
|
-
<ClipboardCopy size={12} />
|
|
112
|
-
</button>
|
|
113
|
-
{:else}
|
|
114
|
-
<InsertModuleButton
|
|
115
|
-
{disableAi}
|
|
116
|
-
bind:open={openMenu}
|
|
117
|
-
trigger={label == 'Input'}
|
|
118
|
-
on:insert={(e) => {
|
|
119
|
-
if (modules) {
|
|
120
|
-
dispatch('insert', {
|
|
121
|
-
modules,
|
|
122
|
-
index,
|
|
123
|
-
detail: 'script',
|
|
124
|
-
script: e.detail
|
|
125
|
-
})
|
|
126
|
-
}
|
|
127
|
-
}}
|
|
128
|
-
on:new={(e) => {
|
|
129
|
-
if (modules) {
|
|
130
|
-
dispatch('insert', {
|
|
131
|
-
modules,
|
|
132
|
-
index: index,
|
|
133
|
-
detail: e.detail
|
|
134
|
-
})
|
|
135
|
-
}
|
|
136
|
-
}}
|
|
137
|
-
{index}
|
|
138
|
-
modules={modules ?? []}
|
|
139
|
-
/>
|
|
140
|
-
{/if}
|
|
141
|
-
</div>
|
|
142
|
-
{/if}
|
|
143
|
-
|
|
144
|
-
{#if insertable && modules && label == 'Input'}
|
|
145
|
-
{#if !disableAi}
|
|
146
|
-
<div
|
|
147
|
-
class="{openNoCopilot
|
|
148
|
-
? 'z-10'
|
|
149
|
-
: ''} w-9 absolute -top-10 left-[50%] right-[50%] -translate-x-1/2"
|
|
150
|
-
>
|
|
151
|
-
<Menu pointerDown noMinW placement="bottom-center" let:close bind:show={openNoCopilot}>
|
|
152
|
-
<button
|
|
153
|
-
title="AI Flow Builder"
|
|
154
|
-
on:pointerdown={$copilotInfo.exists_openai_resource_path
|
|
155
|
-
? (ev) => {
|
|
156
|
-
ev.preventDefault()
|
|
157
|
-
ev.stopPropagation()
|
|
158
|
-
$copilotDrawerStore?.openDrawer()
|
|
159
|
-
}
|
|
160
|
-
: undefined}
|
|
161
|
-
slot="trigger"
|
|
162
|
-
type="button"
|
|
163
|
-
class=" bg-surface text-violet-800 dark:text-violet-400 border mx-0.5 focus:outline-none hover:bg-surface-hover focus:ring-4 focus:ring-gray-200 font-medium rounded-full text-sm w-8 h-8 flex items-center justify-center"
|
|
164
|
-
>
|
|
165
|
-
<Wand2 size={16} />
|
|
166
|
-
</button>
|
|
167
|
-
{#if !$copilotInfo.exists_openai_resource_path}
|
|
168
|
-
<div class="text-primary p-4">
|
|
169
|
-
<p class="text-sm w-80">
|
|
170
|
-
Enable Windmill AI in the
|
|
171
|
-
<a
|
|
172
|
-
href="{base}/workspace_settings?tab=openai"
|
|
173
|
-
target="_blank"
|
|
174
|
-
class="inline-flex flex-row items-center gap-1"
|
|
175
|
-
on:click={() => {
|
|
176
|
-
close()
|
|
177
|
-
}}
|
|
178
|
-
>
|
|
179
|
-
workspace settings
|
|
180
|
-
<ExternalLink size={16} />
|
|
181
|
-
</a>
|
|
182
|
-
</p>
|
|
183
|
-
</div>
|
|
184
|
-
{/if}
|
|
185
|
-
</Menu>
|
|
186
|
-
</div>
|
|
187
|
-
{/if}
|
|
188
|
-
<div
|
|
189
|
-
class="{triggerOpenMenu
|
|
190
|
-
? 'z-10'
|
|
191
|
-
: ''} w-[27px] absolute top-[50px] left-[65%] right-[35%] -translate-x-1/2"
|
|
192
|
-
>
|
|
193
|
-
<InsertTriggerButton
|
|
194
|
-
{disableAi}
|
|
195
|
-
bind:open={triggerOpenMenu}
|
|
196
|
-
on:new={(e) => {
|
|
197
|
-
if (modules) {
|
|
198
|
-
dispatch('insert', {
|
|
199
|
-
modules,
|
|
200
|
-
index: 0,
|
|
201
|
-
detail: e.detail
|
|
202
|
-
})
|
|
203
|
-
}
|
|
204
|
-
}}
|
|
205
|
-
index={0}
|
|
206
|
-
modules={modules ?? []}
|
|
207
|
-
/>
|
|
208
|
-
</div>
|
|
209
|
-
{/if}
|
|
@@ -1,24 +1,13 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { SvelteComponent } from "svelte";
|
|
3
2
|
import type { FlowModule } from '../../../gen';
|
|
4
3
|
declare const __propDef: {
|
|
5
4
|
props: {
|
|
6
5
|
label: string;
|
|
7
|
-
modules: FlowModule[] | undefined;
|
|
8
|
-
index: number;
|
|
9
|
-
insertable: boolean;
|
|
10
6
|
bgColor?: string | undefined;
|
|
11
7
|
selected: boolean;
|
|
12
8
|
selectable: boolean;
|
|
13
|
-
deleteBranch?: {
|
|
14
|
-
module: FlowModule;
|
|
15
|
-
index: number;
|
|
16
|
-
} | undefined;
|
|
17
9
|
id?: string | undefined;
|
|
18
|
-
moving?: string | undefined;
|
|
19
10
|
center?: boolean | undefined;
|
|
20
|
-
disableAi?: boolean | undefined;
|
|
21
|
-
wrapperNode?: FlowModule | undefined;
|
|
22
11
|
borderColor?: string | undefined;
|
|
23
12
|
hideId?: boolean | undefined;
|
|
24
13
|
};
|
|
@@ -34,10 +23,6 @@ declare const __propDef: {
|
|
|
34
23
|
index: number;
|
|
35
24
|
}>;
|
|
36
25
|
select: CustomEvent<string>;
|
|
37
|
-
deleteBranch: CustomEvent<{
|
|
38
|
-
module: FlowModule;
|
|
39
|
-
index: number;
|
|
40
|
-
}>;
|
|
41
26
|
} & {
|
|
42
27
|
[evt: string]: CustomEvent<any>;
|
|
43
28
|
};
|
|
@@ -10,6 +10,7 @@ import { writable } from 'svelte/store';
|
|
|
10
10
|
import { twMerge } from 'tailwind-merge';
|
|
11
11
|
export let pickableProperties;
|
|
12
12
|
export let result = undefined;
|
|
13
|
+
export let extraResults = undefined;
|
|
13
14
|
export let flow_input = undefined;
|
|
14
15
|
export let error = false;
|
|
15
16
|
export let displayContext = true;
|
|
@@ -53,6 +54,7 @@ setContext('PropPickerWrapper', {
|
|
|
53
54
|
{#if result}
|
|
54
55
|
<PropPickerResult
|
|
55
56
|
{result}
|
|
57
|
+
{extraResults}
|
|
56
58
|
{flow_input}
|
|
57
59
|
on:select={({ detail }) => {
|
|
58
60
|
if (!notSelectable && !$propPickerConfig) {
|
|
@@ -5,6 +5,7 @@ import type { Writable } from 'svelte/store';
|
|
|
5
5
|
import type ScriptEditorDrawer from './content/ScriptEditorDrawer.svelte';
|
|
6
6
|
import type { FlowState } from './flowState';
|
|
7
7
|
import type { Schedule } from './scheduleUtils';
|
|
8
|
+
import type { FlowBuilderWhitelabelCustomUi } from '../custom_ui';
|
|
8
9
|
export type FlowInput = Record<string, {
|
|
9
10
|
flowStepWarnings?: Record<string, {
|
|
10
11
|
message: string;
|
|
@@ -33,4 +34,5 @@ export type FlowEditorContext = {
|
|
|
33
34
|
saveDraft: () => void;
|
|
34
35
|
initialPath: string;
|
|
35
36
|
flowInputsStore: Writable<FlowInput>;
|
|
37
|
+
customUi: FlowBuilderWhitelabelCustomUi;
|
|
36
38
|
};
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
<script>import {} from '../../gen';
|
|
2
|
+
import { NODE } from '.';
|
|
3
|
+
import { createEventDispatcher, onMount, setContext } from 'svelte';
|
|
4
|
+
import { writable } from 'svelte/store';
|
|
5
|
+
import '@xyflow/svelte/dist/style.css';
|
|
6
|
+
import { SvelteFlow, ConnectionLineType, Controls, ControlButton } from '@xyflow/svelte';
|
|
7
|
+
import graphBuilder from './graphBuilder';
|
|
8
|
+
import ModuleNode from './renderers/nodes/ModuleNode.svelte';
|
|
9
|
+
import InputNode from './renderers/nodes/InputNode.svelte';
|
|
10
|
+
import BranchAllStart from './renderers/nodes/BranchAllStart.svelte';
|
|
11
|
+
import BranchAllEndNode from './renderers/nodes/branchAllEndNode.svelte';
|
|
12
|
+
import ForLoopEndNode from './renderers/nodes/ForLoopEndNode.svelte';
|
|
13
|
+
import ForLoopStartNode from './renderers/nodes/ForLoopStartNode.svelte';
|
|
14
|
+
import ResultNode from './renderers/nodes/ResultNode.svelte';
|
|
15
|
+
import BaseEdge from './renderers/edges/BaseEdge.svelte';
|
|
16
|
+
import EmptyEdge from './renderers/edges/EmptyEdge.svelte';
|
|
17
|
+
import { sugiyama, dagStratify, decrossOpt, coordCenter } from 'd3-dag';
|
|
18
|
+
import { Expand } from 'lucide-svelte';
|
|
19
|
+
import Toggle from '../Toggle.svelte';
|
|
20
|
+
import DataflowEdge from './renderers/edges/DataflowEdge.svelte';
|
|
21
|
+
import { encodeState } from '../../utils';
|
|
22
|
+
import BranchOneStart from './renderers/nodes/BranchOneStart.svelte';
|
|
23
|
+
import NoBranchNode from './renderers/nodes/NoBranchNode.svelte';
|
|
24
|
+
export let success = undefined;
|
|
25
|
+
export let modules = [];
|
|
26
|
+
export let failureModule = undefined;
|
|
27
|
+
export let minHeight = 0;
|
|
28
|
+
export let maxHeight = undefined;
|
|
29
|
+
export let notSelectable = false;
|
|
30
|
+
export let flowModuleStates = undefined;
|
|
31
|
+
export let selectedId = writable(undefined);
|
|
32
|
+
export let insertable = false;
|
|
33
|
+
export let moving = undefined;
|
|
34
|
+
export let scroll = false;
|
|
35
|
+
// Download: display a top level button to open the graph in a new tab
|
|
36
|
+
export let download = false;
|
|
37
|
+
export let fullSize = false;
|
|
38
|
+
export let disableAi = false;
|
|
39
|
+
export let flowInputsStore = writable(undefined);
|
|
40
|
+
let useDataflow = writable(false);
|
|
41
|
+
setContext('FlowGraphContext', { selectedId, flowInputsStore, useDataflow });
|
|
42
|
+
const dispatch = createEventDispatcher();
|
|
43
|
+
let fullWidth = 0;
|
|
44
|
+
let width = 0;
|
|
45
|
+
function layoutNodes(nodes) {
|
|
46
|
+
let seenId = [];
|
|
47
|
+
for (const n of nodes) {
|
|
48
|
+
if (seenId.includes(n.id)) {
|
|
49
|
+
n.id = n.id + '_dup';
|
|
50
|
+
}
|
|
51
|
+
seenId.push(n.id);
|
|
52
|
+
}
|
|
53
|
+
const flattenParentIds = nodes.map((n) => ({
|
|
54
|
+
...n,
|
|
55
|
+
parentIds: n.data?.parentIds ?? []
|
|
56
|
+
}));
|
|
57
|
+
const stratify = dagStratify().id(({ id }) => id);
|
|
58
|
+
const dag = stratify(flattenParentIds);
|
|
59
|
+
let boxSize;
|
|
60
|
+
try {
|
|
61
|
+
const layout = sugiyama()
|
|
62
|
+
.decross(decrossOpt())
|
|
63
|
+
.coord(coordCenter())
|
|
64
|
+
.nodeSize(() => [NODE.width + NODE.gap.horizontal, NODE.height + NODE.gap.vertical]);
|
|
65
|
+
boxSize = layout(dag);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
const layout = sugiyama()
|
|
69
|
+
.coord(coordCenter())
|
|
70
|
+
.nodeSize(() => [NODE.width + NODE.gap.horizontal, NODE.height + NODE.gap.vertical]);
|
|
71
|
+
boxSize = layout(dag);
|
|
72
|
+
}
|
|
73
|
+
const newNodes = dag.descendants().map((des) => ({
|
|
74
|
+
...des.data,
|
|
75
|
+
id: des.data.id,
|
|
76
|
+
position: {
|
|
77
|
+
x: des.x
|
|
78
|
+
? // @ts-ignore
|
|
79
|
+
(des.data.data.offset ?? 0) +
|
|
80
|
+
// @ts-ignore
|
|
81
|
+
des.x +
|
|
82
|
+
(fullSize ? fullWidth : width) / 2 -
|
|
83
|
+
boxSize.width / 2 -
|
|
84
|
+
NODE.width / 2 -
|
|
85
|
+
(width - fullWidth) / 2
|
|
86
|
+
: 0,
|
|
87
|
+
y: des.y || 0
|
|
88
|
+
}
|
|
89
|
+
}));
|
|
90
|
+
return newNodes;
|
|
91
|
+
}
|
|
92
|
+
$: graph = graphBuilder(modules, {
|
|
93
|
+
disableAi,
|
|
94
|
+
insertable,
|
|
95
|
+
flowModuleStates,
|
|
96
|
+
selectedId: $selectedId
|
|
97
|
+
}, failureModule, {
|
|
98
|
+
deleteBranch: (detail, label) => {
|
|
99
|
+
$selectedId = label;
|
|
100
|
+
dispatch('deleteBranch', detail);
|
|
101
|
+
},
|
|
102
|
+
insert: (detail) => {
|
|
103
|
+
dispatch('insert', detail);
|
|
104
|
+
},
|
|
105
|
+
select: (modId) => {
|
|
106
|
+
if (!notSelectable) {
|
|
107
|
+
if ($selectedId != modId) {
|
|
108
|
+
$selectedId = modId;
|
|
109
|
+
}
|
|
110
|
+
dispatch('select', modId);
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
delete: (detail, label) => {
|
|
114
|
+
$selectedId = label;
|
|
115
|
+
dispatch('delete', detail);
|
|
116
|
+
},
|
|
117
|
+
newBranch: (module) => {
|
|
118
|
+
dispatch('newBranch', { module });
|
|
119
|
+
},
|
|
120
|
+
move: (module, modules) => {
|
|
121
|
+
dispatch('move', { module, modules });
|
|
122
|
+
},
|
|
123
|
+
selectedIteration: (detail, moduleId) => {
|
|
124
|
+
dispatch('selectedIteration', { ...detail, moduleId: moduleId });
|
|
125
|
+
}
|
|
126
|
+
}, success, $useDataflow, $selectedId, moving);
|
|
127
|
+
const nodes = writable([]);
|
|
128
|
+
const edges = writable([]);
|
|
129
|
+
let height = 0;
|
|
130
|
+
function updateStores() {
|
|
131
|
+
$nodes = layoutNodes(graph?.nodes);
|
|
132
|
+
$edges = graph.edges;
|
|
133
|
+
height = Math.max(...$nodes.map((n) => n.position.y + NODE.height + 40), minHeight);
|
|
134
|
+
}
|
|
135
|
+
$: graph && updateStores();
|
|
136
|
+
const nodeTypes = {
|
|
137
|
+
input2: InputNode,
|
|
138
|
+
module: ModuleNode,
|
|
139
|
+
branchAllStart: BranchAllStart,
|
|
140
|
+
branchAllEnd: BranchAllEndNode,
|
|
141
|
+
forLoopEnd: ForLoopEndNode,
|
|
142
|
+
forLoopStart: ForLoopStartNode,
|
|
143
|
+
result: ResultNode,
|
|
144
|
+
whileLoopStart: ForLoopStartNode,
|
|
145
|
+
whileLoopEnd: ForLoopEndNode,
|
|
146
|
+
branchOneStart: BranchOneStart,
|
|
147
|
+
branchOneEnd: BranchAllEndNode,
|
|
148
|
+
noBranch: NoBranchNode
|
|
149
|
+
};
|
|
150
|
+
const edgeTypes = {
|
|
151
|
+
edge: BaseEdge,
|
|
152
|
+
empty: EmptyEdge,
|
|
153
|
+
dataflowedge: DataflowEdge
|
|
154
|
+
};
|
|
155
|
+
const proOptions = { hideAttribution: true };
|
|
156
|
+
$: showDataflow =
|
|
157
|
+
$selectedId != undefined &&
|
|
158
|
+
!$selectedId.startsWith('constants') &&
|
|
159
|
+
!$selectedId.startsWith('settings') &&
|
|
160
|
+
$selectedId !== 'failure' &&
|
|
161
|
+
$selectedId !== 'Result';
|
|
162
|
+
const viewport = writable({
|
|
163
|
+
x: 0,
|
|
164
|
+
y: 5,
|
|
165
|
+
zoom: 1
|
|
166
|
+
});
|
|
167
|
+
function centerViewport(width) {
|
|
168
|
+
viewport.update((vp) => ({
|
|
169
|
+
...vp,
|
|
170
|
+
x: (width - fullWidth) / 2,
|
|
171
|
+
y: vp.y
|
|
172
|
+
}));
|
|
173
|
+
}
|
|
174
|
+
$: width && centerViewport(width);
|
|
175
|
+
onMount(() => {
|
|
176
|
+
centerViewport(width);
|
|
177
|
+
});
|
|
178
|
+
</script>
|
|
179
|
+
|
|
180
|
+
<div style={`height: ${height}px; max-height: ${maxHeight}px;`} bind:clientWidth={width}>
|
|
181
|
+
<SvelteFlow
|
|
182
|
+
{nodes}
|
|
183
|
+
{edges}
|
|
184
|
+
{edgeTypes}
|
|
185
|
+
{nodeTypes}
|
|
186
|
+
{viewport}
|
|
187
|
+
{height}
|
|
188
|
+
minZoom={0.5}
|
|
189
|
+
connectionLineType={ConnectionLineType.SmoothStep}
|
|
190
|
+
defaultEdgeOptions={{ type: 'smoothstep' }}
|
|
191
|
+
preventScrolling={scroll}
|
|
192
|
+
zoomOnDoubleClick={false}
|
|
193
|
+
elementsSelectable={false}
|
|
194
|
+
{proOptions}
|
|
195
|
+
nodesDraggable={false}
|
|
196
|
+
>
|
|
197
|
+
<div class="absolute inset-0 !bg-surface-secondary" />
|
|
198
|
+
<Controls position="top-right" orientation="horizontal" showLock={false}>
|
|
199
|
+
{#if download}
|
|
200
|
+
<ControlButton
|
|
201
|
+
on:click={() => {
|
|
202
|
+
try {
|
|
203
|
+
localStorage.setItem('svelvet', encodeState({ modules, failureModule }))
|
|
204
|
+
} catch (e) {
|
|
205
|
+
console.error('error interacting with local storage', e)
|
|
206
|
+
}
|
|
207
|
+
window.open('/view_graph', '_blank')
|
|
208
|
+
}}
|
|
209
|
+
class="!bg-surface"
|
|
210
|
+
>
|
|
211
|
+
<Expand size="14" />
|
|
212
|
+
</ControlButton>
|
|
213
|
+
{/if}
|
|
214
|
+
</Controls>
|
|
215
|
+
|
|
216
|
+
<Controls
|
|
217
|
+
position="top-left"
|
|
218
|
+
orientation="horizontal"
|
|
219
|
+
showLock={false}
|
|
220
|
+
showZoom={false}
|
|
221
|
+
showFitView={false}
|
|
222
|
+
>
|
|
223
|
+
{#if showDataflow}
|
|
224
|
+
<Toggle
|
|
225
|
+
value={$useDataflow}
|
|
226
|
+
on:change={() => {
|
|
227
|
+
$useDataflow = !$useDataflow
|
|
228
|
+
}}
|
|
229
|
+
size="xs"
|
|
230
|
+
options={{
|
|
231
|
+
right: 'Dataflow'
|
|
232
|
+
}}
|
|
233
|
+
/>
|
|
234
|
+
{/if}
|
|
235
|
+
</Controls>
|
|
236
|
+
</SvelteFlow>
|
|
237
|
+
</div>
|
|
238
|
+
|
|
239
|
+
<style>
|
|
240
|
+
:global(.svelte-flow__handle) {
|
|
241
|
+
opacity: 0;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
:global(.svelte-flow__controls-button) {
|
|
245
|
+
border-width: 0px;
|
|
246
|
+
--tw-bg-opacity: 1;
|
|
247
|
+
background-color: rgb(var(--color-surface) / var(--tw-bg-opacity));
|
|
248
|
+
}
|
|
249
|
+
:global(.svelte-flow__controls-button:hover) {
|
|
250
|
+
--tw-bg-opacity: 1;
|
|
251
|
+
background-color: rgb(var(--color-surface-hover) / var(--tw-bg-opacity));
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
:global(.svelte-flow__edgelabel-renderer) {
|
|
255
|
+
z-index: 50;
|
|
256
|
+
}</style>
|
|
@@ -2,6 +2,7 @@ import { SvelteComponent } from "svelte";
|
|
|
2
2
|
import { type FlowModule } from '../../gen';
|
|
3
3
|
import { type GraphModuleState } from '.';
|
|
4
4
|
import { type Writable } from 'svelte/store';
|
|
5
|
+
import '@xyflow/svelte/dist/style.css';
|
|
5
6
|
import type { FlowInput } from '../flows/types';
|
|
6
7
|
declare const __propDef: {
|
|
7
8
|
props: {
|
|
@@ -12,7 +13,6 @@ declare const __propDef: {
|
|
|
12
13
|
maxHeight?: number | undefined;
|
|
13
14
|
notSelectable?: boolean | undefined;
|
|
14
15
|
flowModuleStates?: Record<string, GraphModuleState> | undefined;
|
|
15
|
-
rebuildOnChange?: any;
|
|
16
16
|
selectedId?: Writable<string | undefined> | undefined;
|
|
17
17
|
insertable?: boolean | undefined;
|
|
18
18
|
moving?: string | undefined;
|
|
@@ -23,21 +23,21 @@ declare const __propDef: {
|
|
|
23
23
|
flowInputsStore?: Writable<FlowInput | undefined> | undefined;
|
|
24
24
|
};
|
|
25
25
|
events: {
|
|
26
|
-
|
|
27
|
-
select: CustomEvent<any>;
|
|
26
|
+
deleteBranch: CustomEvent<any>;
|
|
28
27
|
insert: CustomEvent<any>;
|
|
28
|
+
select: CustomEvent<any>;
|
|
29
|
+
delete: CustomEvent<any>;
|
|
29
30
|
newBranch: CustomEvent<any>;
|
|
30
31
|
move: CustomEvent<any>;
|
|
31
32
|
selectedIteration: CustomEvent<any>;
|
|
32
|
-
deleteBranch: CustomEvent<any>;
|
|
33
33
|
} & {
|
|
34
34
|
[evt: string]: CustomEvent<any>;
|
|
35
35
|
};
|
|
36
36
|
slots: {};
|
|
37
37
|
};
|
|
38
|
-
export type
|
|
39
|
-
export type
|
|
40
|
-
export type
|
|
41
|
-
export default class
|
|
38
|
+
export type FlowGraphV2Props = typeof __propDef.props;
|
|
39
|
+
export type FlowGraphV2Events = typeof __propDef.events;
|
|
40
|
+
export type FlowGraphV2Slots = typeof __propDef.slots;
|
|
41
|
+
export default class FlowGraphV2 extends SvelteComponent<FlowGraphV2Props, FlowGraphV2Events, FlowGraphV2Slots> {
|
|
42
42
|
}
|
|
43
43
|
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { FlowModule } from '../../gen';
|
|
2
|
+
import { type Node, type Edge } from '@xyflow/svelte';
|
|
3
|
+
export type GraphEventHandlers = {
|
|
4
|
+
insert: (detail: any) => void;
|
|
5
|
+
deleteBranch: (detail: any, label: string) => void;
|
|
6
|
+
select: (modId: string) => void;
|
|
7
|
+
delete: (detail: any, label: string) => void;
|
|
8
|
+
newBranch: (module: FlowModule) => void;
|
|
9
|
+
move: (module: FlowModule, modules: FlowModule[]) => void;
|
|
10
|
+
selectedIteration: (detail: any, moduleId: string) => void;
|
|
11
|
+
};
|
|
12
|
+
export default function graphBuilder(modules: FlowModule[] | undefined, extra: Record<string, any>, failureModule: FlowModule | undefined, eventHandlers: GraphEventHandlers, success: boolean | undefined, useDataflow: boolean | undefined, selectedId: string | undefined, moving: string | undefined): {
|
|
13
|
+
nodes: Node[];
|
|
14
|
+
edges: Edge[];
|
|
15
|
+
};
|