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
@@ -0,0 +1,90 @@
1
+ <script>import { allItems } from '../../../utils';
2
+ import { forbiddenIds } from '../../../../flows/idUtils';
3
+ import { ArrowRight, Pencil } from 'lucide-svelte';
4
+ import { createEventDispatcher, getContext } from 'svelte';
5
+ import { fade, slide } from 'svelte/transition';
6
+ import { Button, Popup } from '../../../../common';
7
+ const { app, selectedComponent } = getContext('AppViewerContext');
8
+ export let id;
9
+ const dispatch = createEventDispatcher();
10
+ const regex = /^[a-zA-Z0-9]{1,}$/;
11
+ let value = id;
12
+ let button;
13
+ let input;
14
+ let error = '';
15
+ $: if (!regex.test(value)) {
16
+ error = 'The ID must include only letters and numbers';
17
+ }
18
+ else if (forbiddenIds.includes(value)) {
19
+ error = 'This ID is reserved';
20
+ }
21
+ else if (allItems($app.grid, $app.subgrids).some((item) => item.id === value && item.id !== id)) {
22
+ error = 'This ID is already in use';
23
+ }
24
+ else {
25
+ id = value;
26
+ error = '';
27
+ }
28
+ function save() {
29
+ if (error != '') {
30
+ return;
31
+ }
32
+ dispatch('change', id);
33
+ input.blur();
34
+ }
35
+ </script>
36
+
37
+ <button
38
+ on:click|stopPropagation={() => {
39
+ $selectedComponent = [id]
40
+ }}
41
+ bind:this={button}
42
+ title="Edit ID"
43
+ class="flex items-center px-1 rounded-sm bg-gray-100 hover:text-black text-gray-600"
44
+ aria-label="Open component ID editor"
45
+ >
46
+ <Pencil size={14} />
47
+ </button>
48
+ <Popup
49
+ ref={button}
50
+ options={{ placement: 'top-start' }}
51
+ transition={fade}
52
+ wrapperClasses="!z-[1002]"
53
+ outerClasses="rounded shadow-xl bg-white border p-3"
54
+ on:close={() => (value = id)}
55
+ >
56
+ <label class="block text-gray-900">
57
+ <div class="pb-1 text-sm text-gray-600">Component ID</div>
58
+ <div class="flex w-full">
59
+ <input
60
+ type="text"
61
+ bind:value
62
+ class="!w-auto grow"
63
+ bind:this={input}
64
+ on:click|stopPropagation={() => {}}
65
+ on:keypress={({ key }) => {
66
+ if (key === 'Enter') save()
67
+ }}
68
+ />
69
+ <Button
70
+ size="xs"
71
+ color="blue"
72
+ buttonType="button"
73
+ btnClasses="!p-1 !w-[34px] !ml-1"
74
+ aria-label="Save ID"
75
+ disabled={error != ''}
76
+ on:click={save}
77
+ >
78
+ <ArrowRight size={18} />
79
+ </Button>
80
+ </div>
81
+ {#if error != ''}
82
+ <div
83
+ transition:slide|local={{ duration: 100 }}
84
+ class="w-full text-sm text-red-600 whitespace-pre-wrap pt-1"
85
+ >
86
+ {error}
87
+ </div>
88
+ {/if}
89
+ </label>
90
+ </Popup>
@@ -0,0 +1,18 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ id: string;
5
+ };
6
+ events: {
7
+ change: CustomEvent<any>;
8
+ } & {
9
+ [evt: string]: CustomEvent<any>;
10
+ };
11
+ slots: {};
12
+ };
13
+ export type IdEditorProps = typeof __propDef.props;
14
+ export type IdEditorEvents = typeof __propDef.events;
15
+ export type IdEditorSlots = typeof __propDef.slots;
16
+ export default class IdEditor extends SvelteComponentTyped<IdEditorProps, IdEditorEvents, IdEditorSlots> {
17
+ }
18
+ export {};
@@ -1,7 +1,9 @@
1
- <script>import { classNames } from '../../../../../utils';
1
+ <script>import { allItems } from '../../../utils';
2
+ import { classNames } from '../../../../../utils';
2
3
  import { ChevronDown, ChevronUp, Pointer } from 'lucide-svelte';
3
4
  import { getContext } from 'svelte';
4
- import { allsubIds } from '../../appUtils';
5
+ import { allsubIds, findGridItem } from '../../appUtils';
6
+ import IdEditor from './IdEditor.svelte';
5
7
  export let id;
6
8
  export let name;
7
9
  export let first = false;
@@ -32,18 +34,78 @@ const idClass = {
32
34
  blue: 'bg-blue-500 text-white',
33
35
  indigo: 'bg-indigo-500 text-white'
34
36
  };
37
+ function renameId(newId) {
38
+ {
39
+ const item = findGridItem($app, id);
40
+ if (item) {
41
+ item.data.id = newId;
42
+ item.id = newId;
43
+ }
44
+ const oldSubgrids = Object.keys($app.subgrids ?? {}).filter((subgrid) => subgrid.startsWith(id + '-'));
45
+ oldSubgrids.forEach((subgrid) => {
46
+ if ($app.subgrids) {
47
+ $app.subgrids[subgrid.replace(id, newId)] = $app.subgrids[subgrid];
48
+ delete $app.subgrids[subgrid];
49
+ }
50
+ });
51
+ allItems($app.grid, $app.subgrids).forEach((item) => {
52
+ if (item.data.componentInput?.type == 'connected') {
53
+ if (item.data.componentInput.connection?.componentId === id) {
54
+ item.data.componentInput.connection.componentId = newId;
55
+ }
56
+ }
57
+ else if (item.data.componentInput?.type == 'runnable') {
58
+ if (item.data.componentInput?.runnable?.type === 'runnableByName' &&
59
+ item.data.componentInput?.runnable?.inlineScript?.refreshOn
60
+ ?.map((x) => x.id)
61
+ ?.includes(id)) {
62
+ item.data.componentInput.runnable.inlineScript.refreshOn =
63
+ item.data.componentInput.runnable.inlineScript.refreshOn.map((x) => {
64
+ if (x.id === id) {
65
+ return {
66
+ id: newId,
67
+ key: x.key
68
+ };
69
+ }
70
+ return x;
71
+ });
72
+ }
73
+ }
74
+ Object.values(item.data.configuration ?? {}).forEach((config) => {
75
+ if (config.type === 'connected') {
76
+ if (config.connection?.componentId === id) {
77
+ config.connection.componentId = newId;
78
+ }
79
+ }
80
+ else if (config.type == 'oneOf') {
81
+ Object.values(config.configuration ?? {}).forEach((choices) => {
82
+ Object.values(choices).forEach((c) => {
83
+ if (c.type === 'connected') {
84
+ if (c.connection?.componentId === id) {
85
+ c.connection.componentId = newId;
86
+ }
87
+ }
88
+ });
89
+ });
90
+ }
91
+ });
92
+ });
93
+ $app = $app;
94
+ $selectedComponent = [newId];
95
+ }
96
+ }
35
97
  </script>
36
98
 
37
99
  <!-- svelte-ignore a11y-click-events-have-key-events -->
38
100
  <div class={$search == '' || inSearch ? '' : 'invisible h-0 overflow-hidden'}>
39
101
  <!-- svelte-ignore a11y-mouse-events-have-key-events -->
40
102
  <div
41
- on:mouseover|stopPropagation={() => {
103
+ on:mouseenter|stopPropagation={() => {
42
104
  if (id !== $hoverStore) {
43
105
  $hoverStore = id
44
106
  }
45
107
  }}
46
- on:mouseout|stopPropagation={() => {
108
+ on:mouseleave|stopPropagation={() => {
47
109
  if ($hoverStore !== undefined) {
48
110
  $hoverStore = undefined
49
111
  }
@@ -63,26 +125,35 @@ const idClass = {
63
125
  $manuallyOpened[id] = $manuallyOpened[id] != undefined ? !$manuallyOpened[id] : true
64
126
  }}
65
127
  >
66
- <button
67
- disabled={!(selectable && !$selectedComponent?.includes(id)) || $connectingInput?.opened}
68
- title="Select component"
69
- on:click|stopPropagation={() => ($selectedComponent = [id])}
70
- class="flex items-center ml-0.5 rounded-sm bg-gray-100 hover:text-black text-gray-600"
71
- >
72
- <div
73
- class={classNames(
74
- 'text-2xs font-bold px-2 py-0.5 rounded-sm',
75
- $selectedComponent?.includes(id) ? idClass[color] : ''
76
- )}
128
+ <div class="flex">
129
+ <button
130
+ disabled={!(selectable && !$selectedComponent?.includes(id)) || $connectingInput?.opened}
131
+ title="Select component"
132
+ on:click|stopPropagation={() => ($selectedComponent = [id])}
133
+ class="flex items-center ml-0.5 rounded-sm bg-gray-100 hover:text-black text-gray-600"
77
134
  >
78
- {id}
79
- </div>
80
- {#if selectable && !$selectedComponent?.includes(id)}
81
- <div class=" px-1 ">
82
- <Pointer size={14} />
135
+ <div
136
+ class={classNames(
137
+ 'text-2xs font-bold px-2 py-0.5 rounded-sm',
138
+ $selectedComponent?.includes(id) ? idClass[color] : ''
139
+ )}
140
+ >
141
+ {id}
83
142
  </div>
143
+ {#if selectable && !$selectedComponent?.includes(id)}
144
+ <div class="px-1">
145
+ <Pointer size={14} />
146
+ </div>
147
+ {/if}
148
+ </button>
149
+ {#if selectable && ($selectedComponent?.includes(id) || $hoverStore === id)}
150
+ <IdEditor
151
+ {id}
152
+ on:selected={() => ($selectedComponent = [id])}
153
+ on:change={({ detail }) => renameId(detail)}
154
+ />
84
155
  {/if}
85
- </button>
156
+ </div>
86
157
  <div class="text-2xs font-bold flex flex-row gap-2 items-center truncate">
87
158
  {name}
88
159
  {#if !open}
@@ -5,7 +5,7 @@ import InlineScriptEditorDrawer from './InlineScriptEditorDrawer.svelte';
5
5
  import { inferArgs } from '../../../../infer';
6
6
  import Badge from '../../../common/badge/Badge.svelte';
7
7
  import Editor from '../../../Editor.svelte';
8
- import { emptySchema, isMac, scriptLangToEditorLang } from '../../../../utils';
8
+ import { emptySchema, getModifierKey, scriptLangToEditorLang } from '../../../../utils';
9
9
  import Popover from '../../../Popover.svelte';
10
10
  import { computeFields } from './utils';
11
11
  import { deepEqual } from 'fast-equals';
@@ -148,7 +148,7 @@ function handleRefreshOn(refreshOn) {
148
148
  Format
149
149
 
150
150
  <div class="flex flex-row items-center gap-1">
151
- <Kbd>{isMac() ? '⌘' : 'CTRL'}</Kbd>
151
+ <Kbd>{getModifierKey()}</Kbd>
152
152
  <Kbd>S</Kbd>
153
153
  </div>
154
154
  </div>
@@ -170,7 +170,7 @@ function handleRefreshOn(refreshOn) {
170
170
  Run
171
171
 
172
172
  <div class="flex flex-row items-center gap-1">
173
- <Kbd>{isMac() ? '⌘' : 'CTRL'}</Kbd>
173
+ <Kbd>{getModifierKey()}</Kbd>
174
174
  <Kbd>
175
175
  <div class="h-4 flex items-center justify-center">
176
176
  <CornerDownLeft size={10} />
@@ -188,6 +188,7 @@ function handleRefreshOn(refreshOn) {
188
188
  <div class="border h-full">
189
189
  {#if inlineScript.language != 'frontend'}
190
190
  <Editor
191
+ path={inlineScript.path}
191
192
  bind:this={editor}
192
193
  class="flex flex-1 grow h-full"
193
194
  lang={scriptLangToEditorLang(inlineScript?.language)}
@@ -48,11 +48,11 @@ function createBackgroundScript() {
48
48
  <div class="text-sm font-semibold truncate mb-1"> Inline scripts </div>
49
49
  <div class="flex flex-col gap-2 w-full">
50
50
  {#if runnables.inline.length > 0}
51
- <div class="flex gap-1 flex-col ">
51
+ <div class="flex gap-1 flex-col">
52
52
  {#each runnables.inline as { name, id, transformer }, index (index)}
53
53
  <button
54
54
  id={PREFIX + id}
55
- class="panel-item
55
+ class="panel-item
56
56
  {$selectedComponentInEditor === id ? 'border-blue-500 bg-blue-100' : 'hover:bg-blue-50'}"
57
57
  on:click={() => selectScript(id)}
58
58
  >
@@ -79,7 +79,7 @@ function createBackgroundScript() {
79
79
  </div>
80
80
  {/if}
81
81
  {#if $app.unusedInlineScripts?.length > 0}
82
- <div class="flex gap-1 flex-col ">
82
+ <div class="flex gap-1 flex-col">
83
83
  {#each $app.unusedInlineScripts as unusedInlineScript, index (index)}
84
84
  {@const id = `unused-${index}`}
85
85
  <button
@@ -14,49 +14,62 @@ let clientWidth;
14
14
  </script>
15
15
 
16
16
  {#if componentInput.fieldType !== 'any'}
17
- <div class="w-full overflow-x-auto" bind:clientWidth>
18
- <ToggleButtonGroup on:selected={() => onchange?.()} bind:selected={componentInput.type}>
19
- {#if componentInput.fieldType === 'template'}
20
- <ToggleButton position="left" value="template" size="xs" disable={disableStatic}>
21
- {brackets}&nbsp;<span class="hidden lg:block">Template</span>
17
+ <div class="w-full">
18
+ <div class="mx-auto" bind:clientWidth>
19
+ <ToggleButtonGroup on:selected={() => onchange?.()} bind:selected={componentInput.type}>
20
+ {#if componentInput.fieldType === 'template'}
21
+ <ToggleButton
22
+ title={`Templated string (use \$\{<output>.x\} )`}
23
+ position="left"
24
+ value="template"
25
+ size="xs"
26
+ disable={disableStatic}
27
+ >
28
+ <span class="font-mono text-2xs h-3 -mt-0.5">
29
+ {brackets}
30
+ </span>
31
+ {#if clientWidth > 250}
32
+ &nbsp;Template
33
+ {/if}
34
+ </ToggleButton>
35
+ {:else}
36
+ <ToggleButton
37
+ title="Static"
38
+ position="left"
39
+ value="static"
40
+ startIcon={{ icon: faPen }}
41
+ size="xs"
42
+ disable={disableStatic}
43
+ >
44
+ {#if clientWidth > 250}
45
+ Static
46
+ {/if}
47
+ </ToggleButton>
48
+ {/if}
49
+
50
+ <ToggleButton
51
+ title="Connect to an output"
52
+ value="connected"
53
+ position="center"
54
+ startIcon={{ icon: faArrowRight }}
55
+ size="xs"
56
+ >
57
+ {#if clientWidth > 250}
58
+ Connect
59
+ {/if}
22
60
  </ToggleButton>
23
- {:else}
24
61
  <ToggleButton
25
- title="Static"
26
- position="left"
27
- value="static"
28
- startIcon={{ icon: faPen }}
62
+ title="Compute it with a script/flow"
63
+ position="right"
64
+ value="runnable"
65
+ startIcon={{ icon: faCode }}
29
66
  size="xs"
30
- disable={disableStatic}
31
67
  >
32
68
  {#if clientWidth > 250}
33
- <span class="hidden lg:block">Static</span>
69
+ Compute
34
70
  {/if}
35
71
  </ToggleButton>
36
- {/if}
37
-
38
- <ToggleButton
39
- title="Connect"
40
- value="connected"
41
- position="center"
42
- startIcon={{ icon: faArrowRight }}
43
- size="xs"
44
- >
45
- {#if clientWidth > 250}
46
- <span class="hidden lg:block">Connect</span>
47
- {/if}
48
- </ToggleButton>
49
- <ToggleButton
50
- title="Compute"
51
- position="right"
52
- value="runnable"
53
- startIcon={{ icon: faCode }}
54
- size="xs"
55
- >
56
- {#if clientWidth > 250}
57
- <span class="hidden lg:block">Compute</span>
58
- {/if}
59
- </ToggleButton>
60
- </ToggleButtonGroup>
72
+ </ToggleButtonGroup>
73
+ </div>
61
74
  </div>
62
75
  {/if}
@@ -121,7 +121,7 @@ $: componentSettings?.item?.data && ($app = $app);
121
121
  noVariablePicker
122
122
  />
123
123
  {:else if componentSettings.item.data.componentInput.type === 'template' && componentSettings.item.data.componentInput !== undefined}
124
- <div class="py-1 min-h-[28px] rounded border border-1 border-gray-500">
124
+ <div class="py-1 min-h-[28px] rounded border border-1 border-gray-500">
125
125
  <TemplateEditor
126
126
  bind:this={editor}
127
127
  fontSize={12}
@@ -185,7 +185,7 @@ $: componentSettings?.item?.data && ($app = $app);
185
185
  />
186
186
  </PanelSection>
187
187
  {:else}
188
- <div class="h-full w-full font-bold text-gray-400 text-lg py-10 px-4"
188
+ <div class="h-full w-full text-sm text-gray-500 text-center py-8 px-2"
189
189
  >{ccomponents[component.type].name} has no configuration</div
190
190
  >
191
191
  {/if}
@@ -210,7 +210,7 @@ $: componentSettings?.item?.data && ($app = $app);
210
210
 
211
211
  {#if Object.keys(ccomponents[component.type].customCss ?? {}).length > 0}
212
212
  <PanelSection title="Styling">
213
- <div slot="action">
213
+ <div slot="action" class="flex justify-end flex-wrap gap-1">
214
214
  <Button
215
215
  color="light"
216
216
  size="xs"
@@ -22,6 +22,16 @@ function detach() {
22
22
  function clear() {
23
23
  appInput = clearResultAppInput(appInput);
24
24
  }
25
+ $: {
26
+ if (appInput.recomputeOnInputChanged === undefined) {
27
+ appInput.recomputeOnInputChanged = true;
28
+ }
29
+ //TODO: remove after migration is done
30
+ if (appInput.doNotRecomputeOnInputChanged != undefined) {
31
+ appInput.recomputeOnInputChanged = !appInput.doNotRecomputeOnInputChanged;
32
+ appInput.doNotRecomputeOnInputChanged = undefined;
33
+ }
34
+ }
25
35
  </script>
26
36
 
27
37
  <div class="flex justify-between w-full items-center gap-1">
@@ -32,7 +42,7 @@ function clear() {
32
42
  {appInput.runnable.path}
33
43
  {/if}
34
44
  </span>
35
- <div class="flex gap-1 justify-center">
45
+ <div class="flex gap-1 justify-center">
36
46
  {#if appInput.runnable?.type === 'runnableByName' && appInput.runnable.inlineScript}
37
47
  <Button size="xs" color="light" variant="border" on:click={detach}>
38
48
  Detach&nbsp;
@@ -94,11 +104,9 @@ function clear() {
94
104
  <div class="flex items-center">
95
105
  <Toggle
96
106
  size="xs"
97
- color="red"
98
- bind:checked={appInput.doNotRecomputeOnInputChanged}
99
- options={{ right: 'do NOT recompute on input changes' }}
107
+ bind:checked={appInput.recomputeOnInputChanged}
108
+ options={{ right: 'recompute on any input changes' }}
100
109
  />
101
- <Tooltip>If not toggled, whenever an input is changed, the script will be re-run.</Tooltip>
102
110
  </div>
103
111
  {/if}
104
112
 
@@ -107,7 +115,7 @@ function clear() {
107
115
  bind:runnable={appInput.runnable}
108
116
  {appComponent}
109
117
  fields={appInput.fields}
110
- doNotRecomputeOnInputChanged={appInput.doNotRecomputeOnInputChanged}
118
+ recomputeOnInputChanged={appInput.recomputeOnInputChanged}
111
119
  />
112
120
  </div>
113
121
  {/if}
@@ -1,6 +1,6 @@
1
1
  <script>import { Badge } from '../../../common';
2
2
  import Button from '../../../common/button/Button.svelte';
3
- import { getNextId } from '../../../flows/flowStateUtils';
3
+ import { getNextId } from '../../../flows/idUtils';
4
4
  import { classNames } from '../../../../utils';
5
5
  import { faPlus, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
6
6
  import { getContext } from 'svelte';
@@ -13,9 +13,9 @@ function applyConnection() {
13
13
  input: undefined,
14
14
  hoveredComponent: undefined
15
15
  };
16
+ $app = $app;
17
+ $worldStore = $worldStore;
16
18
  }
17
- $app = $app;
18
- $worldStore = $worldStore;
19
19
  }
20
20
  $: $connectingInput && applyConnection();
21
21
  </script>
@@ -70,6 +70,7 @@ function select(label) {
70
70
  {#if anchor}
71
71
  <Popup
72
72
  ref={anchor}
73
+ closeOn={[]}
73
74
  options={{ placement: 'bottom' }}
74
75
  bind:open={openPopup}
75
76
  let:close
@@ -79,7 +80,11 @@ function select(label) {
79
80
  <div class="max-w-xs shadow-[0_10px_40px_-5px_rgba(0,0,0,0.25)] bg-white rounded-md p-2">
80
81
  {#if filteredItems}
81
82
  <input
82
- on:keydown|stopPropagation
83
+ on:keydown={(event) => {
84
+ if (!['ArrowDown', 'ArrowUp'].includes(event.key)) {
85
+ event.stopPropagation()
86
+ }
87
+ }}
83
88
  bind:value={search}
84
89
  type="text"
85
90
  placeholder="Search"
@@ -95,8 +100,8 @@ function select(label) {
95
100
  select(label)
96
101
  close()
97
102
  }}
98
- class="w-full center-center flex-col font-normal p-1
99
- hover:bg-gray-100 focus:bg-gray-100 rounded duration-200
103
+ class="w-full center-center flex-col font-normal p-1
104
+ hover:bg-gray-100 focus:bg-gray-100 rounded duration-200
100
105
  {label === componentInput.value ? 'text-blue-600 bg-blue-50 pointer-events-none' : ''}"
101
106
  >
102
107
  <svelte:component this={icon} size={22} />
@@ -5,8 +5,6 @@ declare const __propDef: {
5
5
  componentInput: StaticInput<string>;
6
6
  };
7
7
  events: {
8
- keydown: KeyboardEvent;
9
- } & {
10
8
  [evt: string]: CustomEvent<any>;
11
9
  };
12
10
  slots: {};
@@ -155,7 +155,7 @@ function createScript() {
155
155
  color="light"
156
156
  variant="border"
157
157
  startIcon={{ icon: faPlus }}
158
- btnClasses="truncate"
158
+ btnClasses="truncate w-full"
159
159
  >
160
160
  Create an inline script
161
161
  </Button>
@@ -164,7 +164,7 @@ function createScript() {
164
164
  size="sm"
165
165
  color="blue"
166
166
  startIcon={{ icon: faMousePointer }}
167
- btnClasses="truncate"
167
+ btnClasses="truncate w-full"
168
168
  >
169
169
  Select a script or flow
170
170
  </Button>
@@ -8,7 +8,6 @@ import { emptyString } from '../../../../../utils';
8
8
  import { Skeleton } from '../../../../common';
9
9
  export let filter = '';
10
10
  let flows = undefined;
11
- let loading = false;
12
11
  let filteredItems = [];
13
12
  $: prefilteredItems = flows ?? [];
14
13
  const dispatch = createEventDispatcher();
@@ -18,10 +17,8 @@ async function loadFlow() {
18
17
  perPage: 300
19
18
  });
20
19
  flows = loadedFlows;
21
- loading = false;
22
20
  }
23
21
  onMount(() => {
24
- loading = true;
25
22
  loadFlow();
26
23
  });
27
24
  </script>
@@ -56,7 +53,7 @@ onMount(() => {
56
53
  <div class="flex items-center gap-4">
57
54
  <RowIcon kind="flow" />
58
55
 
59
- <div class="w-full text-left font-normal ">
56
+ <div class="w-full text-left font-normal">
60
57
  <div class="text-gray-900 flex-wrap text-md font-semibold mb-1">
61
58
  {#if item.marked}
62
59
  {@html item.marked ?? ''}
@@ -64,7 +61,7 @@ onMount(() => {
64
61
  {!item.summary || item.summary.length == 0 ? item.path : item.summary}
65
62
  {/if}
66
63
  </div>
67
- <div class="text-gray-600 text-xs ">
64
+ <div class="text-gray-600 text-xs">
68
65
  {item.path}
69
66
  </div>
70
67
  </div>
@@ -8,7 +8,6 @@ import { emptyString } from '../../../../../utils';
8
8
  import { Skeleton } from '../../../../common';
9
9
  export let filter = '';
10
10
  let scripts = undefined;
11
- let loading = false;
12
11
  let filteredItems = [];
13
12
  $: prefilteredItems = scripts ?? [];
14
13
  const dispatch = createEventDispatcher();
@@ -18,10 +17,8 @@ async function loadScripts() {
18
17
  perPage: 300
19
18
  });
20
19
  scripts = loadedScripts;
21
- loading = false;
22
20
  }
23
21
  onMount(() => {
24
- loading = true;
25
22
  loadScripts();
26
23
  });
27
24
  </script>
@@ -56,7 +53,7 @@ onMount(() => {
56
53
  <div class="flex items-center gap-4">
57
54
  <RowIcon kind="script" />
58
55
 
59
- <div class="w-full text-left font-normal ">
56
+ <div class="w-full text-left font-normal">
60
57
  <div class="text-gray-900 flex-wrap text-md font-semibold mb-1">
61
58
  {#if item.marked}
62
59
  {@html item.marked ?? ''}
@@ -64,7 +61,7 @@ onMount(() => {
64
61
  {!item.summary || item.summary.length == 0 ? item.path : item.summary}
65
62
  {/if}
66
63
  </div>
67
- <div class="text-gray-600 text-xs ">
64
+ <div class="text-gray-600 text-xs">
68
65
  {item.path}
69
66
  </div>
70
67
  </div>