windmill-components 1.35.1 → 1.35.43

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 (201) hide show
  1. package/components/ArgInput.svelte +21 -21
  2. package/components/ArgInput.svelte.d.ts +3 -3
  3. package/components/DisplayResult.svelte +73 -67
  4. package/components/Editor.svelte +184 -246
  5. package/components/Editor.svelte.d.ts +4 -4
  6. package/components/EditorBar.svelte +58 -45
  7. package/components/EditorBar.svelte.d.ts +2 -1
  8. package/components/FlowBuilder.svelte +113 -121
  9. package/components/FlowJobResult.svelte +4 -5
  10. package/components/FlowModulesViewer.svelte +89 -7
  11. package/components/FlowModulesViewer.svelte.d.ts +1 -0
  12. package/components/FlowPreviewContent.svelte +56 -15
  13. package/components/FlowPreviewContent.svelte.d.ts +1 -1
  14. package/components/FlowStatusViewer.svelte +42 -24
  15. package/components/FlowStatusViewer.svelte.d.ts +0 -1
  16. package/components/FlowViewer.svelte +7 -3
  17. package/components/HighlightCode.svelte +21 -0
  18. package/components/HighlightCode.svelte.d.ts +17 -0
  19. package/components/IconedPath.svelte +9 -7
  20. package/components/IconedResourceType.svelte +1 -1
  21. package/components/InputTransformForm.svelte +88 -107
  22. package/components/InputTransformForm.svelte.d.ts +0 -1
  23. package/components/ItemPicker.svelte +2 -2
  24. package/components/LogViewer.svelte +23 -0
  25. package/components/LogViewer.svelte.d.ts +19 -0
  26. package/components/ModulePreview.svelte +108 -0
  27. package/components/ModulePreview.svelte.d.ts +24 -0
  28. package/components/RunForm.svelte +29 -18
  29. package/components/RunForm.svelte.d.ts +6 -2
  30. package/components/SchemaEditor.svelte +5 -3
  31. package/components/SchemaForm.svelte +0 -2
  32. package/components/SchemaForm.svelte.d.ts +0 -1
  33. package/components/ScriptBuilder.svelte +77 -66
  34. package/components/ScriptBuilder.svelte.d.ts +2 -4
  35. package/components/ScriptEditor.svelte +69 -142
  36. package/components/ScriptEditor.svelte.d.ts +0 -5
  37. package/components/ScriptPicker.svelte +3 -3
  38. package/components/ScriptPicker.svelte.d.ts +2 -1
  39. package/components/SharedBadge.svelte +5 -13
  40. package/components/SimpleEditor.svelte +147 -0
  41. package/components/SimpleEditor.svelte.d.ts +35 -0
  42. package/components/TestJobLoader.svelte +98 -0
  43. package/components/TestJobLoader.svelte.d.ts +26 -0
  44. package/components/Tooltip.svelte +2 -1
  45. package/components/common/actionRow/ActionRow.svelte +26 -0
  46. package/components/common/actionRow/ActionRow.svelte.d.ts +21 -0
  47. package/components/common/alert/Alert.svelte +53 -0
  48. package/components/common/alert/Alert.svelte.d.ts +20 -0
  49. package/components/common/alert/model.d.ts +1 -0
  50. package/components/common/alert/model.js +1 -0
  51. package/components/common/badge/Badge.svelte +82 -0
  52. package/components/common/badge/Badge.svelte.d.ts +28 -0
  53. package/components/common/badge/model.d.ts +8 -0
  54. package/components/common/badge/model.js +1 -0
  55. package/components/common/button/Button.svelte +107 -0
  56. package/components/common/button/Button.svelte.d.ts +37 -0
  57. package/components/common/button/model.d.ts +6 -0
  58. package/components/common/button/model.js +1 -0
  59. package/components/common/confirmationModal/ConfirmationModal.svelte +55 -0
  60. package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +23 -0
  61. package/components/common/drawer/Drawer.svelte +3 -0
  62. package/components/common/drawer/Drawer.svelte.d.ts +2 -0
  63. package/components/common/index.d.ts +14 -0
  64. package/components/common/index.js +14 -0
  65. package/components/common/tabs/TabContent.svelte +3 -2
  66. package/components/common/tabs/TabContent.svelte.d.ts +1 -0
  67. package/components/common/tabs/Tabs.svelte +8 -1
  68. package/components/common/tabs/Tabs.svelte.d.ts +2 -0
  69. package/components/common/toggleButton/ToggleButton.svelte +20 -0
  70. package/components/common/toggleButton/ToggleButton.svelte.d.ts +19 -0
  71. package/components/common/toggleButton/ToggleButtonGroup.svelte +33 -0
  72. package/components/common/toggleButton/ToggleButtonGroup.svelte.d.ts +24 -0
  73. package/components/flows/FlowEditor.svelte +30 -0
  74. package/components/{FlowEditor.svelte.d.ts → flows/FlowEditor.svelte.d.ts} +1 -8
  75. package/components/flows/common/FlowCard.svelte +9 -0
  76. package/components/flows/common/FlowCard.svelte.d.ts +21 -0
  77. package/components/flows/common/FlowCardHeader.svelte +39 -0
  78. package/components/flows/common/FlowCardHeader.svelte.d.ts +20 -0
  79. package/components/flows/content/CopyFirstStepSchema.svelte +13 -0
  80. package/components/flows/{CopyFirstStepSchema.svelte.d.ts → content/CopyFirstStepSchema.svelte.d.ts} +0 -0
  81. package/components/flows/{DynamicInputHelpBox.svelte → content/DynamicInputHelpBox.svelte} +0 -0
  82. package/components/flows/{DynamicInputHelpBox.svelte.d.ts → content/DynamicInputHelpBox.svelte.d.ts} +0 -0
  83. package/components/flows/content/FlowEditorPanel.svelte +26 -0
  84. package/components/flows/content/FlowEditorPanel.svelte.d.ts +14 -0
  85. package/components/flows/content/FlowFailureModule.svelte +17 -0
  86. package/components/flows/content/FlowFailureModule.svelte.d.ts +14 -0
  87. package/components/flows/content/FlowInput.svelte +22 -0
  88. package/components/flows/{FlowInput.svelte.d.ts → content/FlowInput.svelte.d.ts} +0 -0
  89. package/components/flows/{FlowInputs.svelte → content/FlowInputs.svelte} +24 -13
  90. package/components/flows/{FlowInputs.svelte.d.ts → content/FlowInputs.svelte.d.ts} +0 -0
  91. package/components/flows/content/FlowLoop.svelte +38 -0
  92. package/components/flows/content/FlowLoop.svelte.d.ts +14 -0
  93. package/components/flows/content/FlowModule.svelte +190 -0
  94. package/components/flows/content/FlowModule.svelte.d.ts +29 -0
  95. package/components/flows/content/FlowModuleAdvancedSettings.svelte +64 -0
  96. package/components/flows/content/FlowModuleAdvancedSettings.svelte.d.ts +17 -0
  97. package/components/flows/content/FlowModuleHeader.svelte +68 -0
  98. package/components/flows/{FlowModuleHeader.svelte.d.ts → content/FlowModuleHeader.svelte.d.ts} +2 -3
  99. package/components/flows/content/FlowModuleScript.svelte +21 -0
  100. package/components/flows/content/FlowModuleScript.svelte.d.ts +17 -0
  101. package/components/flows/content/FlowModuleWrapper.svelte +47 -0
  102. package/components/flows/content/FlowModuleWrapper.svelte.d.ts +14 -0
  103. package/components/flows/content/FlowRetries.svelte +80 -0
  104. package/components/flows/content/FlowRetries.svelte.d.ts +14 -0
  105. package/components/flows/content/FlowSchedules.svelte +18 -0
  106. package/components/flows/content/FlowSchedules.svelte.d.ts +14 -0
  107. package/components/flows/content/FlowSettings.svelte +51 -0
  108. package/components/flows/{FlowSettings.svelte.d.ts → content/FlowSettings.svelte.d.ts} +1 -6
  109. package/components/flows/content/RemoveStepConfirmationModal.svelte +32 -0
  110. package/components/flows/content/RemoveStepConfirmationModal.svelte.d.ts +19 -0
  111. package/components/flows/flowState.d.ts +8 -7
  112. package/components/flows/flowState.js +25 -46
  113. package/components/flows/flowStateUtils.d.ts +15 -13
  114. package/components/flows/flowStateUtils.js +80 -72
  115. package/components/flows/flowStore.js +7 -4
  116. package/components/flows/header/FlowEditorHeader.svelte +23 -0
  117. package/components/flows/header/FlowEditorHeader.svelte.d.ts +14 -0
  118. package/components/flows/header/FlowImportExportMenu.svelte +56 -0
  119. package/components/flows/header/FlowImportExportMenu.svelte.d.ts +14 -0
  120. package/components/flows/header/FlowPreviewButtons.svelte +49 -0
  121. package/components/flows/header/FlowPreviewButtons.svelte.d.ts +14 -0
  122. package/components/flows/header/FlowStatus.svelte +36 -0
  123. package/components/flows/header/FlowStatus.svelte.d.ts +14 -0
  124. package/components/flows/map/FlowErrorHandlerItem.svelte +54 -0
  125. package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +14 -0
  126. package/components/flows/map/FlowModuleSchemaItem.svelte +58 -0
  127. package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +27 -0
  128. package/components/flows/map/FlowModuleSchemaMap.svelte +161 -0
  129. package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +20 -0
  130. package/components/flows/pickers/PickHubScript.svelte +4 -3
  131. package/components/flows/pickers/PickHubScript.svelte.d.ts +2 -1
  132. package/components/flows/pickers/PickScript.svelte +4 -12
  133. package/components/flows/pickers/PickScript.svelte.d.ts +1 -1
  134. package/components/flows/propPicker/PropPickerWrapper.svelte +42 -0
  135. package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +31 -0
  136. package/components/flows/scheduleUtils.d.ts +0 -1
  137. package/components/flows/scheduleUtils.js +0 -1
  138. package/components/flows/types.d.ts +9 -0
  139. package/components/flows/types.js +1 -0
  140. package/components/flows/utils.d.ts +1 -1
  141. package/components/flows/utils.js +8 -11
  142. package/components/icons/HatIcon.svelte +19 -0
  143. package/components/icons/HatIcon.svelte.d.ts +16 -0
  144. package/components/landing/FlowGettingStarted.svelte +22 -68
  145. package/components/landing/FlowLandingBox.svelte +1 -1
  146. package/components/landing/RessourceGettingStarted.svelte +7 -37
  147. package/components/landing/ScriptBox.svelte +33 -60
  148. package/components/landing/ScriptGettingStarted.svelte +23 -69
  149. package/components/propertyPicker/ObjectViewer.svelte +16 -7
  150. package/components/propertyPicker/PropPicker.svelte +38 -12
  151. package/components/propertyPicker/WarningMessage.svelte +2 -15
  152. package/components/script_editor/LogPanel.svelte +108 -119
  153. package/components/script_editor/LogPanel.svelte.d.ts +2 -0
  154. package/components/sidebar/SidebarContent.svelte +2 -2
  155. package/editorUtils.d.ts +25 -0
  156. package/editorUtils.js +43 -0
  157. package/gen/models/CompletedJob.d.ts +2 -1
  158. package/gen/models/CompletedJob.js +1 -0
  159. package/gen/models/FlowModule.d.ts +1 -0
  160. package/gen/models/FlowStatus.d.ts +3 -0
  161. package/gen/models/FlowStatusModule.d.ts +1 -1
  162. package/gen/models/FlowValue.d.ts +11 -0
  163. package/gen/models/Preview.d.ts +2 -1
  164. package/gen/models/Preview.js +1 -0
  165. package/gen/models/QueuedJob.d.ts +2 -1
  166. package/gen/models/QueuedJob.js +1 -0
  167. package/gen/models/RawScript.d.ts +2 -1
  168. package/gen/models/RawScript.js +1 -0
  169. package/gen/models/Script.d.ts +9 -2
  170. package/gen/models/Script.js +8 -0
  171. package/gen/services/JobService.d.ts +40 -0
  172. package/gen/services/JobService.js +70 -0
  173. package/gen/services/ScriptService.d.ts +14 -3
  174. package/gen/services/ScriptService.js +13 -0
  175. package/infer.d.ts +1 -1
  176. package/infer.js +6 -1
  177. package/package.json +67 -35
  178. package/script_helpers.d.ts +5 -2
  179. package/script_helpers.js +41 -13
  180. package/stores.d.ts +1 -1
  181. package/utils.d.ts +6 -4
  182. package/utils.js +27 -4
  183. package/components/FlowEditor.svelte +0 -55
  184. package/components/FlowPreview.svelte +0 -107
  185. package/components/FlowPreview.svelte.d.ts +0 -23
  186. package/components/ModuleStep.svelte +0 -131
  187. package/components/ModuleStep.svelte.d.ts +0 -25
  188. package/components/flows/CopyFirstStepSchema.svelte +0 -13
  189. package/components/flows/FlowBox.svelte +0 -16
  190. package/components/flows/FlowBox.svelte.d.ts +0 -23
  191. package/components/flows/FlowBoxHeader.svelte +0 -16
  192. package/components/flows/FlowBoxHeader.svelte.d.ts +0 -21
  193. package/components/flows/FlowInput.svelte +0 -22
  194. package/components/flows/FlowModuleHeader.svelte +0 -109
  195. package/components/flows/FlowSettings.svelte +0 -165
  196. package/components/flows/FlowTimeline.svelte +0 -169
  197. package/components/flows/FlowTimeline.svelte.d.ts +0 -21
  198. package/components/flows/stepOpenedStore.d.ts +0 -1
  199. package/components/flows/stepOpenedStore.js +0 -6
  200. package/components/propertyPicker/OverlayPropertyPicker.svelte +0 -69
  201. package/components/propertyPicker/OverlayPropertyPicker.svelte.d.ts +0 -24
@@ -0,0 +1,14 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {};
4
+ events: {
5
+ [evt: string]: CustomEvent<any>;
6
+ };
7
+ slots: {};
8
+ };
9
+ export declare type FlowPreviewButtonsProps = typeof __propDef.props;
10
+ export declare type FlowPreviewButtonsEvents = typeof __propDef.events;
11
+ export declare type FlowPreviewButtonsSlots = typeof __propDef.slots;
12
+ export default class FlowPreviewButtons extends SvelteComponentTyped<FlowPreviewButtonsProps, FlowPreviewButtonsEvents, FlowPreviewButtonsSlots> {
13
+ }
14
+ export {};
@@ -0,0 +1,36 @@
1
+ <script>import { classNames } from '../../../utils';
2
+ import { faArrowCircleDown, faArrowRotateBack, faArrowRotateForward, faCalendar, faCalendarAlt } from '@fortawesome/free-solid-svg-icons';
3
+ import { getContext } from 'svelte';
4
+ import Icon from 'svelte-awesome';
5
+ import { flowStore } from '../flowStore';
6
+ const { schedule, select } = getContext('FlowEditorContext');
7
+ $: retriesEnabled = $flowStore.value.retry?.constant || $flowStore.value.retry?.exponential;
8
+ </script>
9
+
10
+ <div class="flex space-x-1">
11
+ <span
12
+ class={classNames(
13
+ ' text-sm font-medium mr-2 px-2.5 py-0.5 rounded cursor-pointer flex items-center ',
14
+ $schedule?.enabled
15
+ ? 'bg-sky-100 text-sky-800 hover:bg-sky-200'
16
+ : 'bg-gray-100 text-gray-800 hover:bg-gray-200'
17
+ )}
18
+ on:click={() => select('settings-schedule')}
19
+ >
20
+ <Icon data={faCalendarAlt} class="mr-2" scale={0.8} />
21
+
22
+ {$schedule?.enabled ? `Schedule: ${$schedule?.cron}` : 'Schedule disabled'}
23
+ </span>
24
+ <span
25
+ class={classNames(
26
+ ' text-sm font-medium mr-2 px-2.5 py-0.5 rounded cursor-pointer flex items-center',
27
+ retriesEnabled
28
+ ? 'bg-sky-100 text-sky-800 hover:bg-sky-200'
29
+ : 'bg-gray-100 text-gray-800 hover:bg-gray-200'
30
+ )}
31
+ on:click={() => select('settings-retries')}
32
+ >
33
+ <Icon data={faArrowRotateForward} class="mr-2" scale={0.8} />
34
+ {retriesEnabled ? `Retries enabled` : 'Retries disabled'}
35
+ </span>
36
+ </div>
@@ -0,0 +1,14 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {};
4
+ events: {
5
+ [evt: string]: CustomEvent<any>;
6
+ };
7
+ slots: {};
8
+ };
9
+ export declare type FlowStatusProps = typeof __propDef.props;
10
+ export declare type FlowStatusEvents = typeof __propDef.events;
11
+ export declare type FlowStatusSlots = typeof __propDef.slots;
12
+ export default class FlowStatus extends SvelteComponentTyped<FlowStatusProps, FlowStatusEvents, FlowStatusSlots> {
13
+ }
14
+ export {};
@@ -0,0 +1,54 @@
1
+ <script>import { getContext } from 'svelte';
2
+ import Icon from 'svelte-awesome';
3
+ import { faBug } from '@fortawesome/free-solid-svg-icons';
4
+ import { NEVER_TESTED_THIS_FAR } from '../flowStateUtils';
5
+ import { classNames, emptyModule, emptySchema } from '../../../utils';
6
+ import { flowStateStore } from '../flowState';
7
+ import Toggle from '../../Toggle.svelte';
8
+ import { flowStore } from '../flowStore';
9
+ const { select, selectedId } = getContext('FlowEditorContext');
10
+ function onToggle() {
11
+ if ($flowStore.value.failure_module) {
12
+ $flowStore.value.failure_module = undefined;
13
+ // By default, we return to settings when disabling the failure module
14
+ select('settings');
15
+ }
16
+ else {
17
+ const failureModule = {
18
+ schema: emptySchema(),
19
+ previewResult: NEVER_TESTED_THIS_FAR,
20
+ childFlowModules: []
21
+ };
22
+ $flowStateStore.failureModule = failureModule;
23
+ $flowStore.value.failure_module = emptyModule();
24
+ select('failure');
25
+ }
26
+ }
27
+ </script>
28
+
29
+ <div
30
+ on:click={() => {
31
+ if ($flowStore.value.failure_module) {
32
+ select('failure')
33
+ }
34
+ }}
35
+ class={classNames(
36
+ 'border rounded-md p-2 bg-white text-sm cursor-pointer mt-4 flex flex-col',
37
+ $selectedId.includes('failure') ? 'outline outline-offset-1 outline-2 outline-slate-900' : ''
38
+ )}
39
+ >
40
+ <div class=" flex justify-between items-center">
41
+ <div>
42
+ <Icon data={faBug} class="mr-2" />
43
+ <span class="font-bold">Error handler</span>
44
+ </div>
45
+ <Toggle checked={Boolean($flowStore.value.failure_module)} on:change={onToggle} />
46
+ </div>
47
+
48
+ {#if $flowStore.value.failure_module}
49
+ <textarea
50
+ bind:value={$flowStore.value.failure_module.summary}
51
+ placeholder="Error handler summary"
52
+ />
53
+ {/if}
54
+ </div>
@@ -0,0 +1,14 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {};
4
+ events: {
5
+ [evt: string]: CustomEvent<any>;
6
+ };
7
+ slots: {};
8
+ };
9
+ export declare type FlowErrorHandlerItemProps = typeof __propDef.props;
10
+ export declare type FlowErrorHandlerItemEvents = typeof __propDef.events;
11
+ export declare type FlowErrorHandlerItemSlots = typeof __propDef.slots;
12
+ export default class FlowErrorHandlerItem extends SvelteComponentTyped<FlowErrorHandlerItemProps, FlowErrorHandlerItemEvents, FlowErrorHandlerItemSlots> {
13
+ }
14
+ export {};
@@ -0,0 +1,58 @@
1
+ <script>import Button from '../../common/button/Button.svelte';
2
+ import { classNames } from '../../../utils';
3
+ import { faTrashAlt } from '@fortawesome/free-solid-svg-icons';
4
+ import { createEventDispatcher } from 'svelte';
5
+ export let color = 'blue';
6
+ export let isFirst = false;
7
+ export let isLast = false;
8
+ export let hasLine = true;
9
+ export let selected = false;
10
+ export let deletable = false;
11
+ const margin = isLast ? '' : isFirst ? 'mb-0.5' : 'my-0.5';
12
+ const dispatch = createEventDispatcher();
13
+ </script>
14
+
15
+ <div class="flex" on:click>
16
+ <div
17
+ class={classNames(
18
+ 'flex mr-2 w-8 ',
19
+ hasLine ? 'line' : '',
20
+ isFirst ? 'justify-center items-start' : 'justify-center items-center'
21
+ )}
22
+ >
23
+ <div
24
+ class={classNames(
25
+ 'flex justify-center items-center w-6 h-6 border rounded-full text-xs font-bold',
26
+ color === 'blue' ? 'bg-blue-100 text-blue-400' : 'bg-orange-100 text-orange-400',
27
+ margin
28
+ )}
29
+ >
30
+ <slot name="icon" />
31
+ </div>
32
+ </div>
33
+ <div
34
+ class={classNames(
35
+ 'border w-full rounded-sm p-2 bg-white text-sm cursor-pointer flex justify-between items-center space-x-2 overflow-hidden',
36
+ margin,
37
+ selected ? 'outline outline-offset-1 outline-2 outline-gray-600' : ''
38
+ )}
39
+ >
40
+ <slot name="content" />
41
+ {#if deletable}
42
+ <Button
43
+ on:click={(event) => dispatch('delete', { event })}
44
+ startIcon={{ icon: faTrashAlt }}
45
+ iconOnly={true}
46
+ color="light"
47
+ variant="border"
48
+ size="xs"
49
+ />
50
+ {/if}
51
+ </div>
52
+ </div>
53
+
54
+ <style>
55
+ .line {
56
+ background: repeating-linear-gradient(to bottom, transparent 0 4px, #bbb 4px 8px) 50%/1px 100%
57
+ no-repeat;
58
+ }</style>
@@ -0,0 +1,27 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ color?: "blue" | "orange" | undefined;
5
+ isFirst?: boolean | undefined;
6
+ isLast?: boolean | undefined;
7
+ hasLine?: boolean | undefined;
8
+ selected?: boolean | undefined;
9
+ deletable?: boolean | undefined;
10
+ };
11
+ events: {
12
+ click: MouseEvent;
13
+ delete: CustomEvent<any>;
14
+ } & {
15
+ [evt: string]: CustomEvent<any>;
16
+ };
17
+ slots: {
18
+ icon: {};
19
+ content: {};
20
+ };
21
+ };
22
+ export declare type FlowModuleSchemaItemProps = typeof __propDef.props;
23
+ export declare type FlowModuleSchemaItemEvents = typeof __propDef.events;
24
+ export declare type FlowModuleSchemaItemSlots = typeof __propDef.slots;
25
+ export default class FlowModuleSchemaItem extends SvelteComponentTyped<FlowModuleSchemaItemProps, FlowModuleSchemaItemEvents, FlowModuleSchemaItemSlots> {
26
+ }
27
+ export {};
@@ -0,0 +1,161 @@
1
+ <script>import { getContext } from 'svelte';
2
+ import FlowModuleSchemaItem from './FlowModuleSchemaItem.svelte';
3
+ import Icon from 'svelte-awesome';
4
+ import { faPen, faPlus, faSliders } from '@fortawesome/free-solid-svg-icons';
5
+ import { emptyFlowModuleState, isEmptyFlowModule } from '../flowStateUtils';
6
+ import { classNames, emptyModule } from '../../../utils';
7
+ import FlowErrorHandlerItem from './FlowErrorHandlerItem.svelte';
8
+ import RemoveStepConfirmationModal from '../content/RemoveStepConfirmationModal.svelte';
9
+ export let prefix = undefined;
10
+ export let modules;
11
+ export let moduleStates;
12
+ const { select, selectedId } = getContext('FlowEditorContext');
13
+ function insertAtIndex(index) {
14
+ moduleStates.splice(index, 0, emptyFlowModuleState());
15
+ modules.splice(index, 0, emptyModule());
16
+ moduleStates = moduleStates;
17
+ modules = modules;
18
+ select([prefix, String(index)].filter(Boolean).join('-'));
19
+ }
20
+ function removeAtIndex(index) {
21
+ select('settings');
22
+ modules.splice(index, 1);
23
+ moduleStates.splice(index, 1);
24
+ moduleStates = moduleStates;
25
+ modules = modules;
26
+ }
27
+ let indexToRemove = undefined;
28
+ $: confirmationModalOpen = indexToRemove !== undefined;
29
+ </script>
30
+
31
+ <div class="flex flex-col justify-between h-full">
32
+ <ul class="w-full">
33
+ {#if prefix === undefined}
34
+ <div
35
+ on:click={() => select('settings')}
36
+ class={classNames(
37
+ 'border w-full rounded-md p-2 bg-white text-sm cursor-pointer flex items-center mb-4',
38
+ $selectedId.includes('settings')
39
+ ? 'outline outline-offset-1 outline-2 outline-slate-900'
40
+ : ''
41
+ )}
42
+ >
43
+ <Icon data={faSliders} class="mr-2" />
44
+ <span class="font-bold">Settings</span>
45
+ </div>
46
+
47
+ <FlowModuleSchemaItem
48
+ on:click={() => select('inputs')}
49
+ isFirst
50
+ hasLine
51
+ selected={$selectedId === 'inputs'}
52
+ >
53
+ <div slot="icon">
54
+ <Icon data={faPen} scale={0.8} />
55
+ </div>
56
+ <div slot="content">
57
+ <span>Inputs</span>
58
+ </div>
59
+ </FlowModuleSchemaItem>
60
+ {/if}
61
+
62
+ {#each modules as mod, index (index)}
63
+ <button
64
+ on:click={() => insertAtIndex(index)}
65
+ type="button"
66
+ class="text-gray-900 m-0.5 my-0.5 bg-white border border-gray-300 focus:outline-none hover:bg-gray-100 focus:ring-4 focus:ring-gray-200 font-medium rounded-full text-sm w-6 h-6 flex items-center justify-center"
67
+ >
68
+ <Icon data={faPlus} scale={0.8} />
69
+ </button>
70
+ {#if mod.value.type === 'forloopflow'}
71
+ <li>
72
+ <FlowModuleSchemaItem
73
+ deletable
74
+ on:delete={() => removeAtIndex(index)}
75
+ on:click={() => select(['loop', String(index)].join('-'))}
76
+ selected={$selectedId === ['loop', String(index)].join('-')}
77
+ >
78
+ <div slot="icon">
79
+ <span>{index + 1}</span>
80
+ </div>
81
+ <div slot="content">
82
+ <span>For loop</span>
83
+ </div>
84
+ </FlowModuleSchemaItem>
85
+
86
+ <div class="flex text-xs">
87
+ <div class="line mr-2 w-8" />
88
+
89
+ <div class="w-full mb-2">
90
+ {#if moduleStates[index]?.childFlowModules}
91
+ <svelte:self
92
+ prefix={String(index)}
93
+ moduleStates={moduleStates[index].childFlowModules}
94
+ modules={mod.value.modules}
95
+ />
96
+ {/if}
97
+ </div>
98
+ </div>
99
+
100
+ <div class="italic text-xs pl-10 text-gray-600">
101
+ The loop's result is the list of every iteration's result.
102
+ </div>
103
+ </li>
104
+ {:else}
105
+ <li>
106
+ <FlowModuleSchemaItem
107
+ on:click={() => select([prefix, String(index)].filter(Boolean).join('-'))}
108
+ color={prefix ? 'orange' : 'blue'}
109
+ isLast={index === modules.length - 1}
110
+ selected={$selectedId === [prefix, String(index)].filter(Boolean).join('-')}
111
+ deletable
112
+ on:delete={(event) => {
113
+ if (event.detail.event.shiftKey || isEmptyFlowModule(mod)) {
114
+ removeAtIndex(index)
115
+ } else {
116
+ indexToRemove = index
117
+ }
118
+ }}
119
+ >
120
+ <div slot="icon">
121
+ <span>{index + 1}</span>
122
+ </div>
123
+ <div slot="content" class="w-full truncate block">
124
+ <span
125
+ >{mod.summary ||
126
+ mod.value.path ||
127
+ (mod.value.type === 'rawscript'
128
+ ? `Inline ${mod.value.language}`
129
+ : 'Select a script')}</span
130
+ >
131
+ </div>
132
+ </FlowModuleSchemaItem>
133
+ </li>
134
+ {/if}
135
+ {/each}
136
+
137
+ <button
138
+ on:click={() => insertAtIndex(modules.length)}
139
+ type="button"
140
+ class="text-gray-900 bg-white border m-0.5 border-gray-300 focus:outline-none hover:bg-gray-100 focus:ring-4 focus:ring-gray-200 font-medium rounded-full text-sm w-6 h-6 flex items-center justify-center"
141
+ >
142
+ <Icon data={faPlus} scale={0.8} />
143
+ </button>
144
+ </ul>
145
+ {#if prefix === undefined}
146
+ <FlowErrorHandlerItem />
147
+ {/if}
148
+ </div>
149
+
150
+ <RemoveStepConfirmationModal
151
+ bind:open={confirmationModalOpen}
152
+ on:canceled={() => {
153
+ indexToRemove = undefined
154
+ }}
155
+ on:confirmed={() => {
156
+ if (indexToRemove !== undefined) {
157
+ removeAtIndex(indexToRemove)
158
+ indexToRemove = undefined
159
+ }
160
+ }}
161
+ />
@@ -0,0 +1,20 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type { FlowModuleState } from '../flowState';
3
+ import type { FlowModule } from '../../../gen';
4
+ declare const __propDef: {
5
+ props: {
6
+ prefix?: string | undefined;
7
+ modules: FlowModule[];
8
+ moduleStates: FlowModuleState[];
9
+ };
10
+ events: {
11
+ [evt: string]: CustomEvent<any>;
12
+ };
13
+ slots: {};
14
+ };
15
+ export declare type FlowModuleSchemaMapProps = typeof __propDef.props;
16
+ export declare type FlowModuleSchemaMapEvents = typeof __propDef.events;
17
+ export declare type FlowModuleSchemaMapSlots = typeof __propDef.slots;
18
+ export default class FlowModuleSchemaMap extends SvelteComponentTyped<FlowModuleSchemaMapProps, FlowModuleSchemaMapEvents, FlowModuleSchemaMapSlots> {
19
+ }
20
+ export {};
@@ -3,9 +3,10 @@ import FlowScriptPicker from './FlowScriptPicker.svelte';
3
3
  import ItemPicker from '../../ItemPicker.svelte';
4
4
  import { hubScripts } from '../../../stores';
5
5
  import { createEventDispatcher } from 'svelte';
6
- export let isTrigger = false;
6
+ import { Script } from '../../../gen';
7
+ export let kind;
7
8
  let items;
8
- $: items = $hubScripts?.filter((x) => x.is_trigger == isTrigger) ?? [];
9
+ $: items = $hubScripts?.filter((x) => x.kind == kind) ?? [];
9
10
  let itemPicker;
10
11
  const dispatch = createEventDispatcher();
11
12
  </script>
@@ -23,7 +24,7 @@ const dispatch = createEventDispatcher();
23
24
  />
24
25
 
25
26
  <FlowScriptPicker
26
- label={`Pick a ${isTrigger ? 'trigger ' : ''} script from the Hub`}
27
+ label={`Pick a ${kind == Script.kind.SCRIPT ? '' : kind} script from the Hub`}
27
28
  icon={faUserGroup}
28
29
  iconColor="text-blue-500"
29
30
  on:click={() => itemPicker.openModal()}
@@ -1,7 +1,8 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
+ import { Script } from '../../../gen';
2
3
  declare const __propDef: {
3
4
  props: {
4
- isTrigger?: boolean | undefined;
5
+ kind: Script.kind;
5
6
  };
6
7
  events: {
7
8
  pick: CustomEvent<any>;
@@ -4,17 +4,11 @@ import { ScriptService } from '../../../gen';
4
4
  import { workspaceStore } from '../../../stores';
5
5
  import { createEventDispatcher } from 'svelte';
6
6
  import FlowScriptPicker from './FlowScriptPicker.svelte';
7
- export let isTrigger = false;
8
- let items = [];
7
+ export let kind;
9
8
  let itemPicker;
10
9
  const dispatch = createEventDispatcher();
11
10
  async function loadItems() {
12
- items = await ScriptService.listScripts({ workspace: $workspaceStore, isTrigger });
13
- }
14
- $: {
15
- if ($workspaceStore) {
16
- loadItems();
17
- }
11
+ return await ScriptService.listScripts({ workspace: $workspaceStore, kind });
18
12
  }
19
13
  </script>
20
14
 
@@ -25,13 +19,11 @@ $: {
25
19
  }}
26
20
  itemName={'Script'}
27
21
  extraField="summary"
28
- loadItems={async () => {
29
- return items
30
- }}
22
+ {loadItems}
31
23
  />
32
24
 
33
25
  <FlowScriptPicker
34
- label={`Pick a ${isTrigger ? 'trigger ' : ''}script from your workspace`}
26
+ label={`Pick a ${kind == 'script' ? '' : kind} script from your workspace`}
35
27
  icon={faUserGroup}
36
28
  iconColor="text-blue-500"
37
29
  on:click={() => itemPicker.openModal()}
@@ -1,7 +1,7 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
- isTrigger?: boolean | undefined;
4
+ kind: string;
5
5
  };
6
6
  events: {
7
7
  pick: CustomEvent<any>;
@@ -0,0 +1,42 @@
1
+ <script context="module">export {};
2
+ </script>
3
+
4
+ <script>import PropPicker from '../../propertyPicker/PropPicker.svelte';
5
+ import { setContext } from 'svelte';
6
+ import { HSplitPane } from 'svelte-split-pane';
7
+ import { writable } from 'svelte/store';
8
+ export let pickableProperties = {};
9
+ const propPickerConfig = writable(undefined);
10
+ setContext('PropPickerWrapper', {
11
+ propPickerConfig,
12
+ focusProp: (propName, insertionMode, onSelect) => {
13
+ propPickerConfig.set({
14
+ propName,
15
+ insertionMode,
16
+ onSelect
17
+ });
18
+ },
19
+ clearFocus: () => {
20
+ propPickerConfig.set(undefined);
21
+ }
22
+ });
23
+ </script>
24
+
25
+ <HSplitPane leftPaneSize="50%" rightPaneSize="50%" minLeftPaneSize="20%" minRightPaneSize="20%">
26
+ <left slot="left" class="relative">
27
+ <div class="overflow-auto h-full p-4">
28
+ <slot />
29
+ </div>
30
+ </left>
31
+ <right slot="right">
32
+ <div class="overflow-auto h-full">
33
+ <PropPicker
34
+ {pickableProperties}
35
+ on:select={({ detail }) => {
36
+ $propPickerConfig?.onSelect(detail)
37
+ propPickerConfig.set(undefined)
38
+ }}
39
+ />
40
+ </div>
41
+ </right>
42
+ </HSplitPane>
@@ -0,0 +1,31 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare type InsertionMode = 'append' | 'connect' | 'insert';
3
+ declare type SelectCallback = (path: string) => void;
4
+ declare type PropPickerConfig = {
5
+ insertionMode: InsertionMode;
6
+ propName: string;
7
+ onSelect: SelectCallback;
8
+ };
9
+ export declare type PropPickerWrapperContext = {
10
+ propPickerConfig: Writable<PropPickerConfig | undefined>;
11
+ focusProp: (propName: string, insertionMode: InsertionMode, onSelect: SelectCallback) => void;
12
+ clearFocus: () => void;
13
+ };
14
+ import { type Writable } from 'svelte/store';
15
+ declare const __propDef: {
16
+ props: {
17
+ pickableProperties?: Object | undefined;
18
+ };
19
+ events: {
20
+ [evt: string]: CustomEvent<any>;
21
+ };
22
+ slots: {
23
+ default: {};
24
+ };
25
+ };
26
+ export declare type PropPickerWrapperProps = typeof __propDef.props;
27
+ export declare type PropPickerWrapperEvents = typeof __propDef.events;
28
+ export declare type PropPickerWrapperSlots = typeof __propDef.slots;
29
+ export default class PropPickerWrapper extends SvelteComponentTyped<PropPickerWrapperProps, PropPickerWrapperEvents, PropPickerWrapperSlots> {
30
+ }
31
+ export {};
@@ -2,6 +2,5 @@ export declare type Schedule = {
2
2
  args: Record<string, any>;
3
3
  cron: string;
4
4
  enabled: boolean;
5
- previewArgs: Record<string, any>;
6
5
  };
7
6
  export declare function loadFlowSchedule(path: string, workspace?: string): Promise<Schedule>;
@@ -16,6 +16,5 @@ export async function loadFlowSchedule(path, workspace = '') {
16
16
  enabled: schedule.enabled,
17
17
  cron: schedule.schedule,
18
18
  args: schedule.args ?? {},
19
- previewArgs: JSON.parse(JSON.stringify(schedule.args))
20
19
  };
21
20
  }
@@ -0,0 +1,9 @@
1
+ import type { Writable } from 'svelte/store';
2
+ import type { Schedule } from './scheduleUtils';
3
+ export declare type FlowEditorContext = {
4
+ selectedId: Writable<string>;
5
+ select: (id: string) => void;
6
+ schedule: Writable<Schedule>;
7
+ path: string;
8
+ previewArgs: Writable<Record<string, any>>;
9
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -2,7 +2,6 @@ import type { Schema } from '../../common';
2
2
  import { type Flow, type FlowModule, type InputTransform, type Job } from '../../gen';
3
3
  export declare function cleanInputs(flow: Flow | any): Flow;
4
4
  export declare function getTypeAsString(arg: any): string;
5
- export declare function scrollIntoView(element: any): void;
6
5
  export declare function loadSchemaFromModule(module: FlowModule): Promise<{
7
6
  input_transforms: Record<string, InputTransform>;
8
7
  schema: Schema;
@@ -12,3 +11,4 @@ export declare function getDefaultExpr(importPath?: string | undefined, key?: st
12
11
  export declare function jobsToResults(jobs: Job[]): any;
13
12
  export declare function runFlowPreview(args: Record<string, any>, flow: Flow): Promise<string>;
14
13
  export declare function codeToStaticTemplate(code?: string): string | undefined;
14
+ export declare function getIndexes(parentIndex: number | undefined, childIndex: number): number[];
@@ -35,17 +35,6 @@ export function getTypeAsString(arg) {
35
35
  }
36
36
  return typeof arg;
37
37
  }
38
- export function scrollIntoView(element) {
39
- if (!element)
40
- return;
41
- var headerOffset = 45;
42
- var elementPosition = element.getBoundingClientRect().top;
43
- var offsetPosition = elementPosition + window.pageYOffset - headerOffset;
44
- window.scrollTo({
45
- top: offsetPosition,
46
- behavior: 'smooth'
47
- });
48
- }
49
38
  export async function loadSchemaFromModule(module) {
50
39
  const mod = module.value;
51
40
  if (mod.type == 'rawscript' || mod.type === 'script') {
@@ -134,3 +123,11 @@ export function codeToStaticTemplate(code) {
134
123
  }
135
124
  return undefined;
136
125
  }
126
+ export function getIndexes(parentIndex, childIndex) {
127
+ const indexes = [];
128
+ if (parentIndex !== undefined) {
129
+ indexes.push(parentIndex);
130
+ }
131
+ indexes.push(childIndex);
132
+ return indexes;
133
+ }
@@ -0,0 +1,19 @@
1
+ <script>let clazz = '';
2
+ export { clazz as class };
3
+ </script>
4
+
5
+ <svg
6
+ class={clazz}
7
+ fill="none"
8
+ stroke="currentColor"
9
+ viewBox="0 0 24 24"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ ><path d="M12 14l9-5-9-5-9 5 9 5z" /><path
12
+ d="M12 14l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14z"
13
+ /><path
14
+ stroke-linecap="round"
15
+ stroke-linejoin="round"
16
+ stroke-width="2"
17
+ d="M12 14l9-5-9-5-9 5 9 5zm0 0l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14zm-4 6v-7.5l4-2.222"
18
+ />
19
+ </svg>
@@ -0,0 +1,16 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ class?: string | undefined;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {};
10
+ };
11
+ export declare type HatIconProps = typeof __propDef.props;
12
+ export declare type HatIconEvents = typeof __propDef.events;
13
+ export declare type HatIconSlots = typeof __propDef.slots;
14
+ export default class HatIcon extends SvelteComponentTyped<HatIconProps, HatIconEvents, HatIconSlots> {
15
+ }
16
+ export {};