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
@@ -4,39 +4,51 @@ import { FlowStatusModule, RawScript } from '../../gen';
4
4
  import { NODE, createIdGenerator, isNode, isLoop, isBranch } from '.';
5
5
  import { defaultIfEmptyString, truncateRev } from '../../utils';
6
6
  import { createEventDispatcher } from 'svelte';
7
- import { numberToChars } from '../flows/utils';
7
+ import { charsToNumber, numberToChars } from '../flows/utils';
8
8
  export let modules = [];
9
9
  export let failureModule = undefined;
10
10
  export let minHeight = 0;
11
11
  export let notSelectable = false;
12
12
  export let flowModuleStates = undefined;
13
13
  let selectedNode = undefined;
14
- const idGenerator = createIdGenerator();
14
+ let idGenerator;
15
15
  let nestedNodes;
16
16
  let nodes = [];
17
17
  let edges = [];
18
18
  let width, height;
19
+ let errorHandlers = {};
19
20
  let dispatch = createEventDispatcher();
20
21
  $: {
21
22
  width && height && minHeight && selectedNode && flowModuleStates;
23
+ nodes = edges = [];
24
+ errorHandlers = {};
25
+ createGraph();
26
+ }
27
+ async function createGraph() {
22
28
  if (modules) {
23
- createGraph(modules, failureModule);
29
+ idGenerator = createIdGenerator();
24
30
  }
25
31
  else {
26
32
  nodes = edges = [];
33
+ return;
27
34
  }
28
- }
29
- function createGraph(modules, failureModule) {
30
35
  nestedNodes = nodes = [];
31
- nestedNodes.push(createVirtualNode(getParentIds(), 'Flow start'));
36
+ nestedNodes.push(createVirtualNode(getParentIds(), 'Input'));
32
37
  modules.forEach((m) => {
33
38
  const item = getConvertedFlowModule(m);
34
39
  item && nestedNodes.push(item);
35
40
  });
36
- const endParentIds = getParentIds();
37
- nestedNodes.push(createVirtualNode(getParentIds(), 'Flow end'));
38
- if (failureModule) {
39
- nestedNodes.push(createErrorHandler(endParentIds, failureModule));
41
+ nestedNodes.push(createVirtualNode(getParentIds(), 'Result'));
42
+ if (!flowModuleStates) {
43
+ if (failureModule)
44
+ nestedNodes.push(createErrorHandler(failureModule));
45
+ }
46
+ else {
47
+ Object.entries(flowModuleStates ?? [])
48
+ .filter(([k, v]) => k.startsWith('failure'))
49
+ .forEach(([k, v]) => {
50
+ nestedNodes.push(createErrorHandler({ id: k }, v.parent_module));
51
+ });
40
52
  }
41
53
  const flatNodes = flattenNestedNodes(nestedNodes);
42
54
  const layered = layoutNodes(flatNodes);
@@ -67,6 +79,9 @@ function getConvertedFlowModule(module, parent = undefined, edgeLabel = undefine
67
79
  const branches = module.value.branches.map((b) => b.modules);
68
80
  return flowModuleToBranch(module, branches, [], parent);
69
81
  }
82
+ else if (type === 'flow') {
83
+ return flowModuleToNode(parentIds, module.id, module.summary || 'Flow ' + module.value.path, 'inline', module, undefined, edgeLabel);
84
+ }
70
85
  return flowModuleToNode(parentIds, module.id, module.summary || 'Identity step', 'inline', module, undefined, edgeLabel);
71
86
  }
72
87
  function getParentIds(items = undefined) {
@@ -77,7 +92,8 @@ function getParentIds(items = undefined) {
77
92
  if (!item)
78
93
  return [];
79
94
  if (isNode(item)) {
80
- return ['' + item.id];
95
+ const id = numberToChars(item.id);
96
+ return [id];
81
97
  }
82
98
  else if (isLoop(item)) {
83
99
  return getParentIds(item.items);
@@ -90,16 +106,20 @@ function getParentIds(items = undefined) {
90
106
  function getStateColor(state) {
91
107
  switch (state) {
92
108
  case FlowStatusModule.type.SUCCESS:
93
- return 'rgb(34 197 94)';
109
+ return 'rgb(193, 255, 216)';
94
110
  case FlowStatusModule.type.FAILURE:
95
111
  return 'rgb(248 113 113)';
96
112
  case FlowStatusModule.type.IN_PROGRESS:
97
- return 'rgb(253 224 71)';
113
+ return 'rgb(253, 240, 176)';
114
+ case FlowStatusModule.type.WAITING_FOR_EVENTS:
115
+ return 'rgb(229, 176, 253)';
116
+ case FlowStatusModule.type.WAITING_FOR_EXECUTOR:
117
+ return 'rgb(255, 208, 193)';
98
118
  default:
99
119
  return '#fff';
100
120
  }
101
121
  }
102
- function flowModuleToNode(parentIds, id, title, host, onClickDetail, lang, edgeLabel) {
122
+ function flowModuleToNode(parentIds, id, title, host, onClickDetail, lang, edgeLabel, header) {
103
123
  const langImg = {
104
124
  deno: '/icons/ts-lang.svg',
105
125
  go: '/icons/go-lang.svg',
@@ -112,9 +132,9 @@ function flowModuleToNode(parentIds, id, title, host, onClickDetail, lang, edgeL
112
132
  inline: ''
113
133
  };
114
134
  const wrapperWidth = lang ? 'w-[calc(100%-70px)]' : 'w-[calc(100%-50px)]';
115
- const graphId = idGenerator.next().value;
135
+ let nodeId = id ?? numberToChars(idGenerator.next().value - 1);
116
136
  return {
117
- id: graphId,
137
+ id: charsToNumber(nodeId),
118
138
  position: { x: -1, y: -1 },
119
139
  data: {
120
140
  html: `
@@ -126,23 +146,25 @@ function flowModuleToNode(parentIds, id, title, host, onClickDetail, lang, edgeL
126
146
  ${lang ? `<img src="${langImg[lang]}" class="grayscale">` : ''}
127
147
  ${host != 'inline' ? `<img src="${hostImg[host]}" class="grayscale">` : ''}
128
148
  <span class="center-center font-semibold bg-indigo-100 text-indigo-800 rounded px-1 pb-[2px] ml-[2px]">
129
- ${id ?? numberToChars(graphId - 1)}
149
+ ${nodeId}
130
150
  </span>
131
151
  </div>
132
152
  </div>
153
+ <div class="text-2xs absolute -top-6 text-gray-600 truncate">${flowModuleStates?.[nodeId]?.scheduled_for ?? header ?? ''}<div>
133
154
  `
134
155
  },
135
156
  host,
136
157
  width: NODE.width,
137
158
  height: NODE.height,
138
- borderColor: selectedNode == onClickDetail.id ? 'black' : '#999',
139
- bgColor: selectedNode == onClickDetail.id
140
- ? '#f5f5f5'
141
- : getStateColor(flowModuleStates?.[onClickDetail.id]),
159
+ borderColor: selectedNode == nodeId ? 'black' : '#999',
160
+ bgColor: selectedNode == nodeId ? '#f5f5f5' : getStateColor(flowModuleStates?.[nodeId]?.type),
142
161
  parentIds,
143
162
  clickCallback: (node) => {
144
163
  if (!notSelectable) {
145
- selectedNode = onClickDetail.id;
164
+ selectedNode = nodeId;
165
+ }
166
+ if (onClickDetail.id == undefined) {
167
+ onClickDetail.id = nodeId;
146
168
  }
147
169
  dispatch('click', onClickDetail);
148
170
  },
@@ -155,14 +177,16 @@ function flowModuleToLoop(modules, module, parent = undefined) {
155
177
  const loop = {
156
178
  type: 'loop',
157
179
  items: [
158
- flowModuleToNode(getParentIds(parent), module.id, module.summary || `For Loop: ${defaultIfEmptyString(expr ?? '', 'TBD')}`, 'inline', module, undefined)
180
+ flowModuleToNode(getParentIds(parent), module.id, module.summary || `For Loop: ${defaultIfEmptyString(expr ?? '', 'TBD')}`, 'inline', module, undefined, undefined, flowModuleStates?.[module.id]?.iteration_total
181
+ ? 'Iteration ' + flowModuleStates?.[module.id]?.iteration_total
182
+ : '')
159
183
  ]
160
184
  };
161
185
  modules.forEach((module) => {
162
186
  const item = getConvertedFlowModule(module, loop.items);
163
187
  item && loop.items.push(item);
164
188
  });
165
- loop.items.push(createVirtualNode(getParentIds(loop.items), `Collect iterations' results of For Loop ${module.id}`));
189
+ loop.items.push(createVirtualNode(getParentIds(loop.items), `Collect iterations' results of For Loop ${module.id}`, undefined, 1000));
166
190
  return loop;
167
191
  }
168
192
  function flowModuleToBranch(module, branches, edgesLabel, parent = undefined) {
@@ -173,7 +197,7 @@ function flowModuleToBranch(module, branches, edgesLabel, parent = undefined) {
173
197
  : 'Run one branch given predicate', 'inline', module, undefined),
174
198
  items: []
175
199
  };
176
- const branchParent = [branch.node.id.toString()];
200
+ const branchParent = [numberToChars(branch.node.id)];
177
201
  if (branches.length == 0) {
178
202
  branch.items.push([createVirtualNode(branchParent, 'No branches')]);
179
203
  }
@@ -184,7 +208,7 @@ function flowModuleToBranch(module, branches, edgesLabel, parent = undefined) {
184
208
  }
185
209
  else {
186
210
  modules.forEach((module) => {
187
- const item = getConvertedFlowModule(module, items.length ? items : branch.node.id.toString(), edgesLabel[i]);
211
+ const item = getConvertedFlowModule(module, items.length ? items : numberToChars(branch.node.id), edgesLabel[i]);
188
212
  item && items.push(item);
189
213
  });
190
214
  }
@@ -211,7 +235,7 @@ function flattenNestedNodes(nestedNodes, nodes = []) {
211
235
  return array;
212
236
  }
213
237
  function layoutNodes(nodes) {
214
- const stratify = dagStratify().id(({ id }) => '' + id);
238
+ const stratify = dagStratify().id(({ id }) => numberToChars(id));
215
239
  const dag = stratify(nodes);
216
240
  const layout = sugiyama()
217
241
  .decross(decrossOpt())
@@ -221,7 +245,7 @@ function layoutNodes(nodes) {
221
245
  return {
222
246
  nodes: dag.descendants().map((des) => ({
223
247
  ...des.data,
224
- id: +des.data.id,
248
+ id: des.data.id,
225
249
  position: {
226
250
  x: des.x ? des.x + (width - boxSize.width - NODE.width) / 2 : 0,
227
251
  y: des.y || 0
@@ -234,24 +258,51 @@ function createEdges(nodes) {
234
258
  const edges = [];
235
259
  nodes.forEach((node) => {
236
260
  node.parentIds.forEach((pid, i) => {
237
- edges.push({
238
- id: `e-${pid}-${node.id}`,
239
- source: +pid,
240
- target: node.id,
241
- labelBgColor: 'white',
242
- arrow: true,
243
- animate: false,
244
- noHandle: false,
245
- label: node.edgeLabel
246
- // type: 'smoothstep'
247
- });
261
+ // skip virtual nodes such as collect result
262
+ if (errorHandlers[pid] && node.id < 900 && nodes.find((x) => x.id == errorHandlers[pid])) {
263
+ edges.push({
264
+ id: `e-${pid}-${node.id}`,
265
+ source: charsToNumber(pid),
266
+ target: errorHandlers[pid],
267
+ labelBgColor: 'white',
268
+ arrow: true,
269
+ animate: false,
270
+ noHandle: false,
271
+ label: node.edgeLabel
272
+ // type: 'smoothstep'
273
+ });
274
+ edges.push({
275
+ id: `e-${pid}-${node.id}`,
276
+ source: errorHandlers[pid],
277
+ target: node.id,
278
+ labelBgColor: 'white',
279
+ arrow: true,
280
+ animate: false,
281
+ noHandle: false,
282
+ label: node.edgeLabel
283
+ // type: 'smoothstep'
284
+ });
285
+ }
286
+ else {
287
+ edges.push({
288
+ id: `e-${pid}-${node.id}`,
289
+ source: charsToNumber(pid),
290
+ target: node.id,
291
+ labelBgColor: 'white',
292
+ arrow: true,
293
+ animate: false,
294
+ noHandle: false,
295
+ label: node.edgeLabel
296
+ // type: 'smoothstep'
297
+ });
298
+ }
248
299
  });
249
300
  });
250
301
  return edges;
251
302
  }
252
- function createVirtualNode(parentIds, label, edgesLabel) {
303
+ function createVirtualNode(parentIds, label, edgesLabel, offset) {
253
304
  return {
254
- id: idGenerator.next().value,
305
+ id: -idGenerator.next().value - 1 + (offset ?? 0),
255
306
  position: { x: -1, y: -1 },
256
307
  data: {
257
308
  html: `
@@ -262,38 +313,53 @@ function createVirtualNode(parentIds, label, edgesLabel) {
262
313
  },
263
314
  width: NODE.width,
264
315
  height: NODE.height,
265
- borderColor: '#999',
266
- bgColor: '#d4e4ff',
267
- parentIds
316
+ borderColor: selectedNode == label ? 'black' : '#999',
317
+ bgColor: selectedNode == label ? '#f5f5f5' : '#d4e4ff',
318
+ parentIds,
319
+ clickCallback: (node) => {
320
+ if (!notSelectable) {
321
+ selectedNode = label;
322
+ }
323
+ dispatch('click', label);
324
+ }
268
325
  };
269
326
  }
270
- function createErrorHandler(parentIds, module) {
327
+ function createErrorHandler(mod, parent_module) {
328
+ const nId = -idGenerator.next().value - 1 + 1100;
329
+ parent_module && (errorHandlers[parent_module] = nId);
271
330
  return {
272
- id: -1,
331
+ id: nId,
273
332
  position: { x: -1, y: -1 },
274
333
  data: {
275
334
  html: `
276
- <div class="w-full max-h-full text-center ellipsize-multi-line text-2xs [-webkit-line-clamp:2] px-1">
277
- Error handler
335
+ <div class="w-full flex justify-between items-center px-1">
336
+ <div class="text-left ellipsize text-2xs truncate">
337
+ Error Handler
338
+ </div>
339
+ <div class="flex items-center">
340
+ <span class="center-center font-semibold bg-indigo-100 text-indigo-800 rounded px-1 pb-[2px] ml-[2px]">
341
+ ${mod.id}
342
+ </span>
343
+ </div>
278
344
  </div>
279
345
  `
280
346
  },
281
347
  width: NODE.width,
282
348
  height: NODE.height,
283
- bgColor: 'rgb(248 113 113)',
284
- borderColor: '#999',
285
- parentIds,
349
+ bgColor: selectedNode == mod.id ? '#f5f5f5' : getStateColor(flowModuleStates?.[mod.id]?.type),
350
+ borderColor: selectedNode == mod.id ? 'black' : '#999',
351
+ parentIds: parent_module ? [parent_module] : [],
286
352
  clickCallback: (node) => {
287
353
  if (!notSelectable) {
288
- selectedNode = module.id;
354
+ selectedNode = mod.id;
289
355
  }
290
- dispatch('click', module);
356
+ dispatch('click', mod);
291
357
  }
292
358
  };
293
359
  }
294
360
  </script>
295
361
 
296
- <div bind:clientWidth={width} class="w-full h-full overflow-hidden">
362
+ <div bind:clientWidth={width} class="w-full h-full overflow-hidden relative">
297
363
  {#if width && height}
298
364
  <Svelvet {nodes} {width} {edges} {height} bgColor="rgb(249 250 251)" />
299
365
  {/if}
@@ -1,12 +1,13 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import { type FlowModule, FlowStatusModule } from '../../gen';
2
+ import { type FlowModule } from '../../gen';
3
+ import { type GraphModuleState } from '.';
3
4
  declare const __propDef: {
4
5
  props: {
5
6
  modules?: FlowModule[] | undefined;
6
7
  failureModule?: FlowModule | undefined;
7
8
  minHeight?: number | undefined;
8
9
  notSelectable?: boolean | undefined;
9
- flowModuleStates?: Record<string, FlowStatusModule.type> | undefined;
10
+ flowModuleStates?: Record<string, GraphModuleState> | undefined;
10
11
  };
11
12
  events: {
12
13
  click: CustomEvent<any>;
@@ -1,3 +1,4 @@
1
+ import type { FlowStatusModule } from "../../gen";
1
2
  import type { Node as SvelvetNode } from "svelvet";
2
3
  export type ModuleHost = 'workspace' | 'inline' | 'hub';
3
4
  export type Node = SvelvetNode & {
@@ -15,6 +16,16 @@ export type Branch = {
15
16
  items: NestedNodes[];
16
17
  };
17
18
  export type GraphItem = Node | Loop | Branch;
19
+ export type GraphModuleState = {
20
+ type: FlowStatusModule.type;
21
+ logs?: string;
22
+ result?: any;
23
+ scheduled_for?: string;
24
+ job_id?: string;
25
+ parent_module?: string;
26
+ iteration_total?: number;
27
+ retries?: number;
28
+ };
18
29
  export type NestedNodes = GraphItem[];
19
30
  export declare function isNode(item: GraphItem | NestedNodes | undefined): item is Node;
20
31
  export declare function isLoop(item: GraphItem | NestedNodes | undefined): item is Loop;
@@ -0,0 +1,265 @@
1
+ <script>import CenteredPage from '../CenteredPage.svelte';
2
+ import { AppService, FlowService, ListableApp, Script, ScriptService } from '../../gen';
3
+ import { superadmin, userStore, workspaceStore } from '../../stores';
4
+ import { Skeleton, ToggleButton, ToggleButtonGroup } from '../common';
5
+ import { canWrite } from '../../utils';
6
+ import ShareModal from '../ShareModal.svelte';
7
+ import { Code2, LayoutDashboard } from 'lucide-svelte';
8
+ export let filter = '';
9
+ import ScriptRow from '../common/table/ScriptRow.svelte';
10
+ import FlowRow from '../common/table/FlowRow.svelte';
11
+ import AppRow from '../common/table/AppRow.svelte';
12
+ import NoItemFound from './NoItemFound.svelte';
13
+ import ListFilters from './ListFilters.svelte';
14
+ import SearchItems from '../SearchItems.svelte';
15
+ import { Icon } from 'svelte-awesome';
16
+ import { faBarsStaggered } from '@fortawesome/free-solid-svg-icons';
17
+ let scripts;
18
+ let flows;
19
+ let apps;
20
+ let filteredItems = [];
21
+ let itemKind = 'all';
22
+ let shareModalScripts;
23
+ let shareModalFlows;
24
+ let loading = true;
25
+ async function loadScripts() {
26
+ const loadedScripts = await ScriptService.listScripts({
27
+ workspace: $workspaceStore,
28
+ perPage: 300
29
+ });
30
+ scripts = loadedScripts.map((script) => {
31
+ return {
32
+ canWrite: canWrite(script.path, script.extra_perms, $userStore) &&
33
+ script.workspace_id == $workspaceStore &&
34
+ !$userStore?.operator,
35
+ ...script
36
+ };
37
+ });
38
+ loading = false;
39
+ }
40
+ async function loadFlows() {
41
+ flows = (await FlowService.listFlows({ workspace: $workspaceStore })).map((x) => {
42
+ return {
43
+ canWrite: canWrite(x.path, x.extra_perms, $userStore) &&
44
+ x.workspace_id == $workspaceStore &&
45
+ !$userStore?.operator,
46
+ ...x
47
+ };
48
+ });
49
+ loading = false;
50
+ }
51
+ async function loadApps() {
52
+ apps = (await AppService.listApps({ workspace: $workspaceStore })).map((app) => {
53
+ return {
54
+ canWrite: canWrite(app.path, app.extra_perms, $userStore) &&
55
+ app.workspace_id == $workspaceStore &&
56
+ !$userStore?.operator,
57
+ ...app
58
+ };
59
+ });
60
+ loading = false;
61
+ }
62
+ $: owners = Array.from(new Set(filteredItems?.map((x) => x.path.split('/').slice(0, 2).join('/')) ?? [])).sort();
63
+ let combinedItems = undefined;
64
+ $: combinedItems =
65
+ flows == undefined || scripts == undefined || apps == undefined
66
+ ? undefined
67
+ : [
68
+ ...flows.map((x) => ({
69
+ ...x,
70
+ type: 'flow',
71
+ time: new Date(x.edited_at).getTime()
72
+ })),
73
+ ...scripts.map((x) => ({
74
+ ...x,
75
+ type: 'script',
76
+ time: new Date(x.created_at).getTime()
77
+ })),
78
+ ...apps.map((x) => ({
79
+ ...x,
80
+ type: 'app',
81
+ time: new Date(x.edited_at).getTime()
82
+ }))
83
+ ].sort((a, b) => a.starred != b.starred ? (a.starred ? -1 : 1) : a.time - b.time > 0 ? -1 : 1);
84
+ $: preFilteredItems =
85
+ ownerFilter != undefined
86
+ ? combinedItems?.filter((x) => x.path.startsWith(ownerFilter ?? '') && (x.type == itemKind || itemKind == 'all'))
87
+ : combinedItems?.filter((x) => x.type == itemKind || itemKind == 'all');
88
+ let ownerFilter = undefined;
89
+ $: {
90
+ if (($userStore || $superadmin) && $workspaceStore) {
91
+ loadScripts();
92
+ loadFlows();
93
+ loadApps();
94
+ }
95
+ }
96
+ const cmp = new Intl.Collator('en').compare;
97
+ const opts = {
98
+ sort: (info, haystack, needle) => {
99
+ let { idx, chars, terms, interLft2, interLft1,
100
+ // interRgt2,
101
+ // interRgt1,
102
+ start, intraIns, interIns } = info;
103
+ const sortResult = idx
104
+ .map((v, i) => i)
105
+ .sort((ia, ib) =>
106
+ // most contig chars matched
107
+ chars[ib] - chars[ia] ||
108
+ // least char intra-fuzz (most contiguous)
109
+ intraIns[ia] - intraIns[ib] ||
110
+ // most prefix bounds, boosted by full term matches
111
+ terms[ib] +
112
+ interLft2[ib] +
113
+ 0.5 * interLft1[ib] -
114
+ (terms[ia] + interLft2[ia] + 0.5 * interLft1[ia]) ||
115
+ // highest density of match (least span)
116
+ // span[ia] - span[ib] ||
117
+ // highest density of match (least term inter-fuzz)
118
+ interIns[ia] - interIns[ib] ||
119
+ // earliest start of match
120
+ start[ia] - start[ib] ||
121
+ // alphabetic
122
+ cmp(haystack[idx[ia]], haystack[idx[ib]]) +
123
+ (preFilteredItems?.[idx[ib]]?.starred ? 100 : 0) -
124
+ (preFilteredItems?.[idx[ia]]?.starred ? 100 : 0));
125
+ return sortResult;
126
+ }
127
+ };
128
+ $: items = filter !== '' ? filteredItems : preFilteredItems;
129
+ function resetScroll() {
130
+ const element = document.getElementsByTagName('svelte-virtual-list-viewport');
131
+ const firstElement = element.item(0);
132
+ if (firstElement) {
133
+ firstElement.scrollTop = 0;
134
+ }
135
+ }
136
+ $: items && resetScroll();
137
+ </script>
138
+
139
+ <SearchItems
140
+ {filter}
141
+ items={preFilteredItems}
142
+ bind:filteredItems
143
+ f={(x) => (x.summary ? x.summary + ' (' + x.path + ')' : x.path)}
144
+ {opts}
145
+ />
146
+
147
+ <ShareModal
148
+ bind:this={shareModalScripts}
149
+ kind="script"
150
+ on:change={() => {
151
+ loadScripts()
152
+ }}
153
+ />
154
+
155
+ <ShareModal
156
+ bind:this={shareModalFlows}
157
+ kind="flow"
158
+ on:change={() => {
159
+ loadFlows()
160
+ }}
161
+ />
162
+
163
+ <CenteredPage>
164
+ <div class="flex flex-col md:flex-row gap-2 items-center sm:justify-between w-full">
165
+ <div>
166
+ <ToggleButtonGroup bind:selected={itemKind}>
167
+ <ToggleButton light position="left" value="all" size="sm">All</ToggleButton>
168
+ <ToggleButton light position="center" value="script" size="sm">
169
+ <div class="flex gap-1 items-center">
170
+ <Code2 size={16} />
171
+ Scripts
172
+ </div>
173
+ </ToggleButton>
174
+ <ToggleButton light position="center" value="flow" size="sm">
175
+ <div class="flex gap-1 items-center">
176
+ <Icon data={faBarsStaggered} scale={0.8} class="mr-1" />
177
+ Flows
178
+ </div>
179
+ </ToggleButton>
180
+ <ToggleButton light position="right" value="app" size="sm">
181
+ <div class="flex gap-1 items-center">
182
+ <LayoutDashboard size={16} />
183
+ Apps
184
+ </div>
185
+ </ToggleButton>
186
+ </ToggleButtonGroup>
187
+ </div>
188
+
189
+ <div class="relative text-gray-600 w-full">
190
+ <!-- svelte-ignore a11y-autofocus -->
191
+ <input
192
+ autofocus
193
+ placeholder="Search Scripts, Flows & Apps"
194
+ bind:value={filter}
195
+ class="bg-white !h-10 !px-4 !pr-10 !rounded-lg text-sm focus:outline-none"
196
+ />
197
+ <button type="submit" class="absolute right-0 top-0 mt-3 mr-4">
198
+ <svg
199
+ class="h-4 w-4 fill-current"
200
+ xmlns="http://www.w3.org/2000/svg"
201
+ xmlns:xlink="http://www.w3.org/1999/xlink"
202
+ version="1.1"
203
+ id="Capa_1"
204
+ x="0px"
205
+ y="0px"
206
+ viewBox="0 0 56.966 56.966"
207
+ style="enable-background:new 0 0 56.966 56.966;"
208
+ xml:space="preserve"
209
+ width="512px"
210
+ height="512px"
211
+ >
212
+ <path
213
+ d="M55.146,51.887L41.588,37.786c3.486-4.144,5.396-9.358,5.396-14.786c0-12.682-10.318-23-23-23s-23,10.318-23,23 s10.318,23,23,23c4.761,0,9.298-1.436,13.177-4.162l13.661,14.208c0.571,0.593,1.339,0.92,2.162,0.92 c0.779,0,1.518-0.297,2.079-0.837C56.255,54.982,56.293,53.08,55.146,51.887z M23.984,6c9.374,0,17,7.626,17,17s-7.626,17-17,17 s-17-7.626-17-17S14.61,6,23.984,6z"
214
+ />
215
+ </svg>
216
+ </button>
217
+ </div>
218
+ </div>
219
+
220
+ <ListFilters bind:selectedFilter={ownerFilter} filters={owners} />
221
+ <div>
222
+ {#if filteredItems == undefined}
223
+ <div class="mt-4" />
224
+ <Skeleton layout={[[2], 1]} />
225
+ {#each new Array(6) as _}
226
+ <Skeleton layout={[[4], 0.5]} />
227
+ {/each}
228
+ {:else if filteredItems.length === 0}
229
+ <NoItemFound />
230
+ {:else}
231
+ <div class="border rounded-md divide-y divide-gray-200 mb-80">
232
+ <!-- <VirtualList {items} let:item bind:start bind:end> -->
233
+ {#each items ?? [] as item, i (item.type + '/' + item.path)}
234
+ {#if item.type == 'script'}
235
+ <ScriptRow
236
+ starred={item.starred ?? false}
237
+ marked={item.marked}
238
+ on:change={loadScripts}
239
+ script={item}
240
+ shareModal={shareModalScripts}
241
+ />
242
+ {:else if item.type == 'flow'}
243
+ <FlowRow
244
+ starred={item.starred ?? false}
245
+ marked={item.marked}
246
+ on:change={loadFlows}
247
+ flow={item}
248
+ shareModal={shareModalFlows}
249
+ />
250
+ {:else if item.type == 'app'}
251
+ <AppRow
252
+ starred={item.starred ?? false}
253
+ marked={item.marked}
254
+ on:change={loadApps}
255
+ app={item}
256
+ />
257
+ {/if}
258
+ {/each}
259
+ <!-- </VirtualList> -->
260
+ </div>
261
+ <!-- <span class="text-xs">{pluralize(items?.length ?? 0, 'item')}</span>
262
+ <span class="text-xs">{`(${start} - ${end})`}</span> -->
263
+ {/if}
264
+ </div>
265
+ </CenteredPage>
@@ -0,0 +1,16 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ filter?: string | undefined;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {};
10
+ };
11
+ export type ItemsListProps = typeof __propDef.props;
12
+ export type ItemsListEvents = typeof __propDef.events;
13
+ export type ItemsListSlots = typeof __propDef.slots;
14
+ export default class ItemsList extends SvelteComponentTyped<ItemsListProps, ItemsListEvents, ItemsListSlots> {
15
+ }
16
+ export {};