windmill-components 1.35.1 → 1.35.43

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 (201) hide show
  1. package/components/ArgInput.svelte +21 -21
  2. package/components/ArgInput.svelte.d.ts +3 -3
  3. package/components/DisplayResult.svelte +73 -67
  4. package/components/Editor.svelte +184 -246
  5. package/components/Editor.svelte.d.ts +4 -4
  6. package/components/EditorBar.svelte +58 -45
  7. package/components/EditorBar.svelte.d.ts +2 -1
  8. package/components/FlowBuilder.svelte +113 -121
  9. package/components/FlowJobResult.svelte +4 -5
  10. package/components/FlowModulesViewer.svelte +89 -7
  11. package/components/FlowModulesViewer.svelte.d.ts +1 -0
  12. package/components/FlowPreviewContent.svelte +56 -15
  13. package/components/FlowPreviewContent.svelte.d.ts +1 -1
  14. package/components/FlowStatusViewer.svelte +42 -24
  15. package/components/FlowStatusViewer.svelte.d.ts +0 -1
  16. package/components/FlowViewer.svelte +7 -3
  17. package/components/HighlightCode.svelte +21 -0
  18. package/components/HighlightCode.svelte.d.ts +17 -0
  19. package/components/IconedPath.svelte +9 -7
  20. package/components/IconedResourceType.svelte +1 -1
  21. package/components/InputTransformForm.svelte +88 -107
  22. package/components/InputTransformForm.svelte.d.ts +0 -1
  23. package/components/ItemPicker.svelte +2 -2
  24. package/components/LogViewer.svelte +23 -0
  25. package/components/LogViewer.svelte.d.ts +19 -0
  26. package/components/ModulePreview.svelte +108 -0
  27. package/components/ModulePreview.svelte.d.ts +24 -0
  28. package/components/RunForm.svelte +29 -18
  29. package/components/RunForm.svelte.d.ts +6 -2
  30. package/components/SchemaEditor.svelte +5 -3
  31. package/components/SchemaForm.svelte +0 -2
  32. package/components/SchemaForm.svelte.d.ts +0 -1
  33. package/components/ScriptBuilder.svelte +77 -66
  34. package/components/ScriptBuilder.svelte.d.ts +2 -4
  35. package/components/ScriptEditor.svelte +69 -142
  36. package/components/ScriptEditor.svelte.d.ts +0 -5
  37. package/components/ScriptPicker.svelte +3 -3
  38. package/components/ScriptPicker.svelte.d.ts +2 -1
  39. package/components/SharedBadge.svelte +5 -13
  40. package/components/SimpleEditor.svelte +147 -0
  41. package/components/SimpleEditor.svelte.d.ts +35 -0
  42. package/components/TestJobLoader.svelte +98 -0
  43. package/components/TestJobLoader.svelte.d.ts +26 -0
  44. package/components/Tooltip.svelte +2 -1
  45. package/components/common/actionRow/ActionRow.svelte +26 -0
  46. package/components/common/actionRow/ActionRow.svelte.d.ts +21 -0
  47. package/components/common/alert/Alert.svelte +53 -0
  48. package/components/common/alert/Alert.svelte.d.ts +20 -0
  49. package/components/common/alert/model.d.ts +1 -0
  50. package/components/common/alert/model.js +1 -0
  51. package/components/common/badge/Badge.svelte +82 -0
  52. package/components/common/badge/Badge.svelte.d.ts +28 -0
  53. package/components/common/badge/model.d.ts +8 -0
  54. package/components/common/badge/model.js +1 -0
  55. package/components/common/button/Button.svelte +107 -0
  56. package/components/common/button/Button.svelte.d.ts +37 -0
  57. package/components/common/button/model.d.ts +6 -0
  58. package/components/common/button/model.js +1 -0
  59. package/components/common/confirmationModal/ConfirmationModal.svelte +55 -0
  60. package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +23 -0
  61. package/components/common/drawer/Drawer.svelte +3 -0
  62. package/components/common/drawer/Drawer.svelte.d.ts +2 -0
  63. package/components/common/index.d.ts +14 -0
  64. package/components/common/index.js +14 -0
  65. package/components/common/tabs/TabContent.svelte +3 -2
  66. package/components/common/tabs/TabContent.svelte.d.ts +1 -0
  67. package/components/common/tabs/Tabs.svelte +8 -1
  68. package/components/common/tabs/Tabs.svelte.d.ts +2 -0
  69. package/components/common/toggleButton/ToggleButton.svelte +20 -0
  70. package/components/common/toggleButton/ToggleButton.svelte.d.ts +19 -0
  71. package/components/common/toggleButton/ToggleButtonGroup.svelte +33 -0
  72. package/components/common/toggleButton/ToggleButtonGroup.svelte.d.ts +24 -0
  73. package/components/flows/FlowEditor.svelte +30 -0
  74. package/components/{FlowEditor.svelte.d.ts → flows/FlowEditor.svelte.d.ts} +1 -8
  75. package/components/flows/common/FlowCard.svelte +9 -0
  76. package/components/flows/common/FlowCard.svelte.d.ts +21 -0
  77. package/components/flows/common/FlowCardHeader.svelte +39 -0
  78. package/components/flows/common/FlowCardHeader.svelte.d.ts +20 -0
  79. package/components/flows/content/CopyFirstStepSchema.svelte +13 -0
  80. package/components/flows/{CopyFirstStepSchema.svelte.d.ts → content/CopyFirstStepSchema.svelte.d.ts} +0 -0
  81. package/components/flows/{DynamicInputHelpBox.svelte → content/DynamicInputHelpBox.svelte} +0 -0
  82. package/components/flows/{DynamicInputHelpBox.svelte.d.ts → content/DynamicInputHelpBox.svelte.d.ts} +0 -0
  83. package/components/flows/content/FlowEditorPanel.svelte +26 -0
  84. package/components/flows/content/FlowEditorPanel.svelte.d.ts +14 -0
  85. package/components/flows/content/FlowFailureModule.svelte +17 -0
  86. package/components/flows/content/FlowFailureModule.svelte.d.ts +14 -0
  87. package/components/flows/content/FlowInput.svelte +22 -0
  88. package/components/flows/{FlowInput.svelte.d.ts → content/FlowInput.svelte.d.ts} +0 -0
  89. package/components/flows/{FlowInputs.svelte → content/FlowInputs.svelte} +24 -13
  90. package/components/flows/{FlowInputs.svelte.d.ts → content/FlowInputs.svelte.d.ts} +0 -0
  91. package/components/flows/content/FlowLoop.svelte +38 -0
  92. package/components/flows/content/FlowLoop.svelte.d.ts +14 -0
  93. package/components/flows/content/FlowModule.svelte +190 -0
  94. package/components/flows/content/FlowModule.svelte.d.ts +29 -0
  95. package/components/flows/content/FlowModuleAdvancedSettings.svelte +64 -0
  96. package/components/flows/content/FlowModuleAdvancedSettings.svelte.d.ts +17 -0
  97. package/components/flows/content/FlowModuleHeader.svelte +68 -0
  98. package/components/flows/{FlowModuleHeader.svelte.d.ts → content/FlowModuleHeader.svelte.d.ts} +2 -3
  99. package/components/flows/content/FlowModuleScript.svelte +21 -0
  100. package/components/flows/content/FlowModuleScript.svelte.d.ts +17 -0
  101. package/components/flows/content/FlowModuleWrapper.svelte +47 -0
  102. package/components/flows/content/FlowModuleWrapper.svelte.d.ts +14 -0
  103. package/components/flows/content/FlowRetries.svelte +80 -0
  104. package/components/flows/content/FlowRetries.svelte.d.ts +14 -0
  105. package/components/flows/content/FlowSchedules.svelte +18 -0
  106. package/components/flows/content/FlowSchedules.svelte.d.ts +14 -0
  107. package/components/flows/content/FlowSettings.svelte +51 -0
  108. package/components/flows/{FlowSettings.svelte.d.ts → content/FlowSettings.svelte.d.ts} +1 -6
  109. package/components/flows/content/RemoveStepConfirmationModal.svelte +32 -0
  110. package/components/flows/content/RemoveStepConfirmationModal.svelte.d.ts +19 -0
  111. package/components/flows/flowState.d.ts +8 -7
  112. package/components/flows/flowState.js +25 -46
  113. package/components/flows/flowStateUtils.d.ts +15 -13
  114. package/components/flows/flowStateUtils.js +80 -72
  115. package/components/flows/flowStore.js +7 -4
  116. package/components/flows/header/FlowEditorHeader.svelte +23 -0
  117. package/components/flows/header/FlowEditorHeader.svelte.d.ts +14 -0
  118. package/components/flows/header/FlowImportExportMenu.svelte +56 -0
  119. package/components/flows/header/FlowImportExportMenu.svelte.d.ts +14 -0
  120. package/components/flows/header/FlowPreviewButtons.svelte +49 -0
  121. package/components/flows/header/FlowPreviewButtons.svelte.d.ts +14 -0
  122. package/components/flows/header/FlowStatus.svelte +36 -0
  123. package/components/flows/header/FlowStatus.svelte.d.ts +14 -0
  124. package/components/flows/map/FlowErrorHandlerItem.svelte +54 -0
  125. package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +14 -0
  126. package/components/flows/map/FlowModuleSchemaItem.svelte +58 -0
  127. package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +27 -0
  128. package/components/flows/map/FlowModuleSchemaMap.svelte +161 -0
  129. package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +20 -0
  130. package/components/flows/pickers/PickHubScript.svelte +4 -3
  131. package/components/flows/pickers/PickHubScript.svelte.d.ts +2 -1
  132. package/components/flows/pickers/PickScript.svelte +4 -12
  133. package/components/flows/pickers/PickScript.svelte.d.ts +1 -1
  134. package/components/flows/propPicker/PropPickerWrapper.svelte +42 -0
  135. package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +31 -0
  136. package/components/flows/scheduleUtils.d.ts +0 -1
  137. package/components/flows/scheduleUtils.js +0 -1
  138. package/components/flows/types.d.ts +9 -0
  139. package/components/flows/types.js +1 -0
  140. package/components/flows/utils.d.ts +1 -1
  141. package/components/flows/utils.js +8 -11
  142. package/components/icons/HatIcon.svelte +19 -0
  143. package/components/icons/HatIcon.svelte.d.ts +16 -0
  144. package/components/landing/FlowGettingStarted.svelte +22 -68
  145. package/components/landing/FlowLandingBox.svelte +1 -1
  146. package/components/landing/RessourceGettingStarted.svelte +7 -37
  147. package/components/landing/ScriptBox.svelte +33 -60
  148. package/components/landing/ScriptGettingStarted.svelte +23 -69
  149. package/components/propertyPicker/ObjectViewer.svelte +16 -7
  150. package/components/propertyPicker/PropPicker.svelte +38 -12
  151. package/components/propertyPicker/WarningMessage.svelte +2 -15
  152. package/components/script_editor/LogPanel.svelte +108 -119
  153. package/components/script_editor/LogPanel.svelte.d.ts +2 -0
  154. package/components/sidebar/SidebarContent.svelte +2 -2
  155. package/editorUtils.d.ts +25 -0
  156. package/editorUtils.js +43 -0
  157. package/gen/models/CompletedJob.d.ts +2 -1
  158. package/gen/models/CompletedJob.js +1 -0
  159. package/gen/models/FlowModule.d.ts +1 -0
  160. package/gen/models/FlowStatus.d.ts +3 -0
  161. package/gen/models/FlowStatusModule.d.ts +1 -1
  162. package/gen/models/FlowValue.d.ts +11 -0
  163. package/gen/models/Preview.d.ts +2 -1
  164. package/gen/models/Preview.js +1 -0
  165. package/gen/models/QueuedJob.d.ts +2 -1
  166. package/gen/models/QueuedJob.js +1 -0
  167. package/gen/models/RawScript.d.ts +2 -1
  168. package/gen/models/RawScript.js +1 -0
  169. package/gen/models/Script.d.ts +9 -2
  170. package/gen/models/Script.js +8 -0
  171. package/gen/services/JobService.d.ts +40 -0
  172. package/gen/services/JobService.js +70 -0
  173. package/gen/services/ScriptService.d.ts +14 -3
  174. package/gen/services/ScriptService.js +13 -0
  175. package/infer.d.ts +1 -1
  176. package/infer.js +6 -1
  177. package/package.json +67 -35
  178. package/script_helpers.d.ts +5 -2
  179. package/script_helpers.js +41 -13
  180. package/stores.d.ts +1 -1
  181. package/utils.d.ts +6 -4
  182. package/utils.js +27 -4
  183. package/components/FlowEditor.svelte +0 -55
  184. package/components/FlowPreview.svelte +0 -107
  185. package/components/FlowPreview.svelte.d.ts +0 -23
  186. package/components/ModuleStep.svelte +0 -131
  187. package/components/ModuleStep.svelte.d.ts +0 -25
  188. package/components/flows/CopyFirstStepSchema.svelte +0 -13
  189. package/components/flows/FlowBox.svelte +0 -16
  190. package/components/flows/FlowBox.svelte.d.ts +0 -23
  191. package/components/flows/FlowBoxHeader.svelte +0 -16
  192. package/components/flows/FlowBoxHeader.svelte.d.ts +0 -21
  193. package/components/flows/FlowInput.svelte +0 -22
  194. package/components/flows/FlowModuleHeader.svelte +0 -109
  195. package/components/flows/FlowSettings.svelte +0 -165
  196. package/components/flows/FlowTimeline.svelte +0 -169
  197. package/components/flows/FlowTimeline.svelte.d.ts +0 -21
  198. package/components/flows/stepOpenedStore.d.ts +0 -1
  199. package/components/flows/stepOpenedStore.js +0 -6
  200. package/components/propertyPicker/OverlayPropertyPicker.svelte +0 -69
  201. package/components/propertyPicker/OverlayPropertyPicker.svelte.d.ts +0 -24
@@ -4,13 +4,13 @@ import { setInputCat as computeInputCat } from '../utils';
4
4
  import { Button, Tooltip } from 'flowbite-svelte';
5
5
  import { createEventDispatcher } from 'svelte';
6
6
  import Icon from 'svelte-awesome';
7
- import Editor from './Editor.svelte';
8
7
  import FieldHeader from './FieldHeader.svelte';
9
8
  import ObjectResourceInput from './ObjectResourceInput.svelte';
10
9
  import ObjectTypeNarrowing from './ObjectTypeNarrowing.svelte';
11
10
  import ResourcePicker from './ResourcePicker.svelte';
12
11
  import StringTypeNarrowing from './StringTypeNarrowing.svelte';
13
12
  import SchemaForm from './SchemaForm.svelte';
13
+ import SimpleEditor from './SimpleEditor.svelte';
14
14
  export let label = '';
15
15
  export let value;
16
16
  export let defaultValue = undefined;
@@ -83,7 +83,7 @@ function fileChanged(e, cb) {
83
83
  }
84
84
  }
85
85
  function validateInput(pattern, v) {
86
- if (required && (v == undefined || v == null)) {
86
+ if (required && (v == undefined || v == null || v === '')) {
87
87
  error = 'This field is required';
88
88
  valid = false;
89
89
  }
@@ -108,8 +108,11 @@ function testRegex(pattern, value) {
108
108
  }
109
109
  }
110
110
  $: {
111
- if (value == undefined) {
111
+ if (value == undefined || value == null) {
112
112
  value = defaultValue;
113
+ if ((defaultValue === undefined || defaultValue === null) && inputCat === 'string') {
114
+ value = '';
115
+ }
113
116
  }
114
117
  }
115
118
  export let inputCat = 'string';
@@ -156,25 +159,19 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
156
159
  </div>
157
160
  {/if}
158
161
  </div>
159
- <span class="text-2xs">Preview:</span>
162
+ <span class="text-2xs">Input preview:</span>
160
163
  {/if}
161
164
 
162
- <div class="grid grid-cols-2">
163
- {#if description || error}
164
- <div class="text-sm italic pb-1">
165
- {description}
166
- </div>
167
- <div class="text-right text-xs {error === '' ? 'text-white' : 'font-bold text-red-600'}">
168
- {error === '' ? '...' : error}
169
- </div>
170
- {:else}
171
- <div class="mt-1" />
172
- {/if}
173
- </div>
165
+ {#if description}
166
+ <div class="text-sm italic pb-1">
167
+ {description}
168
+ </div>
169
+ {/if}
174
170
 
175
171
  <div class="flex space-x-1">
176
172
  {#if inputCat == 'number'}
177
173
  <input
174
+ on:focus
178
175
  {disabled}
179
176
  type="number"
180
177
  class={valid
@@ -199,7 +196,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
199
196
  {:else if inputCat == 'list'}
200
197
  <div>
201
198
  <div>
202
- {#each value ?? [] as v}
199
+ {#each value ?? [] as v, i}
203
200
  <div class="flex flex-row max-w-md mt-1">
204
201
  {#if itemsType?.type == 'number'}
205
202
  <input type="number" bind:value={v} />
@@ -207,7 +204,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
207
204
  <input
208
205
  type="file"
209
206
  class="my-6"
210
- on:change={(x) => fileChanged(x, (val) => (v = val))}
207
+ on:change={(x) => fileChanged(x, (val) => (value[i] = val))}
211
208
  multiple={false}
212
209
  />
213
210
  {:else}
@@ -275,7 +272,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
275
272
  <input class="inline-block" type="datetime-local" bind:value />
276
273
  {:else if inputCat == 'sql'}
277
274
  <div class="border rounded mb-4 w-full border-gray-700">
278
- <Editor
275
+ <SimpleEditor
279
276
  on:focus={() => dispatch('focus')}
280
277
  on:blur={() => dispatch('blur')}
281
278
  bind:this={editor}
@@ -319,7 +316,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
319
316
  />
320
317
  {/if}
321
318
  {#if !required && inputCat != 'resource-object'}
322
- <Tooltip placement="bottom" content="Reset to default value">
319
+ <!-- <Tooltip placement="bottom" content="Reset to default value">
323
320
  <Button
324
321
  on:click={() => (value = undefined)}
325
322
  {disabled}
@@ -329,9 +326,12 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
329
326
  >
330
327
  <Icon data={faArrowRotateLeft} />
331
328
  </Button>
332
- </Tooltip>
329
+ </Tooltip> -->
333
330
  {/if}
334
331
  <slot name="actions" />
335
332
  </div>
333
+ <div class="text-right text-xs {error === '' ? 'text-white' : 'font-bold text-red-600'}">
334
+ {error === '' ? '...' : error}
335
+ </div>
336
336
  </div>
337
337
  </div>
@@ -1,7 +1,7 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  import { type InputCat } from '../utils';
3
- import Editor from './Editor.svelte';
4
3
  import type { SchemaProperty } from '../common';
4
+ import SimpleEditor from './SimpleEditor.svelte';
5
5
  declare const __propDef: {
6
6
  props: {
7
7
  label?: string | undefined;
@@ -27,13 +27,13 @@ declare const __propDef: {
27
27
  properties?: {
28
28
  [name: string]: SchemaProperty;
29
29
  } | undefined;
30
- editor?: Editor | undefined;
30
+ editor?: SimpleEditor | undefined;
31
31
  evalValueToRaw?: (() => void) | undefined;
32
32
  inputCat?: InputCat | undefined;
33
33
  };
34
34
  events: {
35
- input: CustomEvent<any>;
36
35
  focus: CustomEvent<any>;
36
+ input: CustomEvent<any>;
37
37
  blur: CustomEvent<any>;
38
38
  } & {
39
39
  [evt: string]: CustomEvent<any>;
@@ -47,74 +47,80 @@ function inferResultKind(result) {
47
47
  }
48
48
  </script>
49
49
 
50
- {#if result}
51
- {#if typeof result == 'object' && Object.keys(result).length > 0}<div>
52
- The result keys are: <b>{truncate(Object.keys(result).join(', '), 50)}</b>
53
- </div>
54
- {/if}
55
- {#if resultKind == 'table-col'}
56
- <div class="grid grid-flow-col-dense border border-gray-200 rounded-md ">
57
- {#each Object.keys(result) as col}
58
- <div class="flex flex-col max-h-40 min-w-full overflow-auto">
59
- <div class="px-12 text-left uppercase border-b bg-gray-50 overflow-hidden rounded-t-md ">
60
- {col}
50
+ <div>
51
+ {#if result}
52
+ {#if typeof result == 'object' && Object.keys(result).length > 0}
53
+ <div>
54
+ The result keys are: <b>{truncate(Object.keys(result).join(', '), 50)}</b>
55
+ </div>{/if}{#if resultKind == 'table-col'}
56
+ <div class="grid grid-flow-col-dense border border-gray-200 rounded-md ">
57
+ {#each Object.keys(result) as col}
58
+ <div class="flex flex-col max-h-40 min-w-full overflow-auto">
59
+ <div
60
+ class="px-12 text-left uppercase border-b bg-gray-50 overflow-hidden rounded-t-md "
61
+ >
62
+ {col}
63
+ </div>
64
+ {#if Array.isArray(result[col])}
65
+ {#each result[col] as item}
66
+ <div class="px-12 text-left whitespace-nowrap">
67
+ {typeof item === 'string' ? item : JSON.stringify(item)}
68
+ </div>
69
+ {/each}
70
+ {/if}
61
71
  </div>
62
- {#if Array.isArray(result[col])}
63
- {#each result[col] as item}
64
- <div class="px-12 text-left whitespace-nowrap">
65
- {typeof item === 'string' ? item : JSON.stringify(item)}
66
- </div>
72
+ {/each}
73
+ </div>
74
+ {:else if resultKind == 'table-row'}<div
75
+ class="grid grid-flow-col-dense border border-gray-200 rounded-md "
76
+ >
77
+ <TableCustom>
78
+ <tbody slot="body">
79
+ {#each asListOfList(result) as row}
80
+ <tr>
81
+ {#each row as v}
82
+ <td>{truncate(JSON.stringify(v), 200) ?? ''}</td>
83
+ {/each}
84
+ </tr>
67
85
  {/each}
68
- {/if}
69
- </div>
70
- {/each}
71
- </div>
72
- {:else if resultKind == 'table-row'}<div
73
- class="grid grid-flow-col-dense border border-gray-200 rounded-md "
74
- >
75
- <TableCustom>
76
- <tbody slot="body">
77
- {#each asListOfList(result) as row}
78
- <tr>
79
- {#each row as v}
80
- <td>{truncate(JSON.stringify(v), 200) ?? ''}</td>
81
- {/each}
82
- </tr>
83
- {/each}
84
- </tbody>
85
- </TableCustom>
86
- </div>
87
- {:else if resultKind == 'png'}
88
- <div class="h-full">
89
- Result is an image: <img
90
- alt="png rendered"
91
- class="w-auto h-full"
92
- src="data:image/png;base64,{result.png}"
86
+ </tbody>
87
+ </TableCustom>
88
+ </div>
89
+ {:else if resultKind == 'png'}
90
+ <div class="h-full">
91
+ Result is an image: <img
92
+ alt="png rendered"
93
+ class="w-auto h-full"
94
+ src="data:image/png;base64,{result.png}"
95
+ />
96
+ </div>
97
+ {:else if resultKind == 'jpeg'}
98
+ <div class="h-full">
99
+ Result is an image: <img
100
+ alt="jpeg rendered"
101
+ class="w-auto h-full"
102
+ src="data:image/jpeg;base64,{result.jpeg}"
103
+ />
104
+ </div>
105
+ {:else if resultKind == 'gif'}
106
+ <div class="h-full">
107
+ Result is an image: <img
108
+ alt="gif rendered"
109
+ class="w-auto h-full"
110
+ src="data:image/gif;base64,{result.gif}"
111
+ />
112
+ </div>
113
+ {:else if resultKind == 'file'}
114
+ <div>
115
+ Result is a file: <a
116
+ download="windmill.file"
117
+ href="data:application/octet-stream;base64,{result.file}">Download</a
118
+ >
119
+ </div>
120
+ {:else}<Highlight
121
+ language={json}
122
+ code={JSON.stringify(result, null, 4).replace(/\\n/g, '\n')}
93
123
  />
94
- </div>
95
- {:else if resultKind == 'jpeg'}
96
- <div class="h-full">
97
- Result is an image: <img
98
- alt="jpeg rendered"
99
- class="w-auto h-full"
100
- src="data:image/jpeg;base64,{result.jpeg}"
101
- />
102
- </div>
103
- {:else if resultKind == 'gif'}
104
- <div class="h-full">
105
- Result is an image: <img
106
- alt="gif rendered"
107
- class="w-auto h-full"
108
- src="data:image/gif;base64,{result.gif}"
109
- />
110
- </div>
111
- {:else if resultKind == 'file'}
112
- <div>
113
- Result is a file: <a
114
- download="windmill.file"
115
- href="data:application/octet-stream;base64,{result.file}">Download</a
116
- >
117
- </div>
118
- {:else}<Highlight language={json} code={JSON.stringify(result, null, 4).replace(/\\n/g, '\n')} />
124
+ {/if}
119
125
  {/if}
120
- {/if}
126
+ </div>