windmill-components 1.269.3 → 1.291.4

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 (339) hide show
  1. package/package/ata/apis.d.ts +8 -5
  2. package/package/ata/apis.js +20 -9
  3. package/package/ata/edgeCases.js +5 -1
  4. package/package/ata/index.d.ts +3 -3
  5. package/package/ata/index.js +51 -28
  6. package/package/common.d.ts +1 -0
  7. package/package/components/AddUser.svelte +15 -6
  8. package/package/components/ApiConnectForm.svelte +1 -1
  9. package/package/components/ArgEnum.svelte +1 -1
  10. package/package/components/ArgEnum.svelte.d.ts +1 -1
  11. package/package/components/ArgInfo.svelte +2 -1
  12. package/package/components/ArgInput.svelte +7 -6
  13. package/package/components/ArgInput.svelte.d.ts +1 -1
  14. package/package/components/ArrayTypeNarrowing.svelte +2 -0
  15. package/package/components/CenteredModal.svelte +5 -2
  16. package/package/components/ChangeInstanceUsername.svelte +123 -0
  17. package/package/components/ChangeInstanceUsername.svelte.d.ts +20 -0
  18. package/package/components/ContentSearch.svelte +3 -4
  19. package/package/components/ContentSearch.svelte.d.ts +0 -3
  20. package/package/components/DateTimeInput.svelte +73 -9
  21. package/package/components/DateTimeInput.svelte.d.ts +8 -1
  22. package/package/components/DefaultScripts.svelte +26 -0
  23. package/package/components/DefaultScripts.svelte.d.ts +14 -0
  24. package/package/components/DefaultScriptsInner.svelte +75 -0
  25. package/package/components/DefaultScriptsInner.svelte.d.ts +14 -0
  26. package/package/components/Dev.svelte +59 -17
  27. package/package/components/DisplayResult.svelte +73 -67
  28. package/package/components/DurationMs.svelte +9 -8
  29. package/package/components/DurationMs.svelte.d.ts +1 -0
  30. package/package/components/Editor.svelte +23 -7
  31. package/package/components/FieldHeader.svelte +7 -7
  32. package/package/components/FlowBuilder.svelte +24 -13
  33. package/package/components/FlowBuilder.svelte.d.ts +0 -3
  34. package/package/components/FlowLoopIterationPreview.svelte +6 -5
  35. package/package/components/FlowMetadata.svelte +6 -2
  36. package/package/components/FlowPreviewContent.svelte +5 -5
  37. package/package/components/FolderEditor.svelte +20 -39
  38. package/package/components/GroupEditor.svelte +1 -1
  39. package/package/components/HighlightCode.svelte +7 -5
  40. package/package/components/IconedResourceType.svelte +5 -3
  41. package/package/components/IconedResourceType.svelte.d.ts +21 -7
  42. package/package/components/InputTransformForm.svelte +6 -1
  43. package/package/components/InstanceSettings.svelte +29 -17
  44. package/package/components/InstanceSettings.svelte.d.ts +3 -0
  45. package/package/components/InviteGlobalUser.svelte +1 -1
  46. package/package/components/JobArgs.svelte +20 -7
  47. package/package/components/JobStatus.svelte +8 -2
  48. package/package/components/LightweightArgInput.svelte +30 -14
  49. package/package/components/LightweightSchemaForm.svelte +1 -0
  50. package/package/components/LogViewer.svelte +21 -6
  51. package/package/components/ModulePreview.svelte +19 -11
  52. package/package/components/ModulePreview.svelte.d.ts +3 -2
  53. package/package/components/ObjectResourceInput.svelte +2 -0
  54. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  55. package/package/components/Password.svelte +5 -2
  56. package/package/components/Password.svelte.d.ts +1 -0
  57. package/package/components/Path.svelte +10 -12
  58. package/package/components/ResourcePicker.svelte +28 -9
  59. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  60. package/package/components/RunChart.svelte +1 -0
  61. package/package/components/RunForm.svelte +9 -17
  62. package/package/components/RunFormAdvancedPopup.svelte +11 -12
  63. package/package/components/S3FilePicker.svelte +1 -0
  64. package/package/components/ScheduleEditorInner.svelte +10 -9
  65. package/package/components/ScheduleEditorInner.svelte.d.ts +2 -2
  66. package/package/components/SchemaEditor.svelte +12 -1
  67. package/package/components/SchemaForm.svelte +1 -2
  68. package/package/components/SchemaModal.svelte +2 -2
  69. package/package/components/ScriptBuilder.svelte +152 -79
  70. package/package/components/ScriptBuilder.svelte.d.ts +1 -1
  71. package/package/components/ScriptEditor.svelte +8 -9
  72. package/package/components/ScriptSchedules.svelte +99 -0
  73. package/package/components/ScriptSchedules.svelte.d.ts +20 -0
  74. package/package/components/ShareModal.svelte +1 -0
  75. package/package/components/StringTypeNarrowing.svelte +9 -3
  76. package/package/components/SuperadminSettings.svelte +114 -10
  77. package/package/components/TestJobLoader.svelte +8 -0
  78. package/package/components/TestJobLoader.svelte.d.ts +1 -0
  79. package/package/components/TimeAgo.svelte +2 -2
  80. package/package/components/TimelineBar.svelte +5 -2
  81. package/package/components/Toggle.svelte +5 -2
  82. package/package/components/Toggle.svelte.d.ts +1 -0
  83. package/package/components/Tooltip.svelte +13 -2
  84. package/package/components/Tooltip.svelte.d.ts +1 -0
  85. package/package/components/Uptodate.svelte +12 -6
  86. package/package/components/UserSettings.svelte +87 -73
  87. package/package/components/WorkerTagPicker.svelte +4 -2
  88. package/package/components/WorkflowTimeline.svelte +106 -0
  89. package/package/components/WorkflowTimeline.svelte.d.ts +18 -0
  90. package/package/components/WorkspaceGroup.svelte +1 -0
  91. package/package/components/apps/components/buttons/AppButton.svelte +9 -19
  92. package/package/components/apps/components/display/AppCustomComponent.svelte +2 -4
  93. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +246 -94
  94. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte.d.ts +0 -3
  95. package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +17 -5
  96. package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte.d.ts +6 -2
  97. package/package/components/apps/components/display/dbtable/DeleteRow.svelte +6 -4
  98. package/package/components/apps/components/display/dbtable/DeleteRow.svelte.d.ts +3 -3
  99. package/package/components/apps/components/display/dbtable/InsertRow.svelte +55 -37
  100. package/package/components/apps/components/display/dbtable/InsertRow.svelte.d.ts +17 -1
  101. package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +4 -3
  102. package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte.d.ts +2 -2
  103. package/package/components/apps/components/display/dbtable/UpdateCell.svelte +5 -4
  104. package/package/components/apps/components/display/dbtable/UpdateCell.svelte.d.ts +3 -3
  105. package/package/components/apps/components/display/dbtable/queries/count.d.ts +4 -0
  106. package/package/components/apps/components/display/dbtable/queries/count.js +140 -0
  107. package/package/components/apps/components/display/dbtable/queries/delete.d.ts +3 -0
  108. package/package/components/apps/components/display/dbtable/queries/delete.js +68 -0
  109. package/package/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
  110. package/package/components/apps/components/display/dbtable/queries/insert.js +121 -0
  111. package/package/components/apps/components/display/dbtable/queries/select.d.ts +7 -0
  112. package/package/components/apps/components/display/dbtable/queries/select.js +196 -0
  113. package/package/components/apps/components/display/dbtable/queries/update.d.ts +3 -0
  114. package/package/components/apps/components/display/dbtable/queries/update.js +75 -0
  115. package/package/components/apps/components/display/dbtable/utils.d.ts +79 -0
  116. package/package/components/apps/components/display/dbtable/utils.js +284 -309
  117. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +39 -19
  118. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +0 -2
  119. package/package/components/apps/components/display/table/AppAggridTable.svelte +4 -1
  120. package/package/components/apps/components/display/table/AppTable.svelte +4 -0
  121. package/package/components/apps/components/display/table/AppTable.svelte.d.ts +2 -2
  122. package/package/components/apps/components/display/table/utils.js +42 -0
  123. package/package/components/apps/components/helpers/InputValue.svelte +10 -8
  124. package/package/components/apps/components/helpers/InputValue.svelte.d.ts +1 -0
  125. package/package/components/apps/components/helpers/RefreshButton.svelte +1 -1
  126. package/package/components/apps/components/helpers/ResolveConfig.svelte +2 -0
  127. package/package/components/apps/components/helpers/RunnableComponent.svelte +6 -2
  128. package/package/components/apps/components/helpers/eval.d.ts +2 -2
  129. package/package/components/apps/components/helpers/eval.js +33 -11
  130. package/package/components/apps/components/inputs/AppCheckbox.svelte +4 -0
  131. package/package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +1 -0
  132. package/package/components/apps/components/inputs/AppDateInput.svelte +2 -2
  133. package/package/components/apps/components/inputs/AppDateTimeInput.svelte +121 -0
  134. package/package/components/apps/components/inputs/AppDateTimeInput.svelte.d.ts +22 -0
  135. package/package/components/apps/components/inputs/AppSelect.svelte +5 -0
  136. package/package/components/apps/components/inputs/AppSelect.svelte.d.ts +1 -0
  137. package/package/components/apps/components/inputs/AppTimeInput.svelte +103 -0
  138. package/package/components/apps/components/inputs/AppTimeInput.svelte.d.ts +21 -0
  139. package/package/components/apps/components/layout/AppConditionalWrapper.svelte +0 -1
  140. package/package/components/apps/components/layout/AppDecisionTree.svelte +12 -0
  141. package/package/components/apps/components/layout/AppStepper.svelte +4 -2
  142. package/package/components/apps/editor/AppEditor.svelte +19 -4
  143. package/package/components/apps/editor/AppEditorHeader.svelte +42 -14
  144. package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +2 -0
  145. package/package/components/apps/editor/AppTimeline.svelte +4 -4
  146. package/package/components/apps/editor/DecisionTreeDebug.svelte +1 -1
  147. package/package/components/apps/editor/DeploymentHistory.svelte +1 -1
  148. package/package/components/apps/editor/GridEditorMenu.svelte +3 -3
  149. package/package/components/apps/editor/RecomputeAllComponents.svelte +1 -1
  150. package/package/components/apps/editor/SettingsPanel.svelte +2 -0
  151. package/package/components/apps/editor/TabsDebug.svelte +2 -2
  152. package/package/components/apps/editor/appUtils.js +8 -0
  153. package/package/components/apps/editor/component/Component.svelte +21 -0
  154. package/package/components/apps/editor/component/components.d.ts +168 -9
  155. package/package/components/apps/editor/component/components.js +203 -10
  156. package/package/components/apps/editor/component/sets.js +2 -0
  157. package/package/components/apps/editor/componentsPanel/ComponentList.svelte +3 -3
  158. package/package/components/apps/editor/componentsPanel/ThemeList.svelte +1 -0
  159. package/package/components/apps/editor/componentsPanel/ThemeList.svelte.d.ts +2 -0
  160. package/package/components/apps/editor/componentsPanel/ThemeRow.svelte +8 -4
  161. package/package/components/apps/editor/componentsPanel/componentControlUtils.js +2 -0
  162. package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
  163. package/package/components/apps/editor/contextPanel/DebugPanel.svelte +178 -0
  164. package/package/components/apps/editor/contextPanel/DebugPanel.svelte.d.ts +14 -0
  165. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +3 -1
  166. package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +9 -18
  167. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +11 -16
  168. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +2 -2
  169. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptHiddenRunnable.svelte +2 -2
  170. package/package/components/apps/editor/inlineScriptsPanel/RunButton.svelte +4 -12
  171. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +27 -4
  172. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +3 -1
  173. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +68 -28
  174. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +1 -1
  175. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +57 -43
  176. package/package/components/apps/editor/settingsPanel/GridTab.svelte +15 -12
  177. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +9 -3
  178. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +4 -0
  179. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +8 -0
  180. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +2 -0
  181. package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +6 -0
  182. package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte.d.ts +2 -0
  183. package/package/components/apps/editor/settingsPanel/Recompute.svelte +4 -5
  184. package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +3 -0
  185. package/package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +4 -2
  186. package/package/components/apps/editor/settingsPanel/inputEditor/DBTableSelect.svelte +42 -0
  187. package/package/components/apps/editor/settingsPanel/inputEditor/DBTableSelect.svelte.d.ts +19 -0
  188. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +24 -2
  189. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte.d.ts +2 -0
  190. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +25 -15
  191. package/package/components/apps/editor/settingsPanel/script/BackgroundScriptSettings.svelte +1 -1
  192. package/package/components/apps/editor/settingsPanel/script/ComponentScriptSettings.svelte +1 -1
  193. package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingHeader.svelte +8 -1
  194. package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingHeader.svelte.d.ts +1 -0
  195. package/package/components/apps/editor/settingsPanel/script/shared/ScriptTriggers.svelte +13 -0
  196. package/package/components/apps/inputType.d.ts +2 -2
  197. package/package/components/apps/svelte-select/lib/Select.svelte +2 -1
  198. package/package/components/apps/types.d.ts +5 -3
  199. package/package/components/build_workers.js +9 -13
  200. package/package/components/common/button/Button.svelte +78 -36
  201. package/package/components/common/button/Button.svelte.d.ts +7 -0
  202. package/package/components/common/button/model.d.ts +0 -1
  203. package/package/components/common/button/model.js +0 -8
  204. package/package/components/common/calendarPicker/CalendarPicker.svelte +11 -37
  205. package/package/components/common/confirmationModal/ConfirmationModal.svelte +11 -10
  206. package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +5 -12
  207. package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte.d.ts +0 -3
  208. package/package/components/common/table/ScriptRow.svelte +28 -1
  209. package/package/components/common/tabs/Tab.svelte +6 -4
  210. package/package/components/common/tabs/Tab.svelte.d.ts +1 -0
  211. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +4 -2
  212. package/package/components/copilot/IteratorGen.svelte +10 -5
  213. package/package/components/copilot/MetadataGen.svelte +6 -1
  214. package/package/components/copilot/PredicateGen.svelte +3 -4
  215. package/package/components/copilot/ScriptFix.svelte +1 -1
  216. package/package/components/copilot/StepGen.svelte +2 -1
  217. package/package/components/copilot/StepGen.svelte.d.ts +1 -0
  218. package/package/components/copilot/StepInputGen.svelte +13 -7
  219. package/package/components/copilot/StepInputsGen.svelte +12 -7
  220. package/package/components/copilot/lib.d.ts +1 -1
  221. package/package/components/copilot/lib.js +2 -2
  222. package/package/components/details/Menu.svelte +11 -6
  223. package/package/components/details/Menu.svelte.d.ts +1 -3
  224. package/package/components/details/WebhooksPanel.svelte +1 -1
  225. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +11 -10
  226. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +11 -9
  227. package/package/components/flows/content/FlowInputs.svelte +84 -238
  228. package/package/components/flows/content/FlowLoop.svelte +25 -16
  229. package/package/components/flows/content/FlowModuleComponent.svelte +17 -2
  230. package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
  231. package/package/components/flows/content/FlowModuleWrapper.svelte +5 -0
  232. package/package/components/flows/content/FlowSchedules.svelte +75 -1
  233. package/package/components/flows/content/FlowSettings.svelte +5 -0
  234. package/package/components/flows/content/SuspendDrawer.svelte +1 -1
  235. package/package/components/flows/flowStateUtils.d.ts +1 -1
  236. package/package/components/flows/flowStateUtils.js +2 -2
  237. package/package/components/flows/idUtils.js +12 -1
  238. package/package/components/flows/map/FlowModuleSchemaMap.svelte +2 -2
  239. package/package/components/flows/map/InsertModuleButton.svelte +1 -3
  240. package/package/components/flows/map/MapItem.svelte +1 -1
  241. package/package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
  242. package/package/components/flows/scheduleUtils.d.ts +2 -1
  243. package/package/components/flows/scheduleUtils.js +2 -1
  244. package/package/components/home/ItemsList.svelte +10 -9
  245. package/package/components/icons/AsanaIcon.svelte +5 -0
  246. package/package/components/icons/AsanaIcon.svelte.d.ts +17 -0
  247. package/package/components/icons/BitbucketIcon.svelte +19 -0
  248. package/package/components/icons/BitbucketIcon.svelte.d.ts +17 -0
  249. package/package/components/icons/CACertificate.svelte +7 -0
  250. package/package/components/icons/CACertificate.svelte.d.ts +17 -0
  251. package/package/components/icons/CurrencyApiIcon.svelte +24 -0
  252. package/package/components/icons/CurrencyApiIcon.svelte.d.ts +17 -0
  253. package/package/components/icons/DynatraceIcon.svelte +26 -0
  254. package/package/components/icons/DynatraceIcon.svelte.d.ts +17 -0
  255. package/package/components/icons/EdgeDbIcon.svelte +25 -0
  256. package/package/components/icons/EdgeDbIcon.svelte.d.ts +17 -0
  257. package/package/components/icons/GitIcon.svelte +7 -0
  258. package/package/components/icons/GitIcon.svelte.d.ts +17 -0
  259. package/package/components/icons/GoogleCloudIcon.svelte +20 -0
  260. package/package/components/icons/GoogleCloudIcon.svelte.d.ts +17 -0
  261. package/package/components/icons/IpinfoIcon.svelte +8 -0
  262. package/package/components/icons/IpinfoIcon.svelte.d.ts +17 -0
  263. package/package/components/icons/MSTeamsIcon.svelte +5 -0
  264. package/package/components/icons/MSTeamsIcon.svelte.d.ts +17 -0
  265. package/package/components/icons/MailgunIcon.svelte +11 -0
  266. package/package/components/icons/MailgunIcon.svelte.d.ts +17 -0
  267. package/package/components/icons/PushoverIcon.svelte +8 -0
  268. package/package/components/icons/PushoverIcon.svelte.d.ts +17 -0
  269. package/package/components/icons/QuickbooksIcon.svelte +5 -0
  270. package/package/components/icons/QuickbooksIcon.svelte.d.ts +17 -0
  271. package/package/components/icons/ResendIcon.svelte +7 -0
  272. package/package/components/icons/ResendIcon.svelte.d.ts +17 -0
  273. package/package/components/icons/TrelloIcon.svelte +5 -0
  274. package/package/components/icons/TrelloIcon.svelte.d.ts +17 -0
  275. package/package/components/icons/TwilioIcon.svelte +11 -0
  276. package/package/components/icons/TwilioIcon.svelte.d.ts +17 -0
  277. package/package/components/icons/ZendeskIcon.svelte +11 -0
  278. package/package/components/icons/ZendeskIcon.svelte.d.ts +17 -0
  279. package/package/components/icons/index.d.ts +36 -1
  280. package/package/components/icons/index.js +37 -2
  281. package/package/components/instanceSettings.js +38 -1
  282. package/package/components/jobs/JobPreview.svelte +4 -1
  283. package/package/components/runs/JobLoader.svelte +6 -4
  284. package/package/components/runs/JobPreview.svelte +15 -1
  285. package/package/components/runs/ManuelDatePicker.svelte +1 -1
  286. package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -3
  287. package/package/components/runs/RunRow.svelte +5 -19
  288. package/package/components/runs/RunsFilter.svelte +1 -1
  289. package/package/components/runs/RunsTable.svelte +1 -1
  290. package/package/components/scriptEditor/LogPanel.svelte +12 -0
  291. package/package/components/settings/PremiumInfo.svelte +92 -31
  292. package/package/components/settings/WorkspaceUserSettings.svelte +42 -6
  293. package/package/components/sidebar/changelogs.js +20 -0
  294. package/package/components/table/AutoDataTable.svelte +18 -4
  295. package/package/consts.d.ts +0 -3
  296. package/package/consts.js +0 -3
  297. package/package/enterpriseUtils.d.ts +1 -0
  298. package/package/enterpriseUtils.js +17 -0
  299. package/package/gen/core/OpenAPI.js +1 -1
  300. package/package/gen/index.d.ts +5 -2
  301. package/package/gen/models/LargeFileStorage.d.ts +3 -1
  302. package/package/gen/models/LargeFileStorage.js +2 -0
  303. package/package/gen/models/User.d.ts +0 -2
  304. package/package/gen/models/UserUsage.d.ts +4 -0
  305. package/package/gen/models/WorkflowStatus.d.ts +6 -0
  306. package/package/gen/models/WorkflowStatusRecord.d.ts +2 -0
  307. package/package/gen/models/WorkflowStatusRecord.js +5 -0
  308. package/package/gen/models/WorkflowTask.d.ts +4 -0
  309. package/package/gen/models/WorkflowTask.js +5 -0
  310. package/package/gen/models/WorkspaceDefaultScripts.d.ts +5 -0
  311. package/package/gen/models/WorkspaceDefaultScripts.js +5 -0
  312. package/package/gen/services/AdminService.d.ts +6 -9
  313. package/package/gen/services/AdminService.js +6 -7
  314. package/package/gen/services/FolderService.d.ts +3 -2
  315. package/package/gen/services/JobService.d.ts +27 -2
  316. package/package/gen/services/JobService.js +22 -2
  317. package/package/gen/services/SettingService.d.ts +11 -0
  318. package/package/gen/services/SettingService.js +13 -0
  319. package/package/gen/services/UserService.d.ts +14 -9
  320. package/package/gen/services/UserService.js +20 -7
  321. package/package/gen/services/WorkspaceService.d.ts +62 -0
  322. package/package/gen/services/WorkspaceService.js +76 -0
  323. package/package/infer.d.ts +20 -1
  324. package/package/infer.js +39 -19
  325. package/package/script_helpers.d.ts +7 -6
  326. package/package/script_helpers.js +24 -7
  327. package/package/scripts.d.ts +11 -0
  328. package/package/scripts.js +38 -1
  329. package/package/stores.d.ts +2 -1
  330. package/package/stores.js +2 -0
  331. package/package/utils.d.ts +1 -1
  332. package/package/utils.js +3 -3
  333. package/package.json +3 -4
  334. package/package/components/common/confirmationModal/model.d.ts +0 -9
  335. package/package/components/common/confirmationModal/model.js +0 -1
  336. package/package/gen/models/NewUser.d.ts +0 -5
  337. package/package/gen/models/Usage.d.ts +0 -3
  338. /package/package/gen/models/{NewUser.js → UserUsage.js} +0 -0
  339. /package/package/gen/models/{Usage.js → WorkflowStatus.js} +0 -0
@@ -604,6 +604,12 @@ export const quickStyleProperties = {
604
604
  dateinputcomponent: {
605
605
  input: inputDefaultProps
606
606
  },
607
+ timeinputcomponent: {
608
+ input: inputDefaultProps
609
+ },
610
+ datetimeinputcomponent: {
611
+ container: inputDefaultProps
612
+ },
607
613
  fileinputcomponent: {
608
614
  container: containerDefaultProps
609
615
  },
@@ -0,0 +1,178 @@
1
+ <script>import { getContext } from 'svelte';
2
+ import { allItems } from '../../utils';
3
+ import Section from '../../../Section.svelte';
4
+ import Badge from '../../../common/badge/Badge.svelte';
5
+ import { deleteGridItem, findGridItem, findGridItemParentGrid } from '../appUtils';
6
+ import { pluralize } from '../../../../utils';
7
+ import Button from '../../../common/button/Button.svelte';
8
+ import { Trash } from 'lucide-svelte';
9
+ import Alert from '../../../common/alert/Alert.svelte';
10
+ const { app, initialized } = getContext('AppViewerContext');
11
+ $: unintitializedComponents = allItems($app.grid, $app.subgrids)
12
+ .map((x) => x.id)
13
+ .filter((x) => !$initialized.initializedComponents?.includes(x))
14
+ .sort();
15
+ $: subgridsErrors = Object.keys($app.subgrids ?? {})
16
+ .map((x) => {
17
+ const parentId = x.split('-')[0];
18
+ const parent = findGridItem($app, parentId);
19
+ const subgrid = x.replace(`${parentId}-`, '');
20
+ if (subgrid == '-1') {
21
+ return {
22
+ subGridId: x,
23
+ error: 'Invalid subgrid index -1 '
24
+ };
25
+ }
26
+ else if (parent === undefined) {
27
+ return {
28
+ subGridId: x,
29
+ error: 'Parent not found'
30
+ };
31
+ }
32
+ else if (parent?.data?.numberOfSubgrids === undefined) {
33
+ return {
34
+ subGridId: x,
35
+ error: 'Parent is not a container'
36
+ };
37
+ }
38
+ })
39
+ .filter(Boolean);
40
+ </script>
41
+
42
+ <div class="flex flex-col gap-8" style="all:none;">
43
+ {#if unintitializedComponents?.length === 0 && subgridsErrors?.length === 0}
44
+ <Alert type="success" title="No issues found">
45
+ The app has no subgrid errors or uninitialized components.
46
+ </Alert>
47
+ {:else}
48
+ <Alert type="error" title="Issues found">
49
+ The app has {unintitializedComponents.length} uninitialized components and {subgridsErrors.length}
50
+ subgrid errors.
51
+ <br />
52
+ Please contact Windmill support for assistance.
53
+ </Alert>
54
+ {/if}
55
+ {#if unintitializedComponents.length > 0}
56
+ <Section label="Uninitialized components">
57
+ <div class="max-w-xl">
58
+ <div class="text-sm mb-4">
59
+ There are {pluralize(unintitializedComponents.length, 'uninitialized component')} in the app.
60
+ </div>
61
+
62
+ <div class="grid grid-cols-4 border rounded-md overflow-hidden">
63
+ <!-- Header -->
64
+ <div class="font-semibold bg-gray-100 dark:bg-gray-900 px-2 py-1 text-xs border-b"
65
+ >Component Id</div
66
+ >
67
+ <div class="font-semibold bg-gray-100 dark:bg-gray-900 px-2 py-1 text-xs border-b"
68
+ >Type</div
69
+ >
70
+ <div class="font-semibold bg-gray-100 dark:bg-gray-900 px-2 py-1 text-xs border-b"
71
+ >Status</div
72
+ >
73
+ <div class="font-semibold bg-gray-100 dark:bg-gray-900 px-2 py-1 text-xs border-b"
74
+ >Action</div>
75
+
76
+ <!-- Iterate over uninitializedComponents to display each component in the grid -->
77
+ {#each unintitializedComponents as c}
78
+ {@const item = findGridItem($app, c)}
79
+ {#if !item}
80
+ <div>Item {c} not found</div>
81
+ {:else}
82
+ <!-- Component Id -->
83
+ <div class="text-xs flex items-center px-2 py-2">
84
+ <Badge>
85
+ {c}
86
+ </Badge>
87
+ </div>
88
+
89
+ <div class="text-xs flex items-center px-2 py-2">
90
+ <Badge color="blue">
91
+ {item?.data?.type || 'Unknown'}
92
+ </Badge>
93
+ </div>
94
+
95
+ <div class="text-xs flex items-center px-2 py-2">
96
+ <Badge color="red">Uninitialized</Badge>
97
+ </div>
98
+ <div class="text-xs flex items-center px-2 py-2">
99
+
100
+ <Button
101
+ color="light"
102
+ startIcon={{
103
+ icon: Trash
104
+ }}
105
+ size="xs2"
106
+ on:click={() => {
107
+ let parent = findGridItemParentGrid($app, c)
108
+ deleteGridItem($app, item.data, parent)
109
+ $app = $app
110
+ }}
111
+ >
112
+ Remove
113
+ </Button>
114
+ </div>
115
+ {/if}
116
+
117
+ {/each}
118
+ </div>
119
+ </div>
120
+ </Section>{/if}
121
+ {#if subgridsErrors.length > 0}
122
+ <Section label="Subgrids errors">
123
+ <div class="max-w-xl">
124
+ <div class="text-sm mb-4">
125
+ There are
126
+ {pluralize(subgridsErrors.length, 'subgrid')} with errors in the app.
127
+ </div>
128
+
129
+ <div class="grid grid-cols-3 border rounded-md overflow-hidden">
130
+ <!-- Header -->
131
+ <div class="font-semibold bg-gray-100 dark:bg-gray-900 px-2 py-1 text-xs border-b"
132
+ >Subgrid Id</div
133
+ >
134
+ <div class="font-semibold bg-gray-100 dark:bg-gray-900 px-2 py-1 text-xs border-b"
135
+ >Error</div
136
+ >
137
+ <div class="font-semibold bg-gray-100 dark:bg-gray-900 px-2 py-1 text-xs border-b"
138
+ >Action</div
139
+ >
140
+
141
+ <!-- Iterate over uninitializedComponents to display each component in the grid -->
142
+ {#each subgridsErrors as s}
143
+ <!-- Component Id -->
144
+ <div class="text-xs flex items-center px-2 py-2">
145
+ <Badge>
146
+ {s?.subGridId}
147
+ </Badge>
148
+ </div>
149
+
150
+ <div class="text-xs flex items-center px-2 py-2">
151
+ <Badge color="red">
152
+ {s?.error}
153
+ </Badge>
154
+ </div>
155
+
156
+ <div class="text-xs flex items-center px-2 py-2">
157
+ <Button
158
+ color="light"
159
+ startIcon={{
160
+ icon: Trash
161
+ }}
162
+ size="xs2"
163
+ on:click={() => {
164
+ if ($app.subgrids && s) {
165
+ delete $app.subgrids[s.subGridId]
166
+ $app = { ...$app }
167
+ }
168
+ }}
169
+ >
170
+ Remove
171
+ </Button>
172
+ </div>
173
+ {/each}
174
+ </div>
175
+ </div>
176
+ </Section>
177
+ {/if}
178
+ </div>
@@ -0,0 +1,14 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: Record<string, never>;
4
+ events: {
5
+ [evt: string]: CustomEvent<any>;
6
+ };
7
+ slots: {};
8
+ };
9
+ export type DebugPanelProps = typeof __propDef.props;
10
+ export type DebugPanelEvents = typeof __propDef.events;
11
+ export type DebugPanelSlots = typeof __propDef.slots;
12
+ export default class DebugPanel extends SvelteComponent<DebugPanelProps, DebugPanelEvents, DebugPanelSlots> {
13
+ }
14
+ export {};
@@ -21,8 +21,10 @@ export let cache_ttl;
21
21
  : 'bg-surface text-primay hover:bg-hover'}
22
22
  color="light"
23
23
  variant="border"
24
- size="xs">Cache</Button
24
+ size="xs2"
25
25
  >
26
+ Cache
27
+ </Button>
26
28
  </svelte:fragment>
27
29
  <div class="block text-primary">
28
30
  <Toggle
@@ -6,7 +6,7 @@ import { Script } from '../../../../gen';
6
6
  import { inferArgs } from '../../../../infer';
7
7
  import { initialCode } from '../../../../script_helpers';
8
8
  import { emptySchema } from '../../../../utils';
9
- import { getScriptByPath } from '../../../../scripts';
9
+ import { defaultScriptLanguages, getScriptByPath } from '../../../../scripts';
10
10
  import { Building, GitFork, Globe2 } from 'lucide-svelte';
11
11
  import { createEventDispatcher, getContext } from 'svelte';
12
12
  import { fly } from 'svelte/transition';
@@ -14,6 +14,8 @@ import { defaultCode } from '../component';
14
14
  import InlineScriptList from '../settingsPanel/mainInput/InlineScriptList.svelte';
15
15
  import WorkspaceScriptList from '../settingsPanel/mainInput/WorkspaceScriptList.svelte';
16
16
  import RunnableSelector from '../settingsPanel/mainInput/RunnableSelector.svelte';
17
+ import { defaultScripts } from '../../../../stores';
18
+ import DefaultScripts from '../../../DefaultScripts.svelte';
17
19
  export let name;
18
20
  export let componentType = undefined;
19
21
  export let showScriptPicker = false;
@@ -63,21 +65,10 @@ function pickInlineScript(name) {
63
65
  $app = $app;
64
66
  dispatch('new', unusedInlineScript.inlineScript);
65
67
  }
66
- const langs = [
67
- ['deno', 'TypeScript (Deno)'],
68
- ['python3', 'Python'],
69
- ['bun', 'TypeScript (Bun)'],
70
- ['go', 'Go'],
71
- ['bash', 'Bash'],
72
- ['powershell', 'PowerShell'],
73
- ['nativets', 'REST'],
74
- ['postgresql', 'PostgreSQL'],
75
- ['mysql', 'MySQL'],
76
- ['bigquery', 'BigQuery'],
77
- ['snowflake', 'Snowflake'],
78
- ['mssql', 'MS SQL Server'],
79
- ['graphql', 'GraphQL']
80
- ];
68
+ $: langs = ($defaultScripts?.order ?? Object.keys(defaultScriptLanguages))
69
+ .map((l) => [defaultScriptLanguages[l], l])
70
+ .filter((x) => x[1] != 'docker' &&
71
+ ($defaultScripts?.hidden == undefined || !$defaultScripts.hidden.includes(x[1])));
81
72
  </script>
82
73
 
83
74
  <Drawer bind:this={picker} size="1000px">
@@ -163,10 +154,10 @@ const langs = [
163
154
 
164
155
  <div class="flex flex-row w-full gap-8">
165
156
  <div id="app-editor-backend-runnables">
166
- <div class="mb-1 text-sm font-semibold">Backend</div>
157
+ <div class="mb-1 text-sm font-semibold flex gap-4">Backend <DefaultScripts /> </div>
167
158
 
168
159
  <div class="flex flex-row flex-wrap gap-2">
169
- {#each langs as [lang, label]}
160
+ {#each langs as [label, lang] (lang)}
170
161
  <FlowScriptPicker
171
162
  {label}
172
163
  {lang}
@@ -4,10 +4,9 @@ import { Maximize2, Trash2 } from 'lucide-svelte';
4
4
  import InlineScriptEditorDrawer from './InlineScriptEditorDrawer.svelte';
5
5
  import { inferArgs, parseOutputs } from '../../../../infer';
6
6
  import Editor from '../../../Editor.svelte';
7
- import { defaultIfEmptyString, emptySchema, getModifierKey, itemsExists } from '../../../../utils';
7
+ import { defaultIfEmptyString, emptySchema, itemsExists } from '../../../../utils';
8
8
  import { computeFields } from './utils';
9
9
  import { deepEqual } from 'fast-equals';
10
- import Kbd from '../../../common/kbd/Kbd.svelte';
11
10
  import SimpleEditor from '../../../SimpleEditor.svelte';
12
11
  import { buildExtraLib } from '../../utils';
13
12
  import RunButton from './RunButton.svelte';
@@ -172,45 +171,41 @@ async function inferSuggestions(code) {
172
171
 
173
172
  <Button
174
173
  title="Delete"
175
- size="xs"
174
+ size="xs2"
176
175
  color="red"
177
176
  variant="border"
178
- btnClasses="!px-2"
179
177
  aria-label="Delete"
180
178
  on:click={() => dispatch('delete')}
181
179
  endIcon={{ icon: Trash2 }}
180
+ iconOnly
182
181
  />
183
182
  {#if inlineScript.language != 'frontend'}
184
183
  <Button
185
- size="xs"
184
+ size="xs2"
186
185
  color="light"
187
186
  title="Full Editor"
188
- btnClasses="!px-2 !bg-surface-secondary hover:!bg-surface-hover"
187
+ variant="border"
189
188
  on:click={() => {
190
189
  inlineScriptEditorDrawer?.openDrawer()
191
190
  }}
192
191
  endIcon={{ icon: Maximize2 }}
192
+ iconOnly
193
193
  />
194
194
  {/if}
195
195
 
196
196
  <Button
197
197
  variant="border"
198
- size="xs"
198
+ size="xs2"
199
199
  color="light"
200
- btnClasses="!px-2 !py-1"
201
200
  on:click={async () => {
202
201
  editor?.format()
203
202
  simpleEditor?.format()
204
203
  }}
204
+ shortCut={{
205
+ key: 'S'
206
+ }}
205
207
  >
206
- <div class="flex flex-row gap-1 items-center">
207
- Format
208
-
209
- <div class="flex flex-row items-center">
210
- <Kbd small isModifier>{getModifierKey()}</Kbd>
211
- <Kbd small>S</Kbd>
212
- </div>
213
- </div>
208
+ Format
214
209
  </Button>
215
210
  <RunButton bind:runLoading {id} inlineScript={!transformer ? inlineScript : undefined} />
216
211
  </div>
@@ -40,9 +40,9 @@ const dispatch = createEventDispatcher();
40
40
  }}
41
41
  />
42
42
  {:else}
43
- <span class="px-2 text-tertiary">
43
+ <div class="px-2 pt-4 text-tertiary">
44
44
  Selected editor component is a transformer but component has no transformer
45
- </span>
45
+ </div>
46
46
  {/if}
47
47
  {:else if componentInput?.type == 'runnable'}
48
48
  {#if componentInput?.runnable?.type === 'runnableByName' && componentInput?.runnable?.name !== undefined}
@@ -37,9 +37,9 @@ const dispatch = createEventDispatcher();
37
37
  }}
38
38
  />
39
39
  {:else}
40
- <span class="px-2 text-tertiary">
40
+ <div class="px-2 pt-4 text-tertiary">
41
41
  Selected editor component is a transformer but component has no transformer
42
- </span>
42
+ </div>
43
43
  {/if}
44
44
  {:else if runnable?.type === 'runnableByName' && runnable.inlineScript}
45
45
  <InlineScriptEditor
@@ -1,7 +1,6 @@
1
1
  <script>import { getContext } from 'svelte';
2
- import { Button, Kbd } from '../../../common';
3
- import { getModifierKey } from '../../../../utils';
4
- import { Loader2 } from 'lucide-svelte';
2
+ import { Button } from '../../../common';
3
+ import { CornerDownLeft, Loader2 } from 'lucide-svelte';
5
4
  export let id;
6
5
  export let inlineScript = undefined;
7
6
  export let runLoading = false;
@@ -27,16 +26,9 @@ let cancelable = undefined;
27
26
  } catch {}
28
27
  runLoading = false
29
28
  }}
29
+ shortCut={{ Icon: CornerDownLeft, hide: hideShortcut }}
30
30
  >
31
- <div class="flex flex-row gap-1 items-center">
32
- Run
33
- {#if !hideShortcut}
34
- <div class="flex flex-row items-center">
35
- <Kbd small isModifier>{getModifierKey()}</Kbd>
36
- <Kbd small><span class="text-lg font-bold">⏎</span></Kbd>
37
- </div>
38
- {/if}
39
- </div>
31
+ Run
40
32
  </Button>
41
33
  {:else}
42
34
  <Button
@@ -1,8 +1,7 @@
1
1
  <script>import { Button } from '../../../common';
2
- import { GripVertical, Plus, X } from 'lucide-svelte';
2
+ import { GripVertical, Loader2, Plus, X } from 'lucide-svelte';
3
3
  import { createEventDispatcher } from 'svelte';
4
4
  import SubTypeEditor from './SubTypeEditor.svelte';
5
- import { flip } from 'svelte/animate';
6
5
  import { dndzone, SOURCES, TRIGGERS } from 'svelte-dnd-action';
7
6
  import { generateRandomString, pluralize } from '../../../../utils';
8
7
  import Toggle from '../../../Toggle.svelte';
@@ -220,6 +219,22 @@ function handleItemsChange() {
220
219
  componentInput.value = items.map((item) => item.value).filter((item) => item != undefined);
221
220
  }
222
221
  let raw = false;
222
+ // let mounted = false
223
+ // $: if (componentInput.value && mounted) {
224
+ // const newItems = (Array.isArray(componentInput.value) ? componentInput.value : [])
225
+ // .filter((x) => x != undefined)
226
+ // .map((item, index) => {
227
+ // return { value: item, id: generateRandomString() }
228
+ // })
229
+ // if (
230
+ // JSON.stringify(newItems.map((i) => i.value)) !== JSON.stringify(items.map((i) => i.value))
231
+ // ) {
232
+ // items = newItems
233
+ // }
234
+ // }
235
+ // onMount(() => {
236
+ // mounted = true
237
+ // })
223
238
  </script>
224
239
 
225
240
  <div class="flex gap-2 flex-col mt-2 w-full">
@@ -248,7 +263,7 @@ let raw = false;
248
263
  on:finalize={handleFinalize}
249
264
  >
250
265
  {#each items as item, index (item.id)}
251
- <div animate:flip={{ duration: flipDurationMs }} class="border-0 outline-none w-full">
266
+ <div class="border-0 outline-none w-full">
252
267
  <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
253
268
 
254
269
  <div class="flex flex-row gap-2 items-center relative my-1 w-full">
@@ -275,7 +290,7 @@ let raw = false;
275
290
  </div>
276
291
  {#if subFieldType !== 'db-explorer'}
277
292
  <button
278
- class="z-10 rounded-full p-1 duration-200 hover:bg-gray-200"
293
+ class="z-10 rounded-full p-1 duration-200 hover:bg-surface-hover"
279
294
  aria-label="Remove item"
280
295
  on:click|preventDefault|stopPropagation={() => deleteElementByType(index)}
281
296
  >
@@ -288,6 +303,14 @@ let raw = false;
288
303
  {/each}
289
304
  </section>
290
305
  {/if}
306
+ {#if subFieldType === 'db-explorer'}
307
+ {#if componentInput.loading}
308
+ <div class="flex flex-row gap-2 w-full items-center text-xs">
309
+ <Loader2 class="animate-spin" size={14} />
310
+ Loading columns defintions...
311
+ </div>
312
+ {/if}
313
+ {/if}
291
314
  {#if subFieldType !== 'db-explorer'}
292
315
  <Button size="xs" color="light" startIcon={{ icon: Plus }} on:click={() => addElementByType()}>
293
316
  Add
@@ -2,7 +2,9 @@ import { SvelteComponent } from "svelte";
2
2
  import type { InputType, StaticInput, StaticOptions } from '../../inputType';
3
3
  declare const __propDef: {
4
4
  props: {
5
- componentInput: StaticInput<any[]>;
5
+ componentInput: StaticInput<any[]> & {
6
+ loading?: boolean;
7
+ };
6
8
  subFieldType?: InputType | undefined;
7
9
  selectOptions?: StaticOptions['selectOptions'] | undefined;
8
10
  id: string | undefined;
@@ -5,7 +5,7 @@ import InputsSpecsEditor from './InputsSpecsEditor.svelte';
5
5
  import TableActions from './TableActions.svelte';
6
6
  import StaticInputEditor from './inputEditor/StaticInputEditor.svelte';
7
7
  import ConnectedInputEditor from './inputEditor/ConnectedInputEditor.svelte';
8
- import { classNames, getModifierKey, isMac } from '../../../../utils';
8
+ import { classNames, getModifierKey } from '../../../../utils';
9
9
  import { buildExtraLib } from '../../utils';
10
10
  import Recompute from './Recompute.svelte';
11
11
  import Tooltip from '../../../Tooltip.svelte';
@@ -20,9 +20,8 @@ import { deleteGridItem } from '../appUtils';
20
20
  import GridPane from './GridPane.svelte';
21
21
  import { slide } from 'svelte/transition';
22
22
  import { push } from '../../../../history';
23
- import Kbd from '../../../common/kbd/Kbd.svelte';
24
23
  import StylePanel from './StylePanel.svelte';
25
- import { ChevronLeft, Delete, ExternalLink } from 'lucide-svelte';
24
+ import { ChevronLeft, ExternalLink, ArrowBigUp } from 'lucide-svelte';
26
25
  import GridCondition from './GridCondition.svelte';
27
26
  import { isTriggerable } from './script/utils';
28
27
  import { inferDeps } from '../appUtilsInfer';
@@ -128,6 +127,9 @@ function transformToFrontend() {
128
127
  componentSettings.item.data.componentInput = appInput;
129
128
  }
130
129
  }
130
+ function isMac() {
131
+ return navigator.platform.toUpperCase().indexOf('MAC') >= 0;
132
+ }
131
133
  </script>
132
134
 
133
135
  <svelte:window on:keydown={keydown} />
@@ -236,7 +238,7 @@ function transformToFrontend() {
236
238
  id={component.id}
237
239
  bind:componentInput={componentSettings.item.data.componentInput}
238
240
  />
239
- <a class="text-2xs" on:click={transformToFrontend} href="#">
241
+ <a class="text-2xs" on:click={transformToFrontend} href={undefined}>
240
242
  transform to a frontend script
241
243
  </a>
242
244
  {:else if componentSettings.item.data.componentInput?.type === 'runnable' && component.componentInput !== undefined}
@@ -269,6 +271,9 @@ function transformToFrontend() {
269
271
  bind:inputSpecs={componentSettings.item.data.componentInput.fields}
270
272
  userInputEnabled={component.type === 'formcomponent' ||
271
273
  component.type === 'formbuttoncomponent'}
274
+ recomputeOnInputChanged={componentSettings.item.data.componentInput
275
+ .recomputeOnInputChanged}
276
+ showOnDemandOnlyToggle
272
277
  />
273
278
  </div>
274
279
  {/if}
@@ -345,6 +350,24 @@ function transformToFrontend() {
345
350
  ownId={component.id}
346
351
  />
347
352
  {/if}
353
+ {#if componentSettings.item.data.type === 'checkboxcomponent'}
354
+ <Recompute
355
+ title="Recompute on toggle"
356
+ tooltip={'Contrary to onSuccess, this will only trigger recompute when a human toggle the change, not if it set by a default value or by setValue'}
357
+ documentationLink={undefined}
358
+ bind:recomputeIds={componentSettings.item.data.onToggle}
359
+ ownId={component.id}
360
+ />
361
+ {/if}
362
+ {#if componentSettings.item.data.type === 'resourceselectcomponent' || componentSettings.item.data.type === 'selectcomponent'}
363
+ <Recompute
364
+ title="Recompute on select"
365
+ tooltip={'Contrary to onSuccess, this will only trigger recompute when a human select an item, not if it set by a default value or by setValue'}
366
+ documentationLink={undefined}
367
+ bind:recomputeIds={componentSettings.item.data.onSelect}
368
+ ownId={component.id}
369
+ />
370
+ {/if}
348
371
 
349
372
  <div class="grow shrink" />
350
373
 
@@ -385,39 +408,56 @@ function transformToFrontend() {
385
408
  {#if duplicateMoveAllowed}
386
409
  <PanelSection title="Copy/Move">
387
410
  <div slot="action">
388
- <Button size="xs" color="red" variant="border" on:click={removeGridElement}>
389
- Delete&nbsp;&nbsp;
390
- {#if isMac()}
391
- <Kbd kbdClass="center-center">
392
- <span class="text-lg leading-none">⌘</span>
393
- <span class="px-0.5">+</span>
394
- <Delete size={16} />
395
- </Kbd>
396
- {:else}
397
- <Kbd>Del</Kbd>
398
- {/if}
411
+ <Button
412
+ size="xs"
413
+ color="red"
414
+ variant="border"
415
+ on:click={removeGridElement}
416
+ shortCut={{
417
+ key: isMac() ? getModifierKey() + 'Del' : 'Del',
418
+ withoutModifier: true
419
+ }}
420
+ >
421
+ Delete
399
422
  </Button>
400
423
  </div>
401
- <div class="flex flex-col gap-1">
424
+
425
+ <div class="grid grid-cols-2 gap-1 text-tertiary">
402
426
  <div>
403
- <span class="text-secondary text-xs mr-2"> Copy:</span>
404
- <Kbd>{getModifierKey()}</Kbd>+<Kbd>C</Kbd>,
405
- <Kbd>{getModifierKey()}</Kbd>+<Kbd>V</Kbd>
427
+ <span class="text-secondary text-xs">Copy:</span>
428
+ </div>
429
+ <div class="flex items-center gap-1">
430
+ <div class="text-xs border py-1 px-1.5 rounded-md">{getModifierKey() + 'C'}</div>
431
+ <span class="text-xs">&rightarrow;</span>
432
+ <span class="text-xs border py-1 px-1.5 rounded-md">{getModifierKey() + 'V'}</span>
406
433
  </div>
434
+
407
435
  <div>
408
- <span class="text-secondary text-xs mr-2">Move: </span>
409
- <Kbd>{getModifierKey()}</Kbd>+<Kbd>X</Kbd>,
410
- <Kbd>{getModifierKey()}</Kbd>+<Kbd>V</Kbd>
436
+ <span class="text-secondary text-xs">Move: </span>
411
437
  </div>
438
+ <div class="flex items-center gap-1">
439
+ <div class="text-xs border py-1 px-1.5 rounded-md">{getModifierKey() + 'X'}</div>
440
+ <span class="text-xs">&rightarrow;</span>
441
+ <span class="text-xs border py-1 px-1.5 rounded-md">{getModifierKey() + 'V'}</span>
442
+ </div>
443
+
412
444
  <div>
413
- <span class="text-secondary text-xs mr-2">Navigate:</span>
414
- <Kbd>&leftarrow;</Kbd>
415
- <Kbd>&uparrow;</Kbd><Kbd>&rightarrow;</Kbd>
416
- <Kbd>ESC</Kbd>
445
+ <span class="text-secondary text-xs">Navigate:</span>
446
+ </div>
447
+ <div class="flex items-center gap-1">
448
+ <span class="text-xs border py-1 px-1.5 rounded-md">&leftarrow;</span>
449
+ <span class="text-xs border py-1 px-1.5 rounded-md">&uparrow;</span>
450
+ <span class="text-xs border py-1 px-1.5 rounded-md">&rightarrow;</span>
451
+ <span class="text-xs border py-1 px-1.5 rounded-md">ESC</span>
417
452
  </div>
453
+
418
454
  <div>
419
- <span class="text-secondary text-xs mr-2">Add to selection:</span>
420
- <Kbd>&DoubleUpArrow;</Kbd>+<Kbd>click</Kbd>
455
+ <span class="text-secondary text-xs whitespace-nowrap">Add to selection:</span>
456
+ </div>
457
+ <div class="flex items-center gap-1">
458
+ <span class="text-xs border py-1 px-1.5 rounded-md">
459
+ <ArrowBigUp size="14" />
460
+ </span>+<span class="text-xs border py-1 px-1.5 rounded-md">Click</span>
421
461
  </div>
422
462
  </div>
423
463
  </PanelSection>
@@ -57,7 +57,7 @@ setContext('DecisionTreeEditor', { selectedNodeId });
57
57
  nodes = removeNode(nodes, selectedNode)
58
58
  renderCount++
59
59
  }}
60
- disabled={selectedNode?.next?.length > 1}
60
+ disabled={selectedNode?.next?.length > 1 || nodes.length == 1}
61
61
  >
62
62
  Delete node
63
63
  </Button>