windmill-components 1.84.6 → 1.86.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 (271) hide show
  1. package/components/AppConnect.svelte +2 -2
  2. package/components/ArgInfo.svelte +4 -6
  3. package/components/ArgInput.svelte +12 -12
  4. package/components/ArgInput.svelte.d.ts +1 -2
  5. package/components/CenteredModal.svelte +9 -7
  6. package/components/CronInput.svelte +301 -64
  7. package/components/CronInput.svelte.d.ts +3 -3
  8. package/components/DisplayResult.svelte +5 -7
  9. package/components/Dropdown.svelte +5 -4
  10. package/components/Editor.svelte +138 -83
  11. package/components/Editor.svelte.d.ts +10 -4
  12. package/components/EditorBar.svelte +72 -36
  13. package/components/EditorBar.svelte.d.ts +1 -1
  14. package/components/FlowBuilder.svelte +136 -110
  15. package/components/FlowGraphViewer.svelte +5 -8
  16. package/components/FlowGraphViewer.svelte.d.ts +1 -0
  17. package/components/FlowPreviewContent.svelte +14 -11
  18. package/components/FlowStatusViewer.svelte +54 -44
  19. package/components/FlowViewer.svelte +1 -1
  20. package/components/FolderEditor.svelte +2 -10
  21. package/components/FolderUsageInfo.svelte +1 -1
  22. package/components/GroupEditor.svelte +6 -15
  23. package/components/HighlightCode.svelte +1 -1
  24. package/components/InlineCodeCopy.svelte +2 -1
  25. package/components/InputTransformForm.svelte +75 -73
  26. package/components/InputTransformSchemaForm.svelte +1 -1
  27. package/components/InputTransformsViewer.svelte +1 -1
  28. package/components/LightweightArgInput.svelte +12 -0
  29. package/components/LightweightArgInput.svelte.d.ts +1 -0
  30. package/components/LightweightSchemaForm.svelte +2 -1
  31. package/components/LightweightSchemaForm.svelte.d.ts +2 -0
  32. package/components/Modal.svelte +2 -2
  33. package/components/ModulePreview.svelte +11 -11
  34. package/components/ModuleStatus.svelte +0 -1
  35. package/components/Multiselect.svelte +1 -0
  36. package/components/ObjectResourceInput.svelte +1 -23
  37. package/components/Path.svelte +56 -94
  38. package/components/Popover.svelte +7 -19
  39. package/components/Range.svelte +1 -4
  40. package/components/ResourceEditor.svelte +6 -6
  41. package/components/ResourcePicker.svelte +2 -2
  42. package/components/RunForm.svelte +5 -6
  43. package/components/ScheduleEditor.svelte +23 -13
  44. package/components/SchemaModal.svelte +1 -0
  45. package/components/SchemaModal.svelte.d.ts +1 -1
  46. package/components/ScriptBuilder.svelte +201 -206
  47. package/components/ScriptBuilder.svelte.d.ts +2 -0
  48. package/components/ScriptEditor.svelte +38 -38
  49. package/components/ScriptEditor.svelte.d.ts +5 -1
  50. package/components/ScriptSchema.svelte +1 -20
  51. package/components/ScriptSchema.svelte.d.ts +0 -1
  52. package/components/SearchItems.svelte +1 -1
  53. package/components/SharedBadge.svelte +0 -1
  54. package/components/SimpleEditor.svelte +17 -37
  55. package/components/SimpleEditor.svelte.d.ts +6 -0
  56. package/components/Star.svelte +2 -1
  57. package/components/TemplateEditor.svelte +21 -29
  58. package/components/TemplateEditor.svelte.d.ts +3 -0
  59. package/components/Toast.svelte +50 -0
  60. package/components/Toast.svelte.d.ts +18 -0
  61. package/components/apps/components/buttons/AppButton.svelte +2 -1
  62. package/components/apps/components/display/AppBarChart.svelte +5 -5
  63. package/components/apps/components/display/AppHtml.svelte +9 -6
  64. package/components/apps/components/display/AppIcon.svelte +3 -0
  65. package/components/apps/components/display/AppImage.svelte +4 -1
  66. package/components/apps/components/display/AppMap.svelte +3 -0
  67. package/components/apps/components/display/AppPdf.svelte +14 -11
  68. package/components/apps/components/display/AppText.svelte +152 -60
  69. package/components/apps/components/display/AppText.svelte.d.ts +4 -0
  70. package/components/apps/components/display/table/AppAggridTable.svelte +25 -12
  71. package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -1
  72. package/components/apps/components/display/table/AppTable.svelte +1 -2
  73. package/components/apps/components/display/table/AppTableFooter.svelte +0 -1
  74. package/components/apps/components/helpers/AlignWrapper.svelte +1 -20
  75. package/components/apps/components/helpers/HiddenComponent.svelte +12 -6
  76. package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +2 -1
  77. package/components/apps/components/helpers/InitializeComponent.svelte +12 -0
  78. package/components/apps/components/helpers/InitializeComponent.svelte.d.ts +16 -0
  79. package/components/apps/components/helpers/InputValue.svelte +6 -0
  80. package/components/apps/components/helpers/NonRunnableComponent.svelte +4 -3
  81. package/components/apps/components/helpers/RunnableComponent.svelte +24 -6
  82. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
  83. package/components/apps/components/helpers/RunnableWrapper.svelte +8 -2
  84. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
  85. package/components/apps/components/helpers/eval.d.ts +4 -0
  86. package/components/apps/components/helpers/eval.js +3 -1
  87. package/components/apps/components/inputs/AppCheckbox.svelte +3 -0
  88. package/components/apps/components/inputs/AppDateInput.svelte +3 -0
  89. package/components/apps/components/inputs/AppFileInput.svelte +4 -0
  90. package/components/apps/components/inputs/AppMultiSelect.svelte +5 -2
  91. package/components/apps/components/inputs/AppNumberInput.svelte +3 -0
  92. package/components/apps/components/inputs/AppRangeInput.svelte +8 -5
  93. package/components/apps/components/inputs/AppSelect.svelte +3 -9
  94. package/components/apps/components/inputs/AppSliderInputs.svelte +2 -0
  95. package/components/apps/components/inputs/AppTextInput.svelte +12 -5
  96. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +3 -0
  97. package/components/apps/components/layout/AppContainer.svelte +3 -0
  98. package/components/apps/components/layout/AppDivider.svelte +3 -0
  99. package/components/apps/components/layout/AppDrawer.svelte +3 -0
  100. package/components/apps/components/layout/AppSplitpanes.svelte +3 -0
  101. package/components/apps/components/layout/AppTabs.svelte +4 -1
  102. package/components/apps/editor/AppEditor.svelte +42 -35
  103. package/components/apps/editor/AppEditorHeader.svelte +23 -15
  104. package/components/apps/editor/AppPreview.svelte +5 -3
  105. package/components/apps/editor/ComponentHeader.svelte +20 -1
  106. package/components/apps/editor/ComponentHeader.svelte.d.ts +3 -0
  107. package/components/apps/editor/GridEditor.svelte +2 -2
  108. package/components/apps/editor/RecomputeAllComponents.svelte +7 -4
  109. package/components/apps/editor/SettingsPanel.svelte +1 -0
  110. package/components/apps/editor/SubGridEditor.svelte +5 -5
  111. package/components/apps/editor/appUtils.js +13 -3
  112. package/components/apps/editor/component/Component.svelte +24 -2
  113. package/components/apps/editor/component/ComponentWrapper.svelte +5 -0
  114. package/components/apps/editor/component/components.d.ts +39 -39
  115. package/components/apps/editor/componentsPanel/ComponentList.svelte +12 -26
  116. package/components/apps/editor/componentsPanel/CssSettings.svelte +1 -3
  117. package/components/apps/editor/componentsPanel/ListItem.svelte +2 -2
  118. package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +2 -2
  119. package/components/apps/editor/contextPanel/ContextPanel.svelte +1 -2
  120. package/components/apps/editor/contextPanel/components/IdEditor.svelte +90 -0
  121. package/components/apps/editor/contextPanel/components/IdEditor.svelte.d.ts +18 -0
  122. package/components/apps/editor/contextPanel/components/OutputHeader.svelte +92 -21
  123. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +4 -3
  124. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +3 -3
  125. package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +50 -37
  126. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +3 -3
  127. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +14 -6
  128. package/components/apps/editor/settingsPanel/TableActions.svelte +1 -1
  129. package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +2 -2
  130. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +8 -3
  131. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +0 -2
  132. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +2 -2
  133. package/components/apps/editor/settingsPanel/mainInput/WorkspaceFlowList.svelte +2 -5
  134. package/components/apps/editor/settingsPanel/mainInput/WorkspaceScriptList.svelte +2 -5
  135. package/components/apps/editor/settingsPanel/triggerLists/BackgroundScriptTriggerList.svelte +15 -7
  136. package/components/apps/editor/settingsPanel/triggerLists/BackgroundScriptTriggerList.svelte.d.ts +2 -1
  137. package/components/apps/editor/settingsPanel/triggerLists/ComponentTriggerList.svelte +2 -2
  138. package/components/apps/editor/settingsPanel/triggerLists/ComponentTriggerList.svelte.d.ts +1 -1
  139. package/components/apps/editor/settingsPanel/triggerLists/TriggerBadgesList.svelte +6 -5
  140. package/components/apps/editor/settingsPanel/triggerLists/TriggerBadgesList.svelte.d.ts +1 -1
  141. package/components/apps/inputType.d.ts +1 -0
  142. package/components/apps/rx.d.ts +0 -2
  143. package/components/apps/rx.js +1 -3
  144. package/components/apps/svelte-grid/utils/helper.js +1 -1
  145. package/components/apps/types.d.ts +12 -0
  146. package/components/apps/utils.d.ts +3 -1
  147. package/components/apps/utils.js +26 -2
  148. package/components/build_workers.d.ts +14 -0
  149. package/components/build_workers.js +45 -0
  150. package/components/common/badge/Badge.svelte +0 -1
  151. package/components/common/button/Button.svelte +46 -24
  152. package/components/common/button/Button.svelte.d.ts +7 -1
  153. package/components/common/button/ButtonDropdown.svelte +25 -0
  154. package/components/common/button/ButtonDropdown.svelte.d.ts +27 -0
  155. package/components/common/button/model.d.ts +2 -3
  156. package/components/common/button/model.js +7 -3
  157. package/components/common/drawer/Drawer.svelte +2 -3
  158. package/components/common/drawer/DrawerContent.svelte +2 -6
  159. package/components/common/fileInput/FileInput.svelte +5 -1
  160. package/components/common/fileInput/FileInput.svelte.d.ts +1 -0
  161. package/components/common/index.d.ts +0 -2
  162. package/components/common/index.js +0 -2
  163. package/components/common/menu/Menu.svelte.d.ts +1 -1
  164. package/components/common/popup/Popup.svelte +16 -8
  165. package/components/common/popup/Popup.svelte.d.ts +6 -0
  166. package/components/common/table/AppRow.svelte +0 -1
  167. package/components/common/table/FlowRow.svelte +0 -1
  168. package/components/common/table/ScriptRow.svelte +2 -3
  169. package/components/common/tabs/Tab.svelte +10 -5
  170. package/components/common/tabs/Tabs.svelte +20 -1
  171. package/components/common/tabs/Tabs.svelte.d.ts +3 -0
  172. package/components/flows/CreateActionsApp.svelte +14 -9
  173. package/components/flows/CreateActionsFlow.svelte +11 -10
  174. package/components/flows/FlowEditor.svelte +2 -2
  175. package/components/flows/content/CapturePayload.svelte +2 -4
  176. package/components/flows/content/DynamicInputHelpBox.svelte +1 -0
  177. package/components/flows/content/FlowBranchesAllWrapper.svelte +2 -2
  178. package/components/flows/content/FlowBranchesOneWrapper.svelte +2 -2
  179. package/components/flows/content/FlowInputsFlow.svelte +1 -1
  180. package/components/flows/content/FlowInputsFlow.svelte.d.ts +1 -3
  181. package/components/flows/content/FlowModuleComponent.svelte +27 -28
  182. package/components/flows/content/FlowModuleWrapper.svelte +0 -1
  183. package/components/flows/content/FlowRetries.svelte +1 -2
  184. package/components/flows/content/FlowSchedules.svelte +3 -1
  185. package/components/flows/content/ScriptEditorDrawer.svelte +1 -1
  186. package/components/flows/flowStateUtils.d.ts +0 -3
  187. package/components/flows/flowStateUtils.js +3 -23
  188. package/components/flows/header/FlowImportExportMenu.svelte +10 -12
  189. package/components/flows/header/FlowPreviewButtons.svelte +21 -24
  190. package/components/flows/idUtils.d.ts +4 -0
  191. package/components/flows/idUtils.js +47 -0
  192. package/components/flows/map/FlowModuleSchemaItem.svelte +6 -6
  193. package/components/flows/map/MapItem.svelte +9 -9
  194. package/components/flows/map/MapItem.svelte.d.ts +0 -1
  195. package/components/flows/scheduleUtils.d.ts +1 -0
  196. package/components/flows/scheduleUtils.js +2 -1
  197. package/components/flows/utils.d.ts +0 -2
  198. package/components/flows/utils.js +3 -35
  199. package/components/graph/FlowGraph.svelte +22 -8
  200. package/components/graph/FlowGraph.svelte.d.ts +2 -0
  201. package/components/graph/svelvet/collapsible/controllers/util.js +3 -14
  202. package/components/graph/svelvet/container/views/GraphView.svelte +25 -42
  203. package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +2 -0
  204. package/components/graph/svelvet/container/views/Svelvet.svelte +5 -3
  205. package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +3 -0
  206. package/components/graph/svelvet/edges/controllers/anchorCbDev.js +5 -5
  207. package/components/graph/svelvet/edges/controllers/util.js +1 -1
  208. package/components/graph/svelvet/edges/models/Edge.js +2 -2
  209. package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +1 -1
  210. package/components/graph/svelvet/nodes/models/Node.js +0 -1
  211. package/components/graph/svelvet/nodes/views/Node.svelte +0 -1
  212. package/components/graph/svelvet/nodes/views/Node.svelte.d.ts +0 -1
  213. package/components/graph/svelvet/store/controllers/util.d.ts +1 -1
  214. package/components/graph/svelvet/store/controllers/util.js +3 -3
  215. package/components/home/ItemsList.svelte +11 -11
  216. package/components/icons/WindmillIcon.svelte +4 -0
  217. package/components/icons/WindmillIcon.svelte.d.ts +1 -0
  218. package/components/propertyPicker/ObjectViewer.svelte +0 -5
  219. package/components/propertyPicker/ObjectViewer.svelte.d.ts +0 -1
  220. package/components/propertyPicker/PropPicker.svelte +2 -2
  221. package/components/scripts/CreateActionsScript.svelte +4 -22
  222. package/components/sidebar/WorkspaceMenu.svelte +8 -4
  223. package/editorUtils.d.ts +3 -0
  224. package/editorUtils.js +7 -2
  225. package/gen/core/OpenAPI.js +1 -1
  226. package/gen/index.d.ts +7 -1
  227. package/gen/index.js +3 -0
  228. package/gen/models/CreateInput.d.ts +5 -0
  229. package/gen/models/CreateInput.js +4 -0
  230. package/gen/models/EditSchedule.d.ts +1 -0
  231. package/gen/models/Input.d.ts +6 -0
  232. package/gen/models/Input.js +4 -0
  233. package/gen/models/MainArgSignature.d.ts +8 -0
  234. package/gen/models/MainArgSignature.js +8 -1
  235. package/gen/models/NewSchedule.d.ts +1 -1
  236. package/gen/models/NewTokenImpersonate.d.ts +5 -0
  237. package/gen/models/NewTokenImpersonate.js +4 -0
  238. package/gen/models/RunnableType.d.ts +5 -0
  239. package/gen/models/RunnableType.js +9 -0
  240. package/gen/models/Schedule.d.ts +1 -1
  241. package/gen/models/UpdateInput.d.ts +4 -0
  242. package/gen/models/UpdateInput.js +4 -0
  243. package/gen/services/FlowService.d.ts +18 -0
  244. package/gen/services/FlowService.js +19 -0
  245. package/gen/services/InputService.d.ts +78 -0
  246. package/gen/services/InputService.js +95 -0
  247. package/gen/services/JobService.d.ts +35 -15
  248. package/gen/services/JobService.js +25 -7
  249. package/gen/services/ScheduleService.d.ts +2 -2
  250. package/gen/services/ScheduleService.js +1 -1
  251. package/gen/services/ScriptService.d.ts +10 -0
  252. package/gen/services/ScriptService.js +16 -0
  253. package/gen/services/UserService.d.ts +12 -0
  254. package/gen/services/UserService.js +13 -0
  255. package/infer.js +3 -0
  256. package/init_scripts/python_init_code.d.ts +1 -1
  257. package/init_scripts/python_init_code.js +2 -2
  258. package/package.json +684 -673
  259. package/script_helpers.d.ts +1 -1
  260. package/script_helpers.js +7 -5
  261. package/stores.js +14 -1
  262. package/user.d.ts +1 -1
  263. package/user.js +6 -6
  264. package/utils.d.ts +2 -2
  265. package/utils.js +21 -11
  266. package/components/common/button/ButtonPopup.svelte +0 -75
  267. package/components/common/button/ButtonPopup.svelte.d.ts +0 -39
  268. package/components/common/button/ButtonPopupItem.svelte +0 -48
  269. package/components/common/button/ButtonPopupItem.svelte.d.ts +0 -28
  270. package/components/graph/svelvet/editEdges/views/EditEdge.svelte +0 -151
  271. package/components/graph/svelvet/editEdges/views/EditEdge.svelte.d.ts +0 -20
@@ -11,6 +11,7 @@ export let multiple = false;
11
11
  export let convertTo = undefined;
12
12
  export let hideIcon = false;
13
13
  export let iconSize = 36;
14
+ export let returnFileNames = false;
14
15
  const dispatch = createEventDispatcher();
15
16
  let input;
16
17
  let files = undefined;
@@ -69,7 +70,10 @@ async function dispatchChange() {
69
70
  files = files;
70
71
  if (convertTo && files) {
71
72
  const promises = files.map(convertFile);
72
- const converted = await Promise.all(promises);
73
+ let converted = await Promise.all(promises);
74
+ if (returnFileNames) {
75
+ converted = converted.map((c, i) => ({ name: files[i].name, data: c }));
76
+ }
73
77
  dispatch('change', converted);
74
78
  }
75
79
  else {
@@ -10,6 +10,7 @@ declare const __propDef: {
10
10
  convertTo?: ReadFileAs | undefined;
11
11
  hideIcon?: boolean | undefined;
12
12
  iconSize?: number | undefined;
13
+ returnFileNames?: boolean | undefined;
13
14
  };
14
15
  events: {
15
16
  change: CustomEvent<any>;
@@ -2,8 +2,6 @@ export { default as ActionRow } from './actionRow/ActionRow.svelte';
2
2
  export { default as Alert } from './alert/Alert.svelte';
3
3
  export { default as Badge } from './badge/Badge.svelte';
4
4
  export { default as Button } from './button/Button.svelte';
5
- export { default as ButtonPopup } from './button/ButtonPopup.svelte';
6
- export { default as ButtonPopupItem } from './button/ButtonPopupItem.svelte';
7
5
  export { default as UndoRedo } from './button/UndoRedo.svelte';
8
6
  export { default as ClearableInput } from './clearableInput/ClearableInput.svelte';
9
7
  export { default as Drawer } from './drawer/Drawer.svelte';
@@ -2,8 +2,6 @@ export { default as ActionRow } from './actionRow/ActionRow.svelte';
2
2
  export { default as Alert } from './alert/Alert.svelte';
3
3
  export { default as Badge } from './badge/Badge.svelte';
4
4
  export { default as Button } from './button/Button.svelte';
5
- export { default as ButtonPopup } from './button/ButtonPopup.svelte';
6
- export { default as ButtonPopupItem } from './button/ButtonPopupItem.svelte';
7
5
  export { default as UndoRedo } from './button/UndoRedo.svelte';
8
6
  export { default as ClearableInput } from './clearableInput/ClearableInput.svelte';
9
7
  export { default as Drawer } from './drawer/Drawer.svelte';
@@ -6,7 +6,7 @@ declare const __propDef: {
6
6
  wrapperClasses?: string | undefined;
7
7
  popupClasses?: string | undefined;
8
8
  transitionDuration?: number | undefined;
9
- placement?: "top-start" | "top-end" | "bottom-start" | "bottom-end" | "top-center" | "bottom-center" | undefined;
9
+ placement?: "top-start" | "top-end" | "top-center" | "bottom-start" | "bottom-end" | "bottom-center" | undefined;
10
10
  };
11
11
  events: {
12
12
  [evt: string]: CustomEvent<any>;
@@ -1,6 +1,6 @@
1
1
  <svelte:options accessors />
2
2
 
3
- <script>import { onDestroy } from 'svelte';
3
+ <script>import { createEventDispatcher, onDestroy } from 'svelte';
4
4
  import { slide } from 'svelte/transition';
5
5
  import { createPopperActions } from 'svelte-popperjs';
6
6
  import { clickOutside } from '../../../utils';
@@ -13,6 +13,7 @@ export let openOn = ['focus'];
13
13
  export let closeOn = ['blur'];
14
14
  export let innerClasses = '';
15
15
  export let outerClasses = '';
16
+ export let wrapperClasses = '';
16
17
  export let transition = slide;
17
18
  export { openFocusIn as open, closed as close };
18
19
  const states = ['closed', 'open-focus-in', 'open-focus-out'];
@@ -24,6 +25,7 @@ const stateMachine = createStateMachine(states, {
24
25
  }
25
26
  });
26
27
  const [popperRef, popperContent, getInstance] = createPopperActions();
28
+ const dispatch = createEventDispatcher();
27
29
  let popup;
28
30
  let focusableElements;
29
31
  function getFocusableElements() {
@@ -46,16 +48,20 @@ function closed() {
46
48
  if ($stateMachine.currentState === 'open-focus-out') {
47
49
  setTimeout(() => {
48
50
  stateMachine.setState('closed');
51
+ dispatch('close');
49
52
  }, 0);
50
53
  }
51
54
  else {
52
55
  stateMachine.setState('closed');
56
+ dispatch('close');
53
57
  }
54
58
  }
55
59
  function conditionalClosed() {
56
- if (isFocusContained())
57
- return;
58
- closed();
60
+ setTimeout(() => {
61
+ if (isFocusContained())
62
+ return;
63
+ closed();
64
+ }, 0);
59
65
  }
60
66
  function openFocusOut() {
61
67
  stateMachine.setState('open-focus-out');
@@ -64,12 +70,14 @@ function openFocusIn() {
64
70
  stateMachine.setState('open-focus-in');
65
71
  }
66
72
  function keyDown(event) {
67
- const modifiers = ['Shift', 'Control', 'Command', 'Alt'];
73
+ const modifiers = ['Shift', 'Control', 'Command', 'Alt', 'Meta'];
68
74
  // Prevent closing the popup when the only key pressed is a modifier key
69
75
  if (modifiers.includes(event.key) || $stateMachine.currentState === 'closed')
70
76
  return;
71
77
  if (event.key === 'Escape') {
72
- return document.activeElement?.blur();
78
+ ;
79
+ document.activeElement?.blur();
80
+ return conditionalClosed();
73
81
  }
74
82
  const prev = ['Up', 'Left'];
75
83
  const next = ['Down', 'Right'];
@@ -134,7 +142,7 @@ onDestroy(removeAllListeners);
134
142
  <svelte:window on:keydown={keyDown} />
135
143
 
136
144
  <div
137
- class="z-50"
145
+ class="z-50 {wrapperClasses}"
138
146
  bind:this={popup}
139
147
  use:popperContent={options}
140
148
  use:clickOutside
@@ -143,7 +151,7 @@ onDestroy(removeAllListeners);
143
151
  aria-expanded={$stateMachine.currentState !== 'closed'}
144
152
  >
145
153
  {#if $stateMachine.currentState !== 'closed'}
146
- <div transition:transition|local={{ duration: 200 }} class={outerClasses}>
154
+ <div transition:transition|local={{ duration: 100 }} class={outerClasses}>
147
155
  <div class={innerClasses}>
148
156
  <slot open={openFocusIn} close={closed} />
149
157
  </div>
@@ -9,11 +9,14 @@ declare const __propDef: {
9
9
  /** Events on the reference element */ closeOn?: (keyof HTMLElementEventMap)[] | undefined;
10
10
  innerClasses?: string | undefined;
11
11
  outerClasses?: string | undefined;
12
+ wrapperClasses?: string | undefined;
12
13
  transition?: ((node: Element, params?: Record<string, any>) => TransitionConfig) | undefined;
13
14
  open?: (() => void) | undefined;
14
15
  close?: (() => void) | undefined;
15
16
  };
16
17
  events: {
18
+ close: CustomEvent<any>;
19
+ } & {
17
20
  [evt: string]: CustomEvent<any>;
18
21
  };
19
22
  slots: {
@@ -45,6 +48,9 @@ export default class Popup extends SvelteComponentTyped<PopupProps, PopupEvents,
45
48
  get outerClasses(): string | undefined;
46
49
  /**accessor*/
47
50
  set outerClasses(_: string | undefined);
51
+ get wrapperClasses(): string | undefined;
52
+ /**accessor*/
53
+ set wrapperClasses(_: string | undefined);
48
54
  get transition(): ((node: Element, params?: Record<string, any> | undefined) => TransitionConfig) | undefined;
49
55
  /**accessor*/
50
56
  set transition(_: ((node: Element, params?: Record<string, any> | undefined) => TransitionConfig) | undefined);
@@ -3,7 +3,6 @@ import SharedBadge from '../../SharedBadge.svelte';
3
3
  import { AppService } from '../../../gen';
4
4
  import { userStore, workspaceStore } from '../../../stores';
5
5
  import { faCodeFork, faEdit, faEye, faFileExport, faPen, faShare, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
6
- import { MoreVertical } from 'lucide-svelte';
7
6
  import { createEventDispatcher } from 'svelte';
8
7
  import Button from '../button/Button.svelte';
9
8
  import Row from './Row.svelte';
@@ -6,7 +6,6 @@ import { FlowService } from '../../../gen';
6
6
  import { userStore, workspaceStore } from '../../../stores';
7
7
  import { sendUserToast } from '../../../utils';
8
8
  import { faArchive, faCalendarAlt, faCodeFork, faEdit, faEye, faFileExport, faList, faPlay, faShare, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
9
- import { MoreVertical } from 'lucide-svelte';
10
9
  import { createEventDispatcher } from 'svelte';
11
10
  import Badge from '../badge/Badge.svelte';
12
11
  import Button from '../button/Button.svelte';
@@ -6,7 +6,6 @@ import { ScriptService } from '../../../gen';
6
6
  import { userStore, workspaceStore } from '../../../stores';
7
7
  import { capitalize, sendUserToast } from '../../../utils';
8
8
  import { faArchive, faCalendarAlt, faCodeFork, faEdit, faEye, faFileExport, faList, faPlay, faShare, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
9
- import { MoreVertical } from 'lucide-svelte';
10
9
  import { createEventDispatcher } from 'svelte';
11
10
  import Badge from '../badge/Badge.svelte';
12
11
  import Button from '../button/Button.svelte';
@@ -72,7 +71,7 @@ const dlt = 'delete';
72
71
  size="xs"
73
72
  variant="border"
74
73
  startIcon={{ icon: faEdit }}
75
- href="/scripts/edit/{hash}?step=2"
74
+ href="/scripts/edit/{hash}"
76
75
  >
77
76
  Edit
78
77
  </Button>
@@ -130,7 +129,7 @@ const dlt = 'delete';
130
129
  {
131
130
  displayName: 'Edit code',
132
131
  icon: faEdit,
133
- href: `/scripts/edit/${hash}?step=2`,
132
+ href: `/scripts/edit/${hash}`,
134
133
  disabled: !canWrite || archived
135
134
  },
136
135
  {
@@ -14,11 +14,10 @@ const fontSizeClasses = {
14
14
  lg: 'text-lg',
15
15
  xl: 'text-xl'
16
16
  };
17
- const { selected, update } = getContext('Tabs');
17
+ const { selected, update, hashNavigation } = getContext('Tabs');
18
18
  </script>
19
19
 
20
- <!-- svelte-ignore a11y-click-events-have-key-events -->
21
- <div
20
+ <button
22
21
  class={twMerge(
23
22
  'border-b-2 py-1 px-4 cursor-pointer transition-all z-10 ease-linear font-medium',
24
23
  $selected?.startsWith(value)
@@ -29,8 +28,14 @@ const { selected, update } = getContext('Tabs');
29
28
  $selected?.startsWith(value) ? selectedClass : ''
30
29
  )}
31
30
  style={`${style} ${$selected?.startsWith(value) ? selectedStyle : ''}`}
32
- on:click={() => update(value)}
31
+ on:click={() => {
32
+ if (hashNavigation) {
33
+ window.location.hash = value
34
+ } else {
35
+ update(value)
36
+ }
37
+ }}
33
38
  on:pointerdown|stopPropagation
34
39
  >
35
40
  <slot />
36
- </div>
41
+ </button>
@@ -11,6 +11,8 @@ let c = '';
11
11
  export { c as class };
12
12
  export let wrapperClass = '';
13
13
  export let style = '';
14
+ export let hashNavigation = false;
15
+ export let dflt = undefined;
14
16
  $: selected && updateSelected();
15
17
  const selectedStore = writable(selected);
16
18
  $: $selectedStore && dispatch('selected', $selectedStore);
@@ -19,13 +21,30 @@ setContext('Tabs', {
19
21
  update: (value) => {
20
22
  selectedStore.set(value);
21
23
  selected = value;
22
- }
24
+ },
25
+ hashNavigation
23
26
  });
24
27
  function updateSelected() {
25
28
  selectedStore.set(selected);
26
29
  }
30
+ function hashChange() {
31
+ if (hashNavigation) {
32
+ const hash = window.location.hash;
33
+ if (hash) {
34
+ const id = hash.replace('#', '');
35
+ selectedStore.set(id);
36
+ selected = id;
37
+ }
38
+ else if (dflt) {
39
+ selectedStore.set(dflt);
40
+ selected = dflt;
41
+ }
42
+ }
43
+ }
27
44
  </script>
28
45
 
46
+ <svelte:window on:hashchange={hashChange} />
47
+
29
48
  <div class="overflow-x-auto {wrapperClass}">
30
49
  <div
31
50
  class={twMerge('border-b border-gray-200 flex flex-row whitespace-nowrap scrollbar-hidden', c)}
@@ -2,6 +2,7 @@ import { SvelteComponentTyped } from "svelte";
2
2
  export type TabsContext = {
3
3
  selected: Writable<string>;
4
4
  update: (value: string) => void;
5
+ hashNavigation: boolean;
5
6
  };
6
7
  import { type Writable } from 'svelte/store';
7
8
  declare const __propDef: {
@@ -10,6 +11,8 @@ declare const __propDef: {
10
11
  class?: string | undefined;
11
12
  wrapperClass?: string | undefined;
12
13
  style?: string | undefined;
14
+ hashNavigation?: boolean | undefined;
15
+ dflt?: string | undefined;
13
16
  };
14
17
  events: {
15
18
  selected: CustomEvent<any>;
@@ -1,11 +1,11 @@
1
1
  <script>import { goto } from '$app/navigation';
2
- import { faBarsStaggered, faPlus } from '@fortawesome/free-solid-svg-icons';
3
- import { Button, ButtonPopup, ButtonPopupItem } from '../common';
2
+ import { faPlus } from '@fortawesome/free-solid-svg-icons';
3
+ import { Button } from '../common';
4
4
  import Drawer from '../common/drawer/Drawer.svelte';
5
5
  import DrawerContent from '../common/drawer/DrawerContent.svelte';
6
6
  import SimpleEditor from '../SimpleEditor.svelte';
7
- import { importStore } from '../apps/store';
8
7
  import { LayoutDashboard } from 'lucide-svelte';
8
+ import { importStore } from '../apps/store';
9
9
  let drawer = undefined;
10
10
  let pendingJson;
11
11
  async function importJson() {
@@ -17,17 +17,22 @@ async function importJson() {
17
17
 
18
18
  <!-- Buttons -->
19
19
  <div class="flex flex-row gap-2">
20
- <ButtonPopup
20
+ <Button
21
21
  size="sm"
22
22
  spacingSize="xl"
23
23
  startIcon={{ icon: faPlus }}
24
24
  href="/apps/add?nodraft=true"
25
+ dropdownItems={[
26
+ {
27
+ label: 'Import from raw JSON',
28
+ onClick: () => drawer?.toggleDrawer?.()
29
+ }
30
+ ]}
25
31
  >
26
- <svelte:fragment slot="main">App <LayoutDashboard class="ml-1.5" size={18} /></svelte:fragment>
27
- <ButtonPopupItem on:click={() => drawer?.toggleDrawer?.()}>
28
- Import from raw JSON
29
- </ButtonPopupItem>
30
- </ButtonPopup>
32
+ <div class="flex flex-row">
33
+ App <LayoutDashboard class="ml-1.5" size={18} />
34
+ </div>
35
+ </Button>
31
36
  </div>
32
37
 
33
38
  <!-- Raw JSON -->
@@ -1,11 +1,10 @@
1
1
  <script>import { goto } from '$app/navigation';
2
2
  import { faBarsStaggered, faPlus } from '@fortawesome/free-solid-svg-icons';
3
- import { Button, ButtonPopup, ButtonPopupItem } from '../common';
3
+ import { Button } from '../common';
4
4
  import Drawer from '../common/drawer/Drawer.svelte';
5
5
  import DrawerContent from '../common/drawer/DrawerContent.svelte';
6
6
  import SimpleEditor from '../SimpleEditor.svelte';
7
7
  import { importFlowStore } from './flowStore';
8
- import { Icon } from 'svelte-awesome';
9
8
  let drawer = undefined;
10
9
  let pendingJson;
11
10
  async function importJson() {
@@ -17,19 +16,21 @@ async function importJson() {
17
16
 
18
17
  <!-- Buttons -->
19
18
  <div class="flex flex-row gap-2">
20
- <ButtonPopup
19
+ <Button
21
20
  size="sm"
22
21
  spacingSize="xl"
23
22
  startIcon={{ icon: faPlus }}
23
+ endIcon={{ icon: faBarsStaggered }}
24
24
  href="/flows/add?nodraft=true"
25
+ dropdownItems={[
26
+ {
27
+ label: 'Import from raw JSON',
28
+ onClick: () => drawer?.toggleDrawer?.()
29
+ }
30
+ ]}
25
31
  >
26
- <svelte:fragment slot="main"
27
- >Flow <Icon data={faBarsStaggered} scale={0.8} class="ml-1.5" />
28
- </svelte:fragment>
29
- <ButtonPopupItem on:click={() => drawer?.toggleDrawer?.()}>
30
- Import from raw JSON
31
- </ButtonPopupItem>
32
- </ButtonPopup>
32
+ Flow
33
+ </Button>
33
34
  </div>
34
35
 
35
36
  <!-- Raw JSON -->
@@ -27,9 +27,9 @@ let size = 50;
27
27
  </Pane>
28
28
  <Pane class="drop-shadow-2xl" size={100 - size} minSize={40}>
29
29
  {#if loading}
30
- <div class="w-full h-full ">
30
+ <div class="w-full h-full">
31
31
  <div class="block m-auto mt-40 w-10">
32
- <WindmillIcon class="animate-[spin_6s_linear_infinite]" height="40px" width="40px" />
32
+ <WindmillIcon height="40px" width="40px" spin="fast" />
33
33
  </div>
34
34
  </div>
35
35
  {:else}
@@ -76,11 +76,9 @@ async function getCaptureInput() {
76
76
  </div>
77
77
  <div class="items-center flex flex-row gap-x-2 text-xs text-gray-600">
78
78
  Listening for new requests
79
- <WindmillIcon
80
- class="animate-[pulse_5s_linear_infinite] animate-[spin_5s_linear_infinite]"
81
- /></div
79
+ <WindmillIcon class="animate-[pulse_5s_linear_infinite]" spin="fast" /></div
82
80
  >
83
- <div class="box p-2 my-2 mb-4">
81
+ <div class="box p-2 my-2 mb-4">
84
82
  <ObjectViewer topBrackets={true} json={captureInput} />
85
83
  </div>
86
84
  <svelte:fragment slot="actions">
@@ -5,6 +5,7 @@ $: opened = false;
5
5
  </script>
6
6
 
7
7
  <div class="text-xs flex flex-row-reverse">
8
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
8
9
  <span
9
10
  class="underline mr-4"
10
11
  on:click={() => {
@@ -1,4 +1,4 @@
1
- <script>import { Alert, Badge, Button, Tab } from '../../common';
1
+ <script>import { Alert, Tab } from '../../common';
2
2
  import TabContent from '../../common/tabs/TabContent.svelte';
3
3
  import Tabs from '../../common/tabs/Tabs.svelte';
4
4
  import Toggle from '../../Toggle.svelte';
@@ -26,7 +26,7 @@ let selected = 'early-stop';
26
26
  <h3 class="mb-4">{value.branches.length} branch{value.branches.length > 1 ? 'es' : ''}</h3
27
27
  >
28
28
  <div class="flex flex-col gap-y-4 py-2 w-full max-w-xl">
29
- {#each value.branches as branch, i}
29
+ {#each value.branches as branch}
30
30
  <div class="flex flex-row gap-x-4 w-full items-center">
31
31
  <div class="grow">
32
32
  <input type="text" bind:value={branch.summary} placeholder="Summary" />
@@ -1,4 +1,4 @@
1
- <script>import { Alert, Badge, Button, Tab } from '../../common';
1
+ <script>import { Alert, Badge, Tab } from '../../common';
2
2
  import TabContent from '../../common/tabs/TabContent.svelte';
3
3
  import Tabs from '../../common/tabs/Tabs.svelte';
4
4
  import FlowCard from '../common/FlowCard.svelte';
@@ -34,7 +34,7 @@ let selected = 'early-stop';
34
34
  chosen</p
35
35
  >
36
36
  </div>
37
- {#each value.branches as branch, i}
37
+ {#each value.branches as branch}
38
38
  <div class="flex flex-col gap-x-2 p-2 items-center border border-gray-400">
39
39
  <input
40
40
  class="w-full"
@@ -7,7 +7,7 @@ import { emptyString } from '../../../utils';
7
7
  import { createEventDispatcher } from 'svelte';
8
8
  import { flip } from 'svelte/animate';
9
9
  import { fade } from 'svelte/transition';
10
- export let failureModule;
10
+ // export let failureModule: boolean
11
11
  const dispatch = createEventDispatcher();
12
12
  let items = undefined;
13
13
  let filteredItems = undefined;
@@ -1,8 +1,6 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
- props: {
4
- failureModule: boolean;
5
- };
3
+ props: Record<string, never>;
6
4
  events: {
7
5
  pick: CustomEvent<any>;
8
6
  } & {
@@ -154,33 +154,32 @@ let forceReload = 0;
154
154
  <Splitpanes horizontal>
155
155
  <Pane size={isScript ? 30 : 50} minSize={20}>
156
156
  {#if value.type === 'rawscript'}
157
- <div class="h-full">
158
- <Editor
159
- bind:websocketAlive
160
- bind:this={editor}
161
- class="h-full px-2"
162
- bind:code={value.content}
163
- deno={value.language === RawScript.language.DENO}
164
- lang={scriptLangToEditorLang(value.language)}
165
- automaticLayout={true}
166
- cmdEnterAction={async () => {
167
- selected = 'test'
168
- if (value.type === 'rawscript') {
169
- value.content = editor.getCode()
170
- }
171
- await reload(flowModule)
172
- modulePreview?.runTestWithStepArgs()
173
- }}
174
- on:change={async (event) => {
175
- if (flowModule.value.type === 'rawscript') {
176
- flowModule.value.content = event.detail
177
- }
178
- await reload(flowModule)
179
- }}
180
- formatAction={() => reload(flowModule)}
181
- fixedOverflowWidgets
182
- />
183
- </div>
157
+ <Editor
158
+ path={value['path']}
159
+ bind:websocketAlive
160
+ bind:this={editor}
161
+ class="h-full relative"
162
+ bind:code={value.content}
163
+ deno={value.language === RawScript.language.DENO}
164
+ lang={scriptLangToEditorLang(value.language)}
165
+ automaticLayout={true}
166
+ cmdEnterAction={async () => {
167
+ selected = 'test'
168
+ if (value.type === 'rawscript') {
169
+ value.content = editor.getCode()
170
+ }
171
+ await reload(flowModule)
172
+ modulePreview?.runTestWithStepArgs()
173
+ }}
174
+ on:change={async (event) => {
175
+ if (flowModule.value.type === 'rawscript') {
176
+ flowModule.value.content = event.detail
177
+ }
178
+ await reload(flowModule)
179
+ }}
180
+ formatAction={() => reload(flowModule)}
181
+ fixedOverflowWidgets={true}
182
+ />
184
183
  {:else if value.type === 'script'}
185
184
  {#key forceReload}
186
185
  <FlowModuleScript path={value.path} hash={value.hash} />
@@ -239,7 +238,7 @@ let forceReload = 0;
239
238
  <FlowModuleSleep previousModuleId={previousModule?.id} bind:flowModule />
240
239
  </div>
241
240
  {:else if selected === 'advanced-same_worker'}
242
- <div class="p-4 h-full overflow-auto">
241
+ <div class="p-4 h-full overflow-auto">
243
242
  <Alert type="info" title="Share a directory between steps">
244
243
  If shared directory is set, will share a folder that will be mounted on
245
244
  `./shared` for each of them to pass data between each other.
@@ -35,7 +35,6 @@ export let previousModule = undefined;
35
35
 
36
36
  {#if flowModule.value.flow}
37
37
  <FlowInputsFlow
38
- failureModule={$selectedId === 'failure'}
39
38
  on:pick={async ({ detail }) => {
40
39
  const { path, summary } = detail
41
40
  const [module, state] = await pickFlow(path, summary, flowModule.id)
@@ -1,5 +1,4 @@
1
- <script>import { Alert } from '../../common';
2
- import Toggle from '../../Toggle.svelte';
1
+ <script>import Toggle from '../../Toggle.svelte';
3
2
  import Tooltip from '../../Tooltip.svelte';
4
3
  export let flowModule;
5
4
  function setConstantRetries() {
@@ -6,11 +6,13 @@ import { getContext } from 'svelte';
6
6
  const { schedule, flowStore } = getContext('FlowEditorContext');
7
7
  </script>
8
8
 
9
- <CronInput bind:schedule={$schedule.cron} />
9
+ <CronInput bind:schedule={$schedule.cron} bind:timezone={$schedule.timezone} />
10
+ <div class="mt-10" />
10
11
  <SchemaForm schema={$flowStore.schema} bind:args={$schedule.args} />
11
12
  {#if emptyString($schedule.cron)}
12
13
  <p class="text-xs text-gray-600 mt-10">Define a schedule frequency first</p>
13
14
  {/if}
15
+ <div class="mt-10" />
14
16
  <Toggle
15
17
  disabled={emptyString($schedule.cron)}
16
18
  bind:checked={$schedule.enabled}
@@ -3,7 +3,7 @@ import ScriptEditor from '../../ScriptEditor.svelte';
3
3
  import { ScriptService } from '../../../gen';
4
4
  import { inferArgs } from '../../../infer';
5
5
  import { workspaceStore } from '../../../stores';
6
- import { emptySchema, getScriptByPath, sendUserToast } from '../../../utils';
6
+ import { emptySchema, sendUserToast } from '../../../utils';
7
7
  import { faSave } from '@fortawesome/free-solid-svg-icons';
8
8
  import { Loader2 } from 'lucide-svelte';
9
9
  import { createEventDispatcher } from 'svelte';
@@ -2,10 +2,7 @@ import type { Schema } from '../../common';
2
2
  import { Script, type Flow, type FlowModule, type PathFlow, type PathScript, type RawScript } from '../../gen';
3
3
  import { type Writable } from 'svelte/store';
4
4
  import type { FlowModuleState, FlowState } from './flowState';
5
- import { Mutex } from 'async-mutex';
6
5
  export declare function loadFlowModuleState(flowModule: FlowModule): Promise<FlowModuleState>;
7
- export declare const idMutex: Mutex;
8
- export declare function getNextId(currentKeys: string[]): string;
9
6
  export declare function nextId(flowState: FlowState): string;
10
7
  export declare function pickScript(path: string, summary: string, id: string, hash?: string): Promise<[FlowModule & {
11
8
  value: PathScript;