windmill-components 1.339.2 → 1.352.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 (231) hide show
  1. package/package/assets/app.css +0 -12
  2. package/package/ata/index.js +1 -0
  3. package/package/autosize.js +1 -1
  4. package/package/common.d.ts +6 -2
  5. package/package/common.js +2 -1
  6. package/package/components/AppConnectDrawer.svelte +1 -1
  7. package/package/components/AppConnectInner.svelte +9 -15
  8. package/package/components/ArgEnum.svelte +4 -1
  9. package/package/components/ArgEnum.svelte.d.ts +3 -1
  10. package/package/components/ArgInput.svelte +184 -141
  11. package/package/components/ArgInput.svelte.d.ts +7 -7
  12. package/package/components/ArrayTypeNarrowing.svelte +29 -27
  13. package/package/components/CenteredPage.svelte +2 -2
  14. package/package/components/DefaultTagsInner.svelte +1 -1
  15. package/package/components/Dev.svelte +2 -1
  16. package/package/components/DiffDrawer.svelte +1 -2
  17. package/package/components/DisplayResult.svelte +293 -233
  18. package/package/components/DurationMs.svelte +11 -3
  19. package/package/components/DurationMs.svelte.d.ts +2 -0
  20. package/package/components/EditableSchemaForm.svelte +447 -103
  21. package/package/components/EditableSchemaForm.svelte.d.ts +16 -6
  22. package/package/components/Editor.svelte +3 -1
  23. package/package/components/EditorBar.svelte +2 -2
  24. package/package/components/FlowBuilder.svelte +14 -6
  25. package/package/components/FlowGraphViewer.svelte +1 -1
  26. package/package/components/FlowGraphViewerStep.svelte +37 -9
  27. package/package/components/FlowGraphViewerStep.svelte.d.ts +2 -7
  28. package/package/components/FlowJobResult.svelte +1 -3
  29. package/package/components/FlowMetadata.svelte +1 -1
  30. package/package/components/FlowPreviewContent.svelte +5 -3
  31. package/package/components/FlowStatusViewer.svelte +4 -0
  32. package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
  33. package/package/components/FlowStatusViewerInner.svelte +50 -17
  34. package/package/components/FlowStatusViewerInner.svelte.d.ts +3 -0
  35. package/package/components/FlowTimeline.svelte +13 -0
  36. package/package/components/FlowTimeline.svelte.d.ts +2 -0
  37. package/package/components/FlowViewer.svelte +0 -5
  38. package/package/components/FolderEditor.svelte +25 -0
  39. package/package/components/FolderEditor.svelte.d.ts +2 -0
  40. package/package/components/GroupEditor.svelte +36 -91
  41. package/package/components/GroupInfo.svelte +1 -1
  42. package/package/components/InputTransformForm.svelte +16 -1
  43. package/package/components/InputTransformForm.svelte.d.ts +2 -0
  44. package/package/components/InputTransformSchemaForm.svelte +6 -0
  45. package/package/components/InputTransformSchemaForm.svelte.d.ts +2 -0
  46. package/package/components/InstanceSettings.svelte +36 -3
  47. package/package/components/InstanceSettings.svelte.d.ts +2 -0
  48. package/package/components/JobStatus.svelte +2 -2
  49. package/package/components/LightweightArgInput.svelte +66 -14
  50. package/package/components/LightweightArgInput.svelte.d.ts +3 -2
  51. package/package/components/LightweightSchemaForm.svelte +24 -15
  52. package/package/components/ModulePreviewForm.svelte +1 -0
  53. package/package/components/NumberTypeNarrowing.svelte +71 -44
  54. package/package/components/ObjectResourceInput.svelte +2 -0
  55. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  56. package/package/components/ObjectTypeNarrowing.svelte +0 -1
  57. package/package/components/ParqetCsvTableRenderer.svelte +181 -0
  58. package/package/components/ParqetCsvTableRenderer.svelte.d.ts +21 -0
  59. package/package/components/Path.svelte +2 -2
  60. package/package/components/PersistentScriptDrawer.svelte +6 -3
  61. package/package/components/Range.svelte +88 -286
  62. package/package/components/Range.svelte.d.ts +9 -23
  63. package/package/components/ResourceEditor.svelte +138 -141
  64. package/package/components/ResourceEditor.svelte.d.ts +9 -2
  65. package/package/components/ResourceEditorDrawer.svelte +45 -0
  66. package/package/components/ResourceEditorDrawer.svelte.d.ts +21 -0
  67. package/package/components/ResourcePicker.svelte +5 -2
  68. package/package/components/ResourceTypePicker.svelte +88 -36
  69. package/package/components/RunChart.svelte +55 -5
  70. package/package/components/RunChart.svelte.d.ts +1 -0
  71. package/package/components/RunForm.svelte +1 -1
  72. package/package/components/S3FilePicker.svelte +20 -8
  73. package/package/components/S3FilePicker.svelte.d.ts +2 -0
  74. package/package/components/ScheduleEditorInner.svelte +40 -37
  75. package/package/components/SchemaForm.svelte +192 -103
  76. package/package/components/SchemaForm.svelte.d.ts +16 -2
  77. package/package/components/ScriptBuilder.svelte +13 -8
  78. package/package/components/ScriptSchedules.svelte +11 -8
  79. package/package/components/ScriptSchema.svelte +3 -21
  80. package/package/components/ScriptVersionHistory.svelte +1 -1
  81. package/package/components/StringTypeNarrowing.svelte +217 -174
  82. package/package/components/StringTypeNarrowing.svelte.d.ts +5 -1
  83. package/package/components/Toggle.svelte +6 -3
  84. package/package/components/Toggle.svelte.d.ts +1 -0
  85. package/package/components/UserSettings.svelte +24 -1
  86. package/package/components/WorkspaceGroup.svelte +11 -13
  87. package/package/components/apps/components/buttons/AppButton.svelte +2 -0
  88. package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
  89. package/package/components/apps/components/display/AppFlowStatusComponent.svelte +13 -70
  90. package/package/components/apps/components/display/AppFlowStatusComponent.svelte.d.ts +1 -9
  91. package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +21 -8
  92. package/package/components/apps/components/display/AppJobIdFlowStatus.svelte.d.ts +1 -3
  93. package/package/components/apps/components/display/AppJobIdLogComponent.svelte +19 -7
  94. package/package/components/apps/components/display/AppJobIdLogComponent.svelte.d.ts +1 -3
  95. package/package/components/apps/components/display/AppLogsComponent.svelte +13 -70
  96. package/package/components/apps/components/display/AppLogsComponent.svelte.d.ts +1 -9
  97. package/package/components/apps/components/display/charts/AppAgCharts.svelte +25 -15
  98. package/package/components/apps/components/display/table/AppAggridTableActions.svelte +2 -0
  99. package/package/components/apps/components/display/table/SyncColumnDefs.svelte +1 -1
  100. package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -1
  101. package/package/components/apps/components/helpers/RunnableComponent.svelte +18 -8
  102. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -0
  103. package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -0
  104. package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
  105. package/package/components/apps/components/helpers/eval.js +1 -36
  106. package/package/components/apps/components/inputs/AppFileInput.svelte +3 -1
  107. package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
  108. package/package/components/apps/components/inputs/AppS3FileInput.svelte +3 -1
  109. package/package/components/apps/components/inputs/AppS3FileInput.svelte.d.ts +1 -0
  110. package/package/components/apps/components/layout/AppConditionalWrapper.svelte +3 -1
  111. package/package/components/apps/components/layout/AppConditionalWrapper.svelte.d.ts +1 -0
  112. package/package/components/apps/components/layout/AppStepper.svelte +5 -1
  113. package/package/components/apps/components/layout/AppStepper.svelte.d.ts +2 -0
  114. package/package/components/apps/components/layout/AppTabs.svelte +3 -1
  115. package/package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -0
  116. package/package/components/apps/editor/AppEditorHeader.svelte +6 -7
  117. package/package/components/apps/editor/SettingsPanel.svelte +13 -3
  118. package/package/components/apps/editor/component/Component.svelte +8 -16
  119. package/package/components/apps/editor/component/components.d.ts +11 -2
  120. package/package/components/apps/editor/component/components.js +2 -1
  121. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +1 -1
  122. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +5 -34
  123. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +3 -41
  124. package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte +33 -0
  125. package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte.d.ts +19 -0
  126. package/package/components/apps/editor/settingsPanel/EventHandlers.svelte +103 -0
  127. package/package/components/apps/editor/settingsPanel/EventHandlers.svelte.d.ts +18 -0
  128. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +21 -45
  129. package/package/components/apps/editor/settingsPanel/GridTab.svelte +3 -23
  130. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +5 -1
  131. package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +0 -2
  132. package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +0 -1
  133. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +7 -1
  134. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +7 -14
  135. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +0 -1
  136. package/package/components/common/button/ButtonDropdown.svelte +1 -0
  137. package/package/components/common/drawer/Disposable.svelte +3 -2
  138. package/package/components/common/drawer/Disposable.svelte.d.ts +1 -0
  139. package/package/components/common/drawer/Drawer.svelte +12 -2
  140. package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
  141. package/package/components/common/fileDownload/FileDownload.svelte +4 -2
  142. package/package/components/common/fileUpload/FileUpload.svelte +4 -3
  143. package/package/components/common/modal/Modal.svelte +4 -1
  144. package/package/components/common/modal/Modal.svelte.d.ts +1 -0
  145. package/package/components/common/popup/Popup.svelte +1 -1
  146. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +4 -1
  147. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
  148. package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte +79 -0
  149. package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte.d.ts +18 -0
  150. package/package/components/flows/content/FlowEditorPanel.svelte +16 -2
  151. package/package/components/flows/content/FlowInput.svelte +63 -53
  152. package/package/components/flows/content/FlowModuleComponent.svelte +26 -3
  153. package/package/components/flows/content/FlowModuleScript.svelte +40 -1
  154. package/package/components/flows/content/FlowModuleScript.svelte.d.ts +2 -0
  155. package/package/components/flows/content/FlowModuleSuspend.svelte +99 -59
  156. package/package/components/flows/content/FlowModuleWrapper.svelte +16 -1
  157. package/package/components/flows/content/FlowSchedules.svelte +11 -8
  158. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -4
  159. package/package/components/flows/flowStateUtils.js +4 -1
  160. package/package/components/flows/map/FlowModuleSchemaItem.svelte +16 -1
  161. package/package/components/flows/map/FlowModuleSchemaMap.svelte +6 -1
  162. package/package/components/flows/types.d.ts +4 -0
  163. package/package/components/flows/utils.d.ts +5 -1
  164. package/package/components/flows/utils.js +36 -0
  165. package/package/components/graph/FlowGraph.svelte +5 -2
  166. package/package/components/graph/FlowGraph.svelte.d.ts +2 -0
  167. package/package/components/graph/svelvet/container/models/index.d.ts +0 -5
  168. package/package/components/graph/svelvet/container/models/index.js +1 -1
  169. package/package/components/graph/svelvet/container/views/Svelvet.svelte +2 -5
  170. package/package/components/graph/util.d.ts +1 -37
  171. package/package/components/graph/util.js +0 -34
  172. package/package/components/instanceSettings.js +2 -1
  173. package/package/components/jobs/JobPreview.svelte +1 -1
  174. package/package/components/multiselect/MultiSelect.svelte +4 -3
  175. package/package/components/multiselect/MultiSelect.svelte.d.ts +1 -0
  176. package/package/components/multiselect/MultiSelectWrapper.svelte +89 -0
  177. package/package/components/multiselect/MultiSelectWrapper.svelte.d.ts +20 -0
  178. package/package/components/propertyPicker/ObjectViewer.svelte +6 -2
  179. package/package/components/runs/JobPreview.svelte +5 -1
  180. package/package/components/runs/RunRow.svelte +22 -3
  181. package/package/components/runs/RunRow.svelte.d.ts +2 -1
  182. package/package/components/runs/RunsTable.svelte +22 -9
  183. package/package/components/runs/RunsTable.svelte.d.ts +2 -1
  184. package/package/components/schema/AddProperty.svelte +149 -0
  185. package/package/components/schema/AddProperty.svelte.d.ts +23 -0
  186. package/package/components/schema/AddPropertyForm.svelte +33 -0
  187. package/package/components/schema/AddPropertyForm.svelte.d.ts +16 -0
  188. package/package/components/schema/EditableSchemaDrawer.svelte +198 -0
  189. package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +21 -0
  190. package/package/components/schema/EditableSchemaWrapper.svelte +31 -0
  191. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +22 -0
  192. package/package/components/schema/FlowPropertyEditor.svelte +393 -0
  193. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +47 -0
  194. package/package/components/schema/PropertyEditor.svelte +185 -0
  195. package/package/components/schema/PropertyEditor.svelte.d.ts +46 -0
  196. package/package/components/schema/SchemaFormDND.svelte +75 -0
  197. package/package/components/schema/SchemaFormDND.svelte.d.ts +28 -0
  198. package/package/components/table/AutoDataTable.svelte +90 -104
  199. package/package/components/table/Cell.svelte +4 -1
  200. package/package/components/table/Cell.svelte.d.ts +1 -0
  201. package/package/components/table/DownloadCsv.svelte +30 -0
  202. package/package/components/table/DownloadCsv.svelte.d.ts +17 -0
  203. package/package/components/table/tableUtils.d.ts +8 -0
  204. package/package/components/table/tableUtils.js +37 -0
  205. package/package/consts.js +3 -1
  206. package/package/deno_fetch.d.ts.txt +6 -0
  207. package/package/gen/core/OpenAPI.js +1 -1
  208. package/package/gen/schemas.gen.d.ts +76 -0
  209. package/package/gen/schemas.gen.js +76 -0
  210. package/package/gen/services.gen.d.ts +100 -5
  211. package/package/gen/services.gen.js +216 -16
  212. package/package/gen/types.gen.d.ts +378 -5
  213. package/package/inferArgSig.d.ts +10 -0
  214. package/package/inferArgSig.js +59 -2
  215. package/package/scripts.d.ts +2 -0
  216. package/package/scripts.js +6 -3
  217. package/package/utils.d.ts +4 -3
  218. package/package/utils.js +9 -4
  219. package/package/workspace_settings.d.ts +15 -0
  220. package/package/workspace_settings.js +81 -0
  221. package/package.json +16 -7
  222. package/package/components/ParqetTableRenderer.svelte +0 -117
  223. package/package/components/ParqetTableRenderer.svelte.d.ts +0 -18
  224. package/package/components/PropertyRow.svelte +0 -88
  225. package/package/components/PropertyRow.svelte.d.ts +0 -23
  226. package/package/components/SchemaEditor.svelte +0 -346
  227. package/package/components/SchemaEditor.svelte.d.ts +0 -25
  228. package/package/components/SchemaModal.svelte +0 -443
  229. package/package/components/SchemaModal.svelte.d.ts +0 -33
  230. package/package/components/apps/editor/settingsPanel/Recompute.svelte +0 -55
  231. package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +0 -20
@@ -1,41 +1,42 @@
1
1
  <script>import { VariableService } from '../gen';
2
2
  import { workspaceStore } from '../stores';
3
- import ArgInput from './ArgInput.svelte';
4
3
  import { Button } from './common';
5
4
  import ItemPicker from './ItemPicker.svelte';
6
5
  import VariableEditor from './VariableEditor.svelte';
7
- import { getResourceTypes } from './resourceTypesStore';
8
- import { Plus } from 'lucide-svelte';
9
- import { flip } from 'svelte/animate';
6
+ import { Pen, Plus, X } from 'lucide-svelte';
7
+ import { Pane, Splitpanes } from 'svelte-splitpanes';
8
+ import { twMerge } from 'tailwind-merge';
9
+ import FlowPropertyEditor from './schema/FlowPropertyEditor.svelte';
10
+ import PropertyEditor from './schema/PropertyEditor.svelte';
11
+ import SimpleEditor from './SimpleEditor.svelte';
12
+ import { createEventDispatcher } from 'svelte';
13
+ import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
14
+ import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
15
+ import Label from './Label.svelte';
16
+ import { sendUserToast } from '../toast';
17
+ import Toggle from './Toggle.svelte';
18
+ import { emptyString } from '../utils';
19
+ import Popup from './common/popup/Popup.svelte';
20
+ import SchemaFormDnd from './schema/SchemaFormDND.svelte';
21
+ import { deepEqual } from 'fast-equals';
10
22
  export let schema;
11
23
  export let schemaSkippedValues = [];
12
- export let schemaFieldTooltip = {};
13
24
  export let args = {};
14
- export let autofocus = false;
15
25
  export let shouldHideNoInputs = false;
16
- export let compact = false;
17
26
  export let noVariablePicker = false;
18
27
  export let flexWrap = false;
19
- export let noDelete = false;
20
- export let prettifyHeader = false;
21
- export let disablePortal = false;
22
- const moveAnimationDuration = 1000;
23
- function changePosition(i, up) {
24
- const entries = Object.entries(schema.properties);
25
- var element = entries[i];
26
- entries.splice(i, 1);
27
- entries.splice(up ? i - 1 : i + 1, 0, element);
28
- schema.properties = Object.fromEntries(entries);
29
- syncOrders();
30
- }
31
- function syncOrders() {
32
- if (schema) {
33
- schema.order = Object.keys(schema.properties ?? {});
34
- }
35
- }
28
+ export let uiOnly = false;
29
+ export let isFlowInput = false;
30
+ export let noPreview = false;
31
+ export let offset = 48 + 31 + 31 + 16 + 1;
32
+ export let jsonEnabled = true;
33
+ export let isAppInput = false;
34
+ export let lightweightMode = false;
35
+ export let displayWebhookWarning = false;
36
+ export let dndType = undefined;
37
+ const dispatch = createEventDispatcher();
36
38
  let clazz = '';
37
39
  export { clazz as class };
38
- let inputCheck = {};
39
40
  $: if (args == undefined || typeof args !== 'object') {
40
41
  args = {};
41
42
  }
@@ -43,16 +44,8 @@ export function setDefaults() {
43
44
  const nargs = {};
44
45
  Object.keys(schema?.properties ?? {}).forEach((key) => {
45
46
  if (schema?.properties[key].default != undefined && args[key] == undefined) {
46
- nargs[key] = schema?.properties[key].default;
47
- }
48
- });
49
- args = nargs;
50
- }
51
- function removeExtraKey() {
52
- const nargs = {};
53
- Object.keys(args ?? {}).forEach((key) => {
54
- if (keys.includes(key)) {
55
- nargs[key] = args[key];
47
+ let value = schema?.properties[key].default;
48
+ nargs[key] = value === 'object' ? JSON.parse(JSON.stringify(value)) : value;
56
49
  }
57
50
  });
58
51
  args = nargs;
@@ -60,85 +53,436 @@ function removeExtraKey() {
60
53
  let pickForField;
61
54
  let itemPicker = undefined;
62
55
  let variableEditor = undefined;
63
- let keys = [];
64
- $: {
65
- let lkeys = Object.keys(schema?.properties ?? {});
66
- if (schema?.properties && JSON.stringify(lkeys) != JSON.stringify(keys)) {
67
- keys = lkeys;
68
- if (!noDelete) {
69
- removeExtraKey();
56
+ let keys = Array.isArray(schema?.order)
57
+ ? [...schema.order]
58
+ : Object.keys(schema?.properties ?? {}) ?? Object.keys(schema?.properties ?? {});
59
+ $: schema && onSchemaChange();
60
+ function alignOrderWithProperties(schema) {
61
+ if (schema.order == undefined && !Array.isArray(schema.order)) {
62
+ schema.order = [];
63
+ }
64
+ let norder = [...schema.order];
65
+ let properties = Object.keys(schema?.properties ?? {});
66
+ let index = 0;
67
+ let hasChanged = false;
68
+ for (let k of properties) {
69
+ if (schema.properties[k].type === 'object' && schema.properties[k].properties) {
70
+ hasChanged = hasChanged || alignOrderWithProperties(schema.properties[k]);
71
+ }
72
+ if (!norder.includes(k)) {
73
+ console.log('adding', k, index);
74
+ norder = [...norder.slice(0, index), k, ...norder.slice(index)];
75
+ }
76
+ index += 1;
77
+ }
78
+ norder = norder.filter((x) => properties.includes(x));
79
+ if (!deepEqual(schema.order, norder)) {
80
+ schema.order = norder;
81
+ return true;
82
+ }
83
+ return hasChanged;
84
+ }
85
+ function onSchemaChange() {
86
+ dispatch('change', schema);
87
+ if (alignOrderWithProperties(schema)) {
88
+ schema = schema;
89
+ }
90
+ let lkeys = schema?.order ?? Object.keys(schema?.properties ?? {});
91
+ if (schema?.properties && !deepEqual(lkeys, keys)) {
92
+ keys = [...lkeys];
93
+ schema = schema;
94
+ if (opened == undefined) {
95
+ opened = keys[0];
70
96
  }
71
97
  }
72
98
  }
73
- let resourceTypes = undefined;
74
- async function loadResourceTypes() {
75
- resourceTypes = await getResourceTypes();
99
+ let renderCount = 0;
100
+ let opened = keys[0];
101
+ let selected = '';
102
+ export function openField(key) {
103
+ opened = key;
104
+ }
105
+ export function deleteField(key) {
106
+ delete args[key];
107
+ delete schema.properties[key];
108
+ if (schema.required?.includes(key)) {
109
+ schema.required = schema.required?.filter((x) => x !== key);
110
+ }
111
+ if (schema.order) {
112
+ schema.order = schema.order.filter((x) => x !== key);
113
+ }
114
+ }
115
+ $: if (opened && schema.properties[opened]) {
116
+ selected = opened
117
+ ? schema.properties[opened].type !== 'object'
118
+ ? schema.properties[opened].type
119
+ : schema.properties[opened].format === 'resource-s3_object'
120
+ ? 'S3'
121
+ : schema.properties[opened].oneOf && schema.properties[opened].oneOf.length >= 2
122
+ ? 'oneOf'
123
+ : 'object'
124
+ : '';
76
125
  }
77
- reorder();
78
- loadResourceTypes();
79
- function reorder() {
80
- if (schema?.order && Array.isArray(schema.order)) {
81
- const n = {};
82
- schema.order.forEach((x) => {
83
- if (schema.properties && schema.properties[x] != undefined) {
84
- n[x] = schema.properties[x];
126
+ function renameProperty(oldName, key) {
127
+ const el = document.getElementById(key);
128
+ const newName = el.value;
129
+ if (oldName === newName) {
130
+ return;
131
+ }
132
+ if (Object.keys(schema.properties ?? {}).includes(newName)) {
133
+ sendUserToast('There is already an argument with this name', true);
134
+ // clear the input
135
+ el.value = oldName;
136
+ }
137
+ else {
138
+ args[newName] = args[oldName];
139
+ delete args[oldName];
140
+ schema.properties[newName] = schema.properties[oldName];
141
+ delete schema.properties[oldName];
142
+ if (schema.required?.includes(oldName)) {
143
+ schema.required = schema.required?.map((x) => (x === oldName ? newName : x));
144
+ }
145
+ // Replace the old name with the new name in the order array
146
+ if (schema.order) {
147
+ const index = schema.order.indexOf(oldName);
148
+ if (index !== -1) {
149
+ schema.order[index] = newName;
85
150
  }
86
- });
87
- Object.keys(schema.properties ?? {})
88
- .filter((x) => !schema.order?.includes(x))
89
- .forEach((x) => {
90
- n[x] = schema.properties[x];
91
- });
92
- schema.properties = n;
151
+ }
152
+ opened = newName;
153
+ schema = schema;
154
+ sendUserToast('Argument renamed successfully');
93
155
  }
94
156
  }
157
+ let jsonView = false;
158
+ let schemaString = JSON.stringify(schema, null, '\t');
159
+ let error = undefined;
160
+ let editor = undefined;
95
161
  </script>
96
162
 
97
- <div class="w-full {clazz} {flexWrap ? 'flex flex-row flex-wrap gap-x-6 ' : ''}">
98
- {#if keys.length > 0}
99
- {#each keys as argName, i (argName)}
100
- <div animate:flip={{ duration: moveAnimationDuration }} class={'pb-6'}>
101
- {#if !schemaSkippedValues.includes(argName) && Object.keys(schema?.properties ?? {}).includes(argName)}
102
- {#if typeof args == 'object' && schema?.properties[argName]}
103
- <ArgInput
104
- {disablePortal}
105
- {resourceTypes}
106
- {prettifyHeader}
107
- autofocus={i == 0 && autofocus}
108
- label={argName}
109
- bind:description={schema.properties[argName].description}
110
- bind:value={args[argName]}
111
- type={schema.properties[argName].type}
112
- required={schema.required?.includes(argName) ?? false}
113
- bind:pattern={schema.properties[argName].pattern}
114
- bind:valid={inputCheck[argName]}
115
- defaultValue={schema.properties[argName].default}
116
- bind:enum_={schema.properties[argName].enum}
117
- bind:format={schema.properties[argName].format}
118
- bind:contentEncoding={schema.properties[argName].contentEncoding}
119
- bind:customErrorMessage={schema.properties[argName].customErrorMessage}
120
- properties={schema.properties[argName].properties}
121
- nestedRequired={schema.properties[argName].required}
122
- bind:itemsType={schema.properties[argName].items}
123
- editableSchema={{ i, total: keys.length }}
124
- on:changePosition={(event) => changePosition(event.detail.i, event.detail.up)}
125
- {compact}
126
- {variableEditor}
127
- {itemPicker}
128
- bind:pickForField
129
- bind:extra={schema.properties[argName]}
130
- simpleTooltip={schemaFieldTooltip[argName]}
131
- nullable={schema.properties[argName].nullable}
132
- bind:title={schema.properties[argName].title}
133
- bind:placeholder={schema.properties[argName].placeholder}
163
+ <div style={offset ? `height: calc(100vh - ${offset}px);` : 'h-full'}>
164
+ <Splitpanes>
165
+ {#if !noPreview}
166
+ <Pane size={50} minSize={20}>
167
+ <div class="p-4">
168
+ {#key renderCount}
169
+ <SchemaFormDnd
170
+ {schema}
171
+ {dndType}
172
+ bind:args
173
+ on:click={(e) => {
174
+ opened = e.detail
175
+ }}
176
+ on:reorder={(e) => {
177
+ schema.order = e.detail
178
+ }}
179
+ on:change={() => {
180
+ schema = schema
181
+ dispatch('change', schema)
182
+ }}
183
+ {lightweightMode}
184
+ prettifyHeader={isAppInput}
185
+ />
186
+ {/key}
187
+ </div>
188
+ </Pane>
189
+ {/if}
190
+ <Pane size={noPreview ? 100 : 50} minSize={noPreview ? 100 : 20}>
191
+ {#if jsonEnabled}
192
+ <div class="w-full p-2 flex justify-end">
193
+ <Toggle
194
+ bind:checked={jsonView}
195
+ label="JSON View"
196
+ size="xs"
197
+ options={{
198
+ right: 'JSON Editor',
199
+ rightTooltip:
200
+ 'Arguments can be edited either using the wizard, or by editing their JSON Schema.'
201
+ }}
202
+ lightMode
203
+ on:change={() => {
204
+ schemaString = JSON.stringify(schema, null, '\t')
205
+ editor?.setCode(schemaString)
206
+ }}
207
+ />
208
+ </div>
209
+ {/if}
210
+
211
+ {#if !jsonView}
212
+ <div class="w-full {clazz} {flexWrap ? 'flex flex-row flex-wrap gap-x-6 ' : ''} divide-y">
213
+ {#if keys.length > 0}
214
+ {#each keys as argName, i (argName)}
215
+ <div>
216
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
217
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
218
+ <div
219
+ class={twMerge(
220
+ 'w-full flex bg-gray-50 dark:bg-gray-800 px-4 py-1 justify-between items-center hover:bg-gray-100 cursor-pointer',
221
+ opened === argName ? 'bg-gray-100 hover:bg-gray-200' : ''
222
+ )}
223
+ on:click={() => {
224
+ if (opened === argName) {
225
+ opened = undefined
226
+ } else {
227
+ opened = argName
228
+ }
229
+ }}
230
+ >
231
+ <div class="flex flex-row gap-2">
232
+ {argName}
233
+ {#if !uiOnly}
234
+ <Popup
235
+ floatingConfig={{ strategy: 'absolute', placement: 'bottom-end' }}
236
+ containerClasses="border rounded-lg shadow-lg p-4 bg-surface"
237
+ let:close
238
+ >
239
+ <svelte:fragment slot="button">
240
+ <Button
241
+ color="light"
242
+ size="xs2"
243
+ nonCaptureEvent
244
+ startIcon={{ icon: Pen }}
245
+ iconOnly
246
+ />
247
+ </svelte:fragment>
248
+ <Label label="Name">
249
+ <div class="flex flex-col gap-2">
250
+ <input
251
+ type="text"
252
+ class="w-full !bg-surface"
253
+ value={argName}
254
+ id={argName + i}
255
+ on:keydown={(event) => {
256
+ if (event.key === 'Enter') {
257
+ renameProperty(argName, argName + i)
258
+ close(null)
259
+ }
260
+ }}
261
+ />
262
+ <Button
263
+ variant="border"
264
+ color="light"
265
+ size="xs"
266
+ on:click={() => {
267
+ renameProperty(argName, argName + i)
268
+ close(null)
269
+ }}
270
+ >
271
+ Rename
272
+ </Button>
273
+ </div>
274
+ </Label>
275
+ </Popup>
276
+ {/if}
277
+ </div>
278
+
279
+ {#if schema.required?.includes(argName)}
280
+ <span class="text-red-500 text-xs"> Required </span>
281
+ {/if}
282
+
283
+ {#if !uiOnly}
284
+ <button
285
+ class="rounded-full p-1 text-gray-500 bg-white
286
+ duration-200 hover:bg-gray-600 focus:bg-gray-600 hover:text-white dark:bg-gray-700 dark:text-white dark:hover:bg-gray-800"
287
+ aria-label="Clear"
288
+ on:click={() => {
289
+ dispatch('delete', argName)
290
+ }}
291
+ >
292
+ <X size={16} />
293
+ </button>
294
+ {/if}
295
+ </div>
296
+ {#if opened === argName}
297
+ <div class="p-4 border-t">
298
+ {#if !schemaSkippedValues.includes(argName) && Object.keys(schema?.properties ?? {}).includes(argName)}
299
+ {#if typeof args == 'object' && schema?.properties[argName]}
300
+ <PropertyEditor
301
+ bind:description={schema.properties[argName].description}
302
+ type={schema.properties[argName].type}
303
+ bind:oneOf={schema.properties[argName].oneOf}
304
+ bind:pattern={schema.properties[argName].pattern}
305
+ bind:enum_={schema.properties[argName].enum}
306
+ bind:format={schema.properties[argName].format}
307
+ bind:contentEncoding={schema.properties[argName].contentEncoding}
308
+ bind:customErrorMessage={schema.properties[argName].customErrorMessage}
309
+ bind:itemsType={schema.properties[argName].items}
310
+ bind:extra={schema.properties[argName]}
311
+ bind:title={schema.properties[argName].title}
312
+ bind:placeholder={schema.properties[argName].placeholder}
313
+ bind:properties={schema.properties[argName].properties}
314
+ bind:order={schema.properties[argName].order}
315
+ {isFlowInput}
316
+ {isAppInput}
317
+ on:change={() => {
318
+ schema = schema
319
+ dispatch('change', schema)
320
+ }}
321
+ >
322
+ <svelte:fragment slot="typeeditor">
323
+ {#if isFlowInput || isAppInput}
324
+ <Label label="Type">
325
+ <ToggleButtonGroup
326
+ tabListClass="flex-wrap"
327
+ class="h-auto"
328
+ bind:selected
329
+ on:selected={(e) => {
330
+ const isS3 = e.detail == 'S3'
331
+ const isOneOf = e.detail == 'oneOf'
332
+
333
+ selected = e.detail
334
+
335
+ const emptyProperty = {
336
+ contentEncoding: undefined,
337
+ enum_: undefined,
338
+ pattern: undefined,
339
+ default: undefined,
340
+ min: undefined,
341
+ max: undefined,
342
+ currency: undefined,
343
+ currencyLocale: undefined,
344
+ multiselect: undefined,
345
+ password: undefined,
346
+ dateFormat: undefined,
347
+ ...(e.detail == 'array' ? { items: { type: 'string' } } : {}),
348
+ showExpr: undefined,
349
+ nullable: undefined,
350
+ required: undefined
351
+ }
352
+
353
+ if (isS3) {
354
+ schema.properties[argName] = {
355
+ ...emptyProperty,
356
+ type: 'object',
357
+ format: 'resource-s3_object'
358
+ }
359
+ } else if (isOneOf) {
360
+ schema.properties[argName] = {
361
+ ...emptyProperty,
362
+ type: 'object',
363
+ oneOf: [
364
+ {
365
+ title: 'Option 1',
366
+ type: 'object',
367
+ properties: {
368
+ label: {
369
+ type: 'string',
370
+ enum: ['Option 1']
371
+ },
372
+ property_1: {
373
+ type: 'string'
374
+ }
375
+ }
376
+ },
377
+ {
378
+ title: 'Option 2',
379
+ type: 'object',
380
+ properties: {
381
+ label: {
382
+ type: 'string',
383
+ enum: ['Option 2']
384
+ },
385
+ property_2: {
386
+ type: 'string'
387
+ }
388
+ }
389
+ }
390
+ ]
391
+ }
392
+ } else {
393
+ schema.properties[argName] = {
394
+ ...emptyProperty,
395
+ format: undefined,
396
+ type: e.detail
397
+ }
398
+ }
399
+ }}
400
+ >
401
+ {#each [['String', 'string'], ['Number', 'number'], ['Integer', 'integer'], ['Object', 'object'], ['OneOf', 'oneOf'], ['Array', 'array'], ['Boolean', 'boolean'], ['S3 Object', 'S3']] as x}
402
+ <ToggleButton value={x[1]} label={x[0]} />
403
+ {/each}
404
+ </ToggleButtonGroup>
405
+ </Label>
406
+ {/if}
407
+ </svelte:fragment>
408
+
409
+ {#if isFlowInput || isAppInput}
410
+ <FlowPropertyEditor
411
+ bind:defaultValue={schema.properties[argName].default}
412
+ {variableEditor}
413
+ {itemPicker}
414
+ {lightweightMode}
415
+ bind:nullable={schema.properties[argName].nullable}
416
+ type={schema.properties[argName].type}
417
+ bind:oneOf={schema.properties[argName].oneOf}
418
+ bind:format={schema.properties[argName].format}
419
+ contentEncoding={schema.properties[argName].contentEncoding}
420
+ required={schema.required?.includes(argName) ?? false}
421
+ pattern={schema.properties[argName].pattern}
422
+ password={schema.properties[argName].password}
423
+ propsNames={schema.properties[argName].propsNames}
424
+ bind:showExpr={schema.properties[argName].showExpr}
425
+ extra={schema.properties[argName]}
426
+ customErrorMessage={schema.properties[argName].customErrorMessage}
427
+ itemsType={schema.properties[argName].items}
428
+ bind:properties={schema.properties[argName].properties}
429
+ bind:order={schema.properties[argName].order}
430
+ bind:requiredProperty={schema.properties[argName].required}
431
+ {displayWebhookWarning}
432
+ on:requiredChange={(event) => {
433
+ if (event.detail.required) {
434
+ schema.required = schema.required ?? []
435
+ schema.required.push(argName)
436
+ } else {
437
+ schema.required = schema.required?.filter((x) => x !== argName)
438
+ }
439
+ }}
440
+ on:schemaChange={() => {
441
+ renderCount++
442
+ }}
443
+ />
444
+ {/if}
445
+ </PropertyEditor>
446
+ {/if}
447
+ {/if}
448
+ </div>
449
+ {/if}
450
+ </div>
451
+ {/each}
452
+ {:else if !shouldHideNoInputs}
453
+ <div class="text-secondary text-sm p-2">No inputs</div>
454
+ {/if}
455
+ </div>
456
+ {:else}
457
+ <div class="p-2">
458
+ <div class="border rounded h-full">
459
+ <SimpleEditor
460
+ bind:this={editor}
461
+ small
462
+ fixedOverflowWidgets={false}
463
+ on:change={() => {
464
+ try {
465
+ schema = JSON.parse(schemaString)
466
+ error = ''
467
+ } catch (err) {
468
+ error = err.message
469
+ }
470
+ }}
471
+ bind:code={schemaString}
472
+ lang="json"
473
+ autoHeight
474
+ automaticLayout
134
475
  />
476
+ </div>
477
+ {#if !emptyString(error)}
478
+ <div class="text-red-400 text-xs">{error}</div>
479
+ {:else}
480
+ <div><br /> </div>
135
481
  {/if}
136
- {/if}
137
- </div>
138
- {/each}
139
- {:else if !shouldHideNoInputs}
140
- <div class="text-secondary text-sm">No inputs</div>
141
- {/if}
482
+ </div>
483
+ {/if}
484
+ </Pane>
485
+ </Splitpanes>
142
486
  </div>
143
487
 
144
488
  {#if !noVariablePicker}
@@ -4,20 +4,28 @@ declare const __propDef: {
4
4
  props: {
5
5
  schema: Schema | any;
6
6
  schemaSkippedValues?: string[] | undefined;
7
- schemaFieldTooltip?: Record<string, string> | undefined;
8
7
  args?: Record<string, any> | undefined;
9
- autofocus?: boolean | undefined;
10
8
  shouldHideNoInputs?: boolean | undefined;
11
- compact?: boolean | undefined;
12
9
  noVariablePicker?: boolean | undefined;
13
10
  flexWrap?: boolean | undefined;
14
- noDelete?: boolean | undefined;
15
- prettifyHeader?: boolean | undefined;
16
- disablePortal?: boolean | undefined;
11
+ uiOnly?: boolean | undefined;
12
+ isFlowInput?: boolean | undefined;
13
+ noPreview?: boolean | undefined;
14
+ offset?: number | undefined;
15
+ jsonEnabled?: boolean | undefined;
16
+ isAppInput?: boolean | undefined;
17
+ lightweightMode?: boolean | undefined;
18
+ displayWebhookWarning?: boolean | undefined;
19
+ dndType?: string | undefined;
17
20
  class?: string | undefined;
18
21
  setDefaults?: (() => void) | undefined;
22
+ openField?: ((key: string) => void) | undefined;
23
+ deleteField?: ((key: string) => void) | undefined;
19
24
  };
20
25
  events: {
26
+ change: CustomEvent<any>;
27
+ delete: CustomEvent<any>;
28
+ } & {
21
29
  [evt: string]: CustomEvent<any>;
22
30
  };
23
31
  slots: {};
@@ -27,5 +35,7 @@ export type EditableSchemaFormEvents = typeof __propDef.events;
27
35
  export type EditableSchemaFormSlots = typeof __propDef.slots;
28
36
  export default class EditableSchemaForm extends SvelteComponent<EditableSchemaFormProps, EditableSchemaFormEvents, EditableSchemaFormSlots> {
29
37
  get setDefaults(): () => void;
38
+ get openField(): (key: string) => void;
39
+ get deleteField(): (key: string) => void;
30
40
  }
31
41
  export {};
@@ -14,6 +14,7 @@ import 'monaco-editor/esm/vs/basic-languages/php/php.contribution';
14
14
  import 'monaco-editor/esm/vs/language/typescript/monaco.contribution';
15
15
  import 'monaco-editor/esm/vs/basic-languages/css/css.contribution';
16
16
  import libStdContent from '../es6.d.ts.txt?raw';
17
+ import domContent from '../dom.d.ts.txt?raw';
17
18
  import denoFetchContent from '../deno_fetch.d.ts.txt?raw';
18
19
  import processStdContent from '../process.d.ts.txt?raw';
19
20
  import windmillFetchContent from '../windmill_fetch.d.ts.txt?raw';
@@ -940,7 +941,8 @@ async function setTypescriptExtraLibs() {
940
941
  const stdLib = { content: libStdContent, filePath: 'es6.d.ts' };
941
942
  if (scriptLang == 'bun') {
942
943
  const processLib = { content: processStdContent, filePath: 'process.d.ts' };
943
- languages.typescript.typescriptDefaults.setExtraLibs([stdLib, processLib]);
944
+ const domLib = { content: domContent, filePath: 'dom.d.ts' };
945
+ languages.typescript.typescriptDefaults.setExtraLibs([stdLib, domLib, processLib]);
944
946
  }
945
947
  else {
946
948
  const denoFetch = { content: denoFetchContent, filePath: 'deno_fetch.d.ts' };
@@ -4,7 +4,6 @@
4
4
  <script>import { ResourceService, VariableService } from '../gen';
5
5
  import { workspaceStore } from '../stores';
6
6
  import ItemPicker from './ItemPicker.svelte';
7
- import ResourceEditor from './ResourceEditor.svelte';
8
7
  import VariableEditor from './VariableEditor.svelte';
9
8
  import Button from './common/button/Button.svelte';
10
9
  import HighlightCode from './HighlightCode.svelte';
@@ -27,6 +26,7 @@ import ScriptGen from './copilot/ScriptGen.svelte';
27
26
  import { getResetCode } from '../script_helpers';
28
27
  import CodeCompletionStatus from './copilot/CodeCompletionStatus.svelte';
29
28
  import Popover from './Popover.svelte';
29
+ import ResourceEditorDrawer from './ResourceEditorDrawer.svelte';
30
30
  export let lang;
31
31
  export let editor;
32
32
  export let websocketAlive;
@@ -470,7 +470,7 @@ $res = json_decode(curl_exec($ch));`)
470
470
  await ResourceService.listResourceType({ workspace: $workspaceStore ?? 'NO_W' })}
471
471
  />
472
472
  {/if}
473
- <ResourceEditor bind:this={resourceEditor} on:refresh={resourcePicker.openDrawer} />
473
+ <ResourceEditorDrawer bind:this={resourceEditor} on:refresh={resourcePicker.openDrawer} />
474
474
  <VariableEditor bind:this={variableEditor} on:create={variablePicker.openDrawer} />
475
475
 
476
476
  <div class="flex justify-between items-center overflow-y-auto w-full p-0.5">