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
package/assets/app.css CHANGED
@@ -50,12 +50,23 @@
50
50
  .Template-editor span.mtk20 {
51
51
  color: black !important;
52
52
  }
53
+
54
+ ::-webkit-scrollbar {
55
+ width: 9px;
56
+ height: 9px;
57
+ }
58
+ ::-webkit-scrollbar-track {
59
+ background: transparent;
60
+ }
61
+ ::-webkit-scrollbar-thumb {
62
+ background-color: rgba(155, 155, 155, 0.5);
63
+ border: transparent;
64
+ }
53
65
  }
54
66
 
55
67
  @layer components {
56
68
  /* Flow graph viewer -> Svelvet library internal class overwrite */
57
69
  .Node {
58
70
  display: flex !important;
59
- cursor: pointer !important;
60
71
  }
61
72
  }
@@ -72,7 +72,7 @@ let args = {};
72
72
  $: key =
73
73
  apiTokenApps[resource_type]?.key ??
74
74
  (args != undefined
75
- ? Object.keys(args).filter((x) => ['token', 'password', 'api_key'].includes(x))[0]
75
+ ? Object.keys(args).filter((x) => ['token', 'password', 'api_key', 'key'].includes(x))[0]
76
76
  : undefined);
77
77
  let scopes = [];
78
78
  let extra_params = [];
@@ -230,6 +230,7 @@ $: disabled =
230
230
  args['token'] == '' &&
231
231
  args['password'] == '' &&
232
232
  args['api_key'] == '' &&
233
+ args['key'] == '' &&
233
234
  key != undefined) ||
234
235
  (step == 3 && pathError != '') ||
235
236
  !isValid;
@@ -365,7 +366,7 @@ let filteredConnectsManual = [];
365
366
  bind:error={pathError}
366
367
  bind:path
367
368
  initialPath=""
368
- namePlaceholder="{resource_type}"
369
+ namePlaceholder={resource_type}
369
370
  kind="resource"
370
371
  />
371
372
 
@@ -402,7 +403,7 @@ let filteredConnectsManual = [];
402
403
  {:else}
403
404
  <Path
404
405
  initialPath=""
405
- namePlaceholder="{resource_type}"
406
+ namePlaceholder={resource_type}
406
407
  bind:error={pathError}
407
408
  bind:path
408
409
  kind="resource"
@@ -1,9 +1,10 @@
1
1
  <script>import { Highlight } from 'svelte-highlight';
2
2
  import { json } from 'svelte-highlight/languages';
3
3
  import TableCustom from './TableCustom.svelte';
4
- import { truncate } from '../utils';
5
- import { Button } from './common';
4
+ import { copyToClipboard, truncate } from '../utils';
5
+ import { Button, Drawer, DrawerContent } from './common';
6
6
  import autosize from 'svelte-autosize';
7
+ import { ClipboardCopy } from 'lucide-svelte';
7
8
  export let result;
8
9
  export let requireHtmlApproval = false;
9
10
  let resultKind;
@@ -70,16 +71,35 @@ function inferResultKind(result) {
70
71
  return 'json';
71
72
  }
72
73
  let payload = '';
74
+ let jsonViewer;
73
75
  </script>
74
76
 
77
+ <Drawer bind:this={jsonViewer} size="900px">
78
+ <DrawerContent title="Expanded Result" on:close={jsonViewer.closeDrawer}>
79
+ <svelte:fragment slot="actions">
80
+ <Button
81
+ on:click={() => copyToClipboard(JSON.stringify(result, null, 4))}
82
+ color="light"
83
+ size="xs"
84
+ >
85
+ <div class="flex gap-2 items-center">Copy to clipboard <ClipboardCopy /> </div>
86
+ </Button>
87
+ </svelte:fragment>
88
+ <Highlight language={json} code={JSON.stringify(result, null, 4).replace(/\\n/g, '\n')} />
89
+ </DrawerContent>
90
+ </Drawer>
91
+
75
92
  <div class="inline-highlight">
76
93
  {#if result != undefined}
77
94
  {#if resultKind && resultKind != 'json'}
78
95
  <div class="mb-2 text-gray-500 text-sm bg-gray-50/20">
79
- as JSON&nbsp;<input type="checkbox" bind:checked={forceJson} /></div
96
+ as JSON&nbsp;<input class="windmillapp" type="checkbox" bind:checked={forceJson} /></div
80
97
  >{/if}{#if typeof result == 'object' && Object.keys(result).length > 0}<div
81
- class="mb-2 text-sm text-gray-700"
82
- >The result keys are: <b>{truncate(Object.keys(result).join(', '), 50)}</b></div
98
+ class="mb-2 min-w-[400px] text-sm text-gray-700 relative"
99
+ >The result keys are: <b>{truncate(Object.keys(result).join(', '), 50)}</b>
100
+ <div class="text-gray-500 text-sm absolute top-0 right-2">
101
+ <button on:click={jsonViewer.openDrawer}>Expand JSON</button>
102
+ </div></div
83
103
  >{/if}{#if !forceJson && resultKind == 'table-col'}<div
84
104
  class="grid grid-flow-col-dense border border-gray-200 rounded-md "
85
105
  >
@@ -207,12 +227,10 @@ let payload = '';
207
227
  ><a rel="noreferrer" target="_blank" href={result['approvalPage']}>Approval Page</a></div
208
228
  >
209
229
  </div>
210
- {:else}<Highlight
211
- language={json}
212
- code={JSON.stringify(result, null, 4).replace(/\\n/g, '\n')}
213
- />
230
+ {:else}
231
+ <Highlight language={json} code={JSON.stringify(result, null, 4).replace(/\\n/g, '\n')} />
214
232
  {/if}
215
233
  {:else}
216
- <div class="text-gray-500 text-sm">No result</div>
234
+ <div class="text-gray-500 text-sm">No result: {JSON.stringify(result)}</div>
217
235
  {/if}
218
236
  </div>
@@ -1,19 +1,29 @@
1
1
  <script>import { createEventDispatcher } from 'svelte';
2
2
  import Icon from 'svelte-awesome';
3
- import { MoreHorizontal } from 'lucide-svelte';
3
+ import { MoreVertical } from 'lucide-svelte';
4
4
  import { Button, Menu } from './common';
5
5
  import { goto } from '$app/navigation';
6
+ import { twMerge } from 'tailwind-merge';
6
7
  export let dropdownItems;
7
8
  export let name = undefined;
8
9
  export let placement = 'bottom-start';
9
- export let btnClasses = '!text-blue-500 bg-transparent';
10
+ export let btnClasses = '';
11
+ $: buttonClass = twMerge('!border-0 bg-transparent !p-[6px]', btnClasses);
10
12
  const dispatch = createEventDispatcher();
11
13
  </script>
12
14
 
13
15
  <Menu {placement} let:close>
14
- <Button nonCaptureEvent color="light" size="xs" {btnClasses} {...$$restProps} slot="trigger">
16
+ <Button
17
+ nonCaptureEvent
18
+ color="dark"
19
+ variant="border"
20
+ size="xs"
21
+ btnClasses={buttonClass}
22
+ {...$$restProps}
23
+ slot="trigger"
24
+ >
15
25
  {#if !$$slots.default}
16
- <MoreHorizontal size={20} />
26
+ <MoreVertical size={20} />
17
27
  {:else}
18
28
  <slot />
19
29
  {/if}
@@ -7,17 +7,21 @@ export let required = false;
7
7
  export let itemsType = undefined;
8
8
  </script>
9
9
 
10
- <div class="inline-flex flex-row items-center">
10
+ <div class="inline-flex flex-row items-center truncated">
11
11
  <span class="font-semibold">
12
12
  {label}
13
13
  </span>
14
14
  <Required {required} class="!ml-0" />
15
15
 
16
- <span class="text-sm italic ml-1 text-indigo-800">
17
- ({type ?? 'any'}{contentEncoding && contentEncoding != ''
18
- ? `, encoding: ${contentEncoding}`
19
- : ''}{format && format != '' ? `, format: ${format}` : ''}{itemsType?.type
20
- ? ` of ${itemsType?.type}s`
21
- : ''})</span
22
- >
16
+ {#if format && format != ''}
17
+ <span class="text-sm italic ml-1 text-indigo-800">
18
+ ({format})
19
+ </span>
20
+ {:else}
21
+ <span class="text-sm italic ml-1 text-indigo-800">
22
+ ({type ?? 'any'}{contentEncoding && contentEncoding != ''
23
+ ? `, encoding: ${contentEncoding}`
24
+ : ''})</span
25
+ >
26
+ {/if}
23
27
  </div>
@@ -1,20 +1,18 @@
1
1
  <script>import { goto } from '$app/navigation';
2
- import { page } from '$app/stores';
3
2
  import { FlowService, ScheduleService } from '../gen';
3
+ import { initHistory, redo, undo } from '../history';
4
4
  import { userStore, workspaceStore } from '../stores';
5
5
  import { encodeState, formatCron, loadHubScripts, sendUserToast } from '../utils';
6
- import { faCalendarAlt, faEye, faPen, faSave } from '@fortawesome/free-solid-svg-icons';
6
+ import { faCalendarAlt, faPen, faSave } from '@fortawesome/free-solid-svg-icons';
7
7
  import { setContext } from 'svelte';
8
8
  import { writable } from 'svelte/store';
9
9
  import CenteredPage from './CenteredPage.svelte';
10
- import { Button, Drawer, DrawerContent } from './common';
10
+ import { Button, ButtonPopup, ButtonPopupItem, UndoRedo } from './common';
11
11
  import { dirtyStore } from './common/confirmationModal/dirtyStore';
12
- import UnsavedConfirmationModal from './common/confirmationModal/UnsavedConfirmationModal.svelte';
13
12
  import { OFFSET } from './CronInput.svelte';
14
- import FlowGraphViewer from './FlowGraphViewer.svelte';
13
+ import ScriptEditorDrawer from './flows/content/ScriptEditorDrawer.svelte';
15
14
  import FlowEditor from './flows/FlowEditor.svelte';
16
- import { flowStateStore } from './flows/flowState';
17
- import { flowStore } from './flows/flowStore';
15
+ import { dfs } from './flows/flowStore';
18
16
  import FlowImportExportMenu from './flows/header/FlowImportExportMenu.svelte';
19
17
  import FlowPreviewButtons from './flows/header/FlowPreviewButtons.svelte';
20
18
  import { loadFlowSchedule } from './flows/scheduleUtils';
@@ -23,7 +21,8 @@ export let initialPath = '';
23
21
  export let selectedId;
24
22
  export let initialArgs = {};
25
23
  export let loading = false;
26
- let pathError = '';
24
+ export let flowStore;
25
+ export let flowStateStore;
27
26
  async function createSchedule(path) {
28
27
  const { cron, args, enabled } = $scheduleStore;
29
28
  try {
@@ -44,7 +43,9 @@ async function createSchedule(path) {
44
43
  sendUserToast(`The primary schedule could not be created: ${err}`, true);
45
44
  }
46
45
  }
47
- async function saveFlow() {
46
+ let loadingSave = false;
47
+ async function saveFlow(leave) {
48
+ loadingSave = true;
48
49
  const flow = cleanInputs($flowStore);
49
50
  const { cron, args, enabled } = $scheduleStore;
50
51
  $dirtyStore = false;
@@ -108,8 +109,13 @@ async function saveFlow() {
108
109
  await createSchedule(flow.path);
109
110
  }
110
111
  }
111
- sendUserToast(`Flow saved at ${$flowStore.path}`);
112
- goto(`/flows/get/${$flowStore.path}?workspace_id=${$workspaceStore}`);
112
+ loadingSave = false;
113
+ if (leave) {
114
+ goto(`/flows/get/${$flowStore.path}?workspace_id=${$workspaceStore}`);
115
+ }
116
+ else if (initialPath !== $flowStore.path) {
117
+ goto(`/flows/edit/${$flowStore.path}?workspace_id=${$workspaceStore}`);
118
+ }
113
119
  }
114
120
  let timeout = undefined;
115
121
  $: {
@@ -131,17 +137,26 @@ function saveDraft() {
131
137
  }
132
138
  }, 500);
133
139
  }
134
- const selectedIdStore = writable(selectedId);
140
+ const selectedIdStore = writable(selectedId ?? 'settings-metadata');
135
141
  const scheduleStore = writable({ args: {}, cron: '', enabled: false });
136
142
  const previewArgsStore = writable(initialArgs);
143
+ const scriptEditorDrawer = writable(undefined);
144
+ const moving = writable(undefined);
145
+ const history = initHistory($flowStore);
146
+ const testStepStore = writable({});
137
147
  function select(selectedId) {
138
148
  selectedIdStore.set(selectedId);
139
149
  }
140
150
  setContext('FlowEditorContext', {
141
151
  selectedId: selectedIdStore,
142
152
  schedule: scheduleStore,
143
- select,
144
- previewArgs: previewArgsStore
153
+ previewArgs: previewArgsStore,
154
+ scriptEditorDrawer,
155
+ moving,
156
+ history,
157
+ flowStateStore,
158
+ flowStore,
159
+ testStepStore
145
160
  });
146
161
  async function loadSchedule() {
147
162
  loadFlowSchedule(initialPath, $workspaceStore)
@@ -159,38 +174,81 @@ async function loadSchedule() {
159
174
  $: selectedId && select(selectedId);
160
175
  $: initialPath && $workspaceStore && loadSchedule();
161
176
  loadHubScripts();
162
- let flowViewer;
177
+ function onKeyDown(event) {
178
+ switch (event.key) {
179
+ case 'Z':
180
+ if (event.ctrlKey) {
181
+ $flowStore = redo(history);
182
+ event.preventDefault();
183
+ }
184
+ break;
185
+ case 'z':
186
+ if (event.ctrlKey) {
187
+ $flowStore = undo(history, $flowStore);
188
+ $selectedIdStore = 'Input';
189
+ event.preventDefault();
190
+ }
191
+ break;
192
+ case 's':
193
+ if (event.ctrlKey) {
194
+ saveFlow(false);
195
+ event.preventDefault();
196
+ }
197
+ break;
198
+ case 'ArrowDown': {
199
+ let ids = generateIds();
200
+ let idx = ids.indexOf($selectedIdStore);
201
+ if (idx > -1 && idx < ids.length - 1) {
202
+ $selectedIdStore = ids[idx + 1];
203
+ event.preventDefault();
204
+ }
205
+ break;
206
+ }
207
+ case 'ArrowUp': {
208
+ let ids = generateIds();
209
+ let idx = ids.indexOf($selectedIdStore);
210
+ if (idx > 0 && idx < ids.length) {
211
+ $selectedIdStore = ids[idx - 1];
212
+ event.preventDefault();
213
+ }
214
+ break;
215
+ }
216
+ }
217
+ }
218
+ function generateIds() {
219
+ return [
220
+ 'settings-metadata',
221
+ 'constants',
222
+ ...dfs($flowStore.value.modules, (module) => module.id)
223
+ ];
224
+ }
163
225
  </script>
164
226
 
165
- {#if !$userStore?.operator}
166
- <UnsavedConfirmationModal />
227
+ <svelte:window on:keydown={onKeyDown} />
167
228
 
168
- <Drawer bind:this={flowViewer} size="75%">
169
- <DrawerContent title="View Graph" on:close={flowViewer.closeDrawer} noPadding>
170
- <div class="overflow-hidden h-full w-full">
171
- <FlowGraphViewer flow={$flowStore} />
172
- </div>
173
- </DrawerContent>
174
- </Drawer>
229
+ {#if !$userStore?.operator}
230
+ <ScriptEditorDrawer bind:this={$scriptEditorDrawer} />
175
231
 
176
232
  <div class="flex flex-col flex-1 h-screen">
177
233
  <!-- Nav between steps-->
178
234
  <div
179
235
  class="justify-between flex flex-row w-full items-center pl-2.5 pr-6 space-x-4 overflow-x-auto scrollbar-hidden max-h-12 h-full"
180
236
  >
181
- <div class="flex flex-row">
237
+ <div class="flex flex-row gap-4 items-center">
182
238
  <FlowImportExportMenu />
183
- <Button
184
- btnClasses="inline-flex"
185
- startIcon={{ icon: faEye }}
186
- variant="border"
187
- color="light"
188
- size="sm"
189
- on:click={flowViewer.openDrawer}
190
- >
191
- Graph
192
- </Button>
239
+ <UndoRedo
240
+ undoProps={{ disabled: $history.index === 0 }}
241
+ redoProps={{ disabled: $history.index === $history.history.length - 1 }}
242
+ on:undo={() => {
243
+ $flowStore = undo(history, $flowStore)
244
+ $selectedIdStore = 'Input'
245
+ }}
246
+ on:redo={() => {
247
+ $flowStore = redo(history)
248
+ }}
249
+ />
193
250
  </div>
251
+
194
252
  <div class="gap-1 flex-row hidden md:flex shrink overflow-hidden">
195
253
  {#if $scheduleStore.enabled}
196
254
  <Button
@@ -237,12 +295,22 @@ let flowViewer;
237
295
  <div class="flex flex-row space-x-2">
238
296
  <FlowPreviewButtons />
239
297
  <div class="center-center">
240
- <Button
241
- disabled={pathError != ''}
242
- startIcon={{ icon: faSave }}
298
+ <ButtonPopup
299
+ loading={loadingSave}
243
300
  size="sm"
244
- on:click={saveFlow}>Save</Button
301
+ startIcon={{ icon: faSave }}
302
+ on:click={() => saveFlow(false)}
245
303
  >
304
+ <svelte:fragment slot="main">Save</svelte:fragment>
305
+ <ButtonPopupItem on:click={() => saveFlow(true)}>Save and exit</ButtonPopupItem>
306
+ {#if initialPath != ''}
307
+ <ButtonPopupItem
308
+ on:click={() => {
309
+ window.open(`/flows/add?template=${initialPath}`)
310
+ }}>Fork</ButtonPopupItem
311
+ >
312
+ {/if}
313
+ </ButtonPopup>
246
314
  </div>
247
315
  </div>
248
316
  </div>
@@ -1,10 +1,15 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
+ import { type Flow } from '../gen';
3
+ import { type Writable } from 'svelte/store';
4
+ import type { FlowState } from './flows/flowState';
2
5
  declare const __propDef: {
3
6
  props: {
4
7
  initialPath?: string | undefined;
5
8
  selectedId: string | undefined;
6
9
  initialArgs?: Record<string, any> | undefined;
7
10
  loading?: boolean | undefined;
11
+ flowStore: Writable<Flow>;
12
+ flowStateStore: Writable<FlowState>;
8
13
  };
9
14
  events: {
10
15
  [evt: string]: CustomEvent<any>;
@@ -71,17 +71,16 @@ let topHeight = 0;
71
71
  </Drawer>
72
72
  <div class="grid grid-cols-3 w-full">
73
73
  <div
74
- bind:clientHeight={topHeight}
75
74
  class="{noSide
76
75
  ? 'col-span-3'
77
- : 'sm:col-span-2 col-span-3'} w-full border border-gray-400 h-screen"
76
+ : 'sm:col-span-2 col-span-3'} w-full border border-gray-400 max-h-screen"
78
77
  class:overflow-auto={overflowAuto}
79
78
  >
80
79
  <FlowGraph
81
- minHeight={topHeight}
80
+ minHeight={400}
82
81
  modules={flow?.value?.modules}
83
82
  failureModule={flow?.value?.failure_module}
84
- on:click={(e) => (stepDetail = e.detail)}
83
+ on:select={(e) => (stepDetail = e.detail)}
85
84
  />
86
85
  </div>
87
86
  {#if !noSide}
@@ -89,7 +88,9 @@ let topHeight = 0;
89
88
  class="w-full border-r border-b border-t border-gray-400 min-h-[150px] p-2 overflow-auto hidden sm:block"
90
89
  >
91
90
  {#if stepDetail == undefined}
92
- <span class="font-black text-lg w-full my-4">
91
+ <SchemaViewer schema={flow?.schema} />
92
+
93
+ <span class="font-black text-lg w-full my-4 mt-14">
93
94
  <span>Click on a step to see its details</span>
94
95
  </span>
95
96
  {:else if stepDetail == 'Input'}
@@ -10,9 +10,9 @@ export let loading;
10
10
 
11
11
  <div
12
12
  class:border={!noBorder}
13
- class="grid {!col ? 'grid-cols-2' : 'grid-rows-2'} shadow border-gray-400 h-full"
13
+ class="grid {!col ? 'grid-cols-2' : 'grid-rows-2'} shadow border-gray-400 h-full max-h-screen"
14
14
  >
15
- <div class="bg-white max-h-80 h-full p-1 overflow-auto relative">
15
+ <div class="bg-white {col ? '' : 'max-h-80'} h-full p-1 overflow-auto relative">
16
16
  <span class="text-gray-500">Result</span>
17
17
  {#if result}
18
18
  <DisplayResult {result} />
@@ -22,7 +22,7 @@ export let loading;
22
22
  <div class="text-gray-400">No result (result is undefined)</div>
23
23
  {/if}
24
24
  </div>
25
- <div class="overflow-auto max-h-80 h-full relative">
25
+ <div class="overflow-auto {col ? '' : 'max-h-80'} h-full relative">
26
26
  <LogViewer content={logs ?? ''} isLoading={false} />
27
27
  </div>
28
28
  </div>
@@ -4,12 +4,11 @@ import { faClose, faPlay, faRefresh } from '@fortawesome/free-solid-svg-icons';
4
4
  import { Button, Kbd } from './common';
5
5
  import { createEventDispatcher, getContext } from 'svelte';
6
6
  import Icon from 'svelte-awesome';
7
- import { dfs, flowStore } from './flows/flowStore';
7
+ import { dfs } from './flows/flowStore';
8
8
  import { runFlowPreview } from './flows/utils';
9
9
  import SchemaForm from './SchemaForm.svelte';
10
10
  import FlowStatusViewer from '../components/FlowStatusViewer.svelte';
11
11
  import FlowProgressBar from './flows/FlowProgressBar.svelte';
12
- import { flowStateStore } from './flows/flowState';
13
12
  import CapturePayload from './flows/content/CapturePayload.svelte';
14
13
  import { Loader2 } from 'lucide-svelte';
15
14
  let capturePayload;
@@ -17,10 +16,9 @@ export let previewMode;
17
16
  export let open;
18
17
  export let jobId = undefined;
19
18
  export let job = undefined;
20
- let isValid = true;
21
19
  let isRunning = false;
22
20
  let jobProgressReset;
23
- const { selectedId, previewArgs } = getContext('FlowEditorContext');
21
+ const { selectedId, previewArgs, flowStateStore, flowStore } = getContext('FlowEditorContext');
24
22
  const dispatch = createEventDispatcher();
25
23
  function sliceModules(modules, upTo, idOrders) {
26
24
  return modules
@@ -97,7 +95,6 @@ $: if (job?.type === 'CompletedJob') {
97
95
 
98
96
  {#if isRunning}
99
97
  <Button
100
- disabled={!isValid}
101
98
  color="red"
102
99
  on:click={async () => {
103
100
  isRunning = false
@@ -124,7 +121,6 @@ $: if (job?.type === 'CompletedJob') {
124
121
  color="blue"
125
122
  size="sm"
126
123
  btnClasses="w-full max-w-lg"
127
- disabled={!isValid}
128
124
  on:click={() => runPreview($previewArgs)}
129
125
  >
130
126
  Test flow <Kbd class="ml-2">Ctrl+Enter</Kbd>
@@ -141,14 +137,13 @@ $: if (job?.type === 'CompletedJob') {
141
137
  </div>
142
138
  <FlowProgressBar {job} bind:reset={jobProgressReset} />
143
139
 
144
- <div class="overflow-y-auto grow divide-y divide-gray-600 ">
140
+ <div class="overflow-y-auto grow divide-y divide-gray-600 pr-4">
145
141
  <div class="max-h-1/2 overflow-auto border-b border-gray-700">
146
142
  <SchemaForm
147
143
  noVariablePicker
148
144
  compact
149
145
  class="py-4 max-w-3xl"
150
146
  schema={$flowStore.schema}
151
- bind:isValid
152
147
  bind:args={$previewArgs}
153
148
  />
154
149
  </div>
@@ -68,7 +68,7 @@ function updateInnerModules() {
68
68
  if (mod.type === FlowStatusModule.type.WAITING_FOR_EVENTS &&
69
69
  localFlowModuleStates?.[innerModules?.[i - 1]?.id ?? '']?.type ==
70
70
  FlowStatusModule.type.SUCCESS) {
71
- localFlowModuleStates[mod.id ?? ''] = { type: mod.type };
71
+ localFlowModuleStates[mod.id ?? ''] = { type: mod.type, args: job?.args };
72
72
  }
73
73
  else if (mod.type === FlowStatusModule.type.WAITING_FOR_EXECUTOR &&
74
74
  localFlowModuleStates[mod.id ?? '']?.scheduled_for == undefined) {
@@ -80,7 +80,8 @@ function updateInnerModules() {
80
80
  type: mod.type,
81
81
  scheduled_for: 'scheduled for ' + displayDate(job?.['scheduled_for'], true),
82
82
  job_id: job?.id,
83
- parent_module: mod['parent_module']
83
+ parent_module: mod['parent_module'],
84
+ args: job?.args
84
85
  };
85
86
  });
86
87
  }
@@ -292,10 +293,12 @@ function isSuccess(arg) {
292
293
  type: FlowStatusModule.type.IN_PROGRESS,
293
294
  logs: e.detail.logs,
294
295
  job_id: e.detail.id,
296
+ args: e.detail.args,
295
297
  iteration_total: flowJobIds?.flowJobs.length
296
298
  }
297
299
  } else {
298
300
  localFlowModuleStates[flowJobIds.moduleId] = {
301
+ args: e.detail.args,
299
302
  type: e.detail.success
300
303
  ? FlowStatusModule.type.SUCCESS
301
304
  : FlowStatusModule.type.FAILURE,
@@ -360,10 +363,12 @@ function isSuccess(arg) {
360
363
  localFlowModuleStates[mod.id] = {
361
364
  type: FlowStatusModule.type.IN_PROGRESS,
362
365
  logs: e.detail.logs,
366
+ args: e.detail.args,
363
367
  parent_module: mod['parent_module']
364
368
  }
365
369
  } else {
366
370
  localFlowModuleStates[mod.id] = {
371
+ args: e.detail.args,
367
372
  type: e.detail.success
368
373
  ? FlowStatusModule.type.SUCCESS
369
374
  : FlowStatusModule.type.FAILURE,
@@ -410,13 +415,17 @@ function isSuccess(arg) {
410
415
  <FlowGraph
411
416
  success={isSuccess(job?.['success'])}
412
417
  flowModuleStates={localFlowModuleStates}
413
- on:click={(e) => {
414
- if (e.detail.id) {
418
+ on:select={(e) => {
419
+ if (typeof e.detail == 'string') {
420
+ if (e.detail == 'Input') {
421
+ selectedNode = 'start'
422
+ } else if (e.detail == 'Result') {
423
+ selectedNode = 'end'
424
+ } else {
425
+ selectedNode = e.detail
426
+ }
427
+ } else {
415
428
  selectedNode = e.detail.id
416
- } else if (e.detail == 'Result') {
417
- selectedNode = 'end'
418
- } else if (e.detail == 'Input') {
419
- selectedNode = 'start'
420
429
  }
421
430
  }}
422
431
  modules={job.raw_flow?.modules ?? []}
@@ -460,6 +469,10 @@ function isSuccess(arg) {
460
469
  </div>
461
470
  {/if}
462
471
  </div>
472
+ <div class="px-1 border-b border-black">
473
+ <JobArgs args={node.args} />
474
+ </div>
475
+
463
476
  <FlowJobResult
464
477
  loading={job['running'] == true}
465
478
  noBorder
@@ -1,6 +1,8 @@
1
1
  <script>import { FolderService, GroupService } from '../gen';
2
2
  import { workspaceStore } from '../stores';
3
3
  export let name;
4
+ export let tabular = false;
5
+ export let order = ['scripts', 'flows', 'apps', 'schedules', 'variables', 'resources'];
4
6
  $: $workspaceStore && loadUsage();
5
7
  let usage = {};
6
8
  async function loadUsage() {
@@ -8,10 +10,18 @@ async function loadUsage() {
8
10
  }
9
11
  </script>
10
12
 
11
- <div class="flex flex-col text-xs text-gray-600">
12
- {#each Object.entries(usage) as [k, v]}
13
- <div>
14
- {k}: {v}
15
- </div>
13
+ {#if tabular}
14
+ {#each order as key}
15
+ <td class="text-center">
16
+ {usage[key] ?? ''}
17
+ </td>
16
18
  {/each}
17
- </div>
19
+ {:else}
20
+ <div class="flex flex-col text-xs text-gray-600">
21
+ {#each Object.entries(usage) as [k, v]}
22
+ <div>
23
+ {k}: {v}
24
+ </div>
25
+ {/each}
26
+ </div>
27
+ {/if}
@@ -2,6 +2,8 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  name: string;
5
+ tabular?: boolean | undefined;
6
+ order?: string[] | undefined;
5
7
  };
6
8
  events: {
7
9
  [evt: string]: CustomEvent<any>;