windmill-components 1.56.1 → 1.56.5

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 (138) hide show
  1. package/assets/app.css +54 -0
  2. package/components/CenteredModal.svelte +18 -16
  3. package/components/CenteredModal.svelte.d.ts +1 -0
  4. package/components/Dropdown.svelte +4 -3
  5. package/components/Dropdown.svelte.d.ts +1 -0
  6. package/components/Editor.svelte +30 -30
  7. package/components/Editor.svelte.d.ts +3 -3
  8. package/components/FlowPreviewContent.svelte +2 -2
  9. package/components/InputTransformForm.svelte +45 -36
  10. package/components/InputTransformForm.svelte.d.ts +1 -0
  11. package/components/LogViewer.svelte +7 -4
  12. package/components/ModulePreview.svelte +20 -13
  13. package/components/Popover.svelte +9 -17
  14. package/components/Popover.svelte.d.ts +3 -0
  15. package/components/RadioButton.svelte +5 -3
  16. package/components/RadioButton.svelte.d.ts +2 -0
  17. package/components/ResourceEditor.svelte +2 -1
  18. package/components/SchemaEditor.svelte +3 -0
  19. package/components/SchemaForm.svelte +84 -76
  20. package/components/SchemaForm.svelte.d.ts +3 -0
  21. package/components/ScriptEditor.svelte +14 -9
  22. package/components/SimpleEditor.svelte +18 -20
  23. package/components/Star.svelte +15 -9
  24. package/components/TemplateEditor.svelte +25 -35
  25. package/components/TemplateEditor.svelte.d.ts +1 -25
  26. package/components/TestJobLoader.svelte +37 -20
  27. package/components/TestJobLoader.svelte.d.ts +10 -8
  28. package/components/Toggle.svelte +30 -7
  29. package/components/Toggle.svelte.d.ts +4 -0
  30. package/components/Tooltip.svelte +1 -1
  31. package/components/apps/components/buttons/AppButton.svelte +23 -8
  32. package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
  33. package/components/apps/components/dataDisplay/AppBarChart.svelte +7 -2
  34. package/components/apps/components/dataDisplay/AppPieChart.svelte +1 -1
  35. package/components/apps/components/form/AppForm.svelte +7 -0
  36. package/components/apps/components/helpers/AlignWrapper.svelte +2 -1
  37. package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +1 -0
  38. package/components/apps/components/helpers/InputValue.svelte +17 -5
  39. package/components/apps/components/helpers/InputValue.svelte.d.ts +1 -0
  40. package/components/apps/components/helpers/NonRunnableComponent.svelte +3 -0
  41. package/components/apps/components/helpers/RefreshButton.svelte +16 -11
  42. package/components/apps/components/helpers/RefreshButton.svelte.d.ts +2 -0
  43. package/components/apps/components/helpers/RunnableComponent.svelte +40 -15
  44. package/components/apps/components/selectInputs/AppCheckbox.svelte +4 -0
  45. package/components/apps/components/table/AppTable.svelte +48 -24
  46. package/components/apps/components/textInputs/AppTextInput.svelte +7 -3
  47. package/components/apps/editor/AppEditor.svelte +83 -41
  48. package/components/apps/editor/AppEditor.svelte.d.ts +2 -0
  49. package/components/apps/editor/AppEditorHeader.svelte +5 -2
  50. package/components/apps/editor/AppPreview.svelte +3 -1
  51. package/components/apps/editor/AppPreview.svelte.d.ts +2 -0
  52. package/components/apps/editor/ComponentEditor.svelte +6 -7
  53. package/components/apps/editor/ComponentEditor.svelte.d.ts +1 -0
  54. package/components/apps/editor/ComponentHeader.svelte +31 -29
  55. package/components/apps/editor/ComponentHeader.svelte.d.ts +2 -1
  56. package/components/apps/editor/GridEditor.svelte +62 -46
  57. package/components/apps/editor/GridEditor.svelte.d.ts +6 -1
  58. package/components/apps/editor/RecomputeAllComponents.svelte +7 -13
  59. package/components/apps/editor/SettingsPanel.svelte +2 -2
  60. package/components/apps/editor/TablePanel.svelte +1 -0
  61. package/components/apps/editor/componentsPanel/ComponentList.svelte +4 -15
  62. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +1 -1
  63. package/components/apps/editor/componentsPanel/componentStaticValues.js +1 -1
  64. package/components/apps/editor/componentsPanel/data.js +11 -15
  65. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -0
  66. package/components/apps/editor/contextPanel/ContextPanel.svelte +46 -43
  67. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +9 -10
  68. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +5 -1
  69. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +2 -0
  70. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +62 -20
  71. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +2 -2
  72. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +73 -76
  73. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +17 -15
  74. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +1 -2
  75. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +0 -1
  76. package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +5 -5
  77. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +11 -18
  78. package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +1 -0
  79. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +22 -5
  80. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +3 -3
  81. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +16 -15
  82. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +3 -2
  83. package/components/apps/editor/settingsPanel/Recompute.svelte +1 -1
  84. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +21 -3
  85. package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +1 -3
  86. package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +0 -1
  87. package/components/apps/editor/settingsPanel/TableActions.svelte +18 -9
  88. package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +1 -0
  89. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +9 -2
  90. package/components/apps/editor/settingsPanel/common/PanelSection.svelte.d.ts +2 -0
  91. package/components/apps/editor/settingsPanel/inputEditor/RowInputEditor.svelte +6 -0
  92. package/components/apps/editor/settingsPanel/inputEditor/RowInputEditor.svelte.d.ts +17 -0
  93. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +2 -7
  94. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +0 -1
  95. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +1 -2
  96. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +7 -6
  97. package/components/apps/gridUtils.js +3 -2
  98. package/components/apps/inputType.d.ts +9 -3
  99. package/components/apps/rx.d.ts +2 -2
  100. package/components/apps/rx.js +3 -2
  101. package/components/apps/types.d.ts +2 -1
  102. package/components/apps/utils.js +5 -3
  103. package/components/common/button/Button.svelte +3 -1
  104. package/components/common/button/Button.svelte.d.ts +1 -0
  105. package/components/common/confirmationModal/ConfirmationModal.svelte +1 -0
  106. package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +6 -2
  107. package/components/common/drawer/Drawer.svelte +6 -3
  108. package/components/common/menu/Menu.svelte +14 -1
  109. package/components/common/table/AppRow.svelte +5 -1
  110. package/components/common/table/FlowRow.svelte +5 -1
  111. package/components/common/table/LanguageBadge.svelte.d.ts +6 -13
  112. package/components/common/table/Row.svelte +10 -8
  113. package/components/common/table/ScriptRow.svelte +13 -11
  114. package/components/flows/content/FlowConstants.svelte +68 -0
  115. package/components/flows/content/FlowConstants.svelte.d.ts +14 -0
  116. package/components/flows/content/FlowEditorPanel.svelte +3 -0
  117. package/components/flows/content/FlowModuleComponent.svelte +4 -1
  118. package/components/flows/content/FlowModuleHeader.svelte +35 -84
  119. package/components/flows/content/FlowModuleHeader.svelte.d.ts +2 -2
  120. package/components/flows/flowStore.d.ts +1 -1
  121. package/components/flows/flowStore.js +8 -8
  122. package/components/flows/header/FlowPreviewButtons.svelte +2 -1
  123. package/components/flows/map/FlowConstantsItem.svelte +15 -0
  124. package/components/flows/map/FlowConstantsItem.svelte.d.ts +14 -0
  125. package/components/flows/map/FlowInputsItem.svelte +1 -2
  126. package/components/flows/map/FlowModuleSchemaItem.svelte +34 -25
  127. package/components/flows/map/FlowModuleSchemaMap.svelte +13 -3
  128. package/components/flows/map/FlowSettingsItem.svelte +2 -2
  129. package/components/flows/pickers/PickHubScript.svelte +1 -1
  130. package/components/sidebar/FavoriteMenu.svelte +23 -19
  131. package/components/sidebar/MenuLink.svelte +4 -4
  132. package/components/sidebar/MenuLink.svelte.d.ts +1 -1
  133. package/components/sidebar/SidebarContent.svelte +16 -16
  134. package/components/sidebar/WorkspaceMenu.svelte +17 -15
  135. package/logout.d.ts +1 -0
  136. package/logout.js +5 -3
  137. package/package.json +492 -488
  138. package/stores.js +1 -1
@@ -3,7 +3,8 @@ import { classNames } from '../../../utils';
3
3
  import { faBed, faCodeBranch, faSave, faStop } from '@fortawesome/free-solid-svg-icons';
4
4
  import { createEventDispatcher } from 'svelte';
5
5
  import Icon from 'svelte-awesome';
6
- import { PhoneIncoming, Repeat } from 'lucide-svelte';
6
+ import { Bed, PhoneIncoming, Repeat, Square } from 'lucide-svelte';
7
+ import Popover from '../../Popover.svelte';
7
8
  export let module;
8
9
  const dispatch = createEventDispatcher();
9
10
  let width = 0;
@@ -12,30 +13,46 @@ $: moduleRetry = module.retry?.constant || module.retry?.exponential;
12
13
 
13
14
  <div class="flex flex-row space-x-2" bind:clientWidth={width}>
14
15
  {#if module.value.type === 'script' || module.value.type === 'rawscript'}
15
- <button
16
- class={classNames('badge', module.stop_after_if ? 'badge-on' : 'badge-off')}
17
- on:click={() => dispatch('toggleStopAfterIf')}
18
- >
19
- <Icon data={faStop} scale={0.8} />
20
- </button>
21
- <button
22
- class={classNames('badge', moduleRetry ? 'badge-on' : 'badge-off', 'center-center')}
16
+ <Popover
17
+ class="center-center rounded border p-2
18
+ {moduleRetry
19
+ ? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
20
+ : 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
23
21
  on:click={() => dispatch('toggleRetry')}
24
22
  >
25
23
  <Repeat size={14} />
26
- </button>
27
- <button
28
- class={classNames('badge', Boolean(module.sleep) ? 'badge-on' : 'badge-off')}
29
- on:click={() => dispatch('toggleSleep')}
24
+ <svelte:fragment slot="text">Retries</svelte:fragment>
25
+ </Popover>
26
+ <Popover
27
+ class="center-center rounded border p-2
28
+ {module.stop_after_if
29
+ ? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
30
+ : 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
31
+ on:click={() => dispatch('toggleStopAfterIf')}
30
32
  >
31
- <Icon data={faBed} scale={0.8} />
32
- </button>
33
- <button
34
- class={classNames('badge', Boolean(module.suspend) ? 'badge-on' : 'badge-off')}
33
+ <Square size={14} />
34
+ <svelte:fragment slot="text">Early stop/break</svelte:fragment>
35
+ </Popover>
36
+ <Popover
37
+ class="center-center rounded border p-2
38
+ {module.suspend
39
+ ? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
40
+ : 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
35
41
  on:click={() => dispatch('toggleSuspend')}
36
42
  >
37
43
  <PhoneIncoming size={14} />
38
- </button>
44
+ <svelte:fragment slot="text">Suspend</svelte:fragment>
45
+ </Popover>
46
+ <Popover
47
+ class="center-center rounded border p-2
48
+ {module.sleep
49
+ ? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
50
+ : 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
51
+ on:click={() => dispatch('toggleSleep')}
52
+ >
53
+ <Bed size={14} />
54
+ <svelte:fragment slot="text">Sleep</svelte:fragment>
55
+ </Popover>
39
56
  {/if}
40
57
  {#if module.value.type === 'script'}
41
58
  <div class="w-2" />
@@ -64,69 +81,3 @@ $: moduleRetry = module.retry?.constant || module.retry?.exponential;
64
81
  </Button>
65
82
  {/if}
66
83
  </div>
67
-
68
- <style>
69
- .badge {
70
-
71
- display: flex;
72
-
73
- cursor: pointer;
74
-
75
- align-items: center;
76
-
77
- white-space: nowrap;
78
-
79
- border-radius: 0.25rem;
80
-
81
- border-width: 1px;
82
-
83
- padding-left: 0.625rem;
84
-
85
- padding-right: 0.625rem;
86
-
87
- padding-top: 0.125rem;
88
-
89
- padding-bottom: 0.125rem;
90
-
91
- font-size: 0.875rem;
92
-
93
- line-height: 1.25rem;
94
-
95
- font-weight: 500
96
- }
97
-
98
- .badge-on {
99
-
100
- --tw-bg-opacity: 1;
101
-
102
- background-color: rgb(219 234 254 / var(--tw-bg-opacity));
103
-
104
- --tw-text-opacity: 1;
105
-
106
- color: rgb(30 64 175 / var(--tw-text-opacity))
107
- }
108
-
109
- .badge-on:hover {
110
-
111
- --tw-bg-opacity: 1;
112
-
113
- background-color: rgb(191 219 254 / var(--tw-bg-opacity))
114
- }
115
-
116
- .badge-off {
117
-
118
- --tw-bg-opacity: 1;
119
-
120
- background-color: rgb(243 244 246 / var(--tw-bg-opacity));
121
-
122
- --tw-text-opacity: 1;
123
-
124
- color: rgb(31 41 55 / var(--tw-text-opacity))
125
- }
126
-
127
- .badge-off:hover {
128
-
129
- --tw-bg-opacity: 1;
130
-
131
- background-color: rgb(229 231 235 / var(--tw-bg-opacity))
132
- }</style>
@@ -5,10 +5,10 @@ declare const __propDef: {
5
5
  module: FlowModule;
6
6
  };
7
7
  events: {
8
- toggleStopAfterIf: CustomEvent<any>;
9
8
  toggleRetry: CustomEvent<any>;
10
- toggleSleep: CustomEvent<any>;
9
+ toggleStopAfterIf: CustomEvent<any>;
11
10
  toggleSuspend: CustomEvent<any>;
11
+ toggleSleep: CustomEvent<any>;
12
12
  fork: CustomEvent<any>;
13
13
  createScriptFromInlineScript: CustomEvent<any>;
14
14
  } & {
@@ -1,6 +1,6 @@
1
1
  import type { Flow, FlowModule } from '../../gen';
2
2
  export type FlowMode = 'push' | 'pull';
3
3
  export declare const flowStore: import("svelte/store").Writable<Flow>;
4
- export declare function dfs(modules: FlowModule[]): string[];
4
+ export declare function dfs<T>(modules: FlowModule[], f: (x: FlowModule) => T): T[];
5
5
  export declare function initFlow(flow: Flow): Promise<void>;
6
6
  export declare function copyFirstStepSchema(): Promise<void>;
@@ -11,23 +11,23 @@ export const flowStore = writable({
11
11
  archived: false,
12
12
  extra_perms: {}
13
13
  });
14
- export function dfs(modules) {
14
+ export function dfs(modules, f) {
15
15
  let result = [];
16
16
  for (const module of modules) {
17
17
  if (module.value.type == 'forloopflow') {
18
- result = result.concat(module.id);
19
- result = result.concat(dfs(module.value.modules));
18
+ result = result.concat(f(module));
19
+ result = result.concat(dfs(module.value.modules, f));
20
20
  }
21
21
  else if (module.value.type == 'branchone') {
22
- result = result.concat(module.id);
23
- result = result.concat(dfs(module.value.branches.map((b) => b.modules).flat().concat(module.value.default)));
22
+ result = result.concat(f(module));
23
+ result = result.concat(dfs(module.value.branches.map((b) => b.modules).flat().concat(module.value.default), f));
24
24
  }
25
25
  else if (module.value.type == 'branchall') {
26
- result = result.concat(module.id);
27
- result = result.concat(dfs(module.value.branches.map((b) => b.modules).flat()));
26
+ result = result.concat(f(module));
27
+ result = result.concat(dfs(module.value.branches.map((b) => b.modules).flat(), f));
28
28
  }
29
29
  else {
30
- result.push(module.id);
30
+ result.push(f(module));
31
31
  }
32
32
  }
33
33
  return result;
@@ -20,7 +20,8 @@ $: upToDisabled =
20
20
  'settings-graph',
21
21
  'inputs',
22
22
  'schedules',
23
- 'failure'
23
+ 'failure',
24
+ 'constants'
24
25
  ].includes($selectedId) ||
25
26
  $selectedId?.includes('branch');
26
27
  let is_owner = false;
@@ -0,0 +1,15 @@
1
+ <script>import { getContext } from 'svelte';
2
+ import Icon from 'svelte-awesome';
3
+ import { faDollarSign } from '@fortawesome/free-solid-svg-icons';
4
+ import { classNames } from '../../../utils';
5
+ const { select, selectedId } = getContext('FlowEditorContext');
6
+ $: settingsClass = classNames('border w-full rounded-sm p-2 bg-white border-gray-400 text-sm cursor-pointer flex items-center', $selectedId == 'constants' ? 'outline outline-offset-1 outline-2 outline-slate-900' : '');
7
+ </script>
8
+
9
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
10
+ <div on:click={() => select('constants')} class={settingsClass}>
11
+ <Icon data={faDollarSign} class="mr-2" />
12
+ <span class="text-xs flex flex-row justify-between w-full gap-2 items-center truncate">
13
+ All Static Inputs
14
+ </span>
15
+ </div>
@@ -0,0 +1,14 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: Record<string, never>;
4
+ events: {
5
+ [evt: string]: CustomEvent<any>;
6
+ };
7
+ slots: {};
8
+ };
9
+ export type FlowConstantsItemProps = typeof __propDef.props;
10
+ export type FlowConstantsItemEvents = typeof __propDef.events;
11
+ export type FlowConstantsItemSlots = typeof __propDef.slots;
12
+ export default class FlowConstantsItem extends SvelteComponentTyped<FlowConstantsItemProps, FlowConstantsItemEvents, FlowConstantsItemSlots> {
13
+ }
14
+ export {};
@@ -1,13 +1,12 @@
1
1
  <script>import { getContext } from 'svelte';
2
2
  import FlowModuleSchemaItem from './FlowModuleSchemaItem.svelte';
3
3
  import Icon from 'svelte-awesome';
4
- import { faFlagCheckered, faPen } from '@fortawesome/free-solid-svg-icons';
4
+ import { faFlagCheckered } from '@fortawesome/free-solid-svg-icons';
5
5
  const { select, selectedId } = getContext('FlowEditorContext');
6
6
  </script>
7
7
 
8
8
  <FlowModuleSchemaItem
9
9
  on:click={() => select('inputs')}
10
- isFirst
11
10
  hasLine
12
11
  selected={$selectedId === 'inputs'}
13
12
  bold
@@ -1,10 +1,9 @@
1
1
  <script>import Badge from '../../common/badge/Badge.svelte';
2
2
  import Popover from '../../Popover.svelte';
3
3
  import { classNames } from '../../../utils';
4
- import { faBed, faRepeat, faStop, faTimesCircle } from '@fortawesome/free-solid-svg-icons';
5
4
  import { createEventDispatcher } from 'svelte';
6
- import Icon from 'svelte-awesome';
7
- import { PhoneIncoming, Repeat } from 'lucide-svelte';
5
+ import { fade } from 'svelte/transition';
6
+ import { Bed, PhoneIncoming, Repeat, Square, X } from 'lucide-svelte';
8
7
  export let isFirst = false;
9
8
  export let isLast = false;
10
9
  export let hasLine = true;
@@ -40,39 +39,52 @@ const dispatch = createEventDispatcher();
40
39
  <div class="absolute text-sm right-12 -bottom-3 flex flex-row gap-1 z-20">
41
40
  {#if retry}
42
41
  <Popover notClickable>
43
- <div class="bg-white rounded border text-gray-700 px-1 center-center">
42
+ <div
43
+ transition:fade={{duration: 200}}
44
+ class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
45
+ >
44
46
  <Repeat size={14} />
45
47
  </div>
46
- <span slot="text">Retries</span>
48
+ <svelte:fragment slot="text">Retries</svelte:fragment>
47
49
  </Popover>
48
50
  {/if}
49
51
  {#if earlyStop}
50
52
  <Popover notClickable>
51
- <div class="bg-white rounded border text-gray-700 px-1">
52
- <Icon scale={0.8} data={faStop} />
53
+ <div
54
+ transition:fade={{duration: 200}}
55
+ class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
56
+ >
57
+ <Square size={14} />
53
58
  </div>
54
- <span slot="text">Early Stop/Break</span>
59
+ <svelte:fragment slot="text">Early stop/break</svelte:fragment>
55
60
  </Popover>
56
61
  {/if}
57
- {#if sleep}
62
+ {#if suspend}
58
63
  <Popover notClickable>
59
- <div class="bg-white rounded border text-gray-700 px-1">
60
- <Icon scale={0.8} data={faBed} />
64
+ <div
65
+ transition:fade={{duration: 200}}
66
+ class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
67
+ >
68
+ <PhoneIncoming size={14} />
61
69
  </div>
62
- <span slot="text">Sleep</span>
70
+ <svelte:fragment slot="text">Suspend</svelte:fragment>
63
71
  </Popover>
64
72
  {/if}
65
- {#if suspend}
73
+ {#if sleep}
66
74
  <Popover notClickable>
67
- <div class="bg-white rounded border text-gray-700 px-1 center-center">
68
- <PhoneIncoming size={12} />
75
+ <div
76
+ transition:fade={{duration: 200}}
77
+ class="center-center bg-white rounded border border-gray-400 text-gray-700 px-1 py-0.5"
78
+ >
79
+ <Bed size={14} />
69
80
  </div>
70
- <span slot="text">Suspend</span>
81
+ <svelte:fragment slot="text">Sleep</svelte:fragment>
71
82
  </Popover>
72
83
  {/if}
73
84
  </div>
74
85
  <div
75
- class="flex justify-between items-center w-full overflow-hidden rounded-sm border border-gray-400 p-2 bg-white text-2xs module"
86
+ class="flex justify-between items-center w-full overflow-hidden rounded-sm
87
+ border border-gray-400 p-2 bg-white text-2xs module"
76
88
  >
77
89
  {#if $$slots.icon}
78
90
  <slot name="icon" />
@@ -85,16 +97,13 @@ const dispatch = createEventDispatcher();
85
97
  {/if}
86
98
  {#if deletable}
87
99
  <button
88
- class="absolute -top-2 right-0 rounded-full h-4 w-4 trash center-center bg-white {selected
89
- ? ''
90
- : '!hidden'}"
100
+ class="absolute -top-2 right-0 rounded-full h-4 w-4 trash center-center
101
+ border-[1.5px] border-gray-700 bg-white duration-150 hover:bg-red-400 hover:text-white
102
+ hover:border-red-700 {selected ? '' : '!hidden'}"
91
103
  on:click={(event) => dispatch('delete', event)}
92
- ><Icon
93
- data={faTimesCircle}
94
- class="text-gray-600 hover:text-red-600"
95
- scale={0.9}
96
- /></button
97
104
  >
105
+ <X size={12} strokeWidth={2} />
106
+ </button>
98
107
  {/if}
99
108
  </div>
100
109
  </div>
@@ -9,10 +9,14 @@ import FlowSettingsItem from './FlowSettingsItem.svelte';
9
9
  import FlowInputsItem from './FlowInputsItem.svelte';
10
10
  import InsertModuleButton from './InsertModuleButton.svelte';
11
11
  import { slide } from 'svelte/transition';
12
+ import FlowModuleSchemaItem from './FlowModuleSchemaItem.svelte';
13
+ import { Icon } from 'svelte-awesome';
14
+ import { faDollarSign } from '@fortawesome/free-solid-svg-icons';
15
+ import FlowConstantsItem from './FlowConstantsItem.svelte';
12
16
  export let root = false;
13
17
  export let modules;
14
18
  let indexToRemove = undefined;
15
- const { select } = getContext('FlowEditorContext');
19
+ const { select, selectedId } = getContext('FlowEditorContext');
16
20
  async function insertNewModuleAtIndex(index, kind) {
17
21
  await idMutex.runExclusive(async () => {
18
22
  var module = emptyModule(kind == 'flow');
@@ -85,12 +89,17 @@ $: confirmationModalOpen = indexToRemove !== undefined;
85
89
  <div class="flex flex-col h-full relative">
86
90
  {#if root}
87
91
  <div
88
- class="z-10 sticky top-0 bg-gray-50 flex-initial inline-flex px-3 py-2 items-center h-full max-h-12 border-b border-gray-300"
92
+ class="z-10 sticky inline-flex top-0 bg-gray-50 flex-initial px-3 py-2 items-center h-full max-h-12 border-b border-gray-300"
89
93
  >
90
94
  <FlowSettingsItem />
91
95
  </div>
96
+ <div
97
+ class="z-10 sticky inline-flex top-0 bg-gray-50 flex-initial px-3 py-2 items-center h-full max-h-12 border-b border-gray-300"
98
+ >
99
+ <FlowConstantsItem />
100
+ </div>
92
101
  {/if}
93
- <ul class="w-full flex-auto {root ? 'px-2 pb-2 pt-3' : ''} py-1">
102
+ <ul class="w-full flex-auto {root ? 'px-2 pb-2 pt-3' : ''} py-1">
94
103
  {#if root}
95
104
  <li>
96
105
  <FlowInputsItem />
@@ -139,5 +148,6 @@ $: confirmationModalOpen = indexToRemove !== undefined;
139
148
  removeAtIndex(indexToRemove)
140
149
  indexToRemove = undefined
141
150
  }
151
+ $selectedId = 'settings-graph'
142
152
  }}
143
153
  />
@@ -1,10 +1,10 @@
1
1
  <script>import { getContext } from 'svelte';
2
2
  import Icon from 'svelte-awesome';
3
- import { faCalendarAlt, faSliders } from '@fortawesome/free-solid-svg-icons';
3
+ import { faSliders } from '@fortawesome/free-solid-svg-icons';
4
4
  import { classNames } from '../../../utils';
5
5
  import { Badge } from '../../common';
6
6
  import { flowStore } from '../flowStore';
7
- const { select, selectedId, schedule } = getContext('FlowEditorContext');
7
+ const { select, selectedId } = getContext('FlowEditorContext');
8
8
  $: settingsClass = classNames('border w-full rounded-sm p-2 bg-white border-gray-400 text-sm cursor-pointer flex items-center', $selectedId?.startsWith('settings')
9
9
  ? 'outline outline-offset-1 outline-2 outline-slate-900'
10
10
  : '');
@@ -82,6 +82,6 @@ const maxItems = 40;
82
82
  {/if}
83
83
  {:else}
84
84
  {#each Array(10).fill(0) as _}
85
- <Skeleton layout={[[4], 0.5]} />
85
+ <Skeleton layout={[0.5, [4]]} />
86
86
  {/each}
87
87
  {/if}
@@ -1,12 +1,13 @@
1
1
  <script>import { classNames } from '../../utils';
2
- import { faCode, faStar, faTelevision, faBarsStaggered } from '@fortawesome/free-solid-svg-icons';
2
+ import { Code2, LayoutDashboard } from 'lucide-svelte';
3
+ import { faStar, faBarsStaggered } from '@fortawesome/free-solid-svg-icons';
3
4
  import Icon from 'svelte-awesome';
4
5
  import Menu from '../common/menu/Menu.svelte';
5
6
  export let isCollapsed = false;
6
7
  export let favoriteLinks = [];
7
8
  </script>
8
9
 
9
- <Menu placement="bottom-start" let:close noMinW>
10
+ <Menu placement="bottom-start" let:close>
10
11
  <button
11
12
  slot="trigger"
12
13
  type="button"
@@ -24,29 +25,32 @@ export let favoriteLinks = [];
24
25
  {/if}
25
26
  </button>
26
27
 
27
- <div class="divide-y divide-gray-100 overflow-hidden" role="none">
28
- <table class="w-full">
29
- {#each favoriteLinks ?? [] as favorite (favorite.href)}
30
- <tr>
31
- <a href={favorite.href} on:click={close} class="inline-flex flex-row px-4 py-2">
32
- <td class="center-center">
28
+ <div class="overflow-hidden" role="none">
29
+ {#if !favoriteLinks.length}
30
+ <div class="py-1" role="none">
31
+ <div class="text-gray-600 block px-4 py-2 text-xs" role="menuitem" tabindex="-1">
32
+ Add Scripts/Flows/Apps here by starring them
33
+ </div>
34
+ </div>
35
+ {:else}
36
+ <div class="py-1 w-full max-w-full">
37
+ {#each favoriteLinks ?? [] as favorite (favorite.href)}
38
+ <a href={favorite.href} on:click={close} class="w-full inline-flex flex-row px-4 py-2 hover:bg-gray-100">
39
+ <span class="center-center">
33
40
  {#if favorite.kind == 'script'}
34
- <Icon data={faCode} />
41
+ <Code2 size={16} />
35
42
  {:else if favorite.kind == 'flow'}
36
43
  <Icon data={faBarsStaggered} />
37
44
  {:else if favorite.kind == 'app'}
38
- <Icon data={faTelevision} />
45
+ <LayoutDashboard size={16} />
39
46
  {/if}
40
- </td>
41
- <td class="text-gray-800 ml-2 grow text-xs center-center truncate">{favorite.label}</td>
47
+ </span>
48
+ <span class="text-gray-800 ml-2 grow min-w-0 text-xs truncate">
49
+ {favorite.label}
50
+ </span>
42
51
  </a>
43
- </tr>
44
- {/each}
45
- </table>
46
- <div class="py-1" role="none">
47
- <div class="text-gray-600 block px-4 py-2 text-xs" role="menuitem" tabindex="-1">
48
- Add Scripts/Flows/Apps here by starring them
52
+ {/each}
49
53
  </div>
50
- </div>
54
+ {/if}
51
55
  </div>
52
56
  </Menu>
@@ -1,5 +1,5 @@
1
1
  <script>import { classNames } from '../../utils';
2
- import { navigating } from '$app/stores';
2
+ import { navigating, page } from '$app/stores';
3
3
  import Icon from 'svelte-awesome';
4
4
  export let label;
5
5
  export let href;
@@ -9,10 +9,10 @@ export let disabled = false;
9
9
  let isSelected = false;
10
10
  navigating.subscribe(() => {
11
11
  if (href === '/') {
12
- isSelected = window.location.pathname === href;
12
+ isSelected = $page.url.pathname === href;
13
13
  }
14
14
  else {
15
- isSelected = window.location.pathname.includes(href);
15
+ isSelected = $page.url.pathname.includes(href);
16
16
  }
17
17
  });
18
18
  </script>
@@ -41,7 +41,7 @@ navigating.subscribe(() => {
41
41
  {#if !isCollapsed}
42
42
  <span
43
43
  class={classNames(
44
- 'whitespace-pre text-white truncate',
44
+ 'whitespace-pre truncate',
45
45
  isSelected ? ' text-gray-700 font-bold' : 'text-white group-hover:text-gray-900'
46
46
  )}
47
47
  >
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { IconDefinition } from '@fortawesome/free-solid-svg-icons';
2
+ import type { IconDefinition } from '@fortawesome/fontawesome-common-types';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  [x: string]: any;
@@ -1,4 +1,4 @@
1
- <script>import { faBookOpen, faCalendar, faCubes, faEye, faHomeAlt, faPlay, faRobot, faUsersCog, faCog, faDollarSign, faFolderTree } from '@fortawesome/free-solid-svg-icons';
1
+ <script>import { faBookOpen, faCalendar, faCubes, faEye, faHomeAlt, faPlay, faRobot, faUsersCog, faCog, faDollarSign, faFolderOpen } from '@fortawesome/free-solid-svg-icons';
2
2
  import { faDiscord, faGithub } from '@fortawesome/free-brands-svg-icons';
3
3
  import MenuLink from './MenuLink.svelte';
4
4
  import { userStore } from '../../stores';
@@ -10,7 +10,7 @@ const mainMenuLinks = [
10
10
  ];
11
11
  $: secondaryMenuLinks = [
12
12
  { label: 'Schedules', href: '/schedules', icon: faCalendar, disabled: $userStore?.operator },
13
- { label: 'Folders', href: '/folders', icon: faFolderTree, disabled: $userStore?.operator },
13
+ { label: 'Folders', href: '/folders', icon: faFolderOpen, disabled: $userStore?.operator },
14
14
  { label: 'Groups', href: '/groups', icon: faUsersCog, disabled: $userStore?.operator },
15
15
  { label: 'Audit Logs', href: '/audit_logs', icon: faEye, disabled: $userStore?.operator },
16
16
  {
@@ -33,22 +33,22 @@ const thirdMenuLinks = [
33
33
  export let isCollapsed = false;
34
34
  </script>
35
35
 
36
- <div class="flex-1 flex flex-col pb-4 overflow-x-hidden scrollbar-hidden">
37
- <nav class="h-full flex justify-between flex-col px-2">
38
- <div class="space-y-1 pt-4">
39
- {#each mainMenuLinks as menuLink (menuLink.href)}
40
- <MenuLink class="text-md" {...menuLink} {isCollapsed} />
41
- {/each}
42
- <div class="h-2" />
43
- </div>
44
- <div class="space-1-2">
36
+ <nav class="grow flex md:justify-between flex-col overflow-x-hidden scrollbar-hidden px-2 md:pb-4">
37
+ <div class="space-y-1 pt-4 mb-6 md:mb-10">
38
+ {#each mainMenuLinks as menuLink (menuLink.href)}
39
+ <MenuLink class="!text-md" {...menuLink} {isCollapsed} />
40
+ {/each}
41
+ </div>
42
+ <div>
43
+ <div class="mb-6 md:mb-10">
45
44
  {#each secondaryMenuLinks as menuLink (menuLink.href)}
46
- <MenuLink class="text-xs" {...menuLink} {isCollapsed} />
45
+ <MenuLink class="!text-xs" {...menuLink} {isCollapsed} />
47
46
  {/each}
48
- <div class="h-8" />
47
+ </div>
48
+ <div>
49
49
  {#each thirdMenuLinks as menuLink (menuLink.href)}
50
- <MenuLink class="text-xs" {...menuLink} {isCollapsed} />
50
+ <MenuLink class="!text-xs" {...menuLink} {isCollapsed} />
51
51
  {/each}
52
52
  </div>
53
- </nav>
54
- </div>
53
+ </div>
54
+ </nav>
@@ -24,22 +24,24 @@ export let isCollapsed = false;
24
24
  </button>
25
25
 
26
26
  <div class="divide-y divide-gray-100" role="none">
27
- <table class="w-full">
28
- {#each $userWorkspaces as workspace}
29
- <tr
30
- class="text-xs cursor-pointer"
31
- on:click={() => {
32
- workspaceStore.set(workspace.id)
33
- close()
34
- }}
35
- >
36
- <td class="text-gray-500 font-mono pl-4 pr-1 py-2 text-xs whitespace-nowrap"
37
- >{workspace.id}</td
27
+ <div class="py-1">
28
+ <table class="w-full">
29
+ {#each $userWorkspaces as workspace}
30
+ <tr
31
+ class="text-xs cursor-pointer hover:bg-gray-100"
32
+ on:click={() => {
33
+ workspaceStore.set(workspace.id)
34
+ close()
35
+ }}
38
36
  >
39
- <td class="text-gray-700 pr-4 py-2 w-full">{workspace.name}</td>
40
- </tr>
41
- {/each}
42
- </table>
37
+ <td class="text-gray-500 font-mono pl-4 pr-1 py-2 text-xs whitespace-nowrap"
38
+ >{workspace.id}</td
39
+ >
40
+ <td class="text-gray-700 pr-4 py-2 w-full">{workspace.name}</td>
41
+ </tr>
42
+ {/each}
43
+ </table>
44
+ </div>
43
45
  <div class="py-1" role="none">
44
46
  <a
45
47
  href="/user/create_workspace"
package/logout.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export declare function logoutWithRedirect(rd?: string): Promise<void>;
2
2
  export declare function logout(): Promise<void>;
3
+ export declare function clearUser(): Promise<void>;