windmill-components 1.60.4 → 1.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (549) hide show
  1. package/assets/app.css +15 -1
  2. package/common.d.ts +5 -1
  3. package/components/ApiConnectForm.svelte +66 -5
  4. package/components/AppConnect.svelte +26 -10
  5. package/components/ArgInput.svelte +1 -1
  6. package/components/CliHelpBox.svelte +49 -0
  7. package/components/CliHelpBox.svelte.d.ts +14 -0
  8. package/components/DisplayResult.svelte +78 -10
  9. package/components/DisplayResult.svelte.d.ts +1 -0
  10. package/components/Editor.svelte +17 -7
  11. package/components/EditorBar.svelte +129 -111
  12. package/components/FieldHeader.svelte +12 -8
  13. package/components/FlowBuilder.svelte +107 -39
  14. package/components/FlowBuilder.svelte.d.ts +5 -0
  15. package/components/FlowGraphViewer.svelte +5 -4
  16. package/components/FlowJobResult.svelte +13 -5
  17. package/components/FlowJobResult.svelte.d.ts +1 -0
  18. package/components/FlowMetadata.svelte +24 -8
  19. package/components/FlowPreviewContent.svelte +5 -11
  20. package/components/FlowStatusViewer.svelte +62 -17
  21. package/components/FolderEditor.svelte +3 -2
  22. package/components/GroupEditor.svelte +8 -0
  23. package/components/HighlightCode.svelte +7 -1
  24. package/components/InlineCodeCopy.svelte +11 -0
  25. package/components/InlineCodeCopy.svelte.d.ts +16 -0
  26. package/components/InputTransformForm.svelte +22 -25
  27. package/components/InputTransformSchemaForm.svelte +103 -0
  28. package/components/InputTransformSchemaForm.svelte.d.ts +24 -0
  29. package/components/LogViewer.svelte +7 -1
  30. package/components/LogViewer.svelte.d.ts +1 -0
  31. package/components/ModulePreview.svelte +13 -3
  32. package/components/MoveDrawer.svelte +1 -1
  33. package/components/Multiselect.svelte +1 -1
  34. package/components/Multiselect.svelte.d.ts +2 -2
  35. package/components/ObjectResourceInput.svelte +6 -1
  36. package/components/Path.svelte +29 -16
  37. package/components/Popover.svelte +10 -15
  38. package/components/Popover.svelte.d.ts +1 -0
  39. package/components/Range.svelte.d.ts +2 -2
  40. package/components/ResourceEditor.svelte +39 -16
  41. package/components/ResourcePicker.svelte +33 -15
  42. package/components/RunChart.svelte +24 -5
  43. package/components/RunForm.svelte +26 -3
  44. package/components/RunForm.svelte.d.ts +2 -0
  45. package/components/ScheduleEditor.svelte +1 -1
  46. package/components/SchemaEditor.svelte +2 -2
  47. package/components/SchemaForm.svelte +72 -60
  48. package/components/SchemaForm.svelte.d.ts +1 -5
  49. package/components/ScriptBuilder.svelte +69 -30
  50. package/components/ScriptBuilder.svelte.d.ts +1 -0
  51. package/components/ScriptEditor.svelte +1 -0
  52. package/components/ScriptPicker.svelte +3 -0
  53. package/components/SharedBadge.svelte +5 -5
  54. package/components/SimpleEditor.svelte +4 -1
  55. package/components/SimpleEditor.svelte.d.ts +2 -0
  56. package/components/Slider.svelte +19 -0
  57. package/components/Slider.svelte.d.ts +20 -0
  58. package/components/StringTypeNarrowing.svelte +0 -1
  59. package/components/SuperadminSettings.svelte +11 -3
  60. package/components/SuperadminSettings.svelte.d.ts +2 -0
  61. package/components/TemplateEditor.svelte +1 -1
  62. package/components/TemplateEditor.svelte.d.ts +204 -0
  63. package/components/TestJobLoader.svelte +5 -5
  64. package/components/Toggle.svelte +18 -6
  65. package/components/Toggle.svelte.d.ts +2 -0
  66. package/components/Tooltip.svelte +1 -1
  67. package/components/UserSettings.svelte +13 -3
  68. package/components/UserSettings.svelte.d.ts +2 -0
  69. package/components/VariableEditor.svelte +1 -1
  70. package/components/WhitelistIp.svelte +23 -0
  71. package/components/WhitelistIp.svelte.d.ts +14 -0
  72. package/components/apps/components/buttons/AppButton.svelte +79 -17
  73. package/components/apps/components/buttons/AppButton.svelte.d.ts +4 -0
  74. package/components/apps/components/{form → buttons}/AppForm.svelte +19 -7
  75. package/components/apps/components/{form → buttons}/AppForm.svelte.d.ts +3 -0
  76. package/components/apps/components/buttons/AppFormButton.svelte +145 -0
  77. package/components/apps/components/buttons/AppFormButton.svelte.d.ts +28 -0
  78. package/components/apps/components/buttons/index.d.ts +3 -0
  79. package/components/apps/components/buttons/index.js +3 -0
  80. package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte +27 -8
  81. package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte.d.ts +4 -0
  82. package/components/apps/components/display/AppDisplayComponent.svelte +36 -0
  83. package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +24 -0
  84. package/components/apps/components/display/AppHtml.svelte +46 -0
  85. package/components/apps/components/{dataDisplay → display}/AppHtml.svelte.d.ts +4 -1
  86. package/components/apps/components/display/AppIcon.svelte +47 -0
  87. package/components/apps/components/display/AppIcon.svelte.d.ts +25 -0
  88. package/components/apps/components/display/AppImage.svelte +34 -0
  89. package/components/apps/components/display/AppImage.svelte.d.ts +25 -0
  90. package/components/apps/components/display/AppMap.svelte +214 -0
  91. package/components/apps/components/display/AppMap.svelte.d.ts +23 -0
  92. package/components/apps/components/display/AppPdf.svelte +304 -0
  93. package/components/apps/components/display/AppPdf.svelte.d.ts +24 -0
  94. package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte +16 -7
  95. package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte.d.ts +4 -0
  96. package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte +13 -4
  97. package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte.d.ts +4 -0
  98. package/components/apps/components/{dataDisplay → display}/AppText.svelte +42 -34
  99. package/components/apps/components/{dataDisplay → display}/AppText.svelte.d.ts +4 -0
  100. package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte +14 -5
  101. package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte.d.ts +4 -0
  102. package/components/apps/components/display/PlotlyHtml.svelte +32 -0
  103. package/components/apps/components/display/PlotlyHtml.svelte.d.ts +24 -0
  104. package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte +4 -10
  105. package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte.d.ts +2 -0
  106. package/components/apps/components/display/index.d.ts +15 -0
  107. package/components/apps/components/display/index.js +15 -0
  108. package/components/apps/components/display/table/AppAggridTable.svelte +92 -0
  109. package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +25 -0
  110. package/components/apps/components/{table → display/table}/AppTable.svelte +85 -29
  111. package/components/apps/components/{table → display/table}/AppTable.svelte.d.ts +6 -2
  112. package/components/apps/components/{table → display/table}/AppTableFooter.svelte +9 -2
  113. package/components/apps/components/{table → display/table}/AppTableFooter.svelte.d.ts +2 -0
  114. package/components/apps/components/helpers/AlignWrapper.svelte +29 -23
  115. package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +6 -2
  116. package/components/apps/components/helpers/HiddenComponent.svelte +23 -0
  117. package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +25 -0
  118. package/components/apps/components/helpers/InputDefaultValue.svelte +17 -0
  119. package/components/apps/components/helpers/InputDefaultValue.svelte.d.ts +17 -0
  120. package/components/apps/components/helpers/InputValue.svelte +39 -18
  121. package/components/apps/components/helpers/InputValue.svelte.d.ts +0 -1
  122. package/components/apps/components/helpers/NonRunnableComponent.svelte +18 -3
  123. package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -0
  124. package/components/apps/components/helpers/RefreshButton.svelte +1 -1
  125. package/components/apps/components/helpers/ResizeWrapper.svelte +24 -0
  126. package/components/apps/components/helpers/ResizeWrapper.svelte.d.ts +19 -0
  127. package/components/apps/components/helpers/RunnableComponent.svelte +99 -102
  128. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +5 -2
  129. package/components/apps/components/helpers/RunnableWrapper.svelte +16 -7
  130. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +5 -2
  131. package/components/apps/components/helpers/index.d.ts +10 -0
  132. package/components/apps/components/helpers/index.js +10 -0
  133. package/components/apps/components/icon.d.ts +1 -0
  134. package/components/apps/components/icon.js +18 -0
  135. package/components/apps/components/index.d.ts +5 -0
  136. package/components/apps/components/index.js +5 -0
  137. package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte +12 -4
  138. package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte.d.ts +3 -0
  139. package/components/apps/components/inputs/AppDateInput.svelte +47 -0
  140. package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte.d.ts +6 -1
  141. package/components/apps/components/inputs/AppFileInput.svelte +42 -0
  142. package/components/apps/components/inputs/AppFileInput.svelte.d.ts +23 -0
  143. package/components/apps/components/inputs/AppMultiSelect.svelte +82 -0
  144. package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +27 -0
  145. package/components/apps/components/inputs/AppNumberInput.svelte +52 -0
  146. package/components/apps/components/{numberInputs → inputs}/AppNumberInput.svelte.d.ts +5 -0
  147. package/components/apps/components/inputs/AppRangeInput.svelte +85 -0
  148. package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +26 -0
  149. package/components/apps/components/inputs/AppSelect.svelte +127 -0
  150. package/components/apps/components/{selectInputs → inputs}/AppSelect.svelte.d.ts +5 -0
  151. package/components/apps/components/inputs/AppSliderInputs.svelte +73 -0
  152. package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte.d.ts +3 -0
  153. package/components/apps/components/inputs/AppTextInput.svelte +71 -0
  154. package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte.d.ts +6 -0
  155. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +59 -0
  156. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +24 -0
  157. package/components/apps/components/inputs/currency/CurrencyInput.svelte +183 -0
  158. package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +33 -0
  159. package/components/apps/components/inputs/index.d.ts +9 -0
  160. package/components/apps/components/inputs/index.js +9 -0
  161. package/components/apps/components/layout/AppContainer.svelte +40 -0
  162. package/components/apps/components/layout/AppContainer.svelte.d.ts +24 -0
  163. package/components/apps/components/layout/AppDivider.svelte +40 -0
  164. package/components/apps/components/layout/AppDivider.svelte.d.ts +24 -0
  165. package/components/apps/components/layout/AppDrawer.svelte +89 -0
  166. package/components/apps/components/layout/AppDrawer.svelte.d.ts +24 -0
  167. package/components/apps/components/layout/AppSplitpanes.svelte +88 -0
  168. package/components/apps/components/layout/AppSplitpanes.svelte.d.ts +26 -0
  169. package/components/apps/components/layout/AppTabs.svelte +99 -0
  170. package/components/apps/components/layout/AppTabs.svelte.d.ts +27 -0
  171. package/components/apps/components/layout/index.d.ts +5 -0
  172. package/components/apps/components/layout/index.js +5 -0
  173. package/components/apps/editor/AppComponentInput.svelte +33 -0
  174. package/components/apps/editor/AppComponentInput.svelte.d.ts +18 -0
  175. package/components/apps/editor/AppComponentInputs.svelte +13 -0
  176. package/components/apps/editor/AppComponentInputs.svelte.d.ts +20 -0
  177. package/components/apps/editor/AppEditor.svelte +134 -35
  178. package/components/apps/editor/AppEditor.svelte.d.ts +4 -1
  179. package/components/apps/editor/AppEditorHeader.svelte +178 -47
  180. package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
  181. package/components/apps/editor/AppInputs.svelte +60 -0
  182. package/components/apps/editor/AppInputs.svelte.d.ts +14 -0
  183. package/components/apps/editor/AppPreview.svelte +30 -12
  184. package/components/apps/editor/ComponentHeader.svelte +52 -3
  185. package/components/apps/editor/ComponentHeader.svelte.d.ts +2 -1
  186. package/components/apps/editor/GridEditor.svelte +134 -77
  187. package/components/apps/editor/GridEditor.svelte.d.ts +2 -0
  188. package/components/apps/editor/GridPanel.svelte +29 -0
  189. package/components/apps/editor/GridPanel.svelte.d.ts +18 -0
  190. package/components/apps/editor/RecomputeAllComponents.svelte +8 -6
  191. package/components/apps/editor/SettingsPanel.svelte +26 -8
  192. package/components/apps/editor/SubGridEditor.svelte +139 -0
  193. package/components/apps/editor/SubGridEditor.svelte.d.ts +29 -0
  194. package/components/apps/editor/appUtils.d.ts +19 -0
  195. package/components/apps/editor/appUtils.js +241 -0
  196. package/components/apps/editor/component/Component.svelte +434 -0
  197. package/components/apps/editor/{ComponentEditor.svelte.d.ts → component/Component.svelte.d.ts} +7 -5
  198. package/components/apps/editor/component/ComponentNavigation.svelte +125 -0
  199. package/components/apps/editor/component/ComponentNavigation.svelte.d.ts +14 -0
  200. package/components/apps/editor/component/README.md +15 -0
  201. package/components/apps/editor/component/components.d.ts +77 -0
  202. package/components/apps/editor/component/components.js +1476 -0
  203. package/components/apps/editor/component/default-codes.d.ts +3 -0
  204. package/components/apps/editor/component/default-codes.js +322 -0
  205. package/components/apps/editor/component/index.d.ts +4 -0
  206. package/components/apps/editor/component/index.js +4 -0
  207. package/components/apps/editor/component/sets.d.ts +2 -0
  208. package/components/apps/editor/component/sets.js +55 -0
  209. package/components/apps/editor/componentsPanel/ComponentList.svelte +75 -108
  210. package/components/apps/editor/componentsPanel/CssProperty.svelte +67 -0
  211. package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +21 -0
  212. package/components/apps/editor/componentsPanel/CssSettings.svelte +188 -0
  213. package/components/apps/editor/componentsPanel/CssSettings.svelte.d.ts +14 -0
  214. package/components/apps/editor/componentsPanel/ListItem.svelte +39 -0
  215. package/components/apps/editor/componentsPanel/ListItem.svelte.d.ts +20 -0
  216. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +5 -1
  217. package/components/apps/editor/componentsPanel/componentStaticValues.js +16 -1
  218. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -1
  219. package/components/apps/editor/contextPanel/ContextPanel.svelte +115 -67
  220. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +109 -10
  221. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -0
  222. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +88 -41
  223. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +5 -0
  224. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +32 -6
  225. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -0
  226. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +75 -8
  227. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +128 -72
  228. package/components/apps/editor/inlineScriptsPanel/utils.d.ts +5 -5
  229. package/components/apps/editor/inlineScriptsPanel/utils.js +48 -7
  230. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
  231. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte.d.ts +1 -1
  232. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +14 -10
  233. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +68 -1
  234. package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +1 -1
  235. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +130 -61
  236. package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +6 -3
  237. package/components/apps/editor/settingsPanel/GridPane.svelte +75 -0
  238. package/components/apps/editor/settingsPanel/GridPane.svelte.d.ts +20 -0
  239. package/components/apps/editor/settingsPanel/GridTab.svelte +73 -0
  240. package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +20 -0
  241. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +5 -1
  242. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -2
  243. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +93 -78
  244. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
  245. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +92 -0
  246. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte.d.ts +18 -0
  247. package/components/apps/editor/settingsPanel/Recompute.svelte +5 -2
  248. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +1 -1
  249. package/components/apps/editor/settingsPanel/TableActions.svelte +45 -7
  250. package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
  251. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +6 -4
  252. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +48 -0
  253. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte.d.ts +19 -0
  254. package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +1 -1
  255. package/components/apps/editor/settingsPanel/inputEditor/EvalInputEditor.svelte +1 -1
  256. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +107 -0
  257. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +21 -0
  258. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +2 -2
  259. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +2 -1
  260. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +59 -6
  261. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +3 -0
  262. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +21 -0
  263. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +17 -0
  264. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +1 -0
  265. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte.d.ts +1 -0
  266. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +4 -21
  267. package/components/apps/gridUtils.d.ts +3 -1
  268. package/components/apps/gridUtils.js +5 -3
  269. package/components/apps/inputType.d.ts +34 -6
  270. package/components/apps/rx.js +2 -1
  271. package/components/apps/store.d.ts +6 -1
  272. package/components/apps/types.d.ts +47 -42
  273. package/components/apps/types.js +1 -1
  274. package/components/apps/utils.d.ts +6 -5
  275. package/components/apps/utils.js +63 -95
  276. package/components/common/button/Button.svelte +12 -5
  277. package/components/common/button/Button.svelte.d.ts +3 -1
  278. package/components/common/button/ButtonPopup.svelte +2 -0
  279. package/components/common/button/ButtonPopup.svelte.d.ts +2 -1
  280. package/components/common/button/UndoRedo.svelte +32 -0
  281. package/components/common/button/UndoRedo.svelte.d.ts +20 -0
  282. package/components/common/button/model.d.ts +2 -2
  283. package/components/common/button/model.js +21 -6
  284. package/components/common/confirmationModal/ConfirmationModal.svelte +8 -1
  285. package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +4 -4
  286. package/components/common/drawer/Drawer.svelte +13 -5
  287. package/components/common/drawer/Drawer.svelte.d.ts +3 -1
  288. package/components/common/drawer/DrawerContent.svelte +0 -1
  289. package/components/common/fileInput/FileInput.svelte +138 -0
  290. package/components/common/fileInput/FileInput.svelte.d.ts +29 -0
  291. package/components/common/fileInput/model.d.ts +1 -0
  292. package/components/common/fileInput/model.js +1 -0
  293. package/components/common/index.d.ts +2 -0
  294. package/components/common/index.js +2 -0
  295. package/components/common/kbd/Kbd.svelte.d.ts +2 -2
  296. package/components/common/menu/Menu.svelte +3 -2
  297. package/components/common/menu/Menu.svelte.d.ts +2 -1
  298. package/components/common/modal/Modal.svelte +79 -0
  299. package/components/common/modal/Modal.svelte.d.ts +24 -0
  300. package/components/common/popup/Popup.svelte +34 -17
  301. package/components/common/popup/Popup.svelte.d.ts +11 -4
  302. package/components/common/table/AppRow.svelte +13 -4
  303. package/components/common/table/AppRow.svelte.d.ts +1 -0
  304. package/components/common/table/FlowRow.svelte +40 -8
  305. package/components/common/table/FlowRow.svelte.d.ts +1 -0
  306. package/components/common/table/LanguageBadge.svelte +10 -4
  307. package/components/common/table/Row.svelte +1 -1
  308. package/components/common/table/ScriptRow.svelte +44 -12
  309. package/components/common/table/ScriptRow.svelte.d.ts +1 -0
  310. package/components/common/tabs/Tab.svelte +12 -5
  311. package/components/common/tabs/Tab.svelte.d.ts +4 -1
  312. package/components/common/tabs/Tabs.svelte +12 -8
  313. package/components/common/tabs/Tabs.svelte.d.ts +6 -2
  314. package/components/flows/CreateActionsFlow.svelte +2 -3
  315. package/components/flows/FlowEditor.svelte +6 -4
  316. package/components/flows/common/FlowCardHeader.svelte +4 -1
  317. package/components/flows/content/BranchPredicateEditor.svelte +13 -12
  318. package/components/flows/content/CapturePayload.svelte +1 -2
  319. package/components/flows/content/FlowBranchesAllWrapper.svelte +1 -1
  320. package/components/flows/content/FlowConstants.svelte +7 -13
  321. package/components/flows/content/FlowEditorPanel.svelte +4 -3
  322. package/components/flows/content/FlowFailureModule.svelte +2 -1
  323. package/components/flows/content/FlowInput.svelte +4 -2
  324. package/components/flows/content/FlowInputs.svelte +109 -99
  325. package/components/flows/content/FlowLoop.svelte +4 -5
  326. package/components/flows/content/FlowModuleComponent.svelte +26 -13
  327. package/components/flows/content/FlowModuleEarlyStop.svelte +3 -1
  328. package/components/flows/content/FlowModuleHeader.svelte +26 -3
  329. package/components/flows/content/FlowModuleHeader.svelte.d.ts +1 -0
  330. package/components/flows/content/FlowModuleSleep.svelte +2 -2
  331. package/components/flows/content/FlowModuleWrapper.svelte +2 -8
  332. package/components/flows/content/FlowRetries.svelte +8 -6
  333. package/components/flows/content/FlowSchedules.svelte +1 -2
  334. package/components/flows/content/FlowSettings.svelte +77 -51
  335. package/components/flows/content/ScriptEditorDrawer.svelte +98 -0
  336. package/components/flows/content/ScriptEditorDrawer.svelte.d.ts +19 -0
  337. package/components/flows/flowState.d.ts +2 -2
  338. package/components/flows/flowState.js +1 -3
  339. package/components/flows/flowStateUtils.d.ts +7 -6
  340. package/components/flows/flowStateUtils.js +9 -11
  341. package/components/flows/flowStore.d.ts +5 -3
  342. package/components/flows/flowStore.js +6 -17
  343. package/components/flows/header/FlowImportExportMenu.svelte +2 -1
  344. package/components/flows/map/FlowConstantsItem.svelte +2 -2
  345. package/components/flows/map/FlowErrorHandlerItem.svelte +12 -13
  346. package/components/flows/map/FlowInputsItem.svelte +2 -3
  347. package/components/flows/map/FlowModuleSchemaItem.svelte +88 -91
  348. package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +3 -3
  349. package/components/flows/map/FlowModuleSchemaMap.svelte +163 -130
  350. package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -1
  351. package/components/flows/map/FlowSettingsItem.svelte +5 -4
  352. package/components/flows/map/InsertModuleButton.svelte +34 -18
  353. package/components/flows/map/InsertModuleButton.svelte.d.ts +2 -0
  354. package/components/flows/map/MapItem.svelte +176 -101
  355. package/components/flows/map/MapItem.svelte.d.ts +20 -2
  356. package/components/flows/map/VirtualItem.svelte +129 -0
  357. package/components/flows/map/VirtualItem.svelte.d.ts +44 -0
  358. package/components/flows/pickers/WorkspaceScriptPicker.svelte +1 -1
  359. package/components/flows/previousResults.d.ts +1 -1
  360. package/components/flows/previousResults.js +32 -17
  361. package/components/flows/types.d.ts +13 -1
  362. package/components/flows/utils.js +17 -11
  363. package/components/graph/FlowGraph.svelte +247 -164
  364. package/components/graph/FlowGraph.svelte.d.ts +15 -1
  365. package/components/graph/model.d.ts +6 -36
  366. package/components/graph/model.js +1 -1
  367. package/components/graph/svelvet/LICENSE +21 -0
  368. package/components/graph/svelvet/collapsible/controllers/util.d.ts +15 -0
  369. package/components/graph/svelvet/collapsible/controllers/util.js +144 -0
  370. package/components/graph/svelvet/collapsible/models/Collapsible.d.ts +17 -0
  371. package/components/graph/svelvet/collapsible/models/Collapsible.js +25 -0
  372. package/components/graph/svelvet/collapsible/types/types.d.ts +8 -0
  373. package/components/graph/svelvet/collapsible/types/types.js +1 -0
  374. package/components/graph/svelvet/container/README.md +7 -0
  375. package/components/graph/svelvet/container/controllers/middleware.d.ts +18 -0
  376. package/components/graph/svelvet/container/controllers/middleware.js +101 -0
  377. package/components/graph/svelvet/container/views/GraphView.svelte +252 -0
  378. package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +25 -0
  379. package/components/graph/svelvet/container/views/Svelvet.svelte +131 -0
  380. package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +41 -0
  381. package/components/graph/svelvet/customCss/controllers/getCss.d.ts +2 -0
  382. package/components/graph/svelvet/customCss/controllers/getCss.js +57 -0
  383. package/components/graph/svelvet/d3/controllers/README.md +3 -0
  384. package/components/graph/svelvet/d3/controllers/d3.d.ts +5 -0
  385. package/components/graph/svelvet/d3/controllers/d3.js +59 -0
  386. package/components/graph/svelvet/d3/controllers/d3Old.d.ts +1 -0
  387. package/components/graph/svelvet/d3/controllers/d3Old.js +43 -0
  388. package/components/graph/svelvet/docs/CHANGELOG.md +145 -0
  389. package/components/graph/svelvet/docs/DESIGN_PATTERNS.md +44 -0
  390. package/components/graph/svelvet/docs/DOCUMENTATION.md +5 -0
  391. package/components/graph/svelvet/docs/README.md +34 -0
  392. package/components/graph/svelvet/docs/TODO.md +14 -0
  393. package/components/graph/svelvet/docs/Tutorials.md +25 -0
  394. package/components/graph/svelvet/docs/images/css-background-after.png +0 -0
  395. package/components/graph/svelvet/docs/images/css-background-before.png +0 -0
  396. package/components/graph/svelvet/docs/images/custom-edges-after.png +0 -0
  397. package/components/graph/svelvet/docs/images/custom-edges-before.png +0 -0
  398. package/components/graph/svelvet/docs/images/custom-nodes-after.png +0 -0
  399. package/components/graph/svelvet/docs/images/custom-nodes-before.png +0 -0
  400. package/components/graph/svelvet/docs/images/custom-svelte-components-after.png +0 -0
  401. package/components/graph/svelvet/docs/images/custom-svelte-components-before.png +0 -0
  402. package/components/graph/svelvet/docs/images/html-docs-after.png +0 -0
  403. package/components/graph/svelvet/docs/images/html-docs-before.png +0 -0
  404. package/components/graph/svelvet/docs/images/minimap-after.png +0 -0
  405. package/components/graph/svelvet/docs/images/minimap-before.png +0 -0
  406. package/components/graph/svelvet/docs/images/node-classes-after.png +0 -0
  407. package/components/graph/svelvet/docs/images/node-classes-before.png +0 -0
  408. package/components/graph/svelvet/docs/images/node-create-after.png +0 -0
  409. package/components/graph/svelvet/docs/images/node-create-before.png +0 -0
  410. package/components/graph/svelvet/edges/controllers/anchorCbDev.d.ts +4 -0
  411. package/components/graph/svelvet/edges/controllers/anchorCbDev.js +92 -0
  412. package/components/graph/svelvet/edges/controllers/anchorCbUser.d.ts +57 -0
  413. package/components/graph/svelvet/edges/controllers/anchorCbUser.js +73 -0
  414. package/components/graph/svelvet/edges/controllers/util.d.ts +37 -0
  415. package/components/graph/svelvet/edges/controllers/util.js +72 -0
  416. package/components/graph/svelvet/edges/models/Anchor.d.ts +48 -0
  417. package/components/graph/svelvet/edges/models/Anchor.js +122 -0
  418. package/components/graph/svelvet/edges/models/Edge.d.ts +47 -0
  419. package/components/graph/svelvet/edges/models/Edge.js +107 -0
  420. package/components/graph/svelvet/edges/types/types.d.ts +18 -0
  421. package/components/graph/svelvet/edges/types/types.js +1 -0
  422. package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte +105 -0
  423. package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte.d.ts +18 -0
  424. package/components/graph/svelvet/edges/views/Edges/EdgeAnchor.svelte +12 -0
  425. package/components/graph/svelvet/edges/views/Edges/EdgeAnchor.svelte.d.ts +17 -0
  426. package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +43 -0
  427. package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte.d.ts +17 -0
  428. package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +137 -0
  429. package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte.d.ts +17 -0
  430. package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte +176 -0
  431. package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte.d.ts +60 -0
  432. package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte +8 -0
  433. package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte.d.ts +25 -0
  434. package/components/graph/svelvet/edges/views/Edges/types.d.ts +52 -0
  435. package/components/graph/svelvet/edges/views/Edges/types.js +1 -0
  436. package/components/graph/svelvet/edges/views/Edges/utils.d.ts +33 -0
  437. package/components/graph/svelvet/edges/views/Edges/utils.js +31 -0
  438. package/components/graph/svelvet/editEdges/views/EditEdge.svelte +151 -0
  439. package/components/graph/svelvet/editEdges/views/EditEdge.svelte.d.ts +20 -0
  440. package/components/graph/svelvet/nodes/controllers/util.d.ts +9 -0
  441. package/components/graph/svelvet/nodes/controllers/util.js +13 -0
  442. package/components/graph/svelvet/nodes/models/Node.d.ts +78 -0
  443. package/components/graph/svelvet/nodes/models/Node.js +195 -0
  444. package/components/graph/svelvet/nodes/views/EditNode.svelte +147 -0
  445. package/components/graph/svelvet/nodes/views/EditNode.svelte.d.ts +33 -0
  446. package/components/graph/svelvet/nodes/views/Node.svelte +85 -0
  447. package/components/graph/svelvet/nodes/views/Node.svelte.d.ts +22 -0
  448. package/components/graph/svelvet/resizableNodes/controllers/util.d.ts +11 -0
  449. package/components/graph/svelvet/resizableNodes/controllers/util.js +24 -0
  450. package/components/graph/svelvet/resizableNodes/models/ResizeNode.d.ts +33 -0
  451. package/components/graph/svelvet/resizableNodes/models/ResizeNode.js +71 -0
  452. package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte +81 -0
  453. package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte.d.ts +20 -0
  454. package/components/graph/svelvet/store/controllers/storeApi.d.ts +32 -0
  455. package/components/graph/svelvet/store/controllers/storeApi.js +111 -0
  456. package/components/graph/svelvet/store/controllers/userApi.d.ts +3 -0
  457. package/components/graph/svelvet/store/controllers/userApi.js +18 -0
  458. package/components/graph/svelvet/store/controllers/util.d.ts +31 -0
  459. package/components/graph/svelvet/store/controllers/util.js +180 -0
  460. package/components/graph/svelvet/store/models/store.d.ts +12 -0
  461. package/components/graph/svelvet/store/models/store.js +9 -0
  462. package/components/graph/svelvet/store/types/types.d.ts +134 -0
  463. package/components/graph/svelvet/store/types/types.js +1 -0
  464. package/components/graph/svelvet/types/README.md +3 -0
  465. package/components/graph/svelvet/types/index.d.ts +2 -0
  466. package/components/graph/svelvet/types/index.js +1 -0
  467. package/components/graph/svelvet/types/types.d.ts +49 -0
  468. package/components/graph/svelvet/types/types.js +18 -0
  469. package/components/graph/util.js +2 -2
  470. package/components/home/ItemsList.svelte +53 -5
  471. package/components/home/ItemsList.svelte.d.ts +1 -0
  472. package/components/home/ListFilters.svelte +7 -2
  473. package/components/icons/SquareIcon.svelte +9 -0
  474. package/components/icons/SquareIcon.svelte.d.ts +17 -0
  475. package/components/icons/index.d.ts +2 -0
  476. package/components/icons/index.js +2 -0
  477. package/components/jobs/JobDetail.svelte +40 -5
  478. package/components/propertyPicker/ObjectViewer.svelte +14 -9
  479. package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
  480. package/components/propertyPicker/PropPicker.svelte +8 -1
  481. package/components/propertyPicker/PropPickerResult.svelte +1 -1
  482. package/components/random_positive_adjetive.d.ts +1 -0
  483. package/components/random_positive_adjetive.js +961 -0
  484. package/components/scriptEditor/LogPanel.svelte +2 -1
  485. package/components/sidebar/SidebarContent.svelte +1 -1
  486. package/components/sidebar/UserMenu.svelte +46 -16
  487. package/components/sidebar/UserMenu.svelte.d.ts +0 -3
  488. package/components/sidebar/WorkspaceMenu.svelte +3 -1
  489. package/components/sidebar/settings.d.ts +2 -0
  490. package/components/sidebar/settings.js +2 -0
  491. package/consts.d.ts +1 -0
  492. package/consts.js +1 -0
  493. package/defaults.d.ts +4 -0
  494. package/defaults.js +4 -0
  495. package/gen/core/OpenAPI.js +1 -1
  496. package/gen/models/CompletedJob.d.ts +1 -0
  497. package/gen/models/FlowModule.d.ts +0 -1
  498. package/gen/models/QueuedJob.d.ts +1 -0
  499. package/gen/models/WorkerPing.d.ts +1 -1
  500. package/gen/services/FlowService.d.ts +9 -0
  501. package/gen/services/FlowService.js +15 -0
  502. package/gen/services/JobService.d.ts +97 -15
  503. package/gen/services/JobService.js +74 -15
  504. package/gen/services/ScriptService.d.ts +10 -1
  505. package/gen/services/ScriptService.js +16 -1
  506. package/gen/services/VariableService.d.ts +4 -2
  507. package/gen/services/VariableService.js +8 -2
  508. package/gen/services/WorkspaceService.d.ts +17 -0
  509. package/gen/services/WorkspaceService.js +16 -0
  510. package/history.d.ts +9 -0
  511. package/history.js +56 -0
  512. package/infer.js +3 -0
  513. package/init_scripts/python_failure_module.py +10 -0
  514. package/init_scripts/python_init_code.py +37 -0
  515. package/init_scripts/python_init_code_clear.py +5 -0
  516. package/init_scripts/python_init_code_trigger.py +14 -0
  517. package/logout.js +2 -1
  518. package/package.json +661 -522
  519. package/script_helpers.d.ts +6 -5
  520. package/script_helpers.js +8 -73
  521. package/scripts.d.ts +1 -1
  522. package/scripts.js +8 -1
  523. package/stores.d.ts +5 -1
  524. package/stores.js +8 -1
  525. package/user.d.ts +1 -1
  526. package/user.js +14 -8
  527. package/utils.d.ts +10 -5
  528. package/utils.js +51 -14
  529. package/components/apps/components/DisplayComponent.svelte +0 -16
  530. package/components/apps/components/DisplayComponent.svelte.d.ts +0 -20
  531. package/components/apps/components/dataDisplay/AppHtml.svelte +0 -31
  532. package/components/apps/components/dateInputs/AppDateInput.svelte +0 -34
  533. package/components/apps/components/numberInputs/AppNumberInput.svelte +0 -33
  534. package/components/apps/components/numberInputs/AppSliderInputs.svelte +0 -37
  535. package/components/apps/components/selectInputs/AppSelect.svelte +0 -47
  536. package/components/apps/components/textInputs/AppTextInput.svelte +0 -31
  537. package/components/apps/editor/ComponentEditor.svelte +0 -145
  538. package/components/apps/editor/TablePanel.svelte +0 -17
  539. package/components/apps/editor/TablePanel.svelte.d.ts +0 -17
  540. package/components/apps/editor/componentsPanel/data.d.ts +0 -3
  541. package/components/apps/editor/componentsPanel/data.js +0 -499
  542. package/components/apps/editorUtils.d.ts +0 -1
  543. package/components/apps/editorUtils.js +0 -292
  544. package/components/flows/map/FlowBranchAllMap.svelte +0 -100
  545. package/components/flows/map/FlowBranchAllMap.svelte.d.ts +0 -17
  546. package/components/flows/map/FlowBranchOneMap.svelte +0 -124
  547. package/components/flows/map/FlowBranchOneMap.svelte.d.ts +0 -17
  548. /package/components/apps/components/{table → display/table}/tableOptions.d.ts +0 -0
  549. /package/components/apps/components/{table → display/table}/tableOptions.js +0 -0
@@ -1,5 +1,6 @@
1
1
  <script>import SplitPanesWrapper from '../../splitPanes/SplitPanesWrapper.svelte';
2
2
  import { onMount, setContext } from 'svelte';
3
+ import { twMerge } from 'tailwind-merge';
3
4
  import { Pane, Splitpanes } from 'svelte-splitpanes';
4
5
  import { writable } from 'svelte/store';
5
6
  import { buildWorld } from '../rx';
@@ -10,7 +11,7 @@ import TabContent from '../../common/tabs/TabContent.svelte';
10
11
  import { Alert, Button, Tab } from '../../common';
11
12
  import ComponentList from './componentsPanel/ComponentList.svelte';
12
13
  import Icon from 'svelte-awesome';
13
- import { faPlus, faSliders } from '@fortawesome/free-solid-svg-icons';
14
+ import { faCode, faPlus, faSliders } from '@fortawesome/free-solid-svg-icons';
14
15
  import ContextPanel from './contextPanel/ContextPanel.svelte';
15
16
  import { classNames, encodeState } from '../../../utils';
16
17
  import AppPreview from './AppPreview.svelte';
@@ -18,13 +19,19 @@ import { userStore, workspaceStore } from '../../../stores';
18
19
  import InlineScriptsPanel from './inlineScriptsPanel/InlineScriptsPanel.svelte';
19
20
  import SettingsPanel from './SettingsPanel.svelte';
20
21
  import { fly } from 'svelte/transition';
21
- import UnsavedConfirmationModal from '../../common/confirmationModal/UnsavedConfirmationModal.svelte';
22
+ import { VariableService } from '../../../gen';
22
23
  import { page } from '$app/stores';
24
+ import CssSettings from './componentsPanel/CssSettings.svelte';
25
+ import { initHistory } from '../../../history';
26
+ import ComponentNavigation from './component/ComponentNavigation.svelte';
27
+ import ItemPicker from '../../ItemPicker.svelte';
28
+ import VariableEditor from '../../VariableEditor.svelte';
23
29
  export let app;
24
30
  export let path;
25
31
  export let initialMode = 'dnd';
26
32
  export let policy;
27
33
  export let summary;
34
+ export let fromHub = false;
28
35
  const appStore = writable(app);
29
36
  const worldStore = writable(undefined);
30
37
  const staticOutputs = writable({});
@@ -37,12 +44,15 @@ const connectingInput = writable({
37
44
  input: undefined,
38
45
  hoveredComponent: undefined
39
46
  });
47
+ const history = initHistory(app);
40
48
  const runnableComponents = writable({});
41
- setContext('AppEditorContext', {
49
+ const errorByComponent = writable({});
50
+ const focusedGrid = writable(undefined);
51
+ const pickVariableCallback = writable(undefined);
52
+ setContext('AppViewerContext', {
42
53
  worldStore,
43
54
  staticOutputs,
44
55
  app: appStore,
45
- lazyGrid: writable([]),
46
56
  summary: summaryStore,
47
57
  selectedComponent,
48
58
  mode,
@@ -55,7 +65,17 @@ setContext('AppEditorContext', {
55
65
  isEditor: true,
56
66
  jobs: writable([]),
57
67
  staticExporter: writable({}),
58
- noBackend: false
68
+ noBackend: false,
69
+ errorByComponent,
70
+ openDebugRun: writable(undefined),
71
+ focusedGrid,
72
+ stateId: writable(0),
73
+ parentWidth: writable(0)
74
+ });
75
+ setContext('AppEditorContext', {
76
+ history,
77
+ componentControl: writable({}),
78
+ pickVariableCallback
59
79
  });
60
80
  let timeout = undefined;
61
81
  $: $appStore && saveDraft();
@@ -74,11 +94,16 @@ let mounted = false;
74
94
  onMount(() => {
75
95
  mounted = true;
76
96
  });
77
- $: context = {
97
+ let context = {
78
98
  email: $userStore?.email,
79
99
  username: $userStore?.username,
80
- query: Object.fromEntries($page.url.searchParams.entries())
100
+ query: Object.fromEntries($page.url.searchParams.entries()),
101
+ hash: $page.url.hash
81
102
  };
103
+ function hashchange(e) {
104
+ context.hash = e.newURL.split('#')[1];
105
+ context = context;
106
+ }
82
107
  $: mounted && ($worldStore = buildWorld($staticOutputs, $worldStore, context));
83
108
  $: previewing = $mode === 'preview';
84
109
  $: width = $breakpoint === 'sm' ? 'min-w-[400px] max-w-[656px]' : 'min-w-[710px] w-full';
@@ -89,31 +114,44 @@ $: if ($selectedComponent) {
89
114
  else {
90
115
  selectedTab = 'insert';
91
116
  }
117
+ let itemPicker = undefined;
118
+ $: if ($pickVariableCallback) {
119
+ itemPicker?.openDrawer();
120
+ }
121
+ let variableEditor = undefined;
92
122
  </script>
93
123
 
124
+ <svelte:window on:hashchange={hashchange} />
125
+
94
126
  {#if $connectingInput.opened}
95
127
  <div
96
- class="absolute w-full h-screen bg-black border-2 bg-opacity-25 z-20 flex justify-center items-center"
128
+ class="absolute w-full h-screen bg-black border-2 bg-opacity-25 z-20 flex justify-center items-center"
97
129
  />
98
130
  {/if}
99
131
  {#if !$userStore?.operator}
100
- <UnsavedConfirmationModal />
101
132
  {#if initialMode !== 'preview'}
102
- <AppEditorHeader {policy} />
133
+ <AppEditorHeader {policy} {fromHub} />
103
134
  {/if}
104
135
 
105
136
  {#if previewing}
106
- <AppPreview
107
- workspace={$workspaceStore ?? ''}
108
- summary={$summaryStore}
109
- app={$appStore}
110
- appPath={path}
111
- {breakpoint}
112
- {policy}
113
- isEditor
114
- {context}
115
- noBackend={false}
116
- />
137
+ <SplitPanesWrapper>
138
+ <div
139
+ class={twMerge('h-full w-full', $appStore.css?.['app']?.['viewer']?.class)}
140
+ style={$appStore.css?.['app']?.['viewer']?.style}
141
+ >
142
+ <AppPreview
143
+ workspace={$workspaceStore ?? ''}
144
+ summary={$summaryStore}
145
+ app={$appStore}
146
+ appPath={path}
147
+ {breakpoint}
148
+ {policy}
149
+ isEditor
150
+ {context}
151
+ noBackend={false}
152
+ />
153
+ </div>
154
+ </SplitPanesWrapper>
117
155
  {:else}
118
156
  <SplitPanesWrapper>
119
157
  <Splitpanes class="max-w-full overflow-hidden">
@@ -125,15 +163,32 @@ else {
125
163
  <Splitpanes horizontal>
126
164
  <Pane size={$connectingInput?.opened ? 100 : 70}>
127
165
  <div
128
- class="bg-gray-100 relative w-full h-full overflow-auto {app.fullscreen
129
- ? ''
130
- : 'max-w-6xl'}"
166
+ on:pointerdown={(e) => {
167
+ $selectedComponent = undefined
168
+ $focusedGrid = undefined
169
+ }}
170
+ class={twMerge(
171
+ 'bg-gray-100 h-full w-full',
172
+ $appStore.css?.['app']?.['viewer']?.class
173
+ )}
174
+ style={$appStore.css?.['app']?.['viewer']?.style}
131
175
  >
132
- {#if $appStore.grid}
133
- <div class={classNames('p-4 mx-auto', width)}>
134
- <GridEditor {policy} />
135
- </div>
136
- {/if}
176
+ <div
177
+ class={classNames(
178
+ 'relative mx-auto w-full h-full overflow-auto',
179
+ app.fullscreen ? '' : 'max-w-6xl'
180
+ )}
181
+ >
182
+ {#if $appStore.grid}
183
+ <ComponentNavigation />
184
+
185
+ <div on:pointerdown|stopPropagation class={width}>
186
+ <GridEditor {policy} />
187
+ </div>
188
+
189
+ <div id="app-editor-top-level-drawer" />
190
+ {/if}
191
+ </div>
137
192
  </div>
138
193
  </Pane>
139
194
  <Pane size={$connectingInput?.opened ? 0 : 30}>
@@ -146,31 +201,42 @@ else {
146
201
  </Pane>
147
202
  <Pane size={21} minSize={5} maxSize={33}>
148
203
  <div class="relative flex flex-col h-full">
149
- <Tabs bind:selected={selectedTab}>
204
+ <Tabs bind:selected={selectedTab} wrapperClass="!h-[40px]" class="!h-full">
150
205
  <Tab value="insert" size="xs">
151
- <div class="m-1 flex flex-row gap-2">
206
+ <div class="m-1 center-center gap-2">
152
207
  <Icon data={faPlus} />
153
208
  <span>Insert</span>
154
209
  </div>
155
210
  </Tab>
156
211
  <Tab value="settings" size="xs">
157
- <div class="m-1 flex flex-row gap-2">
212
+ <div class="m-1 center-center gap-2">
158
213
  <Icon data={faSliders} />
159
214
  <span>Settings</span>
160
215
  </div>
161
216
  </Tab>
162
- <svelte:fragment slot="content">
217
+ <Tab value="css" size="xs">
218
+ <div class="m-1 center-center gap-2">
219
+ <Icon data={faCode} />
220
+ <span>CSS</span>
221
+ </div>
222
+ </Tab>
223
+ <div slot="content" class="h-full overflow-y-auto pb-4">
163
224
  <TabContent class="overflow-auto" value="settings">
164
225
  {#if $selectedComponent !== undefined}
165
226
  <SettingsPanel />
166
227
  {:else}
167
- <div class="p-2 min-w-[150px] text-sm">No component selected.</div>
228
+ <div class="min-w-[150px] text-sm text-gray-500 text-center py-8 px-2">
229
+ Select a component to see the settings&nbsp;for&nbsp;it
230
+ </div>
168
231
  {/if}
169
232
  </TabContent>
170
233
  <TabContent value="insert">
171
234
  <ComponentList />
172
235
  </TabContent>
173
- </svelte:fragment>
236
+ <TabContent value="css">
237
+ <CssSettings />
238
+ </TabContent>
239
+ </div>
174
240
  </Tabs>
175
241
  {#if $connectingInput.opened}
176
242
  <div
@@ -205,3 +271,36 @@ else {
205
271
  {:else}
206
272
  App editor not available to operators
207
273
  {/if}
274
+
275
+ <ItemPicker
276
+ bind:this={itemPicker}
277
+ pickCallback={(path, _) => {
278
+ $pickVariableCallback?.(path)
279
+ }}
280
+ itemName="Variable"
281
+ extraField="path"
282
+ loadItems={async () =>
283
+ (await VariableService.listVariable({ workspace: $workspaceStore ?? '' })).map((x) => ({
284
+ name: x.path,
285
+ ...x
286
+ }))}
287
+ >
288
+ <div
289
+ slot="submission"
290
+ class="flex flex-row-reverse w-full bg-white border-t border-gray-200 rounded-bl-lg rounded-br-lg"
291
+ >
292
+ <Button
293
+ variant="border"
294
+ color="blue"
295
+ size="sm"
296
+ startIcon={{ icon: faPlus }}
297
+ on:click={() => {
298
+ variableEditor?.initNew?.()
299
+ }}
300
+ >
301
+ New variable
302
+ </Button>
303
+ </div>
304
+ </ItemPicker>
305
+
306
+ <VariableEditor bind:this={variableEditor} />
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  import type { App, EditorMode } from '../types';
3
- import type { Policy } from '../../../gen';
3
+ import { type Policy } from '../../../gen';
4
4
  declare const __propDef: {
5
5
  props: {
6
6
  app: App;
@@ -8,8 +8,11 @@ declare const __propDef: {
8
8
  initialMode?: EditorMode | undefined;
9
9
  policy: Policy;
10
10
  summary: string;
11
+ fromHub?: boolean | undefined;
11
12
  };
12
13
  events: {
14
+ pointerdown: PointerEvent;
15
+ } & {
13
16
  [evt: string]: CustomEvent<any>;
14
17
  };
15
18
  slots: {};
@@ -1,6 +1,6 @@
1
1
  <script>import { goto } from '$app/navigation';
2
2
  import { page } from '$app/stores';
3
- import { Alert, Badge, Drawer, DrawerContent } from '../../common';
3
+ import { Alert, Badge, ButtonPopup, ButtonPopupItem, Drawer, DrawerContent, UndoRedo } from '../../common';
4
4
  import Button from '../../common/button/Button.svelte';
5
5
  import { dirtyStore } from '../../common/confirmationModal/dirtyStore';
6
6
  import Skeleton from '../../common/skeleton/Skeleton.svelte';
@@ -17,15 +17,17 @@ import TestJobLoader from '../../TestJobLoader.svelte';
17
17
  import Toggle from '../../Toggle.svelte';
18
18
  import Tooltip from '../../Tooltip.svelte';
19
19
  import { AppService, Job, Policy } from '../../../gen';
20
- import { userStore, workspaceStore } from '../../../stores';
20
+ import { redo, undo } from '../../../history';
21
+ import { workspaceStore } from '../../../stores';
21
22
  import { faBug, faClipboard, faExternalLink, faFileExport, faGlobe, faSave } from '@fortawesome/free-solid-svg-icons';
22
- import { AlignHorizontalSpaceAround, Expand, Eye, Laptop2, Loader2, MoreVertical, Pencil, Smartphone } from 'lucide-svelte';
23
+ import { AlignHorizontalSpaceAround, Expand, Eye, Laptop2, Loader2, MoreVertical, Pencil, Redo, SlidersHorizontal, Smartphone, Undo, X } from 'lucide-svelte';
23
24
  import { getContext } from 'svelte';
24
25
  import { Icon } from 'svelte-awesome';
25
26
  import { Pane, Splitpanes } from 'svelte-splitpanes';
26
27
  import { appToHubUrl, classNames, copyToClipboard, sendUserToast } from '../../../utils';
27
- import { toStatic } from '../utils';
28
+ import { allItems, toStatic } from '../utils';
28
29
  import AppExportButton from './AppExportButton.svelte';
30
+ import AppInputs from './AppInputs.svelte';
29
31
  import PanelSection from './settingsPanel/common/PanelSection.svelte';
30
32
  async function hash(message) {
31
33
  const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array
@@ -35,22 +37,41 @@ async function hash(message) {
35
37
  return hashHex;
36
38
  }
37
39
  export let policy;
38
- const { app, summary, mode, breakpoint, appPath, jobs, staticExporter } = getContext('AppEditorContext');
40
+ export let fromHub = false;
41
+ const { app, summary, mode, breakpoint, appPath, jobs, staticExporter, errorByComponent, openDebugRun, focusedGrid, selectedComponent } = getContext('AppViewerContext');
42
+ const { history } = getContext('AppEditorContext');
39
43
  const loading = {
40
44
  publish: false,
41
45
  save: false
42
46
  };
47
+ $: if ($openDebugRun == undefined) {
48
+ $openDebugRun = (componentId) => {
49
+ jobsDrawerOpen = true;
50
+ const job = $jobs.find((job) => job.component === componentId);
51
+ if (job) {
52
+ selectedJobId = job.job;
53
+ }
54
+ };
55
+ }
43
56
  let newPath = '';
44
57
  let pathError = undefined;
45
58
  let appExport;
46
59
  let saveDrawerOpen = false;
47
60
  let jobsDrawerOpen = false;
48
61
  let publishDrawerOpen = false;
62
+ let inputsDrawerOpen = fromHub;
49
63
  function closeSaveDrawer() {
50
64
  saveDrawerOpen = false;
51
65
  }
66
+ function collectStaticFields(fields) {
67
+ return Object.fromEntries(Object.entries(fields ?? {})
68
+ .filter(([k, v]) => v.type == 'static')
69
+ .map(([k, v]) => {
70
+ return [k, v['value']];
71
+ }));
72
+ }
52
73
  async function computeTriggerables() {
53
- const allTriggers = await Promise.all($app.grid
74
+ const allTriggers = await Promise.all(allItems($app.grid, $app.subgrids)
54
75
  .flatMap((x) => {
55
76
  let c = x.data;
56
77
  let r = [c.componentInput];
@@ -61,11 +82,7 @@ async function computeTriggerables() {
61
82
  })
62
83
  .map(async (input) => {
63
84
  if (input?.type == 'runnable') {
64
- const staticInputs = Object.fromEntries(Object.entries(input.fields ?? {})
65
- .filter(([k, v]) => v.type == 'static')
66
- .map(([k, v]) => {
67
- return [k, v['value']];
68
- }));
85
+ const staticInputs = collectStaticFields(input.fields);
69
86
  if (input.runnable?.type == 'runnableByName') {
70
87
  let hex = await hash(input.runnable.inlineScript?.content);
71
88
  return [`rawscript/${hex}`, staticInputs];
@@ -76,10 +93,13 @@ async function computeTriggerables() {
76
93
  }
77
94
  }
78
95
  return [];
79
- }));
80
- policy.triggerables = Object.fromEntries(allTriggers);
81
- policy.on_behalf_of = `u/${$userStore?.username}`;
82
- policy.on_behalf_of_email = $userStore?.email;
96
+ })
97
+ .concat(Object.values($app.hiddenInlineScripts ?? {}).map(async (v) => {
98
+ let hex = await hash(v.inlineScript?.content);
99
+ const staticInputs = collectStaticFields(v.fields);
100
+ return [`rawscript/${hex}`, staticInputs];
101
+ })));
102
+ policy.triggerables = Object.fromEntries(allTriggers.filter((x) => x.length > 0));
83
103
  }
84
104
  async function createApp(path) {
85
105
  await computeTriggerables();
@@ -128,26 +148,75 @@ async function save() {
128
148
  return;
129
149
  }
130
150
  loading.save = true;
131
- await computeTriggerables();
132
- await AppService.updateApp({
133
- workspace: $workspaceStore,
134
- path: $page.params.path,
135
- requestBody: {
136
- value: $app,
137
- summary: $summary,
138
- policy
139
- }
140
- });
141
- loading.save = false;
142
- sendUserToast('App saved');
151
+ try {
152
+ await computeTriggerables();
153
+ await AppService.updateApp({
154
+ workspace: $workspaceStore,
155
+ path: $page.params.path,
156
+ requestBody: {
157
+ value: $app,
158
+ summary: $summary,
159
+ policy
160
+ }
161
+ });
162
+ sendUserToast('App saved');
163
+ loading.save = false;
164
+ }
165
+ catch (e) {
166
+ loading.save = false;
167
+ throw e;
168
+ }
143
169
  }
144
170
  let selectedJobId = undefined;
145
171
  let testJobLoader;
146
172
  let job = undefined;
147
173
  let testIsLoading = false;
148
174
  $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
175
+ $: hasErrors = Object.keys($errorByComponent).length > 0;
176
+ function onKeyDown(event) {
177
+ switch (event.key) {
178
+ case 'Z':
179
+ if (event.ctrlKey) {
180
+ $app = redo(history);
181
+ event.preventDefault();
182
+ }
183
+ break;
184
+ case 'z':
185
+ if (event.ctrlKey) {
186
+ $app = undo(history, $app);
187
+ event.preventDefault();
188
+ }
189
+ break;
190
+ case 's':
191
+ if (event.ctrlKey) {
192
+ save();
193
+ event.preventDefault();
194
+ }
195
+ break;
196
+ // case 'ArrowDown': {
197
+ // let ids = generateIds()
198
+ // let idx = ids.indexOf($selectedIdStore)
199
+ // if (idx > -1 && idx < ids.length - 1) {
200
+ // $selectedIdStore = ids[idx + 1]
201
+ // event.preventDefault()
202
+ // }
203
+ // break
204
+ // }
205
+ // case 'ArrowUp': {
206
+ // let ids = generateIds()
207
+ // let idx = ids.indexOf($selectedIdStore)
208
+ // if (idx > 0 && idx < ids.length) {
209
+ // $selectedIdStore = ids[idx - 1]
210
+ // event.preventDefault()
211
+ // }
212
+ // break
213
+ // }
214
+ }
215
+ }
149
216
  </script>
150
217
 
218
+ <svelte:window on:keydown={onKeyDown} />
219
+
151
220
  <TestJobLoader bind:this={testJobLoader} bind:isLoading={testIsLoading} bind:job />
152
221
 
153
222
  <Drawer bind:open={saveDrawerOpen} size="800px">
@@ -156,7 +225,7 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
156
225
  bind:error={pathError}
157
226
  bind:path={newPath}
158
227
  initialPath=""
159
- namePlaceholder="my_app"
228
+ namePlaceholder="app"
160
229
  kind="app"
161
230
  />
162
231
 
@@ -170,6 +239,12 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
170
239
  </DrawerContent>
171
240
  </Drawer>
172
241
 
242
+ <Drawer bind:open={inputsDrawerOpen} size="600px">
243
+ <DrawerContent title="App inputs configuration" on:close={() => (inputsDrawerOpen = false)}>
244
+ <AppInputs />
245
+ </DrawerContent>
246
+ </Drawer>
247
+
173
248
  <Drawer bind:open={jobsDrawerOpen} size="900px">
174
249
  <DrawerContent noPadding title="Debug Runs" on:close={() => (jobsDrawerOpen = false)}>
175
250
  <Splitpanes class="!overflow-visible">
@@ -181,10 +256,13 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
181
256
  {#each $jobs ?? [] as { job, component } (job)}
182
257
  <!-- svelte-ignore a11y-click-events-have-key-events -->
183
258
  <div
184
- class="{classNames(
259
+ class={classNames(
185
260
  'border flex gap-1 truncate justify-between flex-row w-full items-center p-2 rounded-md cursor-pointer hover:bg-blue-50 hover:text-blue-400',
186
- selectedJobId == job ? 'bg-blue-100 text-blue-600' : ''
187
- )},"
261
+ $errorByComponent[job] ? 'border border-red-500 bg-red-100' : '',
262
+ selectedJobId == job && !$errorByComponent[component]
263
+ ? 'bg-blue-100 text-blue-600'
264
+ : ''
265
+ )}
188
266
  on:click={() => (selectedJobId = job)}
189
267
  >
190
268
  <span class="text-xs truncate">{job}</span>
@@ -199,19 +277,21 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
199
277
  </PanelSection>
200
278
  </Pane>
201
279
  <Pane size={75}>
202
- <div class="h-full w-full overflow-hidden">
280
+ <div class="h-full w-full overflow-auto">
203
281
  {#if selectedJobId}
204
282
  {#if !job}
205
283
  <Skeleton layout={[[40]]} />
206
284
  {:else}
207
285
  <div class="flex flex-col h-full w-full gap-4 mb-4">
208
286
  {#if job?.['running']}
209
- <div class="flex flex-row-reverse w-full"
210
- ><Button
287
+ <div class="flex flex-row-reverse w-full">
288
+ <Button
211
289
  color="red"
212
290
  variant="border"
213
- on:click={() => testJobLoader?.cancelJob()}>Cancel</Button
291
+ on:click={() => testJobLoader?.cancelJob()}
214
292
  >
293
+ Cancel
294
+ </Button>
215
295
  </div>
216
296
  {/if}
217
297
  <div class="p-2">
@@ -321,6 +401,16 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
321
401
  <div class="min-w-64 w-64">
322
402
  <input type="text" placeholder="App summary" class="text-sm w-full" bind:value={$summary} />
323
403
  </div>
404
+ <UndoRedo
405
+ undoProps={{ disabled: $history?.index === 0 }}
406
+ redoProps={{ disabled: $history && $history?.index === $history.history.length - 1 }}
407
+ on:undo={() => {
408
+ $app = undo(history, $app)
409
+ }}
410
+ on:redo={() => {
411
+ $app = redo(history)
412
+ }}
413
+ />
324
414
  <div class="flex gap-4 items-center grow justify-center">
325
415
  <div>
326
416
  <ToggleButtonGroup bind:selected={$mode}>
@@ -353,7 +443,7 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
353
443
  <ToggleButton position="left" value={false} size="xs">
354
444
  <div class="flex gap-1 justify-start items-center">
355
445
  <AlignHorizontalSpaceAround size={14} />
356
- <Tooltip light>
446
+ <Tooltip light class="mb-0.5">
357
447
  The max width is 1168px and the content stay centered instead of taking the full page
358
448
  width
359
449
  </Tooltip>
@@ -365,7 +455,23 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
365
455
  </ToggleButtonGroup>
366
456
  </div>
367
457
  </div>
368
- <div class="flex flex-row grow gap-2 justify-end items-center overflow-visible">
458
+ {#if $focusedGrid !== undefined}
459
+ <Badge color="indigo">
460
+ <div class="flex flex-row gap-2 justify-center items-center">
461
+ <div>{`Sub grid: ${$focusedGrid.parentComponentId} (${$focusedGrid.subGridIndex})`}</div>
462
+ <button
463
+ on:click={() => {
464
+ $selectedComponent = undefined
465
+ $focusedGrid = undefined
466
+ }}
467
+ >
468
+ <X size={14} />
469
+ </button>
470
+ </div>
471
+ </Badge>
472
+ {/if}
473
+
474
+ <div class="flex flex-row gap-2 justify-end items-center overflow-visible">
369
475
  <Dropdown
370
476
  placement="bottom-end"
371
477
  btnClasses="!text-gray-700 !bg-transparent hover:!bg-gray-400/20 !p-[6px] hidden lg:block"
@@ -396,10 +502,18 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
396
502
  >
397
503
  <MoreVertical size={20} />
398
504
  </Dropdown>
505
+ <span class="hidden md:inline">
506
+ <Button on:click={() => (inputsDrawerOpen = true)} color="light" size="xs" variant="border">
507
+ <span class="flex gap-2">
508
+ <SlidersHorizontal size={14} />
509
+ App inputs
510
+ </span>
511
+ </Button>
512
+ </span>
399
513
  <span class="hidden md:inline">
400
514
  <Button
401
515
  on:click={() => (jobsDrawerOpen = true)}
402
- color="light"
516
+ color={hasErrors ? 'red' : 'light'}
403
517
  size="xs"
404
518
  variant="border"
405
519
  startIcon={{ icon: faBug }}
@@ -417,14 +531,31 @@ $: selectedJobId && testJobLoader?.watchJob(selectedJobId);
417
531
  >
418
532
  <span class="hidden md:inline">Publish</span>
419
533
  </Button>
420
- <Button
421
- loading={loading.save}
422
- startIcon={{ icon: faSave }}
423
- on:click={save}
424
- color="dark"
425
- size="xs"
426
- >
427
- <span class="hidden md:inline">Save</span>
428
- </Button>
534
+ {#if appPath == ''}
535
+ <Button
536
+ loading={loading.save}
537
+ startIcon={{ icon: faSave }}
538
+ on:click={save}
539
+ color="dark"
540
+ size="xs"
541
+ >
542
+ <span class="hidden md:inline">Save</span>
543
+ </Button>
544
+ {:else}
545
+ <ButtonPopup
546
+ loading={loading.save}
547
+ startIcon={{ icon: faSave }}
548
+ on:click={save}
549
+ color="dark"
550
+ size="xs"
551
+ >
552
+ <svelte:fragment slot="main">Save</svelte:fragment>
553
+ <ButtonPopupItem
554
+ on:click={() => {
555
+ window.open(`/apps/add?template=${appPath}`)
556
+ }}>Fork</ButtonPopupItem
557
+ >
558
+ </ButtonPopup>
559
+ {/if}
429
560
  </div>
430
561
  </div>
@@ -3,6 +3,7 @@ import { Policy } from '../../../gen';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  policy: Policy;
6
+ fromHub?: boolean | undefined;
6
7
  };
7
8
  events: {
8
9
  [evt: string]: CustomEvent<any>;