windmill-components 1.60.4 → 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 (549) hide show
  1. package/assets/app.css +15 -1
  2. package/common.d.ts +5 -1
  3. package/components/ApiConnectForm.svelte +66 -5
  4. package/components/AppConnect.svelte +26 -10
  5. package/components/ArgInput.svelte +1 -1
  6. package/components/CliHelpBox.svelte +49 -0
  7. package/components/CliHelpBox.svelte.d.ts +14 -0
  8. package/components/DisplayResult.svelte +78 -10
  9. package/components/DisplayResult.svelte.d.ts +1 -0
  10. package/components/Editor.svelte +17 -7
  11. package/components/EditorBar.svelte +129 -111
  12. package/components/FieldHeader.svelte +12 -8
  13. package/components/FlowBuilder.svelte +107 -39
  14. package/components/FlowBuilder.svelte.d.ts +5 -0
  15. package/components/FlowGraphViewer.svelte +5 -4
  16. package/components/FlowJobResult.svelte +13 -5
  17. package/components/FlowJobResult.svelte.d.ts +1 -0
  18. package/components/FlowMetadata.svelte +24 -8
  19. package/components/FlowPreviewContent.svelte +5 -11
  20. package/components/FlowStatusViewer.svelte +62 -17
  21. package/components/FolderEditor.svelte +3 -2
  22. package/components/GroupEditor.svelte +8 -0
  23. package/components/HighlightCode.svelte +7 -1
  24. package/components/InlineCodeCopy.svelte +11 -0
  25. package/components/InlineCodeCopy.svelte.d.ts +16 -0
  26. package/components/InputTransformForm.svelte +22 -25
  27. package/components/InputTransformSchemaForm.svelte +103 -0
  28. package/components/InputTransformSchemaForm.svelte.d.ts +24 -0
  29. package/components/LogViewer.svelte +7 -1
  30. package/components/LogViewer.svelte.d.ts +1 -0
  31. package/components/ModulePreview.svelte +13 -3
  32. package/components/MoveDrawer.svelte +1 -1
  33. package/components/Multiselect.svelte +1 -1
  34. package/components/Multiselect.svelte.d.ts +2 -2
  35. package/components/ObjectResourceInput.svelte +6 -1
  36. package/components/Path.svelte +29 -16
  37. package/components/Popover.svelte +10 -15
  38. package/components/Popover.svelte.d.ts +1 -0
  39. package/components/Range.svelte.d.ts +2 -2
  40. package/components/ResourceEditor.svelte +39 -16
  41. package/components/ResourcePicker.svelte +33 -15
  42. package/components/RunChart.svelte +24 -5
  43. package/components/RunForm.svelte +26 -3
  44. package/components/RunForm.svelte.d.ts +2 -0
  45. package/components/ScheduleEditor.svelte +1 -1
  46. package/components/SchemaEditor.svelte +2 -2
  47. package/components/SchemaForm.svelte +72 -60
  48. package/components/SchemaForm.svelte.d.ts +1 -5
  49. package/components/ScriptBuilder.svelte +69 -30
  50. package/components/ScriptBuilder.svelte.d.ts +1 -0
  51. package/components/ScriptEditor.svelte +1 -0
  52. package/components/ScriptPicker.svelte +3 -0
  53. package/components/SharedBadge.svelte +5 -5
  54. package/components/SimpleEditor.svelte +4 -1
  55. package/components/SimpleEditor.svelte.d.ts +2 -0
  56. package/components/Slider.svelte +19 -0
  57. package/components/Slider.svelte.d.ts +20 -0
  58. package/components/StringTypeNarrowing.svelte +0 -1
  59. package/components/SuperadminSettings.svelte +11 -3
  60. package/components/SuperadminSettings.svelte.d.ts +2 -0
  61. package/components/TemplateEditor.svelte +1 -1
  62. package/components/TemplateEditor.svelte.d.ts +204 -0
  63. package/components/TestJobLoader.svelte +5 -5
  64. package/components/Toggle.svelte +18 -6
  65. package/components/Toggle.svelte.d.ts +2 -0
  66. package/components/Tooltip.svelte +1 -1
  67. package/components/UserSettings.svelte +13 -3
  68. package/components/UserSettings.svelte.d.ts +2 -0
  69. package/components/VariableEditor.svelte +1 -1
  70. package/components/WhitelistIp.svelte +23 -0
  71. package/components/WhitelistIp.svelte.d.ts +14 -0
  72. package/components/apps/components/buttons/AppButton.svelte +79 -17
  73. package/components/apps/components/buttons/AppButton.svelte.d.ts +4 -0
  74. package/components/apps/components/{form → buttons}/AppForm.svelte +19 -7
  75. package/components/apps/components/{form → buttons}/AppForm.svelte.d.ts +3 -0
  76. package/components/apps/components/buttons/AppFormButton.svelte +145 -0
  77. package/components/apps/components/buttons/AppFormButton.svelte.d.ts +28 -0
  78. package/components/apps/components/buttons/index.d.ts +3 -0
  79. package/components/apps/components/buttons/index.js +3 -0
  80. package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte +27 -8
  81. package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte.d.ts +4 -0
  82. package/components/apps/components/display/AppDisplayComponent.svelte +36 -0
  83. package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +24 -0
  84. package/components/apps/components/display/AppHtml.svelte +46 -0
  85. package/components/apps/components/{dataDisplay → display}/AppHtml.svelte.d.ts +4 -1
  86. package/components/apps/components/display/AppIcon.svelte +47 -0
  87. package/components/apps/components/display/AppIcon.svelte.d.ts +25 -0
  88. package/components/apps/components/display/AppImage.svelte +34 -0
  89. package/components/apps/components/display/AppImage.svelte.d.ts +25 -0
  90. package/components/apps/components/display/AppMap.svelte +214 -0
  91. package/components/apps/components/display/AppMap.svelte.d.ts +23 -0
  92. package/components/apps/components/display/AppPdf.svelte +304 -0
  93. package/components/apps/components/display/AppPdf.svelte.d.ts +24 -0
  94. package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte +16 -7
  95. package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte.d.ts +4 -0
  96. package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte +13 -4
  97. package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte.d.ts +4 -0
  98. package/components/apps/components/{dataDisplay → display}/AppText.svelte +42 -34
  99. package/components/apps/components/{dataDisplay → display}/AppText.svelte.d.ts +4 -0
  100. package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte +14 -5
  101. package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte.d.ts +4 -0
  102. package/components/apps/components/display/PlotlyHtml.svelte +32 -0
  103. package/components/apps/components/display/PlotlyHtml.svelte.d.ts +24 -0
  104. package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte +4 -10
  105. package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte.d.ts +2 -0
  106. package/components/apps/components/display/index.d.ts +15 -0
  107. package/components/apps/components/display/index.js +15 -0
  108. package/components/apps/components/display/table/AppAggridTable.svelte +92 -0
  109. package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +25 -0
  110. package/components/apps/components/{table → display/table}/AppTable.svelte +85 -29
  111. package/components/apps/components/{table → display/table}/AppTable.svelte.d.ts +6 -2
  112. package/components/apps/components/{table → display/table}/AppTableFooter.svelte +9 -2
  113. package/components/apps/components/{table → display/table}/AppTableFooter.svelte.d.ts +2 -0
  114. package/components/apps/components/helpers/AlignWrapper.svelte +29 -23
  115. package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +6 -2
  116. package/components/apps/components/helpers/HiddenComponent.svelte +23 -0
  117. package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +25 -0
  118. package/components/apps/components/helpers/InputDefaultValue.svelte +17 -0
  119. package/components/apps/components/helpers/InputDefaultValue.svelte.d.ts +17 -0
  120. package/components/apps/components/helpers/InputValue.svelte +39 -18
  121. package/components/apps/components/helpers/InputValue.svelte.d.ts +0 -1
  122. package/components/apps/components/helpers/NonRunnableComponent.svelte +18 -3
  123. package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -0
  124. package/components/apps/components/helpers/RefreshButton.svelte +1 -1
  125. package/components/apps/components/helpers/ResizeWrapper.svelte +24 -0
  126. package/components/apps/components/helpers/ResizeWrapper.svelte.d.ts +19 -0
  127. package/components/apps/components/helpers/RunnableComponent.svelte +99 -102
  128. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +5 -2
  129. package/components/apps/components/helpers/RunnableWrapper.svelte +16 -7
  130. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +5 -2
  131. package/components/apps/components/helpers/index.d.ts +10 -0
  132. package/components/apps/components/helpers/index.js +10 -0
  133. package/components/apps/components/icon.d.ts +1 -0
  134. package/components/apps/components/icon.js +18 -0
  135. package/components/apps/components/index.d.ts +5 -0
  136. package/components/apps/components/index.js +5 -0
  137. package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte +12 -4
  138. package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte.d.ts +3 -0
  139. package/components/apps/components/inputs/AppDateInput.svelte +47 -0
  140. package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte.d.ts +6 -1
  141. package/components/apps/components/inputs/AppFileInput.svelte +42 -0
  142. package/components/apps/components/inputs/AppFileInput.svelte.d.ts +23 -0
  143. package/components/apps/components/inputs/AppMultiSelect.svelte +82 -0
  144. package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +27 -0
  145. package/components/apps/components/inputs/AppNumberInput.svelte +52 -0
  146. package/components/apps/components/{numberInputs → inputs}/AppNumberInput.svelte.d.ts +5 -0
  147. package/components/apps/components/inputs/AppRangeInput.svelte +85 -0
  148. package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +26 -0
  149. package/components/apps/components/inputs/AppSelect.svelte +127 -0
  150. package/components/apps/components/{selectInputs → inputs}/AppSelect.svelte.d.ts +5 -0
  151. package/components/apps/components/inputs/AppSliderInputs.svelte +73 -0
  152. package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte.d.ts +3 -0
  153. package/components/apps/components/inputs/AppTextInput.svelte +71 -0
  154. package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte.d.ts +6 -0
  155. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +59 -0
  156. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +24 -0
  157. package/components/apps/components/inputs/currency/CurrencyInput.svelte +183 -0
  158. package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +33 -0
  159. package/components/apps/components/inputs/index.d.ts +9 -0
  160. package/components/apps/components/inputs/index.js +9 -0
  161. package/components/apps/components/layout/AppContainer.svelte +40 -0
  162. package/components/apps/components/layout/AppContainer.svelte.d.ts +24 -0
  163. package/components/apps/components/layout/AppDivider.svelte +40 -0
  164. package/components/apps/components/layout/AppDivider.svelte.d.ts +24 -0
  165. package/components/apps/components/layout/AppDrawer.svelte +89 -0
  166. package/components/apps/components/layout/AppDrawer.svelte.d.ts +24 -0
  167. package/components/apps/components/layout/AppSplitpanes.svelte +88 -0
  168. package/components/apps/components/layout/AppSplitpanes.svelte.d.ts +26 -0
  169. package/components/apps/components/layout/AppTabs.svelte +99 -0
  170. package/components/apps/components/layout/AppTabs.svelte.d.ts +27 -0
  171. package/components/apps/components/layout/index.d.ts +5 -0
  172. package/components/apps/components/layout/index.js +5 -0
  173. package/components/apps/editor/AppComponentInput.svelte +33 -0
  174. package/components/apps/editor/AppComponentInput.svelte.d.ts +18 -0
  175. package/components/apps/editor/AppComponentInputs.svelte +13 -0
  176. package/components/apps/editor/AppComponentInputs.svelte.d.ts +20 -0
  177. package/components/apps/editor/AppEditor.svelte +134 -35
  178. package/components/apps/editor/AppEditor.svelte.d.ts +4 -1
  179. package/components/apps/editor/AppEditorHeader.svelte +178 -47
  180. package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
  181. package/components/apps/editor/AppInputs.svelte +60 -0
  182. package/components/apps/editor/AppInputs.svelte.d.ts +14 -0
  183. package/components/apps/editor/AppPreview.svelte +30 -12
  184. package/components/apps/editor/ComponentHeader.svelte +52 -3
  185. package/components/apps/editor/ComponentHeader.svelte.d.ts +2 -1
  186. package/components/apps/editor/GridEditor.svelte +134 -77
  187. package/components/apps/editor/GridEditor.svelte.d.ts +2 -0
  188. package/components/apps/editor/GridPanel.svelte +29 -0
  189. package/components/apps/editor/GridPanel.svelte.d.ts +18 -0
  190. package/components/apps/editor/RecomputeAllComponents.svelte +8 -6
  191. package/components/apps/editor/SettingsPanel.svelte +26 -8
  192. package/components/apps/editor/SubGridEditor.svelte +139 -0
  193. package/components/apps/editor/SubGridEditor.svelte.d.ts +29 -0
  194. package/components/apps/editor/appUtils.d.ts +19 -0
  195. package/components/apps/editor/appUtils.js +241 -0
  196. package/components/apps/editor/component/Component.svelte +434 -0
  197. package/components/apps/editor/{ComponentEditor.svelte.d.ts → component/Component.svelte.d.ts} +7 -5
  198. package/components/apps/editor/component/ComponentNavigation.svelte +125 -0
  199. package/components/apps/editor/component/ComponentNavigation.svelte.d.ts +14 -0
  200. package/components/apps/editor/component/README.md +15 -0
  201. package/components/apps/editor/component/components.d.ts +77 -0
  202. package/components/apps/editor/component/components.js +1476 -0
  203. package/components/apps/editor/component/default-codes.d.ts +3 -0
  204. package/components/apps/editor/component/default-codes.js +322 -0
  205. package/components/apps/editor/component/index.d.ts +4 -0
  206. package/components/apps/editor/component/index.js +4 -0
  207. package/components/apps/editor/component/sets.d.ts +2 -0
  208. package/components/apps/editor/component/sets.js +55 -0
  209. package/components/apps/editor/componentsPanel/ComponentList.svelte +75 -108
  210. package/components/apps/editor/componentsPanel/CssProperty.svelte +67 -0
  211. package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +21 -0
  212. package/components/apps/editor/componentsPanel/CssSettings.svelte +188 -0
  213. package/components/apps/editor/componentsPanel/CssSettings.svelte.d.ts +14 -0
  214. package/components/apps/editor/componentsPanel/ListItem.svelte +39 -0
  215. package/components/apps/editor/componentsPanel/ListItem.svelte.d.ts +20 -0
  216. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +5 -1
  217. package/components/apps/editor/componentsPanel/componentStaticValues.js +16 -1
  218. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -1
  219. package/components/apps/editor/contextPanel/ContextPanel.svelte +115 -67
  220. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +109 -10
  221. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -0
  222. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +88 -41
  223. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +5 -0
  224. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +32 -6
  225. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -0
  226. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +75 -8
  227. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +128 -72
  228. package/components/apps/editor/inlineScriptsPanel/utils.d.ts +5 -5
  229. package/components/apps/editor/inlineScriptsPanel/utils.js +48 -7
  230. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
  231. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte.d.ts +1 -1
  232. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +14 -10
  233. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +68 -1
  234. package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +1 -1
  235. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +130 -61
  236. package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +6 -3
  237. package/components/apps/editor/settingsPanel/GridPane.svelte +75 -0
  238. package/components/apps/editor/settingsPanel/GridPane.svelte.d.ts +20 -0
  239. package/components/apps/editor/settingsPanel/GridTab.svelte +73 -0
  240. package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +20 -0
  241. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +5 -1
  242. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -2
  243. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +93 -78
  244. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
  245. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +92 -0
  246. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte.d.ts +18 -0
  247. package/components/apps/editor/settingsPanel/Recompute.svelte +5 -2
  248. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +1 -1
  249. package/components/apps/editor/settingsPanel/TableActions.svelte +45 -7
  250. package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
  251. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +6 -4
  252. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +48 -0
  253. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte.d.ts +19 -0
  254. package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +1 -1
  255. package/components/apps/editor/settingsPanel/inputEditor/EvalInputEditor.svelte +1 -1
  256. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +107 -0
  257. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +21 -0
  258. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +2 -2
  259. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +2 -1
  260. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +59 -6
  261. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +3 -0
  262. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +21 -0
  263. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +17 -0
  264. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +1 -0
  265. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte.d.ts +1 -0
  266. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +4 -21
  267. package/components/apps/gridUtils.d.ts +3 -1
  268. package/components/apps/gridUtils.js +5 -3
  269. package/components/apps/inputType.d.ts +34 -6
  270. package/components/apps/rx.js +2 -1
  271. package/components/apps/store.d.ts +6 -1
  272. package/components/apps/types.d.ts +47 -42
  273. package/components/apps/types.js +1 -1
  274. package/components/apps/utils.d.ts +6 -5
  275. package/components/apps/utils.js +63 -95
  276. package/components/common/button/Button.svelte +12 -5
  277. package/components/common/button/Button.svelte.d.ts +3 -1
  278. package/components/common/button/ButtonPopup.svelte +2 -0
  279. package/components/common/button/ButtonPopup.svelte.d.ts +2 -1
  280. package/components/common/button/UndoRedo.svelte +32 -0
  281. package/components/common/button/UndoRedo.svelte.d.ts +20 -0
  282. package/components/common/button/model.d.ts +2 -2
  283. package/components/common/button/model.js +21 -6
  284. package/components/common/confirmationModal/ConfirmationModal.svelte +8 -1
  285. package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +4 -4
  286. package/components/common/drawer/Drawer.svelte +13 -5
  287. package/components/common/drawer/Drawer.svelte.d.ts +3 -1
  288. package/components/common/drawer/DrawerContent.svelte +0 -1
  289. package/components/common/fileInput/FileInput.svelte +138 -0
  290. package/components/common/fileInput/FileInput.svelte.d.ts +29 -0
  291. package/components/common/fileInput/model.d.ts +1 -0
  292. package/components/common/fileInput/model.js +1 -0
  293. package/components/common/index.d.ts +2 -0
  294. package/components/common/index.js +2 -0
  295. package/components/common/kbd/Kbd.svelte.d.ts +2 -2
  296. package/components/common/menu/Menu.svelte +3 -2
  297. package/components/common/menu/Menu.svelte.d.ts +2 -1
  298. package/components/common/modal/Modal.svelte +79 -0
  299. package/components/common/modal/Modal.svelte.d.ts +24 -0
  300. package/components/common/popup/Popup.svelte +34 -17
  301. package/components/common/popup/Popup.svelte.d.ts +11 -4
  302. package/components/common/table/AppRow.svelte +13 -4
  303. package/components/common/table/AppRow.svelte.d.ts +1 -0
  304. package/components/common/table/FlowRow.svelte +40 -8
  305. package/components/common/table/FlowRow.svelte.d.ts +1 -0
  306. package/components/common/table/LanguageBadge.svelte +10 -4
  307. package/components/common/table/Row.svelte +1 -1
  308. package/components/common/table/ScriptRow.svelte +44 -12
  309. package/components/common/table/ScriptRow.svelte.d.ts +1 -0
  310. package/components/common/tabs/Tab.svelte +12 -5
  311. package/components/common/tabs/Tab.svelte.d.ts +4 -1
  312. package/components/common/tabs/Tabs.svelte +12 -8
  313. package/components/common/tabs/Tabs.svelte.d.ts +6 -2
  314. package/components/flows/CreateActionsFlow.svelte +2 -3
  315. package/components/flows/FlowEditor.svelte +6 -4
  316. package/components/flows/common/FlowCardHeader.svelte +4 -1
  317. package/components/flows/content/BranchPredicateEditor.svelte +13 -12
  318. package/components/flows/content/CapturePayload.svelte +1 -2
  319. package/components/flows/content/FlowBranchesAllWrapper.svelte +1 -1
  320. package/components/flows/content/FlowConstants.svelte +7 -13
  321. package/components/flows/content/FlowEditorPanel.svelte +4 -3
  322. package/components/flows/content/FlowFailureModule.svelte +2 -1
  323. package/components/flows/content/FlowInput.svelte +4 -2
  324. package/components/flows/content/FlowInputs.svelte +109 -99
  325. package/components/flows/content/FlowLoop.svelte +4 -5
  326. package/components/flows/content/FlowModuleComponent.svelte +26 -13
  327. package/components/flows/content/FlowModuleEarlyStop.svelte +3 -1
  328. package/components/flows/content/FlowModuleHeader.svelte +26 -3
  329. package/components/flows/content/FlowModuleHeader.svelte.d.ts +1 -0
  330. package/components/flows/content/FlowModuleSleep.svelte +2 -2
  331. package/components/flows/content/FlowModuleWrapper.svelte +2 -8
  332. package/components/flows/content/FlowRetries.svelte +8 -6
  333. package/components/flows/content/FlowSchedules.svelte +1 -2
  334. package/components/flows/content/FlowSettings.svelte +77 -51
  335. package/components/flows/content/ScriptEditorDrawer.svelte +98 -0
  336. package/components/flows/content/ScriptEditorDrawer.svelte.d.ts +19 -0
  337. package/components/flows/flowState.d.ts +2 -2
  338. package/components/flows/flowState.js +1 -3
  339. package/components/flows/flowStateUtils.d.ts +7 -6
  340. package/components/flows/flowStateUtils.js +9 -11
  341. package/components/flows/flowStore.d.ts +5 -3
  342. package/components/flows/flowStore.js +6 -17
  343. package/components/flows/header/FlowImportExportMenu.svelte +2 -1
  344. package/components/flows/map/FlowConstantsItem.svelte +2 -2
  345. package/components/flows/map/FlowErrorHandlerItem.svelte +12 -13
  346. package/components/flows/map/FlowInputsItem.svelte +2 -3
  347. package/components/flows/map/FlowModuleSchemaItem.svelte +88 -91
  348. package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +3 -3
  349. package/components/flows/map/FlowModuleSchemaMap.svelte +163 -130
  350. package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -1
  351. package/components/flows/map/FlowSettingsItem.svelte +5 -4
  352. package/components/flows/map/InsertModuleButton.svelte +34 -18
  353. package/components/flows/map/InsertModuleButton.svelte.d.ts +2 -0
  354. package/components/flows/map/MapItem.svelte +176 -101
  355. package/components/flows/map/MapItem.svelte.d.ts +20 -2
  356. package/components/flows/map/VirtualItem.svelte +129 -0
  357. package/components/flows/map/VirtualItem.svelte.d.ts +44 -0
  358. package/components/flows/pickers/WorkspaceScriptPicker.svelte +1 -1
  359. package/components/flows/previousResults.d.ts +1 -1
  360. package/components/flows/previousResults.js +32 -17
  361. package/components/flows/types.d.ts +13 -1
  362. package/components/flows/utils.js +17 -11
  363. package/components/graph/FlowGraph.svelte +247 -164
  364. package/components/graph/FlowGraph.svelte.d.ts +15 -1
  365. package/components/graph/model.d.ts +6 -36
  366. package/components/graph/model.js +1 -1
  367. package/components/graph/svelvet/LICENSE +21 -0
  368. package/components/graph/svelvet/collapsible/controllers/util.d.ts +15 -0
  369. package/components/graph/svelvet/collapsible/controllers/util.js +144 -0
  370. package/components/graph/svelvet/collapsible/models/Collapsible.d.ts +17 -0
  371. package/components/graph/svelvet/collapsible/models/Collapsible.js +25 -0
  372. package/components/graph/svelvet/collapsible/types/types.d.ts +8 -0
  373. package/components/graph/svelvet/collapsible/types/types.js +1 -0
  374. package/components/graph/svelvet/container/README.md +7 -0
  375. package/components/graph/svelvet/container/controllers/middleware.d.ts +18 -0
  376. package/components/graph/svelvet/container/controllers/middleware.js +101 -0
  377. package/components/graph/svelvet/container/views/GraphView.svelte +252 -0
  378. package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +25 -0
  379. package/components/graph/svelvet/container/views/Svelvet.svelte +131 -0
  380. package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +41 -0
  381. package/components/graph/svelvet/customCss/controllers/getCss.d.ts +2 -0
  382. package/components/graph/svelvet/customCss/controllers/getCss.js +57 -0
  383. package/components/graph/svelvet/d3/controllers/README.md +3 -0
  384. package/components/graph/svelvet/d3/controllers/d3.d.ts +5 -0
  385. package/components/graph/svelvet/d3/controllers/d3.js +59 -0
  386. package/components/graph/svelvet/d3/controllers/d3Old.d.ts +1 -0
  387. package/components/graph/svelvet/d3/controllers/d3Old.js +43 -0
  388. package/components/graph/svelvet/docs/CHANGELOG.md +145 -0
  389. package/components/graph/svelvet/docs/DESIGN_PATTERNS.md +44 -0
  390. package/components/graph/svelvet/docs/DOCUMENTATION.md +5 -0
  391. package/components/graph/svelvet/docs/README.md +34 -0
  392. package/components/graph/svelvet/docs/TODO.md +14 -0
  393. package/components/graph/svelvet/docs/Tutorials.md +25 -0
  394. package/components/graph/svelvet/docs/images/css-background-after.png +0 -0
  395. package/components/graph/svelvet/docs/images/css-background-before.png +0 -0
  396. package/components/graph/svelvet/docs/images/custom-edges-after.png +0 -0
  397. package/components/graph/svelvet/docs/images/custom-edges-before.png +0 -0
  398. package/components/graph/svelvet/docs/images/custom-nodes-after.png +0 -0
  399. package/components/graph/svelvet/docs/images/custom-nodes-before.png +0 -0
  400. package/components/graph/svelvet/docs/images/custom-svelte-components-after.png +0 -0
  401. package/components/graph/svelvet/docs/images/custom-svelte-components-before.png +0 -0
  402. package/components/graph/svelvet/docs/images/html-docs-after.png +0 -0
  403. package/components/graph/svelvet/docs/images/html-docs-before.png +0 -0
  404. package/components/graph/svelvet/docs/images/minimap-after.png +0 -0
  405. package/components/graph/svelvet/docs/images/minimap-before.png +0 -0
  406. package/components/graph/svelvet/docs/images/node-classes-after.png +0 -0
  407. package/components/graph/svelvet/docs/images/node-classes-before.png +0 -0
  408. package/components/graph/svelvet/docs/images/node-create-after.png +0 -0
  409. package/components/graph/svelvet/docs/images/node-create-before.png +0 -0
  410. package/components/graph/svelvet/edges/controllers/anchorCbDev.d.ts +4 -0
  411. package/components/graph/svelvet/edges/controllers/anchorCbDev.js +92 -0
  412. package/components/graph/svelvet/edges/controllers/anchorCbUser.d.ts +57 -0
  413. package/components/graph/svelvet/edges/controllers/anchorCbUser.js +73 -0
  414. package/components/graph/svelvet/edges/controllers/util.d.ts +37 -0
  415. package/components/graph/svelvet/edges/controllers/util.js +72 -0
  416. package/components/graph/svelvet/edges/models/Anchor.d.ts +48 -0
  417. package/components/graph/svelvet/edges/models/Anchor.js +122 -0
  418. package/components/graph/svelvet/edges/models/Edge.d.ts +47 -0
  419. package/components/graph/svelvet/edges/models/Edge.js +107 -0
  420. package/components/graph/svelvet/edges/types/types.d.ts +18 -0
  421. package/components/graph/svelvet/edges/types/types.js +1 -0
  422. package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte +105 -0
  423. package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte.d.ts +18 -0
  424. package/components/graph/svelvet/edges/views/Edges/EdgeAnchor.svelte +12 -0
  425. package/components/graph/svelvet/edges/views/Edges/EdgeAnchor.svelte.d.ts +17 -0
  426. package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +43 -0
  427. package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte.d.ts +17 -0
  428. package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +137 -0
  429. package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte.d.ts +17 -0
  430. package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte +176 -0
  431. package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte.d.ts +60 -0
  432. package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte +8 -0
  433. package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte.d.ts +25 -0
  434. package/components/graph/svelvet/edges/views/Edges/types.d.ts +52 -0
  435. package/components/graph/svelvet/edges/views/Edges/types.js +1 -0
  436. package/components/graph/svelvet/edges/views/Edges/utils.d.ts +33 -0
  437. package/components/graph/svelvet/edges/views/Edges/utils.js +31 -0
  438. package/components/graph/svelvet/editEdges/views/EditEdge.svelte +151 -0
  439. package/components/graph/svelvet/editEdges/views/EditEdge.svelte.d.ts +20 -0
  440. package/components/graph/svelvet/nodes/controllers/util.d.ts +9 -0
  441. package/components/graph/svelvet/nodes/controllers/util.js +13 -0
  442. package/components/graph/svelvet/nodes/models/Node.d.ts +78 -0
  443. package/components/graph/svelvet/nodes/models/Node.js +195 -0
  444. package/components/graph/svelvet/nodes/views/EditNode.svelte +147 -0
  445. package/components/graph/svelvet/nodes/views/EditNode.svelte.d.ts +33 -0
  446. package/components/graph/svelvet/nodes/views/Node.svelte +85 -0
  447. package/components/graph/svelvet/nodes/views/Node.svelte.d.ts +22 -0
  448. package/components/graph/svelvet/resizableNodes/controllers/util.d.ts +11 -0
  449. package/components/graph/svelvet/resizableNodes/controllers/util.js +24 -0
  450. package/components/graph/svelvet/resizableNodes/models/ResizeNode.d.ts +33 -0
  451. package/components/graph/svelvet/resizableNodes/models/ResizeNode.js +71 -0
  452. package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte +81 -0
  453. package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte.d.ts +20 -0
  454. package/components/graph/svelvet/store/controllers/storeApi.d.ts +32 -0
  455. package/components/graph/svelvet/store/controllers/storeApi.js +111 -0
  456. package/components/graph/svelvet/store/controllers/userApi.d.ts +3 -0
  457. package/components/graph/svelvet/store/controllers/userApi.js +18 -0
  458. package/components/graph/svelvet/store/controllers/util.d.ts +31 -0
  459. package/components/graph/svelvet/store/controllers/util.js +180 -0
  460. package/components/graph/svelvet/store/models/store.d.ts +12 -0
  461. package/components/graph/svelvet/store/models/store.js +9 -0
  462. package/components/graph/svelvet/store/types/types.d.ts +134 -0
  463. package/components/graph/svelvet/store/types/types.js +1 -0
  464. package/components/graph/svelvet/types/README.md +3 -0
  465. package/components/graph/svelvet/types/index.d.ts +2 -0
  466. package/components/graph/svelvet/types/index.js +1 -0
  467. package/components/graph/svelvet/types/types.d.ts +49 -0
  468. package/components/graph/svelvet/types/types.js +18 -0
  469. package/components/graph/util.js +2 -2
  470. package/components/home/ItemsList.svelte +53 -5
  471. package/components/home/ItemsList.svelte.d.ts +1 -0
  472. package/components/home/ListFilters.svelte +7 -2
  473. package/components/icons/SquareIcon.svelte +9 -0
  474. package/components/icons/SquareIcon.svelte.d.ts +17 -0
  475. package/components/icons/index.d.ts +2 -0
  476. package/components/icons/index.js +2 -0
  477. package/components/jobs/JobDetail.svelte +40 -5
  478. package/components/propertyPicker/ObjectViewer.svelte +14 -9
  479. package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
  480. package/components/propertyPicker/PropPicker.svelte +8 -1
  481. package/components/propertyPicker/PropPickerResult.svelte +1 -1
  482. package/components/random_positive_adjetive.d.ts +1 -0
  483. package/components/random_positive_adjetive.js +961 -0
  484. package/components/scriptEditor/LogPanel.svelte +2 -1
  485. package/components/sidebar/SidebarContent.svelte +1 -1
  486. package/components/sidebar/UserMenu.svelte +46 -16
  487. package/components/sidebar/UserMenu.svelte.d.ts +0 -3
  488. package/components/sidebar/WorkspaceMenu.svelte +3 -1
  489. package/components/sidebar/settings.d.ts +2 -0
  490. package/components/sidebar/settings.js +2 -0
  491. package/consts.d.ts +1 -0
  492. package/consts.js +1 -0
  493. package/defaults.d.ts +4 -0
  494. package/defaults.js +4 -0
  495. package/gen/core/OpenAPI.js +1 -1
  496. package/gen/models/CompletedJob.d.ts +1 -0
  497. package/gen/models/FlowModule.d.ts +0 -1
  498. package/gen/models/QueuedJob.d.ts +1 -0
  499. package/gen/models/WorkerPing.d.ts +1 -1
  500. package/gen/services/FlowService.d.ts +9 -0
  501. package/gen/services/FlowService.js +15 -0
  502. package/gen/services/JobService.d.ts +97 -15
  503. package/gen/services/JobService.js +74 -15
  504. package/gen/services/ScriptService.d.ts +10 -1
  505. package/gen/services/ScriptService.js +16 -1
  506. package/gen/services/VariableService.d.ts +4 -2
  507. package/gen/services/VariableService.js +8 -2
  508. package/gen/services/WorkspaceService.d.ts +17 -0
  509. package/gen/services/WorkspaceService.js +16 -0
  510. package/history.d.ts +9 -0
  511. package/history.js +56 -0
  512. package/infer.js +3 -0
  513. package/init_scripts/python_failure_module.py +10 -0
  514. package/init_scripts/python_init_code.py +37 -0
  515. package/init_scripts/python_init_code_clear.py +5 -0
  516. package/init_scripts/python_init_code_trigger.py +14 -0
  517. package/logout.js +2 -1
  518. package/package.json +661 -522
  519. package/script_helpers.d.ts +6 -5
  520. package/script_helpers.js +8 -73
  521. package/scripts.d.ts +1 -1
  522. package/scripts.js +8 -1
  523. package/stores.d.ts +5 -1
  524. package/stores.js +8 -1
  525. package/user.d.ts +1 -1
  526. package/user.js +14 -8
  527. package/utils.d.ts +10 -5
  528. package/utils.js +51 -14
  529. package/components/apps/components/DisplayComponent.svelte +0 -16
  530. package/components/apps/components/DisplayComponent.svelte.d.ts +0 -20
  531. package/components/apps/components/dataDisplay/AppHtml.svelte +0 -31
  532. package/components/apps/components/dateInputs/AppDateInput.svelte +0 -34
  533. package/components/apps/components/numberInputs/AppNumberInput.svelte +0 -33
  534. package/components/apps/components/numberInputs/AppSliderInputs.svelte +0 -37
  535. package/components/apps/components/selectInputs/AppSelect.svelte +0 -47
  536. package/components/apps/components/textInputs/AppTextInput.svelte +0 -31
  537. package/components/apps/editor/ComponentEditor.svelte +0 -145
  538. package/components/apps/editor/TablePanel.svelte +0 -17
  539. package/components/apps/editor/TablePanel.svelte.d.ts +0 -17
  540. package/components/apps/editor/componentsPanel/data.d.ts +0 -3
  541. package/components/apps/editor/componentsPanel/data.js +0 -499
  542. package/components/apps/editorUtils.d.ts +0 -1
  543. package/components/apps/editorUtils.js +0 -292
  544. package/components/flows/map/FlowBranchAllMap.svelte +0 -100
  545. package/components/flows/map/FlowBranchAllMap.svelte.d.ts +0 -17
  546. package/components/flows/map/FlowBranchOneMap.svelte +0 -124
  547. package/components/flows/map/FlowBranchOneMap.svelte.d.ts +0 -17
  548. /package/components/apps/components/{table → display/table}/tableOptions.d.ts +0 -0
  549. /package/components/apps/components/{table → display/table}/tableOptions.js +0 -0
@@ -1,16 +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';
10
+ export let success = undefined;
8
11
  export let modules = [];
9
12
  export let failureModule = undefined;
10
13
  export let minHeight = 0;
14
+ export let maxHeight = undefined;
11
15
  export let notSelectable = false;
12
16
  export let flowModuleStates = undefined;
13
- 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 });
14
24
  let idGenerator;
15
25
  let nestedNodes;
16
26
  let nodes = [];
@@ -19,7 +29,9 @@ let width, height;
19
29
  let errorHandlers = {};
20
30
  let dispatch = createEventDispatcher();
21
31
  $: {
22
- width && height && minHeight && selectedNode && flowModuleStates;
32
+ rebuildOnChange;
33
+ moving;
34
+ width && height && minHeight && $selectedId && flowModuleStates;
23
35
  nodes = edges = [];
24
36
  errorHandlers = {};
25
37
  createGraph();
@@ -33,12 +45,12 @@ async function createGraph() {
33
45
  return;
34
46
  }
35
47
  nestedNodes = nodes = [];
36
- nestedNodes.push(createVirtualNode(getParentIds(), 'Input'));
37
- modules.forEach((m) => {
38
- 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);
39
51
  item && nestedNodes.push(item);
40
52
  });
41
- nestedNodes.push(createVirtualNode(getParentIds(), 'Result'));
53
+ nestedNodes.push(createVirtualNode(getParentIds(), 'Result', undefined, 'before', undefined, undefined, 0, modules.length, true, undefined));
42
54
  if (!flowModuleStates) {
43
55
  if (failureModule)
44
56
  nestedNodes.push(createErrorHandler(failureModule));
@@ -54,35 +66,36 @@ async function createGraph() {
54
66
  const layered = layoutNodes(flatNodes);
55
67
  nodes = layered.nodes;
56
68
  // width = layered.width
57
- height = layered.height;
69
+ height = Math.min(Math.max(layered.height, minHeight), maxHeight ?? window.innerHeight - 100);
58
70
  edges = createEdges(nodes);
59
71
  }
60
- function getConvertedFlowModule(module, parent = undefined, edgeLabel = undefined, insideLoop = false) {
72
+ function getConvertedFlowModule(module, parent, edgeLabel, loopDepth, insertableEnd, modules) {
61
73
  const type = module.value.type;
62
74
  const parentIds = getParentIds(parent);
63
- if (type === 'rawscript') {
64
- const lang = module.value.language;
65
- return flowModuleToNode(parentIds, module.id, module.summary || 'Inline script', 'inline', module, lang, edgeLabel, undefined, insideLoop);
66
- }
67
- else if (type === 'script') {
68
- const isHub = module.value.path.startsWith('hub/');
69
- return flowModuleToNode(parentIds, module.id, module.summary || module.value.path, isHub ? 'hub' : 'workspace', module, undefined, edgeLabel, undefined, insideLoop);
70
- }
71
- else if (type === 'forloopflow') {
72
- return flowModuleToLoop(module.value.modules, module, parent);
75
+ if (type === 'forloopflow') {
76
+ //@ts-ignore
77
+ return flowModuleToLoop(modules, module, parent, loopDepth);
73
78
  }
74
79
  else if (type === 'branchone') {
75
- const branches = [module.value.default, ...module.value.branches.map((b) => b.modules)];
76
- return flowModuleToBranch(module, branches, ['Default', ...module.value.branches.map((x) => `If ${truncateRev(x.expr, 20)}`)], parent, insideLoop);
80
+ const branches = [
81
+ { summary: 'Default Branch', modules: module.value.default, removable: false },
82
+ ...module.value.branches.map((b, i) => ({
83
+ summary: defaultIfEmptyString(b.summary, 'Branch ' + (i + 1)),
84
+ modules: b.modules,
85
+ removable: true
86
+ }))
87
+ ];
88
+ return flowModuleToBranch(module, modules, branches, ['', ...module.value.branches.map((x) => `${truncateRev(x.expr, 20)}`)], parent, loopDepth, false);
77
89
  }
78
90
  else if (type === 'branchall') {
79
- const branches = module.value.branches.map((b) => b.modules);
80
- return flowModuleToBranch(module, branches, [], parent, insideLoop);
91
+ const branches = module.value.branches.map((b, i) => ({
92
+ summary: defaultIfEmptyString(b.summary, `Branch ${i + 1}`),
93
+ modules: b.modules,
94
+ removable: true
95
+ }));
96
+ return flowModuleToBranch(module, modules, branches, [], parent, loopDepth, true);
81
97
  }
82
- else if (type === 'flow') {
83
- return flowModuleToNode(parentIds, module.id, module.summary || 'Flow ' + module.value.path, 'inline', module, undefined, edgeLabel, undefined, insideLoop);
84
- }
85
- 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);
86
99
  }
87
100
  function getParentIds(items = undefined) {
88
101
  if (typeof items == 'string') {
@@ -92,14 +105,14 @@ function getParentIds(items = undefined) {
92
105
  if (!item)
93
106
  return [];
94
107
  if (isNode(item)) {
95
- const id = numberToChars(item.id);
108
+ const id = item.id;
96
109
  return [id];
97
110
  }
98
111
  else if (isLoop(item)) {
99
112
  return getParentIds(item.items);
100
113
  }
101
114
  else if (isBranch(item)) {
102
- return item.items.map((i) => getParentIds(i)).flat();
115
+ return [item.nodeEnd.id];
103
116
  }
104
117
  return [];
105
118
  }
@@ -119,102 +132,112 @@ function getStateColor(state) {
119
132
  return '#fff';
120
133
  }
121
134
  }
122
- function flowModuleToNode(parentIds, id, title, host, onClickDetail, lang, edgeLabel, header, insideLoop = false) {
123
- const langImg = {
124
- deno: '/icons/ts-lang.svg',
125
- go: '/icons/go-lang.svg',
126
- python3: '/icons/python-lang.svg',
127
- bash: '/icons/bash-lang.svg'
128
- };
129
- const hostImg = {
130
- hub: '/icons/hub-script.svg',
131
- workspace: '/icons/inline-script.svg',
132
- inline: ''
133
- };
134
- const wrapperWidth = lang ? 'w-[calc(100%-70px)]' : 'w-[calc(100%-50px)]';
135
- let nodeId = id ?? numberToChars(idGenerator.next().value - 1);
135
+ function getResultColor() {
136
+ switch (success) {
137
+ case true:
138
+ return getStateColor(FlowStatusModule.type.SUCCESS);
139
+ case false:
140
+ return getStateColor(FlowStatusModule.type.FAILURE);
141
+ default:
142
+ return '#fff';
143
+ }
144
+ }
145
+ function flowModuleToNode(parentIds, mod, edgeLabel, annotation, loopDepth, insertableEnd, branchable, modules) {
136
146
  return {
137
- id: charsToNumber(nodeId),
147
+ type: 'node',
148
+ id: mod.id,
138
149
  position: { x: -1, y: -1 },
139
150
  data: {
140
- html: `
141
- <div class="w-full flex justify-between items-center px-1">
142
- <div class="${wrapperWidth} text-left ellipsize text-2xs truncate">
143
- ${title}
144
- </div>
145
- <div class="flex items-center">
146
- ${lang ? `<img src="${langImg[lang]}" class="grayscale">` : ''}
147
- ${host != 'inline' ? `<img src="${hostImg[host]}" class="grayscale">` : ''}
148
- <span class="center-center font-semibold bg-indigo-100 text-indigo-800 rounded px-1 pb-[2px] ml-[2px]">
149
- ${nodeId}
150
- </span>
151
- </div>
152
- </div>
153
- <div class="text-2xs absolute -top-6 text-gray-600 truncate">${flowModuleStates?.[nodeId]?.scheduled_for ?? header ?? ''}<div>
154
- `
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
+ }
155
187
  },
156
- host,
157
- width: insideLoop ? NODE.width * 0.8 : NODE.width,
188
+ width: NODE.width,
158
189
  height: NODE.height,
159
- borderColor: selectedNode == nodeId ? 'black' : '#999',
160
- bgColor: selectedNode == nodeId ? '#f5f5f5' : getStateColor(flowModuleStates?.[nodeId]?.type),
161
190
  parentIds,
162
- clickCallback: (node) => {
163
- if (!notSelectable) {
164
- selectedNode = nodeId;
165
- }
166
- if (onClickDetail.id == undefined) {
167
- onClickDetail.id = nodeId;
168
- }
169
- dispatch('click', onClickDetail);
170
- },
171
- edgeLabel
191
+ sourcePosition: 'bottom',
192
+ targetPosition: 'top',
193
+ edgeLabel,
194
+ loopDepth
172
195
  };
173
196
  }
174
- function flowModuleToLoop(modules, module, parent = undefined) {
175
- const value = module.value;
176
- const expr = value.iterator.type == 'static' ? value.iterator.value : value.iterator.expr;
197
+ function flowModuleToLoop(modules, module, parent, loopDepth) {
177
198
  const loop = {
178
199
  type: 'loop',
179
200
  items: [
180
- 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
181
202
  ? 'Iteration ' + flowModuleStates?.[module.id]?.iteration_total
182
- : '')
203
+ : '', loopDepth, false, false, modules)
183
204
  ]
184
205
  };
185
- modules.forEach((module) => {
186
- 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);
187
210
  item && loop.items.push(item);
188
211
  });
189
- 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));
190
213
  return loop;
191
214
  }
192
- function flowModuleToBranch(module, branches, edgesLabel, parent = undefined, insideLoop = false) {
193
- const branch = {
194
- type: 'branch',
195
- node: flowModuleToNode(getParentIds(parent), module.id, module.summary || module.value.type == 'branchall'
196
- ? 'Run all branches'
197
- : 'Run one branch given predicate', 'inline', module, undefined, undefined, undefined, insideLoop),
198
- items: []
199
- };
200
- 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];
201
219
  if (branches.length == 0) {
202
- branch.items.push([createVirtualNode(branchParent, 'No branches')]);
220
+ bitems.push([
221
+ createVirtualNode(branchParent, 'No branches', undefined, 'after', undefined, 0, loopDepth, 0, false, undefined)
222
+ ]);
203
223
  }
204
- branches.forEach((modules, i) => {
224
+ branches.forEach(({ summary, modules, removable }, i) => {
205
225
  const items = [];
206
- if (!modules.length) {
207
- items.push(createVirtualNode(branchParent, 'Empty branch', edgesLabel[i]));
208
- }
209
- else {
210
- modules.forEach((module) => {
211
- const item = getConvertedFlowModule(module, items.length ? items : numberToChars(branch.node.id), edgesLabel[i], insideLoop);
226
+ items.push(createVirtualNode(branchParent, summary, modules, 'after', edgesLabel[i], undefined, loopDepth, 0, false, removable ? { module, index: i } : undefined));
227
+ if (modules.length) {
228
+ modules.forEach((module, j) => {
229
+ const item = getConvertedFlowModule(module, items, undefined, loopDepth, j + 1 == modules?.length, modules);
212
230
  item && items.push(item);
213
231
  });
214
232
  }
215
- items.length && branch.items.push(items);
233
+ items.length && bitems.push(items);
216
234
  });
217
- 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
+ };
218
241
  }
219
242
  function flattenNestedNodes(nestedNodes, nodes = []) {
220
243
  const array = nodes;
@@ -230,28 +253,40 @@ function flattenNestedNodes(nestedNodes, nodes = []) {
230
253
  node.items.forEach((item) => {
231
254
  flattenNestedNodes(item, array);
232
255
  });
256
+ array.push(node.nodeEnd);
233
257
  }
234
258
  });
235
259
  return array;
236
260
  }
237
261
  function layoutNodes(nodes) {
238
- const stratify = dagStratify().id(({ id }) => numberToChars(id));
262
+ const stratify = dagStratify().id(({ id }) => id);
239
263
  const dag = stratify(nodes);
240
- const layout = sugiyama()
241
- .decross(decrossOpt())
242
- .coord(coordCenter())
243
- .nodeSize(() => [NODE.width + NODE.gap.horizontal, NODE.height + NODE.gap.vertical]);
244
- 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
+ }
245
278
  return {
246
279
  nodes: dag.descendants().map((des) => ({
247
280
  ...des.data,
248
281
  id: des.data.id,
249
282
  position: {
250
- 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,
251
286
  y: des.y || 0
252
287
  }
253
288
  })),
254
- height: Math.max(boxSize.height + NODE.height, minHeight)
289
+ height: boxSize.height + NODE.height
255
290
  };
256
291
  }
257
292
  function createEdges(nodes) {
@@ -259,108 +294,156 @@ function createEdges(nodes) {
259
294
  nodes.forEach((node) => {
260
295
  node.parentIds.forEach((pid, i) => {
261
296
  // skip virtual nodes such as collect result
262
- 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])) {
263
301
  edges.push({
264
302
  id: `e-${pid}-${node.id}`,
265
- source: charsToNumber(pid),
303
+ source: pid,
266
304
  target: errorHandlers[pid],
267
305
  labelBgColor: 'white',
268
- arrow: true,
306
+ arrow: false,
269
307
  animate: false,
270
- noHandle: false,
271
- label: node.edgeLabel
272
- // type: 'smoothstep'
308
+ noHandle: true,
309
+ label: node.edgeLabel,
310
+ type: 'bezier'
273
311
  });
274
312
  edges.push({
275
313
  id: `e-${pid}-${node.id}`,
276
314
  source: errorHandlers[pid],
277
315
  target: node.id,
278
316
  labelBgColor: 'white',
279
- arrow: true,
317
+ arrow: false,
280
318
  animate: false,
281
- noHandle: false,
282
- label: node.edgeLabel
283
- // type: 'smoothstep'
319
+ noHandle: true,
320
+ label: node.edgeLabel,
321
+ type: 'bezier'
284
322
  });
285
323
  }
286
324
  else {
287
325
  edges.push({
288
326
  id: `e-${pid}-${node.id}`,
289
- source: charsToNumber(pid),
327
+ source: pid,
290
328
  target: node.id,
291
329
  labelBgColor: 'white',
292
- arrow: true,
330
+ arrow: false,
293
331
  animate: false,
294
- noHandle: false,
295
- label: node.edgeLabel
296
- // type: 'smoothstep'
332
+ noHandle: true,
333
+ label: node.edgeLabel,
334
+ edgeColor: '#999',
335
+ type: 'bezier'
297
336
  });
298
337
  }
299
338
  });
300
339
  });
301
340
  return edges;
302
341
  }
303
- function createVirtualNode(parentIds, label, edgesLabel, offset) {
342
+ function createVirtualNode(parentIds, label, modules, whereInsert, edgeLabel, offset, loopDepth, index, selectable, deleteBranch, mid = undefined) {
343
+ const id = -idGenerator.next().value - 2 + (offset ?? 0);
304
344
  return {
305
- id: -idGenerator.next().value - 1 + (offset ?? 0),
345
+ type: 'node',
346
+ id: id.toString(),
306
347
  position: { x: -1, y: -1 },
307
348
  data: {
308
- html: `
309
- <div class="w-full max-h-full text-center ellipsize-multi-line text-2xs [-webkit-line-clamp:2] px-1">
310
- ${label}
311
- </div>
312
- `
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
+ }
313
383
  },
314
384
  width: NODE.width,
315
385
  height: NODE.height,
316
- borderColor: selectedNode == label ? 'black' : '#999',
317
- bgColor: selectedNode == label ? '#f5f5f5' : '#d4e4ff',
386
+ borderColor: $selectedId == label ? 'black' : '#999',
387
+ sourcePosition: 'bottom',
388
+ targetPosition: 'top',
318
389
  parentIds,
319
- clickCallback: (node) => {
320
- if (!notSelectable) {
321
- selectedNode = label;
322
- }
323
- dispatch('click', label);
324
- }
390
+ edgeLabel,
391
+ loopDepth
325
392
  };
326
393
  }
327
394
  function createErrorHandler(mod, parent_module) {
328
- const nId = -idGenerator.next().value - 1 + 1100;
395
+ const nId = (-idGenerator.next().value - 1 + 1100).toString();
329
396
  parent_module && (errorHandlers[parent_module] = nId);
397
+ let label = 'Error handler';
330
398
  return {
399
+ type: 'node',
331
400
  id: nId,
332
401
  position: { x: -1, y: -1 },
333
402
  data: {
334
- html: `
335
- <div class="w-full flex justify-between items-center px-1">
336
- <div class="text-left ellipsize text-2xs truncate">
337
- Error Handler
338
- </div>
339
- <div class="flex items-center">
340
- <span class="center-center font-semibold bg-indigo-100 text-indigo-800 rounded px-1 pb-[2px] ml-[2px]">
341
- ${mod.id}
342
- </span>
343
- </div>
344
- </div>
345
- `
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
+ }
346
423
  },
347
424
  width: NODE.width,
348
425
  height: NODE.height,
349
- bgColor: selectedNode == mod.id ? '#f5f5f5' : getStateColor(flowModuleStates?.[mod.id]?.type),
350
- borderColor: selectedNode == mod.id ? 'black' : '#999',
426
+ sourcePosition: 'bottom',
427
+ targetPosition: 'top',
351
428
  parentIds: parent_module ? [parent_module] : [],
352
- clickCallback: (node) => {
353
- if (!notSelectable) {
354
- selectedNode = mod.id;
355
- }
356
- dispatch('click', mod);
357
- }
429
+ loopDepth: 0
358
430
  };
359
431
  }
360
432
  </script>
361
433
 
362
434
  <div bind:clientWidth={width} class="w-full h-full overflow-hidden relative">
363
435
  {#if width && height}
364
- <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
+ />
365
448
  {/if}
366
449
  </div>
@@ -1,16 +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: {
7
+ success?: boolean | undefined;
6
8
  modules?: FlowModule[] | undefined;
7
9
  failureModule?: FlowModule | undefined;
8
10
  minHeight?: number | undefined;
11
+ maxHeight?: number | undefined;
9
12
  notSelectable?: boolean | undefined;
10
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;
11
20
  };
12
21
  events: {
13
- 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>;
14
28
  } & {
15
29
  [evt: string]: CustomEvent<any>;
16
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;