windmill-components 1.56.2 → 1.57.1

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 (224) hide show
  1. package/assets/app.css +5 -1
  2. package/components/ArgInput.svelte +6 -6
  3. package/components/CenteredModal.svelte +15 -14
  4. package/components/CenteredModal.svelte.d.ts +1 -0
  5. package/components/DisplayResult.svelte +1 -1
  6. package/components/Dropdown.svelte +4 -3
  7. package/components/Dropdown.svelte.d.ts +2 -0
  8. package/components/Editor.svelte +6 -4
  9. package/components/Editor.svelte.d.ts +2 -0
  10. package/components/EditorBar.svelte +15 -1
  11. package/components/FlowBuilder.svelte +18 -10
  12. package/components/FlowPreviewContent.svelte +1 -1
  13. package/components/GroupEditor.svelte +1 -0
  14. package/components/IconedResourceType.svelte +2 -2
  15. package/components/InputTransformForm.svelte +50 -40
  16. package/components/InputTransformForm.svelte.d.ts +1 -0
  17. package/components/ItemPicker.svelte +63 -57
  18. package/components/ItemPicker.svelte.d.ts +1 -2
  19. package/components/LogViewer.svelte +6 -5
  20. package/components/ModulePreview.svelte +20 -22
  21. package/components/MoveDrawer.svelte +40 -16
  22. package/components/MoveDrawer.svelte.d.ts +2 -2
  23. package/components/PageHeader.svelte +1 -1
  24. package/components/Path.svelte +5 -2
  25. package/components/Popover.svelte +14 -20
  26. package/components/Popover.svelte.d.ts +5 -0
  27. package/components/RadioButton.svelte +5 -3
  28. package/components/RadioButton.svelte.d.ts +2 -0
  29. package/components/ResourceEditor.svelte +2 -1
  30. package/components/ResourcePicker.svelte +1 -0
  31. package/components/RunChart.svelte +0 -1
  32. package/components/SchemaEditor.svelte +3 -0
  33. package/components/SchemaForm.svelte +86 -77
  34. package/components/SchemaForm.svelte.d.ts +4 -0
  35. package/components/ScriptBuilder.svelte +2 -1
  36. package/components/ScriptEditor.svelte +88 -77
  37. package/components/ShareModal.svelte.d.ts +2 -2
  38. package/components/SimpleEditor.svelte +17 -0
  39. package/components/Star.svelte +15 -9
  40. package/components/StringTypeNarrowing.svelte +30 -8
  41. package/components/TemplateEditor.svelte +21 -11
  42. package/components/TestJobLoader.svelte +94 -68
  43. package/components/TestJobLoader.svelte.d.ts +10 -8
  44. package/components/Toggle.svelte +30 -7
  45. package/components/Toggle.svelte.d.ts +4 -0
  46. package/components/Tooltip.svelte +1 -1
  47. package/components/VariableEditor.svelte +4 -3
  48. package/components/VariableEditor.svelte.d.ts +2 -2
  49. package/components/apps/components/DisplayComponent.svelte +1 -1
  50. package/components/apps/components/buttons/AppButton.svelte +16 -10
  51. package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
  52. package/components/apps/components/dataDisplay/AppBarChart.svelte +17 -8
  53. package/components/apps/components/dataDisplay/AppHtml.svelte +23 -0
  54. package/components/apps/components/dataDisplay/AppHtml.svelte.d.ts +23 -0
  55. package/components/apps/components/dataDisplay/AppPieChart.svelte +11 -7
  56. package/components/apps/components/dataDisplay/AppScatterChart.svelte +46 -0
  57. package/components/apps/components/dataDisplay/AppScatterChart.svelte.d.ts +21 -0
  58. package/components/apps/components/dataDisplay/AppText.svelte +44 -7
  59. package/components/apps/components/dataDisplay/AppText.svelte.d.ts +1 -0
  60. package/components/apps/components/dataDisplay/AppTimeseries.svelte +57 -0
  61. package/components/apps/components/dataDisplay/AppTimeseries.svelte.d.ts +22 -0
  62. package/components/apps/components/form/AppForm.svelte +35 -18
  63. package/components/apps/components/helpers/AlignWrapper.svelte +2 -1
  64. package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +1 -0
  65. package/components/apps/components/helpers/InputValue.svelte +20 -14
  66. package/components/apps/components/helpers/InputValue.svelte.d.ts +3 -0
  67. package/components/apps/components/helpers/NonRunnableComponent.svelte +7 -6
  68. package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -1
  69. package/components/apps/components/helpers/RefreshButton.svelte +16 -11
  70. package/components/apps/components/helpers/RefreshButton.svelte.d.ts +2 -0
  71. package/components/apps/components/helpers/RunnableComponent.svelte +119 -102
  72. package/components/apps/components/helpers/RunnableWrapper.svelte +6 -1
  73. package/components/apps/components/selectInputs/AppCheckbox.svelte +4 -0
  74. package/components/apps/components/selectInputs/AppSelect.svelte +2 -0
  75. package/components/apps/components/table/AppTable.svelte +64 -35
  76. package/components/apps/components/table/AppTableFooter.svelte +2 -1
  77. package/components/apps/components/table/tableOptions.d.ts +2 -9
  78. package/components/apps/components/table/tableOptions.js +5 -2
  79. package/components/apps/components/textInputs/AppTextInput.svelte +7 -4
  80. package/components/apps/editor/AppEditor.svelte +136 -65
  81. package/components/apps/editor/AppEditor.svelte.d.ts +3 -0
  82. package/components/apps/editor/AppEditorHeader.svelte +349 -51
  83. package/components/apps/editor/AppEditorHeader.svelte.d.ts +2 -4
  84. package/components/apps/editor/AppExportButton.svelte +34 -0
  85. package/components/apps/editor/AppExportButton.svelte.d.ts +17 -0
  86. package/components/apps/editor/AppPreview.svelte +20 -7
  87. package/components/apps/editor/AppPreview.svelte.d.ts +6 -0
  88. package/components/apps/editor/AppPublishButton.svelte +53 -0
  89. package/components/apps/editor/AppPublishButton.svelte.d.ts +18 -0
  90. package/components/apps/editor/ComponentEditor.svelte +39 -8
  91. package/components/apps/editor/ComponentEditor.svelte.d.ts +1 -0
  92. package/components/apps/editor/ComponentHeader.svelte +38 -29
  93. package/components/apps/editor/ComponentHeader.svelte.d.ts +3 -1
  94. package/components/apps/editor/GridEditor.svelte +105 -67
  95. package/components/apps/editor/GridEditor.svelte.d.ts +6 -1
  96. package/components/apps/editor/RecomputeAllComponents.svelte +80 -19
  97. package/components/apps/editor/SettingsPanel.svelte +2 -2
  98. package/components/apps/editor/TablePanel.svelte +1 -0
  99. package/components/apps/editor/componentsPanel/ComponentList.svelte +30 -39
  100. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +2 -1
  101. package/components/apps/editor/componentsPanel/componentStaticValues.js +3 -2
  102. package/components/apps/editor/componentsPanel/data.js +201 -91
  103. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -0
  104. package/components/apps/editor/contextPanel/ContextPanel.svelte +69 -47
  105. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +6 -2
  106. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -0
  107. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +56 -20
  108. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -0
  109. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +5 -1
  110. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +2 -0
  111. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +72 -23
  112. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -0
  113. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +30 -22
  114. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +78 -77
  115. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +38 -33
  116. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -4
  117. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +1 -11
  118. package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +27 -9
  119. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +19 -24
  120. package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +1 -0
  121. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +12 -5
  122. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -3
  123. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +59 -33
  124. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +5 -2
  125. package/components/apps/editor/settingsPanel/Recompute.svelte +2 -2
  126. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +21 -3
  127. package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +1 -3
  128. package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +0 -1
  129. package/components/apps/editor/settingsPanel/TableActions.svelte +27 -18
  130. package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +1 -0
  131. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +10 -2
  132. package/components/apps/editor/settingsPanel/common/PanelSection.svelte.d.ts +3 -0
  133. package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +6 -4
  134. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +24 -0
  135. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +17 -0
  136. package/components/apps/editor/settingsPanel/inputEditor/RowInputEditor.svelte +6 -0
  137. package/components/apps/editor/settingsPanel/inputEditor/RowInputEditor.svelte.d.ts +17 -0
  138. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +11 -21
  139. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +0 -1
  140. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +1 -2
  141. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +42 -13
  142. package/components/apps/editorUtils.d.ts +1 -0
  143. package/components/apps/editorUtils.js +11 -0
  144. package/components/apps/gridUtils.js +2 -1
  145. package/components/apps/inputType.d.ts +12 -6
  146. package/components/apps/rx.d.ts +3 -3
  147. package/components/apps/rx.js +9 -4
  148. package/components/apps/store.d.ts +2 -0
  149. package/components/apps/store.js +2 -0
  150. package/components/apps/types.d.ts +20 -4
  151. package/components/apps/utils.d.ts +2 -2
  152. package/components/apps/utils.js +25 -9
  153. package/components/common/button/Button.svelte +8 -8
  154. package/components/common/button/Button.svelte.d.ts +2 -0
  155. package/components/common/confirmationModal/ConfirmationModal.svelte +1 -0
  156. package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +4 -1
  157. package/components/common/popup/Popup.svelte +1 -1
  158. package/components/common/table/AppRow.svelte +31 -4
  159. package/components/common/table/AppRow.svelte.d.ts +4 -0
  160. package/components/common/table/FlowRow.svelte +9 -5
  161. package/components/common/table/Row.svelte +10 -8
  162. package/components/common/table/ScriptRow.svelte +15 -13
  163. package/components/common/tabs/Tabs.svelte +1 -1
  164. package/components/common/toggleButton/ToggleButton.svelte +2 -0
  165. package/components/common/toggleButton/ToggleButton.svelte.d.ts +1 -0
  166. package/components/flows/CreateActionsApp.svelte +43 -0
  167. package/components/flows/CreateActionsApp.svelte.d.ts +14 -0
  168. package/components/flows/CreateActionsFlow.svelte +6 -1
  169. package/components/flows/content/DynamicInputHelpBox.svelte +1 -1
  170. package/components/flows/content/FlowConstants.svelte +82 -0
  171. package/components/flows/content/FlowConstants.svelte.d.ts +14 -0
  172. package/components/flows/content/FlowEditorPanel.svelte +3 -0
  173. package/components/flows/content/FlowInputs.svelte +2 -2
  174. package/components/flows/content/FlowModuleComponent.svelte +4 -1
  175. package/components/flows/content/FlowModuleHeader.svelte +41 -89
  176. package/components/flows/content/FlowModuleHeader.svelte.d.ts +2 -2
  177. package/components/flows/content/FlowSettings.svelte +1 -1
  178. package/components/flows/flowStore.d.ts +1 -1
  179. package/components/flows/flowStore.js +8 -8
  180. package/components/flows/header/FlowImportExportMenu.svelte +1 -1
  181. package/components/flows/header/FlowPreviewButtons.svelte +2 -1
  182. package/components/flows/map/FlowConstantsItem.svelte +13 -0
  183. package/components/flows/map/FlowConstantsItem.svelte.d.ts +14 -0
  184. package/components/flows/map/FlowInputsItem.svelte +1 -2
  185. package/components/flows/map/FlowModuleSchemaItem.svelte +34 -25
  186. package/components/flows/map/FlowModuleSchemaMap.svelte +9 -3
  187. package/components/flows/map/FlowSettingsItem.svelte +6 -8
  188. package/components/flows/pickers/PickHubScript.svelte +1 -1
  189. package/components/flows/propPicker/PropPickerWrapper.svelte +42 -31
  190. package/components/home/ItemsList.svelte +6 -4
  191. package/components/icons/ClickhouseIcon.svelte +22 -0
  192. package/components/icons/ClickhouseIcon.svelte.d.ts +17 -0
  193. package/components/icons/FaunadbIcon.svelte +19 -0
  194. package/components/icons/FaunadbIcon.svelte.d.ts +17 -0
  195. package/components/icons/OpenaiIcon.svelte +18 -0
  196. package/components/icons/OpenaiIcon.svelte.d.ts +17 -0
  197. package/components/icons/index.d.ts +7 -1
  198. package/components/icons/index.js +8 -2
  199. package/components/propertyPicker/ObjectViewer.svelte +11 -4
  200. package/components/propertyPicker/PropPicker.svelte +1 -1
  201. package/components/scriptEditor/LogPanel.svelte +26 -22
  202. package/components/sidebar/FavoriteMenu.svelte +23 -19
  203. package/components/sidebar/SidebarContent.svelte +16 -16
  204. package/components/sidebar/WorkspaceMenu.svelte +18 -17
  205. package/components/splitPanes/SplitPanesWrapper.svelte +1 -5
  206. package/components/splitPanes/SplitPanesWrapper.svelte.d.ts +0 -1
  207. package/editorUtils.js +2 -0
  208. package/gen/core/OpenAPI.js +1 -1
  209. package/gen/models/Policy.d.ts +1 -0
  210. package/gen/services/AppService.d.ts +18 -0
  211. package/gen/services/AppService.js +30 -0
  212. package/gen/services/GranularAclService.d.ts +3 -3
  213. package/gen/services/ResourceService.d.ts +15 -0
  214. package/gen/services/ResourceService.js +17 -0
  215. package/infer.js +4 -0
  216. package/logout.d.ts +1 -0
  217. package/logout.js +5 -3
  218. package/package.json +502 -489
  219. package/stores.d.ts +1 -0
  220. package/stores.js +13 -5
  221. package/utils.d.ts +1 -1
  222. package/utils.js +17 -10
  223. package/components/apps/CreateApp.svelte +0 -68
  224. package/components/apps/CreateApp.svelte.d.ts +0 -14
@@ -4,6 +4,7 @@ import FlowSettings from './FlowSettings.svelte';
4
4
  import FlowInput from './FlowInput.svelte';
5
5
  import FlowFailureModule from './FlowFailureModule.svelte';
6
6
  import { flowStore } from '../flowStore';
7
+ import FlowConstants from './FlowConstants.svelte';
7
8
  export let initialPath;
8
9
  const { selectedId } = getContext('FlowEditorContext');
9
10
  </script>
@@ -12,6 +13,8 @@ const { selectedId } = getContext('FlowEditorContext');
12
13
  <FlowSettings {initialPath} />
13
14
  {:else if $selectedId === 'inputs'}
14
15
  <FlowInput />
16
+ {:else if $selectedId === 'constants'}
17
+ <FlowConstants />
15
18
  {:else if $selectedId === 'failure'}
16
19
  <FlowFailureModule />
17
20
  {:else}
@@ -62,7 +62,7 @@ let filter = '';
62
62
  >
63
63
  {/if}
64
64
  <h3 class="pb-2 pt-4">
65
- Inline new <span class="text-blue-500">{kind == 'script' ? 'common' : kind}</span> script
65
+ Inline new <span class="text-blue-500">{kind == 'script' ? 'action' : kind}</span> script
66
66
  <Tooltip>
67
67
  Embed a script directly inside a flow instead of saving the script into your workspace for
68
68
  reuse. You can always save an inline script to your workspace later.
@@ -141,7 +141,7 @@ let filter = '';
141
141
  </div>
142
142
 
143
143
  <h3 class="mb-2 mt-6"
144
- >Use pre-made <span class="text-blue-500">{kind == 'script' ? 'common' : kind}</span> script</h3
144
+ >Use pre-made <span class="text-blue-500">{kind == 'script' ? 'action' : kind}</span> script</h3
145
145
  >
146
146
  {#if pick_existing == 'hub'}
147
147
  <PickHubScript bind:filter {kind} on:pick>
@@ -13,7 +13,7 @@ import FlowModuleHeader from './FlowModuleHeader.svelte';
13
13
  import { flowStateStore } from '../flowState';
14
14
  import { schemaToObject, scriptLangToEditorLang } from '../../../utils';
15
15
  import PropPickerWrapper from '../propPicker/PropPickerWrapper.svelte';
16
- import { afterUpdate, getContext, setContext } from 'svelte';
16
+ import { afterUpdate, getContext } from 'svelte';
17
17
  import { loadSchemaFromModule } from '../utils';
18
18
  import FlowModuleScript from './FlowModuleScript.svelte';
19
19
  import FlowModuleEarlyStop from './FlowModuleEarlyStop.svelte';
@@ -159,6 +159,9 @@ afterUpdate(() => {
159
159
  modulePreview?.runTestWithStepArgs()
160
160
  }}
161
161
  on:change={async (event) => {
162
+ if (flowModule.value.type === 'rawscript') {
163
+ flowModule.value.content = event.detail
164
+ }
162
165
  await reload(flowModule)
163
166
  }}
164
167
  formatAction={() => reload(flowModule)}
@@ -1,41 +1,59 @@
1
1
  <script>import Button from '../../common/button/Button.svelte';
2
- import { classNames } from '../../../utils';
3
- import { faBed, faCodeBranch, faSave, faStop } from '@fortawesome/free-solid-svg-icons';
2
+ import { faCodeBranch, faSave } from '@fortawesome/free-solid-svg-icons';
4
3
  import { createEventDispatcher } from 'svelte';
5
- import Icon from 'svelte-awesome';
6
- import { PhoneIncoming, Repeat } from 'lucide-svelte';
4
+ import { Bed, PhoneIncoming, Repeat, Square } from 'lucide-svelte';
5
+ import Popover from '../../Popover.svelte';
7
6
  export let module;
8
7
  const dispatch = createEventDispatcher();
9
- let width = 0;
10
8
  $: moduleRetry = module.retry?.constant || module.retry?.exponential;
11
9
  </script>
12
10
 
13
- <div class="flex flex-row space-x-2" bind:clientWidth={width}>
11
+ <div class="flex flex-row space-x-2">
14
12
  {#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')}
13
+ <Popover
14
+ placement="bottom"
15
+ class="center-center rounded border p-2
16
+ {moduleRetry
17
+ ? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
18
+ : 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
23
19
  on:click={() => dispatch('toggleRetry')}
24
20
  >
25
21
  <Repeat size={14} />
26
- </button>
27
- <button
28
- class={classNames('badge', Boolean(module.sleep) ? 'badge-on' : 'badge-off')}
29
- on:click={() => dispatch('toggleSleep')}
22
+ <svelte:fragment slot="text">Retries</svelte:fragment>
23
+ </Popover>
24
+ <Popover
25
+ placement="bottom"
26
+ class="center-center rounded border p-2
27
+ {module.stop_after_if
28
+ ? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
29
+ : 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
30
+ on:click={() => dispatch('toggleStopAfterIf')}
30
31
  >
31
- <Icon data={faBed} scale={0.8} />
32
- </button>
33
- <button
34
- class={classNames('badge', Boolean(module.suspend) ? 'badge-on' : 'badge-off')}
32
+ <Square size={14} />
33
+ <svelte:fragment slot="text">Early stop/break</svelte:fragment>
34
+ </Popover>
35
+ <Popover
36
+ placement="bottom"
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
+ placement="bottom"
48
+ class="center-center rounded border p-2
49
+ {module.sleep
50
+ ? 'bg-blue-100 text-blue-800 border-blue-300 hover:bg-blue-200'
51
+ : 'bg-white text-gray-800 border-gray-300 hover:bg-gray-100'}"
52
+ on:click={() => dispatch('toggleSleep')}
53
+ >
54
+ <Bed size={14} />
55
+ <svelte:fragment slot="text">Sleep</svelte:fragment>
56
+ </Popover>
39
57
  {/if}
40
58
  {#if module.value.type === 'script'}
41
59
  <div class="w-2" />
@@ -64,69 +82,3 @@ $: moduleRetry = module.retry?.constant || module.retry?.exponential;
64
82
  </Button>
65
83
  {/if}
66
84
  </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
  } & {
@@ -34,7 +34,7 @@ let topHeight = 0;
34
34
  <input
35
35
  type="text"
36
36
  bind:value={$flowStore.summary}
37
- placeholder="A very short summary of the flow displayed when the flow is listed"
37
+ placeholder="A short summary of the flow displayed when the flow is listed"
38
38
  rows="1"
39
39
  id="flow-summary"
40
40
  />
@@ -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;
@@ -23,7 +23,7 @@ let jsonViewerDrawer;
23
23
  </div>
24
24
 
25
25
  <Drawer bind:this={jsonViewerDrawer} size="800px">
26
- <DrawerContent title="See JSON" on:close={() => jsonViewerDrawer.toggleDrawer()}>
26
+ <DrawerContent title="OpenFlow JSON" on:close={() => jsonViewerDrawer.toggleDrawer()}>
27
27
  {#if $flowStore}
28
28
  <FlowViewer flow={cleanInputs($flowStore)} tab="json" />
29
29
  {/if}
@@ -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,13 @@
1
+ <script>import { getContext } from 'svelte';
2
+ import { classNames } from '../../../utils';
3
+ import { DollarSign } from 'lucide-svelte';
4
+ const { select, selectedId } = getContext('FlowEditorContext');
5
+ $: 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' : '');
6
+ </script>
7
+
8
+ <button on:click={() => select('constants')} class={settingsClass}>
9
+ <DollarSign size={16} />
10
+ <span class="text-xs flex flex-row justify-between w-full gap-2 items-center truncate ml-1">
11
+ All Static Inputs
12
+ </span>
13
+ </button>
@@ -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,13 @@ $: 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 flex-col gap-2 top-0 bg-gray-50 flex-initial p-2 items-center border-b border-gray-300"
89
93
  >
90
94
  <FlowSettingsItem />
95
+ <FlowConstantsItem />
91
96
  </div>
92
97
  {/if}
93
- <ul class="w-full flex-auto {root ? 'px-2 pb-2 pt-3' : ''} py-1">
98
+ <ul class="w-full flex-auto {root ? 'px-2 pb-2 pt-3' : ''} py-1">
94
99
  {#if root}
95
100
  <li>
96
101
  <FlowInputsItem />
@@ -139,5 +144,6 @@ $: confirmationModalOpen = indexToRemove !== undefined;
139
144
  removeAtIndex(indexToRemove)
140
145
  indexToRemove = undefined
141
146
  }
147
+ $selectedId = 'settings-graph'
142
148
  }}
143
149
  />
@@ -1,23 +1,21 @@
1
1
  <script>import { getContext } from 'svelte';
2
- import Icon from 'svelte-awesome';
3
- import { faCalendarAlt, faSliders } from '@fortawesome/free-solid-svg-icons';
4
2
  import { classNames } from '../../../utils';
5
3
  import { Badge } from '../../common';
6
4
  import { flowStore } from '../flowStore';
7
- const { select, selectedId, schedule } = getContext('FlowEditorContext');
5
+ import { SlidersHorizontal } from 'lucide-svelte';
6
+ const { select, selectedId } = getContext('FlowEditorContext');
8
7
  $: 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
8
  ? 'outline outline-offset-1 outline-2 outline-slate-900'
10
9
  : '');
11
10
  </script>
12
11
 
13
- <!-- svelte-ignore a11y-click-events-have-key-events -->
14
- <div on:click={() => select('settings-metadata')} class={settingsClass}>
15
- <Icon data={faSliders} class="mr-2" />
16
- <span class="text-xs font-bold flex flex-row justify-between w-full gap-2 items-center truncate">
12
+ <button on:click={() => select('settings-metadata')} class={settingsClass}>
13
+ <SlidersHorizontal size={16} />
14
+ <span class="text-xs font-bold flex flex-row justify-between w-full gap-2 items-center truncate ml-1">
17
15
  Settings
18
16
 
19
17
  {#if $flowStore.value.same_worker}
20
18
  <Badge color="blue" baseClass="truncate">./shared</Badge>
21
19
  {/if}
22
20
  </span>
23
- </div>
21
+ </button>
@@ -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}
@@ -3,6 +3,7 @@
3
3
 
4
4
  <script>import PropPicker from '../../propertyPicker/PropPicker.svelte';
5
5
  import PropPickerResult from '../../propertyPicker/PropPickerResult.svelte';
6
+ import { clickOutside } from '../../../utils';
6
7
  import { createEventDispatcher, setContext } from 'svelte';
7
8
  import { Pane, Splitpanes } from 'svelte-splitpanes';
8
9
  import { writable } from 'svelte/store';
@@ -28,34 +29,44 @@ setContext('PropPickerWrapper', {
28
29
  });
29
30
  </script>
30
31
 
31
- <Splitpanes>
32
- <Pane minSize={20} size={60} class="relative p-4 !transition-none">
33
- <slot />
34
- </Pane>
35
- <Pane minSize={20} size={40} class="py-2 relative !transition-none">
36
- {#if result}
37
- <PropPickerResult
38
- {result}
39
- on:select={({ detail }) => {
40
- dispatch('select', detail)
41
- if ($propPickerConfig?.onSelect(detail)) {
42
- propPickerConfig.set(undefined)
43
- }
44
- }}
45
- />
46
- {:else if pickableProperties}
47
- <PropPicker
48
- {displayContext}
49
- {error}
50
- {pickableProperties}
51
- {notSelectable}
52
- on:select={({ detail }) => {
53
- dispatch('select', detail)
54
- if ($propPickerConfig?.onSelect(detail)) {
55
- propPickerConfig.set(undefined)
56
- }
57
- }}
58
- />
59
- {/if}
60
- </Pane>
61
- </Splitpanes>
32
+ <div
33
+ class="h-full w-full"
34
+ use:clickOutside
35
+ on:click_outside={() => propPickerConfig.set(undefined)}
36
+ >
37
+ <Splitpanes>
38
+ <Pane minSize={20} size={60} class="relative p-4 !transition-none">
39
+ <slot />
40
+ </Pane>
41
+ <Pane
42
+ minSize={20}
43
+ size={40}
44
+ class="pt-2 relative !transition-none {$propPickerConfig ? 'border-2 border-blue-500' : ''}"
45
+ >
46
+ {#if result}
47
+ <PropPickerResult
48
+ {result}
49
+ on:select={({ detail }) => {
50
+ dispatch('select', detail)
51
+ if ($propPickerConfig?.onSelect(detail)) {
52
+ propPickerConfig.set(undefined)
53
+ }
54
+ }}
55
+ />
56
+ {:else if pickableProperties}
57
+ <PropPicker
58
+ {displayContext}
59
+ {error}
60
+ {pickableProperties}
61
+ {notSelectable}
62
+ on:select={({ detail }) => {
63
+ dispatch('select', detail)
64
+ if ($propPickerConfig?.onSelect(detail)) {
65
+ propPickerConfig.set(undefined)
66
+ }
67
+ }}
68
+ />
69
+ {/if}
70
+ </Pane>
71
+ </Splitpanes>
72
+ </div>
@@ -167,8 +167,8 @@ $: items && resetScroll();
167
167
  />
168
168
 
169
169
  <CenteredPage>
170
- <div class="flex flex-col md:flex-row gap-2 items-center sm:justify-between w-full">
171
- <div>
170
+ <div class="flex flex-wrap gap-2 items-center justify-between w-full">
171
+ <div class="flex justify-start">
172
172
  <ToggleButtonGroup bind:selected={itemKind}>
173
173
  <ToggleButton light position="left" value="all" size="sm">All</ToggleButton>
174
174
  <ToggleButton light position="center" value="script" size="sm">
@@ -192,7 +192,7 @@ $: items && resetScroll();
192
192
  </ToggleButtonGroup>
193
193
  </div>
194
194
 
195
- <div class="relative text-gray-600 w-full">
195
+ <div class="relative text-gray-600 grow min-w-[100px]">
196
196
  <!-- svelte-ignore a11y-autofocus -->
197
197
  <input
198
198
  autofocus
@@ -236,7 +236,7 @@ $: items && resetScroll();
236
236
  {:else}
237
237
  <div class="border rounded-md divide-y divide-gray-200 mb-80">
238
238
  <!-- <VirtualList {items} let:item bind:start bind:end> -->
239
- {#each items ?? [] as item, i (item.type + '/' + item.path)}
239
+ {#each items ?? [] as item, i (item.type + '/' + item.path + (item.summary ?? ''))}
240
240
  {#if item.type == 'script'}
241
241
  <ScriptRow
242
242
  starred={item.starred ?? false}
@@ -261,6 +261,8 @@ $: items && resetScroll();
261
261
  marked={item.marked}
262
262
  on:change={loadApps}
263
263
  app={item}
264
+ {moveDrawer}
265
+ {shareModal}
264
266
  />
265
267
  {/if}
266
268
  {/each}