windmill-components 1.109.8 → 1.121.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/package/cloud.js +0 -14
  2. package/package/common.d.ts +1 -0
  3. package/package/components/ArgEnum.svelte +53 -0
  4. package/package/components/ArgEnum.svelte.d.ts +24 -0
  5. package/package/components/ArgInfo.svelte +26 -14
  6. package/package/components/ArgInput.svelte +69 -83
  7. package/package/components/ArgInput.svelte.d.ts +2 -0
  8. package/package/components/ArrayTypeNarrowing.svelte +73 -0
  9. package/package/components/ArrayTypeNarrowing.svelte.d.ts +20 -0
  10. package/package/components/CenteredModal.svelte +7 -9
  11. package/package/components/DeployToSetting.svelte +35 -0
  12. package/package/components/DeployToSetting.svelte.d.ts +16 -0
  13. package/package/components/DeployWorkspace.svelte +555 -0
  14. package/package/components/DeployWorkspace.svelte.d.ts +23 -0
  15. package/package/components/DeployWorkspaceDrawer.svelte +35 -0
  16. package/package/components/DeployWorkspaceDrawer.svelte.d.ts +17 -0
  17. package/package/components/DiffDrawer.svelte +60 -0
  18. package/package/components/DiffDrawer.svelte.d.ts +23 -0
  19. package/package/components/DisplayResult.svelte +17 -24
  20. package/package/components/DraftBadge.svelte +1 -1
  21. package/package/components/Editor.svelte +0 -4
  22. package/package/components/EditorBar.svelte +127 -26
  23. package/package/components/EditorBar.svelte.d.ts +1 -0
  24. package/package/components/FieldHeader.svelte +2 -2
  25. package/package/components/FlowBuilder.svelte +9 -0
  26. package/package/components/FlowBuilder.svelte.d.ts +6 -0
  27. package/package/components/FlowJobResult.svelte +3 -2
  28. package/package/components/FlowJobResult.svelte.d.ts +1 -0
  29. package/package/components/FlowStatusViewer.svelte +6 -39
  30. package/package/components/FlowStatusWaitingForEvents.svelte +64 -0
  31. package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +19 -0
  32. package/package/components/InputTransformForm.svelte +21 -11
  33. package/package/components/InputTransformForm.svelte.d.ts +1 -1
  34. package/package/components/InputTransformSchemaForm.svelte +1 -1
  35. package/package/components/JobArgs.svelte +120 -27
  36. package/package/components/LightweightArgInput.svelte +28 -15
  37. package/package/components/LightweightArgInput.svelte.d.ts +1 -0
  38. package/package/components/LightweightSchemaForm.svelte +24 -24
  39. package/package/components/LogViewer.svelte +23 -11
  40. package/package/components/LogViewer.svelte.d.ts +1 -0
  41. package/package/components/ModulePreview.svelte +7 -1
  42. package/package/components/ModulePreviewForm.svelte +8 -0
  43. package/package/components/ModulePreviewForm.svelte.d.ts +1 -1
  44. package/package/components/MoveDrawer.svelte +3 -3
  45. package/package/components/Path.svelte +27 -7
  46. package/package/components/Popover.svelte +11 -2
  47. package/package/components/Popover.svelte.d.ts +1 -0
  48. package/package/components/Required.svelte +1 -1
  49. package/package/components/ResourcePicker.svelte +7 -1
  50. package/package/components/RunForm.svelte +15 -8
  51. package/package/components/RunForm.svelte.d.ts +2 -0
  52. package/package/components/SchemaEditor.svelte +14 -12
  53. package/package/components/SchemaForm.svelte +9 -2
  54. package/package/components/SchemaModal.svelte +9 -5
  55. package/package/components/ScriptBuilder.svelte +21 -19
  56. package/package/components/ScriptEditor.svelte +6 -19
  57. package/package/components/ScriptPicker.svelte +13 -7
  58. package/package/components/ScriptVersionHistory.svelte +57 -0
  59. package/package/components/ScriptVersionHistory.svelte.d.ts +16 -0
  60. package/package/components/SimpleEditor.svelte +3 -1
  61. package/package/components/SimpleEditor.svelte.d.ts +1 -0
  62. package/package/components/Slider.svelte +2 -1
  63. package/package/components/Slider.svelte.d.ts +1 -0
  64. package/package/components/SuperadminSettings.svelte +12 -14
  65. package/package/components/SuperadminSettings.svelte.d.ts +0 -2
  66. package/package/components/Toast.svelte +1 -1
  67. package/package/components/Uptodate.svelte +26 -0
  68. package/package/components/Uptodate.svelte.d.ts +14 -0
  69. package/package/components/UserSettings.svelte +8 -12
  70. package/package/components/UserSettings.svelte.d.ts +0 -2
  71. package/package/components/Version.svelte +9 -0
  72. package/package/components/Version.svelte.d.ts +14 -0
  73. package/package/components/apps/components/buttons/AppButton.svelte +2 -2
  74. package/package/components/apps/components/buttons/AppForm.svelte +1 -2
  75. package/package/components/apps/components/buttons/AppFormButton.svelte +35 -38
  76. package/package/components/apps/components/buttons/AppSchemaForm.svelte +5 -0
  77. package/package/components/apps/components/display/AppChartJs.svelte +4 -3
  78. package/package/components/apps/components/display/AppFlowStatusComponent.svelte +2 -2
  79. package/package/components/apps/components/display/AppLogsComponent.svelte +7 -1
  80. package/package/components/apps/components/display/AppMap.svelte +11 -7
  81. package/package/components/apps/components/display/PlotlyHtml.svelte +1 -1
  82. package/package/components/apps/components/display/VegaLiteHtml.svelte +1 -1
  83. package/package/components/apps/components/display/table/AppAggridTable.svelte +86 -39
  84. package/package/components/apps/components/display/table/AppTable.svelte +29 -3
  85. package/package/components/apps/components/display/table/AppTableFooter.svelte +48 -43
  86. package/package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +1 -0
  87. package/package/components/apps/components/helpers/InputValue.svelte +25 -3
  88. package/package/components/apps/components/helpers/RunnableComponent.svelte +14 -3
  89. package/package/components/apps/components/helpers/eval.d.ts +1 -0
  90. package/package/components/apps/components/helpers/eval.js +3 -1
  91. package/package/components/apps/components/inputs/AppCheckbox.svelte +5 -0
  92. package/package/components/apps/components/inputs/AppMultiSelect.svelte +1 -1
  93. package/package/components/apps/components/inputs/AppNumberInput.svelte +8 -1
  94. package/package/components/apps/components/inputs/AppQuillEditor.svelte +78 -0
  95. package/package/components/apps/components/inputs/AppQuillEditor.svelte.d.ts +27 -0
  96. package/package/components/apps/components/inputs/AppRangeInput.svelte +8 -1
  97. package/package/components/apps/components/inputs/AppSelect.svelte +17 -2
  98. package/package/components/apps/components/inputs/AppSliderInputs.svelte +18 -5
  99. package/package/components/apps/components/inputs/AppTextInput.svelte +66 -57
  100. package/package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +5 -0
  101. package/package/components/apps/components/layout/AppDrawer.svelte +2 -2
  102. package/package/components/apps/components/layout/AppList.svelte +112 -0
  103. package/package/components/apps/components/layout/AppList.svelte.d.ts +23 -0
  104. package/package/components/apps/components/layout/AppModal.svelte +35 -33
  105. package/package/components/apps/components/layout/ListWrapper.svelte +23 -0
  106. package/package/components/apps/components/layout/ListWrapper.svelte.d.ts +23 -0
  107. package/package/components/apps/editor/AppEditor.svelte +3 -2
  108. package/package/components/apps/editor/AppEditorHeader.svelte +14 -9
  109. package/package/components/apps/editor/AppPreview.svelte +2 -2
  110. package/package/components/apps/editor/RecomputeAllComponents.svelte +4 -0
  111. package/package/components/apps/editor/SettingsPanel.svelte +1 -1
  112. package/package/components/apps/editor/SubGridEditor.svelte +4 -2
  113. package/package/components/apps/editor/appUtils.d.ts +1 -1
  114. package/package/components/apps/editor/appUtils.js +2 -2
  115. package/package/components/apps/editor/component/Component.svelte +13 -0
  116. package/package/components/apps/editor/component/ComponentNavigation.svelte +9 -7
  117. package/package/components/apps/editor/component/ComponentWrapper.svelte +1 -4
  118. package/package/components/apps/editor/component/components.d.ts +138 -3
  119. package/package/components/apps/editor/component/components.js +131 -4
  120. package/package/components/apps/editor/component/default-codes.js +65 -35
  121. package/package/components/apps/editor/component/sets.js +2 -0
  122. package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
  123. package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +2 -2
  124. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +2 -1
  125. package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +3 -2
  126. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +1 -1
  127. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +3 -3
  128. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +1 -1
  129. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +1 -1
  130. package/package/components/apps/editor/settingsPanel/GridPane.svelte +1 -2
  131. package/package/components/apps/editor/settingsPanel/GridTab.svelte +2 -2
  132. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +6 -2
  133. package/package/components/apps/editor/settingsPanel/Recompute.svelte +1 -1
  134. package/package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +16 -2
  135. package/package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +1 -0
  136. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +7 -4
  137. package/package/components/apps/editor/settingsPanel/script/shared/ScriptRunConfiguration.svelte +2 -2
  138. package/package/components/apps/types.d.ts +8 -0
  139. package/package/components/apps/utils.js +2 -0
  140. package/package/components/common/badge/Badge.svelte +2 -1
  141. package/package/components/common/badge/Badge.svelte.d.ts +1 -0
  142. package/package/components/common/fileInput/FileInput.svelte +1 -1
  143. package/package/components/common/modal/AlwaysMountedModal.svelte +52 -54
  144. package/package/components/common/modal/AlwaysMountedModal.svelte.d.ts +1 -0
  145. package/package/components/common/table/AppRow.svelte +28 -1
  146. package/package/components/common/table/AppRow.svelte.d.ts +2 -0
  147. package/package/components/common/table/FlowRow.svelte +29 -2
  148. package/package/components/common/table/FlowRow.svelte.d.ts +2 -0
  149. package/package/components/common/table/RawAppRow.svelte +16 -0
  150. package/package/components/common/table/RawAppRow.svelte.d.ts +2 -0
  151. package/package/components/common/table/ScriptRow.svelte +29 -2
  152. package/package/components/common/table/ScriptRow.svelte.d.ts +2 -0
  153. package/package/components/common/tabs/Tab.svelte +2 -2
  154. package/package/components/common/tabs/Tabs.svelte +3 -6
  155. package/package/components/common/tabs/Tabs.svelte.d.ts +1 -1
  156. package/package/components/common/toggleButton-v2/ToggleButton.svelte +3 -1
  157. package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +1 -0
  158. package/package/components/flows/common/FlowCardHeader.svelte +13 -15
  159. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +8 -1
  160. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +8 -1
  161. package/package/components/flows/content/FlowLoop.svelte +8 -1
  162. package/package/components/flows/content/FlowModuleCache.svelte +1 -1
  163. package/package/components/flows/content/FlowModuleComponent.svelte +13 -4
  164. package/package/components/flows/content/FlowModuleHeader.svelte +27 -18
  165. package/package/components/flows/content/FlowModuleHeader.svelte.d.ts +1 -0
  166. package/package/components/flows/content/FlowModuleMock.svelte +51 -0
  167. package/package/components/flows/content/FlowModuleMock.svelte.d.ts +17 -0
  168. package/package/components/flows/content/FlowModuleSuspend.svelte +49 -2
  169. package/package/components/flows/flowExplorer.d.ts +11 -0
  170. package/package/components/flows/flowExplorer.js +137 -0
  171. package/package/components/flows/map/FlowErrorHandlerItem.svelte +3 -2
  172. package/package/components/flows/map/FlowModuleSchemaItem.svelte +13 -1
  173. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
  174. package/package/components/flows/map/FlowModuleSchemaMap.svelte +1 -1
  175. package/package/components/flows/map/MapItem.svelte +2 -1
  176. package/package/components/flows/previousResults.d.ts +0 -2
  177. package/package/components/flows/previousResults.js +1 -67
  178. package/package/components/graph/FlowGraph.svelte +71 -13
  179. package/package/components/graph/svelvet/container/views/GraphView.svelte +22 -0
  180. package/package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +2 -0
  181. package/package/components/graph/svelvet/container/views/Svelvet.svelte +13 -1
  182. package/package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +2 -0
  183. package/package/components/graph/svelvet/edges/models/Edge.d.ts +2 -1
  184. package/package/components/graph/svelvet/edges/models/Edge.js +3 -1
  185. package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +2 -13
  186. package/package/components/graph/svelvet/store/controllers/util.js +1 -1
  187. package/package/components/graph/svelvet/types/types.d.ts +1 -0
  188. package/package/components/home/ItemsList.svelte +50 -41
  189. package/package/components/home/ListFilters.svelte +0 -1
  190. package/package/components/jobs/JobDetail.svelte +1 -1
  191. package/package/components/jobs/JobPreview.svelte +29 -13
  192. package/package/components/jobs/JobPreview.svelte.d.ts +1 -2
  193. package/package/components/scriptEditor/LogPanel.svelte +6 -1
  194. package/package/components/scriptEditor/LogPanel.svelte.d.ts +1 -1
  195. package/package/gen/core/OpenAPI.js +1 -1
  196. package/package/gen/index.d.ts +1 -0
  197. package/package/gen/models/EditResourceType.d.ts +1 -1
  198. package/package/gen/models/FlowModule.d.ts +7 -0
  199. package/package/gen/models/ScheduleWJobs.d.ts +8 -0
  200. package/package/gen/models/ScheduleWJobs.js +4 -0
  201. package/package/gen/services/DraftService.d.ts +10 -0
  202. package/package/gen/services/DraftService.js +16 -0
  203. package/package/gen/services/JobService.d.ts +24 -3
  204. package/package/gen/services/JobService.js +21 -3
  205. package/package/gen/services/ScheduleService.d.ts +17 -0
  206. package/package/gen/services/ScheduleService.js +18 -0
  207. package/package/gen/services/SettingsService.d.ts +6 -0
  208. package/package/gen/services/SettingsService.js +11 -0
  209. package/package/gen/services/WorkspaceService.d.ts +22 -0
  210. package/package/gen/services/WorkspaceService.js +30 -0
  211. package/package/infer.js +17 -3
  212. package/package/script_helpers.js +16 -5
  213. package/package/scripts.js +11 -1
  214. package/package/utils.d.ts +1 -0
  215. package/package/utils.js +1 -0
  216. package/package.json +21 -12
@@ -0,0 +1,19 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import { Job } from '../gen';
3
+ declare const __propDef: {
4
+ props: {
5
+ is_owner: boolean;
6
+ workspaceId: string | undefined;
7
+ job: Job;
8
+ };
9
+ events: {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {};
13
+ };
14
+ export type FlowStatusWaitingForEventsProps = typeof __propDef.props;
15
+ export type FlowStatusWaitingForEventsEvents = typeof __propDef.events;
16
+ export type FlowStatusWaitingForEventsSlots = typeof __propDef.slots;
17
+ export default class FlowStatusWaitingForEvents extends SvelteComponentTyped<FlowStatusWaitingForEventsProps, FlowStatusWaitingForEventsEvents, FlowStatusWaitingForEventsSlots> {
18
+ }
19
+ export {};
@@ -4,11 +4,14 @@ import FieldHeader from './FieldHeader.svelte';
4
4
  import DynamicInputHelpBox from './flows/content/DynamicInputHelpBox.svelte';
5
5
  import { codeToStaticTemplate, getDefaultExpr, isCodeInjection } from './flows/utils';
6
6
  import SimpleEditor from './SimpleEditor.svelte';
7
- import { Button, ToggleButton, ToggleButtonGroup } from './common';
8
- import { faCode } from '@fortawesome/free-solid-svg-icons';
7
+ import { Button } from './common';
8
+ import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
9
+ import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
10
+ import { ResourceService } from '../gen';
9
11
  import TemplateEditor from './TemplateEditor.svelte';
10
12
  import { setInputCat as computeInputCat } from '../utils';
11
- import { Plug } from 'lucide-svelte';
13
+ import { Code, Plug } from 'lucide-svelte';
14
+ import { workspaceStore } from '../stores';
12
15
  export let schema;
13
16
  export let arg;
14
17
  export let argName;
@@ -94,6 +97,11 @@ function setDefaultCode() {
94
97
  }
95
98
  }
96
99
  $: schema.properties[argName].default && setDefaultCode();
100
+ let resourceTypes = undefined;
101
+ async function loadResourceTypes() {
102
+ resourceTypes = await ResourceService.listResourceTypeNames({ workspace: $workspaceStore });
103
+ }
104
+ loadResourceTypes();
97
105
  </script>
98
106
 
99
107
  {#if arg != undefined}
@@ -119,7 +127,7 @@ $: schema.properties[argName].default && setDefaultCode();
119
127
  {/if}
120
128
  </div>
121
129
  {#if !noDynamicToggle}
122
- <div class="flex flex-row gap-x-4 gap-y-1 flex-wrap z-10">
130
+ <div class="flex flex-row gap-x-6 gap-y-1 flex-wrap z-10 items-center">
123
131
  <div>
124
132
  <ToggleButtonGroup
125
133
  bind:selected={propertyType}
@@ -162,24 +170,25 @@ $: schema.properties[argName].default && setDefaultCode();
162
170
  >
163
171
  {#if isStaticTemplate(inputCat)}
164
172
  <ToggleButton
165
- title={`Write text or surround javascript with \`\$\{\` and \`\}\`. Use \`results\` to connect to another node\'s output.`}
173
+ tooltip={`Write text or surround javascript with \`\$\{\` and \`\}\`. Use \`results\` to connect to another node\'s output.`}
166
174
  light
167
175
  position="left"
168
176
  value="static"
169
177
  size="xs2"
170
- >
171
- {'${} '}&nbsp;
172
- </ToggleButton>
178
+ small
179
+ label={'${}'}
180
+ />
173
181
  {:else}
174
- <ToggleButton light position="left" value="static" size="xs2">Static</ToggleButton>
182
+ <ToggleButton small label="Static" position="left" value="static" size="xs2" />
175
183
  {/if}
176
184
 
177
185
  <ToggleButton
186
+ small
178
187
  light
179
- title="Javascript expression ('flow_input' or 'results')."
188
+ tooltip="Javascript expression ('flow_input' or 'results')."
180
189
  position="right"
181
190
  value="javascript"
182
- startIcon={{ icon: faCode }}
191
+ icon={Code}
183
192
  size="xs2"
184
193
  />
185
194
  </ToggleButtonGroup>
@@ -229,6 +238,7 @@ $: schema.properties[argName].default && setDefaultCode();
229
238
  </div>
230
239
  {:else if propertyType === undefined || propertyType == 'static'}
231
240
  <ArgInput
241
+ {resourceTypes}
232
242
  noMargin
233
243
  compact
234
244
  bind:this={argInput}
@@ -2,7 +2,7 @@ import { SvelteComponentTyped } from "svelte";
2
2
  import type { Schema } from '../common';
3
3
  import type VariableEditor from './VariableEditor.svelte';
4
4
  import type ItemPicker from './ItemPicker.svelte';
5
- import type { InputTransform } from '../gen';
5
+ import { type InputTransform } from '../gen';
6
6
  declare const __propDef: {
7
7
  props: {
8
8
  schema: Schema;
@@ -49,7 +49,7 @@ $: {
49
49
  {#if keys.length > 0}
50
50
  {#each keys as argName (argName)}
51
51
  {#if (!filter || filter.includes(argName)) && Object.keys(schema.properties ?? {}).includes(argName)}
52
- <div class="z-10 pt-1.5">
52
+ <div class="z-10 pt-4">
53
53
  <InputTransformForm
54
54
  {previousModuleId}
55
55
  bind:arg={args[argName]}
@@ -1,34 +1,127 @@
1
- <script>import ArgInfo from './ArgInfo.svelte';
2
- import { Skeleton } from './common';
1
+ <script>import { ChevronRightSquare, ClipboardCopy, Download, Expand } from 'lucide-svelte';
2
+ import ArgInfo from './ArgInfo.svelte';
3
+ import { Button, Drawer, DrawerContent, Skeleton } from './common';
3
4
  import TableCustom from './TableCustom.svelte';
5
+ import Portal from 'svelte-portal';
6
+ import { Highlight } from 'svelte-highlight';
7
+ import { copyToClipboard } from '../utils';
8
+ import { json } from 'svelte-highlight/languages';
4
9
  export let args;
5
10
  export let tableClass = '';
11
+ let jsonViewer;
12
+ let runLocally;
13
+ let jsonStr = '';
14
+ function pythonCode() {
15
+ return `
16
+ if __name__ == 'main':
17
+ ${Object.entries(args)
18
+ .map(([arg, value]) => {
19
+ return ` ${arg} = ${JSON.stringify(value)}`;
20
+ })
21
+ .join('\n')}
22
+
23
+ main(${Object.keys(args)
24
+ .map((x) => `${x} = ${x}`)
25
+ .join(', ')})
26
+ `;
27
+ }
28
+ function typescriptCode() {
29
+ return `
30
+ if (import.meta.main) {
31
+ ${Object.entries(args)
32
+ .map(([arg, value]) => {
33
+ return ` let ${arg} = ${JSON.stringify(value)}`;
34
+ })
35
+ .join('\n')}
36
+
37
+ await main(...)
38
+ }
39
+ `;
40
+ }
6
41
  </script>
7
42
 
8
- <TableCustom class="py-2 {tableClass}">
9
- <tr slot="header-row">
10
- <th>Argument</th>
11
- <th>Value</th>
12
- </tr>
13
- <tbody slot="body">
14
- {#if args && Object.keys(args).length > 0}
15
- {#each Object.entries(args) as [arg, value]}
43
+ <div class="relative">
44
+ <div class="text-gray-500 text-xs absolute top-8 right-0">
45
+ <button
46
+ on:click={() => {
47
+ jsonStr = JSON.stringify(args, null, 4)
48
+ jsonViewer.openDrawer()
49
+ }}><Expand size={18} /></button
50
+ >
51
+ </div>
52
+ <TableCustom class="py-2 {tableClass}">
53
+ <tr slot="header-row">
54
+ <th>Argument</th>
55
+ <th>Value</th>
56
+ </tr>
57
+ <tbody slot="body">
58
+ {#if args && Object.keys(args).length > 0}
59
+ {#each Object.entries(args) as [arg, value]}
60
+ <tr>
61
+ <td class="font-semibold">{arg}</td>
62
+ <td><ArgInfo {value} /></td>
63
+ </tr>
64
+ {/each}
65
+ {:else if args}
66
+ <tr><div class="text-gray-600 pt-2 pl-1 text-sm">No arguments</div></tr>
67
+ {:else}
16
68
  <tr>
17
- <td class="font-semibold">{arg}</td>
18
- <td><ArgInfo {value} /></td>
69
+ <td>
70
+ <Skeleton layout={[[3], 0.5, [3]]} />
71
+ </td>
72
+ <td>
73
+ <Skeleton layout={[[3], 0.5, [3]]} />
74
+ </td>
19
75
  </tr>
20
- {/each}
21
- {:else if args}
22
- <tr><div class="text-gray-600 pt-2 pl-1 text-sm">No arguments</div></tr>
23
- {:else}
24
- <tr>
25
- <td>
26
- <Skeleton layout={[[3], 0.5, [3]]} />
27
- </td>
28
- <td>
29
- <Skeleton layout={[[3], 0.5, [3]]} />
30
- </td>
31
- </tr>
32
- {/if}
33
- </tbody>
34
- </TableCustom>
76
+ {/if}
77
+ </tbody>
78
+ </TableCustom>
79
+ </div>
80
+
81
+ <Portal>
82
+ <Drawer bind:this={jsonViewer} size="900px">
83
+ <DrawerContent title="Expanded Args" on:close={jsonViewer.closeDrawer}>
84
+ <svelte:fragment slot="actions">
85
+ <a
86
+ class="text-sm text-gray-600 mr-2 inline-flex gap-2 items-center py-2 px-2 hover:bg-gray-100 rounded-lg"
87
+ download="windmill-args.json"
88
+ href="data:text/json;charset=utf-8,{encodeURIComponent(jsonStr)}"
89
+ >Download <Download size={14} /></a
90
+ >
91
+ <Button on:click={runLocally.openDrawer} color="light" size="xs">
92
+ <div class="flex gap-2 items-center">Use in a local script<ChevronRightSquare /> </div>
93
+ </Button>
94
+ <Button on:click={() => copyToClipboard(jsonStr)} color="light" size="xs">
95
+ <div class="flex gap-2 items-center">Copy to clipboard <ClipboardCopy /> </div>
96
+ </Button>
97
+ </svelte:fragment>
98
+ {#if jsonStr.length > 100000}
99
+ <div class="text-sm mb-2 text-gray-600">
100
+ <a
101
+ download="windmill-args.json"
102
+ href="data:text/json;charset=utf-8,{encodeURIComponent(jsonStr)}">Download</a
103
+ >
104
+ JSON is too large to be displayed in full.
105
+ </div>
106
+ {:else}
107
+ <Highlight language={json} code={jsonStr.replace(/\\n/g, '\n')} />
108
+ {/if}
109
+ </DrawerContent>
110
+ </Drawer>
111
+ <Drawer bind:this={runLocally} size="900px">
112
+ <DrawerContent title="Run locally" on:close={runLocally.closeDrawer}>
113
+ <h3 class="mb-2">Envs</h3>
114
+ If using the wmill client in your code, set the following env variables:
115
+ <pre
116
+ ><code
117
+ >BASE_URL="{window.location.origin}"
118
+ WM_TOKEN="{'<TOKEN>'}"</code
119
+ ></pre
120
+ >
121
+ <h3 class="mt-8">TypeScript</h3>
122
+ <pre><code>{typescriptCode()}</code></pre>
123
+ <h3 class="mt-8">Python</h3>
124
+ <pre><code>{pythonCode()}</code></pre>
125
+ </DrawerContent>
126
+ </Drawer>
127
+ </Portal>
@@ -1,4 +1,4 @@
1
- <script>import { faMinus, faPlus } from '@fortawesome/free-solid-svg-icons';
1
+ <script>import { faPlus } from '@fortawesome/free-solid-svg-icons';
2
2
  import { setInputCat as computeInputCat } from '../utils';
3
3
  import { Badge, Button } from './common';
4
4
  import { createEventDispatcher } from 'svelte';
@@ -11,6 +11,8 @@ import Toggle from './Toggle.svelte';
11
11
  import Range from './Range.svelte';
12
12
  import LightweightSchemaForm from './LightweightSchemaForm.svelte';
13
13
  import { twMerge } from 'tailwind-merge';
14
+ import { fade } from 'svelte/transition';
15
+ import { X } from 'lucide-svelte';
14
16
  export let css = undefined;
15
17
  export let label = '';
16
18
  export let value;
@@ -185,10 +187,10 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
185
187
  <span>&nbsp; Not set</span>
186
188
  {/if}
187
189
  {:else if inputCat == 'list'}
188
- <div>
189
- <div>
190
+ <div class="w-full">
191
+ <div class="w-full">
190
192
  {#each value ?? [] as v, i}
191
- <div class="flex flex-row max-w-md mt-1">
193
+ <div class="flex flex-row max-w-md mt-1 w-full">
192
194
  {#if itemsType?.type == 'number'}
193
195
  <input type="number" bind:value={v} />
194
196
  {:else if itemsType?.type == 'string' && itemsType?.contentEncoding == 'base64'}
@@ -198,14 +200,25 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
198
200
  on:change={(x) => fileChanged(x, (val) => (value[i] = val))}
199
201
  multiple={false}
200
202
  />
203
+ {:else if Array.isArray(itemsType?.enum)}
204
+ <select
205
+ on:focus={(e) => {
206
+ dispatch('focus')
207
+ }}
208
+ class="px-6"
209
+ bind:value={v}
210
+ >
211
+ {#each itemsType?.enum ?? [] as e}
212
+ <option>{e}</option>
213
+ {/each}
214
+ </select>
201
215
  {:else}
202
216
  <input type="text" bind:value={v} />
203
217
  {/if}
204
- <Button
205
- variant="border"
206
- color="red"
207
- size="sm"
208
- btnClasses="mx-6"
218
+ <button
219
+ transition:fade|local={{ duration: 100 }}
220
+ class="rounded-full p-1 bg-white/60 duration-200 hover:bg-gray-200 ml-2"
221
+ aria-label="Clear"
209
222
  on:click={() => {
210
223
  value = value.filter((el) => el != v)
211
224
  if (value.length == 0) {
@@ -213,15 +226,15 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
213
226
  }
214
227
  }}
215
228
  >
216
- <Icon data={faMinus} />
217
- </Button>
229
+ <X size={14} />
230
+ </button>
218
231
  </div>
219
232
  {/each}
220
233
  </div>
221
- <div class="flex">
234
+ <div class="flex my-2">
222
235
  <Button
223
236
  variant="border"
224
- color="blue"
237
+ color="light"
225
238
  size="sm"
226
239
  btnClasses="mt-1"
227
240
  on:click={() => {
@@ -232,7 +245,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
232
245
  }}
233
246
  >
234
247
  <Icon data={faPlus} class="mr-2" />
235
- Add item
248
+ Add
236
249
  </Button>
237
250
  </div>
238
251
  <span class="ml-2">
@@ -294,7 +307,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
294
307
  />
295
308
  {:else if inputCat == 'string'}
296
309
  <div class="flex flex-col w-full">
297
- <div class="flex flex-row w-full items- justify-between">
310
+ <div class="flex flex-row w-full items-center justify-between">
298
311
  <textarea
299
312
  rows="1"
300
313
  bind:this={el}
@@ -19,6 +19,7 @@ declare const __propDef: {
19
19
  itemsType?: {
20
20
  type?: "string" | "number" | "object" | "bytes" | undefined;
21
21
  contentEncoding?: "base64" | undefined;
22
+ enum?: string[] | undefined;
22
23
  } | undefined;
23
24
  displayHeader?: boolean | undefined;
24
25
  properties?: {
@@ -14,30 +14,30 @@ $: if (args === undefined) {
14
14
  }
15
15
  </script>
16
16
 
17
- <div class={twMerge('w-full flex flex-col overflow-auto', largeGap ? 'gap-8' : 'gap-2')}>
17
+ <div
18
+ class={twMerge('w-full flex flex-col overflow-auto px-0.5 pb-2', largeGap ? 'gap-8' : 'gap-2')}
19
+ >
18
20
  {#each Object.keys(schema.properties ?? {}) as argName (argName)}
19
- <div>
20
- {#if typeof args == 'object' && schema?.properties[argName] && args}
21
- <LightweightArgInput
22
- label={argName}
23
- description={schema.properties[argName].description}
24
- bind:value={args[argName]}
25
- bind:valid={inputCheck[argName]}
26
- type={schema.properties[argName].type}
27
- required={schema.required?.includes(argName) ?? false}
28
- pattern={schema.properties[argName].pattern}
29
- defaultValue={schema.properties[argName].default}
30
- enum_={schema.properties[argName].enum}
31
- format={schema.properties[argName].format}
32
- contentEncoding={schema.properties[argName].contentEncoding}
33
- properties={schema.properties[argName].properties}
34
- itemsType={schema.properties[argName].items}
35
- extra={schema.properties[argName]}
36
- on:inputClicked
37
- {displayType}
38
- {css}
39
- />
40
- {/if}
41
- </div>
21
+ {#if typeof args == 'object' && schema?.properties[argName] && args}
22
+ <LightweightArgInput
23
+ label={argName}
24
+ description={schema.properties[argName].description}
25
+ bind:value={args[argName]}
26
+ bind:valid={inputCheck[argName]}
27
+ type={schema.properties[argName].type}
28
+ required={schema.required?.includes(argName) ?? false}
29
+ pattern={schema.properties[argName].pattern}
30
+ defaultValue={schema.properties[argName].default}
31
+ enum_={schema.properties[argName].enum}
32
+ format={schema.properties[argName].format}
33
+ contentEncoding={schema.properties[argName].contentEncoding}
34
+ properties={schema.properties[argName].properties}
35
+ itemsType={schema.properties[argName].items}
36
+ extra={schema.properties[argName]}
37
+ on:inputClicked
38
+ {displayType}
39
+ {css}
40
+ />
41
+ {/if}
42
42
  {/each}
43
43
  </div>
@@ -1,10 +1,13 @@
1
- <script>import { Loader2 } from 'lucide-svelte';
2
- import { Drawer, DrawerContent } from './common';
1
+ <script>import { ClipboardCopy, Download, Loader2 } from 'lucide-svelte';
2
+ import { Button, Drawer, DrawerContent } from './common';
3
+ import { copyToClipboard } from '../utils';
4
+ import { workspaceStore } from '../stores';
3
5
  export let content;
4
6
  export let isLoading;
5
7
  export let duration = undefined;
6
8
  export let mem = undefined;
7
9
  export let wrapperClass = '';
10
+ export let jobId = undefined;
8
11
  let scroll = true;
9
12
  let div = null;
10
13
  $: if (content != undefined) {
@@ -19,6 +22,16 @@ let logViewer;
19
22
 
20
23
  <Drawer bind:this={logViewer} size="900px">
21
24
  <DrawerContent title="Expanded Logs" on:close={logViewer.closeDrawer}>
25
+ <svelte:fragment slot="actions">
26
+ <a
27
+ class="text-sm text-gray-600 mr-2 inline-flex gap-2 items-center py-2 px-2 hover:bg-gray-100 rounded-lg"
28
+ download="windmill-logs.json"
29
+ href="/api/w/{$workspaceStore}/jobs_u/get_logs/{jobId}">Download <Download size={14} /></a
30
+ >
31
+ <Button on:click={() => copyToClipboard(content)} color="light" size="xs">
32
+ <div class="flex gap-2 items-center">Copy to clipboard <ClipboardCopy /> </div>
33
+ </Button>
34
+ </svelte:fragment>
22
35
  <div>
23
36
  <pre class="bg-gray-50 text-xs w-full p-2"
24
37
  >{#if content}{content}{:else if isLoading}Waiting for job to start...{:else}No logs are available yet{/if}</pre
@@ -28,10 +41,8 @@ let logViewer;
28
41
  </Drawer>
29
42
 
30
43
  <div class="relative w-full h-full {wrapperClass}">
31
- <div bind:this={div} class="w-full h-full overflow-auto bg-gray-50 relative">
32
- <div
33
- class="sticky top-0 right-0 w-full flex flex-row-reverse justify-between text-gray-500 text-sm bg-gray-50/20"
34
- >
44
+ <div bind:this={div} class="w-full h-full overflow-auto relative secondaryBackground">
45
+ <div class="sticky top-0 right-0 w-full flex flex-row-reverse justify-between text-sm">
35
46
  <div class="flex gap-1">
36
47
  <button on:click={logViewer.openDrawer}>Expand</button>
37
48
  <div class="py-2 pr-2 text-xs flex gap-2 items-center">
@@ -43,16 +54,17 @@ let logViewer;
43
54
  {#if isLoading}
44
55
  <Loader2 class="animate-spin absolute top-2 left-2" />
45
56
  {:else if duration}
46
- <span class="absolute text-xs text-gray-500 top-2 left-2">took {duration}ms</span>
57
+ <span class="absolute text-xs text-gray-500 dark:text-gray-400 top-2 left-2"
58
+ >took {duration}ms</span
59
+ >
47
60
  {/if}
48
61
  {#if mem}
49
- <span class="absolute text-xs text-gray-500 top-2 left-36"
62
+ <span class="absolute text-xs text-gray-500 dark:text-gray-400 top-2 left-36"
50
63
  >mem peak: {(mem / 1024).toPrecision(4)}MB</span
51
64
  >
52
65
  {/if}
53
- <pre class="whitespace-pre-wrap break-words bg-gray-50 text-xs w-full p-2"
54
- >{#if content}<span>{content}</span>{:else if !isLoading}<span class="text-gray-600"
55
- >No logs are available yet</span
66
+ <pre class="whitespace-pre-wrap break-words text-xs w-full p-2"
67
+ >{#if content}<span>{content}</span>{:else if !isLoading}<span>No logs are available yet</span
56
68
  >{/if}</pre
57
69
  >
58
70
  </div>
@@ -6,6 +6,7 @@ declare const __propDef: {
6
6
  duration?: number | undefined;
7
7
  mem?: number | undefined;
8
8
  wrapperClass?: string | undefined;
9
+ jobId?: string | undefined;
9
10
  scrollToBottom?: (() => void) | undefined;
10
11
  };
11
12
  events: {
@@ -87,7 +87,13 @@ function jobDone() {
87
87
  <Pane size={50} minSize={20}>
88
88
  <Splitpanes horizontal>
89
89
  <Pane size={50} minSize={10}>
90
- <LogViewer content={testJob?.logs} isLoading={testIsLoading} />
90
+ <LogViewer
91
+ jobId={testJob?.id}
92
+ duration={testJob?.['duration_ms']}
93
+ mem={testJob?.['mem_peak']}
94
+ content={testJob?.logs}
95
+ isLoading={testIsLoading}
96
+ />
91
97
  </Pane>
92
98
  <Pane size={50} minSize={10} class="text-sm text-gray-600">
93
99
  {#if testJob != undefined && 'result' in testJob && testJob.result != undefined}
@@ -4,6 +4,8 @@ import ArgInput from './ArgInput.svelte';
4
4
  import { Button } from './common';
5
5
  import { getContext } from 'svelte';
6
6
  import { evalValue } from './flows/utils';
7
+ import { ResourceService } from '../gen';
8
+ import { workspaceStore } from '../stores';
7
9
  export let schema;
8
10
  export let args = {};
9
11
  export let mod;
@@ -43,6 +45,11 @@ function plugIt(argName) {
43
45
  }
44
46
  }
45
47
  let editor = {};
48
+ let resourceTypes = undefined;
49
+ async function loadResourceTypes() {
50
+ resourceTypes = await ResourceService.listResourceTypeNames({ workspace: $workspaceStore });
51
+ }
52
+ loadResourceTypes();
46
53
  </script>
47
54
 
48
55
  <div class="w-full pt-2">
@@ -52,6 +59,7 @@ let editor = {};
52
59
  <div class="flex gap-2 items-center">
53
60
  {#if typeof args == 'object' && schema?.properties[argName]}
54
61
  <ArgInput
62
+ {resourceTypes}
55
63
  minW={false}
56
64
  autofocus={i == 0 && autofocus}
57
65
  label={argName}
@@ -1,6 +1,6 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  import type { Schema } from '../common';
3
- import type { FlowModule } from '../gen';
3
+ import { type FlowModule } from '../gen';
4
4
  import type { PickableProperties } from './flows/previousResults';
5
5
  declare const __propDef: {
6
6
  props: {
@@ -101,9 +101,9 @@ async function updatePath() {
101
101
  <h2 class="border-b pb-1 mt-10 mb-4">Path</h2>
102
102
  <div class="flex flex-col mb-2 gap-6">
103
103
  <Path disabled={!own} {kind} {initialPath} bind:path />
104
- <div class="mt-4" />
105
- <Button disabled={!own} on:click={updatePath}>Move/Rename</Button>
106
- <div />
107
104
  </div>
105
+ <svelte:fragment slot="actions">
106
+ <Button disabled={!own} on:click={updatePath}>Move/Rename</Button>
107
+ </svelte:fragment>
108
108
  </DrawerContent>
109
109
  </Drawer>