windmill-components 1.444.1 → 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 +7 -6
  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
@@ -1,128 +1,479 @@
1
- <script>import { Button, DrawerContent } from '../../common';
1
+ <script>import { Button } from '../../common';
2
+ import { ButtonType } from '../../common/button/model';
2
3
  import { getContext } from 'svelte';
3
4
  import FlowCard from '../common/FlowCard.svelte';
4
- import { copyFirstStepSchema } from '../flowStore';
5
5
  import Drawer from '../../common/drawer/Drawer.svelte';
6
6
  import SimpleEditor from '../../SimpleEditor.svelte';
7
7
  import { convert } from '@redocly/json-to-json-schema';
8
8
  import { sendUserToast } from '../../../toast';
9
- import SavedInputs from '../../SavedInputs.svelte';
10
9
  import EditableSchemaForm from '../../EditableSchemaForm.svelte';
11
- import AddProperty from '../../schema/AddProperty.svelte';
10
+ import AddPropertyV2 from '../../schema/AddPropertyV2.svelte';
12
11
  import FlowInputViewer from '../../FlowInputViewer.svelte';
12
+ import HistoricInputs from '../../HistoricInputs.svelte';
13
+ import SavedInputsPicker from '../../SavedInputsPicker.svelte';
14
+ import FirstStepInputs from '../../FirstStepInputs.svelte';
15
+ import { CornerDownLeft, Pen, ChevronRight, ChevronDown, Plus, History, Braces, Code, Save, X } from 'lucide-svelte';
16
+ import CaptureIcon from '../../triggers/CaptureIcon.svelte';
17
+ import FlowPreviewContent from '../../FlowPreviewContent.svelte';
18
+ import FlowInputEditor from './FlowInputEditor.svelte';
19
+ import CapturesInputs from '../../CapturesInputs.svelte';
20
+ import { twMerge } from 'tailwind-merge';
21
+ import ButtonDropDown from '../../meltComponents/ButtonDropDown.svelte';
22
+ import CaptureButton from '../../triggers/CaptureButton.svelte';
13
23
  export let noEditor;
14
24
  export let disabled;
15
- const { flowStore, flowStateStore, previewArgs, initialPath } = getContext('FlowEditorContext');
16
- let inputLibraryDrawer;
17
- let jsonPayload;
25
+ const { flowStore, previewArgs, pathStore, initialPath, flowInputEditorState } = getContext('FlowEditorContext');
18
26
  let pendingJson;
19
27
  let addProperty = undefined;
20
- function importJson() {
21
- const parsed = JSON.parse(pendingJson);
28
+ let previewSchema = undefined;
29
+ let payloadData = undefined;
30
+ let previewArguments = $previewArgs;
31
+ let editOptionsOpen = false;
32
+ let dropdownItems = [];
33
+ let editPanelSize = $flowInputEditorState?.editPanelSize ?? 0;
34
+ function updateEditPanelSize(size) {
35
+ if (!$flowInputEditorState)
36
+ return;
37
+ if (!size || size === 0) {
38
+ $flowInputEditorState.editPanelSize = undefined;
39
+ return;
40
+ }
41
+ $flowInputEditorState.editPanelSize = size;
42
+ }
43
+ $: updateEditPanelSize(editPanelSize);
44
+ const getDropdownItems = () => {
45
+ return [
46
+ {
47
+ label: 'Input editor',
48
+ onClick: () => {
49
+ handleEditSchema('inputEditor');
50
+ },
51
+ disabled: !$flowInputEditorState?.selectedTab ||
52
+ $flowInputEditorState?.selectedTab === 'inputEditor',
53
+ icon: Pen
54
+ },
55
+ {
56
+ label: 'Trigger captures',
57
+ onClick: () => {
58
+ handleEditSchema('captures');
59
+ },
60
+ disabled: $flowInputEditorState?.selectedTab === 'captures',
61
+ icon: CaptureIcon
62
+ },
63
+ {
64
+ label: 'History',
65
+ onClick: () => {
66
+ handleEditSchema('history');
67
+ },
68
+ disabled: $flowInputEditorState?.selectedTab === 'history',
69
+ icon: History
70
+ },
71
+ {
72
+ label: 'Json payload',
73
+ onClick: () => {
74
+ handleEditSchema('json');
75
+ },
76
+ disabled: $flowInputEditorState?.selectedTab === 'json',
77
+ icon: Braces
78
+ },
79
+ {
80
+ label: "First step's inputs",
81
+ onClick: () => {
82
+ handleEditSchema('firstStepInputs');
83
+ },
84
+ icon: Code
85
+ },
86
+ {
87
+ label: 'Saved inputs',
88
+ onClick: () => {
89
+ handleEditSchema('savedInputs');
90
+ },
91
+ disabled: $flowInputEditorState?.selectedTab === 'savedInputs',
92
+ icon: Save
93
+ }
94
+ ].filter((item) => !item.disabled);
95
+ };
96
+ function handleEditSchema(editTab) {
97
+ if (!$flowInputEditorState) {
98
+ return;
99
+ }
100
+ if (editTab !== undefined) {
101
+ $flowInputEditorState.selectedTab = editTab;
102
+ }
103
+ else if ($flowInputEditorState.selectedTab === undefined) {
104
+ $flowInputEditorState.selectedTab = 'inputEditor';
105
+ }
106
+ else {
107
+ $flowInputEditorState.selectedTab = undefined;
108
+ }
109
+ }
110
+ function schemaFromPayload(payload) {
111
+ const parsed = JSON.parse(JSON.stringify(payload));
22
112
  if (!parsed) {
23
- sendUserToast('Invalid JSON', true);
113
+ sendUserToast('Invalid Schema', true);
24
114
  return;
25
115
  }
26
- $flowStore.schema = { required: [], properties: {}, ...convert(parsed) };
27
- jsonPayload.closeDrawer();
116
+ if (Object.keys(parsed).length === 0) {
117
+ return {
118
+ required: [],
119
+ properties: {},
120
+ type: 'object',
121
+ additionalProperties: false,
122
+ order: []
123
+ };
124
+ }
125
+ return { required: [], properties: {}, ...convert(parsed) };
126
+ }
127
+ let flowPreviewContent;
128
+ let previewOpen = false;
129
+ function handleKeydown(event) {
130
+ if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') {
131
+ runPreview();
132
+ }
133
+ }
134
+ function runPreview() {
135
+ if (previewArguments) {
136
+ $previewArgs = previewArguments;
137
+ }
138
+ previewOpen = true;
139
+ flowPreviewContent?.test();
28
140
  }
29
- const yOffset = 191;
141
+ function updatePreviewSchemaAndArgs(payload) {
142
+ payloadData = payload;
143
+ if (!payload) {
144
+ updatePreviewArguments(undefined);
145
+ previewSchema = undefined;
146
+ return;
147
+ }
148
+ previewSchema = schemaFromPayload(payload);
149
+ updatePreviewArguments(payload);
150
+ }
151
+ function applySchemaAndArgs() {
152
+ if (!previewSchema) {
153
+ return;
154
+ }
155
+ $flowStore.schema = previewSchema;
156
+ if (previewArguments) {
157
+ $previewArgs = previewArguments;
158
+ }
159
+ if ($flowInputEditorState) {
160
+ $flowInputEditorState.selectedTab = undefined;
161
+ }
162
+ }
163
+ function applySchema() {
164
+ $flowStore.schema = previewSchema;
165
+ if ($flowInputEditorState) {
166
+ $flowInputEditorState.selectedTab = undefined;
167
+ }
168
+ }
169
+ function updatePreviewArguments(payloadData) {
170
+ if (!payloadData) {
171
+ previewArguments = $previewArgs;
172
+ return;
173
+ }
174
+ previewArguments = payloadData;
175
+ }
176
+ let jsonValid = false;
177
+ function updatePayloadFromJson(jsonInput) {
178
+ if (jsonInput === undefined || jsonInput === null || jsonInput.trim() === '') {
179
+ updatePreviewSchemaAndArgs(undefined);
180
+ jsonValid = false;
181
+ return;
182
+ }
183
+ try {
184
+ const parsed = JSON.parse(jsonInput);
185
+ updatePreviewSchemaAndArgs(parsed);
186
+ jsonValid = true;
187
+ }
188
+ catch (error) {
189
+ updatePreviewSchemaAndArgs(undefined);
190
+ jsonValid = false;
191
+ }
192
+ }
193
+ let tabButtonWidth = 0;
194
+ const TAB_TITLES = {
195
+ inputEditor: 'Input editor',
196
+ captures: 'Captures',
197
+ history: 'History',
198
+ savedInputs: 'Saved inputs',
199
+ json: 'JSON',
200
+ firstStepInputs: 'First step',
201
+ undefined: ''
202
+ };
203
+ let connectFirstNode = () => { };
204
+ let init = false;
205
+ function initPayloadData() {
206
+ if ($flowInputEditorState.payloadData && !init) {
207
+ init = true;
208
+ updatePreviewSchemaAndArgs($flowInputEditorState.payloadData);
209
+ $flowInputEditorState.payloadData = undefined;
210
+ }
211
+ }
212
+ $: $flowInputEditorState && ((dropdownItems = getDropdownItems()), initPayloadData());
213
+ let preventEnter = false;
30
214
  </script>
31
215
 
216
+ <!-- Add svelte:window to listen for keyboard events -->
217
+ <svelte:window on:keydown={handleKeydown} />
218
+
219
+ <Drawer bind:open={previewOpen} alwaysOpen size="75%">
220
+ <FlowPreviewContent
221
+ bind:this={flowPreviewContent}
222
+ open={previewOpen}
223
+ previewMode="whole"
224
+ on:close={() => {
225
+ previewOpen = false
226
+ }}
227
+ />
228
+ </Drawer>
229
+
32
230
  <FlowCard {noEditor} title="Flow Input">
33
231
  {#if !disabled}
34
- <div class="flex flex-row items-center gap-2 px-4 py-2 border-b">
35
- <div class="text-sm">Copy input's schema from</div>
36
- <Button
37
- color="dark"
38
- size="xs"
39
- on:click={() => {
40
- jsonPayload.openDrawer()
232
+ <div class="py-2 px-4 h-full">
233
+ <EditableSchemaForm
234
+ bind:schema={$flowStore.schema}
235
+ isFlowInput
236
+ on:edit={(e) => {
237
+ addProperty?.openDrawer(e.detail)
41
238
  }}
42
- >
43
- A JSON
44
- </Button>
45
- <Button
46
- color="dark"
47
- size="xs"
48
- on:click={() => {
49
- inputLibraryDrawer.openDrawer()
239
+ on:delete={(e) => {
240
+ addProperty?.handleDeleteArgument([e.detail])
50
241
  }}
242
+ displayWebhookWarning
243
+ editTab={$flowInputEditorState?.selectedTab}
244
+ {previewSchema}
245
+ bind:args={previewArguments}
246
+ bind:editPanelSize
247
+ editPanelInitialSize={$flowInputEditorState?.editPanelSize}
248
+ pannelExtraButtonWidth={$flowInputEditorState?.editPanelSize ? tabButtonWidth : 0}
51
249
  >
52
- Past runs/Input library
53
- </Button>
54
- <Button
55
- color="dark"
56
- size="xs"
57
- disabled={$flowStore.value.modules.length === 0 ||
58
- $flowStore.value.modules[0].value.type == 'identity'}
59
- on:click={() => copyFirstStepSchema($flowStateStore, flowStore)}
60
- >
61
- First step's inputs
62
- </Button>
63
- </div>
64
- <div class="p-4 border-b">
65
- <AddProperty
66
- bind:schema={$flowStore.schema}
67
- bind:this={addProperty}
68
- on:change={() => {
69
- $flowStore = $flowStore
70
- }}
71
- />
72
- </div>
250
+ <svelte:fragment slot="openEditTab">
251
+ <div
252
+ class={twMerge(
253
+ 'flex flex-row divide-x rounded-md bg-surface overflow-hidden',
254
+ !!$flowInputEditorState?.selectedTab ? 'rounded-r-none' : '',
255
+ ButtonType.ColorVariants.blue.divider
256
+ )}
257
+ >
258
+ <button
259
+ on:click={() => {
260
+ handleEditSchema()
261
+ }}
262
+ title={!!$flowInputEditorState?.selectedTab
263
+ ? 'Close input editor'
264
+ : 'Open input editor'}
265
+ class={ButtonType.ColorVariants.blue.contained}
266
+ >
267
+ <div class="p-2 center-center">
268
+ <svelte:component
269
+ this={!!$flowInputEditorState?.selectedTab ? ChevronRight : Pen}
270
+ size={14}
271
+ />
272
+ </div>
273
+ </button>
73
274
 
74
- <EditableSchemaForm
75
- bind:schema={$flowStore.schema}
76
- isFlowInput
77
- on:edit={(e) => {
78
- addProperty?.openDrawer(e.detail)
79
- }}
80
- on:delete={(e) => {
81
- addProperty?.handleDeleteArgument([e.detail])
82
- }}
83
- offset={yOffset}
84
- displayWebhookWarning
85
- />
275
+ <ButtonDropDown
276
+ {dropdownItems}
277
+ closeOnClick={true}
278
+ bind:open={editOptionsOpen}
279
+ placement="bottom-end"
280
+ >
281
+ <div
282
+ class={twMerge(
283
+ 'p-2 center-center hover:bg-surface-hover',
284
+ ButtonType.ColorVariants.blue.contained,
285
+ 'flex flex-row items-center rounded-br-md',
286
+ 'transition-all duration-150 ease-in-out overflow-hidden whitespace-nowrap',
287
+ !!$flowInputEditorState?.selectedTab ? 'w-[122px] px-3' : 'w-[30px]'
288
+ )}
289
+ bind:clientWidth={tabButtonWidth}
290
+ >
291
+ <div class="flex flex-row items-center gap-1 justify-between w-full">
292
+ {#if !!$flowInputEditorState?.selectedTab}
293
+ <h2 class="text-xs">{TAB_TITLES[$flowInputEditorState?.selectedTab]}</h2>
294
+ {/if}
295
+ <ChevronDown size={14} />
296
+ </div>
297
+ </div>
298
+ </ButtonDropDown>
299
+ </div>
300
+ </svelte:fragment>
301
+ <svelte:fragment slot="addProperty">
302
+ {#if !!previewSchema}
303
+ <div
304
+ class={twMerge(
305
+ 'bg-blue-50 border-blue-200 border dark:bg-blue-900/40 dark:border-blue-700/40 text-xs p-2 w-full flex flex-row gap-2 items-center justify-left rounded-md',
306
+ 'text-blue-700 dark:text-blue-100',
307
+ 'relative'
308
+ )}
309
+ >
310
+ <span> Preview only, update schema to save.</span>
311
+ <div class="flex flex-row items-center gap-2 absolute right-2">
312
+ <Button
313
+ variant="contained"
314
+ color="light"
315
+ size="xs2"
316
+ startIcon={{ icon: X }}
317
+ shortCut={{ key: 'esc', withoutModifier: true }}
318
+ nonCaptureEvent
319
+ />
320
+ </div>
321
+ </div>
322
+ {:else}
323
+ <AddPropertyV2
324
+ bind:schema={$flowStore.schema}
325
+ bind:this={addProperty}
326
+ on:change={() => {
327
+ $flowStore = $flowStore
328
+ }}
329
+ >
330
+ <svelte:fragment slot="trigger">
331
+ <div
332
+ class="w-full py-2 flex justify-center items-center border border-dashed rounded-md hover:bg-surface-hover"
333
+ >
334
+ <Plus size={14} />
335
+ </div>
336
+ </svelte:fragment>
337
+ </AddPropertyV2>
338
+ {/if}
339
+ </svelte:fragment>
340
+ <svelte:fragment slot="extraTab">
341
+ {#if $flowInputEditorState?.selectedTab === 'history'}
342
+ <FlowInputEditor
343
+ disabled={!payloadData}
344
+ on:applySchemaAndArgs={applySchemaAndArgs}
345
+ on:applySchema={applySchema}
346
+ on:destroy={() => {
347
+ updatePreviewSchemaAndArgs(undefined)
348
+ }}
349
+ >
350
+ <HistoricInputs
351
+ scriptHash={null}
352
+ scriptPath={null}
353
+ flowPath={$pathStore}
354
+ on:select={(e) => {
355
+ updatePreviewSchemaAndArgs(e.detail ?? undefined)
356
+ }}
357
+ />
358
+ </FlowInputEditor>
359
+ {:else if $flowInputEditorState?.selectedTab === 'captures'}
360
+ <FlowInputEditor
361
+ disabled={!payloadData}
362
+ on:applySchemaAndArgs={applySchemaAndArgs}
363
+ on:applySchema={applySchema}
364
+ on:destroy={() => {
365
+ updatePreviewSchemaAndArgs(undefined)
366
+ }}
367
+ >
368
+ <svelete:fragment slot="action">
369
+ <div class="center-center">
370
+ <CaptureButton on:openTriggers small={true} />
371
+ </div>
372
+ </svelete:fragment>
373
+ <CapturesInputs
374
+ on:select={(e) => {
375
+ updatePreviewSchemaAndArgs(e.detail ?? undefined)
376
+ }}
377
+ flowPath={$pathStore}
378
+ />
379
+ </FlowInputEditor>
380
+ {:else if $flowInputEditorState?.selectedTab === 'savedInputs'}
381
+ <FlowInputEditor
382
+ {preventEnter}
383
+ disabled={!payloadData}
384
+ on:applySchemaAndArgs={applySchemaAndArgs}
385
+ on:applySchema={applySchema}
386
+ on:destroy={() => {
387
+ updatePreviewSchemaAndArgs(undefined)
388
+ }}
389
+ >
390
+ <SavedInputsPicker
391
+ flowPath={initialPath}
392
+ on:select={(e) => {
393
+ updatePreviewSchemaAndArgs(e.detail ?? undefined)
394
+ }}
395
+ on:isEditing={(e) => {
396
+ preventEnter = e.detail
397
+ }}
398
+ previewArgs={previewArguments}
399
+ />
400
+ </FlowInputEditor>
401
+ {:else if $flowInputEditorState?.selectedTab === 'json'}
402
+ <FlowInputEditor
403
+ {preventEnter}
404
+ disabled={!jsonValid}
405
+ on:applySchemaAndArgs={applySchemaAndArgs}
406
+ on:applySchema={applySchema}
407
+ on:destroy={() => {
408
+ updatePreviewSchemaAndArgs(undefined)
409
+ }}
410
+ >
411
+ <SimpleEditor
412
+ on:focus={() => {
413
+ preventEnter = true
414
+ updatePayloadFromJson(pendingJson)
415
+ }}
416
+ on:blur={async () => {
417
+ preventEnter = false
418
+ setTimeout(() => {
419
+ if (payloadData) {
420
+ updatePayloadFromJson('')
421
+ }
422
+ }, 100)
423
+ }}
424
+ on:change={(e) => {
425
+ updatePayloadFromJson(e.detail.code)
426
+ }}
427
+ bind:code={pendingJson}
428
+ lang="json"
429
+ class="h-full"
430
+ placeholder={'Write a JSON payload. The input schema will be inferred.<br/><br/>Example:<br/><br/>{<br/>&nbsp;&nbsp;"foo": "12"<br/>}'}
431
+ />
432
+ </FlowInputEditor>
433
+ {:else if $flowInputEditorState?.selectedTab === 'firstStepInputs'}
434
+ <FlowInputEditor
435
+ disabled={!previewSchema}
436
+ on:applySchemaAndArgs={() => {
437
+ applySchemaAndArgs()
438
+ connectFirstNode()
439
+ }}
440
+ on:applySchema={applySchema}
441
+ on:destroy={() => {
442
+ updatePreviewSchemaAndArgs(undefined)
443
+ }}
444
+ >
445
+ <FirstStepInputs
446
+ on:connectFirstNode={({ detail }) => {
447
+ connectFirstNode = detail.connectFirstNode
448
+ }}
449
+ on:select={(e) => {
450
+ previewSchema = e.detail ?? undefined
451
+ }}
452
+ />
453
+ </FlowInputEditor>
454
+ {/if}
455
+ </svelte:fragment>
456
+ <svelte:fragment slot="runButton">
457
+ <div class="w-full flex justify-end pr-5">
458
+ <Button
459
+ color="dark"
460
+ btnClasses="w-fit"
461
+ disabled={!!previewSchema}
462
+ size="xs"
463
+ shortCut={{ Icon: CornerDownLeft, hide: false }}
464
+ on:click={() => {
465
+ runPreview()
466
+ }}
467
+ >
468
+ Run
469
+ </Button>
470
+ </div>
471
+ </svelte:fragment>
472
+ </EditableSchemaForm>
473
+ </div>
86
474
  {:else}
87
475
  <div class="p-4 border-b">
88
476
  <FlowInputViewer schema={$flowStore.schema} />
89
477
  </div>
90
478
  {/if}
91
479
  </FlowCard>
92
-
93
- <Drawer bind:this={jsonPayload} size="800px">
94
- <DrawerContent
95
- title="Input schema from JSON"
96
- on:close={() => {
97
- jsonPayload.closeDrawer()
98
- }}
99
- noPadding
100
- >
101
- <SimpleEditor bind:code={pendingJson} lang="json" class="h-full" />
102
- <svelte:fragment slot="actions">
103
- <Button size="sm" on:click={importJson}>Import</Button>
104
- </svelte:fragment>
105
- </DrawerContent>
106
- </Drawer>
107
-
108
- <Drawer bind:this={inputLibraryDrawer}>
109
- <DrawerContent title="Input library {initialPath}" on:close={inputLibraryDrawer?.toggleDrawer}>
110
- <SavedInputs
111
- flowPath={initialPath}
112
- isValid={true}
113
- args={$previewArgs}
114
- canSaveInputs={false}
115
- on:selected_args={(e) => {
116
- const parsed = JSON.parse(JSON.stringify(e.detail))
117
-
118
- if (!parsed) {
119
- sendUserToast('Invalid JSON', true)
120
- return
121
- }
122
-
123
- $flowStore.schema = { required: [], properties: {}, ...convert(parsed) }
124
- inputLibraryDrawer?.closeDrawer()
125
- }}
126
- />
127
- </DrawerContent>
128
- </Drawer>
@@ -5,6 +5,8 @@ declare const __propDef: {
5
5
  disabled: boolean;
6
6
  };
7
7
  events: {
8
+ openTriggers: CustomEvent<any>;
9
+ } & {
8
10
  [evt: string]: CustomEvent<any>;
9
11
  };
10
12
  slots: {};
@@ -0,0 +1,46 @@
1
+ <script>import { createEventDispatcher, onDestroy } from 'svelte';
2
+ import Section from '../../Section.svelte';
3
+ import Button from '../../common/button/Button.svelte';
4
+ import { CornerDownLeft, Save } from 'lucide-svelte';
5
+ export let name = '';
6
+ export let disabled = false;
7
+ export let preventEnter = false;
8
+ const dispatch = createEventDispatcher();
9
+ function applySchemaAndArgs() {
10
+ dispatch('applySchemaAndArgs');
11
+ }
12
+ onDestroy(() => {
13
+ dispatch('destroy');
14
+ });
15
+ </script>
16
+
17
+ <svelte:window
18
+ on:keydown={(e) => {
19
+ if (e.key === 'Enter' && !preventEnter) {
20
+ applySchemaAndArgs()
21
+ e.preventDefault()
22
+ }
23
+ }}
24
+ />
25
+
26
+ <div class="h-full p-2">
27
+ <Section label={name} class="h-full" small={true}>
28
+ <svelte:fragment slot="header">
29
+ <slot name="header" />
30
+ </svelte:fragment>
31
+ <svelte:fragment slot="action">
32
+ <div class="flex flex-row gap-2 data-schema-picker">
33
+ <slot name="action" />
34
+ <Button
35
+ size="xs2"
36
+ color="dark"
37
+ {disabled}
38
+ shortCut={{ Icon: CornerDownLeft, hide: false, withoutModifier: true }}
39
+ startIcon={{ icon: Save }}
40
+ on:click={applySchemaAndArgs}>Update schema</Button
41
+ >
42
+ </div>
43
+ </svelte:fragment>
44
+ <slot />
45
+ </Section>
46
+ </div>
@@ -0,0 +1,25 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ name?: string | undefined;
5
+ disabled?: boolean | undefined;
6
+ preventEnter?: boolean | undefined;
7
+ };
8
+ events: {
9
+ applySchemaAndArgs: CustomEvent<any>;
10
+ destroy: CustomEvent<any>;
11
+ } & {
12
+ [evt: string]: CustomEvent<any>;
13
+ };
14
+ slots: {
15
+ header: {};
16
+ action: {};
17
+ default: {};
18
+ };
19
+ };
20
+ export type FlowInputEditorProps = typeof __propDef.props;
21
+ export type FlowInputEditorEvents = typeof __propDef.events;
22
+ export type FlowInputEditorSlots = typeof __propDef.slots;
23
+ export default class FlowInputEditor extends SvelteComponent<FlowInputEditorProps, FlowInputEditorEvents, FlowInputEditorSlots> {
24
+ }
25
+ export {};
@@ -94,7 +94,7 @@ function onSelectedKindChange(_selectedKind) {
94
94
  selectedByKeyboard = 0;
95
95
  }
96
96
  let inlineScripts = [];
97
- const enterpriseLangs = ['bigquery', 'snowflake', 'mssql'];
97
+ const enterpriseLangs = ['bigquery', 'snowflake', 'mssql', 'oracledb'];
98
98
  function computeInlineScriptChoices(funcDesc, selected, preFilter, selectedKind) {
99
99
  if (['script', 'trigger', 'failure', 'approval', 'preprocessor'].includes(selectedKind)) {
100
100
  if (!selected && preFilter == 'all') {