windmill-components 1.383.9 → 1.389.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 (189) hide show
  1. package/package/assets/app.css +25 -1
  2. package/package/components/ArgInput.svelte +2 -1
  3. package/package/components/ChangeInstanceUsername.svelte +9 -108
  4. package/package/components/ChangeInstanceUsernameInner.svelte +112 -0
  5. package/package/components/ChangeInstanceUsernameInner.svelte.d.ts +21 -0
  6. package/package/components/DiffDrawer.svelte +27 -20
  7. package/package/components/DiffEditor.svelte +5 -1
  8. package/package/components/DisplayResult.svelte +39 -9
  9. package/package/components/DropdownV2.svelte +4 -26
  10. package/package/components/DropdownV2.svelte.d.ts +9 -1
  11. package/package/components/DropdownV2Inner.svelte +42 -0
  12. package/package/components/DropdownV2Inner.svelte.d.ts +40 -0
  13. package/package/components/Editor.svelte +24 -4
  14. package/package/components/Editor.svelte.d.ts +5 -4
  15. package/package/components/EditorBar.svelte +9 -11
  16. package/package/components/EditorSettings.svelte +44 -0
  17. package/package/components/EditorSettings.svelte.d.ts +17 -0
  18. package/package/components/EditorTheme.svelte +1 -1
  19. package/package/components/ErrorOrRecoveryHandler.svelte +27 -20
  20. package/package/components/FlowBuilder.svelte +17 -3
  21. package/package/components/FlowBuilder.svelte.d.ts +3 -0
  22. package/package/components/FlowGraphViewerStep.svelte +1 -1
  23. package/package/components/FlowStatusViewer.svelte +3 -1
  24. package/package/components/FlowStatusViewer.svelte.d.ts +1 -0
  25. package/package/components/FlowStatusViewerInner.svelte +5 -2
  26. package/package/components/FlowViewerInner.svelte +3 -7
  27. package/package/components/FormatOnSave.svelte +12 -29
  28. package/package/components/GraphqlSchemaViewer.svelte +1 -1
  29. package/package/components/GraphqlSchemaViewer.svelte.d.ts +1 -1
  30. package/package/components/HighlightCode.svelte +3 -0
  31. package/package/components/InstanceNameEditor.svelte +64 -0
  32. package/package/components/InstanceNameEditor.svelte.d.ts +23 -0
  33. package/package/components/LightweightArgInput.svelte +6 -11
  34. package/package/components/LogViewer.svelte +37 -29
  35. package/package/components/LogViewer.svelte.d.ts +2 -0
  36. package/package/components/ObjectResourceInput.svelte +1 -1
  37. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  38. package/package/components/Path.svelte +3 -3
  39. package/package/components/QueueMetricsDrawer.svelte +6 -218
  40. package/package/components/QueueMetricsDrawer.svelte.d.ts +2 -3
  41. package/package/components/QueueMetricsDrawerInner.svelte +211 -0
  42. package/package/components/QueueMetricsDrawerInner.svelte.d.ts +15 -0
  43. package/package/components/ResourceEditorDrawer.svelte +14 -11
  44. package/package/components/ResourceEditorDrawer.svelte.d.ts +1 -1
  45. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  46. package/package/components/S3FilePicker.svelte +20 -8
  47. package/package/components/ScheduleEditorInner.svelte +497 -469
  48. package/package/components/ScriptBuilder.svelte +12 -1
  49. package/package/components/ScriptBuilder.svelte.d.ts +3 -0
  50. package/package/components/ScriptEditor.svelte +1 -0
  51. package/package/components/ScriptEditor.svelte.d.ts +2 -1
  52. package/package/components/ServiceLogsInner.svelte +511 -0
  53. package/package/components/ServiceLogsInner.svelte.d.ts +20 -0
  54. package/package/components/SimpleEditor.svelte +27 -2
  55. package/package/components/SimpleEditor.svelte.d.ts +5 -3
  56. package/package/components/Summary.svelte +33 -31
  57. package/package/components/Summary.svelte.d.ts +1 -0
  58. package/package/components/SuperadminSettings.svelte +28 -10
  59. package/package/components/TemplateEditor.svelte +1 -1
  60. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  61. package/package/components/VimMode.svelte +16 -0
  62. package/package/components/VimMode.svelte.d.ts +14 -0
  63. package/package/components/WorkerTagPicker.svelte +4 -1
  64. package/package/components/WorkspaceGroup.svelte +139 -68
  65. package/package/components/WorkspaceGroup.svelte.d.ts +3 -0
  66. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +19 -2
  67. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
  68. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +2 -1
  69. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte +2 -0
  70. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte.d.ts +2 -1
  71. package/package/components/apps/components/display/table/AppAggridTable.svelte +45 -3
  72. package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +2 -1
  73. package/package/components/apps/components/display/table/AppAggridTableEe.svelte +2 -0
  74. package/package/components/apps/components/display/table/AppAggridTableEe.svelte.d.ts +2 -1
  75. package/package/components/apps/editor/AppEditor.svelte +239 -92
  76. package/package/components/apps/editor/AppEditorBottomPanel.svelte +22 -0
  77. package/package/components/apps/editor/AppEditorBottomPanel.svelte.d.ts +24 -0
  78. package/package/components/apps/editor/AppEditorHeader.svelte +44 -2
  79. package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +9 -0
  80. package/package/components/apps/editor/AppExportButton.svelte +1 -1
  81. package/package/components/apps/editor/AppPreview.svelte +4 -0
  82. package/package/components/apps/editor/DeploymentHistory.svelte +7 -3
  83. package/package/components/apps/editor/GridEditor.svelte +4 -13
  84. package/package/components/apps/editor/RunnableJobPanel.svelte +25 -58
  85. package/package/components/apps/editor/RunnableJobPanel.svelte.d.ts +10 -1
  86. package/package/components/apps/editor/RunnalbeJobPanelInner.svelte +56 -0
  87. package/package/components/apps/editor/RunnalbeJobPanelInner.svelte.d.ts +18 -0
  88. package/package/components/apps/editor/SubGridEditor.svelte +3 -1
  89. package/package/components/apps/editor/component/Component.svelte +26 -4
  90. package/package/components/apps/editor/component/Component.svelte.d.ts +1 -0
  91. package/package/components/apps/editor/component/components.d.ts +5 -0
  92. package/package/components/apps/editor/componentsPanel/CssProperty.svelte +2 -0
  93. package/package/components/apps/editor/componentsPanel/tailwindUtils.js +267 -1
  94. package/package/components/apps/editor/contextPanel/ContextPanel.svelte +9 -1
  95. package/package/components/apps/editor/contextPanel/ContextPanel.svelte.d.ts +2 -0
  96. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -0
  97. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +3 -0
  98. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +7 -2
  99. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte.d.ts +5 -1
  100. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +14 -2
  101. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte.d.ts +1 -0
  102. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +25 -5
  103. package/package/components/apps/editor/settingsPanel/HideButton.svelte +47 -0
  104. package/package/components/apps/editor/settingsPanel/HideButton.svelte.d.ts +22 -0
  105. package/package/components/apps/editor/settingsPanel/TableActions.svelte +43 -4
  106. package/package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
  107. package/package/components/apps/svelte-grid/Grid.svelte +6 -2
  108. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +1 -0
  109. package/package/components/apps/svelte-grid/MoveResize.svelte +11 -3
  110. package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +1 -0
  111. package/package/components/apps/svelte-grid/utils/item.d.ts +4 -1
  112. package/package/components/apps/svelte-grid/utils/item.js +11 -4
  113. package/package/components/common/button/Button.svelte.d.ts +2 -2
  114. package/package/components/common/calendarPicker/CalendarPicker.svelte +6 -2
  115. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
  116. package/package/components/common/drawer/ConditionalPortal.svelte +2 -1
  117. package/package/components/common/drawer/ConditionalPortal.svelte.d.ts +1 -0
  118. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  119. package/package/components/common/popup/Popup.svelte +2 -1
  120. package/package/components/common/popup/Popup.svelte.d.ts +1 -0
  121. package/package/components/common/table/AppRow.svelte +11 -8
  122. package/package/components/common/table/AppRow.svelte.d.ts +1 -2
  123. package/package/components/common/table/FlowRow.svelte +3 -3
  124. package/package/components/common/table/FlowRow.svelte.d.ts +1 -2
  125. package/package/components/common/table/RawAppRow.svelte +3 -3
  126. package/package/components/common/table/RawAppRow.svelte.d.ts +1 -2
  127. package/package/components/common/table/ScriptRow.svelte +3 -3
  128. package/package/components/common/table/ScriptRow.svelte.d.ts +1 -2
  129. package/package/components/copilot/CodeCompletionStatus.svelte +21 -46
  130. package/package/components/copilot/StepGen.svelte +2 -1
  131. package/package/components/custom_ui.d.ts +4 -1
  132. package/package/components/flows/CreateActionsApp.svelte +11 -8
  133. package/package/components/flows/CreateActionsFlow.svelte +11 -8
  134. package/package/components/flows/FlowEditor.svelte +1 -2
  135. package/package/components/flows/FlowEditor.svelte.d.ts +0 -1
  136. package/package/components/flows/FlowHistory.svelte +6 -3
  137. package/package/components/flows/content/FlowModuleScript.svelte +15 -11
  138. package/package/components/flows/content/FlowSettings.svelte +1 -4
  139. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -0
  140. package/package/components/flows/header/FlowYamlEditor.svelte +55 -0
  141. package/package/components/flows/header/FlowYamlEditor.svelte.d.ts +17 -0
  142. package/package/components/flows/map/InsertTriggerButton.svelte +1 -1
  143. package/package/components/flows/map/InsertTriggerButton.svelte.d.ts +1 -0
  144. package/package/components/flows/map/VirtualItem.svelte +1 -1
  145. package/package/components/flows/pickers/PickHubScript.svelte +1 -0
  146. package/package/components/flows/types.d.ts +7 -6
  147. package/package/components/flows/utils.d.ts +9 -0
  148. package/package/components/flows/utils.js +21 -0
  149. package/package/components/graph/graphBuilder.js +1 -0
  150. package/package/components/graph/model.d.ts +1 -0
  151. package/package/components/graph/renderers/edges/BaseEdge.svelte +16 -0
  152. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
  153. package/package/components/graph/renderers/nodes/NoBranchNode.svelte +5 -1
  154. package/package/components/graph/renderers/nodes/NoBranchNode.svelte.d.ts +1 -0
  155. package/package/components/home/Item.svelte +0 -17
  156. package/package/components/home/deploy_ui.d.ts +2 -0
  157. package/package/components/home/deploy_ui.js +21 -0
  158. package/package/components/icons/RustIcon.svelte +70 -0
  159. package/package/components/icons/RustIcon.svelte.d.ts +25 -0
  160. package/package/components/icons/rust-logo.svg +1 -0
  161. package/package/components/instanceSettings.js +2 -2
  162. package/package/components/monaco_keybindings.d.ts +3 -0
  163. package/package/components/monaco_keybindings.js +9 -0
  164. package/package/components/preview/FlowPreviewStatus.svelte +6 -2
  165. package/package/components/runs/JobLoader.svelte +12 -3
  166. package/package/components/runs/JobLoader.svelte.d.ts +1 -1
  167. package/package/components/runs/ManuelDatePicker.svelte +31 -44
  168. package/package/components/runs/ManuelDatePicker.svelte.d.ts +6 -2
  169. package/package/components/runs/RunsFilter.svelte +4 -1
  170. package/package/components/runs/RunsFilter.svelte.d.ts +1 -0
  171. package/package/components/search/GlobalSearchModal.svelte +36 -25
  172. package/package/components/wizards/TableActionsWizard.svelte +84 -0
  173. package/package/components/wizards/TableActionsWizard.svelte.d.ts +22 -0
  174. package/package/editorUtils.js +2 -0
  175. package/package/gen/core/OpenAPI.js +1 -1
  176. package/package/gen/schemas.gen.d.ts +8 -8
  177. package/package/gen/schemas.gen.js +8 -8
  178. package/package/gen/services.gen.d.ts +4 -0
  179. package/package/gen/services.gen.js +16 -0
  180. package/package/gen/types.gen.d.ts +20 -8
  181. package/package/infer.d.ts +1 -1
  182. package/package/infer.js +48 -7
  183. package/package/script_helpers.d.ts +1 -0
  184. package/package/script_helpers.js +39 -1
  185. package/package/scripts.d.ts +1 -1
  186. package/package/scripts.js +11 -3
  187. package/package/stores.d.ts +5 -1
  188. package/package/stores.js +7 -2
  189. package/package.json +13 -7
@@ -3,11 +3,11 @@ import '@codingame/monaco-vscode-standalone-languages';
3
3
  import '@codingame/monaco-vscode-standalone-typescript-language-features';
4
4
  import { type Preview } from '../gen';
5
5
  import type { Text } from 'yjs';
6
- import { editor as meditor } from 'monaco-editor';
6
+ import { editor as meditor, type IDisposable } from 'monaco-editor';
7
7
  declare const __propDef: {
8
8
  props: {
9
9
  [x: string]: any;
10
- lang: 'typescript' | 'python' | 'go' | 'shell' | 'sql' | 'graphql' | 'powershell' | 'php' | 'css' | 'javascript';
10
+ lang: 'typescript' | 'python' | 'go' | 'shell' | 'sql' | 'graphql' | 'powershell' | 'php' | 'css' | 'javascript' | 'rust';
11
11
  code?: string | undefined;
12
12
  cmdEnterAction?: (() => void) | undefined;
13
13
  formatAction?: (() => void) | undefined;
@@ -38,7 +38,7 @@ declare const __propDef: {
38
38
  insertAtBeginning?: ((code: string) => void) | undefined;
39
39
  insertAtLine?: ((code: string, line: number) => void) | undefined;
40
40
  getSelectedLines?: (() => string | undefined) | undefined;
41
- onDidChangeCursorSelection?: ((f: (e: meditor.ICursorSelectionChangedEvent) => void) => import("monaco-editor").IDisposable | undefined) | undefined;
41
+ onDidChangeCursorSelection?: ((f: (e: meditor.ICursorSelectionChangedEvent) => void) => IDisposable | undefined) | undefined;
42
42
  show?: (() => void) | undefined;
43
43
  hide?: (() => void) | undefined;
44
44
  setCode?: ((ncode: string, noHistory?: boolean) => void) | undefined;
@@ -48,6 +48,7 @@ declare const __propDef: {
48
48
  addAction?: ((id: string, label: string, callback: (editor: meditor.IStandaloneCodeEditor) => void, keybindings?: number[]) => void) | undefined;
49
49
  };
50
50
  events: {
51
+ saveDraft: CustomEvent<any>;
51
52
  change: CustomEvent<any>;
52
53
  blur: CustomEvent<any>;
53
54
  focus: CustomEvent<any>;
@@ -67,7 +68,7 @@ export default class Editor extends SvelteComponent<EditorProps, EditorEvents, E
67
68
  get insertAtBeginning(): (code: string) => void;
68
69
  get insertAtLine(): (code: string, line: number) => void;
69
70
  get getSelectedLines(): () => string | undefined;
70
- get onDidChangeCursorSelection(): (f: (e: meditor.ICursorSelectionChangedEvent) => void) => import("monaco-editor").IDisposable | undefined;
71
+ get onDidChangeCursorSelection(): (f: (e: meditor.ICursorSelectionChangedEvent) => void) => IDisposable | undefined;
71
72
  get show(): () => void;
72
73
  get hide(): () => void;
73
74
  get setCode(): (ncode: string, noHistory?: boolean) => void;
@@ -19,15 +19,14 @@ import { createEventDispatcher } from 'svelte';
19
19
  import { sendUserToast } from '../toast';
20
20
  import { getScriptByPath, scriptLangToEditorLang } from '../scripts';
21
21
  import Toggle from './Toggle.svelte';
22
- import FormatOnSave from './FormatOnSave.svelte';
23
22
  import { DollarSign, History, Library, Link, Package, Plus, RotateCw, Save, Users } from 'lucide-svelte';
24
23
  import { capitalize, toCamel } from '../utils';
25
24
  import ScriptVersionHistory from './ScriptVersionHistory.svelte';
26
25
  import ScriptGen from './copilot/ScriptGen.svelte';
27
26
  import { getResetCode } from '../script_helpers';
28
- import CodeCompletionStatus from './copilot/CodeCompletionStatus.svelte';
29
27
  import Popover from './Popover.svelte';
30
28
  import ResourceEditorDrawer from './ResourceEditorDrawer.svelte';
29
+ import EditorSettings from './EditorSettings.svelte';
31
30
  export let lang;
32
31
  export let editor;
33
32
  export let websocketAlive;
@@ -63,7 +62,8 @@ $: showContextVarPicker = [
63
62
  'bun',
64
63
  'bunnative',
65
64
  'nativets',
66
- 'php'
65
+ 'php',
66
+ 'rust'
67
67
  ].includes(lang ?? '');
68
68
  $: showVarPicker = [
69
69
  'python3',
@@ -74,7 +74,8 @@ $: showVarPicker = [
74
74
  'bun',
75
75
  'bunnative',
76
76
  'nativets',
77
- 'php'
77
+ 'php',
78
+ 'rust'
78
79
  ].includes(lang ?? '');
79
80
  $: showResourcePicker = [
80
81
  'python3',
@@ -85,7 +86,8 @@ $: showResourcePicker = [
85
86
  'bun',
86
87
  'bunnative',
87
88
  'nativets',
88
- 'php'
89
+ 'php',
90
+ 'rust'
89
91
  ].includes(lang ?? '');
90
92
  $: showResourceTypePicker =
91
93
  ['typescript', 'javascript'].includes(scriptLangToEditorLang(lang)) ||
@@ -625,15 +627,11 @@ $res = json_decode(curl_exec($ch));`)
625
627
  </div>
626
628
  {/if}
627
629
 
628
- {#if customUi?.autoformatting != false}
629
- <FormatOnSave />
630
- {/if}
631
630
  {#if customUi?.aiGen != false}
632
631
  <ScriptGen {editor} {diffEditor} {lang} {iconOnly} {args} />
633
632
  {/if}
634
- {#if customUi?.aiFix != false}
635
- <CodeCompletionStatus />
636
- {/if}
633
+
634
+ <EditorSettings {customUi} />
637
635
  </div>
638
636
  </div>
639
637
 
@@ -0,0 +1,44 @@
1
+ <script>import { Settings } from 'lucide-svelte';
2
+ import FormatOnSave from './FormatOnSave.svelte';
3
+ import VimMode from './VimMode.svelte';
4
+ import { Button, Popup } from './common';
5
+ import CodeCompletionStatus from './copilot/CodeCompletionStatus.svelte';
6
+ export let customUi = {};
7
+ </script>
8
+
9
+ {#if customUi?.autoformatting != false || customUi?.vimMode != false || customUi?.aiCompletion != false}
10
+ <Popup
11
+ floatingConfig={{ strategy: 'absolute', placement: 'bottom-end' }}
12
+ containerClasses="border rounded-lg shadow-lg p-4 bg-surface"
13
+ >
14
+ <svelte:fragment slot="button">
15
+ <Button
16
+ btnClasses="text-tertiary"
17
+ color="light"
18
+ size="xs"
19
+ nonCaptureEvent={true}
20
+ startIcon={{ icon: Settings }}
21
+ iconOnly
22
+ title="Editor settings"
23
+ />
24
+ </svelte:fragment>
25
+
26
+ <div class="flex flex-col gap-y-2">
27
+ {#if customUi?.autoformatting != false}
28
+ <div>
29
+ <FormatOnSave />
30
+ </div>
31
+ {/if}
32
+ {#if customUi?.vimMode != false}
33
+ <div>
34
+ <VimMode />
35
+ </div>
36
+ {/if}
37
+ {#if customUi?.aiCompletion != false}
38
+ <div>
39
+ <CodeCompletionStatus />
40
+ </div>
41
+ {/if}
42
+ </div>
43
+ </Popup>
44
+ {/if}
@@ -0,0 +1,17 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import type { EditorBarUi } from './custom_ui';
3
+ declare const __propDef: {
4
+ props: {
5
+ customUi?: EditorBarUi | undefined;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export type EditorSettingsProps = typeof __propDef.props;
13
+ export type EditorSettingsEvents = typeof __propDef.events;
14
+ export type EditorSettingsSlots = typeof __propDef.slots;
15
+ export default class EditorSettings extends SvelteComponent<EditorSettingsProps, EditorSettingsEvents, EditorSettingsSlots> {
16
+ }
17
+ export {};
@@ -1,5 +1,5 @@
1
1
  <script>import { isInitialized } from './vscode';
2
- import { editor as meditor } from 'monaco-editor/esm/vs/editor/editor.api';
2
+ import { editor as meditor } from 'monaco-editor';
3
3
  import { onMount } from 'svelte';
4
4
  import DarkModeObserver from './DarkModeObserver.svelte';
5
5
  function onThemeChange() {
@@ -1,5 +1,4 @@
1
1
  <script>import { Alert, Button, Tab, Tabs } from './common';
2
- import SchemaForm from './SchemaForm.svelte';
3
2
  import ScriptPicker from './ScriptPicker.svelte';
4
3
  import Toggle from './Toggle.svelte';
5
4
  import { base } from '../base';
@@ -207,13 +206,17 @@ $: handlerPath &&
207
206
  {/if}
208
207
  {#if handlerPath}
209
208
  <p class="font-semibold text-sm mt-4 mb-2">Extra arguments</p>
210
- <SchemaForm
211
- disabled={!isEditable}
212
- schema={customHandlerSchema}
213
- bind:args={handlerExtraArgs}
214
- shouldHideNoInputs
215
- class="text-xs"
216
- />
209
+ {#await import('./SchemaForm.svelte')}
210
+ <Loader2 class="animate-spin" />
211
+ {:then Module}
212
+ <Module.default
213
+ disabled={!isEditable}
214
+ schema={customHandlerSchema}
215
+ bind:args={handlerExtraArgs}
216
+ shouldHideNoInputs
217
+ class="text-xs"
218
+ />
219
+ {/await}
217
220
  {#if customHandlerSchema && customHandlerSchema.properties && Object.keys(customHandlerSchema.properties).length === 0}
218
221
  <div class="text-xs texg-gray-700">This error handler takes no extra arguments</div>
219
222
  {/if}
@@ -236,19 +239,23 @@ $: handlerPath &&
236
239
  />
237
240
  </span>
238
241
  {#if workspaceConnectedToSlack}
239
- <SchemaForm
240
- disabled={!$enterpriseLicense || !isSlackHandler(handlerPath)}
241
- schema={slackHandlerSchema}
242
- schemaSkippedValues={['slack']}
243
- schemaFieldTooltip={{
244
- channel: 'Slack channel name without the "#" - example: "windmill-alerts"'
245
- }}
246
- bind:args={handlerExtraArgs}
247
- shouldHideNoInputs
248
- class="text-xs"
249
- />
242
+ {#await import('./SchemaForm.svelte')}
243
+ <Loader2 class="animate-spin" />
244
+ {:then Module}
245
+ <Module.default
246
+ disabled={!$enterpriseLicense || !isSlackHandler(handlerPath)}
247
+ schema={slackHandlerSchema}
248
+ schemaSkippedValues={['slack']}
249
+ schemaFieldTooltip={{
250
+ channel: 'Slack channel name without the "#" - example: "windmill-alerts"'
251
+ }}
252
+ bind:args={handlerExtraArgs}
253
+ shouldHideNoInputs
254
+ class="text-xs"
255
+ />
256
+ {/await}
250
257
  {:else if workspaceConnectedToSlack == undefined}
251
- <Loader2 class="animate-spin" />
258
+ <Loader2 class="animate-spin" size={10} />
252
259
  {/if}
253
260
  {#if $enterpriseLicense && isSlackHandler(handlerPath)}
254
261
  {#if workspaceConnectedToSlack == false}
@@ -35,6 +35,7 @@ import { MenuItem } from '@rgossiaux/svelte-headlessui';
35
35
  import { twMerge } from 'tailwind-merge';
36
36
  import CustomPopover from './CustomPopover.svelte';
37
37
  import Summary from './Summary.svelte';
38
+ import FlowYamlEditor from './flows/header/FlowYamlEditor.svelte';
38
39
  export let initialPath = '';
39
40
  export let pathStoreInit = undefined;
40
41
  export let newFlow;
@@ -46,6 +47,7 @@ export let flowStateStore;
46
47
  export let savedFlow = undefined;
47
48
  export let diffDrawer = undefined;
48
49
  export let customUi = {};
50
+ export let disableAi = false;
49
51
  $: setContext('customUi', customUi);
50
52
  const dispatch = createEventDispatcher();
51
53
  async function createSchedule(path) {
@@ -161,6 +163,7 @@ async function saveDraft(forceSave = false) {
161
163
  }
162
164
  catch (error) {
163
165
  sendUserToast(`Error while saving the flow as a draft: ${error.body || error.message}`, true);
166
+ dispatch('saveDraftError', error);
164
167
  }
165
168
  loadingDraft = false;
166
169
  }
@@ -271,6 +274,7 @@ async function saveFlow(deploymentMsg) {
271
274
  dispatch('deploy', $pathStore);
272
275
  }
273
276
  catch (err) {
277
+ dispatch('deployError', err);
274
278
  sendUserToast(`The flow could not be saved: ${err.body}`, true);
275
279
  loadingSave = false;
276
280
  }
@@ -827,6 +831,7 @@ $: $copilotCurrentStepStore === undefined && blurCopilot();
827
831
  let renderCount = 0;
828
832
  let flowTutorials = undefined;
829
833
  let jsonViewerDrawer = undefined;
834
+ let yamlEditorDrawer = undefined;
830
835
  let flowHistory = undefined;
831
836
  export function triggerTutorial() {
832
837
  const urlParams = new URLSearchParams(window.location.search);
@@ -860,6 +865,11 @@ function onCustomUiChange(customUi) {
860
865
  displayName: 'Export',
861
866
  icon: FileJson,
862
867
  action: () => jsonViewerDrawer?.openDrawer()
868
+ },
869
+ {
870
+ displayName: 'Edit in YAML',
871
+ icon: FileJson,
872
+ action: () => yamlEditorDrawer?.openDrawer()
863
873
  }
864
874
  ]
865
875
  : [])
@@ -879,6 +889,7 @@ let msgInput = undefined;
879
889
  {#if $pathStore}
880
890
  <FlowHistory bind:this={flowHistory} path={$pathStore} on:historyRestore />
881
891
  {/if}
892
+ <FlowYamlEditor bind:drawer={yamlEditorDrawer} />
882
893
  <FlowImportExportMenu bind:drawer={jsonViewerDrawer} />
883
894
  <FlowCopilotInputsModal
884
895
  on:confirmed={async () => {
@@ -903,7 +914,10 @@ let msgInput = undefined;
903
914
  <div transition:fade class="absolute inset-0 bg-gray-500 bg-opacity-75 z-[900] !m-0" />
904
915
  {/if}
905
916
  <div class="flex w-full max-w-md gap-4 items-center">
906
- <Summary bind:value={$flowStore.summary} />
917
+ <Summary
918
+ disabled={customUi?.topBar?.editableSummary == false}
919
+ bind:value={$flowStore.summary}
920
+ />
907
921
 
908
922
  <UndoRedo
909
923
  undoProps={{ disabled: $history.index === 0 }}
@@ -1048,7 +1062,7 @@ let msgInput = undefined;
1048
1062
  </div>
1049
1063
  </Button>
1050
1064
  {/if}
1051
- {#if customUi?.topBar?.aiBuilder != false}
1065
+ {#if !disableAi && customUi?.topBar?.aiBuilder != false}
1052
1066
  <FlowCopilotStatus
1053
1067
  {copilotLoading}
1054
1068
  bind:copilotStatus
@@ -1112,7 +1126,7 @@ let msgInput = undefined;
1112
1126
  <!-- metadata -->
1113
1127
  {#if $flowStateStore}
1114
1128
  <FlowEditor
1115
- enableAi={customUi?.stepInputs?.ai != false}
1129
+ disableAi={disableAi || customUi?.stepInputs?.ai == false}
1116
1130
  disableSettings={customUi?.settingsPanel === false}
1117
1131
  {loading}
1118
1132
  on:reload={() => {
@@ -19,6 +19,7 @@ declare const __propDef: {
19
19
  }) | undefined;
20
20
  diffDrawer?: DiffDrawer | undefined;
21
21
  customUi?: FlowBuilderWhitelabelCustomUi | undefined;
22
+ disableAi?: boolean | undefined;
22
23
  computeUnlockedSteps?: ((flow: Flow) => {
23
24
  [k: string]: string;
24
25
  }) | undefined;
@@ -30,7 +31,9 @@ declare const __propDef: {
30
31
  saveInitial: CustomEvent<any>;
31
32
  saveDraftOnlyAtNewPath: CustomEvent<any>;
32
33
  saveDraft: CustomEvent<any>;
34
+ saveDraftError: CustomEvent<any>;
33
35
  deploy: CustomEvent<any>;
36
+ deployError: CustomEvent<any>;
34
37
  details: CustomEvent<any>;
35
38
  } & {
36
39
  [evt: string]: CustomEvent<any>;
@@ -186,7 +186,7 @@ let codeViewer;
186
186
  </Button>
187
187
  </div>
188
188
  <iframe
189
- class="w-full grow text-sm"
189
+ class="w-full grow text-sm h-full"
190
190
  title="embedded script from hub"
191
191
  frameborder="0"
192
192
  src="{$hubBaseUrlStore}/embed/script/{stepDetail.value?.path?.substring(4)}"
@@ -11,6 +11,7 @@ export let hideFlowResult = false;
11
11
  export let hideTimeline = false;
12
12
  export let hideDownloadInGraph = false;
13
13
  export let hideNodeDefinition = false;
14
+ export let hideJobId = false;
14
15
  export let isOwner = false;
15
16
  export let wideResults = false;
16
17
  let lastJobId = jobId;
@@ -22,7 +23,8 @@ setContext('FlowStatusViewer', {
22
23
  retryStatus,
23
24
  hideDownloadInGraph,
24
25
  hideNodeDefinition,
25
- hideTimeline
26
+ hideTimeline,
27
+ hideJobId
26
28
  });
27
29
  function loadOwner(path) {
28
30
  isOwner = loadIsOwner(path, $userStore, workspaceId ?? $workspaceStore);
@@ -11,6 +11,7 @@ declare const __propDef: {
11
11
  hideTimeline?: boolean | undefined;
12
12
  hideDownloadInGraph?: boolean | undefined;
13
13
  hideNodeDefinition?: boolean | undefined;
14
+ hideJobId?: boolean | undefined;
14
15
  isOwner?: boolean | undefined;
15
16
  wideResults?: boolean | undefined;
16
17
  };
@@ -818,8 +818,11 @@ let wrapperHeight = 0;
818
818
  selectedNode = 'end'
819
819
  stepDetail = 'end'
820
820
  } else {
821
- selectedNode = e.detail
822
- stepDetail = e.detail
821
+ const mod = dfs(job?.raw_flow?.modules ?? [], (m) => m).find(
822
+ (m) => m?.id === e?.detail
823
+ )
824
+ stepDetail = mod
825
+ selectedNode = e?.detail
823
826
  }
824
827
  } else {
825
828
  stepDetail = e.detail
@@ -6,13 +6,9 @@ import { ArrowDown, Clipboard } from 'lucide-svelte';
6
6
  import YAML from 'yaml';
7
7
  import { yaml } from 'svelte-highlight/languages';
8
8
  import HighlightTheme from './HighlightTheme.svelte';
9
+ import { filteredContentForExport } from './flows/utils';
9
10
  export let flow;
10
- $: flowFiltered = {
11
- summary: flow.summary,
12
- description: flow.description,
13
- value: flow.value,
14
- schema: flow.schema
15
- };
11
+ $: flowFiltered = filteredContentForExport(flow);
16
12
  let rawType = 'yaml';
17
13
  function trimStringToLines(inputString, maxLines = 100) {
18
14
  const lines = inputString?.split('\n') ?? [];
@@ -57,7 +53,7 @@ let maxLines = 100;
57
53
  variant="border"
58
54
  size="xs"
59
55
  startIcon={{ icon: Clipboard }}
60
- btnClasses="absolute top-2 right-2 w-min"
56
+ btnClasses="absolute top-2 right-2 w-min z-20"
61
57
  >
62
58
  Copy content
63
59
  </Button>
@@ -1,33 +1,16 @@
1
- <script>import { Paintbrush } from 'lucide-svelte';
2
- import Button from './common/button/Button.svelte';
3
- import { formatOnSave } from '../stores';
4
- import Popover from './Popover.svelte';
5
- import { getLocalSetting, storeLocalSetting } from '../utils';
6
- import PaintbrushOff from './icons/PaintbrushOff.svelte';
7
- const SETTING_NAME = 'formatOnSave';
8
- function loadSetting() {
9
- $formatOnSave = (getLocalSetting(SETTING_NAME) ?? 'true') == 'true';
10
- }
1
+ <script>import { FORMAT_ON_SAVE_SETTING_NAME, formatOnSave } from '../stores';
2
+ import { storeLocalSetting } from '../utils';
3
+ import Toggle from './Toggle.svelte';
11
4
  function storeSetting() {
12
- $formatOnSave = !$formatOnSave;
13
- storeLocalSetting(SETTING_NAME, $formatOnSave.toString());
5
+ storeLocalSetting(FORMAT_ON_SAVE_SETTING_NAME, $formatOnSave.toString());
14
6
  }
15
- loadSetting();
16
7
  </script>
17
8
 
18
- <Popover>
19
- <svelte:fragment slot="text"
20
- >{$formatOnSave ? 'Disable' : 'Enable'} auto-formatting</svelte:fragment
21
- >
22
- <Button
23
- size="xs"
24
- color="light"
25
- startIcon={{
26
- icon: !$formatOnSave ? PaintbrushOff : Paintbrush
27
- }}
28
- btnClasses="text-tertiary"
29
- on:click={() => {
30
- storeSetting()
31
- }}
32
- />
33
- </Popover>
9
+ <Toggle
10
+ size="xs"
11
+ bind:checked={$formatOnSave}
12
+ on:change={() => {
13
+ storeSetting()
14
+ }}
15
+ options={{ right: 'auto-formatting' }}
16
+ />
@@ -1,6 +1,6 @@
1
1
  <script>import { BROWSER } from 'esm-env';
2
2
  import { editor as meditor } from 'monaco-editor';
3
- import 'monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution';
3
+ import '@codingame/monaco-vscode-standalone-languages';
4
4
  import { onDestroy, onMount } from 'svelte';
5
5
  let divEl = null;
6
6
  let editor;
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import 'monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution';
2
+ import '@codingame/monaco-vscode-standalone-languages';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  [x: string]: any;
@@ -8,6 +8,7 @@ import javascript from 'svelte-highlight/languages/javascript';
8
8
  import sql from 'svelte-highlight/languages/sql';
9
9
  import powershell from 'svelte-highlight/languages/powershell';
10
10
  import php from 'svelte-highlight/languages/php';
11
+ import rust from 'svelte-highlight/languages/rust';
11
12
  import { Button } from './common';
12
13
  import { copyToClipboard } from '../utils';
13
14
  import { ClipboardCopy } from 'lucide-svelte';
@@ -47,6 +48,8 @@ function getLang(lang) {
47
48
  return powershell;
48
49
  case 'php':
49
50
  return php;
51
+ case 'rust':
52
+ return rust;
50
53
  default:
51
54
  return typescript;
52
55
  }
@@ -0,0 +1,64 @@
1
+ <script>import { Pencil } from 'lucide-svelte';
2
+ import { createEventDispatcher } from 'svelte';
3
+ import Button from './common/button/Button.svelte';
4
+ import Popup from './common/popup/Popup.svelte';
5
+ import { offset, flip, shift } from 'svelte-floating-ui/dom';
6
+ import ChangeInstanceUsernameInner from './ChangeInstanceUsernameInner.svelte';
7
+ export let value;
8
+ export let email;
9
+ export let username = undefined;
10
+ export let automateUsernameCreation = false;
11
+ const dispatch = createEventDispatcher();
12
+ function save() {
13
+ dispatch('save', value);
14
+ }
15
+ </script>
16
+
17
+ <Popup
18
+ let:close
19
+ floatingConfig={{
20
+ strategy: 'fixed',
21
+ placement: 'left-end',
22
+ middleware: [offset(8), flip(), shift()]
23
+ }}
24
+ >
25
+ <svelte:fragment slot="button">
26
+ <Button nonCaptureEvent={true} size="xs" color="light" endIcon={{ icon: Pencil }}>Edit</Button>
27
+ </svelte:fragment>
28
+ <div class="flex flex-col gap-8 max-w-sm">
29
+ {#if automateUsernameCreation && username}
30
+ <ChangeInstanceUsernameInner {email} {username} on:renamed />
31
+ {/if}
32
+ <label class="block text-primary">
33
+ <div class="pb-1 text-xs text-secondary">Name</div>
34
+ <div class="flex w-full">
35
+ <input
36
+ type="text"
37
+ bind:value
38
+ class="!w-auto grow"
39
+ on:click|stopPropagation={() => {}}
40
+ on:keydown|stopPropagation
41
+ on:keypress|stopPropagation={({ key }) => {
42
+ if (key === 'Enter') {
43
+ save()
44
+ close(null)
45
+ }
46
+ }}
47
+ />
48
+ </div>
49
+ <Button
50
+ size="xs"
51
+ color="blue"
52
+ buttonType="button"
53
+ btnClasses="mt-2 "
54
+ aria-label="Save ID"
55
+ on:click={() => {
56
+ save()
57
+ close(null)
58
+ }}
59
+ >
60
+ Update name
61
+ </Button>
62
+ </label>
63
+ </div>
64
+ </Popup>
@@ -0,0 +1,23 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ value: string | undefined;
5
+ email: string;
6
+ username?: string | undefined;
7
+ automateUsernameCreation?: boolean | undefined;
8
+ };
9
+ events: {
10
+ renamed: CustomEvent<any>;
11
+ keydown: KeyboardEvent;
12
+ save: CustomEvent<any>;
13
+ } & {
14
+ [evt: string]: CustomEvent<any>;
15
+ };
16
+ slots: {};
17
+ };
18
+ export type InstanceNameEditorProps = typeof __propDef.props;
19
+ export type InstanceNameEditorEvents = typeof __propDef.events;
20
+ export type InstanceNameEditorSlots = typeof __propDef.slots;
21
+ export default class InstanceNameEditor extends SvelteComponent<InstanceNameEditorProps, InstanceNameEditorEvents, InstanceNameEditorSlots> {
22
+ }
23
+ export {};
@@ -248,11 +248,9 @@ function addItemByItemsType() {
248
248
  dispatch('focus')
249
249
  }}
250
250
  type="number"
251
- class={twMerge(
252
- valid && error == ''
253
- ? ''
254
- : 'border !border-red-700 !border-opacity-70 focus:!border-red-700 focus:!border-opacity-30'
255
- )}
251
+ class={valid && error == ''
252
+ ? ''
253
+ : 'border !border-red-700 !border-opacity-70 focus:!border-red-700 focus:!border-opacity-30'}
256
254
  placeholder={placeholder ?? defaultValue ?? ''}
257
255
  bind:value
258
256
  min={extra['min']}
@@ -264,12 +262,9 @@ function addItemByItemsType() {
264
262
  on:pointerdown={(e) => {
265
263
  e?.stopPropagation()
266
264
  }}
267
- class={twMerge(
268
- valid && error == ''
269
- ? ''
270
- : 'border !border-red-700 !border-opacity-70 focus:!border-red-700 focus:!border-opacity-30',
271
- 'w-full'
272
- )}
265
+ class={valid && error == ''
266
+ ? ''
267
+ : 'border !border-red-700 !border-opacity-70 focus:!border-red-700 focus:!border-opacity-30'}
273
268
  bind:checked={value}
274
269
  />
275
270
  {#if type == 'boolean' && value == undefined}