windmill-components 1.70.0 → 1.75.0

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 (408) hide show
  1. package/assets/app.css +12 -1
  2. package/components/AppConnect.svelte +4 -3
  3. package/components/DisplayResult.svelte +27 -9
  4. package/components/FieldHeader.svelte +12 -8
  5. package/components/FlowBuilder.svelte +107 -39
  6. package/components/FlowBuilder.svelte.d.ts +5 -0
  7. package/components/FlowGraphViewer.svelte +5 -4
  8. package/components/FlowJobResult.svelte +3 -3
  9. package/components/FlowPreviewContent.svelte +3 -8
  10. package/components/FlowStatusViewer.svelte +21 -8
  11. package/components/GroupEditor.svelte +8 -0
  12. package/components/InputTransformForm.svelte +13 -20
  13. package/components/InputTransformSchemaForm.svelte +103 -0
  14. package/components/InputTransformSchemaForm.svelte.d.ts +24 -0
  15. package/components/LogViewer.svelte +1 -1
  16. package/components/ModulePreview.svelte +3 -2
  17. package/components/Multiselect.svelte +1 -1
  18. package/components/Path.svelte +15 -11
  19. package/components/Popover.svelte +2 -13
  20. package/components/ResourcePicker.svelte +33 -14
  21. package/components/RunChart.svelte +24 -5
  22. package/components/RunForm.svelte +5 -6
  23. package/components/RunForm.svelte.d.ts +1 -0
  24. package/components/SchemaForm.svelte +59 -57
  25. package/components/SchemaForm.svelte.d.ts +0 -5
  26. package/components/ScriptBuilder.svelte +30 -14
  27. package/components/ScriptPicker.svelte +3 -0
  28. package/components/SimpleEditor.svelte +4 -1
  29. package/components/SimpleEditor.svelte.d.ts +2 -0
  30. package/components/Slider.svelte +6 -1
  31. package/components/Slider.svelte.d.ts +1 -0
  32. package/components/TemplateEditor.svelte +1 -1
  33. package/components/TestJobLoader.svelte +2 -2
  34. package/components/Toggle.svelte +17 -4
  35. package/components/Toggle.svelte.d.ts +2 -0
  36. package/components/Tooltip.svelte +1 -1
  37. package/components/UserSettings.svelte +2 -0
  38. package/components/apps/components/buttons/AppButton.svelte +38 -22
  39. package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
  40. package/components/apps/components/buttons/AppForm.svelte +16 -6
  41. package/components/apps/components/buttons/AppForm.svelte.d.ts +3 -0
  42. package/components/apps/components/buttons/AppFormButton.svelte +12 -4
  43. package/components/apps/components/buttons/AppFormButton.svelte.d.ts +3 -0
  44. package/components/apps/components/display/AppBarChart.svelte +15 -7
  45. package/components/apps/components/display/AppBarChart.svelte.d.ts +3 -0
  46. package/components/apps/components/display/AppDisplayComponent.svelte +17 -12
  47. package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +1 -0
  48. package/components/apps/components/display/AppHtml.svelte +18 -4
  49. package/components/apps/components/display/AppHtml.svelte.d.ts +3 -0
  50. package/components/apps/components/display/AppIcon.svelte +20 -8
  51. package/components/apps/components/display/AppIcon.svelte.d.ts +3 -0
  52. package/components/apps/components/display/AppImage.svelte +17 -10
  53. package/components/apps/components/display/AppImage.svelte.d.ts +3 -0
  54. package/components/apps/components/display/AppMap.svelte +214 -0
  55. package/components/apps/components/display/AppMap.svelte.d.ts +23 -0
  56. package/components/apps/components/display/AppPdf.svelte +304 -0
  57. package/components/apps/components/display/AppPdf.svelte.d.ts +24 -0
  58. package/components/apps/components/display/AppPieChart.svelte +15 -7
  59. package/components/apps/components/display/AppPieChart.svelte.d.ts +3 -0
  60. package/components/apps/components/display/AppScatterChart.svelte +12 -4
  61. package/components/apps/components/display/AppScatterChart.svelte.d.ts +3 -0
  62. package/components/apps/components/display/AppText.svelte +38 -32
  63. package/components/apps/components/display/AppText.svelte.d.ts +1 -0
  64. package/components/apps/components/display/AppTimeseries.svelte +12 -4
  65. package/components/apps/components/display/AppTimeseries.svelte.d.ts +3 -0
  66. package/components/apps/components/display/PlotlyHtml.svelte +8 -14
  67. package/components/apps/components/display/PlotlyHtml.svelte.d.ts +1 -1
  68. package/components/apps/components/display/VegaLiteHtml.svelte +3 -8
  69. package/components/apps/components/display/VegaLiteHtml.svelte.d.ts +1 -0
  70. package/components/apps/components/display/index.d.ts +3 -0
  71. package/components/apps/components/display/index.js +3 -0
  72. package/components/apps/components/display/table/AppAggridTable.svelte +16 -7
  73. package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -0
  74. package/components/apps/components/display/table/AppTable.svelte +65 -20
  75. package/components/apps/components/display/table/AppTable.svelte.d.ts +3 -1
  76. package/components/apps/components/display/table/AppTableFooter.svelte +8 -1
  77. package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +2 -0
  78. package/components/apps/components/helpers/AlignWrapper.svelte +13 -7
  79. package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +3 -1
  80. package/components/apps/components/helpers/HiddenComponent.svelte +2 -1
  81. package/components/apps/components/helpers/InputValue.svelte +38 -15
  82. package/components/apps/components/helpers/NonRunnableComponent.svelte +18 -3
  83. package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -0
  84. package/components/apps/components/helpers/RefreshButton.svelte +1 -1
  85. package/components/apps/components/helpers/ResizeWrapper.svelte +24 -0
  86. package/components/apps/components/helpers/ResizeWrapper.svelte.d.ts +19 -0
  87. package/components/apps/components/helpers/RunnableComponent.svelte +76 -68
  88. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +3 -1
  89. package/components/apps/components/helpers/RunnableWrapper.svelte +9 -5
  90. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +3 -1
  91. package/components/apps/components/inputs/AppCheckbox.svelte +8 -2
  92. package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +3 -0
  93. package/components/apps/components/inputs/AppDateInput.svelte +25 -18
  94. package/components/apps/components/inputs/AppDateInput.svelte.d.ts +6 -1
  95. package/components/apps/components/inputs/AppFileInput.svelte +22 -14
  96. package/components/apps/components/inputs/AppFileInput.svelte.d.ts +3 -0
  97. package/components/apps/components/inputs/AppMultiSelect.svelte +82 -0
  98. package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +27 -0
  99. package/components/apps/components/inputs/AppNumberInput.svelte +20 -16
  100. package/components/apps/components/inputs/AppNumberInput.svelte.d.ts +5 -0
  101. package/components/apps/components/inputs/AppRangeInput.svelte +55 -14
  102. package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +3 -0
  103. package/components/apps/components/inputs/AppSelect.svelte +58 -21
  104. package/components/apps/components/inputs/AppSelect.svelte.d.ts +3 -0
  105. package/components/apps/components/inputs/AppSliderInputs.svelte +41 -9
  106. package/components/apps/components/inputs/AppSliderInputs.svelte.d.ts +3 -0
  107. package/components/apps/components/inputs/AppTextInput.svelte +53 -19
  108. package/components/apps/components/inputs/AppTextInput.svelte.d.ts +6 -0
  109. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +13 -3
  110. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +3 -0
  111. package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -0
  112. package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +1 -0
  113. package/components/apps/components/layout/AppContainer.svelte +21 -13
  114. package/components/apps/components/layout/AppContainer.svelte.d.ts +3 -0
  115. package/components/apps/components/layout/AppDivider.svelte +24 -4
  116. package/components/apps/components/layout/AppDivider.svelte.d.ts +3 -1
  117. package/components/apps/components/layout/AppDrawer.svelte +89 -0
  118. package/components/apps/components/layout/AppDrawer.svelte.d.ts +24 -0
  119. package/components/apps/components/layout/AppSplitpanes.svelte +88 -0
  120. package/components/apps/components/layout/AppSplitpanes.svelte.d.ts +26 -0
  121. package/components/apps/components/layout/AppTabs.svelte +62 -21
  122. package/components/apps/components/layout/AppTabs.svelte.d.ts +3 -0
  123. package/components/apps/components/layout/index.d.ts +2 -0
  124. package/components/apps/components/layout/index.js +2 -0
  125. package/components/apps/editor/AppEditor.svelte +83 -19
  126. package/components/apps/editor/AppEditor.svelte.d.ts +3 -1
  127. package/components/apps/editor/AppEditorHeader.svelte +107 -32
  128. package/components/apps/editor/AppInputs.svelte +3 -3
  129. package/components/apps/editor/AppPreview.svelte +20 -7
  130. package/components/apps/editor/ComponentHeader.svelte +14 -3
  131. package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -0
  132. package/components/apps/editor/GridEditor.svelte +85 -71
  133. package/components/apps/editor/GridPanel.svelte +29 -0
  134. package/components/apps/editor/GridPanel.svelte.d.ts +18 -0
  135. package/components/apps/editor/RecomputeAllComponents.svelte +8 -6
  136. package/components/apps/editor/SettingsPanel.svelte +14 -24
  137. package/components/apps/editor/SubGridEditor.svelte +46 -18
  138. package/components/apps/editor/SubGridEditor.svelte.d.ts +5 -0
  139. package/components/apps/editor/appUtils.d.ts +12 -2
  140. package/components/apps/editor/appUtils.js +121 -21
  141. package/components/apps/editor/component/Component.svelte +282 -57
  142. package/components/apps/editor/component/Component.svelte.d.ts +3 -1
  143. package/components/apps/editor/component/ComponentNavigation.svelte +125 -0
  144. package/components/apps/editor/component/ComponentNavigation.svelte.d.ts +14 -0
  145. package/components/apps/editor/component/components.d.ts +14 -2
  146. package/components/apps/editor/component/components.js +417 -43
  147. package/components/apps/editor/component/default-codes.js +6 -6
  148. package/components/apps/editor/component/sets.js +11 -3
  149. package/components/apps/editor/componentsPanel/ComponentList.svelte +72 -29
  150. package/components/apps/editor/componentsPanel/CssProperty.svelte +59 -23
  151. package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +2 -1
  152. package/components/apps/editor/componentsPanel/CssSettings.svelte +56 -9
  153. package/components/apps/editor/componentsPanel/ListItem.svelte +23 -12
  154. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +1 -0
  155. package/components/apps/editor/componentsPanel/componentStaticValues.js +14 -2
  156. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -1
  157. package/components/apps/editor/contextPanel/ContextPanel.svelte +107 -61
  158. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +13 -3
  159. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -0
  160. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +63 -25
  161. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +5 -0
  162. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +11 -5
  163. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -0
  164. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +26 -17
  165. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +95 -85
  166. package/components/apps/editor/inlineScriptsPanel/utils.d.ts +5 -9
  167. package/components/apps/editor/inlineScriptsPanel/utils.js +19 -8
  168. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +10 -9
  169. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +21 -12
  170. package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +1 -1
  171. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +95 -56
  172. package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +1 -0
  173. package/components/apps/editor/settingsPanel/GridPane.svelte +75 -0
  174. package/components/apps/editor/settingsPanel/GridPane.svelte.d.ts +20 -0
  175. package/components/apps/editor/settingsPanel/GridTab.svelte +5 -5
  176. package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +2 -0
  177. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -1
  178. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +1 -1
  179. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +13 -6
  180. package/components/apps/editor/settingsPanel/Recompute.svelte +1 -1
  181. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +1 -1
  182. package/components/apps/editor/settingsPanel/TableActions.svelte +28 -1
  183. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +2 -2
  184. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +48 -0
  185. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte.d.ts +19 -0
  186. package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +1 -1
  187. package/components/apps/editor/settingsPanel/inputEditor/EvalInputEditor.svelte +1 -1
  188. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +27 -3
  189. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +2 -0
  190. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +2 -2
  191. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +2 -1
  192. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +54 -6
  193. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +1 -0
  194. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +7 -9
  195. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +1 -1
  196. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +1 -0
  197. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte.d.ts +1 -0
  198. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +1 -1
  199. package/components/apps/inputType.d.ts +6 -5
  200. package/components/apps/rx.js +2 -1
  201. package/components/apps/store.d.ts +6 -1
  202. package/components/apps/types.d.ts +14 -4
  203. package/components/apps/utils.d.ts +2 -2
  204. package/components/apps/utils.js +21 -49
  205. package/components/common/button/ButtonPopup.svelte +2 -0
  206. package/components/common/button/ButtonPopup.svelte.d.ts +1 -0
  207. package/components/common/button/UndoRedo.svelte +32 -0
  208. package/components/common/button/UndoRedo.svelte.d.ts +20 -0
  209. package/components/common/drawer/Drawer.svelte +10 -4
  210. package/components/common/drawer/Drawer.svelte.d.ts +3 -1
  211. package/components/common/drawer/DrawerContent.svelte +0 -1
  212. package/components/common/fileInput/FileInput.svelte +47 -21
  213. package/components/common/fileInput/FileInput.svelte.d.ts +3 -1
  214. package/components/common/fileInput/model.d.ts +1 -0
  215. package/components/common/fileInput/model.js +1 -0
  216. package/components/common/index.d.ts +1 -0
  217. package/components/common/index.js +1 -0
  218. package/components/common/menu/Menu.svelte +3 -2
  219. package/components/common/menu/Menu.svelte.d.ts +2 -1
  220. package/components/common/modal/Modal.svelte +9 -4
  221. package/components/common/modal/Modal.svelte.d.ts +2 -0
  222. package/components/common/table/AppRow.svelte +13 -4
  223. package/components/common/table/AppRow.svelte.d.ts +1 -0
  224. package/components/common/table/FlowRow.svelte +21 -8
  225. package/components/common/table/FlowRow.svelte.d.ts +1 -0
  226. package/components/common/table/ScriptRow.svelte +42 -10
  227. package/components/common/table/ScriptRow.svelte.d.ts +1 -0
  228. package/components/common/tabs/Tab.svelte +12 -5
  229. package/components/common/tabs/Tab.svelte.d.ts +4 -1
  230. package/components/common/tabs/Tabs.svelte +8 -6
  231. package/components/common/tabs/Tabs.svelte.d.ts +3 -1
  232. package/components/flows/FlowEditor.svelte +6 -4
  233. package/components/flows/common/FlowCardHeader.svelte +4 -1
  234. package/components/flows/content/BranchPredicateEditor.svelte +3 -4
  235. package/components/flows/content/CapturePayload.svelte +1 -2
  236. package/components/flows/content/FlowBranchesAllWrapper.svelte +1 -1
  237. package/components/flows/content/FlowConstants.svelte +7 -13
  238. package/components/flows/content/FlowEditorPanel.svelte +4 -3
  239. package/components/flows/content/FlowFailureModule.svelte +2 -1
  240. package/components/flows/content/FlowInput.svelte +4 -2
  241. package/components/flows/content/FlowLoop.svelte +3 -4
  242. package/components/flows/content/FlowModuleComponent.svelte +23 -11
  243. package/components/flows/content/FlowModuleEarlyStop.svelte +3 -1
  244. package/components/flows/content/FlowModuleHeader.svelte +26 -3
  245. package/components/flows/content/FlowModuleHeader.svelte.d.ts +1 -0
  246. package/components/flows/content/FlowModuleSleep.svelte +2 -2
  247. package/components/flows/content/FlowModuleWrapper.svelte +2 -8
  248. package/components/flows/content/FlowSchedules.svelte +1 -2
  249. package/components/flows/content/FlowSettings.svelte +17 -37
  250. package/components/flows/content/ScriptEditorDrawer.svelte +98 -0
  251. package/components/flows/content/ScriptEditorDrawer.svelte.d.ts +19 -0
  252. package/components/flows/flowState.d.ts +2 -3
  253. package/components/flows/flowState.js +1 -4
  254. package/components/flows/flowStateUtils.d.ts +7 -6
  255. package/components/flows/flowStateUtils.js +5 -9
  256. package/components/flows/flowStore.d.ts +5 -4
  257. package/components/flows/flowStore.js +5 -17
  258. package/components/flows/header/FlowImportExportMenu.svelte +2 -1
  259. package/components/flows/map/FlowConstantsItem.svelte +2 -2
  260. package/components/flows/map/FlowErrorHandlerItem.svelte +12 -13
  261. package/components/flows/map/FlowInputsItem.svelte +2 -3
  262. package/components/flows/map/FlowModuleSchemaItem.svelte +88 -91
  263. package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +3 -3
  264. package/components/flows/map/FlowModuleSchemaMap.svelte +164 -138
  265. package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -2
  266. package/components/flows/map/FlowSettingsItem.svelte +5 -4
  267. package/components/flows/map/InsertModuleButton.svelte +12 -10
  268. package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -0
  269. package/components/flows/map/MapItem.svelte +176 -103
  270. package/components/flows/map/MapItem.svelte.d.ts +20 -2
  271. package/components/flows/map/VirtualItem.svelte +129 -0
  272. package/components/flows/map/VirtualItem.svelte.d.ts +44 -0
  273. package/components/flows/pickers/WorkspaceScriptPicker.svelte +1 -1
  274. package/components/flows/previousResults.d.ts +1 -1
  275. package/components/flows/previousResults.js +32 -17
  276. package/components/flows/types.d.ts +13 -1
  277. package/components/flows/utils.js +1 -1
  278. package/components/graph/FlowGraph.svelte +227 -167
  279. package/components/graph/FlowGraph.svelte.d.ts +14 -1
  280. package/components/graph/model.d.ts +6 -36
  281. package/components/graph/model.js +1 -1
  282. package/components/graph/svelvet/LICENSE +21 -0
  283. package/components/graph/svelvet/collapsible/controllers/util.d.ts +15 -0
  284. package/components/graph/svelvet/collapsible/controllers/util.js +144 -0
  285. package/components/graph/svelvet/collapsible/models/Collapsible.d.ts +17 -0
  286. package/components/graph/svelvet/collapsible/models/Collapsible.js +25 -0
  287. package/components/graph/svelvet/collapsible/types/types.d.ts +8 -0
  288. package/components/graph/svelvet/collapsible/types/types.js +1 -0
  289. package/components/graph/svelvet/container/README.md +7 -0
  290. package/components/graph/svelvet/container/controllers/middleware.d.ts +18 -0
  291. package/components/graph/svelvet/container/controllers/middleware.js +101 -0
  292. package/components/graph/svelvet/container/views/GraphView.svelte +252 -0
  293. package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +25 -0
  294. package/components/graph/svelvet/container/views/Svelvet.svelte +131 -0
  295. package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +41 -0
  296. package/components/graph/svelvet/customCss/controllers/getCss.d.ts +2 -0
  297. package/components/graph/svelvet/customCss/controllers/getCss.js +57 -0
  298. package/components/graph/svelvet/d3/controllers/README.md +3 -0
  299. package/components/graph/svelvet/d3/controllers/d3.d.ts +5 -0
  300. package/components/graph/svelvet/d3/controllers/d3.js +59 -0
  301. package/components/graph/svelvet/d3/controllers/d3Old.d.ts +1 -0
  302. package/components/graph/svelvet/d3/controllers/d3Old.js +43 -0
  303. package/components/graph/svelvet/docs/CHANGELOG.md +145 -0
  304. package/components/graph/svelvet/docs/DESIGN_PATTERNS.md +44 -0
  305. package/components/graph/svelvet/docs/DOCUMENTATION.md +5 -0
  306. package/components/graph/svelvet/docs/README.md +34 -0
  307. package/components/graph/svelvet/docs/TODO.md +14 -0
  308. package/components/graph/svelvet/docs/Tutorials.md +25 -0
  309. package/components/graph/svelvet/docs/images/css-background-after.png +0 -0
  310. package/components/graph/svelvet/docs/images/css-background-before.png +0 -0
  311. package/components/graph/svelvet/docs/images/custom-edges-after.png +0 -0
  312. package/components/graph/svelvet/docs/images/custom-edges-before.png +0 -0
  313. package/components/graph/svelvet/docs/images/custom-nodes-after.png +0 -0
  314. package/components/graph/svelvet/docs/images/custom-nodes-before.png +0 -0
  315. package/components/graph/svelvet/docs/images/custom-svelte-components-after.png +0 -0
  316. package/components/graph/svelvet/docs/images/custom-svelte-components-before.png +0 -0
  317. package/components/graph/svelvet/docs/images/html-docs-after.png +0 -0
  318. package/components/graph/svelvet/docs/images/html-docs-before.png +0 -0
  319. package/components/graph/svelvet/docs/images/minimap-after.png +0 -0
  320. package/components/graph/svelvet/docs/images/minimap-before.png +0 -0
  321. package/components/graph/svelvet/docs/images/node-classes-after.png +0 -0
  322. package/components/graph/svelvet/docs/images/node-classes-before.png +0 -0
  323. package/components/graph/svelvet/docs/images/node-create-after.png +0 -0
  324. package/components/graph/svelvet/docs/images/node-create-before.png +0 -0
  325. package/components/graph/svelvet/edges/controllers/anchorCbDev.d.ts +4 -0
  326. package/components/graph/svelvet/edges/controllers/anchorCbDev.js +92 -0
  327. package/components/graph/svelvet/edges/controllers/anchorCbUser.d.ts +57 -0
  328. package/components/graph/svelvet/edges/controllers/anchorCbUser.js +73 -0
  329. package/components/graph/svelvet/edges/controllers/util.d.ts +37 -0
  330. package/components/graph/svelvet/edges/controllers/util.js +72 -0
  331. package/components/graph/svelvet/edges/models/Anchor.d.ts +48 -0
  332. package/components/graph/svelvet/edges/models/Anchor.js +122 -0
  333. package/components/graph/svelvet/edges/models/Edge.d.ts +47 -0
  334. package/components/graph/svelvet/edges/models/Edge.js +107 -0
  335. package/components/graph/svelvet/edges/types/types.d.ts +18 -0
  336. package/components/graph/svelvet/edges/types/types.js +1 -0
  337. package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte +105 -0
  338. package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte.d.ts +18 -0
  339. package/components/graph/svelvet/edges/views/Edges/EdgeAnchor.svelte +12 -0
  340. package/components/graph/svelvet/edges/views/Edges/EdgeAnchor.svelte.d.ts +17 -0
  341. package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +43 -0
  342. package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte.d.ts +17 -0
  343. package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +137 -0
  344. package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte.d.ts +17 -0
  345. package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte +176 -0
  346. package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte.d.ts +60 -0
  347. package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte +8 -0
  348. package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte.d.ts +25 -0
  349. package/components/graph/svelvet/edges/views/Edges/types.d.ts +52 -0
  350. package/components/graph/svelvet/edges/views/Edges/types.js +1 -0
  351. package/components/graph/svelvet/edges/views/Edges/utils.d.ts +33 -0
  352. package/components/graph/svelvet/edges/views/Edges/utils.js +31 -0
  353. package/components/graph/svelvet/editEdges/views/EditEdge.svelte +151 -0
  354. package/components/graph/svelvet/editEdges/views/EditEdge.svelte.d.ts +20 -0
  355. package/components/graph/svelvet/nodes/controllers/util.d.ts +9 -0
  356. package/components/graph/svelvet/nodes/controllers/util.js +13 -0
  357. package/components/graph/svelvet/nodes/models/Node.d.ts +78 -0
  358. package/components/graph/svelvet/nodes/models/Node.js +195 -0
  359. package/components/graph/svelvet/nodes/views/EditNode.svelte +147 -0
  360. package/components/graph/svelvet/nodes/views/EditNode.svelte.d.ts +33 -0
  361. package/components/graph/svelvet/nodes/views/Node.svelte +85 -0
  362. package/components/graph/svelvet/nodes/views/Node.svelte.d.ts +22 -0
  363. package/components/graph/svelvet/resizableNodes/controllers/util.d.ts +11 -0
  364. package/components/graph/svelvet/resizableNodes/controllers/util.js +24 -0
  365. package/components/graph/svelvet/resizableNodes/models/ResizeNode.d.ts +33 -0
  366. package/components/graph/svelvet/resizableNodes/models/ResizeNode.js +71 -0
  367. package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte +81 -0
  368. package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte.d.ts +20 -0
  369. package/components/graph/svelvet/store/controllers/storeApi.d.ts +32 -0
  370. package/components/graph/svelvet/store/controllers/storeApi.js +111 -0
  371. package/components/graph/svelvet/store/controllers/userApi.d.ts +3 -0
  372. package/components/graph/svelvet/store/controllers/userApi.js +18 -0
  373. package/components/graph/svelvet/store/controllers/util.d.ts +31 -0
  374. package/components/graph/svelvet/store/controllers/util.js +180 -0
  375. package/components/graph/svelvet/store/models/store.d.ts +12 -0
  376. package/components/graph/svelvet/store/models/store.js +9 -0
  377. package/components/graph/svelvet/store/types/types.d.ts +134 -0
  378. package/components/graph/svelvet/store/types/types.js +1 -0
  379. package/components/graph/svelvet/types/README.md +3 -0
  380. package/components/graph/svelvet/types/index.d.ts +2 -0
  381. package/components/graph/svelvet/types/index.js +1 -0
  382. package/components/graph/svelvet/types/types.d.ts +49 -0
  383. package/components/graph/svelvet/types/types.js +18 -0
  384. package/components/graph/util.js +2 -2
  385. package/components/home/ItemsList.svelte +53 -5
  386. package/components/home/ItemsList.svelte.d.ts +1 -0
  387. package/components/home/ListFilters.svelte +7 -2
  388. package/components/jobs/JobDetail.svelte +12 -1
  389. package/components/propertyPicker/ObjectViewer.svelte +6 -4
  390. package/consts.d.ts +1 -0
  391. package/consts.js +1 -0
  392. package/defaults.d.ts +4 -0
  393. package/defaults.js +4 -0
  394. package/history.d.ts +9 -0
  395. package/history.js +56 -0
  396. package/package.json +92 -8
  397. package/script_helpers.d.ts +1 -1
  398. package/script_helpers.js +1 -0
  399. package/scripts.d.ts +1 -1
  400. package/scripts.js +8 -1
  401. package/utils.d.ts +9 -4
  402. package/utils.js +44 -8
  403. package/components/apps/editor/TablePanel.svelte +0 -19
  404. package/components/apps/editor/TablePanel.svelte.d.ts +0 -17
  405. package/components/flows/map/FlowBranchAllMap.svelte +0 -100
  406. package/components/flows/map/FlowBranchAllMap.svelte.d.ts +0 -17
  407. package/components/flows/map/FlowBranchOneMap.svelte +0 -124
  408. package/components/flows/map/FlowBranchOneMap.svelte.d.ts +0 -17
@@ -1,17 +1,26 @@
1
- <script>import Svelvet from '@windmill-labs/svelvet';
2
- import { sugiyama, dagStratify, decrossOpt, coordCenter } from 'd3-dag';
3
- import { FlowStatusModule, RawScript } from '../../gen';
1
+ <script>import { sugiyama, dagStratify, decrossOpt, coordCenter } from 'd3-dag';
2
+ import { FlowStatusModule } from '../../gen';
4
3
  import { NODE, createIdGenerator, isNode, isLoop, isBranch } from '.';
5
4
  import { defaultIfEmptyString, truncateRev } from '../../utils';
6
- import { createEventDispatcher } from 'svelte';
7
- import { charsToNumber, numberToChars } from '../flows/utils';
5
+ import { createEventDispatcher, setContext } from 'svelte';
6
+ import Svelvet from './svelvet/container/views/Svelvet.svelte';
7
+ import MapItem from '../flows/map/MapItem.svelte';
8
+ import VirtualItem from '../flows/map/VirtualItem.svelte';
9
+ import { writable } from 'svelte/store';
8
10
  export let success = undefined;
9
11
  export let modules = [];
10
12
  export let failureModule = undefined;
11
13
  export let minHeight = 0;
14
+ export let maxHeight = undefined;
12
15
  export let notSelectable = false;
13
16
  export let flowModuleStates = undefined;
14
- let selectedNode = undefined;
17
+ export let rebuildOnChange = undefined;
18
+ export let selectedId = writable(undefined);
19
+ export let initialZoom = 1.0;
20
+ export let insertable = false;
21
+ export let moving = undefined;
22
+ export let scroll = false;
23
+ setContext('FlowGraphContext', { selectedId });
15
24
  let idGenerator;
16
25
  let nestedNodes;
17
26
  let nodes = [];
@@ -20,7 +29,9 @@ let width, height;
20
29
  let errorHandlers = {};
21
30
  let dispatch = createEventDispatcher();
22
31
  $: {
23
- width && height && minHeight && selectedNode && flowModuleStates;
32
+ rebuildOnChange;
33
+ moving;
34
+ width && height && minHeight && $selectedId && flowModuleStates;
24
35
  nodes = edges = [];
25
36
  errorHandlers = {};
26
37
  createGraph();
@@ -34,12 +45,12 @@ async function createGraph() {
34
45
  return;
35
46
  }
36
47
  nestedNodes = nodes = [];
37
- nestedNodes.push(createVirtualNode(getParentIds(), 'Input'));
38
- modules.forEach((m) => {
39
- const item = getConvertedFlowModule(m);
48
+ nestedNodes.push(createVirtualNode(getParentIds(), 'Input', modules, 'after', undefined, undefined, 0, 0, true, undefined));
49
+ modules.forEach((m, i) => {
50
+ const item = getConvertedFlowModule(m, undefined, undefined, 0, i + 1 == modules?.length, modules);
40
51
  item && nestedNodes.push(item);
41
52
  });
42
- nestedNodes.push(createVirtualNode(getParentIds(), 'Result'));
53
+ nestedNodes.push(createVirtualNode(getParentIds(), 'Result', undefined, 'before', undefined, undefined, 0, modules.length, true, undefined));
43
54
  if (!flowModuleStates) {
44
55
  if (failureModule)
45
56
  nestedNodes.push(createErrorHandler(failureModule));
@@ -55,44 +66,36 @@ async function createGraph() {
55
66
  const layered = layoutNodes(flatNodes);
56
67
  nodes = layered.nodes;
57
68
  // width = layered.width
58
- height = layered.height;
69
+ height = Math.min(Math.max(layered.height, minHeight), maxHeight ?? window.innerHeight - 100);
59
70
  edges = createEdges(nodes);
60
71
  }
61
- function getConvertedFlowModule(module, parent = undefined, edgeLabel = undefined, insideLoop = false) {
72
+ function getConvertedFlowModule(module, parent, edgeLabel, loopDepth, insertableEnd, modules) {
62
73
  const type = module.value.type;
63
74
  const parentIds = getParentIds(parent);
64
- if (type === 'rawscript') {
65
- const lang = module.value.language;
66
- return flowModuleToNode(parentIds, module.id, module.summary || 'Inline script', 'inline', module, lang, edgeLabel, undefined, insideLoop);
67
- }
68
- else if (type === 'script') {
69
- const isHub = module.value.path.startsWith('hub/');
70
- return flowModuleToNode(parentIds, module.id, module.summary || module.value.path, isHub ? 'hub' : 'workspace', module, undefined, edgeLabel, undefined, insideLoop);
71
- }
72
- else if (type === 'forloopflow') {
73
- return flowModuleToLoop(module.value.modules, module, parent);
75
+ if (type === 'forloopflow') {
76
+ //@ts-ignore
77
+ return flowModuleToLoop(modules, module, parent, loopDepth);
74
78
  }
75
79
  else if (type === 'branchone') {
76
80
  const branches = [
77
- { summary: 'Default branch', modules: module.value.default },
81
+ { summary: 'Default Branch', modules: module.value.default, removable: false },
78
82
  ...module.value.branches.map((b, i) => ({
79
83
  summary: defaultIfEmptyString(b.summary, 'Branch ' + (i + 1)),
80
- modules: b.modules
84
+ modules: b.modules,
85
+ removable: true
81
86
  }))
82
87
  ];
83
- return flowModuleToBranch(module, branches, ['Default', ...module.value.branches.map((x) => `${truncateRev(x.expr, 20)}`)], parent, insideLoop);
88
+ return flowModuleToBranch(module, modules, branches, ['', ...module.value.branches.map((x) => `${truncateRev(x.expr, 20)}`)], parent, loopDepth, false);
84
89
  }
85
90
  else if (type === 'branchall') {
86
91
  const branches = module.value.branches.map((b, i) => ({
87
92
  summary: defaultIfEmptyString(b.summary, `Branch ${i + 1}`),
88
- modules: b.modules
93
+ modules: b.modules,
94
+ removable: true
89
95
  }));
90
- return flowModuleToBranch(module, branches, [], parent, insideLoop);
91
- }
92
- else if (type === 'flow') {
93
- return flowModuleToNode(parentIds, module.id, module.summary || 'Flow ' + module.value.path, 'inline', module, undefined, edgeLabel, undefined, insideLoop);
96
+ return flowModuleToBranch(module, modules, branches, [], parent, loopDepth, true);
94
97
  }
95
- return flowModuleToNode(parentIds, module.id, module.summary || 'Identity step', 'inline', module, undefined, edgeLabel, undefined, insideLoop);
98
+ return flowModuleToNode(parentIds, module, edgeLabel, undefined, loopDepth, insertableEnd, false, modules);
96
99
  }
97
100
  function getParentIds(items = undefined) {
98
101
  if (typeof items == 'string') {
@@ -102,14 +105,14 @@ function getParentIds(items = undefined) {
102
105
  if (!item)
103
106
  return [];
104
107
  if (isNode(item)) {
105
- const id = numberToChars(item.id);
108
+ const id = item.id;
106
109
  return [id];
107
110
  }
108
111
  else if (isLoop(item)) {
109
112
  return getParentIds(item.items);
110
113
  }
111
114
  else if (isBranch(item)) {
112
- return item.items.map((i) => getParentIds(i)).flat();
115
+ return [item.nodeEnd.id];
113
116
  }
114
117
  return [];
115
118
  }
@@ -136,105 +139,105 @@ function getResultColor() {
136
139
  case false:
137
140
  return getStateColor(FlowStatusModule.type.FAILURE);
138
141
  default:
139
- return undefined;
142
+ return '#fff';
140
143
  }
141
144
  }
142
- function flowModuleToNode(parentIds, id, title, host, onClickDetail, lang, edgeLabel, header, insideLoop = false) {
143
- const langImg = {
144
- deno: '/icons/ts-lang.svg',
145
- go: '/icons/go-lang.svg',
146
- python3: '/icons/python-lang.svg',
147
- bash: '/icons/bash-lang.svg'
148
- };
149
- const hostImg = {
150
- hub: '/icons/hub-script.svg',
151
- workspace: '/icons/inline-script.svg',
152
- inline: ''
153
- };
154
- const wrapperWidth = lang ? 'w-[calc(100%-70px)]' : 'w-[calc(100%-50px)]';
155
- let generatedId = idGenerator.next().value;
156
- let nodeId = id ?? numberToChars(generatedId - 1);
157
- // console.log(id, generatedId, nodeId, charsToNumber(nodeId))
145
+ function flowModuleToNode(parentIds, mod, edgeLabel, annotation, loopDepth, insertableEnd, branchable, modules) {
158
146
  return {
159
- id: charsToNumber(nodeId),
147
+ type: 'node',
148
+ id: mod.id,
160
149
  position: { x: -1, y: -1 },
161
150
  data: {
162
- html: `
163
- <div class="w-full flex justify-between items-center px-1">
164
- <div class="${wrapperWidth} text-left ellipsize text-2xs truncate">
165
- ${title}
166
- </div>
167
- <div class="flex items-center">
168
- ${lang ? `<img src="${langImg[lang]}" class="grayscale">` : ''}
169
- ${host != 'inline' ? `<img src="${hostImg[host]}" class="grayscale">` : ''}
170
- <span class="center-center font-semibold bg-indigo-100 text-indigo-800 rounded px-1 pb-[2px] ml-[2px]">
171
- ${nodeId}
172
- </span>
173
- </div>
174
- </div>
175
- <div class="text-2xs absolute -top-6 text-gray-600 truncate">${flowModuleStates?.[nodeId]?.scheduled_for ?? header ?? ''}<div>
176
- `
151
+ custom: {
152
+ component: MapItem,
153
+ props: {
154
+ trigger: parentIds.length == 0,
155
+ mod,
156
+ insertable,
157
+ insertableEnd,
158
+ branchable,
159
+ bgColor: getStateColor(flowModuleStates?.[mod.id]?.type),
160
+ annotation,
161
+ modules,
162
+ moving
163
+ },
164
+ cb: (e, detail) => {
165
+ if (e == 'delete') {
166
+ dispatch('delete', detail);
167
+ }
168
+ else if (e == 'select') {
169
+ if (!notSelectable) {
170
+ if ($selectedId != mod.id) {
171
+ $selectedId = mod.id;
172
+ dispatch('select', mod);
173
+ }
174
+ }
175
+ }
176
+ else if (e == 'insert') {
177
+ dispatch('insert', detail);
178
+ }
179
+ else if (e == 'newBranch') {
180
+ dispatch('newBranch', detail);
181
+ }
182
+ else if (e == 'move') {
183
+ dispatch('move', { module: mod, modules });
184
+ }
185
+ }
186
+ }
177
187
  },
178
- host,
179
- width: insideLoop ? NODE.width * 0.8 : NODE.width,
188
+ width: NODE.width,
180
189
  height: NODE.height,
181
- borderColor: selectedNode == nodeId ? 'black' : '#999',
182
- bgColor: selectedNode == nodeId ? '#f5f5f5' : getStateColor(flowModuleStates?.[nodeId]?.type),
183
190
  parentIds,
184
- clickCallback: (node) => {
185
- if (!notSelectable) {
186
- selectedNode = nodeId;
187
- }
188
- if (onClickDetail.id == undefined) {
189
- onClickDetail.id = nodeId;
190
- }
191
- dispatch('click', onClickDetail);
192
- },
193
- edgeLabel
191
+ sourcePosition: 'bottom',
192
+ targetPosition: 'top',
193
+ edgeLabel,
194
+ loopDepth
194
195
  };
195
196
  }
196
- function flowModuleToLoop(modules, module, parent = undefined) {
197
- const value = module.value;
198
- const expr = value.iterator.type == 'static' ? value.iterator.value : value.iterator.expr;
197
+ function flowModuleToLoop(modules, module, parent, loopDepth) {
199
198
  const loop = {
200
199
  type: 'loop',
201
200
  items: [
202
- flowModuleToNode(getParentIds(parent), module.id, module.summary || `For Loop: ${defaultIfEmptyString(expr ?? '', 'TBD')}`, 'inline', module, undefined, undefined, flowModuleStates?.[module.id]?.iteration_total
201
+ flowModuleToNode(getParentIds(parent), module, undefined, flowModuleStates?.[module.id]?.iteration_total
203
202
  ? 'Iteration ' + flowModuleStates?.[module.id]?.iteration_total
204
- : '')
203
+ : '', loopDepth, false, false, modules)
205
204
  ]
206
205
  };
207
- modules.forEach((module) => {
208
- const item = getConvertedFlowModule(module, loop.items, undefined, true);
206
+ const innerModules = module.value.modules;
207
+ loop.items.push(createVirtualNode(getParentIds(loop.items), `Do one iteration`, innerModules, 'after', undefined, 1000, loopDepth + 1, 0, true, undefined, undefined));
208
+ innerModules.forEach((module, i) => {
209
+ const item = getConvertedFlowModule(module, loop.items, undefined, loopDepth + 1, i + 1 == innerModules?.length, innerModules);
209
210
  item && loop.items.push(item);
210
211
  });
211
- loop.items.push(createVirtualNode(getParentIds(loop.items), `Collect iterations' results of For Loop ${module.id ?? ''}`, undefined, 1000));
212
+ loop.items.push(createVirtualNode(getParentIds(loop.items), `Collect result of each iteration`, modules, 'after', undefined, 1000, loopDepth, 0, true, undefined, module.id));
212
213
  return loop;
213
214
  }
214
- function flowModuleToBranch(module, branches, edgesLabel, parent = undefined, insideLoop = false) {
215
- const branch = {
216
- type: 'branch',
217
- node: flowModuleToNode(getParentIds(parent), module.id, module.summary || module.value.type == 'branchall'
218
- ? 'Run all branches'
219
- : 'Run one branch given predicate', 'inline', module, undefined, undefined, undefined, insideLoop),
220
- items: []
221
- };
222
- const branchParent = [numberToChars(branch.node.id)];
215
+ function flowModuleToBranch(module, modules, branches, edgesLabel, parent = undefined, loopDepth, branchall) {
216
+ const node = flowModuleToNode(getParentIds(parent), module, undefined, undefined, loopDepth, false, true, modules);
217
+ const bitems = [];
218
+ const branchParent = [node.id];
223
219
  if (branches.length == 0) {
224
- branch.items.push([createVirtualNode(branchParent, 'No branches')]);
220
+ bitems.push([
221
+ createVirtualNode(branchParent, 'No branches', undefined, 'after', undefined, 0, loopDepth, 0, false, undefined)
222
+ ]);
225
223
  }
226
- branches.forEach(({ summary, modules }, i) => {
224
+ branches.forEach(({ summary, modules, removable }, i) => {
227
225
  const items = [];
228
- items.push(createVirtualNode(branchParent, summary, edgesLabel[i]));
226
+ items.push(createVirtualNode(branchParent, summary, modules, 'after', edgesLabel[i], undefined, loopDepth, 0, false, removable ? { module, index: i } : undefined));
229
227
  if (modules.length) {
230
228
  modules.forEach((module, j) => {
231
- const item = getConvertedFlowModule(module, items, undefined, insideLoop);
229
+ const item = getConvertedFlowModule(module, items, undefined, loopDepth, j + 1 == modules?.length, modules);
232
230
  item && items.push(item);
233
231
  });
234
232
  }
235
- items.length && branch.items.push(items);
233
+ items.length && bitems.push(items);
236
234
  });
237
- return branch;
235
+ return {
236
+ type: 'branch',
237
+ node,
238
+ nodeEnd: createVirtualNode(bitems.map((i) => getParentIds(i)).flat(), branchall ? 'Collect result of each branch' : 'Result of the chosen branch', modules, 'after', undefined, 0, loopDepth, modules.findIndex((m) => m.id == module.id) + 1, true, undefined, module.id),
239
+ items: bitems
240
+ };
238
241
  }
239
242
  function flattenNestedNodes(nestedNodes, nodes = []) {
240
243
  const array = nodes;
@@ -250,29 +253,40 @@ function flattenNestedNodes(nestedNodes, nodes = []) {
250
253
  node.items.forEach((item) => {
251
254
  flattenNestedNodes(item, array);
252
255
  });
256
+ array.push(node.nodeEnd);
253
257
  }
254
258
  });
255
259
  return array;
256
260
  }
257
261
  function layoutNodes(nodes) {
258
- // console.log('layoutNodes', nodes)
259
- const stratify = dagStratify().id(({ id }) => numberToChars(id));
262
+ const stratify = dagStratify().id(({ id }) => id);
260
263
  const dag = stratify(nodes);
261
- const layout = sugiyama()
262
- .decross(decrossOpt())
263
- .coord(coordCenter())
264
- .nodeSize(() => [NODE.width + NODE.gap.horizontal, NODE.height + NODE.gap.vertical]);
265
- const boxSize = layout(dag);
264
+ let boxSize;
265
+ try {
266
+ const layout = sugiyama()
267
+ .decross(decrossOpt())
268
+ .coord(coordCenter())
269
+ .nodeSize(() => [NODE.width + NODE.gap.horizontal, NODE.height + NODE.gap.vertical]);
270
+ boxSize = layout(dag);
271
+ }
272
+ catch {
273
+ const layout = sugiyama()
274
+ .coord(coordCenter())
275
+ .nodeSize(() => [NODE.width + NODE.gap.horizontal, NODE.height + NODE.gap.vertical]);
276
+ boxSize = layout(dag);
277
+ }
266
278
  return {
267
279
  nodes: dag.descendants().map((des) => ({
268
280
  ...des.data,
269
281
  id: des.data.id,
270
282
  position: {
271
- x: des.x ? des.x + (width - boxSize.width - NODE.width) / 2 : 0,
283
+ x: des.x
284
+ ? des.data.loopDepth * 50 + des.x + width / 2 - boxSize.width / 2 - NODE.width / 2
285
+ : 0,
272
286
  y: des.y || 0
273
287
  }
274
288
  })),
275
- height: Math.max(boxSize.height + NODE.height, minHeight)
289
+ height: boxSize.height + NODE.height
276
290
  };
277
291
  }
278
292
  function createEdges(nodes) {
@@ -280,110 +294,156 @@ function createEdges(nodes) {
280
294
  nodes.forEach((node) => {
281
295
  node.parentIds.forEach((pid, i) => {
282
296
  // skip virtual nodes such as collect result
283
- if (errorHandlers[pid] && node.id < 900 && nodes.find((x) => x.id == errorHandlers[pid])) {
297
+ if (false &&
298
+ errorHandlers[pid] &&
299
+ parseInt(node.id) < 900 &&
300
+ nodes.find((x) => x.id == errorHandlers[pid])) {
284
301
  edges.push({
285
302
  id: `e-${pid}-${node.id}`,
286
- source: charsToNumber(pid),
303
+ source: pid,
287
304
  target: errorHandlers[pid],
288
305
  labelBgColor: 'white',
289
- arrow: true,
306
+ arrow: false,
290
307
  animate: false,
291
- noHandle: false,
292
- label: node.edgeLabel
293
- // type: 'smoothstep'
308
+ noHandle: true,
309
+ label: node.edgeLabel,
310
+ type: 'bezier'
294
311
  });
295
312
  edges.push({
296
313
  id: `e-${pid}-${node.id}`,
297
314
  source: errorHandlers[pid],
298
315
  target: node.id,
299
316
  labelBgColor: 'white',
300
- arrow: true,
317
+ arrow: false,
301
318
  animate: false,
302
- noHandle: false,
303
- label: node.edgeLabel
304
- // type: 'smoothstep'
319
+ noHandle: true,
320
+ label: node.edgeLabel,
321
+ type: 'bezier'
305
322
  });
306
323
  }
307
324
  else {
308
325
  edges.push({
309
326
  id: `e-${pid}-${node.id}`,
310
- source: charsToNumber(pid),
327
+ source: pid,
311
328
  target: node.id,
312
329
  labelBgColor: 'white',
313
- arrow: true,
330
+ arrow: false,
314
331
  animate: false,
315
- noHandle: false,
316
- label: node.edgeLabel
317
- // type: 'smoothstep'
332
+ noHandle: true,
333
+ label: node.edgeLabel,
334
+ edgeColor: '#999',
335
+ type: 'bezier'
318
336
  });
319
337
  }
320
338
  });
321
339
  });
322
340
  return edges;
323
341
  }
324
- function createVirtualNode(parentIds, label, edgeLabel, offset) {
325
- const id = -idGenerator.next().value - 1 + (offset ?? 0);
342
+ function createVirtualNode(parentIds, label, modules, whereInsert, edgeLabel, offset, loopDepth, index, selectable, deleteBranch, mid = undefined) {
343
+ const id = -idGenerator.next().value - 2 + (offset ?? 0);
326
344
  return {
327
- id,
345
+ type: 'node',
346
+ id: id.toString(),
328
347
  position: { x: -1, y: -1 },
329
348
  data: {
330
- html: `
331
- <div class="w-full max-h-full text-center ellipsize-multi-line text-2xs [-webkit-line-clamp:2] px-1">
332
- ${label}
333
- </div>
334
- `
349
+ // html: `
350
+ // <div class="w-full max-h-full text-center ellipsize-multi-line text-2xs [-webkit-line-clamp:2] px-1">
351
+ // ${label}
352
+ // </div>
353
+ // `
354
+ custom: {
355
+ component: VirtualItem,
356
+ props: {
357
+ label,
358
+ insertable,
359
+ modules,
360
+ bgColor: label == 'Result' ? getResultColor() : '#dfe6ee',
361
+ selected: $selectedId == label,
362
+ index,
363
+ selectable,
364
+ whereInsert,
365
+ deleteBranch,
366
+ id: mid,
367
+ moving
368
+ },
369
+ cb: (e, detail) => {
370
+ if (e == 'insert') {
371
+ dispatch('insert', detail);
372
+ }
373
+ else if (e == 'select') {
374
+ $selectedId = detail;
375
+ dispatch('select', detail);
376
+ }
377
+ else if (e == 'deleteBranch') {
378
+ $selectedId = label;
379
+ dispatch('deleteBranch', detail);
380
+ }
381
+ }
382
+ }
335
383
  },
336
384
  width: NODE.width,
337
385
  height: NODE.height,
338
- borderColor: selectedNode == label ? 'black' : '#999',
339
- bgColor: label == 'Result' ? getResultColor() : selectedNode == label ? '#f5f5f5' : '#d4e4ff',
386
+ borderColor: $selectedId == label ? 'black' : '#999',
387
+ sourcePosition: 'bottom',
388
+ targetPosition: 'top',
340
389
  parentIds,
341
- clickCallback: (node) => {
342
- if (!notSelectable) {
343
- selectedNode = label;
344
- }
345
- dispatch('click', label);
346
- },
347
- edgeLabel
390
+ edgeLabel,
391
+ loopDepth
348
392
  };
349
393
  }
350
394
  function createErrorHandler(mod, parent_module) {
351
- const nId = -idGenerator.next().value - 1 + 1100;
395
+ const nId = (-idGenerator.next().value - 1 + 1100).toString();
352
396
  parent_module && (errorHandlers[parent_module] = nId);
397
+ let label = 'Error handler';
353
398
  return {
399
+ type: 'node',
354
400
  id: nId,
355
401
  position: { x: -1, y: -1 },
356
402
  data: {
357
- html: `
358
- <div class="w-full flex justify-between items-center px-1">
359
- <div class="text-left ellipsize text-2xs truncate">
360
- Error Handler
361
- </div>
362
- <div class="flex items-center">
363
- <span class="center-center font-semibold bg-indigo-100 text-indigo-800 rounded px-1 pb-[2px] ml-[2px]">
364
- ${mod.id}
365
- </span>
366
- </div>
367
- </div>
368
- `
403
+ custom: {
404
+ component: VirtualItem,
405
+ props: {
406
+ label,
407
+ insertable: false,
408
+ modules: undefined,
409
+ bgColor: getStateColor(flowModuleStates?.[mod.id]?.type),
410
+ selected: $selectedId == mod.id,
411
+ index: 0,
412
+ selectable: true,
413
+ id: mod.id
414
+ },
415
+ cb: (e, detail) => {
416
+ console.log(detail);
417
+ if (e == 'select') {
418
+ $selectedId = detail;
419
+ dispatch('select', detail);
420
+ }
421
+ }
422
+ }
369
423
  },
370
424
  width: NODE.width,
371
425
  height: NODE.height,
372
- bgColor: selectedNode == mod.id ? '#f5f5f5' : getStateColor(flowModuleStates?.[mod.id]?.type),
373
- borderColor: selectedNode == mod.id ? 'black' : '#999',
426
+ sourcePosition: 'bottom',
427
+ targetPosition: 'top',
374
428
  parentIds: parent_module ? [parent_module] : [],
375
- clickCallback: (node) => {
376
- if (!notSelectable) {
377
- selectedNode = mod.id;
378
- }
379
- dispatch('click', mod);
380
- }
429
+ loopDepth: 0
381
430
  };
382
431
  }
383
432
  </script>
384
433
 
385
434
  <div bind:clientWidth={width} class="w-full h-full overflow-hidden relative">
386
435
  {#if width && height}
387
- <Svelvet {nodes} {width} {edges} {height} bgColor="rgb(249 250 251)" />
436
+ <Svelvet
437
+ highlightEdges={false}
438
+ locked
439
+ {initialZoom}
440
+ {nodes}
441
+ {width}
442
+ {edges}
443
+ {height}
444
+ {scroll}
445
+ background={false}
446
+ bgColor="rgb(249 250 251)"
447
+ />
388
448
  {/if}
389
449
  </div>
@@ -1,17 +1,30 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  import { type FlowModule } from '../../gen';
3
3
  import { type GraphModuleState } from '.';
4
+ import { type Writable } from 'svelte/store';
4
5
  declare const __propDef: {
5
6
  props: {
6
7
  success?: boolean | undefined;
7
8
  modules?: FlowModule[] | undefined;
8
9
  failureModule?: FlowModule | undefined;
9
10
  minHeight?: number | undefined;
11
+ maxHeight?: number | undefined;
10
12
  notSelectable?: boolean | undefined;
11
13
  flowModuleStates?: Record<string, GraphModuleState> | undefined;
14
+ rebuildOnChange?: any;
15
+ selectedId?: Writable<string | undefined> | undefined;
16
+ initialZoom?: number | undefined;
17
+ insertable?: boolean | undefined;
18
+ moving?: string | undefined;
19
+ scroll?: boolean | undefined;
12
20
  };
13
21
  events: {
14
- click: CustomEvent<any>;
22
+ delete: CustomEvent<any>;
23
+ select: CustomEvent<any>;
24
+ insert: CustomEvent<any>;
25
+ newBranch: CustomEvent<any>;
26
+ move: CustomEvent<any>;
27
+ deleteBranch: CustomEvent<any>;
15
28
  } & {
16
29
  [evt: string]: CustomEvent<any>;
17
30
  };
@@ -1,44 +1,12 @@
1
1
  import type { FlowStatusModule } from "../../gen";
2
- export interface SvelvetNode<T = any> {
3
- id: number;
4
- position: {
5
- x: number;
6
- y: number;
7
- };
8
- data: T;
9
- width: number;
10
- height: number;
11
- bgColor?: string;
12
- fontSize?: number;
13
- borderColor?: string;
14
- parentNode?: number;
15
- childNodes?: number[];
16
- borderRadius?: number;
17
- textColor?: string;
18
- clickCallback?: Function;
19
- image?: boolean;
20
- src?: string;
21
- sourcePosition?: 'left' | 'right' | 'top' | 'bottom';
22
- targetPosition?: 'left' | 'right' | 'top' | 'bottom';
23
- }
24
- export interface Edge {
25
- id: string;
26
- source: number;
27
- target: number;
28
- label?: string;
29
- labelBgColor?: string;
30
- labelTextColor?: string;
31
- edgeColor?: string;
32
- type?: string;
33
- animate?: boolean;
34
- noHandle?: boolean;
35
- arrow?: boolean;
36
- }
2
+ import type { UserNodeType } from "./svelvet/types";
37
3
  export type ModuleHost = 'workspace' | 'inline' | 'hub';
38
- export type Node = SvelvetNode & {
4
+ export type Node = UserNodeType & {
39
5
  parentIds: string[];
40
6
  edgeLabel?: string;
41
7
  host?: ModuleHost;
8
+ type: 'node';
9
+ loopDepth: number;
42
10
  };
43
11
  export type Loop = {
44
12
  type: 'loop';
@@ -46,12 +14,14 @@ export type Loop = {
46
14
  };
47
15
  export type Branch = {
48
16
  node: Node;
17
+ nodeEnd: Node;
49
18
  type: 'branch';
50
19
  items: NestedNodes[];
51
20
  };
52
21
  export type GraphItem = Node | Loop | Branch;
53
22
  export type GraphModuleState = {
54
23
  type: FlowStatusModule.type;
24
+ args: any;
55
25
  logs?: string;
56
26
  result?: any;
57
27
  scheduled_for?: string;