windmill-components 1.52.0 → 1.55.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 (349) hide show
  1. package/components/ApiConnectForm.svelte +42 -7
  2. package/components/ApiConnectForm.svelte.d.ts +2 -1
  3. package/components/AppConnect.svelte +19 -11
  4. package/components/ArgInfo.svelte +6 -2
  5. package/components/ArgInput.svelte +9 -3
  6. package/components/ArgInput.svelte.d.ts +1 -0
  7. package/components/CenteredPage.svelte +1 -1
  8. package/components/CenteredPage.svelte.d.ts +6 -2
  9. package/components/CronInput.svelte +1 -1
  10. package/components/DisplayResult.svelte +39 -2
  11. package/components/Dropdown.svelte +73 -100
  12. package/components/Dropdown.svelte.d.ts +1 -3
  13. package/components/Editor.svelte +16 -5
  14. package/components/EditorBar.svelte +69 -63
  15. package/components/EditorBar.svelte.d.ts +1 -0
  16. package/components/FlowBuilder.svelte +74 -68
  17. package/components/FlowGraphViewer.svelte +136 -34
  18. package/components/FlowGraphViewer.svelte.d.ts +1 -0
  19. package/components/FlowJobResult.svelte +6 -1
  20. package/components/FlowJobResult.svelte.d.ts +2 -0
  21. package/components/FlowMetadata.svelte +4 -2
  22. package/components/FlowPreviewContent.svelte +10 -23
  23. package/components/FlowPreviewContent.svelte.d.ts +3 -0
  24. package/components/FlowStatusViewer.svelte +155 -30
  25. package/components/FlowStatusViewer.svelte.d.ts +4 -2
  26. package/components/FlowViewer.svelte +3 -3
  27. package/components/FlowViewer.svelte.d.ts +1 -0
  28. package/components/HighlightCode.svelte +1 -1
  29. package/components/HighlightCode.svelte.d.ts +1 -0
  30. package/components/IconedPath.svelte +16 -6
  31. package/components/IconedPath.svelte.d.ts +2 -0
  32. package/components/IconedResourceType.svelte +5 -2
  33. package/components/InputTransformForm.svelte +92 -73
  34. package/components/InviteGlobalUser.svelte +2 -2
  35. package/components/InviteGlobalUser.svelte.d.ts +1 -1
  36. package/components/InviteUser.svelte +20 -6
  37. package/components/InviteUser.svelte.d.ts +1 -1
  38. package/components/ItemPicker.svelte +38 -27
  39. package/components/ItemPicker.svelte.d.ts +2 -1
  40. package/components/JobStatus.svelte +19 -13
  41. package/components/LogViewer.svelte +11 -3
  42. package/components/LogViewer.svelte.d.ts +1 -0
  43. package/components/ModuleStatus.svelte +38 -0
  44. package/components/ModuleStatus.svelte.d.ts +18 -0
  45. package/components/ObjectResourceInput.svelte +8 -52
  46. package/components/ObjectResourceInput.svelte.d.ts +0 -1
  47. package/components/Path.svelte +2 -2
  48. package/components/Path.svelte.d.ts +1 -1
  49. package/components/Popover.svelte +7 -1
  50. package/components/Popover.svelte.d.ts +3 -1
  51. package/components/ResourceEditor.svelte +57 -29
  52. package/components/ResourcePicker.svelte +12 -2
  53. package/components/SchemaEditor.svelte +2 -1
  54. package/components/SchemaForm.svelte +2 -1
  55. package/components/SchemaForm.svelte.d.ts +1 -0
  56. package/components/SchemaModal.svelte +11 -10
  57. package/components/ScriptBuilder.svelte +207 -192
  58. package/components/ScriptBuilder.svelte.d.ts +1 -1
  59. package/components/ScriptEditor.svelte +49 -45
  60. package/components/ScriptEditor.svelte.d.ts +1 -0
  61. package/components/ScriptPicker.svelte.d.ts +1 -1
  62. package/components/ScriptSchema.svelte +11 -30
  63. package/components/ScriptSchema.svelte.d.ts +0 -1
  64. package/components/SharedBadge.svelte +2 -3
  65. package/components/SimpleEditor.svelte +6 -7
  66. package/components/SimpleEditor.svelte.d.ts +1 -0
  67. package/components/Star.svelte +2 -2
  68. package/components/SuperadminSettings.svelte +9 -38
  69. package/components/TableSimple.svelte +1 -1
  70. package/components/TestJobLoader.svelte +20 -8
  71. package/components/ToggleHubWorkspace.svelte +16 -0
  72. package/components/ToggleHubWorkspace.svelte.d.ts +16 -0
  73. package/components/Tooltip.svelte.d.ts +1 -1
  74. package/components/VariableEditor.svelte +22 -9
  75. package/components/apps/CreateApp.svelte +5 -2
  76. package/components/apps/CreateApp.svelte.d.ts +1 -1
  77. package/components/apps/components/DisplayComponent.svelte +7 -14
  78. package/components/apps/components/DisplayComponent.svelte.d.ts +3 -2
  79. package/components/apps/components/buttons/AppButton.svelte +34 -27
  80. package/components/apps/components/buttons/AppButton.svelte.d.ts +6 -6
  81. package/components/apps/components/dataDisplay/AppBarChart.svelte +33 -9
  82. package/components/apps/components/dataDisplay/AppBarChart.svelte.d.ts +3 -5
  83. package/components/apps/components/dataDisplay/AppPieChart.svelte +33 -12
  84. package/components/apps/components/dataDisplay/AppPieChart.svelte.d.ts +3 -5
  85. package/components/apps/components/dataDisplay/AppTable.svelte +27 -30
  86. package/components/apps/components/dataDisplay/AppTable.svelte.d.ts +4 -8
  87. package/components/apps/components/dataDisplay/AppText.svelte +16 -9
  88. package/components/apps/components/dataDisplay/AppText.svelte.d.ts +3 -2
  89. package/components/apps/components/dataDisplay/app.md +49 -0
  90. package/components/apps/components/form/AppForm.svelte +50 -0
  91. package/components/apps/components/form/AppForm.svelte.d.ts +25 -0
  92. package/components/apps/components/helpers/AlignWrapper.svelte +2 -1
  93. package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +1 -0
  94. package/components/apps/components/helpers/DebouncedInput.svelte +9 -1
  95. package/components/apps/components/helpers/DebouncedInput.svelte.d.ts +2 -1
  96. package/components/apps/components/helpers/InputValue.svelte +15 -6
  97. package/components/apps/components/helpers/InputValue.svelte.d.ts +2 -2
  98. package/components/apps/components/helpers/NonRunnableComponent.svelte +20 -0
  99. package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +21 -0
  100. package/components/apps/components/helpers/RunnableComponent.svelte +36 -30
  101. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +6 -7
  102. package/components/apps/components/helpers/RunnableWrapper.svelte +32 -0
  103. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +26 -0
  104. package/components/apps/components/numberInputs/AppNumberInput.svelte +36 -0
  105. package/components/apps/components/numberInputs/AppNumberInput.svelte.d.ts +20 -0
  106. package/components/apps/components/selectInputs/AppCheckbox.svelte +4 -2
  107. package/components/apps/components/selectInputs/AppCheckbox.svelte.d.ts +2 -2
  108. package/components/apps/components/textInputs/AppTextInput.svelte +21 -0
  109. package/components/apps/components/textInputs/AppTextInput.svelte.d.ts +20 -0
  110. package/components/apps/editor/AppEditor.svelte +66 -55
  111. package/components/apps/editor/AppEditorHeader.svelte +4 -4
  112. package/components/apps/editor/AppPreview.svelte +42 -0
  113. package/components/apps/editor/AppPreview.svelte.d.ts +17 -0
  114. package/components/apps/editor/ComponentEditor.svelte +41 -20
  115. package/components/apps/editor/ComponentEditor.svelte.d.ts +2 -0
  116. package/components/apps/editor/ComponentHeader.svelte +28 -0
  117. package/components/apps/editor/ComponentHeader.svelte.d.ts +20 -0
  118. package/components/apps/editor/GridEditor.svelte +54 -5
  119. package/components/apps/editor/GridEditor.svelte.d.ts +1 -1
  120. package/components/apps/editor/RecomputeAllComponents.svelte +28 -0
  121. package/components/apps/editor/RecomputeAllComponents.svelte.d.ts +14 -0
  122. package/components/apps/editor/componentsPanel/ComponentList.svelte +94 -26
  123. package/components/apps/editor/componentsPanel/ComponentList.svelte.d.ts +1 -1
  124. package/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +2 -6
  125. package/components/apps/editor/componentsPanel/componentDefaultProps.js +1 -5
  126. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +2 -0
  127. package/components/apps/editor/componentsPanel/componentStaticValues.js +3 -1
  128. package/components/apps/editor/componentsPanel/data.js +191 -76
  129. package/components/apps/editor/contextPanel/ContextPanel.svelte +56 -48
  130. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +67 -0
  131. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +55 -0
  132. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +154 -129
  133. package/components/apps/editor/settingsPanel/ConnectedInputEditor.svelte +70 -0
  134. package/components/apps/editor/settingsPanel/ConnectedInputEditor.svelte.d.ts +17 -0
  135. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +6 -6
  136. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -2
  137. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +55 -87
  138. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +3 -4
  139. package/components/apps/editor/settingsPanel/PickFlow.svelte +3 -2
  140. package/components/apps/editor/settingsPanel/PickFlow.svelte.d.ts +1 -1
  141. package/components/apps/editor/settingsPanel/PickInlineScript.svelte +3 -3
  142. package/components/apps/editor/settingsPanel/Recompute.svelte +46 -0
  143. package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +17 -0
  144. package/components/apps/editor/settingsPanel/StaticInputEditor.svelte +31 -14
  145. package/components/apps/editor/settingsPanel/StaticInputEditor.svelte.d.ts +3 -3
  146. package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +17 -0
  147. package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +19 -0
  148. package/components/apps/editor/settingsPanel/TableActionLabel.svelte +10 -0
  149. package/components/apps/editor/settingsPanel/TableActionLabel.svelte.d.ts +17 -0
  150. package/components/apps/editor/settingsPanel/TableActions.svelte +13 -9
  151. package/components/apps/editor/settingsPanel/UserInputEditor.svelte.d.ts +1 -1
  152. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +3 -2
  153. package/components/apps/editor/settingsPanel/common/PanelSection.svelte.d.ts +1 -0
  154. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +53 -0
  155. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte.d.ts +21 -0
  156. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +98 -0
  157. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +18 -0
  158. package/components/apps/editor/settingsPanel/mainInput/WorkspaceFlowList.svelte +81 -0
  159. package/components/apps/editor/settingsPanel/mainInput/WorkspaceFlowList.svelte.d.ts +20 -0
  160. package/components/apps/editor/settingsPanel/mainInput/WorkspaceScriptList.svelte +81 -0
  161. package/components/apps/editor/settingsPanel/mainInput/WorkspaceScriptList.svelte.d.ts +20 -0
  162. package/components/apps/inputType.d.ts +62 -0
  163. package/components/apps/inputType.js +1 -0
  164. package/components/apps/rx.d.ts +4 -4
  165. package/components/apps/rx.js +16 -4
  166. package/components/apps/types.d.ts +20 -54
  167. package/components/apps/utils.d.ts +11 -34
  168. package/components/apps/utils.js +54 -18
  169. package/components/common/alert/Alert.svelte +2 -1
  170. package/components/common/alert/Alert.svelte.d.ts +1 -0
  171. package/components/common/button/Button.svelte +1 -1
  172. package/components/common/confirmationModal/UnsavedConfirmationModal.svelte.d.ts +1 -1
  173. package/components/common/drawer/DrawerContent.svelte +23 -22
  174. package/components/common/drawer/DrawerContent.svelte.d.ts +1 -3
  175. package/components/common/kbd/Kbd.svelte.d.ts +2 -2
  176. package/components/common/languageIcons/LanguageIcon.svelte +4 -2
  177. package/components/common/languageIcons/LanguageIcon.svelte.d.ts +1 -1
  178. package/components/common/menu/Menu.svelte +0 -1
  179. package/components/common/menu/MenuItem.svelte.d.ts +6 -2
  180. package/components/common/popup/Popup.svelte +0 -11
  181. package/components/common/table/AppRow.svelte +42 -26
  182. package/components/common/table/AppRow.svelte.d.ts +1 -1
  183. package/components/common/table/FlowRow.svelte +54 -49
  184. package/components/common/table/LanguageBadge.svelte +1 -1
  185. package/components/common/table/Row.svelte +27 -16
  186. package/components/common/table/Row.svelte.d.ts +2 -1
  187. package/components/common/table/RowIcon.svelte +13 -8
  188. package/components/common/table/ScriptRow.svelte +65 -57
  189. package/components/common/table/Table.svelte.d.ts +6 -2
  190. package/components/flows/CreateActionsFlow.svelte +14 -41
  191. package/components/flows/CreateActionsFlow.svelte.d.ts +1 -1
  192. package/components/flows/common/FlowCardHeader.svelte +7 -8
  193. package/components/flows/content/BranchPredicateEditor.svelte +30 -0
  194. package/components/flows/content/BranchPredicateEditor.svelte.d.ts +23 -0
  195. package/components/flows/content/CapturePayload.svelte +12 -8
  196. package/components/flows/content/DynamicInputHelpBox.svelte.d.ts +1 -1
  197. package/components/flows/content/FlowBranchAllWrapper.svelte +2 -2
  198. package/components/flows/content/FlowBranchOneWrapper.svelte +4 -36
  199. package/components/flows/content/FlowBranchesAllWrapper.svelte +91 -0
  200. package/components/flows/content/FlowBranchesAllWrapper.svelte.d.ts +18 -0
  201. package/components/flows/content/FlowBranchesOneWrapper.svelte +88 -0
  202. package/components/flows/content/FlowBranchesOneWrapper.svelte.d.ts +18 -0
  203. package/components/flows/content/FlowFailureModule.svelte.d.ts +1 -1
  204. package/components/flows/content/FlowInput.svelte +1 -2
  205. package/components/flows/content/FlowInput.svelte.d.ts +1 -1
  206. package/components/flows/content/FlowInputs.svelte +28 -26
  207. package/components/flows/content/FlowInputsFlow.svelte +101 -0
  208. package/components/flows/content/FlowInputsFlow.svelte.d.ts +20 -0
  209. package/components/flows/content/FlowLoop.svelte +10 -3
  210. package/components/flows/content/FlowModuleComponent.svelte +46 -35
  211. package/components/flows/content/FlowModuleEarlyStop.svelte +4 -3
  212. package/components/flows/content/FlowModuleHeader.svelte +22 -21
  213. package/components/flows/content/FlowModuleHeader.svelte.d.ts +1 -0
  214. package/components/flows/content/FlowModuleSleep.svelte +69 -0
  215. package/components/flows/content/FlowModuleSleep.svelte.d.ts +18 -0
  216. package/components/flows/content/FlowModuleSuspend.svelte +5 -63
  217. package/components/flows/content/FlowModuleSuspend.svelte.d.ts +0 -1
  218. package/components/flows/content/FlowModuleWrapper.svelte +59 -35
  219. package/components/flows/content/FlowPathViewer.svelte +20 -0
  220. package/components/flows/content/FlowPathViewer.svelte.d.ts +17 -0
  221. package/components/flows/content/FlowSchedules.svelte.d.ts +1 -1
  222. package/components/flows/content/FlowSettings.svelte +8 -12
  223. package/components/flows/flowState.js +2 -2
  224. package/components/flows/flowStateUtils.d.ts +7 -3
  225. package/components/flows/flowStateUtils.js +29 -8
  226. package/components/flows/header/FlowImportExportMenu.svelte.d.ts +1 -1
  227. package/components/flows/header/FlowPreviewButtons.svelte +6 -2
  228. package/components/flows/header/FlowPreviewButtons.svelte.d.ts +1 -1
  229. package/components/flows/map/FlowErrorHandlerItem.svelte +5 -5
  230. package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -1
  231. package/components/flows/map/FlowInputsItem.svelte.d.ts +1 -1
  232. package/components/flows/map/FlowModuleSchemaItem.svelte +30 -11
  233. package/components/flows/map/FlowModuleSchemaMap.svelte +26 -20
  234. package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -1
  235. package/components/flows/map/FlowSettingsItem.svelte +1 -1
  236. package/components/flows/map/FlowSettingsItem.svelte.d.ts +1 -1
  237. package/components/flows/map/InsertModuleButton.svelte +20 -4
  238. package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -1
  239. package/components/flows/map/MapItem.svelte +11 -5
  240. package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
  241. package/components/flows/pickers/PickHubFlow.svelte +72 -0
  242. package/components/flows/pickers/PickHubFlow.svelte.d.ts +20 -0
  243. package/components/flows/pickers/PickHubScript.svelte +65 -56
  244. package/components/flows/pickers/PickHubScript.svelte.d.ts +3 -1
  245. package/components/flows/pickers/PickScript.svelte +2 -2
  246. package/components/flows/pickers/WorkspaceScriptPicker.svelte +79 -19
  247. package/components/flows/pickers/WorkspaceScriptPicker.svelte.d.ts +5 -1
  248. package/components/flows/previousResults.d.ts +1 -0
  249. package/components/flows/previousResults.js +2 -1
  250. package/components/flows/propPicker/PropPickerWrapper.svelte +9 -1
  251. package/components/flows/utils.d.ts +0 -1
  252. package/components/flows/utils.js +6 -6
  253. package/components/graph/FlowGraph.svelte +120 -54
  254. package/components/graph/FlowGraph.svelte.d.ts +3 -2
  255. package/components/graph/model.d.ts +11 -0
  256. package/components/home/ItemsList.svelte +265 -0
  257. package/components/home/ItemsList.svelte.d.ts +16 -0
  258. package/components/home/ListFilters.svelte +37 -0
  259. package/components/home/ListFilters.svelte.d.ts +18 -0
  260. package/components/home/NoItemFound.svelte +6 -0
  261. package/components/home/NoItemFound.svelte.d.ts +23 -0
  262. package/components/icons/DatadogIcon.svelte +48 -0
  263. package/components/icons/DatadogIcon.svelte.d.ts +17 -0
  264. package/components/icons/FunkwhaleIcon.svelte +90 -0
  265. package/components/icons/FunkwhaleIcon.svelte.d.ts +17 -0
  266. package/components/icons/GdocsIcon.svelte +9 -0
  267. package/components/icons/GdocsIcon.svelte.d.ts +17 -0
  268. package/components/icons/HubspotIcon.svelte +9 -0
  269. package/components/icons/HubspotIcon.svelte.d.ts +17 -0
  270. package/components/icons/LinkedinIcon.svelte +9 -0
  271. package/components/icons/LinkedinIcon.svelte.d.ts +17 -0
  272. package/components/icons/Mail.svelte +9 -53
  273. package/components/icons/Mysql.svelte +8 -8
  274. package/components/icons/NextcloudIcon.svelte +9 -0
  275. package/components/icons/NextcloudIcon.svelte.d.ts +17 -0
  276. package/components/icons/QRCodeIcon.svelte +5 -0
  277. package/components/icons/QRCodeIcon.svelte.d.ts +16 -0
  278. package/components/icons/SendflakeIcon.svelte +15 -0
  279. package/components/icons/SendflakeIcon.svelte.d.ts +17 -0
  280. package/components/icons/StripeIcon.svelte +9 -0
  281. package/components/icons/StripeIcon.svelte.d.ts +17 -0
  282. package/components/icons/TelegramIcon.svelte +9 -0
  283. package/components/icons/TelegramIcon.svelte.d.ts +17 -0
  284. package/components/icons/WindmillIcon.svelte +3 -3
  285. package/components/icons/index.d.ts +23 -1
  286. package/components/icons/index.js +23 -1
  287. package/components/jobs/JobDetail.svelte +2 -2
  288. package/components/preview/FlowPreviewStatus.svelte +12 -23
  289. package/components/propertyPicker/PropPicker.svelte +16 -0
  290. package/components/propertyPicker/PropPickerResult.svelte +2 -3
  291. package/components/propertyPicker/WarningMessage.svelte.d.ts +6 -2
  292. package/components/scriptEditor/LogPanel.svelte +11 -4
  293. package/components/scripts/CreateActionsScript.svelte +13 -59
  294. package/components/scripts/CreateActionsScript.svelte.d.ts +1 -1
  295. package/components/sidebar/FavoriteMenu.svelte +52 -0
  296. package/components/sidebar/FavoriteMenu.svelte.d.ts +21 -0
  297. package/components/sidebar/SidebarContent.svelte +10 -19
  298. package/components/sidebar/SidebarContent.svelte.d.ts +0 -4
  299. package/components/sidebar/UserMenu.svelte +21 -4
  300. package/components/sidebar/WorkspaceMenu.svelte +6 -7
  301. package/editorUtils.d.ts +2 -0
  302. package/editorUtils.js +3 -1
  303. package/gen/core/OpenAPI.js +1 -1
  304. package/gen/index.d.ts +1 -0
  305. package/gen/models/CompletedJob.d.ts +1 -0
  306. package/gen/models/CreateWorkspace.d.ts +0 -1
  307. package/gen/models/EditWorkspaceUser.d.ts +2 -0
  308. package/gen/models/FlowModuleValue.d.ts +2 -1
  309. package/gen/models/FlowStatus.d.ts +3 -1
  310. package/gen/models/FlowStatusModule.d.ts +1 -1
  311. package/gen/models/FlowStatusModule.js +1 -1
  312. package/gen/models/Identity.d.ts +1 -0
  313. package/gen/models/ListableResource.d.ts +1 -0
  314. package/gen/models/ListableVariable.d.ts +1 -0
  315. package/gen/models/PathFlow.d.ts +6 -0
  316. package/gen/models/PathFlow.js +4 -0
  317. package/gen/models/PathScript.d.ts +1 -0
  318. package/gen/models/QueuedJob.d.ts +1 -0
  319. package/gen/models/Schedule.d.ts +2 -0
  320. package/gen/models/Usage.d.ts +1 -3
  321. package/gen/models/WorkspaceInvite.d.ts +1 -0
  322. package/gen/services/AppService.d.ts +7 -1
  323. package/gen/services/AppService.js +2 -1
  324. package/gen/services/JobService.d.ts +35 -5
  325. package/gen/services/JobService.js +14 -5
  326. package/gen/services/OauthService.d.ts +1 -1
  327. package/gen/services/ResourceService.d.ts +6 -2
  328. package/gen/services/ResourceService.js +2 -1
  329. package/gen/services/UserService.d.ts +6 -0
  330. package/gen/services/UserService.js +11 -0
  331. package/gen/services/WorkspaceService.d.ts +35 -0
  332. package/gen/services/WorkspaceService.js +41 -0
  333. package/package.json +56 -17
  334. package/script_helpers.d.ts +2 -1
  335. package/script_helpers.js +20 -3
  336. package/scripts.d.ts +1 -0
  337. package/scripts.js +8 -1
  338. package/stores.d.ts +11 -2
  339. package/stores.js +24 -6
  340. package/utils.d.ts +3 -1
  341. package/utils.js +11 -4
  342. package/components/ButtonAndDropdown.svelte +0 -25
  343. package/components/ButtonAndDropdown.svelte.d.ts +0 -23
  344. package/components/apps/components/index.d.ts +0 -22
  345. package/components/apps/components/index.js +0 -42
  346. package/components/apps/editor/settingsPanel/DynamicInputEditor.svelte +0 -64
  347. package/components/apps/editor/settingsPanel/DynamicInputEditor.svelte.d.ts +0 -17
  348. package/components/flows/content/FlowBranchesWrapper.svelte +0 -140
  349. package/components/flows/content/FlowBranchesWrapper.svelte.d.ts +0 -19
@@ -1,15 +1,16 @@
1
1
  <script>import { Script } from '../../../gen';
2
2
  import { getContext } from 'svelte';
3
- import FlowBranchesWrapper from './FlowBranchesWrapper.svelte';
4
3
  import FlowLoop from './FlowLoop.svelte';
5
4
  import FlowModuleComponent from './FlowModuleComponent.svelte';
6
5
  import FlowBranchAllWrapper from './FlowBranchAllWrapper.svelte';
7
6
  import FlowBranchOneWrapper from './FlowBranchOneWrapper.svelte';
8
- import { createInlineScriptModule, createLoop, createBranches, pickScript, createBranchAll } from '../flowStateUtils';
7
+ import { createInlineScriptModule, pickFlow, pickScript } from '../flowStateUtils';
9
8
  import FlowInputs from './FlowInputs.svelte';
10
9
  import { flowStateStore } from '../flowState';
11
- import Tooltip from '../../Tooltip.svelte';
12
10
  import { Alert } from '../../common';
11
+ import FlowInputsFlow from './FlowInputsFlow.svelte';
12
+ import FlowBranchesAllWrapper from './FlowBranchesAllWrapper.svelte';
13
+ import FlowBranchesOneWrapper from './FlowBranchesOneWrapper.svelte';
13
14
  const { selectedId } = getContext('FlowEditorContext');
14
15
  export let flowModule;
15
16
  // These pointers are used to easily access previewArgs of parent module, and previous module
@@ -22,8 +23,10 @@ export let previousModule = undefined;
22
23
  {#if flowModule.id === $selectedId}
23
24
  {#if flowModule.value.type === 'forloopflow'}
24
25
  <FlowLoop bind:mod={flowModule} {parentModule} {previousModule} />
25
- {:else if flowModule.value.type === 'branchone' || flowModule.value.type === 'branchall'}
26
- <FlowBranchesWrapper {previousModule} bind:flowModule {parentModule} />
26
+ {:else if flowModule.value.type === 'branchone'}
27
+ <FlowBranchesOneWrapper {previousModule} bind:flowModule />
28
+ {:else if flowModule.value.type === 'branchall'}
29
+ <FlowBranchesAllWrapper {previousModule} bind:flowModule />
27
30
  {:else if flowModule.value.type === 'identity'}
28
31
  {#if $selectedId == 'failure'}
29
32
  <Alert type="info" title="Error handlers are triggered upon non recovered errors">
@@ -36,42 +39,60 @@ export let previousModule = undefined;
36
39
  </Alert>
37
40
  {/if}
38
41
 
39
- <FlowInputs
40
- shouldDisableTriggerScripts={parentModule !== undefined ||
41
- previousModule !== undefined ||
42
- $selectedId == 'failure'}
43
- on:pick={async ({ detail }) => {
44
- const { path, summary, kind } = detail
45
- const [module, state] = await pickScript(path, summary, flowModule.id)
42
+ {#if flowModule.value.flow}
43
+ <FlowInputsFlow
44
+ failureModule={$selectedId === 'failure'}
45
+ on:pick={async ({ detail }) => {
46
+ const { path, summary } = detail
47
+ const [module, state] = await pickFlow(path, summary, flowModule.id)
46
48
 
47
- if (kind == Script.kind.APPROVAL) {
48
- module.suspend = { required_events: 1, timeout: 1800 }
49
- }
49
+ flowModule = module
50
+ $flowStateStore[module.id] = state
51
+ }}
52
+ />
53
+ {:else}
54
+ <FlowInputs
55
+ shouldDisableTriggerScripts={parentModule !== undefined ||
56
+ previousModule !== undefined ||
57
+ $selectedId == 'failure'}
58
+ on:pick={async ({ detail }) => {
59
+ const { path, summary, kind, hash } = detail
60
+ const [module, state] = await pickScript(path, summary, flowModule.id, hash)
61
+
62
+ if (kind == Script.kind.APPROVAL) {
63
+ module.suspend = { required_events: 1, timeout: 1800 }
64
+ }
50
65
 
51
- flowModule = module
52
- $flowStateStore[module.id] = state
53
- }}
54
- on:new={async ({ detail }) => {
55
- const { language, kind, subkind } = detail
66
+ flowModule = module
67
+ $flowStateStore[module.id] = state
68
+ }}
69
+ on:new={async ({ detail }) => {
70
+ const { language, kind, subkind } = detail
56
71
 
57
- const [module, state] = await createInlineScriptModule(
58
- language,
59
- kind,
60
- subkind,
61
- flowModule.id
62
- )
72
+ const [module, state] = await createInlineScriptModule(
73
+ language,
74
+ kind,
75
+ subkind,
76
+ flowModule.id
77
+ )
63
78
 
64
- if (kind == Script.kind.APPROVAL) {
65
- module.suspend = { required_events: 1, timeout: 1800 }
66
- }
79
+ if (kind == Script.kind.APPROVAL) {
80
+ module.suspend = { required_events: 1, timeout: 1800 }
81
+ }
67
82
 
68
- flowModule = module
69
- $flowStateStore[module.id] = state
70
- }}
83
+ flowModule = module
84
+ $flowStateStore[module.id] = state
85
+ }}
86
+ failureModule={$selectedId === 'failure'}
87
+ />
88
+ {/if}
89
+ {:else if flowModule.value.type === 'rawscript' || flowModule.value.type === 'script' || flowModule.value.type === 'flow'}
90
+ <FlowModuleComponent
91
+ bind:flowModule
92
+ {parentModule}
93
+ {previousModule}
71
94
  failureModule={$selectedId === 'failure'}
72
95
  />
73
- {:else if flowModule.value.type === 'rawscript' || flowModule.value.type === 'script'}
74
- <FlowModuleComponent bind:flowModule {parentModule} {previousModule} />
75
96
  {/if}
76
97
  {:else if flowModule.value.type === 'forloopflow'}
77
98
  {#each flowModule.value.modules as submodule, index (index)}
@@ -83,7 +104,10 @@ export let previousModule = undefined;
83
104
  {/each}
84
105
  {:else if flowModule.value.type === 'branchone'}
85
106
  {#if $selectedId === `${flowModule?.id}-branch-default`}
86
- <div class="p-4 text-sm truncate">Default branch</div>
107
+ <div class="p-2">
108
+ <h3 class="mb-4">Default branch</h3>
109
+ Nothing to configure, this is the default branch if none of the predicates are met.
110
+ </div>
87
111
  {:else}
88
112
  {#each flowModule.value.default as submodule, index}
89
113
  <svelte:self
@@ -0,0 +1,20 @@
1
+ <script>import Skeleton from '../../common/skeleton/Skeleton.svelte';
2
+ import FlowGraphViewer from '../../FlowGraphViewer.svelte';
3
+ import { FlowService } from '../../../gen';
4
+ import { workspaceStore } from '../../../stores';
5
+ export let path;
6
+ export let noSide = false;
7
+ let flow = undefined;
8
+ async function loadFlow(path) {
9
+ flow = await FlowService.getFlowByPath({ workspace: $workspaceStore, path });
10
+ }
11
+ $: path && loadFlow(path);
12
+ </script>
13
+
14
+ <div class="flex flex-col flex-1 h-full overflow-auto">
15
+ {#if flow}
16
+ <FlowGraphViewer {noSide} {flow} />
17
+ {:else}
18
+ <Skeleton layout={[[40]]} />
19
+ {/if}
20
+ </div>
@@ -0,0 +1,17 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ path: string;
5
+ noSide?: boolean | undefined;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export type FlowPathViewerProps = typeof __propDef.props;
13
+ export type FlowPathViewerEvents = typeof __propDef.events;
14
+ export type FlowPathViewerSlots = typeof __propDef.slots;
15
+ export default class FlowPathViewer extends SvelteComponentTyped<FlowPathViewerProps, FlowPathViewerEvents, FlowPathViewerSlots> {
16
+ }
17
+ export {};
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {};
3
+ props: Record<string, never>;
4
4
  events: {
5
5
  [evt: string]: CustomEvent<any>;
6
6
  };
@@ -6,7 +6,6 @@ import Path from '../../Path.svelte';
6
6
  import Required from '../../Required.svelte';
7
7
  import FlowCard from '../common/FlowCard.svelte';
8
8
  import FlowSchedules from './FlowSchedules.svelte';
9
- import SvelteMarkdown from 'svelte-markdown';
10
9
  import Toggle from '../../Toggle.svelte';
11
10
  import { Alert } from '../../common';
12
11
  import { FlowGraph } from '../../graph';
@@ -23,7 +22,7 @@ let topHeight = 0;
23
22
  <Tabs selected={defaultTab}>
24
23
  <Tab value="metadata">Metadata</Tab>
25
24
  <Tab value="schedule">Schedule</Tab>
26
- <Tab value="same-worker">Same Worker</Tab>
25
+ <Tab value="same-worker">Shared Directory</Tab>
27
26
  <Tab value="graph">Graph</Tab>
28
27
 
29
28
  <svelte:fragment slot="content">
@@ -60,7 +59,7 @@ let topHeight = 0;
60
59
  <div class="font-bold pb-1 mt-4">Description preview</div>
61
60
  {#if $flowStore.description}
62
61
  <div class="prose max-h-48 mt-5 text-xs shadow-inner shadow-blue p-4 overflow-auto">
63
- <SvelteMarkdown source={$flowStore.description} />
62
+ {$flowStore.description}
64
63
  </div>
65
64
  {:else}
66
65
  <div class="text-sm text-gray-500"> Enter a description to see the preview </div>
@@ -78,19 +77,16 @@ let topHeight = 0;
78
77
  </TabContent>
79
78
 
80
79
  <TabContent value="same-worker" class="p-4 flex flex-col">
81
- <Alert
82
- type="info"
83
- title="Toggle Same Worker to have all steps be ran on the same worker"
84
- >
85
- Steps will be run one after the other on the same worker, and will share a folder at
86
- `./shared` in which they can store heavier data and pass them to the next step. <br
87
- /><br />Beware that the `./shared` folder is not preserved across suspends and sleeps.
80
+ <Alert type="info" title="Shared Directory">
81
+ Steps will share a folder at `./shared` in which they can store heavier data and pass
82
+ them to the next step. <br /><br />Beware that the `./shared` folder is not preserved
83
+ across suspends and sleeps.
88
84
  </Alert>
89
- <span class="my-2 text-sm font-bold">Same Worker</span>
85
+ <span class="my-2 text-sm font-bold">Shared Directoryr</span>
90
86
  <Toggle
91
87
  bind:checked={$flowStore.value.same_worker}
92
88
  options={{
93
- right: 'Same Worker'
89
+ right: 'Shared Directory on `./shared`'
94
90
  }}
95
91
  />
96
92
  </TabContent>
@@ -1,6 +1,6 @@
1
1
  import { writable } from 'svelte/store';
2
2
  import { loadFlowModuleState } from './flowStateUtils';
3
- import { emptyFlowModuleState, isEmptyFlowModule } from './utils';
3
+ import { emptyFlowModuleState } from './utils';
4
4
  /**
5
5
  * flowStateStore represents the local state of each module indexed by its id.
6
6
  * It contains data loaded that are not contained in a Flow object i.e. schemas.
@@ -33,7 +33,7 @@ async function mapFlowModule(flowModule, modulesState) {
33
33
  if (value.type === 'branchone' || value.type === 'branchall') {
34
34
  await Promise.all(value.branches.map((branchModule) => mapFlowModules(branchModule.modules, modulesState)));
35
35
  }
36
- if (isEmptyFlowModule(flowModule)) {
36
+ if (value.type === 'identity') {
37
37
  modulesState[flowModule.id] = emptyFlowModuleState();
38
38
  }
39
39
  else {
@@ -1,22 +1,26 @@
1
1
  import type { Schema } from '../../common';
2
- import { Script, type FlowModule, type PathScript, type RawScript } from '../../gen';
2
+ import { Script, type FlowModule, type PathFlow, type PathScript, type RawScript } from '../../gen';
3
3
  import { type FlowModuleState } from './flowState';
4
4
  import { Mutex } from 'async-mutex';
5
5
  export declare function loadFlowModuleState(flowModule: FlowModule): Promise<FlowModuleState>;
6
6
  export declare const idMutex: Mutex;
7
7
  export declare function getNextId(currentKeys: string[]): string;
8
8
  export declare function nextId(): string;
9
- export declare function pickScript(path: string, summary: string, id: string): Promise<[FlowModule & {
9
+ export declare function pickScript(path: string, summary: string, id: string, hash?: string): Promise<[FlowModule & {
10
10
  value: PathScript;
11
11
  }, FlowModuleState]>;
12
+ export declare function pickFlow(path: string, summary: string, id: string): Promise<[FlowModule & {
13
+ value: PathFlow;
14
+ }, FlowModuleState]>;
12
15
  export declare function createInlineScriptModule(language: RawScript.language, kind: Script.kind, subkind: 'pgsql' | 'flow', id: string): Promise<[FlowModule, FlowModuleState]>;
13
16
  export declare function createLoop(id: string): Promise<[FlowModule, FlowModuleState]>;
14
17
  export declare function createBranches(id: string): Promise<[FlowModule, FlowModuleState]>;
15
18
  export declare function createBranchAll(id: string): Promise<[FlowModule, FlowModuleState]>;
19
+ export declare function createFlow(id: string): Promise<[FlowModule, FlowModuleState]>;
16
20
  export declare function fork(flowModule: FlowModule): Promise<[FlowModule & {
17
21
  value: RawScript;
18
22
  }, FlowModuleState]>;
19
- export declare function emptyModule(): FlowModule;
23
+ export declare function emptyModule(flow?: boolean): FlowModule;
20
24
  export declare function createScriptFromInlineScript(flowModule: FlowModule, suffix: string, schema: Schema): Promise<[FlowModule & {
21
25
  value: PathScript;
22
26
  }, FlowModuleState]>;
@@ -10,7 +10,7 @@ import { Mutex } from 'async-mutex';
10
10
  export async function loadFlowModuleState(flowModule) {
11
11
  try {
12
12
  const { input_transforms, schema } = await loadSchemaFromModule(flowModule);
13
- if (flowModule.value.type == 'script' || flowModule.value.type == 'rawscript') {
13
+ if (flowModule.value.type == 'script' || flowModule.value.type == 'rawscript' || flowModule.value.type == 'flow') {
14
14
  flowModule.value.input_transforms = input_transforms;
15
15
  }
16
16
  return { schema, previewResult: NEVER_TESTED_THIS_FAR };
@@ -47,10 +47,18 @@ export function nextId() {
47
47
  }, 0);
48
48
  return numberToChars(max);
49
49
  }
50
- export async function pickScript(path, summary, id) {
50
+ export async function pickScript(path, summary, id, hash) {
51
51
  const flowModule = {
52
52
  id,
53
- value: { type: 'script', path, input_transforms: {} },
53
+ value: { type: 'script', path, hash, input_transforms: {} },
54
+ summary
55
+ };
56
+ return [flowModule, await loadFlowModuleState(flowModule)];
57
+ }
58
+ export async function pickFlow(path, summary, id) {
59
+ const flowModule = {
60
+ id,
61
+ value: { type: 'flow', path, input_transforms: {} },
54
62
  summary
55
63
  };
56
64
  return [flowModule, await loadFlowModuleState(flowModule)];
@@ -69,7 +77,7 @@ export async function createLoop(id) {
69
77
  value: {
70
78
  type: 'forloopflow',
71
79
  modules: [],
72
- iterator: { type: 'javascript', expr: '' },
80
+ iterator: { type: 'javascript', expr: '["dynamic or static array"]' },
73
81
  skip_failures: true
74
82
  }
75
83
  };
@@ -101,6 +109,19 @@ export async function createBranchAll(id) {
101
109
  const flowModuleState = await loadFlowModuleState(branchesFlowModules);
102
110
  return [branchesFlowModules, flowModuleState];
103
111
  }
112
+ export async function createFlow(id) {
113
+ const flowFlowModules = {
114
+ id,
115
+ value: {
116
+ type: 'flow',
117
+ path: '',
118
+ input_transforms: {},
119
+ },
120
+ summary: ''
121
+ };
122
+ const flowModuleState = await loadFlowModuleState(flowFlowModules);
123
+ return [flowFlowModules, flowModuleState];
124
+ }
104
125
  export async function fork(flowModule) {
105
126
  if (flowModule.value.type !== 'script') {
106
127
  throw new Error('Can only fork a script module');
@@ -122,10 +143,10 @@ async function createInlineScriptModuleFromPath(path, id) {
122
143
  }
123
144
  };
124
145
  }
125
- export function emptyModule() {
146
+ export function emptyModule(flow) {
126
147
  return {
127
148
  id: nextId(),
128
- value: { type: 'identity' }
149
+ value: { type: 'identity', flow }
129
150
  };
130
151
  }
131
152
  export async function createScriptFromInlineScript(flowModule, suffix, schema) {
@@ -144,7 +165,7 @@ export async function createScriptFromInlineScript(flowModule, suffix, schema) {
144
165
  const forkedDescription = wasForked ? `as a fork of ${originalScriptPath}` : '';
145
166
  const description = `This script was edited in place of flow ${flow.path} ${forkedDescription} by ${user?.username}.`;
146
167
  const availablePath = await findNextAvailablePath(path);
147
- await ScriptService.createScript({
168
+ const hash = await ScriptService.createScript({
148
169
  workspace: get(workspaceStore),
149
170
  requestBody: {
150
171
  path: availablePath,
@@ -157,7 +178,7 @@ export async function createScriptFromInlineScript(flowModule, suffix, schema) {
157
178
  language: flowModule.value.language
158
179
  }
159
180
  });
160
- return pickScript(availablePath, flowModule.summary ?? '', flowModule.id);
181
+ return pickScript(availablePath, flowModule.summary ?? '', flowModule.id, hash);
161
182
  }
162
183
  export function deleteFlowStateById(id) {
163
184
  flowStateStore.update((fss) => {
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {};
3
+ props: Record<string, never>;
4
4
  events: {
5
5
  [evt: string]: CustomEvent<any>;
6
6
  };
@@ -7,6 +7,8 @@ import { getContext } from 'svelte';
7
7
  const { selectedId } = getContext('FlowEditorContext');
8
8
  let previewOpen = false;
9
9
  let previewMode = 'whole';
10
+ let jobId = undefined;
11
+ let job = undefined;
10
12
  $: upToDisabled =
11
13
  [
12
14
  'settings',
@@ -17,7 +19,7 @@ $: upToDisabled =
17
19
  'inputs',
18
20
  'schedules',
19
21
  'failure'
20
- ].includes($selectedId) || $selectedId.includes('branch');
22
+ ].includes($selectedId) || $selectedId?.includes('branch');
21
23
  </script>
22
24
 
23
25
  <div class="flex flex-row-reverse justify-between items-center gap-x-2">
@@ -51,10 +53,12 @@ $: upToDisabled =
51
53
  {/if}
52
54
  </div>
53
55
 
54
- <Drawer bind:open={previewOpen} size="1200px">
56
+ <Drawer bind:open={previewOpen} size="75%">
55
57
  <FlowPreviewContent
56
58
  open={previewOpen}
57
59
  bind:previewMode
60
+ bind:job
61
+ bind:jobId
58
62
  on:close={() => {
59
63
  previewOpen = false
60
64
  }}
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {};
3
+ props: Record<string, never>;
4
4
  events: {
5
5
  [evt: string]: CustomEvent<any>;
6
6
  };
@@ -8,7 +8,7 @@ import { flowStore } from '../flowStore';
8
8
  import { NEVER_TESTED_THIS_FAR } from '../utils';
9
9
  const { select, selectedId } = getContext('FlowEditorContext');
10
10
  function onToggle() {
11
- if ($flowStore.value.failure_module) {
11
+ if ($flowStore?.value?.failure_module) {
12
12
  $flowStore.value.failure_module = undefined;
13
13
  // By default, we return to settings when disabling the failure module
14
14
  select('settings');
@@ -31,7 +31,7 @@ function onToggle() {
31
31
  <!-- svelte-ignore a11y-click-events-have-key-events -->
32
32
  <div
33
33
  on:click={() => {
34
- if ($flowStore.value.failure_module) {
34
+ if ($flowStore?.value?.failure_module) {
35
35
  select('failure')
36
36
  } else {
37
37
  onToggle()
@@ -39,7 +39,7 @@ function onToggle() {
39
39
  }}
40
40
  class={classNames(
41
41
  'border rounded-sm px-2 py-1 bg-white text-sm border-gray-400 cursor-pointer flex flex-col overflow-x-hidden ',
42
- $selectedId.includes('failure') ? 'outline outline-offset-1 outline-2 outline-slate-900' : ''
42
+ $selectedId?.includes('failure') ? 'outline outline-offset-1 outline-2 outline-slate-900' : ''
43
43
  )}
44
44
  >
45
45
  <div class=" flex justify-between items-center flex-wrap">
@@ -48,12 +48,12 @@ function onToggle() {
48
48
  <span class="font-bold text-xs">Error handler</span>
49
49
  </div>
50
50
  <div class="-my-1">
51
- <Toggle checked={Boolean($flowStore.value.failure_module)} on:change={onToggle} />
51
+ <Toggle checked={Boolean($flowStore?.value?.failure_module)} on:change={onToggle} />
52
52
  </div>
53
53
  </div>
54
54
 
55
55
  <div class="w-full truncate block">
56
- {#if Boolean($flowStore.value.failure_module)}
56
+ {#if Boolean($flowStore?.value?.failure_module)}
57
57
  <span>
58
58
  {$flowStore.value.failure_module?.summary ||
59
59
  ($flowStore.value.failure_module?.value.type === 'rawscript'
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {};
3
+ props: Record<string, never>;
4
4
  events: {
5
5
  [evt: string]: CustomEvent<any>;
6
6
  };
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {};
3
+ props: Record<string, never>;
4
4
  events: {
5
5
  [evt: string]: CustomEvent<any>;
6
6
  };
@@ -1,8 +1,10 @@
1
1
  <script>import Badge from '../../common/badge/Badge.svelte';
2
+ import Popover from '../../Popover.svelte';
2
3
  import { classNames } from '../../../utils';
3
4
  import { faBed, faRepeat, faStop, faTimesCircle } from '@fortawesome/free-solid-svg-icons';
4
5
  import { createEventDispatcher } from 'svelte';
5
6
  import Icon from 'svelte-awesome';
7
+ import { PhoneIncoming, Repeat } from 'lucide-svelte';
6
8
  export let isFirst = false;
7
9
  export let isLast = false;
8
10
  export let hasLine = true;
@@ -35,21 +37,38 @@ const dispatch = createEventDispatcher();
35
37
  margin
36
38
  )}
37
39
  >
38
- <div class="absolute text-sm right-14 -bottom-3 flex flex-row gap-1">
40
+ <div class="absolute text-sm right-12 -bottom-3 flex flex-row gap-1 z-20">
39
41
  {#if retry}
40
- <div class="bg-white rounded border text-gray-600 px-1">
41
- <Icon scale={0.8} data={faRepeat} />
42
- </div>
42
+ <Popover notClickable>
43
+ <div class="bg-white rounded border text-gray-700 px-1 center-center">
44
+ <Repeat size={14} />
45
+ </div>
46
+ <span slot="text">Retries</span>
47
+ </Popover>
43
48
  {/if}
44
49
  {#if earlyStop}
45
- <div class="bg-white rounded border text-gray-600 px-1">
46
- <Icon scale={0.8} data={faStop} />
47
- </div>
50
+ <Popover notClickable>
51
+ <div class="bg-white rounded border text-gray-700 px-1">
52
+ <Icon scale={0.8} data={faStop} />
53
+ </div>
54
+ <span slot="text">Early Stop/Break</span>
55
+ </Popover>
48
56
  {/if}
49
- {#if suspend || sleep}
50
- <div class="bg-white rounded border text-gray-600 px-1">
51
- <Icon scale={0.8} data={faBed} />
52
- </div>
57
+ {#if sleep}
58
+ <Popover notClickable>
59
+ <div class="bg-white rounded border text-gray-700 px-1">
60
+ <Icon scale={0.8} data={faBed} />
61
+ </div>
62
+ <span slot="text">Sleep</span>
63
+ </Popover>
64
+ {/if}
65
+ {#if suspend}
66
+ <Popover notClickable>
67
+ <div class="bg-white rounded border text-gray-700 px-1 center-center">
68
+ <PhoneIncoming size={12} />
69
+ </div>
70
+ <span slot="text">Suspend</span>
71
+ </Popover>
53
72
  {/if}
54
73
  </div>
55
74
  <div
@@ -3,7 +3,7 @@ import { createBranchAll, createBranches, createLoop, deleteFlowStateById, empty
3
3
  import { flowStateStore } from '../flowState';
4
4
  import FlowErrorHandlerItem from './FlowErrorHandlerItem.svelte';
5
5
  import RemoveStepConfirmationModal from '../content/RemoveStepConfirmationModal.svelte';
6
- import { emptyFlowModuleState, isEmptyFlowModule } from '../utils';
6
+ import { emptyFlowModuleState } from '../utils';
7
7
  import MapItem from './MapItem.svelte';
8
8
  import FlowSettingsItem from './FlowSettingsItem.svelte';
9
9
  import FlowInputsItem from './FlowInputsItem.svelte';
@@ -15,7 +15,7 @@ let indexToRemove = undefined;
15
15
  const { select } = getContext('FlowEditorContext');
16
16
  async function insertNewModuleAtIndex(index, kind) {
17
17
  await idMutex.runExclusive(async () => {
18
- var module = emptyModule();
18
+ var module = emptyModule(kind == 'flow');
19
19
  var state = emptyFlowModuleState();
20
20
  if (kind == 'forloop') {
21
21
  ;
@@ -30,6 +30,8 @@ async function insertNewModuleAtIndex(index, kind) {
30
30
  [module, state] = await createBranchAll(module.id);
31
31
  }
32
32
  const flowModule = module;
33
+ if (!modules)
34
+ return;
33
35
  modules.splice(index, 0, flowModule);
34
36
  modules = modules;
35
37
  $flowStateStore[flowModule.id] = state;
@@ -38,6 +40,8 @@ async function insertNewModuleAtIndex(index, kind) {
38
40
  }
39
41
  function removeAtIndex(index) {
40
42
  select('settings');
43
+ if (!modules)
44
+ return;
41
45
  const [removedModule] = modules.splice(index, 1);
42
46
  modules = modules;
43
47
  const leaves = findLeaves(removedModule);
@@ -87,25 +91,27 @@ $: confirmationModalOpen = indexToRemove !== undefined;
87
91
  </li>
88
92
  {/if}
89
93
 
90
- {#each modules as mod, index (mod.id ?? index)}
91
- <div transition:slide|local>
92
- <MapItem
93
- bind:mod
94
- on:delete={(event) => {
95
- if (event.detail.detail.shiftKey || isEmptyFlowModule(mod)) {
96
- removeAtIndex(index)
97
- } else {
98
- indexToRemove = index
99
- }
100
- }}
101
- on:insert={(e) => {
102
- insertNewModuleAtIndex(index, e.detail)
103
- }}
104
- />
105
- </div>
106
- {/each}
94
+ {#if modules}
95
+ {#each modules as mod, index (mod.id ?? index)}
96
+ <div transition:slide|local>
97
+ <MapItem
98
+ bind:mod
99
+ on:delete={(event) => {
100
+ if (event.detail.detail.shiftKey || mod.value.type === 'identity') {
101
+ removeAtIndex(index)
102
+ } else {
103
+ indexToRemove = index
104
+ }
105
+ }}
106
+ on:insert={(e) => {
107
+ insertNewModuleAtIndex(index, e.detail)
108
+ }}
109
+ />
110
+ </div>
111
+ {/each}
112
+ {/if}
107
113
 
108
- <InsertModuleButton on:new={(e) => insertNewModuleAtIndex(modules.length, e.detail)} />
114
+ <InsertModuleButton on:new={(e) => insertNewModuleAtIndex(modules?.length ?? 0, e.detail)} />
109
115
  </ul>
110
116
  {#if root}
111
117
  <div class="sticky bottom-0 bg-gray-50 flex-none px-4 py-1 pb-2 border-t">
@@ -3,7 +3,7 @@ import type { FlowModule } from '../../../gen';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  root?: boolean | undefined;
6
- modules: FlowModule[];
6
+ modules: FlowModule[] | undefined;
7
7
  };
8
8
  events: {
9
9
  [evt: string]: CustomEvent<any>;
@@ -23,7 +23,7 @@ $: settingsClass = classNames('border w-full rounded-sm p-2 bg-white border-gray
23
23
  </Badge>
24
24
  {/if}
25
25
  {#if $flowStore.value.same_worker}
26
- <Badge color="blue" baseClass="truncate">same worker</Badge>
26
+ <Badge color="blue" baseClass="truncate">./shared</Badge>
27
27
  {/if}
28
28
  </span>
29
29
  </span>
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {};
3
+ props: Record<string, never>;
4
4
  events: {
5
5
  [evt: string]: CustomEvent<any>;
6
6
  };