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
@@ -9,8 +9,8 @@ import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte
9
9
  import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
10
10
  import FlowIcon from './home/FlowIcon.svelte';
11
11
  import { Alert, Button } from './common';
12
+ import { goto } from '$app/navigation';
12
13
  import YAML from 'yaml';
13
- import { createEventDispatcher } from 'svelte';
14
14
  let search = '';
15
15
  export async function open(nsearch) {
16
16
  isOpen = true;
@@ -71,7 +71,6 @@ $: counts =
71
71
  flows: getCounts(filteredFlowItems.length),
72
72
  scripts: getCounts(filteredScriptItems.length)
73
73
  };
74
- const dispatch = createEventDispatcher();
75
74
  </script>
76
75
 
77
76
  <SearchItems
@@ -262,7 +261,7 @@ const dispatch = createEventDispatcher();
262
261
  <div class="flex gap-2">
263
262
  <Button
264
263
  on:click|once={() => {
265
- dispatch('editScript', item.path)
264
+ goto(`/scripts/edit/${item.path}?no_draft=true`)
266
265
  }}
267
266
  color="light"
268
267
  size="sm"
@@ -302,7 +301,7 @@ const dispatch = createEventDispatcher();
302
301
  <div class="flex gap-2">
303
302
  <Button
304
303
  on:click|once={() => {
305
- dispatch('editFlow', item.path)
304
+ goto(`/flows/edit/${item.path}?no_draft=true`)
306
305
  }}
307
306
  color="light"
308
307
  size="sm"
@@ -8,9 +8,6 @@ declare const __propDef: {
8
8
  loadFlows?: (() => Promise<void>) | undefined;
9
9
  };
10
10
  events: {
11
- editScript: CustomEvent<any>;
12
- editFlow: CustomEvent<any>;
13
- } & {
14
11
  [evt: string]: CustomEvent<any>;
15
12
  };
16
13
  slots: {};
@@ -1,21 +1,85 @@
1
- <script>export let value = undefined;
1
+ <script>import { createEventDispatcher } from 'svelte';
2
+ import { Button } from './common';
3
+ export let value = undefined;
2
4
  export let autofocus = false;
3
- let dateFromValue = value ? new Date(value) : undefined;
4
- let date = isValidDate(dateFromValue) ? dateFromValue.toISOString().split('T')[0] : undefined;
5
- let time = isValidDate(dateFromValue) ? dateFromValue.toISOString().split('T')[1] : '00:00';
6
- $: {
7
- if (date && time) {
5
+ export let useDropdown = false;
6
+ export let minDate = undefined;
7
+ export let maxDate = undefined;
8
+ let date = undefined;
9
+ let time = undefined;
10
+ function parseValue(value = undefined) {
11
+ let dateFromValue = value ? new Date(value) : undefined;
12
+ date = isValidDate(dateFromValue) ? dateFromValue.toISOString().split('T')[0] : undefined;
13
+ time = isValidDate(dateFromValue)
14
+ ? `${dateFromValue.getHours().toString().padStart(2, '0')}:${dateFromValue
15
+ .getMinutes()
16
+ .toString()
17
+ .padStart(2, '0')}`
18
+ : '12:00';
19
+ }
20
+ $: parseValue(value);
21
+ let initialDate = date;
22
+ let initialTime = time;
23
+ function parseDateAndTime(date, time) {
24
+ if (date && time && (initialDate != date || initialTime != time)) {
8
25
  let newDate = new Date(`${date}T${time}`);
9
26
  value = newDate.toISOString();
27
+ dispatch('change', value);
10
28
  }
11
29
  }
30
+ $: parseDateAndTime(date, time);
12
31
  function isValidDate(d) {
13
32
  return d instanceof Date && !isNaN(d);
14
33
  }
34
+ const dispatch = createEventDispatcher();
35
+ function setTimeLater(mins) {
36
+ let newDate = new Date();
37
+ newDate.setMinutes(newDate.getMinutes() + mins);
38
+ value = newDate.toISOString();
39
+ dispatch('change', value);
40
+ }
41
+ let randomId = 'datetarget-' + Math.random().toString(36).substring(7);
15
42
  </script>
16
43
 
17
- <div class="flex flex-row gap-1 items-center w-full">
44
+ <div class="flex flex-row gap-1 items-center w-full" id={randomId} on:pointerdown on:focus>
18
45
  <!-- svelte-ignore a11y-autofocus -->
19
- <input type="date" bind:value={date} {autofocus} class="!w-3/4" />
20
- <input type="time" bind:value={time} class="!w-1/4" />
46
+ <input type="date" bind:value={date} {autofocus} class="!w-3/4" min={minDate} max={maxDate} />
47
+ <input type="time" bind:value={time} class="!w-1/4 min-w-[100px]" />
48
+ <Button
49
+ variant="border"
50
+ color="light"
51
+ size="xs"
52
+ portalTarget={`#${randomId}`}
53
+ dropdownItems={useDropdown
54
+ ? [
55
+ {
56
+ label: 'In 15 minutes',
57
+ onClick: () => {
58
+ setTimeLater(15)
59
+ }
60
+ },
61
+ {
62
+ label: 'In 1 hour',
63
+ onClick: () => {
64
+ setTimeLater(60)
65
+ }
66
+ },
67
+ {
68
+ label: 'Tomorrow',
69
+ onClick: () => {
70
+ setTimeLater(60 * 24)
71
+ }
72
+ },
73
+ {
74
+ label: 'In 1 week',
75
+ onClick: () => {
76
+ setTimeLater(7 * 60 * 24)
77
+ }
78
+ }
79
+ ]
80
+ : undefined}
81
+ on:click={() => {
82
+ setTimeLater(0)
83
+ }}>Now</Button
84
+ >
21
85
  </div>
@@ -2,9 +2,16 @@ import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  value?: string | undefined;
5
- autofocus?: boolean | undefined;
5
+ autofocus?: boolean | null | undefined;
6
+ useDropdown?: boolean | undefined;
7
+ minDate?: string | undefined;
8
+ maxDate?: string | undefined;
6
9
  };
7
10
  events: {
11
+ pointerdown: PointerEvent;
12
+ focus: FocusEvent;
13
+ change: CustomEvent<any>;
14
+ } & {
8
15
  [evt: string]: CustomEvent<any>;
9
16
  };
10
17
  slots: {};
@@ -0,0 +1,26 @@
1
+ <script>import { userStore } from '../stores';
2
+ import { SettingsIcon } from 'lucide-svelte';
3
+ import { Button } from './common';
4
+ import Drawer from './common/drawer/Drawer.svelte';
5
+ import DrawerContent from './common/drawer/DrawerContent.svelte';
6
+ import DefaultScriptsInner from './DefaultScriptsInner.svelte';
7
+ import Portal from 'svelte-portal';
8
+ let drawer;
9
+ </script>
10
+
11
+ {#if $userStore?.is_admin || $userStore?.is_super_admin}
12
+ <Portal>
13
+ <Drawer bind:this={drawer} placement="left">
14
+ <DrawerContent title="Edit Default Scripts" on:close={drawer.closeDrawer}>
15
+ <DefaultScriptsInner />
16
+ </DrawerContent>
17
+ </Drawer>
18
+ </Portal>
19
+ <Button
20
+ on:click={drawer?.openDrawer}
21
+ startIcon={{ icon: SettingsIcon }}
22
+ color="light"
23
+ size="xs2"
24
+ variant="contained">defaults</Button
25
+ >
26
+ {/if}
@@ -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 DefaultScriptsProps = typeof __propDef.props;
10
+ export type DefaultScriptsEvents = typeof __propDef.events;
11
+ export type DefaultScriptsSlots = typeof __propDef.slots;
12
+ export default class DefaultScripts extends SvelteComponent<DefaultScriptsProps, DefaultScriptsEvents, DefaultScriptsSlots> {
13
+ }
14
+ export {};
@@ -0,0 +1,75 @@
1
+ <script>import { WorkspaceService } from '../gen';
2
+ import { defaultScripts, workspaceStore } from '../stores';
3
+ import { flip } from 'svelte/animate';
4
+ import Toggle from './Toggle.svelte';
5
+ import { defaultScriptLanguages } from '../scripts';
6
+ import Alert from './common/alert/Alert.svelte';
7
+ $: langs = computeLangs($defaultScripts);
8
+ function computeLangs(defaultScripts) {
9
+ const allLangs = Object.keys(defaultScriptLanguages);
10
+ if (!defaultScripts || defaultScripts.order == undefined)
11
+ return allLangs;
12
+ return defaultScripts.order?.concat(allLangs.filter((l) => !defaultScripts.order?.includes(l)));
13
+ }
14
+ async function changePosition(i, up) {
15
+ let norder = langs;
16
+ if (up) {
17
+ ;
18
+ [norder[i], norder[i - 1]] = [norder[i - 1], norder[i]];
19
+ }
20
+ else {
21
+ ;
22
+ [norder[i], norder[i + 1]] = [norder[i + 1], norder[i]];
23
+ }
24
+ defaultScripts.update((s) => ({ ...s, order: norder }));
25
+ await WorkspaceService.editDefaultScripts({
26
+ workspace: $workspaceStore,
27
+ requestBody: $defaultScripts
28
+ });
29
+ }
30
+ </script>
31
+
32
+ <Alert title="Global to workspace" type="info" class="mb-4">
33
+ This setting is only available to admins and will affect all users in the workspace.
34
+ </Alert>
35
+ <div class="h-full w-full flex-col gap-2 flex">
36
+ {#each langs as lang, i (lang)}
37
+ <div
38
+ animate:flip={{ duration: 300 }}
39
+ class="w-full p-2 rounded border border-seconadry grid grid-cols-3"
40
+ ><h3>{lang}</h3>
41
+ <div>
42
+ {#if i > 0}
43
+ <button on:click={() => changePosition(i ?? 0, true)} class="text-lg mr-2">
44
+ &uparrow;</button
45
+ >
46
+ {/if}
47
+ {#if i < langs.length - 1}
48
+ <button on:click={() => changePosition(i ?? 0, false)} class="text-lg mr-2"
49
+ >&downarrow;</button
50
+ >
51
+ {/if}</div
52
+ >
53
+ <!-- <Toggle options={{ right: 'custom default' }} size="xs" /> -->
54
+ <div class="flex justify-end">
55
+ <Toggle
56
+ options={{ right: 'hide' }}
57
+ size="xs"
58
+ color="red"
59
+ checked={$defaultScripts?.hidden?.includes(lang)}
60
+ on:change={(e) => {
61
+ let toggled = e.detail
62
+ if (toggled) {
63
+ defaultScripts.update((s) => ({ ...(s ?? {}), hidden: [...(s?.hidden ?? []), lang] }))
64
+ } else {
65
+ defaultScripts.update((s) => ({
66
+ ...(s ?? {}),
67
+ hidden: (s?.hidden ?? []).filter((h) => h != lang)
68
+ }))
69
+ }
70
+ }}
71
+ />
72
+ </div>
73
+ </div>
74
+ {/each}
75
+ </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 DefaultScriptsInnerProps = typeof __propDef.props;
10
+ export type DefaultScriptsInnerEvents = typeof __propDef.events;
11
+ export type DefaultScriptsInnerSlots = typeof __propDef.slots;
12
+ export default class DefaultScriptsInner extends SvelteComponent<DefaultScriptsInnerProps, DefaultScriptsInnerEvents, DefaultScriptsInnerSlots> {
13
+ }
14
+ export {};
@@ -1,12 +1,12 @@
1
1
  <script>import SchemaForm from './SchemaForm.svelte';
2
2
  import TestJobLoader from './TestJobLoader.svelte';
3
- import { Button, Kbd } from './common';
3
+ import { Button, Drawer } from './common';
4
4
  import { WindmillIcon } from './icons';
5
5
  import LogPanel from './scriptEditor/LogPanel.svelte';
6
- import { CompletedJob, Job, JobService, OpenAPI, Preview, SettingsService } from '../gen';
6
+ import { CompletedJob, Job, JobService, OpenAPI, Preview, WorkspaceService, RawScript } from '../gen';
7
7
  import { inferArgs } from '../infer';
8
- import { enterpriseLicense, userStore, workspaceStore } from '../stores';
9
- import { emptySchema, getModifierKey, sendUserToast } from '../utils';
8
+ import { copilotInfo, userStore, workspaceStore } from '../stores';
9
+ import { emptySchema, sendUserToast } from '../utils';
10
10
  import { Pane, Splitpanes } from 'svelte-splitpanes';
11
11
  import { onDestroy, onMount, setContext } from 'svelte';
12
12
  import DarkModeToggle from './sidebar/DarkModeToggle.svelte';
@@ -20,8 +20,11 @@ import { writable } from 'svelte/store';
20
20
  import { initHistory } from '../history';
21
21
  import { dfs } from './flows/dfs';
22
22
  import { loadSchemaFromModule } from './flows/flowInfers';
23
- import { Play } from 'lucide-svelte';
23
+ import { CornerDownLeft, Play } from 'lucide-svelte';
24
24
  import Toggle from './Toggle.svelte';
25
+ import { setLicense } from '../enterpriseUtils';
26
+ import { workspacedOpenai } from './copilot/lib';
27
+ import { pickScript } from './flows/flowStateUtils';
25
28
  $: token = $page.url.searchParams.get('wm_token') ?? undefined;
26
29
  $: workspace = $page.url.searchParams.get('workspace') ?? undefined;
27
30
  $: themeDarkRaw = $page.url.searchParams.get('activeColorTheme');
@@ -30,8 +33,51 @@ $: if (token) {
30
33
  OpenAPI.WITH_CREDENTIALS = true;
31
34
  OpenAPI.TOKEN = $page.url.searchParams.get('wm_token');
32
35
  }
36
+ let flowCopilotContext = {
37
+ drawerStore: writable(undefined),
38
+ modulesStore: writable([]),
39
+ currentStepStore: writable(undefined),
40
+ genFlow,
41
+ shouldUpdatePropertyType: writable({}),
42
+ exprsToSet: writable({}),
43
+ generatedExprs: writable({}),
44
+ stepInputsLoading: writable(false)
45
+ };
46
+ const { modulesStore } = flowCopilotContext;
47
+ async function genFlow(idx, flowModules, stepOnly = false) {
48
+ let module = stepOnly ? $modulesStore[0] : $modulesStore[idx];
49
+ if (module && module.selectedCompletion) {
50
+ const [hubScriptModule, hubScriptState] = await pickScript(module.selectedCompletion.path, `${module.selectedCompletion.summary} (${module.selectedCompletion.app})`, module.id, undefined);
51
+ const flowModule = {
52
+ id: module.id,
53
+ value: hubScriptModule.value,
54
+ summary: hubScriptModule.summary
55
+ };
56
+ $flowStateStore[module.id] = hubScriptState;
57
+ flowModules.splice(idx, 0, flowModule);
58
+ $flowStore = $flowStore;
59
+ sendUserToast('Added module', false);
60
+ }
61
+ }
62
+ setContext('FlowCopilotContext', flowCopilotContext);
63
+ async function setCopilotInfo() {
64
+ if (workspace) {
65
+ workspacedOpenai.init(workspace, token);
66
+ try {
67
+ copilotInfo.set(await WorkspaceService.getCopilotInfo({ workspace }));
68
+ }
69
+ catch (err) {
70
+ copilotInfo.set({
71
+ exists_openai_resource_path: false,
72
+ code_completion_enabled: false
73
+ });
74
+ console.error('Could not get copilot info');
75
+ }
76
+ }
77
+ }
33
78
  $: if (workspace) {
34
79
  $workspaceStore = workspace;
80
+ setCopilotInfo();
35
81
  }
36
82
  $: if (workspace && token) {
37
83
  loadUser();
@@ -95,13 +141,8 @@ const el = (event) => {
95
141
  sendUserToast(event.data.error.message, true);
96
142
  }
97
143
  };
98
- async function setEnterpriseLicense() {
99
- if (!$enterpriseLicense) {
100
- $enterpriseLicense = await SettingsService.getLicenseId();
101
- }
102
- }
144
+ setLicense();
103
145
  onMount(() => {
104
- setEnterpriseLicense();
105
146
  window.addEventListener('message', el, false);
106
147
  document.addEventListener('keydown', (e) => {
107
148
  const obj = {
@@ -234,7 +275,8 @@ const scheduleStore = writable({
234
275
  args: {},
235
276
  cron: '',
236
277
  timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
237
- enabled: false
278
+ enabled: false,
279
+ summary: undefined
238
280
  });
239
281
  const previewArgsStore = writable({});
240
282
  const scriptEditorDrawer = writable(undefined);
@@ -256,9 +298,9 @@ setContext('FlowEditorContext', {
256
298
  saveDraft: () => { },
257
299
  initialPath: ''
258
300
  });
259
- $: updateCode($flowStore);
301
+ $: updateFlow($flowStore);
260
302
  let lastSent = undefined;
261
- function updateCode(flow) {
303
+ function updateFlow(flow) {
262
304
  if (lockChanges) {
263
305
  return;
264
306
  }
@@ -362,12 +404,12 @@ async function inferModuleArgs(selectedIdStore) {
362
404
  icon: Play,
363
405
  classes: 'animate-none'
364
406
  }}
407
+ shortCut={{ Icon: CornerDownLeft, hide: testIsLoading }}
365
408
  >
366
409
  {#if testIsLoading}
367
410
  Running
368
411
  {:else}
369
- Test&nbsp;<Kbd small isModifier>{getModifierKey()}</Kbd>
370
- <Kbd small><span class="text-lg font-bold">⏎</span></Kbd>
412
+ Test
371
413
  {/if}
372
414
  </Button>
373
415
  {/if}
@@ -422,7 +464,7 @@ async function inferModuleArgs(selectedIdStore) {
422
464
  </Pane>
423
465
  <Pane size={33}>
424
466
  {#key reload}
425
- <FlowEditorPanel noEditor />
467
+ <FlowEditorPanel enableAi noEditor />
426
468
  {/key}
427
469
  </Pane>
428
470
  </Splitpanes>
@@ -3,7 +3,7 @@ import { json } from 'svelte-highlight/languages';
3
3
  import TableCustom from './TableCustom.svelte';
4
4
  import { copyToClipboard, roughSizeOfObject, truncate } from '../utils';
5
5
  import { Button, Drawer, DrawerContent } from './common';
6
- import { ClipboardCopy, Download, Expand, PanelRightOpen, Table2 } from 'lucide-svelte';
6
+ import { ClipboardCopy, Download, Expand, PanelRightOpen, Table2, Braces, Highlighter } from 'lucide-svelte';
7
7
  import Portal from 'svelte-portal';
8
8
  import ObjectViewer from './propertyPicker/ObjectViewer.svelte';
9
9
  import S3FilePicker from './S3FilePicker.svelte';
@@ -13,7 +13,8 @@ import Markdown from 'svelte-exmarkdown';
13
13
  import Toggle from './Toggle.svelte';
14
14
  import FileDownload from './common/fileDownload/FileDownload.svelte';
15
15
  import ParqetTableRenderer from './ParqetTableRenderer.svelte';
16
- import { twMerge } from 'tailwind-merge';
16
+ import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
17
+ import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
17
18
  export let result;
18
19
  export let requireHtmlApproval = false;
19
20
  export let filename = undefined;
@@ -152,7 +153,7 @@ function isArrayWithObjects(json) {
152
153
  json.every((item) => item && typeof item === 'object' && Object.keys(item).length > 0));
153
154
  }
154
155
  $: isTableDisplay = isArrayWithObjects(result);
155
- let richRender = true;
156
+ let richRender = !forceJson;
156
157
  function transform(input) {
157
158
  const maxLength = Math.max(...Object.values(input).map((arr) => arr.length));
158
159
  const result = [];
@@ -194,45 +195,52 @@ let globalForceJson = false;
194
195
  {:else}
195
196
  <div class="inline-highlight relative grow min-h-[200px]">
196
197
  {#if result != undefined && length != undefined && largeObject != undefined}
197
- {#if resultKind && !['json', 's3object', 's3object-list'].includes(resultKind) && !hideAsJson}
198
- <div class="top-1 absolute flex flex-row w-full justify-between items-center"
199
- ><div class="mb-2 text-tertiary text-sm">
200
- as JSON&nbsp;<input class="windmillapp" type="checkbox" bind:checked={forceJson} /></div
201
- ><slot name="copilot-fix" />
202
- </div><div
203
- class="py-3"
204
- />{/if}{#if result && typeof result == 'object' && Object.keys(result).length > 0}<div
205
- class="top-1 mb-2 w-full min-w-[400px] text-sm absolute"
206
- >{#if !disableExpand}
207
- <div class="text-tertiary text-xs absolute top-5.5 right-0 inline-flex gap-2 z-10">
208
- <button on:click={() => copyToClipboard(toJsonStr(result))}
209
- ><ClipboardCopy size={16} /></button
210
- >
211
- <button on:click={jsonViewer.openDrawer}><Expand size={16} /></button>
198
+ <div class="flex justify-between items-center w-full pb-1">
199
+ <div class="text-tertiary text-sm flex items-center">
200
+ {#if (resultKind && !['json', 's3object', 's3object-list', 'table-col', 'table-row'].includes(resultKind) && !hideAsJson) || isTableDisplay}
201
+ <ToggleButtonGroup
202
+ class="h-6"
203
+ selected={isTableDisplay
204
+ ? richRender
205
+ ? 'table'
206
+ : 'json'
207
+ : forceJson
208
+ ? 'json'
209
+ : 'pretty'}
210
+ on:selected={(ev) => {
211
+ if (isTableDisplay) {
212
+ richRender = ev.detail === 'table'
213
+ }
214
+ forceJson = ev.detail === 'json'
215
+ }}
216
+ >
217
+ {#if resultKind && !['json', 's3object', 's3object-list', 'table-col', 'table-row'].includes(resultKind) && !hideAsJson}
218
+ <ToggleButton class="px-1.5" value="pretty" label="Pretty" icon={Highlighter} />
219
+ {/if}
212
220
  {#if isTableDisplay}
213
- <button
214
- aria-label="Render as table"
215
- on:click={() => {
216
- richRender = !richRender
217
- }}
218
- class={twMerge(
219
- 'flex flex-row gap-1 items-center',
220
- richRender ? 'text-blue-500' : ''
221
- )}
222
- >
223
- <Table2 size={16} class={richRender ? 'text-blue-500' : ''} />
224
-
225
- Table view {richRender ? 'enabled' : 'disabled'}
226
- </button>
221
+ <ToggleButton class="px-1.5" value="table" label="Table" icon={Table2} />
227
222
  {/if}
228
- </div>
229
- {/if}</div
230
- >{/if}{#if !forceJson && resultKind == 'table-col'}
223
+ <ToggleButton class="px-1.5" value="json" label="JSON" icon={Braces} />
224
+ </ToggleButtonGroup>
225
+ {/if}
226
+ </div>
227
+ <div class="text-tertiary text-xs flex gap-2 z-10 items-center">
228
+ <slot name="copilot-fix" />
229
+ {#if !disableExpand}
230
+ <button on:click={() => copyToClipboard(toJsonStr(result))}
231
+ ><ClipboardCopy size={16} /></button
232
+ >
233
+ <button on:click={jsonViewer.openDrawer}><Expand size={16} /></button>
234
+ {/if}
235
+ </div>
236
+ </div>
237
+
238
+ {#if !forceJson && resultKind == 'table-col'}
231
239
  {@const data = 'table-col' in result ? result['table-col'] : result}
232
240
  <AutoDataTable objects={transform(data)} />
233
241
  {:else if !forceJson && resultKind == 'table-row'}
234
242
  {@const data = 'table-row' in result ? result['table-row'] : result}
235
- <div class="grid grid-flow-col-dense border border-gray-200">
243
+ <div class="grid grid-flow-col-dense border border-gray-200 dark:border-gray-600">
236
244
  <TableCustom>
237
245
  <tbody slot="body">
238
246
  {#each Array.isArray(asListOfList(data)) ? asListOfList(data) : [] as row}
@@ -346,8 +354,7 @@ let globalForceJson = false;
346
354
  </div>
347
355
  {:else if !forceJson && resultKind == 's3object'}
348
356
  <div
349
- class="absolute top-1 h-full w-full {typeof result?.s3 == 'string' &&
350
- result?.s3?.endsWith('.parquet')
357
+ class="h-full w-full {typeof result?.s3 == 'string' && result?.s3?.endsWith('.parquet')
351
358
  ? 'h-min-[600px]'
352
359
  : ''}"
353
360
  >
@@ -387,7 +394,7 @@ let globalForceJson = false;
387
394
  {/if}
388
395
  </div>
389
396
  {:else if !forceJson && resultKind == 's3object-list'}
390
- <div class="absolute top-1 h-full w-full">
397
+ <div class="h-full w-full">
391
398
  <div class="flex flex-col gap-2">
392
399
  <Toggle
393
400
  class="flex"
@@ -448,7 +455,7 @@ let globalForceJson = false;
448
455
  <Alert size="xs" title="Large file detected" type="warning">
449
456
  We recommend using persistent storage for large data files.
450
457
  <a
451
- href="https://www.windmill.dev/docs/core_concepts/persistent_storage#large-data-files-s3-r2-minio"
458
+ href="https://www.windmill.dev/docs/core_concepts/persistent_storage#large-data-files-s3-r2-minio-azure-blob"
452
459
  target="_blank"
453
460
  rel="noreferrer"
454
461
  class="hover:underline"
@@ -471,7 +478,7 @@ let globalForceJson = false;
471
478
  </div>
472
479
  {:else}
473
480
  <Highlight
474
- class={forceJson ? '' : 'absolute top-1 h-full w-full'}
481
+ class={forceJson ? '' : 'h-full w-full'}
475
482
  language={json}
476
483
  code={toJsonStr(result).replace(/\\n/g, '\n')}
477
484
  />
@@ -486,39 +493,38 @@ let globalForceJson = false;
486
493
  <Drawer bind:this={jsonViewer} size="900px">
487
494
  <DrawerContent title="Expanded Result" on:close={jsonViewer.closeDrawer}>
488
495
  <svelte:fragment slot="actions">
489
- <a
490
- class="text-sm text-secondary mr-2 inline-flex gap-2 items-center py-2 px-2 hover:bg-gray-100 rounded-lg"
496
+ <Button
491
497
  download="{filename ?? 'result'}.json"
492
498
  href={workspaceId && jobId
493
499
  ? `/api/w/${workspaceId}/jobs_u/completed/get_result/${jobId}`
494
500
  : `data:text/json;charset=utf-8,${encodeURIComponent(toJsonStr(result))}`}
495
- >Download <Download size={14} /></a
501
+ startIcon={{ icon: Download }}
502
+ color="light"
503
+ size="xs"
504
+ >
505
+ Download
506
+ </Button>
507
+ <Button
508
+ on:click={() => copyToClipboard(toJsonStr(result))}
509
+ color="light"
510
+ size="xs"
511
+ startIcon={{
512
+ icon: ClipboardCopy
513
+ }}
496
514
  >
497
- <Button on:click={() => copyToClipboard(toJsonStr(result))} color="light" size="xs">
498
- <div class="flex gap-2 items-center">Copy to clipboard <ClipboardCopy /> </div>
515
+ Copy to clipboard
499
516
  </Button>
500
517
  </svelte:fragment>
501
- {#if largeObject}
502
- <div class="text-sm mb-2 text-tertiary">
503
- <a
504
- class="text-sm text-secondary mr-2 inline-flex gap-2 items-center py-2 px-2 hover:bg-gray-100 rounded-lg"
505
- download="{filename ?? 'result'}.json"
506
- href={workspaceId && jobId
507
- ? `/api/w/${workspaceId}/jobs_u/completed/get_result/${jobId}`
508
- : `data:text/json;charset=utf-8,${encodeURIComponent(result)}`}
509
- >Download <Download size={14} /></a
510
- > JSON is too large to be displayed in full.
511
- </div>
512
- {:else if typeof result == 'string' && result.length > 0}
513
- <pre class="text-sm">{result}</pre>
514
- <div class="flex">
515
- <Button on:click={() => copyToClipboard(result)} color="light" size="xs">
516
- <div class="flex gap-2 items-center">Copy <ClipboardCopy size={12} /> </div>
517
- </Button>
518
- </div>
519
- {:else}
520
- <Highlight language={json} code={toJsonStr(result).replace(/\\n/g, '\n')} />
521
- {/if}
518
+ <svelte:self
519
+ {result}
520
+ {requireHtmlApproval}
521
+ {filename}
522
+ {jobId}
523
+ {workspaceId}
524
+ {hideAsJson}
525
+ {forceJson}
526
+ disableExpand={true}
527
+ />
522
528
  </DrawerContent>
523
529
  </Drawer>
524
530
  </Portal>