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
@@ -94,18 +94,6 @@
94
94
  .Template-editor span.mtk20 {
95
95
  color: black !important;
96
96
  }
97
-
98
- ::-webkit-scrollbar {
99
- width: 9px;
100
- height: 9px;
101
- }
102
- ::-webkit-scrollbar-track {
103
- background: transparent;
104
- }
105
- ::-webkit-scrollbar-thumb {
106
- background-color: rgba(155, 155, 155, 0.5);
107
- border: transparent;
108
- }
109
97
  }
110
98
 
111
99
  @layer components {
@@ -70,6 +70,7 @@ export const setupTypeAcquisition = (config) => {
70
70
  ? f.raw
71
71
  : '/' + config.scriptPath + (f.raw.startsWith('../') ? '/../' : '/.') + f.raw;
72
72
  let url = config.root + path;
73
+ // console.log('FOO', config.scriptPath, path, f.raw)
73
74
  console.log('fetching local file', url, f.raw);
74
75
  const res = await fetch(url);
75
76
  if (res.ok) {
@@ -37,7 +37,7 @@ export const action = (node) => {
37
37
  node.style.height = height + 'px';
38
38
  };
39
39
  const setHeight = () => {
40
- node.style.height = '0px';
40
+ node.style.height = 'auto';
41
41
  node.style.height = Math.max(node.scrollHeight ?? 0, 30) + 2 + 'px';
42
42
  };
43
43
  const addStyles = () => {
@@ -10,12 +10,13 @@ export interface PropertyDisplayInfo {
10
10
  index: number;
11
11
  propertiesNumber: number;
12
12
  }
13
+ export type EnumType = string[] | undefined;
13
14
  export interface SchemaProperty {
14
15
  type: string | undefined;
15
16
  description?: string;
16
17
  pattern?: string;
17
18
  default?: any;
18
- enum?: string[];
19
+ enum?: EnumType;
19
20
  contentEncoding?: 'base64' | 'binary';
20
21
  format?: string;
21
22
  items?: {
@@ -40,6 +41,8 @@ export interface SchemaProperty {
40
41
  dateFormat?: string;
41
42
  title?: string;
42
43
  placeholder?: string;
44
+ oneOf?: SchemaProperty[];
45
+ originalType?: string;
43
46
  }
44
47
  export interface ModalSchemaProperty {
45
48
  selectedType?: string;
@@ -53,7 +56,7 @@ export interface ModalSchemaProperty {
53
56
  multiselect?: boolean;
54
57
  format?: string;
55
58
  pattern?: string;
56
- enum_?: string[];
59
+ enum_?: EnumType;
57
60
  default?: any;
58
61
  items?: {
59
62
  type?: 'string' | 'number';
@@ -68,6 +71,7 @@ export interface ModalSchemaProperty {
68
71
  dateFormat?: string;
69
72
  title?: string;
70
73
  placeholder?: string;
74
+ oneOf?: SchemaProperty[];
71
75
  }
72
76
  export declare function modalToSchema(schema: ModalSchemaProperty): SchemaProperty;
73
77
  export type Schema = {
package/package/common.js CHANGED
@@ -21,7 +21,8 @@ export function modalToSchema(schema) {
21
21
  nullable: schema.nullable,
22
22
  dateFormat: schema.dateFormat,
23
23
  title: schema.title,
24
- placeholder: schema.placeholder
24
+ placeholder: schema.placeholder,
25
+ oneOf: schema.oneOf
25
26
  };
26
27
  }
27
28
  export function mergeSchema(schema, enum_payload = {}) {
@@ -8,7 +8,7 @@ let resourceType = '';
8
8
  let step = 1;
9
9
  let disabled = false;
10
10
  let isGoogleSignin = false;
11
- let manual = false;
11
+ let manual = true;
12
12
  let appConnectInner = undefined;
13
13
  let rtToLoad = '';
14
14
  export async function open(rt) {
@@ -21,7 +21,7 @@ export let step = 1;
21
21
  export let resourceType = '';
22
22
  export let isGoogleSignin = false;
23
23
  export let disabled = false;
24
- export let manual = false;
24
+ export let manual = true;
25
25
  let isValid = true;
26
26
  const nativeLanguagesCategory = [
27
27
  'postgresql',
@@ -53,26 +53,19 @@ let description = '';
53
53
  let resourceTypeInfo = undefined;
54
54
  let pathError = '';
55
55
  export async function open(rt) {
56
+ if (!rt) {
57
+ loadResourceTypes();
58
+ }
56
59
  step = 1;
57
60
  value = '';
58
61
  description = '';
59
62
  resourceType = rt ?? '';
60
63
  valueToken = undefined;
61
64
  await loadConnects();
62
- const isConnect = connects?.includes(resourceType);
63
- if (isConnect) {
64
- manual = false;
65
+ manual = !connects?.includes(resourceType);
66
+ if (rt) {
65
67
  next();
66
68
  }
67
- else {
68
- manual = true;
69
- if (rt) {
70
- next();
71
- }
72
- else {
73
- loadResourceTypes();
74
- }
75
- }
76
69
  }
77
70
  async function loadConnects() {
78
71
  if (!connects) {
@@ -156,11 +149,12 @@ async function getResourceTypeInfo() {
156
149
  export async function next() {
157
150
  if (step == 1) {
158
151
  if (manual) {
159
- await getResourceTypeInfo();
152
+ getResourceTypeInfo();
160
153
  args = {};
161
154
  }
162
155
  else {
163
- await Promise.all([getScopesAndParams(), getResourceTypeInfo()]);
156
+ getResourceTypeInfo();
157
+ getScopesAndParams();
164
158
  }
165
159
  step += 1;
166
160
  }
@@ -9,9 +9,11 @@ export let defaultValue;
9
9
  export let valid;
10
10
  export let create;
11
11
  export let required;
12
+ export let enumLabels = undefined;
12
13
  const dispatch = createEventDispatcher();
13
14
  let customItems = [];
14
15
  function onCreate(newItem) {
16
+ console.log(newItem);
15
17
  customItems = [...customItems, newItem];
16
18
  return newItem;
17
19
  }
@@ -20,7 +22,8 @@ function onCreate(newItem) {
20
22
  <div class="w-full flex-col">
21
23
  <div class="w-full">
22
24
  <AutoComplete
23
- items={[...(required ? [] : ['']), ...(enum_ ?? []), ...customItems]}
25
+ items={[...(required ? [] : ['']), ...(enum_ ? enum_ : []), ...customItems]}
26
+ labelFunction={(val) => (enumLabels ? enumLabels[val] ?? val : val)}
24
27
  bind:selectedItem={value}
25
28
  inputClassName={twMerge(
26
29
  'bg-surface-secondary flex',
@@ -1,14 +1,16 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ import type { EnumType } from '../common';
2
3
  declare const __propDef: {
3
4
  props: {
4
5
  disabled: boolean;
5
6
  value: any;
6
- enum_: string[] | undefined;
7
+ enum_: EnumType;
7
8
  autofocus: boolean | null;
8
9
  defaultValue: string | undefined;
9
10
  valid: boolean;
10
11
  create: boolean;
11
12
  required: boolean;
13
+ enumLabels?: Record<string, string> | undefined;
12
14
  };
13
15
  events: {
14
16
  focus: CustomEvent<any>;
@@ -1,23 +1,18 @@
1
- <script>import { setInputCat as computeInputCat, emptyString, shouldDisplayPlaceholder } from '../utils';
2
- import { ChevronDown, DollarSign, Pipette, Plus, X } from 'lucide-svelte';
3
- import { createEventDispatcher } from 'svelte';
1
+ <script>import { setInputCat as computeInputCat, debounce, emptyString } from '../utils';
2
+ import { DollarSign, Pipette, Plus, X } from 'lucide-svelte';
3
+ import { createEventDispatcher, tick } from 'svelte';
4
4
  import Multiselect from 'svelte-multiselect';
5
5
  import { fade } from 'svelte/transition';
6
6
  import JsonEditor from './apps/editor/settingsPanel/inputEditor/JsonEditor.svelte';
7
- import { Badge, Button, SecondsInput } from './common';
7
+ import { Button, SecondsInput } from './common';
8
8
  import FieldHeader from './FieldHeader.svelte';
9
- import NumberTypeNarrowing from './NumberTypeNarrowing.svelte';
10
9
  import ObjectResourceInput from './ObjectResourceInput.svelte';
11
- import ObjectTypeNarrowing from './ObjectTypeNarrowing.svelte';
12
10
  import Range from './Range.svelte';
13
11
  import ResourcePicker from './ResourcePicker.svelte';
14
- import SchemaForm from './SchemaForm.svelte';
15
12
  import SimpleEditor from './SimpleEditor.svelte';
16
- import StringTypeNarrowing from './StringTypeNarrowing.svelte';
17
13
  import Toggle from './Toggle.svelte';
18
14
  import { twMerge } from 'tailwind-merge';
19
15
  import ArgEnum from './ArgEnum.svelte';
20
- import ArrayTypeNarrowing from './ArrayTypeNarrowing.svelte';
21
16
  import DateTimeInput from './DateTimeInput.svelte';
22
17
  import DateInput from './DateInput.svelte';
23
18
  import S3FilePicker from './S3FilePicker.svelte';
@@ -26,8 +21,11 @@ import FileUpload from './common/fileUpload/FileUpload.svelte';
26
21
  import autosize from '../autosize';
27
22
  import PasswordArgInput from './PasswordArgInput.svelte';
28
23
  import Password from './Password.svelte';
29
- import Label from './Label.svelte';
30
- import Tooltip from './Tooltip.svelte';
24
+ import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
25
+ import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
26
+ import SchemaFormDnd from './schema/SchemaFormDND.svelte';
27
+ import SchemaForm from './SchemaForm.svelte';
28
+ import { deepEqual } from 'fast-equals';
31
29
  export let label = '';
32
30
  export let value;
33
31
  export let defaultValue = undefined;
@@ -35,12 +33,12 @@ export let description = '';
35
33
  export let format = '';
36
34
  export let contentEncoding = undefined;
37
35
  export let type = undefined;
36
+ export let oneOf = undefined;
38
37
  export let required = false;
39
38
  export let pattern = undefined;
40
39
  export let valid = true;
41
40
  export let enum_ = undefined;
42
41
  export let disabled = false;
43
- export let editableSchema = undefined;
44
42
  export let itemsType = undefined;
45
43
  export let displayHeader = true;
46
44
  export let properties = undefined;
@@ -64,7 +62,33 @@ export let onlyMaskPassword = false;
64
62
  export let nullable = false;
65
63
  export let title = undefined;
66
64
  export let placeholder = undefined;
67
- let seeEditable = enum_ != undefined || pattern != undefined;
65
+ export let order = undefined;
66
+ export let editor = undefined;
67
+ export let orderEditable = false;
68
+ export let shouldDispatchChanges = false;
69
+ let oneOfSelected = undefined;
70
+ async function updateOneOfSelected(oneOf) {
71
+ if (oneOf &&
72
+ oneOf.length >= 2 &&
73
+ (!oneOfSelected || !oneOf.some((o) => o.title === oneOfSelected))) {
74
+ if (value && value['label'] && oneOf.some((o) => o.title === value['label'])) {
75
+ const existingValue = JSON.parse(JSON.stringify(value));
76
+ oneOfSelected = value['label'];
77
+ await tick();
78
+ value = existingValue;
79
+ }
80
+ else {
81
+ oneOfSelected = oneOf[0]['title'];
82
+ }
83
+ }
84
+ }
85
+ $: updateOneOfSelected(oneOf);
86
+ function updateOneOfSelectedValue(oneOfSelected) {
87
+ if (oneOfSelected) {
88
+ value = { label: oneOfSelected };
89
+ }
90
+ }
91
+ $: updateOneOfSelectedValue(oneOfSelected);
68
92
  const dispatch = createEventDispatcher();
69
93
  let ignoreValueUndefined = false;
70
94
  let error = '';
@@ -72,7 +96,6 @@ let s3FilePicker;
72
96
  let s3FileUploadRawMode;
73
97
  let isListJson = false;
74
98
  let el = undefined;
75
- export let editor = undefined;
76
99
  let inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncoding);
77
100
  $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncoding);
78
101
  let rawValue = undefined;
@@ -184,9 +207,15 @@ function onKeyDown(e) {
184
207
  let redraw = 0;
185
208
  let itemsLimit = 50;
186
209
  $: validateInput(pattern, value, required);
187
- function changePosition(i, up) {
188
- dispatch('changePosition', { i, up });
210
+ let oldValue = value;
211
+ function compareValues(value) {
212
+ if (!deepEqual(oldValue, value)) {
213
+ oldValue = value;
214
+ dispatch('change');
215
+ }
189
216
  }
217
+ let debounced = debounce(() => compareValues(value), 50);
218
+ $: shouldDispatchChanges && debounced(value);
190
219
  </script>
191
220
 
192
221
  <S3FilePicker
@@ -212,114 +241,8 @@ function changePosition(i, up) {
212
241
  {format}
213
242
  {simpleTooltip}
214
243
  />
215
-
216
- {#if editableSchema}
217
- <span class="mx-8" />
218
- {#if editableSchema.i > 0}
219
- <button
220
- on:click={() => changePosition(editableSchema?.i ?? 0, true)}
221
- class="text-lg mr-2"
222
- >
223
- &uparrow;</button
224
- >
225
- {/if}
226
- {#if editableSchema.i < editableSchema.total - 1}
227
- <button
228
- on:click={() => changePosition(editableSchema?.i ?? 0, false)}
229
- class="text-lg mr-2">&downarrow;</button
230
- >
231
- {/if}
232
- {/if}
233
244
  {/if}
234
- {#if editableSchema}
235
- <Label label="Description">
236
- <textarea
237
- class="mb-1"
238
- use:autosize
239
- rows="1"
240
- bind:value={description}
241
- on:keydown={onKeyDown}
242
- placeholder="Field description"
243
- />
244
- </Label>
245
- <div class="flex flex-row gap-2 w-full">
246
- <Label label="Custom Title" class="w-full">
247
- <svelte:fragment slot="header">
248
- <Tooltip light>Will be displayed in the UI instead of the field name.</Tooltip>
249
- </svelte:fragment>
250
- <input class="mb-1" bind:value={title} on:keydown={onKeyDown} placeholder="Field title" />
251
- </Label>
252
- </div>
253
245
 
254
- {#if type == 'array'}
255
- <ArrayTypeNarrowing bind:itemsType />
256
- {:else if type == 'string' || ['number', 'integer', 'object'].includes(type ?? '')}
257
- <div class="p-2 my-2 mv-1 text-xs border-solid border rounded-lg">
258
- <div class="w-min">
259
- <Button
260
- on:click={() => {
261
- seeEditable = !seeEditable
262
- }}
263
- endIcon={{
264
- icon: ChevronDown,
265
- classes: twMerge('rotate-0 duration-300', seeEditable ? '!rotate-180' : '')
266
- }}
267
- color="light"
268
- size="xs"
269
- >
270
- Customize
271
- </Button>
272
- </div>
273
-
274
- {#if seeEditable}
275
- <div class="mt-2">
276
- {#if type == 'string'}
277
- <StringTypeNarrowing
278
- bind:customErrorMessage
279
- bind:format
280
- bind:pattern
281
- bind:enum_
282
- bind:contentEncoding
283
- bind:password={extra['password']}
284
- bind:minRows={extra['minRows']}
285
- bind:disableCreate={extra['disableCreate']}
286
- bind:disableVariablePicker={extra['disableVariablePicker']}
287
- bind:dateFormat={extra['dateFormat']}
288
- />
289
- {:else if type == 'number' || type == 'integer'}
290
- <NumberTypeNarrowing
291
- bind:min={extra['min']}
292
- bind:max={extra['max']}
293
- bind:currency={extra['currency']}
294
- bind:currencyLocale={extra['currencyLocale']}
295
- />
296
- {:else if type == 'object'}
297
- <ObjectTypeNarrowing bind:format />
298
- {/if}
299
- </div>
300
- {#if shouldDisplayPlaceholder(type, format, enum_, contentEncoding, pattern)}
301
- <Label label="Placeholder" class="pt-2">
302
- <textarea placeholder="Enter a placeholder" rows="1" bind:value={placeholder} />
303
- </Label>
304
- {/if}
305
- {#if !required && type === 'string'}
306
- <div class="mt-2 border-t pt-4">
307
- <Toggle
308
- options={{
309
- right: 'Nullable',
310
- rightTooltip:
311
- 'If enabled, the default value will be null and not an empty string.'
312
- }}
313
- size="xs"
314
- bind:checked={extra.nullable}
315
- />
316
- </div>
317
- {/if}
318
- {/if}
319
- </div>
320
- {/if}
321
- <span class="text-2xs font-semibold">Preview:</span>
322
- {/if}
323
246
  {#if description}
324
247
  <div class="text-xs italic pb-1 text-secondary">
325
248
  <pre class="font-main whitespace-normal">{description}</pre>
@@ -329,15 +252,7 @@ function changePosition(i, up) {
329
252
  <div class="flex space-x-1">
330
253
  {#if inputCat == 'number'}
331
254
  {#if extra['min'] != undefined && extra['max'] != undefined}
332
- <div class="flex w-full gap-1">
333
- <span>{extra['min']}</span>
334
-
335
- <div class="grow">
336
- <Range bind:value min={extra['min']} max={extra['max']} />
337
- </div>
338
- <span>{extra['max']}</span>
339
- <span class="mx-2"><Badge large color="blue">{value}</Badge></span>
340
- </div>
255
+ <Range bind:value min={extra['min']} max={extra['max']} {defaultValue} />
341
256
  {:else if extra['seconds'] !== undefined}
342
257
  <SecondsInput bind:seconds={value} on:focus />
343
258
  {:else if extra?.currency}
@@ -444,6 +359,7 @@ function changePosition(i, up) {
444
359
  {autofocus}
445
360
  bind:value={v}
446
361
  enum_={itemsType?.enum ?? []}
362
+ enumLabels={extra['enumLabels']}
447
363
  />
448
364
  {:else}
449
365
  <input type="text" bind:value={v} id="arg-input-array" />
@@ -506,7 +422,14 @@ function changePosition(i, up) {
506
422
  {:else if inputCat == 'resource-object' && resourceTypes == undefined}
507
423
  <span class="text-2xs text-tertiary">Loading resource types...</span>
508
424
  {:else if inputCat == 'resource-object' && (resourceTypes == undefined || (format.split('-').length > 1 && resourceTypes.includes(format.substring('resource-'.length))))}
509
- <ObjectResourceInput selectFirst {disablePortal} {format} bind:value {showSchemaExplorer} />
425
+ <ObjectResourceInput
426
+ {defaultValue}
427
+ selectFirst
428
+ {disablePortal}
429
+ {format}
430
+ bind:value
431
+ {showSchemaExplorer}
432
+ />
510
433
  {:else if inputCat == 'resource-object' && format.split('-').length > 1 && format
511
434
  .replace('resource-', '')
512
435
  .replace('_', '')
@@ -561,15 +484,132 @@ function changePosition(i, up) {
561
484
  {/if}
562
485
  </div>
563
486
  {:else if inputCat == 'object' || inputCat == 'resource-object' || isListJson}
564
- {#if properties && Object.keys(properties).length > 0}
565
- <div class="p-4 pl-8 border rounded w-full">
566
- <SchemaForm
567
- {onlyMaskPassword}
568
- {disablePortal}
569
- {disabled}
570
- schema={{ properties, $schema: '', required: nestedRequired ?? [], type: 'object' }}
571
- bind:args={value}
572
- />
487
+ {#if oneOf && oneOf.length >= 2}
488
+ <div class="flex flex-col gap-2 w-full">
489
+ {#if oneOf && oneOf.length >= 2}
490
+ <ToggleButtonGroup bind:selected={oneOfSelected}>
491
+ {#each oneOf as obj}
492
+ <ToggleButton value={obj.title} label={obj.title} />
493
+ {/each}
494
+ </ToggleButtonGroup>
495
+
496
+ {#if oneOfSelected}
497
+ {@const objIdx = oneOf.findIndex((o) => o.title === oneOfSelected)}
498
+ {@const obj = oneOf[objIdx]}
499
+ {#if obj && obj.properties && Object.keys(obj.properties).length > 0}
500
+ <div class="p-4 pl-8 border rounded w-full">
501
+ {#if orderEditable}
502
+ <SchemaFormDnd
503
+ {onlyMaskPassword}
504
+ {disablePortal}
505
+ {disabled}
506
+ schema={{
507
+ properties: Object.fromEntries(
508
+ Object.entries(obj.properties).filter(([k, v]) => k !== 'label')
509
+ ),
510
+ order: obj.order?.filter((k) => k !== 'label') ?? undefined,
511
+ $schema: '',
512
+ required: obj.required ?? [],
513
+ type: 'object'
514
+ }}
515
+ args={value}
516
+ dndType={`nested-${title}`}
517
+ on:reorder={(e) => {
518
+ if (oneOf && oneOf[objIdx]) {
519
+ const keys = e.detail
520
+ oneOf[objIdx].order = keys
521
+ }
522
+ }}
523
+ on:change
524
+ />
525
+ {:else}
526
+ <SchemaForm
527
+ {onlyMaskPassword}
528
+ {disablePortal}
529
+ {disabled}
530
+ noDelete
531
+ schema={{
532
+ properties: Object.fromEntries(
533
+ Object.entries(obj.properties).filter(([k, v]) => k !== 'label')
534
+ ),
535
+ order: obj.order?.filter((k) => k !== 'label') ?? undefined,
536
+ $schema: '',
537
+ required: obj.required ?? [],
538
+ type: 'object'
539
+ }}
540
+ bind:args={value}
541
+ />
542
+ {/if}
543
+ </div>
544
+ {:else if disabled}
545
+ <textarea disabled />
546
+ {:else}
547
+ <JsonEditor
548
+ bind:editor
549
+ on:focus={(e) => {
550
+ dispatch('focus')
551
+ }}
552
+ on:blur={(e) => {
553
+ dispatch('blur')
554
+ }}
555
+ code={rawValue}
556
+ bind:value
557
+ />
558
+ {/if}
559
+ {/if}
560
+ {:else if disabled}
561
+ <textarea disabled />
562
+ {:else}
563
+ <JsonEditor
564
+ bind:editor
565
+ on:focus={(e) => {
566
+ dispatch('focus')
567
+ }}
568
+ on:blur={(e) => {
569
+ dispatch('blur')
570
+ }}
571
+ code={rawValue}
572
+ bind:value
573
+ />
574
+ {/if}
575
+ </div>
576
+ {:else if properties && Object.keys(properties).length > 0}
577
+ <div class="p-4 pl-8 border rounded-md w-full">
578
+ {#if orderEditable}
579
+ <SchemaFormDnd
580
+ {onlyMaskPassword}
581
+ {disablePortal}
582
+ {disabled}
583
+ schema={{
584
+ properties,
585
+ $schema: '',
586
+ required: nestedRequired ?? [],
587
+ type: 'object',
588
+ order
589
+ }}
590
+ args={value}
591
+ dndType={`nested-${title}`}
592
+ on:reorder={(e) => {
593
+ const keys = e.detail
594
+ order = keys
595
+ }}
596
+ on:change
597
+ />
598
+ {:else}
599
+ <SchemaForm
600
+ {onlyMaskPassword}
601
+ {disablePortal}
602
+ {disabled}
603
+ schema={{
604
+ properties,
605
+ order,
606
+ $schema: '',
607
+ required: nestedRequired ?? [],
608
+ type: 'object'
609
+ }}
610
+ bind:args={value}
611
+ />
612
+ {/if}
573
613
  </div>
574
614
  {:else if disabled}
575
615
  <textarea disabled />
@@ -610,6 +650,7 @@ function changePosition(i, up) {
610
650
  bind:value
611
651
  {enum_}
612
652
  {autofocus}
653
+ enumLabels={extra['enumLabels']}
613
654
  />
614
655
  </div>
615
656
  {:else if inputCat == 'date'}
@@ -650,6 +691,7 @@ function changePosition(i, up) {
650
691
  selectFirst
651
692
  {disablePortal}
652
693
  bind:value
694
+ initialValue={defaultValue}
653
695
  resourceType={format && format.split('-').length > 1
654
696
  ? format.substring('resource-'.length)
655
697
  : undefined}
@@ -736,6 +778,7 @@ function changePosition(i, up) {
736
778
  {/if}
737
779
  <slot name="actions" />
738
780
  </div>
781
+
739
782
  {#if !compact || (error && error != '')}
740
783
  <div class="text-right text-xs text-red-600 dark:text-red-400">
741
784
  {#if disabled || error === ''}
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { SchemaProperty } from '../common';
2
+ import type { EnumType, SchemaProperty } from '../common';
3
3
  import type ItemPicker from './ItemPicker.svelte';
4
4
  import SimpleEditor from './SimpleEditor.svelte';
5
5
  import type VariableEditor from './VariableEditor.svelte';
@@ -12,15 +12,12 @@ declare const __propDef: {
12
12
  format?: string | undefined;
13
13
  contentEncoding?: 'base64' | 'binary' | undefined;
14
14
  type?: string | undefined;
15
+ oneOf?: SchemaProperty[] | undefined;
15
16
  required?: boolean | undefined;
16
17
  pattern?: undefined | string;
17
18
  valid?: boolean | undefined;
18
- enum_?: string[] | undefined;
19
+ enum_?: EnumType;
19
20
  disabled?: boolean | undefined;
20
- editableSchema?: {
21
- i: number;
22
- total: number;
23
- } | undefined;
24
21
  itemsType?: {
25
22
  type?: "string" | "number" | "object" | "bytes" | undefined;
26
23
  contentEncoding?: "base64" | undefined;
@@ -51,13 +48,16 @@ declare const __propDef: {
51
48
  nullable?: boolean | undefined;
52
49
  title?: string | undefined;
53
50
  placeholder?: string | undefined;
51
+ order?: string[] | undefined;
54
52
  editor?: SimpleEditor | undefined;
53
+ orderEditable?: boolean | undefined;
54
+ shouldDispatchChanges?: boolean | undefined;
55
55
  focus?: (() => void) | undefined;
56
56
  };
57
57
  events: {
58
58
  focus: CustomEvent<any>;
59
59
  blur: CustomEvent<any>;
60
- changePosition: CustomEvent<any>;
60
+ change: CustomEvent<any>;
61
61
  } & {
62
62
  [evt: string]: CustomEvent<any>;
63
63
  };