windmill-components 1.309.6 → 1.339.2

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 (383) hide show
  1. package/package/assets/app.css +22 -1
  2. package/package/autosize.js +1 -1
  3. package/package/common.d.ts +8 -0
  4. package/package/common.js +5 -1
  5. package/package/components/AllFlowLogs.svelte +30 -0
  6. package/package/components/AllFlowLogs.svelte.d.ts +18 -0
  7. package/package/components/ApiConnectForm.svelte +10 -4
  8. package/package/components/AppConnectDrawer.svelte +74 -0
  9. package/package/components/AppConnectDrawer.svelte.d.ts +20 -0
  10. package/package/components/AppConnectInner.svelte +513 -0
  11. package/package/components/AppConnectInner.svelte.d.ts +28 -0
  12. package/package/components/ArgInfo.svelte +19 -3
  13. package/package/components/ArgInput.svelte +73 -16
  14. package/package/components/ArgInput.svelte.d.ts +4 -0
  15. package/package/components/ConcurrentJobsChart.svelte +212 -0
  16. package/package/components/ConcurrentJobsChart.svelte.d.ts +23 -0
  17. package/package/components/CustomOauth.svelte +2 -2
  18. package/package/components/DateInput.svelte +47 -0
  19. package/package/components/DateInput.svelte.d.ts +24 -0
  20. package/package/components/DateTimeInput.svelte +25 -3
  21. package/package/components/DefaultScripts.svelte +5 -8
  22. package/package/components/DefaultTags.svelte +3 -2
  23. package/package/components/DefaultTags.svelte.d.ts +3 -1
  24. package/package/components/DefaultTagsInner.svelte +1 -10
  25. package/package/components/DefaultTagsInner.svelte.d.ts +3 -1
  26. package/package/components/Dev.svelte +70 -9
  27. package/package/components/DiffEditor.svelte +3 -0
  28. package/package/components/DisplayResult.svelte +186 -123
  29. package/package/components/DisplayResult.svelte.d.ts +1 -0
  30. package/package/components/DropdownV2.svelte.d.ts +2 -2
  31. package/package/components/EditableSchemaForm.svelte +3 -0
  32. package/package/components/Editor.svelte +110 -93
  33. package/package/components/Editor.svelte.d.ts +4 -2
  34. package/package/components/EditorBar.svelte +99 -8
  35. package/package/components/EditorBar.svelte.d.ts +0 -1
  36. package/package/components/ErrorOrRecoveryHandler.svelte +0 -1
  37. package/package/components/FlowGraphViewer.svelte +1 -0
  38. package/package/components/FlowGraphViewerStep.svelte +19 -1
  39. package/package/components/FlowJobResult.svelte +13 -0
  40. package/package/components/FlowJobResult.svelte.d.ts +3 -0
  41. package/package/components/FlowMetadata.svelte +40 -35
  42. package/package/components/FlowMetadata.svelte.d.ts +3 -1
  43. package/package/components/FlowPreviewContent.svelte +13 -6
  44. package/package/components/FlowStatusViewerInner.svelte +46 -2
  45. package/package/components/HighlightCode.svelte +3 -0
  46. package/package/components/InputTransformForm.svelte +3 -0
  47. package/package/components/InstanceSettings.svelte +163 -16
  48. package/package/components/InstanceSettings.svelte.d.ts +2 -0
  49. package/package/components/JobLogs.svelte +12 -0
  50. package/package/components/JobLogs.svelte.d.ts +16 -0
  51. package/package/components/JobStatus.svelte +1 -1
  52. package/package/components/Label.svelte +1 -1
  53. package/package/components/Label.svelte.d.ts +1 -0
  54. package/package/components/LightweightArgInput.svelte +294 -268
  55. package/package/components/LightweightArgInput.svelte.d.ts +3 -0
  56. package/package/components/LightweightResourcePicker.svelte +74 -26
  57. package/package/components/LightweightSchemaForm.svelte +25 -24
  58. package/package/components/LogViewer.svelte +52 -15
  59. package/package/components/LogViewer.svelte.d.ts +1 -0
  60. package/package/components/Login.svelte +288 -0
  61. package/package/components/Login.svelte.d.ts +19 -0
  62. package/package/components/ModulePreviewForm.svelte +3 -0
  63. package/package/components/NoMainFuncBadge.svelte +8 -0
  64. package/package/components/NoMainFuncBadge.svelte.d.ts +14 -0
  65. package/package/components/OauthExtraParams.svelte +1 -1
  66. package/package/components/OauthScopes.svelte +1 -1
  67. package/package/components/ObjectStoreConfigSettings.svelte +12 -1
  68. package/package/components/ObjectStoreConfigSettings.svelte.d.ts +1 -0
  69. package/package/components/ParqetTableRenderer.svelte +12 -16
  70. package/package/components/Password.svelte +1 -0
  71. package/package/components/Password.svelte.d.ts +2 -0
  72. package/package/components/PasswordArgInput.svelte +49 -0
  73. package/package/components/PasswordArgInput.svelte.d.ts +17 -0
  74. package/package/components/PropertyRow.svelte +10 -2
  75. package/package/components/QueueMetricsDrawer.svelte +225 -0
  76. package/package/components/QueueMetricsDrawer.svelte.d.ts +18 -0
  77. package/package/components/ResourceEditor.svelte +1 -0
  78. package/package/components/ResourcePicker.svelte +3 -7
  79. package/package/components/ResultJobLoader.svelte +2 -2
  80. package/package/components/ResultJobLoader.svelte.d.ts +9 -9
  81. package/package/components/S3FilePicker.svelte +1 -1
  82. package/package/components/SavedInputs.svelte +49 -13
  83. package/package/components/ScheduleEditorInner.svelte +255 -228
  84. package/package/components/SchemaEditor.svelte +5 -3
  85. package/package/components/SchemaEditor.svelte.d.ts +2 -0
  86. package/package/components/SchemaForm.svelte +5 -0
  87. package/package/components/SchemaForm.svelte.d.ts +1 -0
  88. package/package/components/SchemaModal.svelte +101 -8
  89. package/package/components/SchemaModal.svelte.d.ts +2 -0
  90. package/package/components/ScriptBuilder.svelte +15 -8
  91. package/package/components/ScriptBuilder.svelte.d.ts +1 -0
  92. package/package/components/ScriptEditor.svelte +1 -2
  93. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  94. package/package/components/SimpleEditor.svelte +4 -1
  95. package/package/components/StringTypeNarrowing.svelte +43 -24
  96. package/package/components/StringTypeNarrowing.svelte.d.ts +1 -0
  97. package/package/components/TemplateEditor.svelte +1 -0
  98. package/package/components/TestJobLoader.svelte +14 -5
  99. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  100. package/package/components/Toggle.svelte +1 -1
  101. package/package/components/Tooltip.svelte +8 -2
  102. package/package/components/Tooltip.svelte.d.ts +1 -0
  103. package/package/components/WorkspaceGroup.svelte +74 -9
  104. package/package/components/WorkspaceGroup.svelte.d.ts +1 -0
  105. package/package/components/app_connect.d.ts +7 -0
  106. package/package/components/app_connect.js +78 -0
  107. package/package/components/apps/components/buttons/AppButton.svelte +0 -1
  108. package/package/components/apps/components/display/AppAlert.svelte +1 -1
  109. package/package/components/apps/components/display/AppCustomComponent.svelte +1 -1
  110. package/package/components/apps/components/display/AppDisplayComponent.svelte +2 -2
  111. package/package/components/apps/components/display/AppDownload.svelte +1 -1
  112. package/package/components/apps/components/display/AppIcon.svelte +1 -1
  113. package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +2 -2
  114. package/package/components/apps/components/display/AppJobIdLogComponent.svelte +3 -3
  115. package/package/components/apps/components/display/AppMap.svelte +3 -2
  116. package/package/components/apps/components/display/AppMenu.svelte +1 -1
  117. package/package/components/apps/components/display/AppPdf.svelte +3 -11
  118. package/package/components/apps/components/display/AppText.svelte +7 -2
  119. package/package/components/apps/components/display/charts/AppAgCharts.svelte +6 -3
  120. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +32 -30
  121. package/package/components/apps/components/display/dbtable/InsertRow.svelte +3 -6
  122. package/package/components/apps/components/display/dbtable/queries/delete.js +1 -1
  123. package/package/components/apps/components/display/dbtable/queries/insert.js +1 -12
  124. package/package/components/apps/components/display/dbtable/queries/select.js +1 -1
  125. package/package/components/apps/components/display/dbtable/queries/update.js +2 -2
  126. package/package/components/apps/components/display/dbtable/utils.d.ts +0 -1
  127. package/package/components/apps/components/display/dbtable/utils.js +0 -83
  128. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +75 -44
  129. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +5 -1
  130. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +172 -0
  131. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +27 -0
  132. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte +38 -0
  133. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte.d.ts +28 -0
  134. package/package/components/apps/components/display/table/AppAggridTable.svelte +189 -56
  135. package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -1
  136. package/package/components/apps/components/display/table/AppAggridTableActions.svelte +11 -2
  137. package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +1 -0
  138. package/package/components/apps/components/display/table/AppCell.svelte +1 -3
  139. package/package/components/apps/components/display/table/AppTable.svelte +320 -281
  140. package/package/components/apps/components/display/table/AppTableFooter.svelte +42 -23
  141. package/package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +2 -2
  142. package/package/components/apps/components/display/table/SyncColumnDefs.svelte +119 -0
  143. package/package/components/apps/components/display/table/SyncColumnDefs.svelte.d.ts +21 -0
  144. package/package/components/apps/components/display/table/theme/windmill-theme.css +656 -0
  145. package/package/components/apps/components/display/table/utils.js +22 -0
  146. package/package/components/apps/components/helpers/DebouncedInput.svelte +3 -2
  147. package/package/components/apps/components/helpers/NonRunnableComponent.svelte +35 -0
  148. package/package/components/apps/components/helpers/RefreshButton.svelte +30 -12
  149. package/package/components/apps/components/helpers/RefreshButton.svelte.d.ts +1 -3
  150. package/package/components/apps/components/helpers/RefreshIndicator.svelte +19 -0
  151. package/package/components/apps/components/helpers/RefreshIndicator.svelte.d.ts +16 -0
  152. package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
  153. package/package/components/apps/components/helpers/RunnableComponent.svelte +86 -35
  154. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +8 -5
  155. package/package/components/apps/components/helpers/RunnableWrapper.svelte +7 -1
  156. package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +5 -0
  157. package/package/components/apps/components/inputs/AppDateInput.svelte +5 -1
  158. package/package/components/apps/components/inputs/AppFileInput.svelte +11 -2
  159. package/package/components/apps/components/inputs/AppMultiSelect.svelte +56 -50
  160. package/package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +1 -0
  161. package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +178 -0
  162. package/package/components/apps/components/inputs/AppMultiSelectV2.svelte.d.ts +24 -0
  163. package/package/components/apps/components/inputs/AppNumberInput.svelte +1 -1
  164. package/package/components/apps/components/inputs/AppQuillEditor.svelte +26 -0
  165. package/package/components/apps/components/inputs/AppRangeInput.svelte +38 -37
  166. package/package/components/apps/components/inputs/AppSelect.svelte +21 -10
  167. package/package/components/apps/components/inputs/AppSliderInputs.svelte +26 -31
  168. package/package/components/apps/components/inputs/AppTextInput.svelte +1 -1
  169. package/package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +1 -1
  170. package/package/components/apps/components/layout/AppConditionalWrapper.svelte +7 -2
  171. package/package/components/apps/components/layout/AppContainer.svelte +1 -1
  172. package/package/components/apps/components/layout/AppDecisionTree.svelte +1 -1
  173. package/package/components/apps/components/layout/AppDrawer.svelte +16 -3
  174. package/package/components/apps/components/layout/AppDrawer.svelte.d.ts +2 -0
  175. package/package/components/apps/components/layout/AppModal.svelte +85 -79
  176. package/package/components/apps/components/layout/AppModal.svelte.d.ts +2 -0
  177. package/package/components/apps/components/layout/AppStepper.svelte +2 -1
  178. package/package/components/apps/components/layout/AppTabs.svelte +1 -1
  179. package/package/components/apps/editor/AppEditor.svelte +3 -2
  180. package/package/components/apps/editor/AppEditorHeader.svelte +62 -31
  181. package/package/components/apps/editor/AppInputs.svelte +1 -1
  182. package/package/components/apps/editor/AppPreview.svelte +18 -7
  183. package/package/components/apps/editor/ComponentHeader.svelte +37 -1
  184. package/package/components/apps/editor/ComponentHeader.svelte.d.ts +2 -0
  185. package/package/components/apps/editor/GridEditor.svelte +15 -6
  186. package/package/components/apps/editor/GridEditorMenu.svelte +120 -49
  187. package/package/components/apps/editor/GridViewer.svelte +14 -5
  188. package/package/components/apps/editor/GridViewer.svelte.d.ts +5 -1
  189. package/package/components/apps/editor/RecomputeAllComponents.svelte +17 -3
  190. package/package/components/apps/editor/RunnableJobPanel.svelte +9 -5
  191. package/package/components/apps/editor/SettingsPanel.svelte +6 -2
  192. package/package/components/apps/editor/SubGridEditor.svelte +44 -27
  193. package/package/components/apps/editor/appUtils.d.ts +6 -1
  194. package/package/components/apps/editor/appUtils.js +85 -7
  195. package/package/components/apps/editor/component/Component.svelte +78 -2
  196. package/package/components/apps/editor/component/Component.svelte.d.ts +3 -0
  197. package/package/components/apps/editor/component/components.d.ts +274 -21
  198. package/package/components/apps/editor/component/components.js +176 -12
  199. package/package/components/apps/editor/component/default-codes.d.ts +1 -1
  200. package/package/components/apps/editor/component/default-codes.js +241 -9
  201. package/package/components/apps/editor/component/sets.d.ts +3 -0
  202. package/package/components/apps/editor/component/sets.js +12 -2
  203. package/package/components/apps/editor/componentsPanel/ComponentList.svelte +15 -2
  204. package/package/components/apps/editor/componentsPanel/componentControlUtils.js +4 -2
  205. package/package/components/apps/editor/componentsPanel/cssUtils.js +1 -1
  206. package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +5 -0
  207. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +9 -5
  208. package/package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte +1 -1
  209. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +46 -6
  210. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelWithTable.svelte +1 -1
  211. package/package/components/apps/editor/inlineScriptsPanel/utils.js +3 -1
  212. package/package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
  213. package/package/components/apps/editor/settingsPanel/ComponentControl.svelte +1 -1
  214. package/package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +8 -5
  215. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +54 -4
  216. package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +61 -0
  217. package/package/components/apps/editor/settingsPanel/ContextVariables.svelte.d.ts +16 -0
  218. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +12 -10
  219. package/package/components/apps/editor/settingsPanel/DeleteComponent.svelte +29 -32
  220. package/package/components/apps/editor/settingsPanel/DeleteComponent.svelte.d.ts +0 -5
  221. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +27 -25
  222. package/package/components/apps/editor/settingsPanel/GridTab.svelte +1 -1
  223. package/package/components/apps/editor/settingsPanel/GridTabDisabled.svelte +2 -1
  224. package/package/components/apps/editor/settingsPanel/GridTabDisabled.svelte.d.ts +1 -0
  225. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +24 -3
  226. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +27 -1
  227. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
  228. package/package/components/apps/editor/settingsPanel/Recompute.svelte +1 -1
  229. package/package/components/apps/editor/settingsPanel/StylePanel.svelte +4 -3
  230. package/package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +3 -2
  231. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +1 -0
  232. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +4 -4
  233. package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +6 -3
  234. package/package/components/apps/inputType.d.ts +4 -0
  235. package/package/components/apps/rx.d.ts +1 -1
  236. package/package/components/apps/rx.js +7 -0
  237. package/package/components/apps/svelte-grid/Grid.svelte +13 -4
  238. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +2 -1
  239. package/package/components/apps/svelte-grid/types.d.ts +1 -0
  240. package/package/components/apps/svelte-grid/utils/helper.js +1 -0
  241. package/package/components/apps/svelte-grid/utils/overlap.d.ts +3 -0
  242. package/package/components/apps/svelte-grid/utils/overlap.js +21 -0
  243. package/package/components/apps/svelte-select/lib/Select.svelte.d.ts +2 -2
  244. package/package/components/apps/svelte-select/lib/tailwind.css +1 -1
  245. package/package/components/apps/types.d.ts +1 -0
  246. package/package/components/apps/utils.js +13 -3
  247. package/package/components/auditLogs/AuditLogsTable.svelte +5 -2
  248. package/package/components/build_workers.js +1 -0
  249. package/package/components/common/alert/Alert.svelte +17 -17
  250. package/package/components/common/badge/Badge.svelte +6 -3
  251. package/package/components/common/badge/model.d.ts +1 -1
  252. package/package/components/common/button/Button.svelte +22 -14
  253. package/package/components/common/calendarPicker/CalendarPicker.svelte +2 -0
  254. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -0
  255. package/package/components/common/drawer/ConditionalPortal.svelte +9 -0
  256. package/package/components/common/drawer/ConditionalPortal.svelte.d.ts +18 -0
  257. package/package/components/common/drawer/Disposable.svelte +66 -0
  258. package/package/components/common/drawer/Disposable.svelte.d.ts +36 -0
  259. package/package/components/common/drawer/Drawer.svelte +29 -55
  260. package/package/components/common/drawer/Drawer.svelte.d.ts +1 -1
  261. package/package/components/common/fileInput/FileInput.svelte +3 -3
  262. package/package/components/common/fileInput/FileInput.svelte.d.ts +1 -0
  263. package/package/components/common/fileUpload/FileUpload.svelte +1 -1
  264. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  265. package/package/components/common/table/RowIcon.svelte +4 -4
  266. package/package/components/common/table/ScriptRow.svelte +12 -1
  267. package/package/components/common/table/ScriptRow.svelte.d.ts +1 -0
  268. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +45 -0
  269. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +24 -0
  270. package/package/components/copilot/CronGen.svelte +2 -2
  271. package/package/components/copilot/FlowCopilotStatus.svelte +1 -1
  272. package/package/components/copilot/RegexGen.svelte +17 -39
  273. package/package/components/copilot/ScriptGen.svelte +14 -5
  274. package/package/components/copilot/StepInputGen.svelte +2 -1
  275. package/package/components/copilot/StepInputsGen.svelte +2 -1
  276. package/package/components/copilot/completion.js +60 -9
  277. package/package/components/copilot/lib.js +5 -3
  278. package/package/components/copilot/prompts/edit.yaml +24 -0
  279. package/package/components/copilot/prompts/editPrompt.d.ts +3 -0
  280. package/package/components/copilot/prompts/editPrompt.js +3 -0
  281. package/package/components/copilot/prompts/fix.yaml +25 -0
  282. package/package/components/copilot/prompts/fixPrompt.d.ts +3 -0
  283. package/package/components/copilot/prompts/fixPrompt.js +3 -0
  284. package/package/components/copilot/prompts/gen.yaml +20 -0
  285. package/package/components/copilot/prompts/genPrompt.d.ts +3 -0
  286. package/package/components/copilot/prompts/genPrompt.js +3 -0
  287. package/package/components/copilot/utils.d.ts +2 -1
  288. package/package/components/copilot/utils.js +38 -0
  289. package/package/components/details/createAppFromScript.d.ts +26 -0
  290. package/package/components/details/createAppFromScript.js +50 -24
  291. package/package/components/flows/CreateActionsApp.svelte +1 -0
  292. package/package/components/flows/CreateActionsFlow.svelte +1 -0
  293. package/package/components/flows/content/FlowInputs.svelte +2 -2
  294. package/package/components/flows/content/FlowModuleComponent.svelte +15 -6
  295. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -2
  296. package/package/components/flows/flowExplorer.js +4 -1
  297. package/package/components/flows/map/FlowConstantsItem.svelte +1 -1
  298. package/package/components/flows/map/FlowErrorHandlerItem.svelte +1 -1
  299. package/package/components/flows/map/FlowModuleSchemaItem.svelte +3 -0
  300. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
  301. package/package/components/flows/map/FlowSettingsItem.svelte +1 -1
  302. package/package/components/flows/map/MapItem.svelte +2 -0
  303. package/package/components/flows/map/MapItem.svelte.d.ts +1 -0
  304. package/package/components/graph/FlowGraph.svelte +1 -0
  305. package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +41 -16
  306. package/package/components/home/ItemsList.svelte +44 -9
  307. package/package/components/home/TreeView.svelte +2 -0
  308. package/package/components/icons/AzureIcon.svelte +25 -1
  309. package/package/components/icons/PHPIcon.svelte +117 -0
  310. package/package/components/icons/PHPIcon.svelte.d.ts +17 -0
  311. package/package/components/instanceSettings.d.ts +1 -1
  312. package/package/components/instanceSettings.js +18 -2
  313. package/package/components/jobs/JobPreview.svelte +5 -0
  314. package/package/components/multiselect/MultiSelect.svelte +782 -0
  315. package/package/components/multiselect/MultiSelect.svelte.d.ts +97 -0
  316. package/package/components/multiselect/types.d.ts +56 -0
  317. package/package/components/multiselect/types.js +1 -0
  318. package/package/components/multiselect/utils.d.ts +7 -0
  319. package/package/components/multiselect/utils.js +54 -0
  320. package/package/components/propertyPicker/ObjectViewer.svelte +14 -1
  321. package/package/components/runs/JobLoader.svelte +135 -17
  322. package/package/components/runs/JobLoader.svelte.d.ts +7 -2
  323. package/package/components/runs/JobPreview.svelte +39 -3
  324. package/package/components/runs/JobPreview.svelte.d.ts +2 -0
  325. package/package/components/runs/RunRow.svelte +78 -31
  326. package/package/components/runs/RunRow.svelte.d.ts +3 -0
  327. package/package/components/runs/RunsFilter.svelte +125 -9
  328. package/package/components/runs/RunsFilter.svelte.d.ts +4 -2
  329. package/package/components/runs/RunsTable.svelte +53 -5
  330. package/package/components/runs/RunsTable.svelte.d.ts +6 -0
  331. package/package/components/scriptEditor/LogPanel.svelte +46 -33
  332. package/package/components/scriptEditor/LogPanel.svelte.d.ts +1 -0
  333. package/package/components/scripts/CreateActionsScript.svelte +1 -1
  334. package/package/components/settings/WorkspaceUserSettings.svelte +246 -226
  335. package/package/components/sidebar/MenuButton.svelte +1 -1
  336. package/package/components/sidebar/MenuLink.svelte +1 -1
  337. package/package/components/sidebar/changelogs.js +40 -0
  338. package/package/components/table/AutoDataTable.svelte +77 -102
  339. package/package/components/table/DataTable.svelte +13 -5
  340. package/package/components/table/DataTable.svelte.d.ts +1 -0
  341. package/package/components/vscode.js +1 -1
  342. package/package/components/wizards/AgGridWizard.svelte +27 -2
  343. package/package/components/wizards/AgGridWizard.svelte.d.ts +1 -0
  344. package/package/consts.js +5 -1
  345. package/package/defaults.d.ts +2 -2
  346. package/package/defaults.js +2 -2
  347. package/package/deno_fetch.d.ts.txt +30 -0
  348. package/package/editorUtils.js +2 -0
  349. package/package/gen/core/OpenAPI.js +5 -6
  350. package/package/gen/core/request.js +4 -1
  351. package/package/gen/index.d.ts +0 -1
  352. package/package/gen/index.js +0 -1
  353. package/package/gen/schemas.gen.d.ts +97 -428
  354. package/package/gen/schemas.gen.js +97 -433
  355. package/package/gen/services.gen.d.ts +3087 -1840
  356. package/package/gen/services.gen.js +3442 -2358
  357. package/package/gen/types.gen.d.ts +5048 -1505
  358. package/package/infer.d.ts +1 -1
  359. package/package/infer.js +6 -2
  360. package/package/inferArgSig.js +5 -2
  361. package/package/init_scripts/python_init_code.d.ts +1 -1
  362. package/package/init_scripts/python_init_code.js +1 -1
  363. package/package/process.d.ts.txt +1770 -0
  364. package/package/script_helpers.d.ts +3 -2
  365. package/package/script_helpers.js +28 -3
  366. package/package/scripts.d.ts +1 -1
  367. package/package/scripts.js +4 -0
  368. package/package/utils.d.ts +3 -0
  369. package/package/utils.js +46 -3
  370. package/package/windmill_fetch.d.ts.txt +16966 -0
  371. package/package/zIndexes.d.ts +12 -0
  372. package/package/zIndexes.js +12 -0
  373. package/package.json +5 -5
  374. package/package/components/AppConnect.svelte +0 -566
  375. package/package/components/AppConnect.svelte.d.ts +0 -23
  376. package/package/components/ContextMenu.svelte +0 -89
  377. package/package/components/ContextMenu.svelte.d.ts +0 -28
  378. package/package/components/apps/components/display/index.d.ts +0 -17
  379. package/package/components/apps/components/display/index.js +0 -17
  380. package/package/components/apps/components/helpers/index.d.ts +0 -10
  381. package/package/components/apps/components/helpers/index.js +0 -10
  382. package/package/components/apps/components/index.d.ts +0 -5
  383. package/package/components/apps/components/index.js +0 -5
@@ -7,15 +7,7 @@ import { enterpriseLicense, superadmin } from '../stores';
7
7
  import { DEFAULT_TAGS_PER_WORKSPACE_SETTING } from '../consts';
8
8
  import Toggle from './Toggle.svelte';
9
9
  let defaultTags = undefined;
10
- let defaultTagPerWorkspace = undefined;
11
- async function loadDefaultTagsPerWorkspace() {
12
- try {
13
- defaultTagPerWorkspace = await WorkerService.isDefaultTagsPerWorkspace();
14
- }
15
- catch (err) {
16
- sendUserToast(`Could not load default tag per workspace setting: ${err}`, true);
17
- }
18
- }
10
+ export let defaultTagPerWorkspace = undefined;
19
11
  async function loadDefaultTags() {
20
12
  try {
21
13
  defaultTags = (await WorkerService.geDefaultTags()) ?? [];
@@ -25,7 +17,6 @@ async function loadDefaultTags() {
25
17
  }
26
18
  }
27
19
  loadDefaultTags();
28
- loadDefaultTagsPerWorkspace();
29
20
  </script>
30
21
 
31
22
  <div class="flex flex-col w-80 p-2 gap-2">
@@ -1,6 +1,8 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
- props: Record<string, never>;
3
+ props: {
4
+ defaultTagPerWorkspace?: boolean | undefined;
5
+ };
4
6
  events: {
5
7
  [evt: string]: CustomEvent<any>;
6
8
  };
@@ -119,15 +119,29 @@ if (searchParams?.has('local')) {
119
119
  let useLock = false;
120
120
  let lockChanges = false;
121
121
  let timeout = undefined;
122
+ let loadingCodebaseButton = false;
123
+ let lastBundleCommandId = '';
122
124
  const el = (event) => {
123
125
  // sendUserToast(`Received message from parent ${event.data.type}`, true)
124
126
  if (event.data.type == 'runTest') {
125
127
  runTest();
128
+ event.preventDefault();
126
129
  }
127
130
  else if (event.data.type == 'replaceScript') {
128
131
  mode = 'script';
129
132
  replaceScript(event.data);
130
133
  }
134
+ else if (event.data.type == 'testBundle') {
135
+ if (event.data.id == lastBundleCommandId) {
136
+ testBundle(event.data.file);
137
+ }
138
+ else {
139
+ sendUserToast(`Bundle received ${lastBundleCommandId} was obsolete, ignoring`, true);
140
+ }
141
+ }
142
+ else if (event.data.type == 'testBundleError') {
143
+ sendUserToast(typeof event.data.error == 'object' ? JSON.stringify(event.data.error) : event.data.error, true);
144
+ }
131
145
  else if (event.data.type == 'replaceFlow') {
132
146
  mode = 'flow';
133
147
  lockChanges = true;
@@ -164,6 +178,39 @@ onMount(() => {
164
178
  });
165
179
  window.parent?.postMessage({ type: 'refresh' }, '*');
166
180
  });
181
+ async function testBundle(file) {
182
+ testJobLoader?.abstractRun(async () => {
183
+ try {
184
+ const form = new FormData();
185
+ form.append('preview', JSON.stringify({
186
+ content: currentScript?.content,
187
+ kind: 'bundle',
188
+ path: currentScript?.path,
189
+ args,
190
+ language: currentScript?.language,
191
+ tag: currentScript?.tag
192
+ }));
193
+ form.append('file', file);
194
+ const url = '/api/w/' + workspace + '/jobs/run/preview_bundle';
195
+ const req = await fetch(url, {
196
+ method: 'POST',
197
+ body: form,
198
+ headers: {
199
+ Authorization: 'Bearer ' + token
200
+ }
201
+ });
202
+ if (req.status != 201) {
203
+ throw Error(`Script snapshot creation was not successful: ${req.status} - ${req.statusText} - ${await req.text()}`);
204
+ }
205
+ return await req.text();
206
+ }
207
+ catch (e) {
208
+ sendUserToast(`Failed to send bundle ${e}`, true);
209
+ throw Error(e);
210
+ }
211
+ });
212
+ loadingCodebaseButton = false;
213
+ }
167
214
  onDestroy(() => {
168
215
  window.removeEventListener('message', el);
169
216
  if (socket && socket.readyState === WebSocket.OPEN) {
@@ -200,8 +247,15 @@ function runTest() {
200
247
  if (!currentScript) {
201
248
  return;
202
249
  }
203
- //@ts-ignore
204
- testJobLoader.runPreview(currentScript.path, currentScript.content, currentScript.language, args, undefined, useLock ? currentScript.lock : undefined);
250
+ if (currentScript.isCodebase) {
251
+ loadingCodebaseButton = true;
252
+ lastBundleCommandId = Math.random().toString(36).substring(7);
253
+ window.parent?.postMessage({ type: 'testBundle', id: lastBundleCommandId }, '*');
254
+ }
255
+ else {
256
+ //@ts-ignore
257
+ testJobLoader.runPreview(currentScript.path, currentScript.content, currentScript.language, args, currentScript.tag, useLock ? currentScript.lock : undefined);
258
+ }
205
259
  }
206
260
  else {
207
261
  flowPreviewButtons?.openPreview();
@@ -219,10 +273,12 @@ async function loadPastTests() {
219
273
  scriptPathExact: currentScript.path
220
274
  });
221
275
  }
222
- function onKeyDown(event) {
223
- if ((event.ctrlKey || event.metaKey) && event.key == 'Enter') {
224
- event.preventDefault();
225
- runTest();
276
+ async function onKeyDown(event) {
277
+ if ((event.ctrlKey || event.metaKey) && event.code === 'KeyC') {
278
+ document.execCommand('copy');
279
+ }
280
+ else if ((event.ctrlKey || event.metaKey) && event.code === 'KeyX') {
281
+ document.execCommand('cut');
226
282
  }
227
283
  }
228
284
  let lastPath = undefined;
@@ -359,7 +415,9 @@ async function inferModuleArgs(selectedIdStore) {
359
415
  </div>
360
416
  <div class="text-center w-full text-lg truncate py-1 text-primary">
361
417
  {currentScript?.path ?? 'Not editing a script'}
362
- {currentScript?.language ?? ''}
418
+ <span class="text-2xs text-secondary">{currentScript?.language ?? ''}</span><span
419
+ class="text-2xs text-secondary">{currentScript?.isCodebase ? ' (codebase)' : ''}</span
420
+ >
363
421
  </div>
364
422
 
365
423
  <div class="absolute top-2 right-2 !text-tertiary text-xs">
@@ -396,7 +454,7 @@ async function inferModuleArgs(selectedIdStore) {
396
454
  <Button
397
455
  disabled={currentScript === undefined}
398
456
  color="dark"
399
- on:click={() => {
457
+ on:click={(e) => {
400
458
  runTest()
401
459
  }}
402
460
  btnClasses="w-full"
@@ -407,7 +465,9 @@ async function inferModuleArgs(selectedIdStore) {
407
465
  }}
408
466
  shortCut={{ Icon: CornerDownLeft, hide: testIsLoading }}
409
467
  >
410
- {#if testIsLoading}
468
+ {#if loadingCodebaseButton}
469
+ Bundle is building...
470
+ {:else if testIsLoading}
411
471
  Running
412
472
  {:else}
413
473
  Test
@@ -425,6 +485,7 @@ async function inferModuleArgs(selectedIdStore) {
425
485
  </Pane>
426
486
  <Pane size={67}>
427
487
  <LogPanel
488
+ {workspace}
428
489
  lang={currentScript?.language}
429
490
  previewJob={testJob}
430
491
  {pastPreviews}
@@ -24,6 +24,9 @@ let diffDivEl = null;
24
24
  let editorWidth = SIDE_BY_SIDE_MIN_WIDTH;
25
25
  async function loadDiffEditor() {
26
26
  await initializeVscode();
27
+ if (!diffDivEl) {
28
+ return;
29
+ }
27
30
  diffEditor = meditor.createDiffEditor(diffDivEl, {
28
31
  automaticLayout,
29
32
  renderSideBySide: editorWidth >= SIDE_BY_SIDE_MIN_WIDTH,
@@ -1,9 +1,8 @@
1
1
  <script>import { Highlight } from 'svelte-highlight';
2
2
  import { json } from 'svelte-highlight/languages';
3
- import TableCustom from './TableCustom.svelte';
4
- import { copyToClipboard, roughSizeOfObject, truncate } from '../utils';
3
+ import { copyToClipboard, roughSizeOfObject } from '../utils';
5
4
  import { Button, Drawer, DrawerContent } from './common';
6
- import { ClipboardCopy, Download, Expand, PanelRightOpen, Table2, Braces, Highlighter } from 'lucide-svelte';
5
+ import { ClipboardCopy, Download, Expand, PanelRightOpen, Table2, Braces, Highlighter, InfoIcon } from 'lucide-svelte';
7
6
  import Portal from 'svelte-portal';
8
7
  import ObjectViewer from './propertyPicker/ObjectViewer.svelte';
9
8
  import S3FilePicker from './S3FilePicker.svelte';
@@ -16,6 +15,7 @@ import ParqetTableRenderer from './ParqetTableRenderer.svelte';
16
15
  import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
17
16
  import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
18
17
  import MapResult from './MapResult.svelte';
18
+ import Popover from './Popover.svelte';
19
19
  export let result;
20
20
  export let requireHtmlApproval = false;
21
21
  export let filename = undefined;
@@ -24,32 +24,40 @@ export let jobId = undefined;
24
24
  export let workspaceId = undefined;
25
25
  export let hideAsJson = false;
26
26
  export let noControls = false;
27
+ export let drawerOpen = false;
28
+ const IMG_MAX_SIZE = 10000000;
29
+ const TABLE_MAX_SIZE = 5000000;
30
+ const DISPLAY_MAX_SIZE = 100000;
27
31
  let resultKind;
28
32
  $: resultKind = inferResultKind(result);
29
33
  export let forceJson = false;
30
34
  let enableHtml = false;
31
35
  let s3FileDisplayRawMode = false;
32
- function isRectangularArray(obj) {
33
- if (!Array.isArray(obj) || obj.length == 0) {
34
- return false;
35
- }
36
- if (!Object.values(obj)
37
- .map(Array.isArray)
38
- .reduce((a, b) => a && b)) {
39
- return false;
40
- }
41
- let innerSize = obj[0].length;
42
- return Object.values(obj)
43
- .map((x) => x.length == innerSize)
44
- .reduce((a, b) => a && b);
36
+ function isTableRow(result) {
37
+ return Array.isArray(result) && result.every((x) => Array.isArray(x));
45
38
  }
46
- function asListOfList(obj) {
47
- return obj;
39
+ function isTableCol(result, keys) {
40
+ return (!Array.isArray(result) &&
41
+ keys.map((k) => Array.isArray(result[k])).reduce((a, b) => a && b, true));
48
42
  }
49
- function isObjectOfArray(result, keys) {
50
- return keys.map((k) => Array.isArray(result[k])).reduce((a, b) => a && b);
43
+ function isTableRowObject(json) {
44
+ // check array of objects (with possible a first row of headers)
45
+ return (Array.isArray(json) &&
46
+ json.length > 0 &&
47
+ (json.every((item) => item && typeof item === 'object' && Object.keys(item).length > 0 && !Array.isArray(item)) ||
48
+ (Array.isArray(json[0]) &&
49
+ json[0].every((item) => typeof item === 'string') &&
50
+ json
51
+ .slice(1)
52
+ .every((item) => item &&
53
+ typeof item === 'object' &&
54
+ Object.keys(item).length > 0 &&
55
+ !Array.isArray(item)))));
51
56
  }
52
57
  let largeObject = undefined;
58
+ function checkIfS3(result, keys) {
59
+ return keys.length === 1 && keys.includes('s3') && typeof result.s3 === 'string';
60
+ }
53
61
  let is_render_all = false;
54
62
  function inferResultKind(result) {
55
63
  if (result == 'WINDMILL_TOO_BIG') {
@@ -68,32 +76,47 @@ function inferResultKind(result) {
68
76
  is_render_all =
69
77
  keys.length == 1 && keys.includes('render_all') && Array.isArray(result['render_all']);
70
78
  // Check if the result is an image
71
- if (['png', 'svg', 'jpeg', 'html'].includes(keys[0]) && keys.length == 1) {
79
+ if (['png', 'svg', 'jpeg', 'html', 'gif'].includes(keys[0]) && keys.length == 1) {
72
80
  // Check if the image is too large (10mb)
73
- largeObject = roughSizeOfObject(result) > 10000000;
81
+ largeObject = roughSizeOfObject(result) > IMG_MAX_SIZE;
74
82
  return keys[0];
75
83
  }
76
- let length = roughSizeOfObject(result);
84
+ const tableLargeObject = roughSizeOfObject(result) > TABLE_MAX_SIZE;
77
85
  // Otherwise, check if the result is too large (10kb) for json
78
- largeObject = length > 50000;
79
- if (largeObject) {
86
+ largeObject = tableLargeObject || roughSizeOfObject(result) > DISPLAY_MAX_SIZE;
87
+ if (tableLargeObject) {
80
88
  return 'json';
81
89
  }
82
- if (keys.length != 0) {
83
- if (Array.isArray(result) && result.every((elt) => inferResultKind(elt) === 's3object')) {
84
- return 's3object-list';
90
+ if (Array.isArray(result)) {
91
+ if (result.length === 0) {
92
+ return 'json';
85
93
  }
86
- else if (isRectangularArray(result)) {
87
- return 'table-col';
94
+ else if (result.every((elt) => typeof elt === 'object' && checkIfS3(elt, Object.keys(elt)))) {
95
+ largeObject = result.length > 100;
96
+ if (largeObject) {
97
+ return 'json';
98
+ }
99
+ return 's3object-list';
88
100
  }
89
- else if (keys.length == 1 && keys[0] == 'table-row') {
101
+ else if (isTableRow(result)) {
90
102
  return 'table-row';
91
103
  }
92
- else if ((keys.length == 1 && keys[0] == 'table-col') ||
93
- isObjectOfArray(result, keys)) {
94
- return 'table-col';
104
+ else if (isTableRowObject(result)) {
105
+ return 'table-row-object';
95
106
  }
96
- else if (keys.length == 1 && keys[0] == 'html') {
107
+ else {
108
+ return 'json';
109
+ }
110
+ }
111
+ else if (keys.length === 1 &&
112
+ ['table-row', 'table-row-object', 'table-col'].includes(keys[0])) {
113
+ return keys[0];
114
+ }
115
+ if (largeObject) {
116
+ return 'json';
117
+ }
118
+ if (keys.length != 0) {
119
+ if (keys.length == 1 && keys[0] == 'html') {
97
120
  return 'html';
98
121
  }
99
122
  else if (keys.length == 1 && keys[0] == 'map') {
@@ -129,12 +152,15 @@ function inferResultKind(result) {
129
152
  keys.includes('approvalPage')) {
130
153
  return 'approval';
131
154
  }
132
- else if (keys.length === 1 && keys.includes('s3')) {
155
+ else if (checkIfS3(result, keys)) {
133
156
  return 's3object';
134
157
  }
135
158
  else if (keys.length === 1 && (keys.includes('md') || keys.includes('markdown'))) {
136
159
  return 'markdown';
137
160
  }
161
+ else if (isTableCol(result, keys)) {
162
+ return 'table-col';
163
+ }
138
164
  }
139
165
  }
140
166
  catch (err) { }
@@ -158,14 +184,29 @@ function contentOrRootString(obj) {
158
184
  return obj.content;
159
185
  }
160
186
  }
161
- function isArrayWithObjects(json) {
162
- return (Array.isArray(json) &&
187
+ function handleArrayOfObjectsHeaders(json) {
188
+ // handle possible a first row of headers
189
+ if (Array.isArray(json) &&
163
190
  json.length > 0 &&
164
- json.every((item) => item && typeof item === 'object' && Object.keys(item).length > 0 && !Array.isArray(item)));
191
+ Array.isArray(json[0]) &&
192
+ json[0].every((item) => typeof item === 'string') &&
193
+ json
194
+ .slice(1)
195
+ .every((item) => item && typeof item === 'object' && Object.keys(item).length > 0 && !Array.isArray(item))) {
196
+ const headers = json[0];
197
+ const rows = json.slice(1);
198
+ const result = rows.map((row) => {
199
+ const obj = {};
200
+ for (const header of headers) {
201
+ obj[header] = row[header];
202
+ }
203
+ return obj;
204
+ });
205
+ return result;
206
+ }
207
+ return json;
165
208
  }
166
- $: isTableDisplay = isArrayWithObjects(result);
167
- let richRender = !forceJson;
168
- function transform(input) {
209
+ function objectOfArraysToObjects(input) {
169
210
  const maxLength = Math.max(...Object.values(input).map((arr) => arr.length));
170
211
  const result = [];
171
212
  for (let i = 0; i < maxLength; i++) {
@@ -182,14 +223,46 @@ function transform(input) {
182
223
  }
183
224
  return result;
184
225
  }
226
+ function arrayOfRowsToObjects(input) {
227
+ if (Array.isArray(input) && input.length > 0) {
228
+ // handle possible first row of headers
229
+ if (input.length > 1 &&
230
+ Array.isArray(input[0]) &&
231
+ input[0].every((item) => typeof item === 'string')) {
232
+ const headers = input[0];
233
+ const rows = input.slice(1);
234
+ return rows.map((row) => {
235
+ const obj = {};
236
+ for (let i = 0; i < headers.length; i++) {
237
+ obj[headers[i]] = row[i];
238
+ }
239
+ return obj;
240
+ });
241
+ }
242
+ else {
243
+ return input;
244
+ }
245
+ }
246
+ return [];
247
+ }
185
248
  let globalForceJson = false;
186
249
  </script>
187
250
 
188
251
  {#if is_render_all}
189
252
  <div class="flex flex-col w-full gap-6">
190
253
  {#if !noControls}
191
- <div class="mb-2 text-tertiary text-sm">
192
- as JSON&nbsp;<input class="windmillapp" type="checkbox" bind:checked={globalForceJson} />
254
+ <div class="text-tertiary text-sm">
255
+ <ToggleButtonGroup
256
+ class="h-6"
257
+ selected={globalForceJson ? 'json' : 'pretty'}
258
+ on:selected={(ev) => {
259
+ globalForceJson = ev.detail === 'json'
260
+ }}
261
+ >
262
+ <ToggleButton class="px-1.5" value="pretty" label="Pretty" icon={Highlighter} />
263
+
264
+ <ToggleButton class="px-1.5" value="json" label="JSON" icon={Braces} />
265
+ </ToggleButtonGroup>
193
266
  </div>
194
267
  {/if}
195
268
  {#each result['render_all'] as res}
@@ -213,62 +286,56 @@ let globalForceJson = false;
213
286
  : 'min-h-[200px]'}"
214
287
  >
215
288
  {#if result != undefined && length != undefined && largeObject != undefined}
216
- <div class="flex justify-between items-center w-full pb-1">
217
- <div class="text-tertiary text-sm flex items-center">
218
- {#if (resultKind && typeof result == 'object' && !['json', 's3object', 's3object-list', 'table-col', 'table-row'].includes(resultKind) && !hideAsJson) || isTableDisplay}
289
+ <div class="flex justify-between items-center w-full">
290
+ <div class="text-tertiary text-sm">
291
+ {#if !hideAsJson && !['json', 's3object'].includes(resultKind ?? '') && typeof result === 'object'}
219
292
  <ToggleButtonGroup
220
293
  class="h-6"
221
- selected={isTableDisplay
222
- ? richRender
223
- ? 'table'
224
- : 'json'
225
- : forceJson
226
- ? 'json'
227
- : 'pretty'}
294
+ selected={forceJson ? 'json' : resultKind?.startsWith('table-') ? 'table' : 'pretty'}
228
295
  on:selected={(ev) => {
229
- if (isTableDisplay) {
230
- richRender = ev.detail === 'table'
231
- }
232
296
  forceJson = ev.detail === 'json'
233
297
  }}
234
298
  >
235
- {#if resultKind && !['json', 's3object', 's3object-list', 'table-col', 'table-row'].includes(resultKind) && !hideAsJson}
236
- <ToggleButton class="px-1.5" value="pretty" label="Pretty" icon={Highlighter} />
237
- {/if}
238
- {#if isTableDisplay}
299
+ {#if ['table-col', 'table-row', 'table-row-object'].includes(resultKind ?? '')}
239
300
  <ToggleButton class="px-1.5" value="table" label="Table" icon={Table2} />
301
+ {:else}
302
+ <ToggleButton class="px-1.5" value="pretty" label="Pretty" icon={Highlighter} />
240
303
  {/if}
241
304
  <ToggleButton class="px-1.5" value="json" label="JSON" icon={Braces} />
242
305
  </ToggleButtonGroup>
243
306
  {/if}
244
307
  </div>
245
- <div class="text-tertiary text-xs flex gap-2 z-10 items-center">
308
+ <div class="text-secondary text-xs flex gap-2.5 z-10 items-center">
246
309
  <slot name="copilot-fix" />
247
310
  {#if !disableExpand && !noControls}
248
- <button on:click={() => copyToClipboard(toJsonStr(result))}
249
- ><ClipboardCopy size={16} /></button
311
+ <Popover
312
+ documentationLink="https://www.windmill.dev/docs/core_concepts/rich_display_rendering"
250
313
  >
251
- <button on:click={jsonViewer.openDrawer}><Expand size={16} /></button>
314
+ <svelte:fragment slot="text">
315
+ The result renderer in Windmill supports rich display rendering, allowing you to
316
+ customize the display format of your results.
317
+ </svelte:fragment>
318
+ <div class="-mt-1">
319
+ <InfoIcon size={14} />
320
+ </div>
321
+ </Popover>
322
+ <button on:click={() => copyToClipboard(toJsonStr(result))} class="-mt-1">
323
+ <ClipboardCopy size={14} />
324
+ </button>
325
+ <button on:click={jsonViewer.openDrawer} class="-mt-1">
326
+ <Expand size={14} />
327
+ </button>
252
328
  {/if}
253
329
  </div>
254
330
  </div>{#if !forceJson && resultKind == 'table-col'}
255
331
  {@const data = 'table-col' in result ? result['table-col'] : result}
256
- <AutoDataTable objects={transform(data)} />
332
+ <AutoDataTable objects={objectOfArraysToObjects(data)} />
257
333
  {:else if !forceJson && resultKind == 'table-row'}
258
334
  {@const data = 'table-row' in result ? result['table-row'] : result}
259
- <div class="grid grid-flow-col-dense border border-gray-200 dark:border-gray-600">
260
- <TableCustom>
261
- <tbody slot="body">
262
- {#each Array.isArray(asListOfList(data)) ? asListOfList(data) : [] as row}
263
- <tr>
264
- {#each row as v}
265
- <td class="!text-xs">{truncate(JSON.stringify(v), 200) ?? ''}</td>
266
- {/each}
267
- </tr>
268
- {/each}
269
- </tbody>
270
- </TableCustom>
271
- </div>
335
+ <AutoDataTable objects={arrayOfRowsToObjects(data)} />
336
+ {:else if !forceJson && resultKind == 'table-row-object'}
337
+ {@const data = 'table-row-object' in result ? result['table-row-object'] : result}
338
+ <AutoDataTable objects={handleArrayOfObjectsHeaders(data)} />
272
339
  {:else if !forceJson && resultKind == 'html'}
273
340
  <div class="h-full">
274
341
  {#if !requireHtmlApproval || enableHtml}
@@ -460,11 +527,9 @@ let globalForceJson = false;
460
527
  </div>
461
528
  </div>
462
529
  {:else if !forceJson && resultKind == 'markdown'}
463
- <div class="prose-xs dark:prose-invert">
530
+ <div class="prose-xs dark:prose-invert !list-disc !list-outside">
464
531
  <Markdown md={result?.md ?? result?.markdown} />
465
532
  </div>
466
- {:else if !forceJson && isTableDisplay && richRender}
467
- <AutoDataTable objects={result} />
468
533
  {:else if largeObject}
469
534
  {#if result && typeof result == 'object' && 'file' in result}
470
535
  <div
@@ -492,7 +557,7 @@ let globalForceJson = false;
492
557
  title="Large result detected"
493
558
  type="warning"
494
559
  tooltip="We recommend using persistent object storage for large result. See docs for setting up an object storage service integration using s3 or any other s3 compatible services."
495
- documentationLink="https://www.windmill.dev/docs/core_concepts/persistent_storage#large-data-files-s3-r2-minio-azure-blob"
560
+ documentationLink="https://www.windmill.dev/docs/core_concepts/persistent_storage#object-storage-for-large-data-s3-r2-minio-azure-blob"
496
561
  />
497
562
  </div>
498
563
  {#if result && result != 'WINDMILL_TOO_BIG'}
@@ -530,46 +595,44 @@ let globalForceJson = false;
530
595
  </div>
531
596
 
532
597
  {#if !disableExpand && !noControls}
533
- <Portal>
534
- <Drawer bind:this={jsonViewer} size="900px">
535
- <DrawerContent title="Expanded Result" on:close={jsonViewer.closeDrawer}>
536
- <svelte:fragment slot="actions">
537
- <Button
538
- download="{filename ?? 'result'}.json"
539
- href={workspaceId && jobId
540
- ? `/api/w/${workspaceId}/jobs_u/completed/get_result/${jobId}`
541
- : `data:text/json;charset=utf-8,${encodeURIComponent(toJsonStr(result))}`}
542
- startIcon={{ icon: Download }}
543
- color="light"
544
- size="xs"
545
- >
546
- Download
547
- </Button>
548
- <Button
549
- on:click={() => copyToClipboard(toJsonStr(result))}
550
- color="light"
551
- size="xs"
552
- startIcon={{
553
- icon: ClipboardCopy
554
- }}
555
- >
556
- Copy to clipboard
557
- </Button>
558
- </svelte:fragment>
559
- <svelte:self
560
- {noControls}
561
- {result}
562
- {requireHtmlApproval}
563
- {filename}
564
- {jobId}
565
- {workspaceId}
566
- {hideAsJson}
567
- {forceJson}
568
- disableExpand={true}
569
- />
570
- </DrawerContent>
571
- </Drawer>
572
- </Portal>
598
+ <Drawer bind:this={jsonViewer} bind:open={drawerOpen} size="900px">
599
+ <DrawerContent title="Expanded Result" on:close={jsonViewer.closeDrawer}>
600
+ <svelte:fragment slot="actions">
601
+ <Button
602
+ download="{filename ?? 'result'}.json"
603
+ href={workspaceId && jobId
604
+ ? `/api/w/${workspaceId}/jobs_u/completed/get_result/${jobId}`
605
+ : `data:text/json;charset=utf-8,${encodeURIComponent(toJsonStr(result))}`}
606
+ startIcon={{ icon: Download }}
607
+ color="light"
608
+ size="xs"
609
+ >
610
+ Download
611
+ </Button>
612
+ <Button
613
+ on:click={() => copyToClipboard(toJsonStr(result))}
614
+ color="light"
615
+ size="xs"
616
+ startIcon={{
617
+ icon: ClipboardCopy
618
+ }}
619
+ >
620
+ Copy to clipboard
621
+ </Button>
622
+ </svelte:fragment>
623
+ <svelte:self
624
+ {noControls}
625
+ {result}
626
+ {requireHtmlApproval}
627
+ {filename}
628
+ {jobId}
629
+ {workspaceId}
630
+ {hideAsJson}
631
+ {forceJson}
632
+ disableExpand={true}
633
+ />
634
+ </DrawerContent>
635
+ </Drawer>
573
636
 
574
637
  <Portal>
575
638
  <S3FilePicker bind:this={s3FileViewer} readOnlyMode={true} />
@@ -9,6 +9,7 @@ declare const __propDef: {
9
9
  workspaceId?: string | undefined;
10
10
  hideAsJson?: boolean | undefined;
11
11
  noControls?: boolean | undefined;
12
+ drawerOpen?: boolean | undefined;
12
13
  forceJson?: boolean | undefined;
13
14
  };
14
15
  events: {
@@ -7,7 +7,7 @@ declare const __propDef: {
7
7
  icon?: any;
8
8
  href?: string | undefined;
9
9
  disabled?: boolean | undefined;
10
- type?: "delete" | "action" | undefined;
10
+ type?: "action" | "delete" | undefined;
11
11
  hide?: boolean | undefined;
12
12
  }[] | (() => {
13
13
  displayName: string;
@@ -15,7 +15,7 @@ declare const __propDef: {
15
15
  icon?: any;
16
16
  href?: string | undefined;
17
17
  disabled?: boolean | undefined;
18
- type?: "delete" | "action" | undefined;
18
+ type?: "action" | "delete" | undefined;
19
19
  hide?: boolean | undefined;
20
20
  }[]) | undefined;
21
21
  justifyEnd?: boolean | undefined;
@@ -128,6 +128,9 @@ function reorder() {
128
128
  bind:pickForField
129
129
  bind:extra={schema.properties[argName]}
130
130
  simpleTooltip={schemaFieldTooltip[argName]}
131
+ nullable={schema.properties[argName].nullable}
132
+ bind:title={schema.properties[argName].title}
133
+ bind:placeholder={schema.properties[argName].placeholder}
131
134
  />
132
135
  {/if}
133
136
  {/if}