windmill-components 1.70.0 → 1.77.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 (441) hide show
  1. package/assets/app.css +12 -1
  2. package/components/AppConnect.svelte +4 -3
  3. package/components/DisplayResult.svelte +28 -10
  4. package/components/Dropdown.svelte +14 -4
  5. package/components/FieldHeader.svelte +12 -8
  6. package/components/FlowBuilder.svelte +107 -39
  7. package/components/FlowBuilder.svelte.d.ts +5 -0
  8. package/components/FlowGraphViewer.svelte +6 -5
  9. package/components/FlowJobResult.svelte +3 -3
  10. package/components/FlowPreviewContent.svelte +3 -8
  11. package/components/FlowStatusViewer.svelte +21 -8
  12. package/components/FolderUsageInfo.svelte +16 -6
  13. package/components/FolderUsageInfo.svelte.d.ts +2 -0
  14. package/components/GroupEditor.svelte +8 -0
  15. package/components/InputTransformForm.svelte +13 -20
  16. package/components/InputTransformSchemaForm.svelte +103 -0
  17. package/components/InputTransformSchemaForm.svelte.d.ts +24 -0
  18. package/components/LogViewer.svelte +1 -1
  19. package/components/ModulePreview.svelte +3 -2
  20. package/components/Multiselect.svelte +1 -1
  21. package/components/PageHeader.svelte +1 -1
  22. package/components/Path.svelte +35 -12
  23. package/components/Popover.svelte +2 -13
  24. package/components/ResourcePicker.svelte +33 -14
  25. package/components/RunChart.svelte +24 -5
  26. package/components/RunForm.svelte +5 -6
  27. package/components/RunForm.svelte.d.ts +1 -0
  28. package/components/SchemaForm.svelte +59 -57
  29. package/components/SchemaForm.svelte.d.ts +0 -5
  30. package/components/ScriptBuilder.svelte +151 -135
  31. package/components/ScriptPicker.svelte +3 -0
  32. package/components/SettingSection.svelte +44 -0
  33. package/components/SettingSection.svelte.d.ts +21 -0
  34. package/components/SimpleEditor.svelte +4 -1
  35. package/components/SimpleEditor.svelte.d.ts +2 -0
  36. package/components/Slider.svelte +6 -1
  37. package/components/Slider.svelte.d.ts +1 -0
  38. package/components/TemplateEditor.svelte +1 -1
  39. package/components/TestJobLoader.svelte +2 -2
  40. package/components/Toggle.svelte +17 -4
  41. package/components/Toggle.svelte.d.ts +2 -0
  42. package/components/Tooltip.svelte +4 -2
  43. package/components/UserSettings.svelte +2 -0
  44. package/components/WhitelistIp.svelte +1 -3
  45. package/components/apps/components/buttons/AppButton.svelte +45 -23
  46. package/components/apps/components/buttons/AppButton.svelte.d.ts +2 -0
  47. package/components/apps/components/buttons/AppForm.svelte +18 -12
  48. package/components/apps/components/buttons/AppForm.svelte.d.ts +3 -0
  49. package/components/apps/components/buttons/AppFormButton.svelte +14 -10
  50. package/components/apps/components/buttons/AppFormButton.svelte.d.ts +3 -0
  51. package/components/apps/components/display/AppBarChart.svelte +15 -7
  52. package/components/apps/components/display/AppBarChart.svelte.d.ts +3 -0
  53. package/components/apps/components/display/AppDisplayComponent.svelte +17 -12
  54. package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +1 -0
  55. package/components/apps/components/display/AppHtml.svelte +18 -4
  56. package/components/apps/components/display/AppHtml.svelte.d.ts +3 -0
  57. package/components/apps/components/display/AppIcon.svelte +20 -8
  58. package/components/apps/components/display/AppIcon.svelte.d.ts +3 -0
  59. package/components/apps/components/display/AppImage.svelte +17 -10
  60. package/components/apps/components/display/AppImage.svelte.d.ts +3 -0
  61. package/components/apps/components/display/AppMap.svelte +214 -0
  62. package/components/apps/components/display/AppMap.svelte.d.ts +23 -0
  63. package/components/apps/components/display/AppPdf.svelte +304 -0
  64. package/components/apps/components/display/AppPdf.svelte.d.ts +24 -0
  65. package/components/apps/components/display/AppPieChart.svelte +15 -7
  66. package/components/apps/components/display/AppPieChart.svelte.d.ts +3 -0
  67. package/components/apps/components/display/AppScatterChart.svelte +12 -4
  68. package/components/apps/components/display/AppScatterChart.svelte.d.ts +3 -0
  69. package/components/apps/components/display/AppText.svelte +38 -32
  70. package/components/apps/components/display/AppText.svelte.d.ts +1 -0
  71. package/components/apps/components/display/AppTimeseries.svelte +12 -4
  72. package/components/apps/components/display/AppTimeseries.svelte.d.ts +3 -0
  73. package/components/apps/components/display/PlotlyHtml.svelte +8 -14
  74. package/components/apps/components/display/PlotlyHtml.svelte.d.ts +1 -1
  75. package/components/apps/components/display/VegaLiteHtml.svelte +3 -8
  76. package/components/apps/components/display/VegaLiteHtml.svelte.d.ts +1 -0
  77. package/components/apps/components/display/index.d.ts +3 -0
  78. package/components/apps/components/display/index.js +3 -0
  79. package/components/apps/components/display/table/AppAggridTable.svelte +20 -8
  80. package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -0
  81. package/components/apps/components/display/table/AppTable.svelte +69 -21
  82. package/components/apps/components/display/table/AppTable.svelte.d.ts +3 -1
  83. package/components/apps/components/display/table/AppTableFooter.svelte +8 -1
  84. package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +2 -0
  85. package/components/apps/components/helpers/AlignWrapper.svelte +13 -7
  86. package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +3 -1
  87. package/components/apps/components/helpers/HiddenComponent.svelte +5 -1
  88. package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +1 -0
  89. package/components/apps/components/helpers/InputValue.svelte +58 -52
  90. package/components/apps/components/helpers/InputValue.svelte.d.ts +4 -3
  91. package/components/apps/components/helpers/NonRunnableComponent.svelte +18 -3
  92. package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -0
  93. package/components/apps/components/helpers/RefreshButton.svelte +3 -4
  94. package/components/apps/components/helpers/ResizeWrapper.svelte +24 -0
  95. package/components/apps/components/helpers/ResizeWrapper.svelte.d.ts +19 -0
  96. package/components/apps/components/helpers/RunnableComponent.svelte +126 -91
  97. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +5 -1
  98. package/components/apps/components/helpers/RunnableWrapper.svelte +11 -5
  99. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +4 -1
  100. package/components/apps/components/helpers/eval.d.ts +5 -0
  101. package/components/apps/components/helpers/eval.js +57 -0
  102. package/components/apps/components/inputs/AppCheckbox.svelte +8 -2
  103. package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +3 -0
  104. package/components/apps/components/inputs/AppDateInput.svelte +25 -18
  105. package/components/apps/components/inputs/AppDateInput.svelte.d.ts +6 -1
  106. package/components/apps/components/inputs/AppFileInput.svelte +22 -14
  107. package/components/apps/components/inputs/AppFileInput.svelte.d.ts +3 -0
  108. package/components/apps/components/inputs/AppMultiSelect.svelte +82 -0
  109. package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +27 -0
  110. package/components/apps/components/inputs/AppNumberInput.svelte +20 -16
  111. package/components/apps/components/inputs/AppNumberInput.svelte.d.ts +5 -0
  112. package/components/apps/components/inputs/AppRangeInput.svelte +55 -14
  113. package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +3 -0
  114. package/components/apps/components/inputs/AppSelect.svelte +58 -21
  115. package/components/apps/components/inputs/AppSelect.svelte.d.ts +3 -0
  116. package/components/apps/components/inputs/AppSliderInputs.svelte +41 -9
  117. package/components/apps/components/inputs/AppSliderInputs.svelte.d.ts +3 -0
  118. package/components/apps/components/inputs/AppTextInput.svelte +53 -19
  119. package/components/apps/components/inputs/AppTextInput.svelte.d.ts +6 -0
  120. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +13 -3
  121. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +3 -0
  122. package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -0
  123. package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +1 -0
  124. package/components/apps/components/layout/AppContainer.svelte +20 -17
  125. package/components/apps/components/layout/AppContainer.svelte.d.ts +3 -0
  126. package/components/apps/components/layout/AppDivider.svelte +24 -4
  127. package/components/apps/components/layout/AppDivider.svelte.d.ts +3 -1
  128. package/components/apps/components/layout/AppDrawer.svelte +86 -0
  129. package/components/apps/components/layout/AppDrawer.svelte.d.ts +24 -0
  130. package/components/apps/components/layout/AppSplitpanes.svelte +83 -0
  131. package/components/apps/components/layout/AppSplitpanes.svelte.d.ts +26 -0
  132. package/components/apps/components/layout/AppTabs.svelte +112 -40
  133. package/components/apps/components/layout/AppTabs.svelte.d.ts +4 -0
  134. package/components/apps/components/layout/index.d.ts +2 -0
  135. package/components/apps/components/layout/index.js +2 -0
  136. package/components/apps/editor/AppEditor.svelte +201 -132
  137. package/components/apps/editor/AppEditor.svelte.d.ts +3 -1
  138. package/components/apps/editor/AppEditorHeader.svelte +149 -66
  139. package/components/apps/editor/AppInputs.svelte +3 -3
  140. package/components/apps/editor/AppPreview.svelte +21 -7
  141. package/components/apps/editor/ComponentHeader.svelte +17 -4
  142. package/components/apps/editor/ComponentHeader.svelte.d.ts +2 -0
  143. package/components/apps/editor/GridEditor.svelte +86 -70
  144. package/components/apps/editor/GridPanel.svelte +29 -0
  145. package/components/apps/editor/GridPanel.svelte.d.ts +18 -0
  146. package/components/apps/editor/RecomputeAllComponents.svelte +14 -6
  147. package/components/apps/editor/SettingsPanel.svelte +30 -27
  148. package/components/apps/editor/SubGridEditor.svelte +82 -50
  149. package/components/apps/editor/SubGridEditor.svelte.d.ts +8 -4
  150. package/components/apps/editor/appUtils.d.ts +22 -3
  151. package/components/apps/editor/appUtils.js +221 -47
  152. package/components/apps/editor/component/Component.svelte +281 -61
  153. package/components/apps/editor/component/Component.svelte.d.ts +3 -1
  154. package/components/apps/editor/component/ComponentNavigation.svelte +170 -0
  155. package/components/apps/editor/component/ComponentNavigation.svelte.d.ts +14 -0
  156. package/components/apps/editor/component/components.d.ts +15 -3
  157. package/components/apps/editor/component/components.js +409 -54
  158. package/components/apps/editor/component/default-codes.js +6 -6
  159. package/components/apps/editor/component/sets.js +11 -3
  160. package/components/apps/editor/componentsPanel/ComponentList.svelte +72 -29
  161. package/components/apps/editor/componentsPanel/CssProperty.svelte +59 -23
  162. package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +2 -1
  163. package/components/apps/editor/componentsPanel/CssSettings.svelte +56 -9
  164. package/components/apps/editor/componentsPanel/ListItem.svelte +23 -12
  165. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +2 -0
  166. package/components/apps/editor/componentsPanel/componentStaticValues.js +15 -2
  167. package/components/apps/editor/contextPanel/ComponentOutput.svelte +77 -0
  168. package/components/apps/editor/contextPanel/ComponentOutput.svelte.d.ts +21 -0
  169. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +10 -6
  170. package/components/apps/editor/contextPanel/ContextPanel.svelte +81 -91
  171. package/components/apps/editor/contextPanel/SubGridOutput.svelte +71 -0
  172. package/components/apps/editor/contextPanel/SubGridOutput.svelte.d.ts +19 -0
  173. package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte +38 -0
  174. package/components/apps/editor/contextPanel/components/BackgroundScriptOutput.svelte.d.ts +19 -0
  175. package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte +10 -0
  176. package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte.d.ts +16 -0
  177. package/components/apps/editor/contextPanel/components/MinMaxButton.svelte +25 -0
  178. package/components/apps/editor/contextPanel/components/MinMaxButton.svelte.d.ts +16 -0
  179. package/components/apps/editor/contextPanel/components/OutputHeader.svelte +78 -0
  180. package/components/apps/editor/contextPanel/components/OutputHeader.svelte.d.ts +26 -0
  181. package/components/apps/editor/contextPanel/components/TableActionOutput.svelte +19 -0
  182. package/components/apps/editor/contextPanel/components/TableActionOutput.svelte.d.ts +18 -0
  183. package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte +14 -0
  184. package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte.d.ts +18 -0
  185. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +55 -13
  186. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -0
  187. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +126 -62
  188. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +5 -0
  189. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +1 -1
  190. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +11 -5
  191. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -0
  192. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +26 -17
  193. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +95 -85
  194. package/components/apps/editor/inlineScriptsPanel/utils.d.ts +5 -9
  195. package/components/apps/editor/inlineScriptsPanel/utils.js +19 -8
  196. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +10 -9
  197. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +21 -12
  198. package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +1 -1
  199. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +119 -79
  200. package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +1 -0
  201. package/components/apps/editor/settingsPanel/GridPane.svelte +75 -0
  202. package/components/apps/editor/settingsPanel/GridPane.svelte.d.ts +20 -0
  203. package/components/apps/editor/settingsPanel/GridTab.svelte +9 -17
  204. package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +2 -0
  205. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -1
  206. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +1 -1
  207. package/components/apps/editor/settingsPanel/Recompute.svelte +2 -1
  208. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +7 -1
  209. package/components/apps/editor/settingsPanel/TableActions.svelte +30 -2
  210. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +2 -2
  211. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +48 -0
  212. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte.d.ts +19 -0
  213. package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +2 -8
  214. package/components/apps/editor/settingsPanel/inputEditor/EvalInputEditor.svelte +2 -2
  215. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +77 -41
  216. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +2 -0
  217. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +3 -3
  218. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +4 -1
  219. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +54 -6
  220. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +1 -0
  221. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +7 -9
  222. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +1 -1
  223. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +1 -0
  224. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte.d.ts +1 -0
  225. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +1 -1
  226. package/components/apps/inputType.d.ts +6 -5
  227. package/components/apps/rx.d.ts +6 -4
  228. package/components/apps/rx.js +36 -15
  229. package/components/apps/store.d.ts +6 -1
  230. package/components/apps/svelte-grid/Grid.svelte +171 -0
  231. package/components/apps/svelte-grid/Grid.svelte.d.ts +47 -0
  232. package/components/apps/svelte-grid/LICENSE +23 -0
  233. package/components/apps/svelte-grid/MoveResize.svelte +328 -0
  234. package/components/apps/svelte-grid/MoveResize.svelte.d.ts +46 -0
  235. package/components/apps/svelte-grid/types.d.ts +25 -0
  236. package/components/apps/svelte-grid/utils/container.d.ts +1 -0
  237. package/components/apps/svelte-grid/utils/container.js +4 -0
  238. package/components/apps/svelte-grid/utils/helper.d.ts +14 -0
  239. package/components/apps/svelte-grid/utils/helper.js +36 -0
  240. package/components/apps/svelte-grid/utils/item.d.ts +14 -0
  241. package/components/apps/svelte-grid/utils/item.js +192 -0
  242. package/components/apps/svelte-grid/utils/matrix.d.ts +6 -0
  243. package/components/apps/svelte-grid/utils/matrix.js +53 -0
  244. package/components/apps/svelte-grid/utils/other.d.ts +3 -0
  245. package/components/apps/svelte-grid/utils/other.js +30 -0
  246. package/components/apps/types.d.ts +21 -8
  247. package/components/apps/utils.d.ts +3 -3
  248. package/components/apps/utils.js +34 -56
  249. package/components/common/CloseButton.svelte +18 -0
  250. package/components/common/CloseButton.svelte.d.ts +27 -0
  251. package/components/common/badge/Badge.svelte +6 -1
  252. package/components/common/badge/Badge.svelte.d.ts +1 -0
  253. package/components/common/button/ButtonPopup.svelte +2 -0
  254. package/components/common/button/ButtonPopup.svelte.d.ts +1 -0
  255. package/components/common/button/UndoRedo.svelte +32 -0
  256. package/components/common/button/UndoRedo.svelte.d.ts +20 -0
  257. package/components/common/drawer/Drawer.svelte +10 -4
  258. package/components/common/drawer/Drawer.svelte.d.ts +3 -1
  259. package/components/common/drawer/DrawerContent.svelte +2 -7
  260. package/components/common/fileInput/FileInput.svelte +47 -21
  261. package/components/common/fileInput/FileInput.svelte.d.ts +3 -1
  262. package/components/common/fileInput/model.d.ts +1 -0
  263. package/components/common/fileInput/model.js +1 -0
  264. package/components/common/index.d.ts +1 -0
  265. package/components/common/index.js +1 -0
  266. package/components/common/languageIcons/JavaScript.svelte +11 -0
  267. package/components/common/languageIcons/JavaScript.svelte.d.ts +25 -0
  268. package/components/common/languageIcons/LanguageIcon.svelte +3 -1
  269. package/components/common/languageIcons/LanguageIcon.svelte.d.ts +1 -1
  270. package/components/common/menu/Menu.svelte +3 -2
  271. package/components/common/menu/Menu.svelte.d.ts +2 -1
  272. package/components/common/modal/Modal.svelte +9 -4
  273. package/components/common/modal/Modal.svelte.d.ts +2 -0
  274. package/components/common/popup/Popup.svelte +2 -1
  275. package/components/common/popup/Popup.svelte.d.ts +9 -0
  276. package/components/common/table/AppRow.svelte +14 -8
  277. package/components/common/table/AppRow.svelte.d.ts +1 -0
  278. package/components/common/table/FlowRow.svelte +22 -12
  279. package/components/common/table/FlowRow.svelte.d.ts +1 -0
  280. package/components/common/table/ScriptRow.svelte +43 -14
  281. package/components/common/table/ScriptRow.svelte.d.ts +1 -0
  282. package/components/common/tabs/Tab.svelte +13 -5
  283. package/components/common/tabs/Tab.svelte.d.ts +6 -1
  284. package/components/common/tabs/Tabs.svelte +8 -6
  285. package/components/common/tabs/Tabs.svelte.d.ts +3 -1
  286. package/components/flows/FlowEditor.svelte +6 -4
  287. package/components/flows/common/FlowCardHeader.svelte +4 -1
  288. package/components/flows/content/BranchPredicateEditor.svelte +3 -4
  289. package/components/flows/content/CapturePayload.svelte +1 -2
  290. package/components/flows/content/FlowBranchesAllWrapper.svelte +1 -1
  291. package/components/flows/content/FlowConstants.svelte +7 -13
  292. package/components/flows/content/FlowEditorPanel.svelte +4 -3
  293. package/components/flows/content/FlowFailureModule.svelte +2 -1
  294. package/components/flows/content/FlowInput.svelte +4 -2
  295. package/components/flows/content/FlowLoop.svelte +3 -4
  296. package/components/flows/content/FlowModuleComponent.svelte +23 -11
  297. package/components/flows/content/FlowModuleEarlyStop.svelte +3 -1
  298. package/components/flows/content/FlowModuleHeader.svelte +26 -3
  299. package/components/flows/content/FlowModuleHeader.svelte.d.ts +1 -0
  300. package/components/flows/content/FlowModuleSleep.svelte +2 -2
  301. package/components/flows/content/FlowModuleWrapper.svelte +2 -8
  302. package/components/flows/content/FlowSchedules.svelte +1 -2
  303. package/components/flows/content/FlowSettings.svelte +17 -37
  304. package/components/flows/content/ScriptEditorDrawer.svelte +98 -0
  305. package/components/flows/content/ScriptEditorDrawer.svelte.d.ts +19 -0
  306. package/components/flows/flowState.d.ts +2 -3
  307. package/components/flows/flowState.js +1 -4
  308. package/components/flows/flowStateUtils.d.ts +7 -6
  309. package/components/flows/flowStateUtils.js +5 -9
  310. package/components/flows/flowStore.d.ts +5 -4
  311. package/components/flows/flowStore.js +5 -17
  312. package/components/flows/header/FlowImportExportMenu.svelte +2 -1
  313. package/components/flows/map/FlowConstantsItem.svelte +2 -2
  314. package/components/flows/map/FlowErrorHandlerItem.svelte +12 -13
  315. package/components/flows/map/FlowInputsItem.svelte +2 -3
  316. package/components/flows/map/FlowModuleSchemaItem.svelte +88 -91
  317. package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +3 -3
  318. package/components/flows/map/FlowModuleSchemaMap.svelte +164 -138
  319. package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -2
  320. package/components/flows/map/FlowSettingsItem.svelte +5 -4
  321. package/components/flows/map/InsertModuleButton.svelte +12 -10
  322. package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -0
  323. package/components/flows/map/MapItem.svelte +176 -103
  324. package/components/flows/map/MapItem.svelte.d.ts +20 -2
  325. package/components/flows/map/VirtualItem.svelte +129 -0
  326. package/components/flows/map/VirtualItem.svelte.d.ts +44 -0
  327. package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
  328. package/components/flows/pickers/WorkspaceScriptPicker.svelte +1 -1
  329. package/components/flows/previousResults.d.ts +1 -1
  330. package/components/flows/previousResults.js +32 -17
  331. package/components/flows/types.d.ts +13 -1
  332. package/components/flows/utils.js +1 -1
  333. package/components/graph/FlowGraph.svelte +227 -167
  334. package/components/graph/FlowGraph.svelte.d.ts +14 -1
  335. package/components/graph/model.d.ts +6 -36
  336. package/components/graph/model.js +1 -1
  337. package/components/graph/svelvet/LICENSE +21 -0
  338. package/components/graph/svelvet/collapsible/controllers/util.d.ts +15 -0
  339. package/components/graph/svelvet/collapsible/controllers/util.js +144 -0
  340. package/components/graph/svelvet/collapsible/models/Collapsible.d.ts +17 -0
  341. package/components/graph/svelvet/collapsible/models/Collapsible.js +25 -0
  342. package/components/graph/svelvet/collapsible/types/types.d.ts +8 -0
  343. package/components/graph/svelvet/collapsible/types/types.js +1 -0
  344. package/components/graph/svelvet/container/README.md +7 -0
  345. package/components/graph/svelvet/container/controllers/middleware.d.ts +18 -0
  346. package/components/graph/svelvet/container/controllers/middleware.js +101 -0
  347. package/components/graph/svelvet/container/views/GraphView.svelte +252 -0
  348. package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +25 -0
  349. package/components/graph/svelvet/container/views/Svelvet.svelte +131 -0
  350. package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +41 -0
  351. package/components/graph/svelvet/customCss/controllers/getCss.d.ts +2 -0
  352. package/components/graph/svelvet/customCss/controllers/getCss.js +57 -0
  353. package/components/graph/svelvet/d3/controllers/d3.d.ts +5 -0
  354. package/components/graph/svelvet/d3/controllers/d3.js +59 -0
  355. package/components/graph/svelvet/edges/controllers/anchorCbDev.d.ts +4 -0
  356. package/components/graph/svelvet/edges/controllers/anchorCbDev.js +92 -0
  357. package/components/graph/svelvet/edges/controllers/anchorCbUser.d.ts +57 -0
  358. package/components/graph/svelvet/edges/controllers/anchorCbUser.js +73 -0
  359. package/components/graph/svelvet/edges/controllers/util.d.ts +37 -0
  360. package/components/graph/svelvet/edges/controllers/util.js +72 -0
  361. package/components/graph/svelvet/edges/models/Anchor.d.ts +48 -0
  362. package/components/graph/svelvet/edges/models/Anchor.js +122 -0
  363. package/components/graph/svelvet/edges/models/Edge.d.ts +47 -0
  364. package/components/graph/svelvet/edges/models/Edge.js +107 -0
  365. package/components/graph/svelvet/edges/types/types.d.ts +18 -0
  366. package/components/graph/svelvet/edges/types/types.js +1 -0
  367. package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte +105 -0
  368. package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte.d.ts +18 -0
  369. package/components/graph/svelvet/edges/views/Edges/EdgeAnchor.svelte +12 -0
  370. package/components/graph/svelvet/edges/views/Edges/EdgeAnchor.svelte.d.ts +17 -0
  371. package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +43 -0
  372. package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte.d.ts +17 -0
  373. package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +137 -0
  374. package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte.d.ts +17 -0
  375. package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte +176 -0
  376. package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte.d.ts +60 -0
  377. package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte +8 -0
  378. package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte.d.ts +25 -0
  379. package/components/graph/svelvet/edges/views/Edges/types.d.ts +52 -0
  380. package/components/graph/svelvet/edges/views/Edges/types.js +1 -0
  381. package/components/graph/svelvet/edges/views/Edges/utils.d.ts +33 -0
  382. package/components/graph/svelvet/edges/views/Edges/utils.js +31 -0
  383. package/components/graph/svelvet/editEdges/views/EditEdge.svelte +151 -0
  384. package/components/graph/svelvet/editEdges/views/EditEdge.svelte.d.ts +20 -0
  385. package/components/graph/svelvet/nodes/controllers/util.d.ts +9 -0
  386. package/components/graph/svelvet/nodes/controllers/util.js +13 -0
  387. package/components/graph/svelvet/nodes/models/Node.d.ts +78 -0
  388. package/components/graph/svelvet/nodes/models/Node.js +195 -0
  389. package/components/graph/svelvet/nodes/views/EditNode.svelte +147 -0
  390. package/components/graph/svelvet/nodes/views/EditNode.svelte.d.ts +33 -0
  391. package/components/graph/svelvet/nodes/views/Node.svelte +85 -0
  392. package/components/graph/svelvet/nodes/views/Node.svelte.d.ts +22 -0
  393. package/components/graph/svelvet/resizableNodes/controllers/util.d.ts +11 -0
  394. package/components/graph/svelvet/resizableNodes/controllers/util.js +24 -0
  395. package/components/graph/svelvet/resizableNodes/models/ResizeNode.d.ts +33 -0
  396. package/components/graph/svelvet/resizableNodes/models/ResizeNode.js +71 -0
  397. package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte +81 -0
  398. package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte.d.ts +20 -0
  399. package/components/graph/svelvet/store/controllers/storeApi.d.ts +32 -0
  400. package/components/graph/svelvet/store/controllers/storeApi.js +111 -0
  401. package/components/graph/svelvet/store/controllers/userApi.d.ts +3 -0
  402. package/components/graph/svelvet/store/controllers/userApi.js +18 -0
  403. package/components/graph/svelvet/store/controllers/util.d.ts +31 -0
  404. package/components/graph/svelvet/store/controllers/util.js +180 -0
  405. package/components/graph/svelvet/store/models/store.d.ts +12 -0
  406. package/components/graph/svelvet/store/models/store.js +9 -0
  407. package/components/graph/svelvet/store/types/types.d.ts +134 -0
  408. package/components/graph/svelvet/store/types/types.js +1 -0
  409. package/components/graph/svelvet/types/README.md +3 -0
  410. package/components/graph/svelvet/types/index.d.ts +2 -0
  411. package/components/graph/svelvet/types/index.js +1 -0
  412. package/components/graph/svelvet/types/types.d.ts +49 -0
  413. package/components/graph/svelvet/types/types.js +18 -0
  414. package/components/graph/util.js +2 -2
  415. package/components/home/ItemsList.svelte +53 -5
  416. package/components/home/ItemsList.svelte.d.ts +1 -0
  417. package/components/home/ListFilters.svelte +7 -2
  418. package/components/jobs/JobDetail.svelte +12 -1
  419. package/components/propertyPicker/ObjectViewer.svelte +6 -4
  420. package/components/sidebar/SidebarContent.svelte +2 -2
  421. package/consts.d.ts +1 -0
  422. package/consts.js +1 -0
  423. package/defaults.d.ts +4 -0
  424. package/defaults.js +4 -0
  425. package/history.d.ts +9 -0
  426. package/history.js +63 -0
  427. package/package.json +87 -9
  428. package/script_helpers.d.ts +1 -1
  429. package/script_helpers.js +1 -0
  430. package/scripts.d.ts +1 -1
  431. package/scripts.js +8 -1
  432. package/utils.d.ts +9 -4
  433. package/utils.js +43 -8
  434. package/components/apps/editor/TablePanel.svelte +0 -19
  435. package/components/apps/editor/TablePanel.svelte.d.ts +0 -17
  436. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +0 -85
  437. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte.d.ts +0 -18
  438. package/components/flows/map/FlowBranchAllMap.svelte +0 -100
  439. package/components/flows/map/FlowBranchAllMap.svelte.d.ts +0 -17
  440. package/components/flows/map/FlowBranchOneMap.svelte +0 -124
  441. package/components/flows/map/FlowBranchOneMap.svelte.d.ts +0 -17
@@ -3,10 +3,7 @@ import Popover from '../../Popover.svelte';
3
3
  import { classNames } from '../../../utils';
4
4
  import { createEventDispatcher } from 'svelte';
5
5
  import { fade } from 'svelte/transition';
6
- import { Bed, PhoneIncoming, Repeat, Square, X } from 'lucide-svelte';
7
- export let isFirst = false;
8
- export let isLast = false;
9
- export let hasLine = true;
6
+ import { Bed, Move, PhoneIncoming, Repeat, Square, X } from 'lucide-svelte';
10
7
  export let selected = false;
11
8
  export let deletable = false;
12
9
  export let retry = false;
@@ -16,105 +13,105 @@ export let sleep = false;
16
13
  export let bold = false;
17
14
  export let id = undefined;
18
15
  export let label;
19
- const margin = isLast ? '' : isFirst ? 'mb-0.5' : 'my-0.5';
16
+ export let modType = undefined;
17
+ export let bgColor = '';
20
18
  const dispatch = createEventDispatcher();
21
19
  </script>
22
20
 
23
21
  <!-- svelte-ignore a11y-click-events-have-key-events -->
24
- <div class="flex relative" on:click>
25
- <div
26
- class={classNames(
27
- 'flex pl-6 ml-0.5',
28
- hasLine ? 'line' : '',
29
- isFirst ? 'justify-center items-start' : 'justify-center items-center'
30
- )}
31
- />
22
+ <div
23
+ class={classNames(
24
+ 'w-full module flex rounded-sm cursor-pointer',
25
+ selected ? 'outline outline-offset-1 outline-2 outline-gray-600' : '',
26
+ 'flex relative'
27
+ )}
28
+ style="width: 275px; height: 34px; background-color: {bgColor};"
29
+ on:click
30
+ >
31
+ <div class="absolute text-sm right-12 -bottom-3 flex flex-row gap-1 z-20">
32
+ {#if retry}
33
+ <Popover notClickable>
34
+ <div
35
+ transition:fade|local={{ duration: 200 }}
36
+ class="center-center rounded border bg-white border-gray-400 text-gray-700 px-1 py-0.5"
37
+ >
38
+ <Repeat size={14} />
39
+ </div>
40
+ <svelte:fragment slot="text">Retries</svelte:fragment>
41
+ </Popover>
42
+ {/if}
43
+ {#if earlyStop}
44
+ <Popover notClickable>
45
+ <div
46
+ transition:fade|local={{ duration: 200 }}
47
+ class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
48
+ >
49
+ <Square size={14} />
50
+ </div>
51
+ <svelte:fragment slot="text">Early stop/break</svelte:fragment>
52
+ </Popover>
53
+ {/if}
54
+ {#if suspend}
55
+ <Popover notClickable>
56
+ <div
57
+ transition:fade|local={{ duration: 200 }}
58
+ class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
59
+ >
60
+ <PhoneIncoming size={14} />
61
+ </div>
62
+ <svelte:fragment slot="text">Suspend</svelte:fragment>
63
+ </Popover>
64
+ {/if}
65
+ {#if sleep}
66
+ <Popover notClickable>
67
+ <div
68
+ transition:fade|local={{ duration: 200 }}
69
+ class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
70
+ >
71
+ <Bed size={14} />
72
+ </div>
73
+ <svelte:fragment slot="text">Sleep</svelte:fragment>
74
+ </Popover>
75
+ {/if}
76
+ </div>
32
77
  <div
33
- class={classNames(
34
- 'w-full flex overflow-hidden rounded-sm cursor-pointer mr-2',
35
- selected ? 'outline outline-offset-1 outline-2 outline-gray-600' : '',
36
- margin
37
- )}
78
+ class="flex gap-1 justify-between items-center w-full overflow-hidden rounded-sm
79
+ border border-gray-400 p-2 text-2xs module"
38
80
  >
39
- <div class="absolute text-sm right-12 -bottom-3 flex flex-row gap-1 z-20">
40
- {#if retry}
41
- <Popover notClickable>
42
- <div
43
- transition:fade={{ duration: 200 }}
44
- class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
45
- >
46
- <Repeat size={14} />
47
- </div>
48
- <svelte:fragment slot="text">Retries</svelte:fragment>
49
- </Popover>
50
- {/if}
51
- {#if earlyStop}
52
- <Popover notClickable>
53
- <div
54
- transition:fade={{ duration: 200 }}
55
- class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
56
- >
57
- <Square size={14} />
58
- </div>
59
- <svelte:fragment slot="text">Early stop/break</svelte:fragment>
60
- </Popover>
61
- {/if}
62
- {#if suspend}
63
- <Popover notClickable>
64
- <div
65
- transition:fade={{ duration: 200 }}
66
- class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
67
- >
68
- <PhoneIncoming size={14} />
69
- </div>
70
- <svelte:fragment slot="text">Suspend</svelte:fragment>
71
- </Popover>
72
- {/if}
73
- {#if sleep}
74
- <Popover notClickable>
75
- <div
76
- transition:fade={{ duration: 200 }}
77
- class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
78
- >
79
- <Bed size={14} />
80
- </div>
81
- <svelte:fragment slot="text">Sleep</svelte:fragment>
82
- </Popover>
81
+ {#if $$slots.icon}
82
+ <slot name="icon" />
83
+ <span class="mr-2" />
84
+ {/if}
85
+ <div class="flex-1 truncate" class:font-bold={bold}>{label}</div>
86
+ <div class="flex items-center space-x-2">
87
+ {#if id}
88
+ <Badge color="indigo">{id}</Badge>
83
89
  {/if}
84
90
  </div>
85
- <div
86
- class="flex justify-between items-center w-full overflow-hidden rounded-sm
87
- border border-gray-400 p-2 bg-white text-2xs module"
88
- >
89
- {#if $$slots.icon}
90
- <slot name="icon" />
91
- <span class="mr-2" />
92
- {/if}
93
- <div class="flex-1 truncate" class:font-bold={bold}>{label}</div>
94
- <div class="flex items-center space-x-2">
95
- {#if id}
96
- <Badge color="indigo">{id}</Badge>
97
- {/if}
98
- {#if deletable}
99
- <button
100
- class="absolute -top-2 right-0 rounded-full h-4 w-4 trash center-center
101
- border-[1.5px] border-gray-700 bg-white duration-150 hover:bg-red-400 hover:text-white
102
- hover:border-red-700 {selected ? '' : '!hidden'}"
103
- on:click|preventDefault|stopPropagation={(event) => dispatch('delete', event)}
104
- >
105
- <X size={12} strokeWidth={2} />
106
- </button>
107
- {/if}
108
- </div>
109
- </div>
110
91
  </div>
92
+ {#if deletable}
93
+ <button
94
+ class="absolute -top-2 -right-2 rounded-full h-4 w-4 trash center-center
95
+ border-[1.5px] border-gray-700 bg-white duration-150 hover:bg-red-400 hover:text-white
96
+ hover:border-red-700 {selected ? '' : '!hidden'}"
97
+ on:click|preventDefault|stopPropagation={(event) =>
98
+ dispatch('delete', { event, id, type: modType })}
99
+ >
100
+ <X size={12} strokeWidth={2} />
101
+ </button>
102
+
103
+ <button
104
+ class="absolute -top-2 right-10 rounded-full h-4 w-4 trash center-center
105
+ border-[1.5px] border-gray-700 bg-white duration-150 hover:bg-blue-400 hover:text-white
106
+ hover:border-blue-700 {selected ? '' : '!hidden'}"
107
+ on:click|preventDefault|stopPropagation={(event) => dispatch('move')}
108
+ >
109
+ <Move size={12} strokeWidth={2} />
110
+ </button>
111
+ {/if}
111
112
  </div>
112
113
 
113
114
  <style>
114
115
  .module:hover .trash {
115
116
  display: flex !important;
116
- }
117
- .line {
118
- background: repeating-linear-gradient(to bottom, transparent 0 4px, rgb(120, 120, 120) 4px 8px)
119
- 50%/1px 100% no-repeat;
120
117
  }</style>
@@ -1,9 +1,6 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
- isFirst?: boolean | undefined;
5
- isLast?: boolean | undefined;
6
- hasLine?: boolean | undefined;
7
4
  selected?: boolean | undefined;
8
5
  deletable?: boolean | undefined;
9
6
  retry?: boolean | undefined;
@@ -13,10 +10,13 @@ declare const __propDef: {
13
10
  bold?: boolean | undefined;
14
11
  id?: string | undefined;
15
12
  label: string;
13
+ modType?: string | undefined;
14
+ bgColor?: string | undefined;
16
15
  };
17
16
  events: {
18
17
  click: MouseEvent;
19
18
  delete: CustomEvent<any>;
19
+ move: CustomEvent<any>;
20
20
  } & {
21
21
  [evt: string]: CustomEvent<any>;
22
22
  };
@@ -1,156 +1,182 @@
1
1
  <script>import { getContext } from 'svelte';
2
- import { createBranchAll, createBranches, createLoop, deleteFlowStateById, emptyModule, idMutex } from '../flowStateUtils';
3
- import { flowStateStore } from '../flowState';
4
- import FlowErrorHandlerItem from './FlowErrorHandlerItem.svelte';
5
- import RemoveStepConfirmationModal from '../content/RemoveStepConfirmationModal.svelte';
2
+ import { createBranchAll, createBranches, createLoop, deleteFlowStateById, emptyModule } from '../flowStateUtils';
6
3
  import { emptyFlowModuleState } from '../utils';
7
- import MapItem from './MapItem.svelte';
8
4
  import FlowSettingsItem from './FlowSettingsItem.svelte';
9
- import FlowInputsItem from './FlowInputsItem.svelte';
10
- import InsertModuleButton from './InsertModuleButton.svelte';
11
- import { slide } from 'svelte/transition';
12
5
  import FlowConstantsItem from './FlowConstantsItem.svelte';
13
- export let root = false;
6
+ import { dfs } from '../flowStore';
7
+ import { FlowGraph } from '../../graph';
8
+ import FlowErrorHandlerItem from './FlowErrorHandlerItem.svelte';
9
+ import { push } from '../../../history';
14
10
  export let modules;
15
- export let parentType = undefined;
16
- let indexToRemove = undefined;
17
- const { select, selectedId } = getContext('FlowEditorContext');
18
- async function insertNewModuleAtIndex(index, kind) {
19
- await idMutex.runExclusive(async () => {
20
- var module = emptyModule(kind == 'flow');
21
- var state = emptyFlowModuleState();
22
- if (kind == 'forloop') {
23
- ;
24
- [module, state] = await createLoop(module.id);
25
- }
26
- else if (kind == 'branchone') {
27
- ;
28
- [module, state] = await createBranches(module.id);
29
- }
30
- else if (kind == 'branchall') {
31
- ;
32
- [module, state] = await createBranchAll(module.id);
33
- }
34
- const flowModule = module;
35
- if (!modules)
36
- return;
37
- modules.splice(index, 0, flowModule);
38
- modules = modules;
39
- $flowStateStore[flowModule.id] = state;
40
- if (kind == 'trigger') {
41
- flowModule.summary = 'Trigger';
11
+ export let sidebarSize = undefined;
12
+ const { selectedId, moving, history, flowStateStore, flowStore } = getContext('FlowEditorContext');
13
+ async function insertNewModuleAtIndex(modules, index, kind) {
14
+ push(history, $flowStore);
15
+ var module = emptyModule($flowStateStore, kind == 'flow');
16
+ var state = emptyFlowModuleState();
17
+ if (kind == 'forloop') {
18
+ ;
19
+ [module, state] = await createLoop(module.id);
20
+ }
21
+ else if (kind == 'branchone') {
22
+ ;
23
+ [module, state] = await createBranches(module.id);
24
+ }
25
+ else if (kind == 'branchall') {
26
+ ;
27
+ [module, state] = await createBranchAll(module.id);
28
+ }
29
+ $flowStateStore[module.id] = state;
30
+ if (kind == 'trigger') {
31
+ module.summary = 'Trigger';
32
+ }
33
+ else if (kind == 'approval') {
34
+ module.summary = 'Approval';
35
+ }
36
+ else if (kind == 'end') {
37
+ module.summary = 'Terminate flow';
38
+ module.stop_after_if = { skip_if_stopped: false, expr: 'true' };
39
+ }
40
+ if (!modules)
41
+ return [module];
42
+ modules.splice(index, 0, module);
43
+ return modules;
44
+ }
45
+ function removeAtId(modules, id) {
46
+ const index = modules.findIndex((mod) => mod.id == id);
47
+ if (index != -1) {
48
+ const [removed] = modules.splice(index, 1);
49
+ const leaves = dfs([removed], (mod) => mod.id);
50
+ leaves.forEach((leafId) => deleteFlowStateById(leafId, flowStateStore));
51
+ return modules;
52
+ }
53
+ return modules.map((mod) => {
54
+ if (mod.value.type == 'forloopflow') {
55
+ mod.value.modules = removeAtId(mod.value.modules, id);
42
56
  }
43
- else if (kind == 'approval') {
44
- flowModule.summary = 'Approval';
57
+ else if (mod.value.type == 'branchall') {
58
+ mod.value.branches = mod.value.branches.map((branch) => {
59
+ branch.modules = removeAtId(branch.modules, id);
60
+ return branch;
61
+ });
45
62
  }
46
- else if (kind == 'end') {
47
- flowModule.summary = 'Terminate flow';
48
- flowModule.stop_after_if = { skip_if_stopped: false, expr: 'true' };
63
+ else if (mod.value.type == 'branchone') {
64
+ mod.value.branches = mod.value.branches.map((branch) => {
65
+ branch.modules = removeAtId(branch.modules, id);
66
+ return branch;
67
+ });
68
+ mod.value.default = removeAtId(mod.value.default, id);
49
69
  }
50
- select(flowModule.id);
70
+ return mod;
51
71
  });
52
72
  }
53
- function removeAtIndex(index) {
54
- if (!modules)
55
- return;
56
- const [removedModule] = modules.splice(index, 1);
57
- modules = modules;
58
- const leaves = findLeaves(removedModule);
59
- leaves.forEach((leafId) => deleteFlowStateById(leafId));
60
- select('settings-graph');
61
- }
62
- function findLeaves(flowModule) {
63
- const id = flowModule.id;
64
- if (flowModule.value.type === 'forloopflow') {
65
- return [id, ...flowModule.value.modules.map((fm) => findLeaves(fm)).flat()];
73
+ $: sidebarMode == 'graph' ? (sidebarSize = 40) : (sidebarSize = 20);
74
+ let sidebarMode = 'graph';
75
+ let minHeight = 0;
76
+ function selectNextId(id) {
77
+ if (modules) {
78
+ let allIds = dfs(modules, (mod) => mod.id);
79
+ if (allIds.length > 1) {
80
+ const idx = allIds.indexOf(id);
81
+ $selectedId = idx == 0 ? allIds[0] : allIds[idx - 1];
82
+ }
83
+ else {
84
+ $selectedId = 'settings-metadata';
85
+ }
66
86
  }
67
- if (flowModule.value.type === 'branchall') {
68
- return [
69
- id,
70
- ...flowModule.value.branches
71
- .map((branch) => branch.modules.map((mod) => findLeaves(mod)).flat())
72
- .flat()
73
- ];
87
+ }
88
+ async function addBranch(module) {
89
+ push(history, $flowStore);
90
+ if (module.value.type === 'branchone' || module.value.type === 'branchall') {
91
+ module.value.branches.splice(module.value.branches.length, 0, {
92
+ summary: '',
93
+ expr: 'false',
94
+ modules: []
95
+ });
74
96
  }
75
- if (flowModule.value.type === 'branchone') {
76
- return [
77
- id,
78
- ...flowModule.value.branches
79
- .map((branch) => {
80
- return branch.modules.map((mod) => findLeaves(mod)).flat();
81
- })
82
- .flat(),
83
- ...flowModule.value.default.map((mod) => findLeaves(mod)).flat()
84
- ];
97
+ }
98
+ function removeBranch(module, index) {
99
+ push(history, $flowStore);
100
+ if (module.value.type === 'branchone' || module.value.type === 'branchall') {
101
+ const offset = module.value.type === 'branchone' ? 1 : 0;
102
+ if (module.value.branches[index - offset]?.modules) {
103
+ const leaves = dfs(module.value.branches[index - offset].modules, (mod) => mod.id);
104
+ leaves.forEach((leafId) => deleteFlowStateById(leafId, flowStateStore));
105
+ }
106
+ module.value.branches.splice(index - offset, 1);
85
107
  }
86
- return [id];
87
108
  }
88
- $: confirmationModalOpen = indexToRemove !== undefined;
89
109
  </script>
90
110
 
91
- <div class="flex flex-col h-full relative">
92
- {#if root}
93
- <div
94
- class="z-10 sticky inline-flex flex-col gap-2 top-0 bg-gray-50 flex-initial p-2 items-center border-b border-gray-300"
95
- >
96
- <FlowSettingsItem />
97
- <FlowConstantsItem />
98
- </div>
99
- {/if}
100
- <ul class="w-full flex-auto {root ? 'px-2 pb-2 pt-3' : ''} py-1">
101
- {#if root}
102
- <li>
103
- <FlowInputsItem />
104
- </li>
105
- {/if}
111
+ <div class="flex flex-col h-full relative -pt-1">
112
+ <div
113
+ class="z-10 sticky inline-flex flex-col gap-2 top-0 bg-gray-50 flex-initial p-2 items-center border-b border-gray-300"
114
+ >
115
+ <FlowSettingsItem />
116
+ <FlowConstantsItem />
117
+ </div>
106
118
 
107
- {#if modules}
108
- {#each modules as mod, index (mod.id ?? index)}
109
- <div transition:slide|local>
110
- <MapItem
111
- {index}
112
- bind:mod
113
- on:delete={(event) => {
114
- if (event.detail.detail.shiftKey || mod.value.type === 'identity') {
115
- removeAtIndex(index)
116
- } else {
117
- indexToRemove = index
118
- }
119
- }}
120
- on:insert={(e) => {
121
- insertNewModuleAtIndex(index, e.detail)
122
- }}
123
- />
124
- </div>
125
- {/each}
126
- {/if}
127
- {#if !modules || modules[modules?.length - 1]?.summary != 'Terminate flow'}
128
- <InsertModuleButton
129
- stop={!root && parentType == 'branchone'}
130
- trigger={root && modules?.length == 0}
131
- on:new={(e) => insertNewModuleAtIndex(modules?.length ?? 0, e.detail)}
132
- />
133
- {:else}
134
- <div class="my-2" />
135
- {/if}
136
- </ul>
137
- {#if root}
138
- <div class="sticky bottom-0 bg-gray-50 flex-none px-4 py-1 pb-2 border-t">
139
- <FlowErrorHandlerItem />
140
- </div>
141
- {/if}
119
+ <div class="flex-auto grow" bind:clientHeight={minHeight}>
120
+ <FlowGraph
121
+ insertable
122
+ scroll
123
+ {minHeight}
124
+ moving={$moving?.module.id}
125
+ rebuildOnChange={$flowStore}
126
+ maxHeight={minHeight}
127
+ modules={$flowStore.value?.modules}
128
+ {selectedId}
129
+ on:delete={({ detail }) => {
130
+ let e = detail.detail
131
+ push(history, $flowStore)
132
+ selectNextId(e.id)
133
+ removeAtId($flowStore.value.modules, e.id)
134
+ $flowStore = $flowStore
135
+ }}
136
+ on:insert={async ({ detail }) => {
137
+ if (detail.modules) {
138
+ if ($moving) {
139
+ push(history, $flowStore)
140
+ let indexToRemove = $moving.modules.findIndex((m) => $moving?.module?.id == m.id)
141
+ $moving.modules.splice(indexToRemove, 1)
142
+ detail.modules.splice(detail.index, 0, $moving.module)
143
+ $selectedId = $moving.module.id
144
+ $moving = undefined
145
+ } else {
146
+ await insertNewModuleAtIndex(detail.modules, detail.index ?? 0, detail.detail)
147
+ $selectedId = detail.modules[detail.index ?? 0].id
148
+ }
149
+ $flowStore = $flowStore
150
+ }
151
+ }}
152
+ on:newBranch={async ({ detail }) => {
153
+ if (detail.module) {
154
+ await addBranch(detail.module)
155
+ $flowStore = $flowStore
156
+ }
157
+ }}
158
+ on:deleteBranch={async ({ detail }) => {
159
+ if (detail.module) {
160
+ await removeBranch(detail.module, detail.index)
161
+ $flowStore = $flowStore
162
+ $selectedId = detail.module.id
163
+ }
164
+ }}
165
+ on:move={async ({ detail }) => {
166
+ if (!$moving || $moving.module.id !== detail.module.id) {
167
+ if (detail.module && detail.modules) {
168
+ console.log('MOVE+')
169
+ $moving = { module: detail.module, modules: detail.modules }
170
+ }
171
+ } else {
172
+ $moving = undefined
173
+ }
174
+ }}
175
+ />
176
+ </div>
177
+ <div
178
+ class="z-10 absolute w-full inline-flex flex-col gap-2 bottom-0 left-0 flex-initial p-2 items-center border-b"
179
+ >
180
+ <FlowErrorHandlerItem />
181
+ </div>
142
182
  </div>
143
-
144
- <RemoveStepConfirmationModal
145
- bind:open={confirmationModalOpen}
146
- on:canceled={() => {
147
- indexToRemove = undefined
148
- }}
149
- on:confirmed={() => {
150
- if (indexToRemove !== undefined) {
151
- removeAtIndex(indexToRemove)
152
- indexToRemove = undefined
153
- }
154
- $selectedId = 'settings-graph'
155
- }}
156
- />
@@ -2,9 +2,8 @@ import { SvelteComponentTyped } from "svelte";
2
2
  import type { FlowModule } from '../../../gen';
3
3
  declare const __propDef: {
4
4
  props: {
5
- root?: boolean | undefined;
6
5
  modules: FlowModule[] | undefined;
7
- parentType?: 'flow' | 'forloop' | 'branchall' | 'branchone' | undefined;
6
+ sidebarSize?: number | undefined;
8
7
  };
9
8
  events: {
10
9
  [evt: string]: CustomEvent<any>;
@@ -1,17 +1,18 @@
1
1
  <script>import { getContext } from 'svelte';
2
2
  import { classNames } from '../../../utils';
3
3
  import { Badge } from '../../common';
4
- import { flowStore } from '../flowStore';
5
4
  import { SlidersHorizontal } from 'lucide-svelte';
6
- const { select, selectedId } = getContext('FlowEditorContext');
5
+ const { selectedId, flowStore } = getContext('FlowEditorContext');
7
6
  $: settingsClass = classNames('border w-full rounded-sm p-2 bg-white border-gray-400 text-sm cursor-pointer flex items-center', $selectedId?.startsWith('settings')
8
7
  ? 'outline outline-offset-1 outline-2 outline-slate-900'
9
8
  : '');
10
9
  </script>
11
10
 
12
- <button on:click={() => select('settings-metadata')} class={settingsClass}>
11
+ <button on:click={() => ($selectedId = 'settings-metadata')} class={settingsClass}>
13
12
  <SlidersHorizontal size={16} />
14
- <span class="text-xs font-bold flex flex-row justify-between w-full gap-2 items-center truncate ml-1">
13
+ <span
14
+ class="text-xs font-bold flex flex-row justify-between w-full gap-2 items-center truncate ml-1"
15
+ >
15
16
  Settings
16
17
 
17
18
  {#if $flowStore.value.same_worker}
@@ -1,22 +1,24 @@
1
1
  <script>import { Menu } from '../../common';
2
- import { faCode, faCodeBranch, faPlus, faBarsStaggered, faBolt, faCheck } from '@fortawesome/free-solid-svg-icons';
2
+ import { faCode, faCodeBranch, faBarsStaggered, faBolt, faCheck } from '@fortawesome/free-solid-svg-icons';
3
3
  import { createEventDispatcher } from 'svelte';
4
4
  import Icon from 'svelte-awesome';
5
- import { Repeat, Square } from 'lucide-svelte';
5
+ import { Cross, Repeat, Square } from 'lucide-svelte';
6
6
  const dispatch = createEventDispatcher();
7
7
  export let trigger = false;
8
8
  export let stop = false;
9
+ export let open = undefined;
9
10
  </script>
10
11
 
11
- <Menu noMinW placement="bottom-start" let:close>
12
+ <Menu bind:show={open} noMinW placement="bottom-center" let:close>
12
13
  <button
14
+ title="Add step"
13
15
  slot="trigger"
14
16
  type="button"
15
- class="text-gray-900 bg-white border mx-0.5 border-gray-300 focus:outline-none hover:bg-gray-100 focus:ring-4 focus:ring-gray-200 font-medium rounded-full text-sm w-6 h-6 flex items-center justify-center"
17
+ class=" text-gray-900 bg-white border mx-0.5 border-gray-300 focus:outline-none hover:bg-gray-100 focus:ring-4 focus:ring-gray-200 font-medium rounded-full text-sm w-6 h-6 flex items-center justify-center"
16
18
  >
17
- <Icon data={faPlus} scale={0.8} />
19
+ <Cross size={12} />
18
20
  </button>
19
- <div class="divide-y divide-gray-100 text-xs w-40">
21
+ <div class="font-mono divide-y divide-gray-100 text-xs w-40">
20
22
  <button
21
23
  class="w-full text-left p-2 hover:bg-gray-100"
22
24
  on:click={() => {
@@ -27,7 +29,7 @@ export let stop = false;
27
29
  tabindex="-1"
28
30
  >
29
31
  <Icon data={faCode} scale={0.8} class="mr-2" />
30
- Action (Script)
32
+ Action
31
33
  </button>
32
34
  {#if trigger}
33
35
  <button
@@ -40,7 +42,7 @@ export let stop = false;
40
42
  tabindex="-1"
41
43
  >
42
44
  <Icon data={faBolt} scale={0.8} class="mr-2" />
43
- Trigger (Script)
45
+ Trigger
44
46
  </button>
45
47
  {/if}
46
48
  <button
@@ -53,7 +55,7 @@ export let stop = false;
53
55
  tabindex="-1"
54
56
  >
55
57
  <Icon data={faCheck} class="mr-1.5" scale={0.8} />
56
- Approval (Script)
58
+ Approval
57
59
  </button>
58
60
  <button
59
61
  class="w-full inline-flex text-left p-2 hover:bg-gray-100"
@@ -63,7 +65,7 @@ export let stop = false;
63
65
  }}
64
66
  role="menuitem"
65
67
  >
66
- <span class="mr-2">
68
+ <span class="mr-3">
67
69
  <Repeat size={14} />
68
70
  </span>
69
71
 
@@ -3,6 +3,7 @@ declare const __propDef: {
3
3
  props: {
4
4
  trigger?: boolean | undefined;
5
5
  stop?: boolean | undefined;
6
+ open?: boolean | undefined;
6
7
  };
7
8
  events: {
8
9
  new: CustomEvent<any>;