windmill-components 1.60.3 → 1.70.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 (335) hide show
  1. package/assets/app.css +3 -0
  2. package/common.d.ts +5 -1
  3. package/components/ApiConnectForm.svelte +66 -5
  4. package/components/AppConnect.svelte +24 -9
  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 +51 -1
  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/FlowBuilder.svelte +2 -2
  13. package/components/FlowJobResult.svelte +10 -2
  14. package/components/FlowJobResult.svelte.d.ts +1 -0
  15. package/components/FlowMetadata.svelte +24 -8
  16. package/components/FlowPreviewContent.svelte +3 -4
  17. package/components/FlowStatusViewer.svelte +41 -9
  18. package/components/FolderEditor.svelte +4 -3
  19. package/components/HighlightCode.svelte +7 -1
  20. package/components/InlineCodeCopy.svelte +11 -0
  21. package/components/InlineCodeCopy.svelte.d.ts +16 -0
  22. package/components/InputTransformForm.svelte +9 -5
  23. package/components/LogViewer.svelte +6 -0
  24. package/components/LogViewer.svelte.d.ts +1 -0
  25. package/components/ModulePreview.svelte +11 -2
  26. package/components/MoveDrawer.svelte +1 -1
  27. package/components/Multiselect.svelte.d.ts +2 -2
  28. package/components/ObjectResourceInput.svelte +6 -1
  29. package/components/Path.svelte +14 -5
  30. package/components/Popover.svelte +8 -2
  31. package/components/Popover.svelte.d.ts +1 -0
  32. package/components/Range.svelte.d.ts +2 -2
  33. package/components/ResourceEditor.svelte +39 -16
  34. package/components/ResourcePicker.svelte +0 -1
  35. package/components/RunForm.svelte +26 -2
  36. package/components/RunForm.svelte.d.ts +1 -0
  37. package/components/ScheduleEditor.svelte +1 -1
  38. package/components/SchemaEditor.svelte +2 -2
  39. package/components/SchemaForm.svelte +14 -4
  40. package/components/SchemaForm.svelte.d.ts +1 -0
  41. package/components/ScriptBuilder.svelte +45 -22
  42. package/components/ScriptBuilder.svelte.d.ts +1 -0
  43. package/components/ScriptEditor.svelte +1 -0
  44. package/components/SharedBadge.svelte +5 -5
  45. package/components/Slider.svelte +14 -0
  46. package/components/Slider.svelte.d.ts +19 -0
  47. package/components/StringTypeNarrowing.svelte +0 -1
  48. package/components/SuperadminSettings.svelte +11 -3
  49. package/components/SuperadminSettings.svelte.d.ts +2 -0
  50. package/components/TemplateEditor.svelte.d.ts +204 -0
  51. package/components/TestJobLoader.svelte +3 -3
  52. package/components/Toggle.svelte +1 -2
  53. package/components/UserSettings.svelte +25 -28
  54. package/components/UserSettings.svelte.d.ts +2 -0
  55. package/components/VariableEditor.svelte +1 -1
  56. package/components/WhitelistIp.svelte +23 -0
  57. package/components/WhitelistIp.svelte.d.ts +14 -0
  58. package/components/apps/components/buttons/AppButton.svelte +52 -6
  59. package/components/apps/components/buttons/AppButton.svelte.d.ts +3 -0
  60. package/components/apps/components/{form → buttons}/AppForm.svelte +3 -1
  61. package/components/apps/components/buttons/AppFormButton.svelte +137 -0
  62. package/components/apps/components/buttons/AppFormButton.svelte.d.ts +25 -0
  63. package/components/apps/components/buttons/index.d.ts +3 -0
  64. package/components/apps/components/buttons/index.js +3 -0
  65. package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte +15 -4
  66. package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte.d.ts +1 -0
  67. package/components/apps/components/display/AppDisplayComponent.svelte +31 -0
  68. package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +23 -0
  69. package/components/apps/components/display/AppHtml.svelte +32 -0
  70. package/components/apps/components/{dataDisplay → display}/AppHtml.svelte.d.ts +1 -3
  71. package/components/apps/components/display/AppIcon.svelte +35 -0
  72. package/components/apps/components/display/AppIcon.svelte.d.ts +22 -0
  73. package/components/apps/components/display/AppImage.svelte +27 -0
  74. package/components/apps/components/display/AppImage.svelte.d.ts +22 -0
  75. package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte +2 -1
  76. package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte.d.ts +1 -0
  77. package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte +2 -1
  78. package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte.d.ts +1 -0
  79. package/components/apps/components/{dataDisplay → display}/AppText.svelte +16 -14
  80. package/components/apps/components/{dataDisplay → display}/AppText.svelte.d.ts +3 -0
  81. package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte +3 -2
  82. package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte.d.ts +1 -0
  83. package/components/apps/components/display/PlotlyHtml.svelte +38 -0
  84. package/components/apps/components/display/PlotlyHtml.svelte.d.ts +24 -0
  85. package/components/apps/components/display/VegaLiteHtml.svelte +52 -0
  86. package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte.d.ts +3 -2
  87. package/components/apps/components/display/index.d.ts +12 -0
  88. package/components/apps/components/display/index.js +12 -0
  89. package/components/apps/components/display/table/AppAggridTable.svelte +83 -0
  90. package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +24 -0
  91. package/components/apps/components/{table → display/table}/AppTable.svelte +44 -23
  92. package/components/apps/components/{table → display/table}/AppTable.svelte.d.ts +4 -2
  93. package/components/apps/components/{table → display/table}/AppTableFooter.svelte +1 -1
  94. package/components/apps/components/helpers/AlignWrapper.svelte +19 -19
  95. package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +4 -2
  96. package/components/apps/components/helpers/HiddenComponent.svelte +22 -0
  97. package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +25 -0
  98. package/components/apps/components/helpers/InputDefaultValue.svelte +17 -0
  99. package/components/apps/components/helpers/InputDefaultValue.svelte.d.ts +17 -0
  100. package/components/apps/components/helpers/InputValue.svelte +5 -7
  101. package/components/apps/components/helpers/InputValue.svelte.d.ts +0 -1
  102. package/components/apps/components/helpers/RunnableComponent.svelte +37 -48
  103. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
  104. package/components/apps/components/helpers/RunnableWrapper.svelte +7 -2
  105. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +2 -1
  106. package/components/apps/components/helpers/index.d.ts +10 -0
  107. package/components/apps/components/helpers/index.js +10 -0
  108. package/components/apps/components/icon.d.ts +1 -0
  109. package/components/apps/components/icon.js +18 -0
  110. package/components/apps/components/index.d.ts +5 -0
  111. package/components/apps/components/index.js +5 -0
  112. package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte +4 -2
  113. package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte +6 -0
  114. package/components/apps/components/inputs/AppFileInput.svelte +34 -0
  115. package/components/apps/components/inputs/AppFileInput.svelte.d.ts +20 -0
  116. package/components/apps/components/inputs/AppNumberInput.svelte +48 -0
  117. package/components/apps/components/inputs/AppRangeInput.svelte +44 -0
  118. package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +23 -0
  119. package/components/apps/components/inputs/AppSelect.svelte +90 -0
  120. package/components/apps/components/{selectInputs → inputs}/AppSelect.svelte.d.ts +2 -0
  121. package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte +13 -9
  122. package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte +6 -0
  123. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +49 -0
  124. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +21 -0
  125. package/components/apps/components/inputs/currency/CurrencyInput.svelte +181 -0
  126. package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +32 -0
  127. package/components/apps/components/inputs/index.d.ts +9 -0
  128. package/components/apps/components/inputs/index.js +9 -0
  129. package/components/apps/components/layout/AppContainer.svelte +32 -0
  130. package/components/apps/components/layout/AppContainer.svelte.d.ts +21 -0
  131. package/components/apps/components/layout/AppDivider.svelte +20 -0
  132. package/components/apps/components/layout/AppDivider.svelte.d.ts +22 -0
  133. package/components/apps/components/layout/AppTabs.svelte +58 -0
  134. package/components/apps/components/layout/AppTabs.svelte.d.ts +24 -0
  135. package/components/apps/components/layout/index.d.ts +3 -0
  136. package/components/apps/components/layout/index.js +3 -0
  137. package/components/apps/editor/AppComponentInput.svelte +33 -0
  138. package/components/apps/editor/AppComponentInput.svelte.d.ts +18 -0
  139. package/components/apps/editor/AppComponentInputs.svelte +13 -0
  140. package/components/apps/editor/AppComponentInputs.svelte.d.ts +20 -0
  141. package/components/apps/editor/AppEditor.svelte +66 -31
  142. package/components/apps/editor/AppEditor.svelte.d.ts +1 -0
  143. package/components/apps/editor/AppEditorHeader.svelte +74 -18
  144. package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
  145. package/components/apps/editor/AppInputs.svelte +60 -0
  146. package/components/apps/editor/AppInputs.svelte.d.ts +14 -0
  147. package/components/apps/editor/AppPreview.svelte +32 -5
  148. package/components/apps/editor/AppPreview.svelte.d.ts +2 -0
  149. package/components/apps/editor/ComponentHeader.svelte +40 -2
  150. package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -1
  151. package/components/apps/editor/GridEditor.svelte +75 -32
  152. package/components/apps/editor/GridEditor.svelte.d.ts +2 -0
  153. package/components/apps/editor/SettingsPanel.svelte +31 -3
  154. package/components/apps/editor/SubGridEditor.svelte +111 -0
  155. package/components/apps/editor/SubGridEditor.svelte.d.ts +24 -0
  156. package/components/apps/editor/TablePanel.svelte +2 -0
  157. package/components/apps/editor/TablePanel.svelte.d.ts +1 -1
  158. package/components/apps/editor/appUtils.d.ts +9 -0
  159. package/components/apps/editor/appUtils.js +141 -0
  160. package/components/apps/editor/component/Component.svelte +209 -0
  161. package/components/apps/editor/component/Component.svelte.d.ts +23 -0
  162. package/components/apps/editor/component/README.md +15 -0
  163. package/components/apps/editor/component/components.d.ts +65 -0
  164. package/components/apps/editor/component/components.js +1102 -0
  165. package/components/apps/editor/component/default-codes.d.ts +3 -0
  166. package/components/apps/editor/component/default-codes.js +322 -0
  167. package/components/apps/editor/component/index.d.ts +4 -0
  168. package/components/apps/editor/component/index.js +4 -0
  169. package/components/apps/editor/component/sets.d.ts +2 -0
  170. package/components/apps/editor/component/sets.js +47 -0
  171. package/components/apps/editor/componentsPanel/ComponentList.svelte +30 -105
  172. package/components/apps/editor/componentsPanel/CssProperty.svelte +31 -0
  173. package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +20 -0
  174. package/components/apps/editor/componentsPanel/CssSettings.svelte +141 -0
  175. package/components/apps/editor/componentsPanel/CssSettings.svelte.d.ts +14 -0
  176. package/components/apps/editor/componentsPanel/ListItem.svelte +28 -0
  177. package/components/apps/editor/componentsPanel/ListItem.svelte.d.ts +20 -0
  178. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +4 -1
  179. package/components/apps/editor/componentsPanel/componentStaticValues.js +4 -1
  180. package/components/apps/editor/contextPanel/ContextPanel.svelte +8 -6
  181. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +98 -9
  182. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +38 -29
  183. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +21 -1
  184. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +66 -8
  185. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +92 -46
  186. package/components/apps/editor/inlineScriptsPanel/utils.d.ts +5 -1
  187. package/components/apps/editor/inlineScriptsPanel/utils.js +30 -0
  188. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
  189. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte.d.ts +1 -1
  190. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -1
  191. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +59 -1
  192. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -34
  193. package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +5 -3
  194. package/components/apps/editor/settingsPanel/GridTab.svelte +73 -0
  195. package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +18 -0
  196. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +3 -0
  197. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -2
  198. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +92 -77
  199. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
  200. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +85 -0
  201. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte.d.ts +18 -0
  202. package/components/apps/editor/settingsPanel/Recompute.svelte +4 -1
  203. package/components/apps/editor/settingsPanel/TableActions.svelte +17 -6
  204. package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
  205. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +5 -3
  206. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +83 -0
  207. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +19 -0
  208. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +6 -1
  209. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +2 -0
  210. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +23 -0
  211. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +17 -0
  212. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +3 -20
  213. package/components/apps/gridUtils.d.ts +3 -1
  214. package/components/apps/gridUtils.js +5 -3
  215. package/components/apps/inputType.d.ts +33 -6
  216. package/components/apps/types.d.ts +35 -39
  217. package/components/apps/types.js +1 -1
  218. package/components/apps/utils.d.ts +6 -5
  219. package/components/apps/utils.js +90 -90
  220. package/components/common/button/Button.svelte +12 -5
  221. package/components/common/button/Button.svelte.d.ts +3 -1
  222. package/components/common/button/ButtonPopup.svelte.d.ts +1 -1
  223. package/components/common/button/model.d.ts +2 -2
  224. package/components/common/button/model.js +21 -6
  225. package/components/common/confirmationModal/ConfirmationModal.svelte +8 -1
  226. package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +4 -4
  227. package/components/common/drawer/Drawer.svelte +3 -1
  228. package/components/common/fileInput/FileInput.svelte +112 -0
  229. package/components/common/fileInput/FileInput.svelte.d.ts +27 -0
  230. package/components/common/index.d.ts +1 -0
  231. package/components/common/index.js +1 -0
  232. package/components/common/kbd/Kbd.svelte.d.ts +2 -2
  233. package/components/common/modal/Modal.svelte +74 -0
  234. package/components/common/modal/Modal.svelte.d.ts +22 -0
  235. package/components/common/popup/Popup.svelte +34 -17
  236. package/components/common/popup/Popup.svelte.d.ts +11 -4
  237. package/components/common/table/FlowRow.svelte +22 -3
  238. package/components/common/table/LanguageBadge.svelte +10 -4
  239. package/components/common/table/Row.svelte +1 -1
  240. package/components/common/table/ScriptRow.svelte +2 -2
  241. package/components/common/tabs/Tabs.svelte +9 -7
  242. package/components/common/tabs/Tabs.svelte.d.ts +3 -1
  243. package/components/flows/CreateActionsFlow.svelte +2 -3
  244. package/components/flows/content/BranchPredicateEditor.svelte +10 -8
  245. package/components/flows/content/CapturePayload.svelte +3 -3
  246. package/components/flows/content/FlowInputs.svelte +109 -99
  247. package/components/flows/content/FlowLoop.svelte +1 -1
  248. package/components/flows/content/FlowModuleComponent.svelte +3 -2
  249. package/components/flows/content/FlowRetries.svelte +8 -6
  250. package/components/flows/content/FlowSettings.svelte +72 -26
  251. package/components/flows/flowState.d.ts +1 -0
  252. package/components/flows/flowState.js +1 -0
  253. package/components/flows/flowStateUtils.js +4 -2
  254. package/components/flows/flowStore.d.ts +1 -0
  255. package/components/flows/flowStore.js +1 -0
  256. package/components/flows/map/FlowBranchAllMap.svelte +1 -1
  257. package/components/flows/map/FlowBranchOneMap.svelte +2 -2
  258. package/components/flows/map/FlowModuleSchemaItem.svelte +5 -5
  259. package/components/flows/map/FlowModuleSchemaMap.svelte +15 -8
  260. package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -0
  261. package/components/flows/map/InsertModuleButton.svelte +24 -10
  262. package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -0
  263. package/components/flows/map/MapItem.svelte +3 -1
  264. package/components/flows/utils.js +16 -10
  265. package/components/graph/FlowGraph.svelte +38 -15
  266. package/components/graph/FlowGraph.svelte.d.ts +1 -0
  267. package/components/icons/SquareIcon.svelte +9 -0
  268. package/components/icons/SquareIcon.svelte.d.ts +17 -0
  269. package/components/icons/index.d.ts +2 -0
  270. package/components/icons/index.js +2 -0
  271. package/components/jobs/JobDetail.svelte +29 -5
  272. package/components/propertyPicker/ObjectViewer.svelte +8 -5
  273. package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
  274. package/components/propertyPicker/PropPicker.svelte +8 -1
  275. package/components/propertyPicker/PropPickerResult.svelte +1 -1
  276. package/components/random_positive_adjetive.d.ts +1 -0
  277. package/components/random_positive_adjetive.js +961 -0
  278. package/components/scriptEditor/LogPanel.svelte +2 -1
  279. package/components/sidebar/SidebarContent.svelte +1 -1
  280. package/components/sidebar/UserMenu.svelte +46 -16
  281. package/components/sidebar/UserMenu.svelte.d.ts +0 -3
  282. package/components/sidebar/WorkspaceMenu.svelte +3 -1
  283. package/components/sidebar/settings.d.ts +2 -0
  284. package/components/sidebar/settings.js +2 -0
  285. package/gen/core/OpenAPI.js +1 -1
  286. package/gen/models/CompletedJob.d.ts +1 -0
  287. package/gen/models/FlowModule.d.ts +0 -1
  288. package/gen/models/QueuedJob.d.ts +1 -0
  289. package/gen/models/WorkerPing.d.ts +1 -1
  290. package/gen/services/FlowService.d.ts +9 -0
  291. package/gen/services/FlowService.js +15 -0
  292. package/gen/services/JobService.d.ts +97 -15
  293. package/gen/services/JobService.js +74 -15
  294. package/gen/services/ScriptService.d.ts +10 -1
  295. package/gen/services/ScriptService.js +16 -1
  296. package/gen/services/VariableService.d.ts +4 -2
  297. package/gen/services/VariableService.js +8 -2
  298. package/gen/services/WorkspaceService.d.ts +17 -0
  299. package/gen/services/WorkspaceService.js +16 -0
  300. package/infer.js +3 -0
  301. package/init_scripts/python_failure_module.py +10 -0
  302. package/init_scripts/python_init_code.py +37 -0
  303. package/init_scripts/python_init_code_clear.py +5 -0
  304. package/init_scripts/python_init_code_trigger.py +14 -0
  305. package/logout.js +2 -1
  306. package/package.json +577 -522
  307. package/script_helpers.d.ts +6 -5
  308. package/script_helpers.js +7 -73
  309. package/stores.d.ts +5 -1
  310. package/stores.js +8 -1
  311. package/user.d.ts +1 -1
  312. package/user.js +14 -8
  313. package/utils.d.ts +1 -1
  314. package/utils.js +8 -7
  315. package/components/apps/components/DisplayComponent.svelte +0 -16
  316. package/components/apps/components/DisplayComponent.svelte.d.ts +0 -20
  317. package/components/apps/components/dataDisplay/AppHtml.svelte +0 -35
  318. package/components/apps/components/dataDisplay/VegaLiteHtml.svelte +0 -28
  319. package/components/apps/components/numberInputs/AppNumberInput.svelte +0 -33
  320. package/components/apps/components/selectInputs/AppSelect.svelte +0 -47
  321. package/components/apps/editor/ComponentEditor.svelte +0 -138
  322. package/components/apps/editor/ComponentEditor.svelte.d.ts +0 -23
  323. package/components/apps/editor/componentsPanel/data.d.ts +0 -3
  324. package/components/apps/editor/componentsPanel/data.js +0 -465
  325. package/components/apps/editorUtils.d.ts +0 -1
  326. package/components/apps/editorUtils.js +0 -253
  327. /package/components/apps/components/{form → buttons}/AppForm.svelte.d.ts +0 -0
  328. /package/components/apps/components/{table → display/table}/AppTableFooter.svelte.d.ts +0 -0
  329. /package/components/apps/components/{table → display/table}/tableOptions.d.ts +0 -0
  330. /package/components/apps/components/{table → display/table}/tableOptions.js +0 -0
  331. /package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte.d.ts +0 -0
  332. /package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte.d.ts +0 -0
  333. /package/components/apps/components/{numberInputs → inputs}/AppNumberInput.svelte.d.ts +0 -0
  334. /package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte.d.ts +0 -0
  335. /package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte.d.ts +0 -0
@@ -2,9 +2,10 @@
2
2
  import SplitPanesWrapper from '../../../splitPanes/SplitPanesWrapper.svelte';
3
3
  import { Pane, Splitpanes } from 'svelte-splitpanes';
4
4
  import InlineScriptsPanelList from './InlineScriptsPanelList.svelte';
5
- import InlineScriptEditorPanel from './InlineScriptEditorPanel.svelte';
6
5
  import InlineScriptEditor from './InlineScriptEditor.svelte';
7
- const { lazyGrid, app } = getContext('AppEditorContext');
6
+ import EmptyInlineScript from './EmptyInlineScript.svelte';
7
+ import InlineScriptEditorPanel from './InlineScriptEditorPanel.svelte';
8
+ const { app, staticOutputs, runnableComponents } = getContext('AppEditorContext');
8
9
  let selectedScriptComponentId = undefined;
9
10
  </script>
10
11
 
@@ -14,16 +15,20 @@ let selectedScriptComponentId = undefined;
14
15
  <InlineScriptsPanelList bind:selectedScriptComponentId />
15
16
  </Pane>
16
17
  <Pane size={75}>
17
- {#each $lazyGrid as gridComponent, index (index)}
18
- {#if gridComponent.data.id === selectedScriptComponentId}
18
+ {#if !selectedScriptComponentId}
19
+ <span class="p-2 text-sm text-gray-600">Select a script on the left panel</span>
20
+ {/if}
21
+
22
+ {#each $app.grid as gridItem (gridItem.data.id)}
23
+ {#if gridItem.data.id === selectedScriptComponentId}
19
24
  <InlineScriptEditorPanel
20
- id={gridComponent.data.id}
21
- bind:componentInput={gridComponent.data.componentInput}
25
+ id={gridItem.data.id}
26
+ bind:componentInput={gridItem.data.componentInput}
22
27
  />
23
28
  {/if}
24
29
 
25
- {#if gridComponent.data.type === 'tablecomponent'}
26
- {#each gridComponent.data.actionButtons as actionButton, index (index)}
30
+ {#if gridItem.data.type === 'tablecomponent'}
31
+ {#each gridItem.data.actionButtons as actionButton, index (index)}
27
32
  {#if actionButton.id === selectedScriptComponentId}
28
33
  <InlineScriptEditorPanel
29
34
  id={actionButton.id}
@@ -33,6 +38,31 @@ let selectedScriptComponentId = undefined;
33
38
  {/each}
34
39
  {/if}
35
40
  {/each}
41
+
42
+ {#if $app.subgrids}
43
+ {#each Object.keys($app.subgrids ?? {}) as key (key)}
44
+ {#each $app.subgrids[key] as gridItem (gridItem.data.id)}
45
+ {#if gridItem.data.id === selectedScriptComponentId}
46
+ <InlineScriptEditorPanel
47
+ id={gridItem.data.id}
48
+ bind:componentInput={gridItem.data.componentInput}
49
+ />
50
+ {/if}
51
+
52
+ {#if gridItem.data.type === 'tablecomponent'}
53
+ {#each gridItem.data.actionButtons as actionButton, index (index)}
54
+ {#if actionButton.id === selectedScriptComponentId}
55
+ <InlineScriptEditorPanel
56
+ id={actionButton.id}
57
+ bind:componentInput={actionButton.componentInput}
58
+ />
59
+ {/if}
60
+ {/each}
61
+ {/if}
62
+ {/each}
63
+ {/each}
64
+ {/if}
65
+
36
66
  {#each $app.unusedInlineScripts as unusedInlineScript, index (index)}
37
67
  {#if `unused-${index}` === selectedScriptComponentId}
38
68
  <InlineScriptEditor
@@ -47,6 +77,34 @@ let selectedScriptComponentId = undefined;
47
77
  />
48
78
  {/if}
49
79
  {/each}
80
+ {#each $app?.hiddenInlineScripts ?? [] as hiddenInlineScript, index (index)}
81
+ {#if `bg_${index}` === selectedScriptComponentId}
82
+ {#if hiddenInlineScript.inlineScript}
83
+ <InlineScriptEditor
84
+ id={`bg_${index}`}
85
+ bind:inlineScript={hiddenInlineScript.inlineScript}
86
+ bind:name={hiddenInlineScript.name}
87
+ on:delete={() => {
88
+ // remove the script from the array at the index
89
+ $app.hiddenInlineScripts.splice(index, 1)
90
+ $app.hiddenInlineScripts = [...$app.hiddenInlineScripts]
91
+
92
+ delete $staticOutputs[`bg_${index}`]
93
+ delete $runnableComponents[`bg_${index}`]
94
+ $staticOutputs = $staticOutputs
95
+ }}
96
+ />
97
+ {:else}
98
+ <EmptyInlineScript
99
+ id={`b_${index}`}
100
+ name={hiddenInlineScript.name}
101
+ on:new={(e) => {
102
+ hiddenInlineScript.inlineScript = e.detail
103
+ }}
104
+ />
105
+ {/if}
106
+ {/if}
107
+ {/each}
50
108
  </Pane>
51
109
  </Splitpanes>
52
110
  </SplitPanesWrapper>
@@ -1,62 +1,81 @@
1
- <script>import { Badge } from '../../../common';
2
- import { classNames } from '../../../../utils';
1
+ <script>import { Badge, Button } from '../../../common';
2
+ import { faPlus } from '@fortawesome/free-solid-svg-icons';
3
+ import { Plus } from 'lucide-svelte';
3
4
  import { getContext } from 'svelte';
5
+ import { getAllScriptNames } from '../../utils';
4
6
  import PanelSection from '../settingsPanel/common/PanelSection.svelte';
5
7
  import { getAppScripts } from './utils';
8
+ const PREFIX = 'script-selector-';
6
9
  export let selectedScriptComponentId = undefined;
7
10
  const { app, selectedComponent, lazyGrid } = getContext('AppEditorContext');
8
- function selectInlineScript(id) {
11
+ let list;
12
+ function selectScript(id) {
9
13
  selectedScriptComponentId = id;
10
- if (!id.startsWith('unused-')) {
14
+ if (!id.startsWith('unused-') || !id.startsWith('bg_')) {
11
15
  $selectedComponent = selectedScriptComponentId;
12
16
  }
13
17
  }
14
18
  $: runnables = getAppScripts($lazyGrid);
15
- // When seleced component changes, update selectedScriptComponentId
16
- $: {
17
- if (selectedComponent) {
18
- selectedScriptComponentId = $selectedComponent;
19
+ // When selected component changes, update selectedScriptComponentId
20
+ $: if ($selectedComponent != selectedScriptComponentId) {
21
+ selectedScriptComponentId = $selectedComponent;
22
+ }
23
+ function createBackgroundScript() {
24
+ let index = 0;
25
+ let newScriptPath = `Background Script ${index}`;
26
+ const names = getAllScriptNames($app);
27
+ // Find a name that is not used by any other inline script
28
+ while (names.includes(newScriptPath)) {
29
+ newScriptPath = `Background Script ${++index}`;
30
+ }
31
+ if (!$app.hiddenInlineScripts) {
32
+ $app.hiddenInlineScripts = [];
19
33
  }
34
+ $app.hiddenInlineScripts.push({
35
+ name: newScriptPath,
36
+ inlineScript: undefined,
37
+ fields: {}
38
+ });
39
+ $app.hiddenInlineScripts = $app.hiddenInlineScripts;
40
+ selectScript(`bg_${$app.hiddenInlineScripts.length - 1}`);
20
41
  }
21
42
  </script>
22
43
 
23
- <div class="min-h-full flex flex-col gap-4">
44
+ <div class="mb-0 pb-0 pl-2 sticky top-0 bg-white border-b text-xs font-semibold">Runnables</div>
45
+ <div bind:this={list} class="grow flex flex-col gap-4">
24
46
  <PanelSection title="Inline scripts" smallPadding>
25
47
  <div class="flex flex-col gap-2 w-full">
26
48
  {#if runnables.inline.length > 0}
27
- <div class="flex gap-2 flex-col ">
49
+ <div class="flex gap-1 flex-col ">
28
50
  {#each runnables.inline as { name, id }, index (index)}
29
- <!-- svelte-ignore a11y-click-events-have-key-events -->
30
- <div
31
- class="{classNames(
32
- 'border flex gap-1 truncate justify-between flex-row w-full items-center p-2 rounded-sm cursor-pointer hover:bg-blue-50 hover:text-blue-400',
33
- selectedScriptComponentId === id ? 'border-blue-500 border' : ''
34
- )},"
35
- on:click={() => selectInlineScript(id)}
51
+ <button
52
+ id={PREFIX + id}
53
+ class="border flex gap-1 truncate font-normal justify-between w-full items-center py-1 px-2 rounded-sm duration-200
54
+ {selectedScriptComponentId === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
55
+ on:click={() => selectScript(id)}
36
56
  >
37
- <span class="text-xs truncate">{name}</span>
57
+ <span class="text-2xs truncate">{name}</span>
38
58
  <div>
39
59
  <Badge color="dark-indigo">{id}</Badge>
40
60
  </div>
41
- </div>
61
+ </button>
42
62
  {/each}
43
63
  </div>
44
64
  {/if}
45
65
 
46
66
  {#if $app.unusedInlineScripts?.length > 0}
47
- <div class="flex gap-2 flex-col ">
67
+ <div class="flex gap-1 flex-col ">
48
68
  {#each $app.unusedInlineScripts as unusedInlineScript, index (index)}
49
- <!-- svelte-ignore a11y-click-events-have-key-events -->
50
- <div
51
- class="{classNames(
52
- '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',
53
- selectedScriptComponentId === `unused-${index}` ? 'bg-blue-100 text-blue-600' : ''
54
- )},"
55
- on:click={() => selectInlineScript(`unused-${index}`)}
69
+ {@const id = `unused-${index}`}
70
+ <button
71
+ id={PREFIX + id}
72
+ class="border flex gap-1 truncate font-normal justify-between w-full items-center py-1 px-2 rounded-sm duration-200
73
+ {selectedScriptComponentId === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
74
+ on:click={() => selectScript(id)}
56
75
  >
57
- <span class="text-xs truncate">{unusedInlineScript.name}</span>
76
+ <span class="text-2xs truncate">{unusedInlineScript.name}</span>
58
77
  <Badge color="red">Detached</Badge>
59
- </div>
78
+ </button>
60
79
  {/each}
61
80
  </div>
62
81
  {/if}
@@ -67,24 +86,51 @@ $: {
67
86
  </div>
68
87
  </PanelSection>
69
88
 
70
- <PanelSection title="Imported scripts" smallPadding>
71
- <div class="flex flex-col gap-2 w-full">
89
+ <PanelSection title="Workspace/Hub" smallPadding>
90
+ <div class="flex flex-col gap-1 w-full">
72
91
  {#if runnables.imported.length > 0}
73
- <div class="flex gap-2 flex-col ">
74
- {#each runnables.imported as { name, id }, index (index)}
75
- <!-- svelte-ignore a11y-click-events-have-key-events -->
76
- <div
77
- class="{classNames(
78
- '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',
79
- selectedScriptComponentId === id ? 'bg-blue-100 text-blue-600' : ''
80
- )},"
81
- on:click={() => selectInlineScript(id)}
82
- >
83
- <span class="text-xs truncate">{name}</span>
84
- <Badge color="dark-indigo">{id}</Badge>
85
- </div>
86
- {/each}
87
- </div>
92
+ {#each runnables.imported as { name, id }, index (index)}
93
+ <button
94
+ id={PREFIX + id}
95
+ class="border flex gap-1 truncate font-normal justify-between w-full items-center py-1 px-2 rounded-sm duration-200
96
+ {selectedScriptComponentId === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
97
+ on:click={() => selectScript(id)}
98
+ >
99
+ <span class="text-2xs truncate">{name}</span>
100
+ <Badge color="dark-indigo">{id}</Badge>
101
+ </button>
102
+ {/each}
103
+ {:else}
104
+ <div class="text-sm text-gray-500">No imported scripts/flows</div>
105
+ {/if}
106
+ </div>
107
+ </PanelSection>
108
+
109
+ <PanelSection
110
+ title="Background scripts"
111
+ tooltip="Background scripts are triggered upon global refresh or when their input changes. The result
112
+ of a background script can be shared among many components."
113
+ smallPadding
114
+ >
115
+ <svelte:fragment slot="action">
116
+ <Button size="xs" color="dark" variant="border" on:click={createBackgroundScript}
117
+ ><Plus size={14} />
118
+ </Button>
119
+ </svelte:fragment>
120
+ <div class="flex flex-col gap-1 w-full">
121
+ {#if $app.hiddenInlineScripts?.length > 0}
122
+ {#each $app.hiddenInlineScripts as { name }, index (index)}
123
+ {@const id = `bg_${index}`}
124
+ <button
125
+ id={PREFIX + id}
126
+ class="border flex gap-1 truncate font-normal justify-between w-full items-center py-1 px-2 rounded-sm duration-200
127
+ {selectedScriptComponentId === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
128
+ on:click={() => selectScript(id)}
129
+ >
130
+ <span class="text-2xs truncate">{name}</span>
131
+ <Badge color="dark-indigo">{id}</Badge>
132
+ </button>
133
+ {/each}
88
134
  {:else}
89
135
  <div class="text-sm text-gray-500">No items</div>
90
136
  {/if}
@@ -1,4 +1,7 @@
1
- import type { AppComponent, GridItem } from "../../types";
1
+ import type { Schema } from "../../../../common";
2
+ import type { AppInputs } from "../../inputType";
3
+ import type { GridItem } from "../../types";
4
+ import type { AppComponent } from "../component";
2
5
  export interface AppScriptsList {
3
6
  inline: {
4
7
  name: string;
@@ -9,6 +12,7 @@ export interface AppScriptsList {
9
12
  id: string;
10
13
  }[];
11
14
  }
15
+ export declare function computeFields(schema: Schema, defaultUserInput: boolean, fields: AppInputs): {};
12
16
  export declare function getAppScripts(grid: GridItem[]): FilledItem<{
13
17
  data: AppComponent;
14
18
  id: string;
@@ -1,3 +1,33 @@
1
+ import { fieldTypeToTsType, schemaToInputsSpec } from "../../utils";
2
+ // When the schema is loaded, we need to update the inputs spec
3
+ // in order to render the inputs the component panel
4
+ export function computeFields(schema, defaultUserInput, fields) {
5
+ let schemaCopy = JSON.parse(JSON.stringify(schema));
6
+ const result = {};
7
+ const newInputs = schemaToInputsSpec(schemaCopy, defaultUserInput);
8
+ if (!fields) {
9
+ return newInputs;
10
+ }
11
+ Object.keys(newInputs).forEach((key) => {
12
+ const newInput = newInputs[key];
13
+ const oldInput = fields[key];
14
+ // If the input is not present in the old inputs, add it
15
+ if (oldInput === undefined) {
16
+ result[key] = newInput;
17
+ }
18
+ else {
19
+ if (fieldTypeToTsType(newInput.fieldType) !== fieldTypeToTsType(oldInput.fieldType) ||
20
+ newInput.format !== oldInput.format ||
21
+ newInput.subFieldType !== oldInput.subFieldType) {
22
+ result[key] = newInput;
23
+ }
24
+ else {
25
+ result[key] = oldInput;
26
+ }
27
+ }
28
+ });
29
+ return result;
30
+ }
1
31
  export function getAppScripts(grid) {
2
32
  return grid.reduce((acc, gridComponent) => {
3
33
  const component = gridComponent.data;
@@ -4,7 +4,7 @@ import PanelSection from './common/PanelSection.svelte';
4
4
  export let component;
5
5
  </script>
6
6
 
7
- {#if component.verticalAlignment !== undefined}
7
+ {#if component.horizontalAlignment || component.verticalAlignment}
8
8
  <PanelSection title="Alignment">
9
9
  <div class="flex flex-wrap gap-2">
10
10
  {#if component.horizontalAlignment}
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { AppComponent } from '../../types';
2
+ import type { AppComponent } from '../component';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  component: AppComponent;
@@ -1,8 +1,10 @@
1
1
  <script>import { Button } from '../../../common';
2
2
  import { faPlus, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
3
+ import { createEventDispatcher } from 'svelte';
3
4
  import { staticValues } from '../componentsPanel/componentStaticValues';
4
5
  import SubTypeEditor from './SubTypeEditor.svelte';
5
6
  export let componentInput;
7
+ const dispatch = createEventDispatcher();
6
8
  function addElementByType() {
7
9
  if (componentInput.subFieldType && componentInput.value) {
8
10
  if (componentInput.subFieldType === 'boolean') {
@@ -31,6 +33,7 @@ function addElementByType() {
31
33
  function deleteElementByType(index) {
32
34
  if (componentInput.value) {
33
35
  componentInput.value.splice(index, 1);
36
+ dispatch('deleteArrayItem', { index });
34
37
  componentInput = componentInput;
35
38
  }
36
39
  }
@@ -42,7 +45,7 @@ function deleteElementByType(index) {
42
45
  <div class="flex flex-row gap-2 items-center relative">
43
46
  <SubTypeEditor bind:componentInput bind:value />
44
47
 
45
- <div class="absolute top-4 right-4">
48
+ <div class="absolute top-1 right-1">
46
49
  <Button
47
50
  size="xs"
48
51
  color="light"
@@ -5,43 +5,101 @@ declare const __propDef: {
5
5
  fieldType: "array";
6
6
  subFieldType?: "text" | undefined;
7
7
  format?: string | undefined;
8
+ fileUpload?: {
9
+ accept: string;
10
+ multiple?: boolean | undefined;
11
+ base64?: boolean | undefined;
12
+ } | undefined;
8
13
  }) | (import("../../inputType").StaticInput<string[]> & {
9
14
  fieldType: "array";
10
15
  subFieldType?: "textarea" | undefined;
11
16
  format?: string | undefined;
17
+ fileUpload?: {
18
+ accept: string;
19
+ multiple?: boolean | undefined;
20
+ base64?: boolean | undefined;
21
+ } | undefined;
12
22
  }) | (import("../../inputType").StaticInput<number[]> & {
13
23
  fieldType: "array";
14
24
  subFieldType?: "number" | undefined;
15
25
  format?: string | undefined;
26
+ fileUpload?: {
27
+ accept: string;
28
+ multiple?: boolean | undefined;
29
+ base64?: boolean | undefined;
30
+ } | undefined;
16
31
  }) | (import("../../inputType").StaticInput<boolean[]> & {
17
32
  fieldType: "array";
18
33
  subFieldType?: "boolean" | undefined;
19
34
  format?: string | undefined;
35
+ fileUpload?: {
36
+ accept: string;
37
+ multiple?: boolean | undefined;
38
+ base64?: boolean | undefined;
39
+ } | undefined;
20
40
  }) | (import("../../inputType").StaticInput<string[]> & {
21
41
  fieldType: "array";
22
42
  subFieldType?: "date" | undefined;
23
43
  format?: string | undefined;
44
+ fileUpload?: {
45
+ accept: string;
46
+ multiple?: boolean | undefined;
47
+ base64?: boolean | undefined;
48
+ } | undefined;
24
49
  }) | (import("../../inputType").StaticInput<string[]> & {
25
50
  fieldType: "array";
26
51
  subFieldType?: "time" | undefined;
27
52
  format?: string | undefined;
53
+ fileUpload?: {
54
+ accept: string;
55
+ multiple?: boolean | undefined;
56
+ base64?: boolean | undefined;
57
+ } | undefined;
28
58
  }) | (import("../../inputType").StaticInput<string[]> & {
29
59
  fieldType: "array";
30
60
  subFieldType?: "datetime" | undefined;
31
61
  format?: string | undefined;
62
+ fileUpload?: {
63
+ accept: string;
64
+ multiple?: boolean | undefined;
65
+ base64?: boolean | undefined;
66
+ } | undefined;
32
67
  }) | (import("../../inputType").StaticInput<object[]> & {
33
68
  fieldType: "array";
34
69
  subFieldType?: "object" | undefined;
35
70
  format?: string | undefined;
71
+ fileUpload?: {
72
+ accept: string;
73
+ multiple?: boolean | undefined;
74
+ base64?: boolean | undefined;
75
+ } | undefined;
36
76
  }) | (import("../../inputType").StaticInput<string[]> & {
37
77
  fieldType: "array";
38
78
  subFieldType?: "select" | undefined;
39
79
  format?: string | undefined;
80
+ fileUpload?: {
81
+ accept: string;
82
+ multiple?: boolean | undefined;
83
+ base64?: boolean | undefined;
84
+ } | undefined;
40
85
  } & {
41
- optionValuesKey: "buttonColorOptions" | "buttonSizeOptions" | "tableSearchOptions" | "chartThemeOptions" | "textStyleOptions";
86
+ optionValuesKey: "buttonColorOptions" | "buttonSizeOptions" | "tableSearchOptions" | "chartThemeOptions" | "textStyleOptions" | "currencyOptions" | "localeOptions" | "objectFitOptions";
87
+ }) | (import("../../inputType").StaticInput<string[]> & {
88
+ fieldType: "array";
89
+ subFieldType?: "select" | undefined;
90
+ format?: string | undefined;
91
+ fileUpload?: {
92
+ accept: string;
93
+ multiple?: boolean | undefined;
94
+ base64?: boolean | undefined;
95
+ } | undefined;
96
+ } & {
97
+ optionValuesKey: "buttonColorOptions" | "buttonSizeOptions" | "tableSearchOptions" | "chartThemeOptions" | "textStyleOptions" | "currencyOptions" | "localeOptions" | "objectFitOptions";
42
98
  });
43
99
  };
44
100
  events: {
101
+ deleteArrayItem: CustomEvent<any>;
102
+ } & {
45
103
  [evt: string]: CustomEvent<any>;
46
104
  };
47
105
  slots: {};
@@ -1,5 +1,5 @@
1
1
  <script>import Button from '../../../common/button/Button.svelte';
2
- import { faTrashAlt } from '@fortawesome/free-solid-svg-icons';
2
+ import { faCopy, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
3
3
  import { getContext } from 'svelte';
4
4
  import PanelSection from './common/PanelSection.svelte';
5
5
  import InputsSpecsEditor from './InputsSpecsEditor.svelte';
@@ -15,44 +15,39 @@ import ComponentInputTypeEditor from './ComponentInputTypeEditor.svelte';
15
15
  import AlignmentEditor from './AlignmentEditor.svelte';
16
16
  import RunnableInputEditor from './inputEditor/RunnableInputEditor.svelte';
17
17
  import TemplateEditor from '../../../TemplateEditor.svelte';
18
+ import CssProperty from '../componentsPanel/CssProperty.svelte';
19
+ import { dirtyStore } from '../../../common/confirmationModal/dirtyStore';
20
+ import GridTab from './GridTab.svelte';
21
+ import { duplicateGridItem } from '../appUtils';
22
+ import { deleteGridItem } from '../appUtils';
23
+ import MoveToOtherGrid from './MoveToOtherGrid.svelte';
18
24
  export let component;
19
- export let onDelete = undefined;
20
25
  export let rowColumns = false;
21
- const { app, staticOutputs, runnableComponents, selectedComponent, worldStore } = getContext('AppEditorContext');
26
+ export let onDelete = undefined;
27
+ export let parent;
28
+ export let noGrid = false;
29
+ const { app, staticOutputs, runnableComponents, selectedComponent, worldStore, focusedGrid } = getContext('AppEditorContext');
30
+ function duplicateElement(id) {
31
+ $dirtyStore = true;
32
+ const newId = duplicateGridItem($app, parent, id);
33
+ $selectedComponent = newId;
34
+ }
22
35
  function removeGridElement() {
23
36
  $selectedComponent = undefined;
24
- if (onDelete && component) {
25
- delete $staticOutputs[component.id];
26
- $staticOutputs = $staticOutputs;
27
- delete $runnableComponents[component.id];
28
- $runnableComponents = $runnableComponents;
29
- onDelete();
30
- // Delete static inputs
31
- }
32
- else {
33
- if (component) {
34
- $app.grid = $app.grid.filter((gridComponent) => gridComponent.data.id !== component?.id);
35
- // Delete static inputs
36
- delete $staticOutputs[component.id];
37
- $staticOutputs = $staticOutputs;
38
- delete $runnableComponents[component.id];
39
- $runnableComponents = $runnableComponents;
40
- }
41
- }
42
- if (component &&
43
- component.componentInput?.type === 'runnable' &&
44
- component.componentInput?.runnable?.type === 'runnableByName') {
45
- const { name, inlineScript } = component.componentInput.runnable;
46
- if (inlineScript) {
47
- if (!$app.unusedInlineScripts) {
48
- $app.unusedInlineScripts = [];
49
- }
50
- $app.unusedInlineScripts.push({
51
- name,
52
- inlineScript
53
- });
37
+ $focusedGrid = undefined;
38
+ if (component && !noGrid) {
39
+ let ids = deleteGridItem($app, component, parent);
40
+ for (const key of ids) {
41
+ delete $staticOutputs[key];
42
+ delete $runnableComponents[key];
54
43
  }
55
44
  }
45
+ delete $staticOutputs[component.id];
46
+ delete $runnableComponents[component.id];
47
+ $app = $app;
48
+ $staticOutputs = $staticOutputs;
49
+ $runnableComponents = $runnableComponents;
50
+ onDelete?.();
56
51
  }
57
52
  $: extraLib =
58
53
  component?.componentInput?.type === 'template' && $worldStore
@@ -143,15 +138,50 @@ $: extraLib =
143
138
  </PanelSection>
144
139
  {/if}
145
140
 
141
+ {#if component.type === 'tabscomponent'}
142
+ <GridTab bind:tabs={component.tabs} {component} />
143
+ {/if}
144
+
146
145
  {#if component.type === 'tablecomponent' && Array.isArray(component.actionButtons)}
147
146
  <TableActions id={component.id} bind:components={component.actionButtons} />
148
147
  {/if}
149
148
 
150
149
  <AlignmentEditor bind:component />
151
- {#if component.type === 'buttoncomponent' || component.type === 'formcomponent'}
150
+ {#if component.type === 'buttoncomponent' || component.type === 'formcomponent' || component.type === 'formbuttoncomponent'}
152
151
  <Recompute bind:recomputeIds={component.recomputeIds} ownId={component.id} />
153
152
  {/if}
154
153
 
154
+ {#if Object.keys(component.customCss ?? {}).length > 0}
155
+ <PanelSection title="Custom CSS">
156
+ {#each Object.keys(component.customCss ?? {}) as name}
157
+ {#if component?.customCss?.[name]}
158
+ <div class="mb-2">
159
+ <CssProperty {name} bind:value={component.customCss[name]} />
160
+ </div>
161
+ {/if}
162
+ {/each}
163
+ </PanelSection>
164
+ {/if}
165
+
166
+ <PanelSection title="Duplicate">
167
+ <Button
168
+ size="xs"
169
+ color="dark"
170
+ startIcon={{ icon: faCopy }}
171
+ on:click={() => {
172
+ if (component) {
173
+ duplicateElement(component.id)
174
+ }
175
+ }}
176
+ >
177
+ Duplicate component: {component.id}
178
+ </Button>
179
+ </PanelSection>
180
+
181
+ <PanelSection title="Move to other grid">
182
+ <MoveToOtherGrid bind:component {parent} />
183
+ </PanelSection>
184
+
155
185
  <PanelSection title="Danger zone">
156
186
  <Button
157
187
  size="xs"
@@ -1,10 +1,12 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { AppComponent } from '../../types';
2
+ import type { AppComponent } from '../component';
3
3
  declare const __propDef: {
4
4
  props: {
5
- component: AppComponent | undefined;
6
- onDelete?: (() => void) | undefined;
5
+ component: AppComponent;
7
6
  rowColumns?: boolean | undefined;
7
+ onDelete?: (() => void) | undefined;
8
+ parent: string | undefined;
9
+ noGrid?: boolean | undefined;
8
10
  };
9
11
  events: {
10
12
  [evt: string]: CustomEvent<any>;