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
@@ -0,0 +1,149 @@
1
+ <script>import { modalToSchema } from '../../common';
2
+ import { emptySchema, sendUserToast } from '../../utils';
3
+ import { createEventDispatcher } from 'svelte';
4
+ import SimpleEditor from '../SimpleEditor.svelte';
5
+ import AddPropertyForm from './AddPropertyForm.svelte';
6
+ export let schema = emptySchema();
7
+ export const DEFAULT_PROPERTY = {
8
+ selectedType: 'string',
9
+ description: '',
10
+ name: '',
11
+ required: false
12
+ };
13
+ const dispatch = createEventDispatcher();
14
+ if (!schema) {
15
+ schema = emptySchema();
16
+ }
17
+ let schemaString = '';
18
+ // Internal state: bound to args builder modal
19
+ let argError = '';
20
+ let editing = false;
21
+ let oldArgName; // when editing argument and changing name
22
+ let jsonEditor;
23
+ reorder();
24
+ function reorder() {
25
+ if (schema.order && Array.isArray(schema.order)) {
26
+ const n = {};
27
+ schema.order.forEach((x) => {
28
+ if (schema.properties && schema.properties[x] != undefined) {
29
+ n[x] = schema.properties[x];
30
+ }
31
+ });
32
+ Object.keys(schema.properties ?? {})
33
+ .filter((x) => !schema.order?.includes(x))
34
+ .forEach((x) => {
35
+ n[x] = schema.properties[x];
36
+ });
37
+ schema.properties = n;
38
+ }
39
+ }
40
+ function syncOrders() {
41
+ if (schema) {
42
+ schema.order = Object.keys(schema.properties ?? {});
43
+ }
44
+ }
45
+ function handleAddOrEditArgument(modalProperty) {
46
+ // If editing the arg's name, oldName containing the old argument name must be provided
47
+ argError = '';
48
+ modalProperty.name = modalProperty.name.trim();
49
+ if (modalProperty.name.length === 0) {
50
+ argError = 'Arguments need to have a name';
51
+ }
52
+ else if (Object.keys(schema.properties ?? {}).includes(modalProperty.name) &&
53
+ (!editing || (editing && oldArgName && oldArgName !== modalProperty.name))) {
54
+ argError = 'There is already an argument with this name';
55
+ }
56
+ else {
57
+ if (!schema.properties) {
58
+ schema.properties = {};
59
+ }
60
+ if (!schema.required) {
61
+ schema.required = [];
62
+ }
63
+ if (!schema.order || !Array.isArray(schema.order)) {
64
+ syncOrders();
65
+ }
66
+ schema.properties[modalProperty.name] = modalToSchema(modalProperty);
67
+ if (modalProperty.required) {
68
+ if (!schema.required.includes(modalProperty.name)) {
69
+ schema.required.push(modalProperty.name);
70
+ }
71
+ }
72
+ else if (schema.required.includes(modalProperty.name)) {
73
+ const index = schema.required.indexOf(modalProperty.name, 0);
74
+ if (index > -1) {
75
+ schema.required.splice(index, 1);
76
+ }
77
+ }
78
+ if (editing && oldArgName && oldArgName !== modalProperty.name) {
79
+ let oldPosition = schema.order.indexOf(oldArgName);
80
+ schema.order[oldPosition] = modalProperty.name;
81
+ reorder();
82
+ handleDeleteArgument([oldArgName]);
83
+ }
84
+ if (!schema.order?.includes(modalProperty.name)) {
85
+ schema.order.push(modalProperty.name);
86
+ }
87
+ modalProperty = Object.assign({}, DEFAULT_PROPERTY);
88
+ editing = false;
89
+ oldArgName = undefined;
90
+ }
91
+ schema = schema;
92
+ schemaString = JSON.stringify(schema, null, '\t');
93
+ jsonEditor?.setCode(schemaString);
94
+ if (argError !== '') {
95
+ sendUserToast(argError, true);
96
+ }
97
+ dispatch('change', schema);
98
+ }
99
+ export function handleDeleteArgument(argPath) {
100
+ try {
101
+ let modifiedObject = schema;
102
+ let modifiedProperties = modifiedObject.properties;
103
+ let argName = argPath.pop();
104
+ argPath.forEach((property) => {
105
+ if (Object.keys(modifiedProperties).includes(property)) {
106
+ modifiedObject = modifiedProperties[property];
107
+ modifiedProperties = modifiedObject.properties;
108
+ }
109
+ else {
110
+ throw Error('Nested argument not found!');
111
+ }
112
+ });
113
+ if (Object.keys(modifiedProperties).includes(argName)) {
114
+ delete modifiedProperties[argName];
115
+ modifiedObject.required = schema.required.filter((arg) => arg !== argName);
116
+ if (modifiedObject.order) {
117
+ modifiedObject.order = modifiedObject.order.filter((arg) => arg !== argName);
118
+ }
119
+ schema = schema;
120
+ schemaString = JSON.stringify(schema, null, '\t');
121
+ dispatch('change', schema);
122
+ }
123
+ else {
124
+ throw Error('Argument not found!');
125
+ }
126
+ syncOrders();
127
+ dispatch('change', schema);
128
+ }
129
+ catch (err) {
130
+ sendUserToast(`Could not delete argument: ${err}`, true);
131
+ }
132
+ }
133
+ </script>
134
+
135
+ <div class="flex">
136
+ <AddPropertyForm
137
+ on:add={(e) => {
138
+ try {
139
+ handleAddOrEditArgument({
140
+ ...DEFAULT_PROPERTY,
141
+ selectedType: 'string',
142
+ name: e.detail.name
143
+ })
144
+ } catch (err) {
145
+ sendUserToast(`Could not add argument: ${err}`, true)
146
+ }
147
+ }}
148
+ />
149
+ </div>
@@ -0,0 +1,23 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import { type Schema, type ModalSchemaProperty } from '../../common';
3
+ declare const __propDef: {
4
+ props: {
5
+ schema?: Schema | any;
6
+ DEFAULT_PROPERTY?: ModalSchemaProperty | undefined;
7
+ handleDeleteArgument?: ((argPath: string[]) => void) | undefined;
8
+ };
9
+ events: {
10
+ change: CustomEvent<any>;
11
+ } & {
12
+ [evt: string]: CustomEvent<any>;
13
+ };
14
+ slots: {};
15
+ };
16
+ export type AddPropertyProps = typeof __propDef.props;
17
+ export type AddPropertyEvents = typeof __propDef.events;
18
+ export type AddPropertySlots = typeof __propDef.slots;
19
+ export default class AddProperty extends SvelteComponent<AddPropertyProps, AddPropertyEvents, AddPropertySlots> {
20
+ get DEFAULT_PROPERTY(): ModalSchemaProperty;
21
+ get handleDeleteArgument(): (argPath: string[]) => void;
22
+ }
23
+ export {};
@@ -0,0 +1,33 @@
1
+ <script>import { createEventDispatcher } from 'svelte';
2
+ import { Button } from '../common';
3
+ import { Plus } from 'lucide-svelte';
4
+ let name = '';
5
+ const dispatch = createEventDispatcher();
6
+ function addField() {
7
+ dispatch('add', { name });
8
+ name = '';
9
+ }
10
+ </script>
11
+
12
+ <div class="flex flex-row gap-2">
13
+ <input
14
+ bind:value={name}
15
+ placeholder="Field name"
16
+ on:keydown={(event) => {
17
+ if (event.key === 'Enter') {
18
+ addField()
19
+ }
20
+ }}
21
+ />
22
+ <Button
23
+ variant="contained"
24
+ color="dark"
25
+ size="xs"
26
+ startIcon={{ icon: Plus }}
27
+ id="flow-editor-add-property"
28
+ on:click={addField}
29
+ disabled={!name}
30
+ >
31
+ Add field
32
+ </Button>
33
+ </div>
@@ -0,0 +1,16 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: Record<string, never>;
4
+ events: {
5
+ add: CustomEvent<any>;
6
+ } & {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {};
10
+ };
11
+ export type AddPropertyFormProps = typeof __propDef.props;
12
+ export type AddPropertyFormEvents = typeof __propDef.events;
13
+ export type AddPropertyFormSlots = typeof __propDef.slots;
14
+ export default class AddPropertyForm extends SvelteComponent<AddPropertyFormProps, AddPropertyFormEvents, AddPropertyFormSlots> {
15
+ }
16
+ export {};
@@ -0,0 +1,198 @@
1
+ <script>import { GripVertical, Pen, Trash } from 'lucide-svelte';
2
+ import EditableSchemaForm from '../EditableSchemaForm.svelte';
3
+ import { Drawer, DrawerContent } from '../common';
4
+ import AddProperty from './AddProperty.svelte';
5
+ import { dragHandle, dragHandleZone } from '@windmill-labs/svelte-dnd-action';
6
+ import { flip } from 'svelte/animate';
7
+ import { emptyString, generateRandomString } from '../../utils';
8
+ import Button from '../common/button/Button.svelte';
9
+ import { createEventDispatcher, tick } from 'svelte';
10
+ import Label from '../Label.svelte';
11
+ import Toggle from '../Toggle.svelte';
12
+ import SimpleEditor from '../SimpleEditor.svelte';
13
+ export let schema;
14
+ export let parentId = undefined;
15
+ const flipDurationMs = 200;
16
+ const dispatch = createEventDispatcher();
17
+ let addProperty = undefined;
18
+ let schemaFormDrawer = undefined;
19
+ let editableSchemaForm = undefined;
20
+ $: items = ((schema?.order ?? Object.keys(schema.properties ?? {}))?.map((item, index) => {
21
+ return { value: item, id: generateRandomString() };
22
+ }) ?? []);
23
+ function handleConsider(e) {
24
+ const { items: newItems } = e.detail;
25
+ items = newItems;
26
+ }
27
+ function handleFinalize(e) {
28
+ const { items: newItems } = e.detail;
29
+ items = newItems;
30
+ const keys = items.map((item) => item.value);
31
+ schema.properties = keys.reduce((acc, key) => {
32
+ acc[key] = schema.properties[key];
33
+ return acc;
34
+ }, {});
35
+ schema.order = keys;
36
+ schema = { ...schema };
37
+ dispatch('change', schema);
38
+ }
39
+ const yOffset = 49;
40
+ export let jsonView = false;
41
+ let schemaString = JSON.stringify(schema, null, '\t');
42
+ let editor = undefined;
43
+ let error = undefined;
44
+ </script>
45
+
46
+ <div class="flex flex-col items-end mb-2 w-full">
47
+ <Toggle
48
+ bind:checked={jsonView}
49
+ label="JSON View"
50
+ size="xs"
51
+ options={{
52
+ right: 'JSON Editor',
53
+ rightTooltip:
54
+ 'Arguments can be edited either using the wizard, or by editing their JSON Schema.'
55
+ }}
56
+ lightMode
57
+ on:change={() => {
58
+ schemaString = JSON.stringify(schema, null, '\t')
59
+ editor?.setCode(schemaString)
60
+ }}
61
+ />
62
+ </div>
63
+
64
+ <AddProperty
65
+ on:change={() => {
66
+ if (jsonView) {
67
+ schemaString = JSON.stringify(schema, null, '\t')
68
+ editor?.setCode(schemaString)
69
+ }
70
+ dispatch('change', schema)
71
+ }}
72
+ bind:schema
73
+ bind:this={addProperty}
74
+ />
75
+
76
+ {#if !jsonView}
77
+ <div
78
+ use:dragHandleZone={{
79
+ items,
80
+ flipDurationMs,
81
+ dropTargetStyle: {},
82
+ type: parentId ? `app-editor-fields-${parentId}` : 'app-editor-fields'
83
+ }}
84
+ on:consider={handleConsider}
85
+ on:finalize={handleFinalize}
86
+ class="gap-1 flex flex-col mt-2"
87
+ >
88
+ {#if items?.length > 0}
89
+ {#each items as item (item.id)}
90
+ <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
91
+ <div
92
+ animate:flip={{ duration: 200 }}
93
+ class="w-full flex flex-col justify-between border items-center py-1 px-2 rounded-md bg-surface text-sm"
94
+ >
95
+ {#if schema.properties?.[item.value]}
96
+ <div class="flex flex-row justify-between items-center w-full">
97
+ {`${item.value}${
98
+ schema.properties?.[item.value]?.title
99
+ ? ` (title: ${schema.properties?.[item.value]?.title})`
100
+ : ''
101
+ } `}
102
+ <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
103
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
104
+ <div class="flex flex-row gap-1 item-center h-full justify-center">
105
+ <Button
106
+ iconOnly
107
+ size="xs2"
108
+ color="light"
109
+ startIcon={{ icon: Trash }}
110
+ on:click={() => {
111
+ addProperty?.handleDeleteArgument([item.value])
112
+ }}
113
+ />
114
+ <Button
115
+ iconOnly
116
+ size="xs2"
117
+ color="light"
118
+ startIcon={{ icon: Pen }}
119
+ on:click={() => {
120
+ schemaFormDrawer?.openDrawer()
121
+
122
+ tick().then(() => {
123
+ editableSchemaForm?.openField(item.value)
124
+ })
125
+ }}
126
+ />
127
+
128
+ <div class="cursor-move flex items-center handle" use:dragHandle>
129
+ <GripVertical size={16} />
130
+ </div>
131
+ </div>
132
+ </div>
133
+
134
+ {#if schema.properties[item.value]?.type === 'object' && !(schema.properties[item.value].oneOf && schema.properties[item.value].oneOf.length >= 2)}
135
+ <div class="flex flex-col w-full mt-2">
136
+ <Label label="Nested Properties">
137
+ <svelte:self
138
+ on:change={() => (schema = schema)}
139
+ schema={schema.properties[item.value]}
140
+ parentId={item.value}
141
+ />
142
+ </Label>
143
+ </div>
144
+ {/if}
145
+ {:else}
146
+ <div class="text-tertiary"> Value is undefined </div>
147
+ {/if}
148
+ </div>
149
+ {/each}
150
+ {/if}
151
+ </div>
152
+
153
+ <Drawer bind:this={schemaFormDrawer} size="1200px">
154
+ <DrawerContent noPadding title="UI Customisation" on:close={schemaFormDrawer.closeDrawer}>
155
+ <svelte:fragment slot="actions">
156
+ <AddProperty bind:schema />
157
+ </svelte:fragment>
158
+ <EditableSchemaForm
159
+ bind:this={editableSchemaForm}
160
+ bind:schema
161
+ isAppInput
162
+ on:edit={(e) => {
163
+ addProperty?.openDrawer(e.detail)
164
+ }}
165
+ on:delete={(e) => {
166
+ addProperty?.handleDeleteArgument([e.detail])
167
+ }}
168
+ offset={yOffset}
169
+ lightweightMode
170
+ dndType="drawer"
171
+ />
172
+ </DrawerContent>
173
+ </Drawer>
174
+ {:else}
175
+ <div class="mt-2" />
176
+ <SimpleEditor
177
+ bind:this={editor}
178
+ small
179
+ fixedOverflowWidgets={false}
180
+ on:change={() => {
181
+ try {
182
+ schema = JSON.parse(schemaString)
183
+ error = ''
184
+ } catch (err) {
185
+ error = err.message
186
+ }
187
+ }}
188
+ bind:code={schemaString}
189
+ lang="json"
190
+ autoHeight
191
+ automaticLayout
192
+ />
193
+ {#if !emptyString(error)}
194
+ <div class="text-red-400 text-xs">{error}</div>
195
+ {:else}
196
+ <div><br /> </div>
197
+ {/if}
198
+ {/if}
@@ -0,0 +1,21 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { Schema } from '../../common';
3
+ declare const __propDef: {
4
+ props: {
5
+ schema: Schema | undefined | any;
6
+ parentId?: string | undefined;
7
+ jsonView?: boolean | undefined;
8
+ };
9
+ events: {
10
+ change: CustomEvent<any>;
11
+ } & {
12
+ [evt: string]: CustomEvent<any>;
13
+ };
14
+ slots: {};
15
+ };
16
+ export type EditableSchemaDrawerProps = typeof __propDef.props;
17
+ export type EditableSchemaDrawerEvents = typeof __propDef.events;
18
+ export type EditableSchemaDrawerSlots = typeof __propDef.slots;
19
+ export default class EditableSchemaDrawer extends SvelteComponent<EditableSchemaDrawerProps, EditableSchemaDrawerEvents, EditableSchemaDrawerSlots> {
20
+ }
21
+ export {};
@@ -0,0 +1,31 @@
1
+ <script>import { twMerge } from 'tailwind-merge';
2
+ import EditableSchemaForm from '../EditableSchemaForm.svelte';
3
+ import AddProperty from './AddProperty.svelte';
4
+ export let schema;
5
+ export let offset = 0;
6
+ export let uiOnly = false;
7
+ export let noPreview = false;
8
+ export let fullHeight = true;
9
+ export let lightweightMode = false;
10
+ let addProperty = undefined;
11
+ </script>
12
+
13
+ <div class={twMerge(fullHeight ? 'h-full' : 'h-80', 'border overflow-y-auto rounded-md')}>
14
+ <div class="p-4 border-b">
15
+ <AddProperty bind:schema bind:this={addProperty} />
16
+ </div>
17
+ <EditableSchemaForm
18
+ bind:schema
19
+ isFlowInput
20
+ on:edit={(e) => {
21
+ addProperty?.openDrawer(e.detail)
22
+ }}
23
+ on:delete={(e) => {
24
+ addProperty?.handleDeleteArgument([e.detail])
25
+ }}
26
+ {offset}
27
+ {uiOnly}
28
+ {noPreview}
29
+ {lightweightMode}
30
+ />
31
+ </div>
@@ -0,0 +1,22 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { Schema } from '../../common';
3
+ declare const __propDef: {
4
+ props: {
5
+ schema: Schema | undefined | any;
6
+ offset?: number | undefined;
7
+ uiOnly?: boolean | undefined;
8
+ noPreview?: boolean | undefined;
9
+ fullHeight?: boolean | undefined;
10
+ lightweightMode?: boolean | undefined;
11
+ };
12
+ events: {
13
+ [evt: string]: CustomEvent<any>;
14
+ };
15
+ slots: {};
16
+ };
17
+ export type EditableSchemaWrapperProps = typeof __propDef.props;
18
+ export type EditableSchemaWrapperEvents = typeof __propDef.events;
19
+ export type EditableSchemaWrapperSlots = typeof __propDef.slots;
20
+ export default class EditableSchemaWrapper extends SvelteComponent<EditableSchemaWrapperProps, EditableSchemaWrapperEvents, EditableSchemaWrapperSlots> {
21
+ }
22
+ export {};