windmill-components 1.444.2 → 1.447.4

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 (229) hide show
  1. package/package/autosize.js +1 -1
  2. package/package/components/AppConnectInner.svelte +2 -1
  3. package/package/components/ArgInput.svelte +37 -24
  4. package/package/components/CapturesInputs.svelte +16 -0
  5. package/package/components/CapturesInputs.svelte.d.ts +21 -0
  6. package/package/components/Dev.svelte +7 -1
  7. package/package/components/EditableSchemaForm.svelte +369 -290
  8. package/package/components/EditableSchemaForm.svelte.d.ts +12 -2
  9. package/package/components/Editor.svelte +5 -7
  10. package/package/components/FirstStepInputs.svelte +111 -0
  11. package/package/components/FirstStepInputs.svelte.d.ts +17 -0
  12. package/package/components/FlowBuilder.svelte +28 -7
  13. package/package/components/FlowPreviewContent.svelte +72 -1
  14. package/package/components/FlowPreviewContent.svelte.d.ts +1 -0
  15. package/package/components/GfmMarkdown.svelte +93 -2
  16. package/package/components/HighlightCode.svelte +2 -0
  17. package/package/components/HistoricInputs.svelte +193 -0
  18. package/package/components/HistoricInputs.svelte.d.ts +20 -0
  19. package/package/components/InfiniteList.svelte +161 -0
  20. package/package/components/InfiniteList.svelte.d.ts +40 -0
  21. package/package/components/LightweightArgInput.svelte +19 -15
  22. package/package/components/MoveDrawer.svelte +2 -1
  23. package/package/components/Path.svelte +7 -1
  24. package/package/components/Path.svelte.d.ts +1 -1
  25. package/package/components/ResourcePicker.svelte +2 -1
  26. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  27. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  28. package/package/components/SaveInputsButton.svelte +53 -0
  29. package/package/components/SaveInputsButton.svelte.d.ts +24 -0
  30. package/package/components/SavedInputs.svelte +33 -61
  31. package/package/components/SavedInputsPicker.svelte +264 -0
  32. package/package/components/SavedInputsPicker.svelte.d.ts +20 -0
  33. package/package/components/ScheduleEditorInner.svelte +0 -1
  34. package/package/components/SchemaForm.svelte +22 -3
  35. package/package/components/ScriptBuilder.svelte +595 -562
  36. package/package/components/ScriptEditor.svelte +10 -3
  37. package/package/components/ScriptEditor.svelte.d.ts +5 -2
  38. package/package/components/ScriptSchema.svelte +1 -2
  39. package/package/components/Section.svelte +6 -4
  40. package/package/components/ShareModal.svelte.d.ts +2 -2
  41. package/package/components/SimpleEditor.svelte +39 -7
  42. package/package/components/SimpleEditor.svelte.d.ts +1 -4
  43. package/package/components/StringTypeNarrowing.svelte +3 -1
  44. package/package/components/TestConnection.svelte +5 -0
  45. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  46. package/package/components/WorkerGroup.svelte +2 -1
  47. package/package/components/apps/components/inputs/AppS3FileInput.svelte +1 -0
  48. package/package/components/apps/editor/component/components.d.ts +79 -79
  49. package/package/components/apps/editor/component/default-codes.d.ts +1 -1
  50. package/package/components/apps/editor/component/default-codes.js +10 -10
  51. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +2 -1
  52. package/package/components/apps/inputType.d.ts +2 -2
  53. package/package/components/common/button/Button.svelte +10 -52
  54. package/package/components/common/button/PulseButton.svelte +81 -0
  55. package/package/components/common/button/PulseButton.svelte.d.ts +34 -0
  56. package/package/components/common/button/RoundIconButton.svelte +11 -0
  57. package/package/components/common/button/RoundIconButton.svelte.d.ts +19 -0
  58. package/package/components/common/button/model.d.ts +1 -0
  59. package/package/components/common/button/model.js +47 -0
  60. package/package/components/common/fileUpload/FileUpload.svelte +3 -1
  61. package/package/components/common/fileUpload/FileUpload.svelte.d.ts +1 -0
  62. package/package/components/common/languageIcons/LanguageIcon.svelte +3 -0
  63. package/package/components/common/layout/List.svelte +10 -4
  64. package/package/components/common/layout/List.svelte.d.ts +1 -0
  65. package/package/components/common/tabs/Tab.svelte +14 -1
  66. package/package/components/common/tabs/Tab.svelte.d.ts +1 -0
  67. package/package/components/copilot/ScriptGen.svelte +1 -1
  68. package/package/components/copilot/lib.js +1 -1
  69. package/package/components/copilot/prompts/edit.yaml +1 -1
  70. package/package/components/copilot/prompts/editPrompt.js +1 -1
  71. package/package/components/copilot/prompts/fix.yaml +1 -1
  72. package/package/components/copilot/prompts/fixPrompt.js +1 -1
  73. package/package/components/copilot/prompts/gen.yaml +1 -1
  74. package/package/components/copilot/prompts/genPrompt.js +1 -1
  75. package/package/components/custom_ui.d.ts +1 -0
  76. package/package/components/details/DetailPageDetailPanel.svelte +20 -19
  77. package/package/components/details/DetailPageDetailPanel.svelte.d.ts +4 -1
  78. package/package/components/details/DetailPageLayout.svelte +4 -1
  79. package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
  80. package/package/components/details/DetailPageTriggerPanel.svelte +84 -63
  81. package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +3 -1
  82. package/package/components/details/EmailTriggerConfigSection.svelte +1 -1
  83. package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +2 -1
  84. package/package/components/details/EmailTriggerPanel.svelte +2 -0
  85. package/package/components/details/EmailTriggerPanel.svelte.d.ts +2 -0
  86. package/package/components/flows/FlowEditor.svelte +8 -2
  87. package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
  88. package/package/components/flows/common/FlowCard.svelte +12 -6
  89. package/package/components/flows/content/DynamicInputHelpBox.svelte +1 -0
  90. package/package/components/flows/content/FlowEditorPanel.svelte +15 -9
  91. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
  92. package/package/components/flows/content/FlowInput.svelte +449 -98
  93. package/package/components/flows/content/FlowInput.svelte.d.ts +2 -0
  94. package/package/components/flows/content/FlowInputEditor.svelte +46 -0
  95. package/package/components/flows/content/FlowInputEditor.svelte.d.ts +25 -0
  96. package/package/components/flows/content/FlowInputsQuick.svelte +1 -1
  97. package/package/components/flows/content/FlowLoop.svelte +192 -194
  98. package/package/components/flows/content/FlowModuleComponent.svelte +372 -382
  99. package/package/components/flows/content/FlowModuleMock.svelte +6 -7
  100. package/package/components/flows/content/FlowPathViewer.svelte +2 -1
  101. package/package/components/flows/content/FlowSettings.svelte +25 -3
  102. package/package/components/flows/content/FlowWhileLoop.svelte +97 -99
  103. package/package/components/flows/flowStore.d.ts +13 -0
  104. package/package/components/flows/flowStore.js +41 -0
  105. package/package/components/flows/header/FlowPreviewButtons.svelte +10 -4
  106. package/package/components/flows/header/FlowPreviewButtons.svelte.d.ts +4 -2
  107. package/package/components/flows/header/FlowYamlEditor.svelte +3 -0
  108. package/package/components/flows/map/FlowModuleSchemaItem.svelte +8 -58
  109. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +67 -0
  110. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte.d.ts +24 -0
  111. package/package/components/flows/map/FlowModuleSchemaMap.svelte +2 -2
  112. package/package/components/flows/pickers/FlowScriptPicker.svelte +1 -1
  113. package/package/components/flows/previousResults.d.ts +1 -1
  114. package/package/components/flows/previousResults.js +7 -2
  115. package/package/components/flows/types.d.ts +7 -0
  116. package/package/components/flows/utils.d.ts +1 -0
  117. package/package/components/flows/utils.js +3 -0
  118. package/package/components/graph/graphBuilder.js +1 -1
  119. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +22 -8
  120. package/package/components/graph/renderers/triggers/TriggersBadge.svelte.d.ts +1 -1
  121. package/package/components/icons/NatsIcon.svelte +19 -0
  122. package/package/components/icons/NatsIcon.svelte.d.ts +18 -0
  123. package/package/components/icons/OracleDBIcon.svelte +15 -0
  124. package/package/components/icons/OracleDBIcon.svelte.d.ts +25 -0
  125. package/package/components/icons/index.d.ts +7 -1
  126. package/package/components/icons/index.js +8 -2
  127. package/package/components/meltComponents/ButtonDropDown.svelte +32 -0
  128. package/package/components/meltComponents/ButtonDropDown.svelte.d.ts +27 -0
  129. package/package/components/meltComponents/Popover.svelte +7 -4
  130. package/package/components/meltComponents/Popover.svelte.d.ts +1 -0
  131. package/package/components/runs/RunsFilter.svelte +2 -2
  132. package/package/components/schema/AddPropertyFormV2.svelte +46 -0
  133. package/package/components/schema/AddPropertyFormV2.svelte.d.ts +18 -0
  134. package/package/components/schema/AddPropertyV2.svelte +151 -0
  135. package/package/components/schema/AddPropertyV2.svelte.d.ts +25 -0
  136. package/package/components/schema/EditableSchemaDrawer.svelte +17 -8
  137. package/package/components/schema/EditableSchemaWrapper.svelte +58 -14
  138. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +0 -1
  139. package/package/components/schema/FlowPropertyEditor.svelte +8 -3
  140. package/package/components/schema/JobSchemaPicker.svelte +32 -0
  141. package/package/components/schema/JobSchemaPicker.svelte.d.ts +19 -0
  142. package/package/components/schema/PropertyEditor.svelte +9 -1
  143. package/package/components/schema/RunningJobSchemaPicker.svelte +67 -0
  144. package/package/components/schema/RunningJobSchemaPicker.svelte.d.ts +21 -0
  145. package/package/components/schema/SchemaFormDND.svelte +1 -1
  146. package/package/components/schema/SchemaPicker.svelte +92 -0
  147. package/package/components/schema/SchemaPicker.svelte.d.ts +23 -0
  148. package/package/components/schema/SchemaPickerRow.svelte +95 -0
  149. package/package/components/schema/SchemaPickerRow.svelte.d.ts +22 -0
  150. package/package/components/scriptEditor/LogPanel.svelte +1 -1
  151. package/package/components/settings/ChangeWorkspaceColor.svelte +103 -0
  152. package/package/components/settings/ChangeWorkspaceColor.svelte.d.ts +16 -0
  153. package/package/components/settings/ChangeWorkspaceId.svelte +1 -0
  154. package/package/components/settings/ChangeWorkspaceName.svelte +4 -0
  155. package/package/components/sidebar/MenuButton.svelte +5 -2
  156. package/package/components/sidebar/MenuButton.svelte.d.ts +1 -0
  157. package/package/components/sidebar/SidebarContent.svelte +8 -0
  158. package/package/components/sidebar/WorkspaceMenu.svelte +40 -21
  159. package/package/components/table/DataTable.svelte +43 -3
  160. package/package/components/table/DataTable.svelte.d.ts +2 -0
  161. package/package/components/table/Head.svelte +1 -1
  162. package/package/components/table/Row.svelte +11 -1
  163. package/package/components/table/Row.svelte.d.ts +3 -0
  164. package/package/components/table/index.d.ts +3 -0
  165. package/package/components/table/index.js +3 -0
  166. package/package/components/triggers/CaptureButton.svelte +38 -4
  167. package/package/components/triggers/CaptureButton.svelte.d.ts +3 -1
  168. package/package/components/triggers/CaptureIcon.svelte +7 -4
  169. package/package/components/triggers/CaptureIcon.svelte.d.ts +7 -13
  170. package/package/components/triggers/CaptureSection.svelte +50 -17
  171. package/package/components/triggers/CaptureSection.svelte.d.ts +5 -3
  172. package/package/components/triggers/CaptureTable.svelte +239 -186
  173. package/package/components/triggers/CaptureTable.svelte.d.ts +9 -11
  174. package/package/components/triggers/CaptureWrapper.svelte +126 -109
  175. package/package/components/triggers/CaptureWrapper.svelte.d.ts +3 -1
  176. package/package/components/triggers/KafkaTriggerEditorInner.svelte +1 -0
  177. package/package/components/triggers/KafkaTriggersConfigSection.svelte +16 -4
  178. package/package/components/triggers/KafkaTriggersConfigSection.svelte.d.ts +3 -1
  179. package/package/components/triggers/KafkaTriggersPanel.svelte +2 -0
  180. package/package/components/triggers/KafkaTriggersPanel.svelte.d.ts +2 -0
  181. package/package/components/triggers/NatsTriggerEditor.svelte +19 -0
  182. package/package/components/triggers/NatsTriggerEditor.svelte.d.ts +21 -0
  183. package/package/components/triggers/NatsTriggerEditorInner.svelte +239 -0
  184. package/package/components/triggers/NatsTriggerEditorInner.svelte.d.ts +21 -0
  185. package/package/components/triggers/NatsTriggersConfigSection.svelte +276 -0
  186. package/package/components/triggers/NatsTriggersConfigSection.svelte.d.ts +37 -0
  187. package/package/components/triggers/NatsTriggersPanel.svelte +126 -0
  188. package/package/components/triggers/NatsTriggersPanel.svelte.d.ts +26 -0
  189. package/package/components/triggers/RouteEditorConfigSection.svelte +12 -2
  190. package/package/components/triggers/RouteEditorConfigSection.svelte.d.ts +5 -1
  191. package/package/components/triggers/RouteEditorInner.svelte +5 -0
  192. package/package/components/triggers/RoutesPanel.svelte +4 -0
  193. package/package/components/triggers/RoutesPanel.svelte.d.ts +3 -0
  194. package/package/components/triggers/TriggersEditor.svelte +146 -97
  195. package/package/components/triggers/TriggersEditor.svelte.d.ts +2 -0
  196. package/package/components/triggers/TriggersEditorSection.svelte +19 -13
  197. package/package/components/triggers/TriggersEditorSection.svelte.d.ts +3 -0
  198. package/package/components/triggers/TriggersWrapper.svelte +7 -3
  199. package/package/components/triggers/TriggersWrapper.svelte.d.ts +2 -1
  200. package/package/components/triggers/WebhooksConfigSection.svelte +1 -0
  201. package/package/components/triggers/WebhooksConfigSection.svelte.d.ts +2 -1
  202. package/package/components/triggers/WebhooksPanel.svelte +2 -0
  203. package/package/components/triggers/WebhooksPanel.svelte.d.ts +2 -0
  204. package/package/components/triggers/WebsocketEditorConfigSection.svelte +3 -1
  205. package/package/components/triggers/WebsocketEditorConfigSection.svelte.d.ts +2 -1
  206. package/package/components/triggers/WebsocketTriggersPanel.svelte +2 -0
  207. package/package/components/triggers/WebsocketTriggersPanel.svelte.d.ts +2 -0
  208. package/package/components/triggers.d.ts +2 -1
  209. package/package/components/triggers.js +2 -0
  210. package/package/components/vscode.js +12 -8
  211. package/package/consts.d.ts +1 -0
  212. package/package/consts.js +18 -0
  213. package/package/gen/core/OpenAPI.js +1 -1
  214. package/package/gen/schemas.gen.d.ts +207 -13
  215. package/package/gen/schemas.gen.js +207 -13
  216. package/package/gen/services.gen.d.ts +118 -10
  217. package/package/gen/services.gen.js +237 -17
  218. package/package/gen/types.gen.d.ts +400 -40
  219. package/package/hubPaths.json +2 -1
  220. package/package/infer.js +11 -2
  221. package/package/monaco_workers/build_workers.js +39 -37
  222. package/package/monaco_workers/graphql.worker.bundle.js +18371 -36513
  223. package/package/script_helpers.d.ts +5 -2
  224. package/package/script_helpers.js +46 -8
  225. package/package/scripts.js +4 -0
  226. package/package/stores.d.ts +2 -1
  227. package/package/stores.js +2 -1
  228. package/package.json +14 -16
  229. package/package/monaco_workers/graphql.worker.bundle.d.ts +0 -0
@@ -19,6 +19,7 @@ import { emptyString } from '../utils';
19
19
  import Popup from './common/popup/Popup.svelte';
20
20
  import SchemaFormDnd from './schema/SchemaFormDND.svelte';
21
21
  import { deepEqual } from 'fast-equals';
22
+ import { tweened } from 'svelte/motion';
22
23
  export let schema;
23
24
  export let schemaSkippedValues = [];
24
25
  export let args = {};
@@ -28,12 +29,15 @@ export let flexWrap = false;
28
29
  export let uiOnly = false;
29
30
  export let isFlowInput = false;
30
31
  export let noPreview = false;
31
- export let offset = 48 + 31 + 31 + 16 + 1;
32
32
  export let jsonEnabled = true;
33
33
  export let isAppInput = false;
34
34
  export let lightweightMode = false;
35
35
  export let displayWebhookWarning = false;
36
36
  export let dndType = undefined;
37
+ export let editTab;
38
+ export let previewSchema = undefined;
39
+ export let editPanelInitialSize = undefined;
40
+ export let editPanelSize = 0;
37
41
  const dispatch = createEventDispatcher();
38
42
  let clazz = '';
39
43
  export { clazz as class };
@@ -113,13 +117,16 @@ export function deleteField(key) {
113
117
  schema.order = schema.order.filter((x) => x !== key);
114
118
  }
115
119
  }
116
- $: if (opened && schema.properties[opened]) {
120
+ $: opened && updateSelected(schema.properties[opened]);
121
+ function updateSelected(property) {
122
+ if (!property)
123
+ return;
117
124
  selected = opened
118
- ? schema.properties[opened].type !== 'object'
119
- ? schema.properties[opened].type
120
- : schema.properties[opened].format === 'resource-s3_object'
125
+ ? property.type !== 'object'
126
+ ? property.type
127
+ : property.format === 'resource-s3_object'
121
128
  ? 'S3'
122
- : schema.properties[opened].oneOf && schema.properties[opened].oneOf.length >= 2
129
+ : property.oneOf && property.oneOf.length >= 2
123
130
  ? 'oneOf'
124
131
  : 'object'
125
132
  : '';
@@ -160,15 +167,58 @@ let jsonView = false;
160
167
  let schemaString = JSON.stringify(schema, null, '\t');
161
168
  let error = undefined;
162
169
  let editor = undefined;
170
+ const editTabDefaultSize = noPreview ? 100 : 50;
171
+ editPanelSize = editTab ? editPanelInitialSize ?? editTabDefaultSize : 0;
172
+ let inputPanelSize = 100 - editPanelSize;
173
+ let editPanelSizeSmooth = tweened(editPanelSize, {
174
+ duration: 150
175
+ });
176
+ let inputPanelSizeSmooth = tweened(inputPanelSize, { duration: 150 });
177
+ function openEditTab() {
178
+ if (editPanelSize > 0)
179
+ return;
180
+ editPanelSizeSmooth.set(editTabDefaultSize);
181
+ inputPanelSizeSmooth.set(100 - editTabDefaultSize);
182
+ }
183
+ function closeEditTab() {
184
+ editPanelSizeSmooth.set(0);
185
+ inputPanelSizeSmooth.set(100);
186
+ }
187
+ function updatePanelSizes(editSize, inputSize) {
188
+ editPanelSize = editSize;
189
+ inputPanelSize = inputSize;
190
+ dispatch('editPanelSizeChanged', editSize);
191
+ }
192
+ $: updatePanelSizes($editPanelSizeSmooth, $inputPanelSizeSmooth);
193
+ $: !!editTab ? openEditTab() : closeEditTab();
194
+ let pannelButtonWidth = 0;
195
+ export let pannelExtraButtonWidth = 0;
163
196
  </script>
164
197
 
165
- <div style={offset ? `height: calc(100vh - ${offset}px);` : 'h-full'}>
166
- <Splitpanes>
198
+ <div class="w-full h-full">
199
+ <div class="relative z-[100000]">
200
+ <div
201
+ class="absolute"
202
+ style="right: calc({editPanelSize}% - 2px - {pannelExtraButtonWidth}px); top: 0px;"
203
+ bind:clientWidth={pannelButtonWidth}
204
+ >
205
+ <slot name="openEditTab" />
206
+ </div>
207
+ </div>
208
+ <Splitpanes class="splitter-hidden w-full">
167
209
  {#if !noPreview}
168
- <Pane size={50} minSize={20}>
169
- <div class="p-4">
210
+ <Pane bind:size={inputPanelSize} minSize={20}>
211
+ <div class="flex flex-col pr-2 gap-2">
212
+ {#if $$slots.addProperty}
213
+ <div class="w-full justify-left pr-2">
214
+ <div style={`width: calc(100% - ${pannelButtonWidth - pannelExtraButtonWidth}px);`}>
215
+ <slot name="addProperty" />
216
+ </div>
217
+ </div>
218
+ {/if}
219
+
170
220
  <SchemaFormDnd
171
- {schema}
221
+ schema={previewSchema ? previewSchema : schema}
172
222
  {dndType}
173
223
  bind:args
174
224
  on:click={(e) => {
@@ -185,314 +235,336 @@ let editor = undefined;
185
235
  }}
186
236
  {lightweightMode}
187
237
  prettifyHeader={isAppInput}
238
+ disabled={!!previewSchema}
188
239
  />
240
+
241
+ <slot name="runButton" />
189
242
  </div>
190
243
  </Pane>
191
244
  {/if}
192
- <Pane size={noPreview ? 100 : 50} minSize={noPreview ? 100 : 20}>
193
- {#if jsonEnabled}
194
- <div class="w-full p-2 flex justify-end">
195
- <Toggle
196
- bind:checked={jsonView}
197
- label="JSON View"
198
- size="xs"
199
- options={{
200
- right: 'JSON editor',
201
- rightTooltip:
202
- 'Arguments can be edited either using the wizard, or by editing their JSON Schema.'
203
- }}
204
- lightMode
205
- on:change={() => {
206
- schemaString = JSON.stringify(schema, null, '\t')
207
- editor?.setCode(schemaString)
208
- }}
209
- />
210
- </div>
211
- {/if}
212
245
 
213
- {#if !jsonView}
214
- <div class="w-full {clazz} {flexWrap ? 'flex flex-row flex-wrap gap-x-6 ' : ''} divide-y">
215
- {#if keys.length > 0}
216
- {#each keys as argName, i (argName)}
217
- <div>
218
- <!-- svelte-ignore a11y-click-events-have-key-events -->
219
- <!-- svelte-ignore a11y-no-static-element-interactions -->
220
- <div
221
- class={twMerge(
222
- 'w-full flex bg-gray-50 dark:bg-gray-800 px-4 py-1 justify-between items-center hover:bg-gray-100 cursor-pointer',
223
- opened === argName ? 'bg-gray-100 hover:bg-gray-200' : ''
224
- )}
225
- on:click={() => {
226
- if (opened === argName) {
227
- opened = undefined
228
- } else {
229
- opened = argName
230
- }
231
- }}
232
- >
233
- <div class="flex flex-row gap-2">
234
- {argName}
235
- {#if !uiOnly}
236
- <div on:click|stopPropagation|preventDefault>
237
- <Popup
238
- floatingConfig={{ strategy: 'absolute', placement: 'bottom-end' }}
239
- containerClasses="border rounded-lg shadow-lg p-4 bg-surface"
240
- let:close
241
- >
242
- <svelte:fragment slot="button">
243
- <Button
244
- color="light"
245
- size="xs2"
246
- nonCaptureEvent
247
- startIcon={{ icon: Pen }}
248
- iconOnly
249
- />
250
- </svelte:fragment>
251
- <Label label="Name">
252
- <div class="flex flex-col gap-2">
253
- <input
254
- type="text"
255
- class="w-full !bg-surface"
256
- value={argName}
257
- id={argName + i}
258
- on:keydown={(event) => {
259
- if (event.key === 'Enter') {
260
- renameProperty(argName, argName + i)
261
- close(null)
262
- }
263
- }}
264
- />
265
- <Button
266
- variant="border"
267
- color="light"
268
- size="xs"
269
- on:click={() => {
270
- renameProperty(argName, argName + i)
271
- close(null)
272
- }}
273
- >
274
- Rename
275
- </Button>
276
- </div>
277
- </Label>
278
- </Popup>
279
- </div>
280
- {/if}
281
- </div>
282
-
283
- {#if schema.required?.includes(argName)}
284
- <span class="text-red-500 text-xs"> Required </span>
285
- {/if}
246
+ {#if editPanelSize > 0}
247
+ <Pane
248
+ bind:size={editPanelSize}
249
+ minSize={noPreview ? 100 : 50}
250
+ class={twMerge('border rounded-md', pannelButtonWidth > 0 ? 'rounded-tl-none' : '')}
251
+ >
252
+ {#if editTab !== 'inputEditor'}
253
+ <slot name="extraTab" />
254
+ {:else}
255
+ <!-- WIP -->
256
+ {#if jsonEnabled}
257
+ <div class="w-full p-3 flex justify-end">
258
+ <Toggle
259
+ bind:checked={jsonView}
260
+ label="JSON View"
261
+ size="xs"
262
+ options={{
263
+ right: 'JSON editor',
264
+ rightTooltip:
265
+ 'Arguments can be edited either using the wizard, or by editing their JSON Schema.'
266
+ }}
267
+ lightMode
268
+ on:change={() => {
269
+ schemaString = JSON.stringify(schema, null, '\t')
270
+ editor?.setCode(schemaString)
271
+ }}
272
+ />
273
+ </div>
274
+ {/if}
286
275
 
287
- {#if !uiOnly}
288
- <button
289
- class="rounded-full p-1 text-gray-500 bg-white
290
- 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"
291
- aria-label="Clear"
276
+ {#if !jsonView}
277
+ <div
278
+ class="w-full {clazz} {flexWrap ? 'flex flex-row flex-wrap gap-x-6 ' : ''} divide-y"
279
+ >
280
+ {#if keys.length > 0}
281
+ {#each keys as argName, i (argName)}
282
+ <div>
283
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
284
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
285
+ <div
286
+ class={twMerge(
287
+ 'w-full flex bg-gray-50 dark:bg-gray-800 px-4 py-1 justify-between items-center hover:bg-gray-100 cursor-pointer',
288
+ opened === argName ? 'bg-gray-100 hover:bg-gray-200' : ''
289
+ )}
292
290
  on:click={() => {
293
- dispatch('delete', argName)
291
+ if (opened === argName) {
292
+ opened = undefined
293
+ } else {
294
+ opened = argName
295
+ }
294
296
  }}
295
297
  >
296
- <X size={16} />
297
- </button>
298
- {/if}
299
- </div>
300
- {#if opened === argName}
301
- <div class="p-4 border-t">
302
- {#if !schemaSkippedValues.includes(argName) && Object.keys(schema?.properties ?? {}).includes(argName)}
303
- {#if typeof args == 'object' && schema?.properties[argName]}
304
- <PropertyEditor
305
- bind:description={schema.properties[argName].description}
306
- type={schema.properties[argName].type}
307
- bind:oneOf={schema.properties[argName].oneOf}
308
- bind:pattern={schema.properties[argName].pattern}
309
- bind:enum_={schema.properties[argName].enum}
310
- bind:format={schema.properties[argName].format}
311
- bind:contentEncoding={schema.properties[argName].contentEncoding}
312
- bind:customErrorMessage={schema.properties[argName].customErrorMessage}
313
- bind:itemsType={schema.properties[argName].items}
314
- bind:extra={schema.properties[argName]}
315
- bind:title={schema.properties[argName].title}
316
- bind:placeholder={schema.properties[argName].placeholder}
317
- bind:properties={schema.properties[argName].properties}
318
- bind:order={schema.properties[argName].order}
319
- {isFlowInput}
320
- {isAppInput}
321
- on:change={() => {
322
- schema = schema
323
- // console.log('schema', schema)
324
- dispatch('change', schema)
298
+ <div class="flex flex-row gap-2">
299
+ {argName}
300
+ {#if !uiOnly}
301
+ <div on:click|stopPropagation|preventDefault>
302
+ <Popup
303
+ floatingConfig={{ strategy: 'absolute', placement: 'bottom-end' }}
304
+ containerClasses="border rounded-lg shadow-lg p-4 bg-surface"
305
+ let:close
306
+ >
307
+ <svelte:fragment slot="button">
308
+ <Button
309
+ color="light"
310
+ size="xs2"
311
+ nonCaptureEvent
312
+ startIcon={{ icon: Pen }}
313
+ iconOnly
314
+ />
315
+ </svelte:fragment>
316
+ <Label label="Name">
317
+ <div class="flex flex-col gap-2">
318
+ <input
319
+ type="text"
320
+ class="w-full !bg-surface"
321
+ value={argName}
322
+ id={argName + i}
323
+ on:keydown={(event) => {
324
+ if (event.key === 'Enter') {
325
+ renameProperty(argName, argName + i)
326
+ close(null)
327
+ }
328
+ }}
329
+ />
330
+ <Button
331
+ variant="border"
332
+ color="light"
333
+ size="xs"
334
+ on:click={() => {
335
+ renameProperty(argName, argName + i)
336
+ close(null)
337
+ }}
338
+ >
339
+ Rename
340
+ </Button>
341
+ </div>
342
+ </Label>
343
+ </Popup>
344
+ </div>
345
+ {/if}
346
+ </div>
347
+
348
+ {#if schema.required?.includes(argName)}
349
+ <span class="text-red-500 text-xs"> Required </span>
350
+ {/if}
351
+
352
+ {#if !uiOnly}
353
+ <button
354
+ class="rounded-full p-1 text-gray-500 bg-white
355
+ 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"
356
+ aria-label="Clear"
357
+ on:click={() => {
358
+ dispatch('delete', argName)
325
359
  }}
326
360
  >
327
- <svelte:fragment slot="typeeditor">
328
- {#if isFlowInput || isAppInput}
329
- <Label label="Type">
330
- <ToggleButtonGroup
331
- tabListClass="flex-wrap"
332
- class="h-auto"
333
- bind:selected
334
- on:selected={(e) => {
335
- const isS3 = e.detail == 'S3'
336
- const isOneOf = e.detail == 'oneOf'
361
+ <X size={16} />
362
+ </button>
363
+ {/if}
364
+ </div>
365
+ {#if opened === argName}
366
+ <div class="p-4 border-t">
367
+ {#if !schemaSkippedValues.includes(argName) && Object.keys(schema?.properties ?? {}).includes(argName)}
368
+ {#if typeof args == 'object' && schema?.properties[argName]}
369
+ <PropertyEditor
370
+ bind:description={schema.properties[argName].description}
371
+ type={schema.properties[argName].type}
372
+ bind:oneOf={schema.properties[argName].oneOf}
373
+ bind:pattern={schema.properties[argName].pattern}
374
+ bind:enum_={schema.properties[argName].enum}
375
+ bind:format={schema.properties[argName].format}
376
+ bind:contentEncoding={schema.properties[argName].contentEncoding}
377
+ bind:customErrorMessage={schema.properties[argName]
378
+ .customErrorMessage}
379
+ bind:itemsType={schema.properties[argName].items}
380
+ bind:extra={schema.properties[argName]}
381
+ bind:title={schema.properties[argName].title}
382
+ bind:placeholder={schema.properties[argName].placeholder}
383
+ bind:properties={schema.properties[argName].properties}
384
+ bind:order={schema.properties[argName].order}
385
+ {isFlowInput}
386
+ {isAppInput}
387
+ on:change={() => {
388
+ schema = schema
389
+ // console.log('schema', schema)
390
+ dispatch('change', schema)
391
+ }}
392
+ >
393
+ <svelte:fragment slot="typeeditor">
394
+ {#if isFlowInput || isAppInput}
395
+ <Label label="Type">
396
+ <ToggleButtonGroup
397
+ tabListClass="flex-wrap"
398
+ class="h-auto"
399
+ bind:selected
400
+ on:selected={(e) => {
401
+ const isS3 = e.detail == 'S3'
402
+ const isOneOf = e.detail == 'oneOf'
337
403
 
338
- selected = e.detail
404
+ selected = e.detail
339
405
 
340
- const emptyProperty = {
341
- contentEncoding: undefined,
342
- enum_: undefined,
343
- pattern: undefined,
344
- default: undefined,
345
- min: undefined,
346
- max: undefined,
347
- currency: undefined,
348
- currencyLocale: undefined,
349
- multiselect: undefined,
350
- password: undefined,
351
- dateFormat: undefined,
352
- ...(e.detail == 'array' ? { items: { type: 'string' } } : {}),
353
- showExpr: undefined,
354
- nullable: undefined,
355
- required: undefined
356
- }
406
+ const emptyProperty = {
407
+ contentEncoding: undefined,
408
+ enum_: undefined,
409
+ pattern: undefined,
410
+ default: undefined,
411
+ min: undefined,
412
+ max: undefined,
413
+ currency: undefined,
414
+ currencyLocale: undefined,
415
+ multiselect: undefined,
416
+ password: undefined,
417
+ dateFormat: undefined,
418
+ ...(e.detail == 'array'
419
+ ? { items: { type: 'string' } }
420
+ : {}),
421
+ showExpr: undefined,
422
+ nullable: undefined,
423
+ required: undefined
424
+ }
357
425
 
358
- if (isS3) {
359
- schema.properties[argName] = {
360
- ...emptyProperty,
361
- type: 'object',
362
- format: 'resource-s3_object'
363
- }
364
- } else if (isOneOf) {
365
- schema.properties[argName] = {
366
- ...emptyProperty,
367
- type: 'object',
368
- oneOf: [
369
- {
370
- title: 'Option 1',
426
+ if (isS3) {
427
+ schema.properties[argName] = {
428
+ ...emptyProperty,
371
429
  type: 'object',
372
- properties: {
373
- label: {
374
- type: 'string',
375
- enum: ['Option 1']
376
- },
377
- property_1: {
378
- type: 'string'
379
- }
380
- }
381
- },
382
- {
383
- title: 'Option 2',
430
+ format: 'resource-s3_object'
431
+ }
432
+ } else if (isOneOf) {
433
+ schema.properties[argName] = {
434
+ ...emptyProperty,
384
435
  type: 'object',
385
- properties: {
386
- label: {
387
- type: 'string',
388
- enum: ['Option 2']
436
+ oneOf: [
437
+ {
438
+ title: 'Option 1',
439
+ type: 'object',
440
+ properties: {
441
+ label: {
442
+ type: 'string',
443
+ enum: ['Option 1']
444
+ },
445
+ property_1: {
446
+ type: 'string'
447
+ }
448
+ }
389
449
  },
390
- property_2: {
391
- type: 'string'
450
+ {
451
+ title: 'Option 2',
452
+ type: 'object',
453
+ properties: {
454
+ label: {
455
+ type: 'string',
456
+ enum: ['Option 2']
457
+ },
458
+ property_2: {
459
+ type: 'string'
460
+ }
461
+ }
392
462
  }
393
- }
463
+ ]
394
464
  }
395
- ]
396
- }
465
+ } else {
466
+ schema.properties[argName] = {
467
+ ...emptyProperty,
468
+ format: undefined,
469
+ type: e.detail
470
+ }
471
+ }
472
+ schema = schema
473
+ dispatch('change', schema)
474
+ }}
475
+ >
476
+ {#each [['String', 'string'], ['Number', 'number'], ['Integer', 'integer'], ['Object', 'object'], ['OneOf', 'oneOf'], ['Array', 'array'], ['Boolean', 'boolean'], ['S3 Object', 'S3']] as x}
477
+ <ToggleButton value={x[1]} label={x[0]} />
478
+ {/each}
479
+ </ToggleButtonGroup>
480
+ </Label>
481
+ {/if}
482
+ </svelte:fragment>
483
+
484
+ {#if isFlowInput || isAppInput}
485
+ <FlowPropertyEditor
486
+ bind:defaultValue={schema.properties[argName].default}
487
+ {variableEditor}
488
+ {itemPicker}
489
+ {lightweightMode}
490
+ bind:nullable={schema.properties[argName].nullable}
491
+ bind:disabled={schema.properties[argName].disabled}
492
+ type={schema.properties[argName].type}
493
+ bind:oneOf={schema.properties[argName].oneOf}
494
+ bind:format={schema.properties[argName].format}
495
+ contentEncoding={schema.properties[argName].contentEncoding}
496
+ required={schema.required?.includes(argName) ?? false}
497
+ pattern={schema.properties[argName].pattern}
498
+ password={schema.properties[argName].password}
499
+ propsNames={schema.properties[argName].propsNames}
500
+ bind:showExpr={schema.properties[argName].showExpr}
501
+ extra={schema.properties[argName]}
502
+ customErrorMessage={schema.properties[argName].customErrorMessage}
503
+ itemsType={schema.properties[argName].items}
504
+ bind:properties={schema.properties[argName].properties}
505
+ bind:order={schema.properties[argName].order}
506
+ bind:requiredProperty={schema.properties[argName].required}
507
+ {displayWebhookWarning}
508
+ on:requiredChange={(event) => {
509
+ if (event.detail.required) {
510
+ schema.required = schema.required ?? []
511
+ schema.required.push(argName)
397
512
  } else {
398
- schema.properties[argName] = {
399
- ...emptyProperty,
400
- format: undefined,
401
- type: e.detail
402
- }
513
+ schema.required = schema.required?.filter(
514
+ (x) => x !== argName
515
+ )
403
516
  }
517
+ dispatch('change', schema)
518
+ }}
519
+ on:schemaChange={(e) => {
404
520
  schema = schema
405
521
  dispatch('change', schema)
406
522
  }}
407
- >
408
- {#each [['String', 'string'], ['Number', 'number'], ['Integer', 'integer'], ['Object', 'object'], ['OneOf', 'oneOf'], ['Array', 'array'], ['Boolean', 'boolean'], ['S3 Object', 'S3']] as x}
409
- <ToggleButton value={x[1]} label={x[0]} />
410
- {/each}
411
- </ToggleButtonGroup>
412
- </Label>
413
- {/if}
414
- </svelte:fragment>
415
-
416
- {#if isFlowInput || isAppInput}
417
- <FlowPropertyEditor
418
- bind:defaultValue={schema.properties[argName].default}
419
- {variableEditor}
420
- {itemPicker}
421
- {lightweightMode}
422
- bind:nullable={schema.properties[argName].nullable}
423
- bind:disabled={schema.properties[argName].disabled}
424
- type={schema.properties[argName].type}
425
- bind:oneOf={schema.properties[argName].oneOf}
426
- bind:format={schema.properties[argName].format}
427
- contentEncoding={schema.properties[argName].contentEncoding}
428
- required={schema.required?.includes(argName) ?? false}
429
- pattern={schema.properties[argName].pattern}
430
- password={schema.properties[argName].password}
431
- propsNames={schema.properties[argName].propsNames}
432
- bind:showExpr={schema.properties[argName].showExpr}
433
- extra={schema.properties[argName]}
434
- customErrorMessage={schema.properties[argName].customErrorMessage}
435
- itemsType={schema.properties[argName].items}
436
- bind:properties={schema.properties[argName].properties}
437
- bind:order={schema.properties[argName].order}
438
- bind:requiredProperty={schema.properties[argName].required}
439
- {displayWebhookWarning}
440
- on:requiredChange={(event) => {
441
- if (event.detail.required) {
442
- schema.required = schema.required ?? []
443
- schema.required.push(argName)
444
- } else {
445
- schema.required = schema.required?.filter((x) => x !== argName)
446
- }
447
- dispatch('change', schema)
448
- }}
449
- on:schemaChange={(e) => {
450
- schema = schema
451
- dispatch('change', schema)
452
- }}
453
- />
523
+ />
524
+ {/if}
525
+ </PropertyEditor>
454
526
  {/if}
455
- </PropertyEditor>
456
- {/if}
527
+ {/if}
528
+ </div>
457
529
  {/if}
458
530
  </div>
459
- {/if}
460
- </div>
461
- {/each}
462
- {:else if !shouldHideNoInputs}
463
- <div class="text-secondary text-sm p-2">No inputs</div>
464
- {/if}
465
- </div>
466
- {:else}
467
- <div class="p-2">
468
- <div class="border rounded h-full">
469
- <SimpleEditor
470
- bind:this={editor}
471
- small
472
- fixedOverflowWidgets={false}
473
- on:change={() => {
474
- try {
475
- schema = JSON.parse(schemaString)
476
- dispatch('change', schema)
477
- error = ''
478
- } catch (err) {
479
- error = err.message
480
- }
481
- }}
482
- bind:code={schemaString}
483
- lang="json"
484
- autoHeight
485
- automaticLayout
486
- />
487
- </div>
488
- {#if !emptyString(error)}
489
- <div class="text-red-400 text-xs">{error}</div>
531
+ {/each}
532
+ {:else if !shouldHideNoInputs}
533
+ <div class="text-secondary text-sm p-2">No inputs</div>
534
+ {/if}
535
+ </div>
490
536
  {:else}
491
- <div><br /> </div>
537
+ <div class="p-2">
538
+ <div class="border rounded h-full">
539
+ <SimpleEditor
540
+ bind:this={editor}
541
+ small
542
+ fixedOverflowWidgets={false}
543
+ on:change={() => {
544
+ try {
545
+ schema = JSON.parse(schemaString)
546
+ dispatch('change', schema)
547
+ error = ''
548
+ } catch (err) {
549
+ error = err.message
550
+ }
551
+ }}
552
+ bind:code={schemaString}
553
+ lang="json"
554
+ autoHeight
555
+ automaticLayout
556
+ />
557
+ </div>
558
+ {#if !emptyString(error)}
559
+ <div class="text-red-400 text-xs">{error}</div>
560
+ {:else}
561
+ <div><br /> </div>
562
+ {/if}
563
+ </div>
492
564
  {/if}
493
- </div>
494
- {/if}
495
- </Pane>
565
+ {/if}
566
+ </Pane>
567
+ {/if}
496
568
  </Splitpanes>
497
569
  </div>
498
570
 
@@ -529,3 +601,10 @@ let editor = undefined;
529
601
 
530
602
  <VariableEditor bind:this={variableEditor} />
531
603
  {/if}
604
+
605
+ <style>
606
+ :global(.splitter-hidden .splitpanes__splitter) {
607
+ background-color: transparent !important;
608
+ border: none !important;
609
+ opacity: 0 !important;
610
+ }</style>