windmill-components 1.35.42 → 1.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/components/AppConnect.svelte +85 -59
  2. package/components/ArgInput.svelte +50 -33
  3. package/components/ArgInput.svelte.d.ts +1 -1
  4. package/components/Button.svelte +15 -48
  5. package/components/Button.svelte.d.ts +1 -1
  6. package/components/CronInput.svelte +1 -1
  7. package/components/DisplayResult.svelte +75 -67
  8. package/components/Dropdown.svelte +9 -7
  9. package/components/Editor.svelte +187 -178
  10. package/components/Editor.svelte.d.ts +4 -2
  11. package/components/EditorBar.svelte +135 -98
  12. package/components/EditorBar.svelte.d.ts +2 -1
  13. package/components/FlowBuilder.svelte +115 -134
  14. package/components/FlowJobResult.svelte +4 -5
  15. package/components/FlowModulesViewer.svelte +89 -7
  16. package/components/FlowModulesViewer.svelte.d.ts +1 -0
  17. package/components/FlowPreviewContent.svelte +88 -27
  18. package/components/FlowPreviewContent.svelte.d.ts +1 -1
  19. package/components/FlowStatusViewer.svelte +39 -24
  20. package/components/FlowStatusViewer.svelte.d.ts +0 -1
  21. package/components/FlowViewer.svelte +17 -11
  22. package/components/GroupModal.svelte +10 -1
  23. package/components/HighlightCode.svelte +22 -0
  24. package/components/HighlightCode.svelte.d.ts +17 -0
  25. package/components/IconedPath.svelte +9 -7
  26. package/components/InputTransformForm.svelte +97 -115
  27. package/components/InputTransformForm.svelte.d.ts +0 -1
  28. package/components/InputTransformsViewer.svelte +1 -1
  29. package/components/InviteGlobalUser.svelte +8 -8
  30. package/components/InviteUser.svelte +9 -9
  31. package/components/ItemPicker.svelte +37 -30
  32. package/components/ItemPicker.svelte.d.ts +2 -1
  33. package/components/JobStatus.svelte +2 -1
  34. package/components/LogViewer.svelte +23 -0
  35. package/components/LogViewer.svelte.d.ts +19 -0
  36. package/components/ModulePreview.svelte +107 -0
  37. package/components/ModulePreview.svelte.d.ts +24 -0
  38. package/components/Path.svelte +1 -1
  39. package/components/RadioButton.svelte +3 -2
  40. package/components/ResourceEditor.svelte +22 -34
  41. package/components/ResourceTypePicker.svelte +23 -34
  42. package/components/RunForm.svelte +34 -31
  43. package/components/RunForm.svelte.d.ts +6 -2
  44. package/components/SchemaEditor.svelte +19 -11
  45. package/components/SchemaForm.svelte +3 -3
  46. package/components/SchemaForm.svelte.d.ts +1 -1
  47. package/components/SchemaModal.svelte +18 -7
  48. package/components/ScriptBuilder.svelte +99 -83
  49. package/components/ScriptBuilder.svelte.d.ts +2 -4
  50. package/components/ScriptEditor.svelte +71 -143
  51. package/components/ScriptEditor.svelte.d.ts +0 -5
  52. package/components/ScriptPicker.svelte +24 -14
  53. package/components/ScriptPicker.svelte.d.ts +2 -1
  54. package/components/ScriptSchema.svelte +8 -11
  55. package/components/ScriptSchema.svelte.d.ts +0 -1
  56. package/components/ShareModal.svelte +6 -6
  57. package/components/SharedBadge.svelte +5 -13
  58. package/components/SimpleEditor.svelte +14 -10
  59. package/components/StringTypeNarrowing.svelte +24 -30
  60. package/components/TestJobLoader.svelte +106 -0
  61. package/components/TestJobLoader.svelte.d.ts +26 -0
  62. package/components/Tooltip.svelte +3 -2
  63. package/components/VariableEditor.svelte +15 -24
  64. package/components/common/actionRow/ActionRow.svelte +31 -0
  65. package/components/common/actionRow/ActionRow.svelte.d.ts +22 -0
  66. package/components/common/alert/Alert.svelte +53 -0
  67. package/components/common/alert/Alert.svelte.d.ts +20 -0
  68. package/components/common/alert/model.d.ts +1 -0
  69. package/components/common/alert/model.js +1 -0
  70. package/components/common/badge/Badge.svelte +76 -0
  71. package/components/common/badge/Badge.svelte.d.ts +28 -0
  72. package/components/common/badge/model.d.ts +8 -0
  73. package/components/common/badge/model.js +1 -0
  74. package/components/common/button/Button.svelte +110 -0
  75. package/components/common/button/Button.svelte.d.ts +39 -0
  76. package/components/common/button/model.d.ts +6 -0
  77. package/components/common/button/model.js +1 -0
  78. package/components/common/confirmationModal/ConfirmationModal.svelte +72 -0
  79. package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +23 -0
  80. package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +41 -0
  81. package/components/common/confirmationModal/UnsavedConfirmationModal.svelte.d.ts +14 -0
  82. package/components/common/confirmationModal/dirtyStore.d.ts +1 -0
  83. package/components/common/confirmationModal/dirtyStore.js +2 -0
  84. package/components/common/drawer/Drawer.svelte +3 -0
  85. package/components/common/drawer/Drawer.svelte.d.ts +2 -0
  86. package/components/common/index.d.ts +14 -0
  87. package/components/common/index.js +14 -0
  88. package/components/common/tabs/TabContent.svelte +3 -2
  89. package/components/common/tabs/TabContent.svelte.d.ts +1 -0
  90. package/components/common/tabs/Tabs.svelte +8 -1
  91. package/components/common/tabs/Tabs.svelte.d.ts +2 -0
  92. package/components/common/toggleButton/ToggleButton.svelte +20 -0
  93. package/components/common/toggleButton/ToggleButton.svelte.d.ts +19 -0
  94. package/components/common/toggleButton/ToggleButtonGroup.svelte +33 -0
  95. package/components/common/toggleButton/ToggleButtonGroup.svelte.d.ts +24 -0
  96. package/components/flows/FlowEditor.svelte +30 -0
  97. package/components/{FlowEditor.svelte.d.ts → flows/FlowEditor.svelte.d.ts} +1 -6
  98. package/components/flows/common/FlowCard.svelte +9 -0
  99. package/components/flows/common/FlowCard.svelte.d.ts +21 -0
  100. package/components/flows/common/FlowCardHeader.svelte +39 -0
  101. package/components/flows/common/FlowCardHeader.svelte.d.ts +20 -0
  102. package/components/flows/content/CopyFirstStepSchema.svelte +13 -0
  103. package/components/flows/{CopyFirstStepSchema.svelte.d.ts → content/CopyFirstStepSchema.svelte.d.ts} +0 -0
  104. package/components/flows/{DynamicInputHelpBox.svelte → content/DynamicInputHelpBox.svelte} +0 -0
  105. package/components/flows/{DynamicInputHelpBox.svelte.d.ts → content/DynamicInputHelpBox.svelte.d.ts} +0 -0
  106. package/components/flows/content/FlowEditorPanel.svelte +25 -0
  107. package/components/flows/content/FlowEditorPanel.svelte.d.ts +16 -0
  108. package/components/flows/content/FlowFailureModule.svelte +15 -0
  109. package/components/flows/content/FlowFailureModule.svelte.d.ts +14 -0
  110. package/components/flows/content/FlowInput.svelte +26 -0
  111. package/components/flows/{FlowInput.svelte.d.ts → content/FlowInput.svelte.d.ts} +0 -0
  112. package/components/flows/content/FlowInputs.svelte +91 -0
  113. package/components/flows/{FlowInputs.svelte.d.ts → content/FlowInputs.svelte.d.ts} +1 -0
  114. package/components/flows/content/FlowLoop.svelte +168 -0
  115. package/components/flows/content/FlowLoop.svelte.d.ts +18 -0
  116. package/components/flows/content/FlowLoopWrapper.svelte +9 -0
  117. package/components/flows/content/FlowLoopWrapper.svelte.d.ts +14 -0
  118. package/components/flows/content/FlowModule.svelte +211 -0
  119. package/components/flows/content/FlowModule.svelte.d.ts +29 -0
  120. package/components/flows/content/FlowModuleEarlyStop.svelte +76 -0
  121. package/components/flows/content/FlowModuleEarlyStop.svelte.d.ts +17 -0
  122. package/components/flows/content/FlowModuleHeader.svelte +157 -0
  123. package/components/flows/{FlowModuleHeader.svelte.d.ts → content/FlowModuleHeader.svelte.d.ts} +5 -3
  124. package/components/flows/content/FlowModuleScript.svelte +21 -0
  125. package/components/flows/content/FlowModuleScript.svelte.d.ts +17 -0
  126. package/components/flows/content/FlowModuleSuspend.svelte +27 -0
  127. package/components/flows/content/FlowModuleSuspend.svelte.d.ts +17 -0
  128. package/components/flows/content/FlowModuleWrapper.svelte +45 -0
  129. package/components/flows/content/FlowModuleWrapper.svelte.d.ts +14 -0
  130. package/components/flows/content/FlowRetries.svelte +80 -0
  131. package/components/flows/content/FlowRetries.svelte.d.ts +17 -0
  132. package/components/flows/content/FlowSchedules.svelte +18 -0
  133. package/components/flows/content/FlowSchedules.svelte.d.ts +14 -0
  134. package/components/flows/content/FlowSettings.svelte +78 -0
  135. package/components/flows/{FlowSettings.svelte.d.ts → content/FlowSettings.svelte.d.ts} +2 -6
  136. package/components/flows/content/RemoveStepConfirmationModal.svelte +32 -0
  137. package/components/flows/content/RemoveStepConfirmationModal.svelte.d.ts +19 -0
  138. package/components/flows/flowState.d.ts +8 -7
  139. package/components/flows/flowState.js +25 -46
  140. package/components/flows/flowStateUtils.d.ts +16 -14
  141. package/components/flows/flowStateUtils.js +81 -73
  142. package/components/flows/flowStore.js +7 -4
  143. package/components/flows/header/FlowImportExportMenu.svelte +55 -0
  144. package/components/flows/header/FlowImportExportMenu.svelte.d.ts +14 -0
  145. package/components/flows/header/FlowPreviewButtons.svelte +57 -0
  146. package/components/flows/header/FlowPreviewButtons.svelte.d.ts +14 -0
  147. package/components/flows/map/FlowErrorHandlerItem.svelte +60 -0
  148. package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +14 -0
  149. package/components/flows/map/FlowModuleSchemaItem.svelte +80 -0
  150. package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +32 -0
  151. package/components/flows/map/FlowModuleSchemaMap.svelte +241 -0
  152. package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +20 -0
  153. package/components/flows/pickers/PickHubScript.svelte +5 -3
  154. package/components/flows/pickers/PickHubScript.svelte.d.ts +2 -1
  155. package/components/flows/pickers/PickScript.svelte +4 -12
  156. package/components/flows/pickers/PickScript.svelte.d.ts +1 -1
  157. package/components/flows/propPicker/PropPickerWrapper.svelte +44 -0
  158. package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +33 -0
  159. package/components/flows/scheduleUtils.d.ts +0 -1
  160. package/components/flows/scheduleUtils.js +0 -1
  161. package/components/flows/types.d.ts +8 -0
  162. package/components/flows/types.js +1 -0
  163. package/components/flows/utils.d.ts +3 -1
  164. package/components/flows/utils.js +26 -10
  165. package/components/icons/AirtableIcon.svelte +1 -1
  166. package/components/icons/DiscordIcon.svelte +1 -1
  167. package/components/icons/GCloudIcon.svelte +1 -1
  168. package/components/icons/GItlabIcon.svelte +1 -1
  169. package/components/icons/GSheetsIcon.svelte +1 -1
  170. package/components/icons/GcalIcon.svelte +1 -1
  171. package/components/icons/GdriveIcon.svelte +1 -1
  172. package/components/icons/GithubIcon.svelte +1 -1
  173. package/components/icons/GmailIcon.svelte +1 -1
  174. package/components/icons/HatIcon.svelte +19 -0
  175. package/components/icons/HatIcon.svelte.d.ts +16 -0
  176. package/components/icons/MastodonIcon.svelte +1 -1
  177. package/components/icons/MatrixIcon.svelte +1 -1
  178. package/components/icons/PostgresIcon.svelte +1 -1
  179. package/components/icons/S3Icon.svelte +1 -1
  180. package/components/icons/Slack.svelte +1 -1
  181. package/components/icons/TogglIcon.svelte +8 -46
  182. package/components/jobs/JobDetail.svelte +1 -1
  183. package/components/landing/FlowGettingStarted.svelte +22 -68
  184. package/components/landing/FlowLandingBox.svelte +1 -1
  185. package/components/landing/RessourceGettingStarted.svelte +7 -37
  186. package/components/landing/ScriptBox.svelte +33 -60
  187. package/components/landing/ScriptGettingStarted.svelte +23 -69
  188. package/components/propertyPicker/ObjectViewer.svelte +18 -12
  189. package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
  190. package/components/propertyPicker/PropPicker.svelte +108 -11
  191. package/components/propertyPicker/WarningMessage.svelte +2 -15
  192. package/components/script_editor/LogPanel.svelte +108 -119
  193. package/components/script_editor/LogPanel.svelte.d.ts +2 -0
  194. package/components/sidebar/SidebarContent.svelte +2 -2
  195. package/editorUtils.d.ts +3 -0
  196. package/editorUtils.js +1 -0
  197. package/gen/core/OpenAPI.js +1 -1
  198. package/gen/index.d.ts +1 -0
  199. package/gen/models/CompletedJob.d.ts +2 -1
  200. package/gen/models/CompletedJob.js +1 -0
  201. package/gen/models/FlowModule.d.ts +3 -0
  202. package/gen/models/FlowStatus.d.ts +3 -0
  203. package/gen/models/FlowStatusModule.d.ts +1 -1
  204. package/gen/models/Preview.d.ts +2 -1
  205. package/gen/models/Preview.js +1 -0
  206. package/gen/models/QueuedJob.d.ts +2 -1
  207. package/gen/models/QueuedJob.js +1 -0
  208. package/gen/models/RawScript.d.ts +2 -1
  209. package/gen/models/RawScript.js +1 -0
  210. package/gen/models/Retry.d.ts +11 -0
  211. package/gen/models/Retry.js +4 -0
  212. package/gen/models/Script.d.ts +9 -2
  213. package/gen/models/Script.js +8 -0
  214. package/gen/services/JobService.d.ts +40 -0
  215. package/gen/services/JobService.js +70 -0
  216. package/gen/services/ScriptService.d.ts +14 -3
  217. package/gen/services/ScriptService.js +13 -0
  218. package/infer.d.ts +1 -1
  219. package/infer.js +6 -1
  220. package/package.json +71 -38
  221. package/script_helpers.d.ts +8 -2
  222. package/script_helpers.js +88 -16
  223. package/stores.d.ts +1 -1
  224. package/utils.d.ts +8 -6
  225. package/utils.js +57 -21
  226. package/components/FlowEditor.svelte +0 -55
  227. package/components/FlowPreview.svelte +0 -107
  228. package/components/FlowPreview.svelte.d.ts +0 -23
  229. package/components/ModuleStep.svelte +0 -131
  230. package/components/ModuleStep.svelte.d.ts +0 -25
  231. package/components/flows/CopyFirstStepSchema.svelte +0 -13
  232. package/components/flows/FlowBox.svelte +0 -16
  233. package/components/flows/FlowBox.svelte.d.ts +0 -23
  234. package/components/flows/FlowBoxHeader.svelte +0 -16
  235. package/components/flows/FlowBoxHeader.svelte.d.ts +0 -21
  236. package/components/flows/FlowInput.svelte +0 -22
  237. package/components/flows/FlowInputs.svelte +0 -65
  238. package/components/flows/FlowModuleHeader.svelte +0 -109
  239. package/components/flows/FlowSettings.svelte +0 -165
  240. package/components/flows/FlowTimeline.svelte +0 -169
  241. package/components/flows/FlowTimeline.svelte.d.ts +0 -21
  242. package/components/flows/stepOpenedStore.d.ts +0 -1
  243. package/components/flows/stepOpenedStore.js +0 -6
  244. package/components/propertyPicker/OverlayPropertyPicker.svelte +0 -69
  245. package/components/propertyPicker/OverlayPropertyPicker.svelte.d.ts +0 -24
@@ -1,23 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- title?: string | undefined;
6
- headerClickable?: boolean | undefined;
7
- };
8
- events: {
9
- clickheader: CustomEvent<any>;
10
- } & {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {
14
- header: {};
15
- content: {};
16
- };
17
- };
18
- export declare type FlowBoxProps = typeof __propDef.props;
19
- export declare type FlowBoxEvents = typeof __propDef.events;
20
- export declare type FlowBoxSlots = typeof __propDef.slots;
21
- export default class FlowBox extends SvelteComponentTyped<FlowBoxProps, FlowBoxEvents, FlowBoxSlots> {
22
- }
23
- export {};
@@ -1,16 +0,0 @@
1
- <script>import { createEventDispatcher } from 'svelte';
2
- export let title = undefined;
3
- export let clickable = false;
4
- const dispatch = createEventDispatcher();
5
- </script>
6
-
7
- <div
8
- on:click={() => dispatch('click')}
9
- class="flex items-center justify-between flex-wrap px-6 py-2"
10
- class:cursor-pointer={clickable}
11
- >
12
- {#if title}
13
- <h3 class="text-sm font-bold text-gray-900">{title}</h3>
14
- {/if}
15
- <slot />
16
- </div>
@@ -1,21 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- title?: string | undefined;
5
- clickable?: boolean | undefined;
6
- };
7
- events: {
8
- click: CustomEvent<any>;
9
- } & {
10
- [evt: string]: CustomEvent<any>;
11
- };
12
- slots: {
13
- default: {};
14
- };
15
- };
16
- export declare type FlowBoxHeaderProps = typeof __propDef.props;
17
- export declare type FlowBoxHeaderEvents = typeof __propDef.events;
18
- export declare type FlowBoxHeaderSlots = typeof __propDef.slots;
19
- export default class FlowBoxHeader extends SvelteComponentTyped<FlowBoxHeaderProps, FlowBoxHeaderEvents, FlowBoxHeaderSlots> {
20
- }
21
- export {};
@@ -1,22 +0,0 @@
1
- <script>import { emptySchema } from '../../utils';
2
- import SchemaEditor from '../SchemaEditor.svelte';
3
- import { flowStore } from './../flows/flowStore';
4
- import CopyFirstStepSchema from './CopyFirstStepSchema.svelte';
5
- import FlowBox from './FlowBox.svelte';
6
- </script>
7
-
8
- <FlowBox title="Flow Inputs">
9
- <div slot="header">
10
- <CopyFirstStepSchema />
11
- </div>
12
- <div slot="content">
13
- <div class="p-6 border-t border-gray-300">
14
- <SchemaEditor
15
- on:change={() => {
16
- $flowStore = $flowStore
17
- }}
18
- schema={$flowStore?.schema ?? emptySchema()}
19
- />
20
- </div>
21
- </div>
22
- </FlowBox>
@@ -1,65 +0,0 @@
1
- <script>import { RawScript } from '../../gen';
2
- import { faCode, faRepeat } from '@fortawesome/free-solid-svg-icons';
3
- import { createEventDispatcher } from 'svelte';
4
- import FlowScriptPicker from './pickers/FlowScriptPicker.svelte';
5
- import PickHubScript from './pickers/PickHubScript.svelte';
6
- import PickScript from './pickers/PickScript.svelte';
7
- export let shouldDisableLoopCreation = false;
8
- export let shouldDisableTriggerScripts = false;
9
- const dispatch = createEventDispatcher();
10
- </script>
11
-
12
- <div class="space-y-4">
13
- {#if !shouldDisableTriggerScripts}
14
- <div class="text-sm font-bold">Scripts</div>
15
- {/if}
16
-
17
- <div class="grid sm:grid-col-2 lg:grid-cols-3 gap-4">
18
- <PickScript on:pick />
19
- <PickHubScript on:pick />
20
-
21
- <FlowScriptPicker
22
- label={`Create a for-loop here`}
23
- disabled={shouldDisableLoopCreation}
24
- icon={faRepeat}
25
- iconColor="text-blue-500"
26
- on:click={() => dispatch('loop')}
27
- />
28
-
29
- <FlowScriptPicker
30
- label={`New PostgreSQL query`}
31
- icon={faCode}
32
- iconColor="text-blue-800"
33
- on:click={() => dispatch('new', { language: RawScript.language.DENO, type: 'pgsql' })}
34
- />
35
-
36
- <FlowScriptPicker
37
- label="New Python script (3.10)"
38
- icon={faCode}
39
- iconColor="text-green-500"
40
- on:click={() => dispatch('new', { language: RawScript.language.PYTHON3, type: 'flow' })}
41
- />
42
-
43
- <FlowScriptPicker
44
- label="New Typescript script (Deno)"
45
- icon={faCode}
46
- iconColor="text-blue-800"
47
- on:click={() => dispatch('new', { language: RawScript.language.DENO, type: 'flow' })}
48
- />
49
- </div>
50
-
51
- {#if !shouldDisableTriggerScripts}
52
- <div class="text-sm font-bold">Trigger scripts</div>
53
-
54
- <div class="grid sm:grid-col-1 md:grid-col-2 lg:grid-cols-3 gap-4">
55
- <PickScript isTrigger={true} on:pick />
56
- <PickHubScript isTrigger={true} on:pick />
57
- <FlowScriptPicker
58
- label="New Typescript script (Deno)"
59
- icon={faCode}
60
- iconColor="text-blue-800"
61
- on:click={() => dispatch('new', { language: RawScript.language.DENO, type: 'trigger' })}
62
- />
63
- </div>
64
- {/if}
65
- </div>
@@ -1,109 +0,0 @@
1
- <script>import { getScriptByPath } from '../../utils';
2
- import { faArrowDown, faClose, faCode, faCodeBranch, faSave, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
3
- import { Button } from 'flowbite-svelte';
4
- import { createEventDispatcher } from 'svelte';
5
- import Icon from 'svelte-awesome';
6
- import { Highlight } from 'svelte-highlight';
7
- import python from 'svelte-highlight/languages/python';
8
- import typescript from 'svelte-highlight/languages/typescript';
9
- import IconedPath from '../IconedPath.svelte';
10
- import Modal from '../Modal.svelte';
11
- import { isEmptyFlowModule } from './flowStateUtils';
12
- import { stepOpened } from './stepOpenedStore';
13
- export let indexes;
14
- export let mod;
15
- $: shouldPick = isEmptyFlowModule(mod);
16
- let modalViewer;
17
- let modalViewerContent = '';
18
- let modalViewerLanguage = 'deno';
19
- async function viewCode() {
20
- if (mod.value.type == 'script') {
21
- const { content, language } = await getScriptByPath(mod.value.path);
22
- modalViewerContent = content;
23
- modalViewerLanguage = language;
24
- modalViewer.openModal();
25
- }
26
- else {
27
- throw Error('Not a script');
28
- }
29
- }
30
- const dispatch = createEventDispatcher();
31
- $: opened = $stepOpened === String(indexes.join('-'));
32
- </script>
33
-
34
- <div>
35
- <h3 class="text-sm font-bold text-gray-900 flex flex-col">
36
- <span class="text-xs shrink">
37
- {#if 'path' in mod.value && mod.value.path}
38
- <IconedPath path={mod.value.path} />
39
- {:else if 'language' in mod.value && mod.value.language}
40
- Inline {mod.value.language}
41
- {:else}
42
- Select a script
43
- {/if}
44
- </span>
45
- {#if ('path' in mod.value && mod.value.path) || ('language' in mod.value && mod.value.language)}
46
- <input
47
- on:click|stopPropagation={() => undefined}
48
- class="overflow-x-auto"
49
- type="text"
50
- bind:value={mod.summary}
51
- placeholder="Summary"
52
- />
53
- {/if}
54
- </h3>
55
- </div>
56
-
57
- <div class="flex flex-row space-x-2" on:click|stopPropagation={() => undefined}>
58
- {#if mod.value.type === 'script' && !shouldPick}
59
- <Button size="xs" color="alternative" on:click={() => dispatch('fork')}>
60
- <Icon data={faCodeBranch} class="mr-2" />
61
- Fork
62
- </Button>
63
- <Button size="xs" color="alternative" on:click={viewCode}>
64
- <Icon data={faCode} class="mr-2" />
65
- View code
66
- </Button>
67
- {/if}
68
-
69
- {#if mod.value.type === 'rawscript' && !shouldPick}
70
- <Button size="xs" color="alternative" on:click={() => dispatch('createScriptFromInlineScript')}>
71
- <Icon data={faSave} class="mr-2" />
72
- Save to workspace
73
- </Button>
74
- {/if}
75
- <Button
76
- size="xs"
77
- color="alternative"
78
- on:click={() => {
79
- dispatch('delete')
80
- }}
81
- >
82
- <Icon data={faTrashAlt} class="mr-2" />
83
- Remove step
84
- </Button>
85
- {#if opened}
86
- <Button size="xs" color="dark" on:click={() => stepOpened.update(() => undefined)}>
87
- <Icon data={faClose} />
88
- </Button>
89
- {:else}
90
- <Button
91
- size="xs"
92
- color="light"
93
- on:click={() => stepOpened.update(() => String(indexes.join('-')))}
94
- >
95
- <Icon data={faArrowDown} />
96
- </Button>
97
- {/if}
98
- </div>
99
-
100
- <Modal bind:this={modalViewer}>
101
- <div slot="title">Script {'path' in mod?.value ? mod?.value.path : ''}</div>
102
- <div slot="content">
103
- {#if modalViewerLanguage === 'python3'}
104
- <Highlight language={python} code={modalViewerContent} />
105
- {:else if modalViewerLanguage === 'deno'}
106
- <Highlight language={typescript} code={modalViewerContent} />
107
- {/if}
108
- </div>
109
- </Modal>
@@ -1,165 +0,0 @@
1
- <script>import { sendUserToast } from '../../utils';
2
- import { faFileExport, faFileImport, faGlobe } from '@fortawesome/free-solid-svg-icons';
3
- import { Button } from 'flowbite-svelte';
4
- import Icon from 'svelte-awesome';
5
- import Menu from '../common/menu/Menu.svelte';
6
- import MenuItem from '../common/menu/MenuItem.svelte';
7
- import FlowViewer from '../FlowViewer.svelte';
8
- import Modal from '../Modal.svelte';
9
- import SimpleEditor from '../SimpleEditor.svelte';
10
- import CollapseLink from './../CollapseLink.svelte';
11
- import CronInput from './../CronInput.svelte';
12
- import FlowBox from './../flows/FlowBox.svelte';
13
- import { flowStore, initFlow } from './../flows/flowStore';
14
- import Path from './../Path.svelte';
15
- import Required from './../Required.svelte';
16
- import SchemaForm from './../SchemaForm.svelte';
17
- import Toggle from './../Toggle.svelte';
18
- import Tooltip from './../Tooltip.svelte';
19
- import { stepOpened } from './stepOpenedStore';
20
- import { cleanInputs } from './utils';
21
- export let pathError = '';
22
- export let initialPath = '';
23
- export let previewArgs = {};
24
- export let scheduleArgs = {};
25
- export let scheduleEnabled = false;
26
- export let scheduleCron = '0 */5 * * *';
27
- let jsonSetter;
28
- let jsonViewer;
29
- let jsonValue = '';
30
- </script>
31
-
32
- <Modal bind:this={jsonSetter}>
33
- <div slot="title">Import JSON</div>
34
- <div slot="content" class="h-full">
35
- <SimpleEditor bind:code={jsonValue} lang="json" class="h-full" />
36
- </div>
37
- <div slot="submission">
38
- <button
39
- class="default-button px-4 py-2 font-semibold"
40
- on:click={() => {
41
- Object.assign($flowStore, JSON.parse(jsonValue))
42
- initFlow($flowStore)
43
- stepOpened.update(() => undefined)
44
- sendUserToast('OpenFlow imported from JSON')
45
- jsonSetter.closeModal()
46
- }}
47
- >
48
- Import
49
- </button>
50
- </div>
51
- </Modal>
52
-
53
- <Modal bind:this={jsonViewer}>
54
- <div slot="title">See JSON</div>
55
- <div slot="content" class="h-full">
56
- <FlowViewer flow={cleanInputs($flowStore)} tab="json" />
57
- </div>
58
- </Modal>
59
-
60
- <FlowBox title="Flow Settings">
61
- <div slot="header">
62
- <div class="flex flex-row-reverse">
63
- <Menu placement="bottom-end">
64
- <button slot="trigger" class="text-gray-900 bg-white dark:text-white dark:bg-gray-800">
65
- ...
66
- </button>
67
- <div class="divide-y divide-gray-200">
68
- <MenuItem
69
- on:click={() => {
70
- jsonSetter.openModal()
71
- }}
72
- >
73
- <Icon data={faFileImport} scale={0.6} class="inline mr-2" />
74
- Import from a JSON OpenFlow
75
- </MenuItem>
76
- <MenuItem
77
- on:click={() => {
78
- jsonViewer.openModal()
79
- }}
80
- >
81
- <Icon data={faFileExport} scale={0.6} class="inline mr-2" />
82
- Export to a JSON OpenFlow
83
- </MenuItem>
84
- <MenuItem
85
- on:click={() => {
86
- const url = new URL('https://hub.windmill.dev/flows/add')
87
- const openFlow = {
88
- value: $flowStore.value,
89
- summary: $flowStore.summary,
90
- description: $flowStore.description,
91
- schema: $flowStore.schema
92
- }
93
- url.searchParams.append('flow', btoa(JSON.stringify(openFlow)))
94
- window.open(url, '_blank')?.focus()
95
- }}
96
- >
97
- <Icon data={faGlobe} scale={0.6} class="inline mr-2" />
98
- Publish to Hub
99
- </MenuItem>
100
- </div>
101
- </Menu>
102
- </div>
103
- </div>
104
-
105
- <div slot="content">
106
- <div class="p-6 border-t border-gray-300">
107
- <Path
108
- bind:error={pathError}
109
- bind:path={$flowStore.path}
110
- {initialPath}
111
- namePlaceholder="my_flow"
112
- kind="flow"
113
- >
114
- <div slot="ownerToolkit">
115
- Flow permissions depend on their path. Select the group <span class="font-mono">all</span>
116
- to share your flow, and <span class="font-mono">user</span> to keep it private.
117
- <a href="https://docs.windmill.dev/docs/reference/namespaces">docs</a>
118
- </div>
119
- </Path>
120
-
121
- <label class="block mt-4">
122
- <span class="text-gray-700">Summary <Required required={false} /></span>
123
- <textarea
124
- bind:value={$flowStore.summary}
125
- class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50"
126
- placeholder="A very short summary of the flow displayed when the flow is listed"
127
- rows="1"
128
- />
129
- </label>
130
-
131
- <CollapseLink text="set primary schedule" open={true}>
132
- <Tooltip>
133
- The primary schedule of a flow is simply a schedule that has the same name as a flow. It
134
- can be set and enabled directly within the flow editor. "Watching for new changes" flows
135
- are meant to be watching regularly for new items in an external systems. The primary
136
- schedule purpose is there to set the periodicity at which you want this watcher to
137
- operate.
138
- </Tooltip>
139
- <Toggle
140
- bind:checked={scheduleEnabled}
141
- options={{
142
- left: 'disabled',
143
- right: 'enabled'
144
- }}
145
- />
146
- <div class="p-2 my-2 rounded" class:bg-gray-300={!scheduleEnabled}>
147
- {#if !scheduleEnabled}
148
- <span class="font-black">No next scheduled run when disabled</span>
149
- {/if}
150
- <CronInput bind:schedule={scheduleCron} />
151
- </div>
152
- <div class="flex flex-row-reverse">
153
- <Button
154
- color="alternative"
155
- size="sm"
156
- on:click={() => (scheduleArgs = JSON.parse(JSON.stringify(previewArgs)))}
157
- >
158
- Copy from preview arguments
159
- </Button>
160
- </div>
161
- <SchemaForm schema={$flowStore.schema} bind:args={scheduleArgs} />
162
- </CollapseLink>
163
- </div>
164
- </div>
165
- </FlowBox>
@@ -1,169 +0,0 @@
1
- <script>import { faInfoCircle, faPen, faPlus, faSliders, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
2
- import { Button, Toggle, Tooltip } from 'flowbite-svelte';
3
- import Icon from 'svelte-awesome';
4
- import ModuleStep from '../ModuleStep.svelte';
5
- import FlowInput from './FlowInput.svelte';
6
- import { emptyFlowModuleSchema } from './flowStateUtils';
7
- import { stepOpened } from './stepOpenedStore';
8
- export let args = {};
9
- export let flowModuleSchemas;
10
- export let parentIndex = undefined;
11
- const root = parentIndex === undefined;
12
- function insertAtIndex(index) {
13
- flowModuleSchemas.splice(index, 0, emptyFlowModuleSchema());
14
- flowModuleSchemas = flowModuleSchemas;
15
- const indexes = getIndexes(parentIndex, index);
16
- stepOpened.update(() => String(indexes.join('-')));
17
- }
18
- function removeAtIndex(index) {
19
- flowModuleSchemas.splice(index, 1);
20
- flowModuleSchemas = flowModuleSchemas;
21
- }
22
- function getIndexes(parentIndex, childIndex) {
23
- const indexes = [];
24
- if (parentIndex !== undefined) {
25
- indexes.push(parentIndex);
26
- }
27
- indexes.push(childIndex);
28
- return indexes;
29
- }
30
- const color = root ? 'blue' : 'orange';
31
- </script>
32
-
33
- <div class="w-full">
34
- <ol class="relative ml-4 border-l border-gray-200 dark:border-gray-700 space-y-12 border-dashed">
35
- {#if root}
36
- <li class="ml-8">
37
- <span class="relative">
38
- <span
39
- class={`flex absolute -left-12 justify-center items-center w-8 h-8 bg-${color}-200 rounded-full ring-8 ring-white dark:ring-gray-900 dark:bg-${color}-900`}
40
- >
41
- <Icon
42
- class={`text-${color}-600 dark:text-${color}-400 text-font-bold text-center`}
43
- data={faSliders}
44
- />
45
- </span>
46
- </span>
47
- <slot name="settings" />
48
- </li>
49
- <li class="ml-8 ">
50
- <span class="relative">
51
- <span
52
- class={`flex absolute top-4 -left-12 justify-center items-center w-8 h-8 bg-${color}-200 rounded-full ring-8 ring-white dark:ring-gray-900 dark:bg-${color}-900`}
53
- >
54
- <Icon
55
- class={`text-${color}-600 dark:text-${color}-400 font-bold text-center`}
56
- data={faPen}
57
- />
58
- </span>
59
- </span>
60
- <FlowInput />
61
- </li>
62
- {/if}
63
- {#each flowModuleSchemas as flowModuleSchema, index (index)}
64
- {#if flowModuleSchema.flowModule.value.type === 'forloopflow'}
65
- <li id="module-{index}" class="ml-4 relative">
66
- <button
67
- on:click={() => insertAtIndex(index)}
68
- class="flex absolute -top-10 -left-8 justify-center items-center bg-white border-2 border-gray-200 w-8 h-8 rounded-full ring-8 ring-white dark:ring-gray-900 dark:bg-${color}-900"
69
- >
70
- <Icon class="text-gray-400" data={faPlus} />
71
- </button>
72
- <div
73
- class="py-2 px-6 ml-4 mb-16 flex justify-between text-sm font-bold border border-gray-300 rounded-md shadow-md"
74
- role="alert"
75
- >
76
- <span class="flex items-center z-50">
77
- For loop
78
- <Tooltip
79
- content="Inside a loop, the flow input has an 'iter' property. It contains the value and the index of the iteration"
80
- placement="bottom"
81
- arrow
82
- >
83
- <Icon data={faInfoCircle} class="ml-2" /></Tooltip
84
- >
85
- </span>
86
- <span class="flex items-center space-x-2">
87
- <Toggle size="small" bind:checked={flowModuleSchema.flowModule.value.skip_failures}>
88
- Skip failures
89
- </Toggle>
90
- <Button size="xs" color="alternative" on:click={() => removeAtIndex(index)}>
91
- <Icon data={faTrashAlt} class="mr-2" />
92
- Remove loop
93
- </Button>
94
- </span>
95
- </div>
96
- <span
97
- class="flex absolute top-3 -left-8 justify-center items-center w-8 h-8 bg-orange-200 rounded-full ring-8 ring-white dark:ring-gray-900 dark:bg-orange-900"
98
- >
99
- <span class={`text-orange-600 dark:text-orange-400 font-bold text-center`}>
100
- {index + 1}
101
- </span>
102
- </span>
103
-
104
- <svelte:self
105
- bind:args
106
- bind:flowModuleSchemas={flowModuleSchema.childFlowModules}
107
- parentIndex={index}
108
- />
109
-
110
- <div
111
- class="flex px-6 py-4 ml-4 mt-4 text-sm font-bold border border-gray-300 rounded-md shadow-md z-50"
112
- role="alert"
113
- >
114
- End of For Loop
115
- <Tooltip
116
- content="The results of each iteration are collecting in an array and is the result of the step. "
117
- placement="bottom"
118
- arrow
119
- >
120
- <Icon data={faInfoCircle} class="ml-2" /></Tooltip
121
- >
122
- </div>
123
- </li>
124
- {:else}
125
- <li id="module-{String(getIndexes(parentIndex, index).join('-'))}" class="ml-8">
126
- <span class="relative">
127
- <button
128
- on:click={() => insertAtIndex(index)}
129
- class="flex absolute -top-10 -left-12 justify-center items-center bg-white border-2 border-gray-200 w-8 h-8 rounded-full ring-8 ring-white dark:ring-gray-900 dark:bg-${color}-900"
130
- >
131
- <Icon class="text-gray-400" data={faPlus} />
132
- </button>
133
- <span
134
- class={`flex absolute top-4 -left-12 justify-center items-center w-8 h-8 bg-${color}-200 rounded-full ring-8 ring-white dark:ring-gray-900 dark:bg-${color}-900`}
135
- >
136
- <span class={`text-${color}-600 dark:text-${color}-400 font-bold text-center`}>
137
- {index + 1}
138
- </span>
139
- </span>
140
- <ModuleStep
141
- indexes={getIndexes(parentIndex, index)}
142
- bind:mod={flowModuleSchema.flowModule}
143
- bind:args
144
- bind:schema={flowModuleSchema.schema}
145
- bind:childFlowModules={flowModuleSchema.childFlowModules}
146
- on:delete={() => removeAtIndex(index)}
147
- />
148
- </span>
149
- </li>
150
- {/if}
151
- {#if flowModuleSchemas.length - 1 === index}
152
- <button
153
- on:click={() => insertAtIndex(flowModuleSchemas.length)}
154
- class="-ml-4 -mt-4 flex justify-center items-center bg-white border-2 border-gray-200 w-8 h-8 rounded-full ring-8 ring-white dark:ring-gray-900 dark:bg-${color}-900"
155
- >
156
- <Icon class="text-gray-400" data={faPlus} />
157
- </button>
158
- {/if}
159
- {/each}
160
- {#if flowModuleSchemas.length === 0}
161
- <button
162
- on:click={() => insertAtIndex(0)}
163
- class="-ml-4 flex justify-center items-center bg-white border-2 border-gray-200 w-8 h-8 rounded-full ring-8 ring-white dark:ring-gray-900 dark:bg-${color}-900"
164
- >
165
- <Icon class="text-gray-400" data={faPlus} />
166
- </button>
167
- {/if}
168
- </ol>
169
- </div>
@@ -1,21 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type { FlowState } from './flowState';
3
- declare const __propDef: {
4
- props: {
5
- args?: Record<string, any> | undefined;
6
- flowModuleSchemas: FlowState;
7
- parentIndex?: number | undefined;
8
- };
9
- events: {
10
- [evt: string]: CustomEvent<any>;
11
- };
12
- slots: {
13
- settings: {};
14
- };
15
- };
16
- export declare type FlowTimelineProps = typeof __propDef.props;
17
- export declare type FlowTimelineEvents = typeof __propDef.events;
18
- export declare type FlowTimelineSlots = typeof __propDef.slots;
19
- export default class FlowTimeline extends SvelteComponentTyped<FlowTimelineProps, FlowTimelineEvents, FlowTimelineSlots> {
20
- }
21
- export {};
@@ -1 +0,0 @@
1
- export declare const stepOpened: import("svelte/store").Writable<string | undefined>;
@@ -1,6 +0,0 @@
1
- import { writable } from 'svelte/store';
2
- import { scrollIntoView } from './utils';
3
- export const stepOpened = writable(undefined);
4
- stepOpened.subscribe((insertAt) => {
5
- setTimeout(() => scrollIntoView(document.querySelector(`#module-${insertAt}`)), 100);
6
- });