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.
Files changed (199) hide show
  1. package/package/base.d.ts +1 -1
  2. package/package/base.js +1 -1
  3. package/package/components/ArgInput.svelte +33 -3
  4. package/package/components/DisplayResult.svelte +17 -5
  5. package/package/components/EditorBar.svelte +48 -38
  6. package/package/components/EditorBar.svelte.d.ts +2 -0
  7. package/package/components/ErrorOrRecoveryHandler.svelte +3 -2
  8. package/package/components/FlowBuilder.svelte +18 -12
  9. package/package/components/FlowBuilder.svelte.d.ts +3 -2
  10. package/package/components/FlowGraphViewer.svelte +6 -5
  11. package/package/components/FlowJobResult.svelte +4 -2
  12. package/package/components/FlowJobResult.svelte.d.ts +2 -0
  13. package/package/components/FlowStatusViewer.svelte +7 -1
  14. package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
  15. package/package/components/FlowStatusViewerInner.svelte +29 -11
  16. package/package/components/FlowViewer.svelte +3 -1
  17. package/package/components/FlowViewer.svelte.d.ts +1 -0
  18. package/package/components/HighlightCode.svelte +2 -2
  19. package/package/components/ModulePreviewForm.svelte +1 -1
  20. package/package/components/ObjectResourceInput.svelte +7 -2
  21. package/package/components/ObjectResourceInput.svelte.d.ts +2 -0
  22. package/package/components/ResourcePicker.svelte +60 -48
  23. package/package/components/ScriptBuilder.svelte +42 -36
  24. package/package/components/ScriptBuilder.svelte.d.ts +2 -0
  25. package/package/components/ScriptEditor.svelte +3 -1
  26. package/package/components/ScriptEditor.svelte.d.ts +2 -0
  27. package/package/components/ScriptVersionHistory.svelte +63 -7
  28. package/package/components/apps/components/display/AppText.svelte +8 -3
  29. package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +3 -2
  30. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +22 -5
  31. package/package/components/apps/components/display/table/AppAggridTable.svelte +14 -5
  32. package/package/components/apps/components/display/table/AppAggridTableActions.svelte +23 -8
  33. package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +5 -3
  34. package/package/components/apps/components/display/table/utils.js +8 -7
  35. package/package/components/apps/components/helpers/RunnableComponent.svelte +13 -1
  36. package/package/components/apps/components/helpers/eval.js +31 -25
  37. package/package/components/apps/components/inputs/AppSelect.svelte +45 -29
  38. package/package/components/apps/editor/AppEditorHeader.svelte +1 -0
  39. package/package/components/apps/editor/AppReportsDrawer.svelte +4 -3
  40. package/package/components/apps/editor/component/components.d.ts +7 -1
  41. package/package/components/apps/editor/component/components.js +6 -0
  42. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +0 -1
  43. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphHeader.svelte +55 -45
  44. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphHeader.svelte.d.ts +7 -9
  45. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +66 -59
  46. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte.d.ts +9 -11
  47. package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +213 -254
  48. package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte.d.ts +0 -1
  49. package/package/components/apps/editor/settingsPanel/decisionTree/nodeHelpers.d.ts +1 -1
  50. package/package/components/apps/editor/settingsPanel/decisionTree/nodeHelpers.js +2 -6
  51. package/package/components/custom_ui.d.ts +35 -1
  52. package/package/components/details/DetailPageDetailPanel.svelte +9 -1
  53. package/package/components/details/DetailPageDetailPanel.svelte.d.ts +2 -1
  54. package/package/components/details/DetailPageLayout.svelte +2 -0
  55. package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
  56. package/package/components/details/EmailTriggerPanel.svelte +128 -0
  57. package/package/components/details/EmailTriggerPanel.svelte.d.ts +20 -0
  58. package/package/components/details/WebhooksPanel.svelte +10 -71
  59. package/package/components/flows/FlowHistory.svelte +1 -0
  60. package/package/components/flows/content/FlowInputs.svelte +0 -1
  61. package/package/components/flows/content/FlowModuleComponent.svelte +8 -2
  62. package/package/components/flows/content/FlowModuleEarlyStop.svelte +193 -66
  63. package/package/components/flows/content/FlowModuleHeader.svelte +1 -1
  64. package/package/components/flows/content/FlowModuleScript.svelte +33 -3
  65. package/package/components/flows/content/FlowModuleScript.svelte.d.ts +2 -0
  66. package/package/components/flows/content/FlowModuleSuspend.svelte +15 -0
  67. package/package/components/flows/content/FlowSettings.svelte +26 -15
  68. package/package/components/flows/flowExplorer.js +3 -0
  69. package/package/components/flows/flowInfers.js +1 -1
  70. package/package/components/flows/map/FlowJobsMenu.svelte +39 -44
  71. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -2
  72. package/package/components/flows/map/FlowModuleSchemaMap.svelte +4 -3
  73. package/package/components/flows/map/InsertModuleButton.svelte +16 -9
  74. package/package/components/flows/map/MapItem.svelte +4 -98
  75. package/package/components/flows/map/MapItem.svelte.d.ts +0 -5
  76. package/package/components/flows/map/VirtualItem.svelte +6 -159
  77. package/package/components/flows/map/VirtualItem.svelte.d.ts +0 -15
  78. package/package/components/flows/propPicker/PropPickerWrapper.svelte +2 -0
  79. package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +1 -0
  80. package/package/components/flows/types.d.ts +2 -0
  81. package/package/components/graph/FlowGraphV2.svelte +256 -0
  82. package/package/components/graph/{FlowGraph.svelte.d.ts → FlowGraphV2.svelte.d.ts} +8 -8
  83. package/package/components/graph/graphBuilder.d.ts +15 -0
  84. package/package/components/graph/graphBuilder.js +337 -0
  85. package/package/components/graph/index.d.ts +0 -1
  86. package/package/components/graph/index.js +0 -1
  87. package/package/components/graph/model.d.ts +4 -8
  88. package/package/components/graph/renderers/edges/BaseEdge.svelte +109 -0
  89. package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +35 -0
  90. package/package/components/graph/renderers/edges/DataflowEdge.svelte +37 -0
  91. package/package/components/graph/renderers/edges/DataflowEdge.svelte.d.ts +29 -0
  92. package/package/components/graph/renderers/edges/EmptyEdge.svelte +22 -0
  93. package/package/components/graph/renderers/edges/EmptyEdge.svelte.d.ts +23 -0
  94. package/package/components/graph/renderers/nodes/BranchAllStart.svelte +44 -0
  95. package/package/components/graph/renderers/nodes/BranchAllStart.svelte.d.ts +29 -0
  96. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +41 -0
  97. package/package/components/graph/renderers/nodes/BranchOneStart.svelte.d.ts +29 -0
  98. package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +19 -0
  99. package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte.d.ts +24 -0
  100. package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +20 -0
  101. package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte.d.ts +25 -0
  102. package/package/components/graph/renderers/nodes/InputNode.svelte +74 -0
  103. package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +23 -0
  104. package/package/components/graph/renderers/nodes/ModuleNode.svelte +71 -0
  105. package/package/components/graph/renderers/nodes/ModuleNode.svelte.d.ts +41 -0
  106. package/package/components/graph/renderers/nodes/NoBranchNode.svelte +20 -0
  107. package/package/components/graph/renderers/nodes/NoBranchNode.svelte.d.ts +27 -0
  108. package/package/components/graph/renderers/nodes/NodeWrapper.svelte +21 -0
  109. package/package/components/graph/renderers/nodes/NodeWrapper.svelte.d.ts +22 -0
  110. package/package/components/graph/renderers/nodes/ResultNode.svelte +24 -0
  111. package/package/components/graph/renderers/nodes/ResultNode.svelte.d.ts +22 -0
  112. package/package/components/graph/renderers/nodes/branchAllEndNode.svelte +19 -0
  113. package/package/components/graph/renderers/nodes/branchAllEndNode.svelte.d.ts +26 -0
  114. package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +19 -0
  115. package/package/components/graph/renderers/nodes/branchOneEndNode.svelte.d.ts +24 -0
  116. package/package/components/graph/renderers/utils.d.ts +8 -0
  117. package/package/components/graph/renderers/utils.js +26 -0
  118. package/package/components/graph/util.d.ts +1 -2
  119. package/package/components/graph/util.js +2 -8
  120. package/package/components/propertyPicker/PropPickerResult.svelte +6 -1
  121. package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
  122. package/package/components/runs/RunsFilter.svelte +15 -17
  123. package/package/components/sidebar/changelogs.js +5 -0
  124. package/package/gen/core/OpenAPI.js +1 -1
  125. package/package/gen/schemas.gen.d.ts +3 -0
  126. package/package/gen/schemas.gen.js +3 -0
  127. package/package/gen/services.gen.d.ts +22 -3
  128. package/package/gen/services.gen.js +38 -2
  129. package/package/gen/types.gen.d.ts +69 -6
  130. package/package/hub.d.ts +11 -0
  131. package/package/hub.js +2 -0
  132. package/package/hubPaths.json +9 -0
  133. package/package/init_scripts/python_failure_module.d.ts +1 -1
  134. package/package/init_scripts/python_failure_module.js +4 -3
  135. package/package/script_helpers.d.ts +2 -2
  136. package/package/script_helpers.js +11 -9
  137. package/package.json +2 -1
  138. package/package/components/graph/FlowGraph.svelte +0 -614
  139. package/package/components/graph/svelvet/LICENSE +0 -21
  140. package/package/components/graph/svelvet/container/README.md +0 -7
  141. package/package/components/graph/svelvet/container/controllers/middleware.d.ts +0 -11
  142. package/package/components/graph/svelvet/container/controllers/middleware.js +0 -87
  143. package/package/components/graph/svelvet/container/models/index.d.ts +0 -0
  144. package/package/components/graph/svelvet/container/models/index.js +0 -1
  145. package/package/components/graph/svelvet/container/views/GraphView.svelte +0 -262
  146. package/package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +0 -26
  147. package/package/components/graph/svelvet/container/views/Svelvet.svelte +0 -121
  148. package/package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +0 -36
  149. package/package/components/graph/svelvet/customCss/controllers/getCss.d.ts +0 -2
  150. package/package/components/graph/svelvet/customCss/controllers/getCss.js +0 -46
  151. package/package/components/graph/svelvet/d3/controllers/d3.d.ts +0 -5
  152. package/package/components/graph/svelvet/d3/controllers/d3.js +0 -59
  153. package/package/components/graph/svelvet/edges/controllers/anchorCbDev.d.ts +0 -4
  154. package/package/components/graph/svelvet/edges/controllers/anchorCbDev.js +0 -92
  155. package/package/components/graph/svelvet/edges/controllers/anchorCbUser.d.ts +0 -57
  156. package/package/components/graph/svelvet/edges/controllers/anchorCbUser.js +0 -73
  157. package/package/components/graph/svelvet/edges/controllers/util.d.ts +0 -37
  158. package/package/components/graph/svelvet/edges/controllers/util.js +0 -71
  159. package/package/components/graph/svelvet/edges/models/Anchor.d.ts +0 -48
  160. package/package/components/graph/svelvet/edges/models/Anchor.js +0 -122
  161. package/package/components/graph/svelvet/edges/models/Edge.d.ts +0 -48
  162. package/package/components/graph/svelvet/edges/models/Edge.js +0 -109
  163. package/package/components/graph/svelvet/edges/types/types.d.ts +0 -18
  164. package/package/components/graph/svelvet/edges/types/types.js +0 -1
  165. package/package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte +0 -104
  166. package/package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte.d.ts +0 -18
  167. package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +0 -42
  168. package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte.d.ts +0 -17
  169. package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +0 -151
  170. package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte.d.ts +0 -17
  171. package/package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte +0 -157
  172. package/package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte.d.ts +0 -60
  173. package/package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte +0 -8
  174. package/package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte.d.ts +0 -25
  175. package/package/components/graph/svelvet/edges/views/Edges/types.d.ts +0 -52
  176. package/package/components/graph/svelvet/edges/views/Edges/types.js +0 -1
  177. package/package/components/graph/svelvet/edges/views/Edges/utils.d.ts +0 -33
  178. package/package/components/graph/svelvet/edges/views/Edges/utils.js +0 -31
  179. package/package/components/graph/svelvet/nodes/controllers/util.d.ts +0 -9
  180. package/package/components/graph/svelvet/nodes/controllers/util.js +0 -13
  181. package/package/components/graph/svelvet/nodes/models/Node.d.ts +0 -74
  182. package/package/components/graph/svelvet/nodes/models/Node.js +0 -156
  183. package/package/components/graph/svelvet/nodes/views/Node.svelte +0 -84
  184. package/package/components/graph/svelvet/nodes/views/Node.svelte.d.ts +0 -21
  185. package/package/components/graph/svelvet/store/controllers/storeApi.d.ts +0 -25
  186. package/package/components/graph/svelvet/store/controllers/storeApi.js +0 -91
  187. package/package/components/graph/svelvet/store/controllers/userApi.d.ts +0 -3
  188. package/package/components/graph/svelvet/store/controllers/userApi.js +0 -18
  189. package/package/components/graph/svelvet/store/controllers/util.d.ts +0 -24
  190. package/package/components/graph/svelvet/store/controllers/util.js +0 -148
  191. package/package/components/graph/svelvet/store/models/store.d.ts +0 -13
  192. package/package/components/graph/svelvet/store/models/store.js +0 -12
  193. package/package/components/graph/svelvet/store/types/types.d.ts +0 -127
  194. package/package/components/graph/svelvet/store/types/types.js +0 -1
  195. package/package/components/graph/svelvet/types/README.md +0 -3
  196. package/package/components/graph/svelvet/types/index.d.ts +0 -2
  197. package/package/components/graph/svelvet/types/index.js +0 -1
  198. package/package/components/graph/svelvet/types/types.d.ts +0 -50
  199. package/package/components/graph/svelvet/types/types.js +0 -18
@@ -1,50 +1,18 @@
1
- <script>import { base } from '../../../base';
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
- let openMenu = false;
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="min-width: 275px; max-height: 80px; background-color: {bgColor};"
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="flex-1 truncate"><pre>{label}</pre></div>
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) {
@@ -17,6 +17,7 @@ declare const __propDef: {
17
17
  props: {
18
18
  pickableProperties: PickableProperties | undefined;
19
19
  result?: any;
20
+ extraResults?: any;
20
21
  flow_input?: any;
21
22
  error?: boolean | undefined;
22
23
  displayContext?: boolean | undefined;
@@ -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
- delete: CustomEvent<any>;
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 FlowGraphProps = typeof __propDef.props;
39
- export type FlowGraphEvents = typeof __propDef.events;
40
- export type FlowGraphSlots = typeof __propDef.slots;
41
- export default class FlowGraph extends SvelteComponent<FlowGraphProps, FlowGraphEvents, FlowGraphSlots> {
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
+ };