windmill-components 1.550.0 → 1.555.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 (268) hide show
  1. package/package/aiStore.d.ts +13 -0
  2. package/package/aiStore.js +70 -0
  3. package/package/common.d.ts +2 -1
  4. package/package/components/AIProviderPicker.svelte +25 -8
  5. package/package/components/ArgEnum.svelte +3 -2
  6. package/package/components/ArgEnum.svelte.d.ts +1 -0
  7. package/package/components/ArgInput.svelte +235 -174
  8. package/package/components/ArgInput.svelte.d.ts +4 -1
  9. package/package/components/ArrayTypeNarrowing.svelte +38 -32
  10. package/package/components/AutoscalingEvents.svelte +21 -5
  11. package/package/components/AutoscalingEvents.svelte.d.ts +4 -18
  12. package/package/components/DateTimeInput.svelte +8 -6
  13. package/package/components/DeployButton.svelte +1 -1
  14. package/package/components/Dev.svelte +6 -4
  15. package/package/components/EditableSchemaForm.svelte +7 -6
  16. package/package/components/Editor.svelte +2 -1
  17. package/package/components/EditorSettings.svelte +5 -5
  18. package/package/components/EditorSettings.svelte.d.ts +4 -18
  19. package/package/components/FakeMonacoPlaceHolder.svelte +4 -2
  20. package/package/components/FakeMonacoPlaceHolder.svelte.d.ts +1 -0
  21. package/package/components/FieldHeader.svelte +5 -7
  22. package/package/components/FirstStepInputs.svelte +1 -1
  23. package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
  24. package/package/components/FlowPlugConnect.svelte +8 -2
  25. package/package/components/FlowPlugConnect.svelte.d.ts +1 -0
  26. package/package/components/FlowPreviewContent.svelte +113 -92
  27. package/package/components/FlowPreviewContent.svelte.d.ts +3 -3
  28. package/package/components/FlowStatusViewer.svelte +3 -2
  29. package/package/components/FlowStatusViewerInner.svelte +1 -1
  30. package/package/components/FolderEditor.svelte +6 -7
  31. package/package/components/GroupEditor.svelte +148 -141
  32. package/package/components/GroupEditor.svelte.d.ts +5 -4
  33. package/package/components/InputTransformForm.svelte +88 -82
  34. package/package/components/InputTransformSchemaForm.svelte +5 -4
  35. package/package/components/InstanceSetting.svelte +17 -9
  36. package/package/components/JsonEditor.svelte +18 -9
  37. package/package/components/JsonEditor.svelte.d.ts +1 -1
  38. package/package/components/JsonInputs.svelte +1 -1
  39. package/package/components/ModulePreviewForm.svelte +23 -19
  40. package/package/components/NumberTypeNarrowing.svelte +32 -16
  41. package/package/components/ObjectStoreConfigSettings.svelte +27 -19
  42. package/package/components/Path.svelte +2 -8
  43. package/package/components/Path.svelte.d.ts +1 -1
  44. package/package/components/ResourceEditor.svelte +3 -10
  45. package/package/components/ResourcePicker.svelte +85 -72
  46. package/package/components/ResourcePicker.svelte.d.ts +2 -0
  47. package/package/components/RunChart.svelte +1 -1
  48. package/package/components/RunForm.svelte +11 -7
  49. package/package/components/S3ArrayHelperButton.svelte +12 -6
  50. package/package/components/S3ArrayHelperButton.svelte.d.ts +1 -0
  51. package/package/components/S3FilePicker.svelte +1 -1
  52. package/package/components/SchemaForm.svelte +18 -10
  53. package/package/components/SchemaForm.svelte.d.ts +7 -1
  54. package/package/components/SchemaFormWithArgPicker.svelte +1 -1
  55. package/package/components/ScriptBuilder.svelte +2 -2
  56. package/package/components/ScriptEditor.svelte +4 -3
  57. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  58. package/package/components/ShareModal.svelte +4 -4
  59. package/package/components/SimpleEditor.svelte +6 -2
  60. package/package/components/SimpleEditor.svelte.d.ts +3 -0
  61. package/package/components/StringTypeNarrowing.svelte +5 -1
  62. package/package/components/SuperadminSettingsInner.svelte +3 -3
  63. package/package/components/TemplateEditor.svelte +18 -9
  64. package/package/components/Toast.svelte +2 -7
  65. package/package/components/Toast.svelte.d.ts +4 -18
  66. package/package/components/Toggle.svelte +17 -7
  67. package/package/components/ToggleHubWorkspaceQuick.svelte +3 -3
  68. package/package/components/WorkerGroup.svelte +2 -14
  69. package/package/components/apps/components/buttons/AppButton.svelte +57 -39
  70. package/package/components/apps/components/display/dbtable/InsertRow.svelte +32 -2
  71. package/package/components/apps/components/display/dbtable/queries/insert.js +2 -1
  72. package/package/components/apps/components/display/dbtable/utils.d.ts +8 -8
  73. package/package/components/apps/components/display/table/utils.js +13 -3
  74. package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -3
  75. package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -1
  76. package/package/components/apps/editor/AppEditorHeader.svelte +33 -271
  77. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +233 -0
  78. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +18 -0
  79. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +47 -0
  80. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +8 -0
  81. package/package/components/apps/editor/GridEditor.svelte +7 -2
  82. package/package/components/apps/editor/appDeploy.svelte.d.ts +1 -0
  83. package/package/components/apps/editor/appDeploy.svelte.js +6 -0
  84. package/package/components/apps/editor/appUtils.d.ts +1 -0
  85. package/package/components/apps/editor/appUtils.js +30 -1
  86. package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -1
  87. package/package/components/apps/editor/component/components.d.ts +3 -3
  88. package/package/components/apps/editor/component/components.js +1 -1
  89. package/package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -1
  90. package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +6 -4
  91. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
  92. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
  93. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
  94. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +58 -8
  95. package/package/components/auditLogs/AuditLogsFilters.svelte +1 -1
  96. package/package/components/common/ResizeTransitionWrapper.svelte +39 -0
  97. package/package/components/common/ResizeTransitionWrapper.svelte.d.ts +12 -0
  98. package/package/components/common/badge/CountBadge.svelte +29 -0
  99. package/package/components/common/badge/CountBadge.svelte.d.ts +8 -0
  100. package/package/components/common/button/Button.svelte +1 -0
  101. package/package/components/common/button/ConnectionButton.svelte +6 -1
  102. package/package/components/common/button/ConnectionButton.svelte.d.ts +2 -0
  103. package/package/components/common/button/RefreshButton.svelte +8 -4
  104. package/package/components/common/button/RefreshButton.svelte.d.ts +3 -0
  105. package/package/components/common/calendarPicker/CalendarPicker.svelte +1 -1
  106. package/package/components/common/fileInput/FileInput.svelte +7 -6
  107. package/package/components/common/fileUpload/S3ArgInput.svelte +11 -9
  108. package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +1 -0
  109. package/package/components/common/popup/PopupV2.svelte +6 -0
  110. package/package/components/common/toggleButton-v2/ToggleButton.svelte +17 -26
  111. package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +16 -30
  112. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +1 -1
  113. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +3 -3
  114. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
  115. package/package/components/copilot/CodeCompletionStatus.svelte +2 -1
  116. package/package/components/copilot/CronGen.svelte +1 -1
  117. package/package/components/copilot/FlowInlineScriptAIButton.svelte +2 -2
  118. package/package/components/copilot/IteratorGen.svelte +30 -25
  119. package/package/components/copilot/IteratorGen.svelte.d.ts +8 -7
  120. package/package/components/copilot/MetadataGen.svelte +4 -3
  121. package/package/components/copilot/PredicateGen.svelte +15 -12
  122. package/package/components/copilot/PredicateGen.svelte.d.ts +5 -4
  123. package/package/components/copilot/RegexGen.svelte +1 -1
  124. package/package/components/copilot/ScriptFix.svelte +1 -1
  125. package/package/components/copilot/ScriptGen.svelte +2 -1
  126. package/package/components/copilot/StepGenQuick.svelte +15 -16
  127. package/package/components/copilot/StepGenQuick.svelte.d.ts +14 -13
  128. package/package/components/copilot/StepInputGen.svelte +50 -36
  129. package/package/components/copilot/StepInputGen.svelte.d.ts +13 -10
  130. package/package/components/copilot/StepInputsGen.svelte +18 -19
  131. package/package/components/copilot/StepInputsGen.svelte.d.ts +4 -18
  132. package/package/components/copilot/autocomplete/Autocompletor.js +1 -1
  133. package/package/components/copilot/autocomplete/request.js +1 -1
  134. package/package/components/copilot/chat/AIChat.svelte +2 -1
  135. package/package/components/copilot/chat/AIChatManager.svelte.js +2 -1
  136. package/package/components/copilot/chat/AiChatLayout.svelte +2 -1
  137. package/package/components/copilot/chat/ProviderModelSelector.svelte +10 -9
  138. package/package/components/copilot/chat/ProviderModelSelector.svelte.d.ts +2 -17
  139. package/package/components/copilot/chat/flow/FlowAIButton.svelte +1 -1
  140. package/package/components/copilot/chat/script/core.js +2 -1
  141. package/package/components/copilot/chat/shared.js +2 -1
  142. package/package/components/copilot/lib.js +2 -1
  143. package/package/components/details/DetailPageLayout.svelte +3 -2
  144. package/package/components/details/DetailPageLayout.svelte.d.ts +1 -0
  145. package/package/components/flows/CreateActionsFlow.svelte +1 -1
  146. package/package/components/flows/FlowChatInterface.svelte +404 -0
  147. package/package/components/flows/FlowChatInterface.svelte.d.ts +19 -0
  148. package/package/components/flows/FlowChatMessage.svelte +41 -0
  149. package/package/components/flows/FlowChatMessage.svelte.d.ts +9 -0
  150. package/package/components/flows/FlowConversationsSidebar.svelte +213 -0
  151. package/package/components/flows/FlowConversationsSidebar.svelte.d.ts +15 -0
  152. package/package/components/flows/FlowEditor.svelte.d.ts +1 -1
  153. package/package/components/flows/FlowModuleIcon.svelte +10 -10
  154. package/package/components/flows/common/FlowCard.svelte +10 -2
  155. package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
  156. package/package/components/flows/common/FlowCardHeader.svelte +2 -1
  157. package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
  158. package/package/components/flows/content/DynamicInputHelpBox.svelte +4 -4
  159. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -1
  160. package/package/components/flows/content/FlowInput.svelte +381 -259
  161. package/package/components/flows/content/FlowInput.svelte.d.ts +1 -1
  162. package/package/components/flows/content/FlowInputsQuick.svelte +55 -34
  163. package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +2 -2
  164. package/package/components/flows/content/FlowModuleComponent.svelte +5 -10
  165. package/package/components/flows/flowInfers.d.ts +60 -0
  166. package/package/components/flows/flowInfers.js +72 -66
  167. package/package/components/flows/{flowStore.d.ts → flowStore.svelte.d.ts} +1 -0
  168. package/package/components/flows/header/FlowPreviewButtons.svelte +1 -1
  169. package/package/components/flows/map/FlowErrorHandlerItem.svelte +4 -2
  170. package/package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -0
  171. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
  172. package/package/components/flows/map/FlowModuleSchemaMap.svelte +5 -2
  173. package/package/components/flows/map/FlowStickyNode.svelte +2 -2
  174. package/package/components/flows/map/FlowStickyNode.svelte.d.ts +1 -0
  175. package/package/components/flows/map/InsertModuleButton.svelte +5 -2
  176. package/package/components/flows/map/InsertModuleButton.svelte.d.ts +4 -3
  177. package/package/components/flows/map/InsertModuleInner.svelte +3 -1
  178. package/package/components/flows/map/InsertModuleInner.svelte.d.ts +2 -2
  179. package/package/components/flows/map/VirtualItem.svelte +1 -2
  180. package/package/components/flows/pickers/PickHubScriptQuick.svelte +8 -3
  181. package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
  182. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +15 -12
  183. package/package/components/flows/propPicker/PropPickerWrapper.svelte +1 -15
  184. package/package/components/graph/FlowGraphV2.svelte +2 -1
  185. package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
  186. package/package/components/graph/graphBuilder.svelte.d.ts +2 -0
  187. package/package/components/graph/graphBuilder.svelte.js +1 -0
  188. package/package/components/graph/renderers/edges/BaseEdge.svelte +1 -0
  189. package/package/components/graph/renderers/nodes/InputNode.svelte +13 -2
  190. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +2 -27
  191. package/package/components/instanceSettings.js +17 -0
  192. package/package/components/progressBar/ProgressBar.svelte +1 -1
  193. package/package/components/raw_apps/FileEditorIcon.svelte +1 -1
  194. package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +4 -18
  195. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +2 -8
  196. package/package/components/raw_apps/RawAppBackgroundRunner.svelte.d.ts +4 -18
  197. package/package/components/raw_apps/RawAppEditor.svelte +6 -7
  198. package/package/components/raw_apps/RawAppEditorHeader.svelte +48 -301
  199. package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +18 -19
  200. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +10 -16
  201. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +13 -13
  202. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +8 -11
  203. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -2
  204. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +0 -1
  205. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +7 -13
  206. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +8 -8
  207. package/package/components/raw_apps/RawAppPreview.svelte +3 -7
  208. package/package/components/raw_apps/RawAppPreview.svelte.d.ts +5 -19
  209. package/package/components/raw_apps/utils.d.ts +1 -1
  210. package/package/components/raw_apps/utils.js +3 -3
  211. package/package/components/runs/RunOption.svelte +2 -2
  212. package/package/components/runs/RunsFilter.svelte +15 -12
  213. package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
  214. package/package/components/schema/EditableSchemaDrawer.svelte +19 -18
  215. package/package/components/schema/FlowPropertyEditor.svelte +9 -2
  216. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
  217. package/package/components/schema/PropertyEditor.svelte +22 -26
  218. package/package/components/schema/SchemaFormDND.svelte +3 -2
  219. package/package/components/schema/SchemaFormDND.svelte.d.ts +1 -0
  220. package/package/components/select/DraggableTags.svelte +2 -2
  221. package/package/components/select/MultiSelect.svelte +14 -8
  222. package/package/components/select/Select.svelte +12 -5
  223. package/package/components/select/Select.svelte.d.ts +11 -0
  224. package/package/components/select/SelectDropdown.svelte +98 -46
  225. package/package/components/select/SelectDropdown.svelte.d.ts +10 -0
  226. package/package/components/select/utils.svelte.js +2 -0
  227. package/package/components/settings/CreateToken.svelte +76 -49
  228. package/package/components/settings/WorkspaceUserSettings.svelte +20 -17
  229. package/package/components/sidebar/CriticalAlertTable.svelte +2 -1
  230. package/package/components/sidebar/Linkify.svelte +14 -0
  231. package/package/components/sidebar/Linkify.svelte.d.ts +5 -0
  232. package/package/components/sidebar/WorkspaceMenu.svelte +8 -3
  233. package/package/components/table/tableUtils.js +1 -1
  234. package/package/components/text_input/TextInput.svelte +30 -0
  235. package/package/components/text_input/TextInput.svelte.d.ts +17 -0
  236. package/package/components/triggers/TriggersEditor.svelte +11 -1
  237. package/package/components/triggers/triggers.svelte.d.ts +1 -1
  238. package/package/components/triggers/triggers.svelte.js +8 -4
  239. package/package/components/tutorials/FlowBuilderTutorialErrorHandler.svelte +2 -2
  240. package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +3 -0
  241. package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +49 -17
  242. package/package/components/tutorials/Tutorial.svelte +9 -0
  243. package/package/components/tutorials/Tutorial.svelte.d.ts +1 -0
  244. package/package/components/tutorials/app/AppTutorial.svelte +41 -57
  245. package/package/components/tutorials/app/BackgroundRunnablesTutorial.svelte +3 -5
  246. package/package/components/tutorials/app/ConnectionTutorial.svelte +2 -2
  247. package/package/components/tutorials/utils.js +2 -154
  248. package/package/components/vscode.js +16 -8
  249. package/package/components/workspaceSettings/AISettings.svelte +4 -3
  250. package/package/components/workspaceSettings/CreateWorkspace.svelte +2 -2
  251. package/package/components/workspaceSettings/DucklakeSettings.svelte +64 -7
  252. package/package/components/workspaceSettings/StorageSettings.svelte +24 -26
  253. package/package/editorUtils.d.ts +1 -1
  254. package/package/gen/core/OpenAPI.js +1 -1
  255. package/package/gen/schemas.gen.d.ts +82 -1
  256. package/package/gen/schemas.gen.js +82 -1
  257. package/package/gen/services.gen.d.ts +175 -1
  258. package/package/gen/services.gen.js +345 -2
  259. package/package/gen/types.gen.d.ts +1324 -549
  260. package/package/script_helpers.js +5 -5
  261. package/package/services/JobManager.js +4 -2
  262. package/package/stores.d.ts +4 -13
  263. package/package/stores.js +5 -68
  264. package/package/toast.js +2 -1
  265. package/package/utils.d.ts +1 -0
  266. package/package/utils.js +3 -0
  267. package/package.json +3 -3
  268. /package/package/components/flows/{flowStore.js → flowStore.svelte.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">import { GranularAclService, GroupService, UserService } from '../gen';
2
2
  import { userStore, workspaceStore } from '../stores';
3
- import { createEventDispatcher } from 'svelte';
3
+ import { createEventDispatcher, untrack } from 'svelte';
4
4
  import { Button } from './common';
5
5
  import Skeleton from './common/skeleton/Skeleton.svelte';
6
6
  import TableCustom from './TableCustom.svelte';
@@ -12,23 +12,18 @@ import Section from './Section.svelte';
12
12
  import Label from './Label.svelte';
13
13
  import Select from './select/Select.svelte';
14
14
  import { safeSelectItems } from './select/utils.svelte';
15
- export let name;
16
- let can_write = false;
15
+ let { name } = $props();
16
+ let can_write = $state(false);
17
17
  let group;
18
- let instance_group;
19
- let members = undefined;
20
- let usernames = [];
21
- let username = '';
22
- let summary = '';
18
+ let instance_group = $state();
19
+ let members = $state(undefined);
20
+ let usernames = $state([]);
21
+ let username = $state('');
22
+ let summary = $state('');
23
23
  const dispatch = createEventDispatcher();
24
24
  async function loadUsernames() {
25
25
  usernames = await UserService.listUsernames({ workspace: $workspaceStore });
26
26
  }
27
- $: {
28
- if ($workspaceStore && $userStore) {
29
- load();
30
- }
31
- }
32
27
  async function load() {
33
28
  return Promise.all([loadGroup(), loadInstanceGroup(), loadUsernames()]);
34
29
  }
@@ -85,6 +80,13 @@ function getRole(x) {
85
80
  return 'member';
86
81
  }
87
82
  }
83
+ $effect.pre(() => {
84
+ if ($workspaceStore && $userStore) {
85
+ untrack(() => {
86
+ load();
87
+ });
88
+ }
89
+ });
88
90
  </script>
89
91
 
90
92
  <Section label="Metadata" class="mb-4">
@@ -119,150 +121,155 @@ function getRole(x) {
119
121
  {/if}
120
122
  {#if members}
121
123
  <TableCustom>
124
+ <!-- @migration-task: migrate this slot by hand, `header-row` is an invalid identifier -->
122
125
  <tr slot="header-row">
123
126
  <th>user</th>
124
127
  <th></th>
125
128
  <th></th>
126
129
  </tr>
127
- <tbody slot="body">
128
- {#each members as { member_name, role }}<tr>
129
- <td>{member_name}</td>
130
- <td>
131
- {#if can_write}
132
- <div>
133
- <ToggleButtonGroup
134
- selected={role}
135
- on:selected={async (e) => {
136
- const role = e.detail
137
- // const wasInGroup = (group?.members ?? []).includes(group)
138
- // const inAcl = (
139
- // group?.extra_perms ? Object.keys(group?.extra_perms) : []
140
- // ).includes(group)
141
- if (role == 'member') {
142
- await GroupService.addUserToGroup({
143
- workspace: $workspaceStore ?? '',
144
- name,
145
- requestBody: {
146
- username: member_name
147
- }
148
- })
149
- await GranularAclService.removeGranularAcls({
150
- workspace: $workspaceStore ?? '',
151
- path: name,
152
- kind: 'group_',
153
- requestBody: {
154
- owner: 'u/' + member_name
155
- }
156
- })
157
- } else if (role == 'manager') {
158
- await GroupService.removeUserToGroup({
159
- workspace: $workspaceStore ?? '',
160
- name,
161
- requestBody: {
162
- username: member_name
163
- }
164
- })
165
- await GranularAclService.addGranularAcls({
166
- workspace: $workspaceStore ?? '',
167
- path: name,
168
- kind: 'group_',
169
- requestBody: {
170
- owner: 'u/' + member_name,
171
- write: true
172
- }
173
- })
174
- } else if (role == 'admin') {
175
- await GroupService.addUserToGroup({
176
- workspace: $workspaceStore ?? '',
177
- name,
178
- requestBody: {
179
- username: member_name
180
- }
181
- })
182
- await GranularAclService.addGranularAcls({
183
- workspace: $workspaceStore ?? '',
184
- path: name,
185
- kind: 'group_',
186
- requestBody: {
187
- owner: 'u/' + member_name,
188
- write: true
189
- }
190
- })
191
- }
192
- loadGroup()
193
- }}
194
- >
195
- {#snippet children({ item })}
196
- <ToggleButton
197
- value="member"
198
- size="xs"
199
- label="Member"
200
- tooltip="A Member of a group can see everything the group can see, write to everything the group can write, and generally act on behalf of the group"
201
- {item}
202
- />
203
- <ToggleButton
204
- position="right"
205
- value="admin"
206
- size="xs"
207
- label="Admin"
208
- tooltip="An admin of a group is a member of a group that can also add and remove members to the group, or make them admin."
209
- {item}
210
- />
211
- {#if role === 'manager'}
130
+ {#snippet body()}
131
+ <tbody>
132
+ {#each members ?? [] as { member_name, role }}<tr>
133
+ <td>{member_name}</td>
134
+ <td>
135
+ {#if can_write}
136
+ <div>
137
+ <ToggleButtonGroup
138
+ selected={role}
139
+ on:selected={async (e) => {
140
+ const role = e.detail
141
+ // const wasInGroup = (group?.members ?? []).includes(group)
142
+ // const inAcl = (
143
+ // group?.extra_perms ? Object.keys(group?.extra_perms) : []
144
+ // ).includes(group)
145
+ if (role == 'member') {
146
+ await GroupService.addUserToGroup({
147
+ workspace: $workspaceStore ?? '',
148
+ name,
149
+ requestBody: {
150
+ username: member_name
151
+ }
152
+ })
153
+ await GranularAclService.removeGranularAcls({
154
+ workspace: $workspaceStore ?? '',
155
+ path: name,
156
+ kind: 'group_',
157
+ requestBody: {
158
+ owner: 'u/' + member_name
159
+ }
160
+ })
161
+ } else if (role == 'manager') {
162
+ await GroupService.removeUserToGroup({
163
+ workspace: $workspaceStore ?? '',
164
+ name,
165
+ requestBody: {
166
+ username: member_name
167
+ }
168
+ })
169
+ await GranularAclService.addGranularAcls({
170
+ workspace: $workspaceStore ?? '',
171
+ path: name,
172
+ kind: 'group_',
173
+ requestBody: {
174
+ owner: 'u/' + member_name,
175
+ write: true
176
+ }
177
+ })
178
+ } else if (role == 'admin') {
179
+ await GroupService.addUserToGroup({
180
+ workspace: $workspaceStore ?? '',
181
+ name,
182
+ requestBody: {
183
+ username: member_name
184
+ }
185
+ })
186
+ await GranularAclService.addGranularAcls({
187
+ workspace: $workspaceStore ?? '',
188
+ path: name,
189
+ kind: 'group_',
190
+ requestBody: {
191
+ owner: 'u/' + member_name,
192
+ write: true
193
+ }
194
+ })
195
+ }
196
+ loadGroup()
197
+ }}
198
+ >
199
+ {#snippet children({ item })}
212
200
  <ToggleButton
213
- value="manager"
214
- size="xs"
215
- label="Manager"
216
- tooltip="A manager of a group can manage the group, adding and removing users and
217
- change their roles. Being a manager does not make you a member"
201
+ value="member"
202
+ small
203
+ label="Member"
204
+ tooltip="A Member of a group can see everything the group can see, write to everything the group can write, and generally act on behalf of the group"
218
205
  {item}
219
206
  />
220
- {/if}
221
- {/snippet}
222
- </ToggleButtonGroup>
223
- </div>
224
- {:else}
225
- {role}
226
- {/if}</td
227
- >
228
- <td>
229
- {#if can_write}
230
- <button
231
- class="ml-2 text-red-500"
232
- on:click={async () => {
233
- await GroupService.removeUserToGroup({
234
- workspace: $workspaceStore ?? '',
235
- name,
236
- requestBody: { username: member_name }
237
- })
238
- await GranularAclService.removeGranularAcls({
239
- workspace: $workspaceStore ?? '',
240
- path: name,
241
- kind: 'group_',
242
- requestBody: {
243
- owner: 'u/' + member_name
244
- }
245
- })
246
- loadGroup()
247
- }}>remove</button
248
- >
249
- {/if}</td
250
- >
251
- </tr>{/each}
252
- </tbody>
207
+ <ToggleButton
208
+ value="admin"
209
+ small
210
+ label="Admin"
211
+ tooltip="An admin of a group is a member of a group that can also add and remove members to the group, or make them admin."
212
+ {item}
213
+ />
214
+ {#if role === 'manager'}
215
+ <ToggleButton
216
+ value="manager"
217
+ small
218
+ label="Manager"
219
+ tooltip="A manager of a group can manage the group, adding and removing users and
220
+ change their roles. Being a manager does not make you a member"
221
+ {item}
222
+ />
223
+ {/if}
224
+ {/snippet}
225
+ </ToggleButtonGroup>
226
+ </div>
227
+ {:else}
228
+ {role}
229
+ {/if}</td
230
+ >
231
+ <td>
232
+ {#if can_write}
233
+ <button
234
+ class="ml-2 text-red-500"
235
+ onclick={async () => {
236
+ await GroupService.removeUserToGroup({
237
+ workspace: $workspaceStore ?? '',
238
+ name,
239
+ requestBody: { username: member_name }
240
+ })
241
+ await GranularAclService.removeGranularAcls({
242
+ workspace: $workspaceStore ?? '',
243
+ path: name,
244
+ kind: 'group_',
245
+ requestBody: {
246
+ owner: 'u/' + member_name
247
+ }
248
+ })
249
+ loadGroup()
250
+ }}>remove</button
251
+ >
252
+ {/if}</td
253
+ >
254
+ </tr>{/each}
255
+ </tbody>
256
+ {/snippet}
253
257
  </TableCustom>
254
258
 
255
259
  {#if instance_group?.emails}
256
260
  <h2 class="mt-10">Members from the instance group</h2>
257
261
  <TableCustom>
262
+ <!-- @migration-task: migrate this slot by hand, `header-row` is an invalid identifier -->
258
263
  <tr slot="header-row">
259
264
  <th>user</th>
260
265
  </tr>
261
- <tbody slot="body">
262
- {#each instance_group?.emails ?? [] as email}<tr>
263
- <td>{email}</td>
264
- </tr>{/each}
265
- </tbody>
266
+ {#snippet body()}
267
+ <tbody>
268
+ {#each instance_group?.emails ?? [] as email}<tr>
269
+ <td>{email}</td>
270
+ </tr>{/each}
271
+ </tbody>
272
+ {/snippet}
266
273
  </TableCustom>
267
274
  {/if}
268
275
  {:else}
@@ -1,3 +1,6 @@
1
+ interface Props {
2
+ name: string;
3
+ }
1
4
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
5
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
6
  $$bindings?: Bindings;
@@ -11,12 +14,10 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
11
14
  };
12
15
  z_$$bindings?: Bindings;
13
16
  }
14
- declare const GroupEditor: $$__sveltets_2_IsomorphicComponent<{
15
- name: string;
16
- }, {
17
+ declare const GroupEditor: $$__sveltets_2_IsomorphicComponent<Props, {
17
18
  update: CustomEvent<any>;
18
19
  } & {
19
20
  [evt: string]: CustomEvent<any>;
20
- }, {}, {}, string>;
21
+ }, {}, {}, "">;
21
22
  type GroupEditor = InstanceType<typeof GroupEditor>;
22
23
  export default GroupEditor;
@@ -18,7 +18,6 @@ import { Button } from './common';
18
18
  import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
19
19
  import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
20
20
  import { tick } from 'svelte';
21
- import { fade } from 'svelte/transition';
22
21
  import { buildPrefixRegex } from './flows/previousResults';
23
22
  import TemplateEditor from './TemplateEditor.svelte';
24
23
  import { setInputCat as computeInputCat, isCodeInjection } from '../utils';
@@ -29,6 +28,7 @@ import { twMerge } from 'tailwind-merge';
29
28
  import FlowPlugConnect from './FlowPlugConnect.svelte';
30
29
  import { deepEqual } from 'fast-equals';
31
30
  import S3ArrayHelperButton from './S3ArrayHelperButton.svelte';
31
+ import { inputBorderClass } from './text_input/TextInput.svelte';
32
32
  let { schema = $bindable(), arg = $bindable(), argName = $bindable(), headerTooltip = undefined, headerTooltipIconClass = '', HeaderTooltipIcon = InfoIcon, extraLib = $bindable('missing extraLib'), inputCheck = $bindable(true), previousModuleId, pickForField = $bindable(undefined), variableEditor = undefined, itemPicker = undefined, noDynamicToggle = false, argExtra = {}, pickableProperties = undefined, enableAi = false, hideHelpButton = false, class: className = '', editor = $bindable(undefined), otherArgs = {}, helperScript = undefined } = $props();
33
33
  let monaco = $state(undefined);
34
34
  let monacoTemplate = $state(undefined);
@@ -347,18 +347,10 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
347
347
  ['s3object', 's3_object'].includes(schema?.properties?.[argName]?.items?.resourceType));
348
348
  </script>
349
349
 
350
- {#if arg != undefined && !hidden}
351
- <div
352
- class={twMerge(
353
- 'pl-2 pt-2 pb-2 ml-2 relative hover:bg-surface hover:shadow-md transition-all duration-200',
354
- $propPickerConfig?.propName == argName
355
- ? 'bg-surface border-l-4 border-blue-500 shadow-md rounded-l-md z-50 '
356
- : 'hover:rounded-md',
357
- className
358
- )}
359
- >
360
- <div class="flex flex-row justify-between gap-1 pb-1 px-2">
361
- <div class="flex flex-wrap grow">
350
+ {#if arg != undefined}
351
+ <div class={twMerge('pt-2 pb-2 relative group', className)}>
352
+ <div class="flex flex-row justify-between gap-1 pb-1">
353
+ <div class="flex flex-wrap grow min-h-7 items-end">
362
354
  <FieldHeader
363
355
  label={argName}
364
356
  simpleTooltip={headerTooltip}
@@ -373,7 +365,7 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
373
365
  {#if isStaticTemplate(inputCat)}
374
366
  <div>
375
367
  <span
376
- class="bg-blue-100 text-blue-800 text-sm font-medium mr-2 px-2.5 !py-0.5 rounded ml-2 {propertyType ==
368
+ class="border text-gray-400 dark:text-gray-500 text-2xs font-medium mr-2 px-1 !py-[1px] rounded ml-2.5 {propertyType ==
377
369
  'static' && arg.type === 'javascript'
378
370
  ? 'visible'
379
371
  : 'invisible'}"
@@ -384,7 +376,9 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
384
376
  {/if}
385
377
  </div>
386
378
  {#if !noDynamicToggle}
387
- <div class="flex flex-row gap-x-2 gap-y-1 flex-wrap z-10 items-center">
379
+ <div
380
+ class="flex flex-row gap-x-2 z-10 absolute right-0 group-hover:bg-surface transition-colors"
381
+ >
388
382
  {#if enableAi}
389
383
  <StepInputGen
390
384
  bind:this={stepInputGen}
@@ -413,8 +407,40 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
413
407
  }}
414
408
  {pickableProperties}
415
409
  {argName}
410
+ btnClass={twMerge(
411
+ 'h-6 min-w-8 px-2',
412
+ 'group-hover:opacity-100 transition-opacity',
413
+ !connecting ? 'opacity-0' : ''
414
+ )}
416
415
  />
417
416
  {/if}
417
+
418
+ {#if propPickerWrapperContext}
419
+ <FlowPlugConnect
420
+ wrapperClasses={twMerge(
421
+ connecting ? 'h-5 w-7' : 'h-6 w-8',
422
+ 'group-hover:opacity-100 transition-opacity p-0',
423
+ !connecting ? 'opacity-0' : ''
424
+ )}
425
+ id="flow-editor-plug"
426
+ {connecting}
427
+ on:click={() => {
428
+ if (
429
+ $propPickerConfig?.propName == argName &&
430
+ $propPickerConfig?.insertionMode == 'connect'
431
+ ) {
432
+ clearFocus()
433
+ } else {
434
+ focusProp?.(argName, 'connect', (path) => {
435
+ connectProperty(path)
436
+ dispatch('change', { argName })
437
+ return true
438
+ })
439
+ }
440
+ }}
441
+ />
442
+ {/if}
443
+
418
444
  <div>
419
445
  <ToggleButtonGroup
420
446
  selected={propertyType}
@@ -470,19 +496,20 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
470
496
  propertyType = 'static'
471
497
  }
472
498
  }}
499
+ class="h-6"
473
500
  >
474
501
  {#snippet children({ item })}
475
502
  {#if isStaticTemplate(inputCat)}
476
503
  <ToggleButton
477
- tooltip={`Write text or surround javascript with \`\$\{\` and \`\}\`. Use \`results\` to connect to another node\'s output.`}
478
504
  light
505
+ small
506
+ tooltip={`Write text or surround javascript with \`\$\{\` and \`\}\`. Use \`results\` to connect to another node\'s output.`}
479
507
  value="static"
480
- size="xs2"
481
508
  label={'${}'}
482
509
  {item}
483
510
  />
484
511
  {:else}
485
- <ToggleButton small label="Static" value="static" {item} />
512
+ <ToggleButton light small label="static" value="static" {item} />
486
513
  {/if}
487
514
 
488
515
  {#if codeInjectionDetected && propertyType == 'static'}
@@ -511,27 +538,6 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
511
538
  {/snippet}
512
539
  </ToggleButtonGroup>
513
540
  </div>
514
-
515
- {#if propPickerWrapperContext && inputCat !== 'dynamic'}
516
- <FlowPlugConnect
517
- id="flow-editor-plug"
518
- {connecting}
519
- on:click={() => {
520
- if (
521
- $propPickerConfig?.propName == argName &&
522
- $propPickerConfig?.insertionMode == 'connect'
523
- ) {
524
- clearFocus()
525
- } else {
526
- focusProp?.(argName, 'connect', (path) => {
527
- connectProperty(path)
528
- dispatch('change', { argName })
529
- return true
530
- })
531
- }
532
- }}
533
- />
534
- {/if}
535
541
  </div>
536
542
  {/if}
537
543
  </div>
@@ -551,12 +557,7 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
551
557
  <div class="relative flex flex-row items-top gap-2 justify-between">
552
558
  <div class="min-w-0 grow">
553
559
  {#if isStaticTemplate(inputCat) && propertyType == 'static' && !noDynamicToggle}
554
- {#if argName && schema?.properties?.[argName]?.description}
555
- <div class="text-xs italic pb-1 text-secondary">
556
- <pre class="font-main">{schema.properties[argName].description}</pre>
557
- </div>
558
- {/if}
559
- <div class="mt-2 min-h-[28px]">
560
+ <div>
560
561
  {#if arg}
561
562
  <TemplateEditor
562
563
  bind:this={monacoTemplate}
@@ -571,8 +572,16 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
571
572
  dispatch('change', { argName, arg })
572
573
  }}
573
574
  loadAsync
575
+ class="bg-surface-secondary"
574
576
  />
575
577
  {/if}
578
+ {#if argName && schema?.properties?.[argName]?.description}
579
+ <div class="text-xs italic py-1 text-hint">
580
+ <pre class="font-main whitespace-normal"
581
+ >{schema.properties[argName].description}</pre
582
+ >
583
+ </div>
584
+ {/if}
576
585
  </div>
577
586
  {:else if (propertyType === undefined || propertyType == 'static') && schema?.properties?.[argName]}
578
587
  <ArgInput
@@ -620,23 +629,31 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
620
629
  transform?.type === 'static' ? transform.value : transform?.expr
621
630
  ])
622
631
  )}
623
- />
624
-
625
- {#if shouldShowS3ArrayHelper}
626
- <S3ArrayHelperButton
627
- {connecting}
628
- onClick={() =>
629
- switchToJsAndConnect((path) => appendPathToArrayExpr(arg.expr, path))}
630
- />
631
- {/if}
632
+ >
633
+ {#snippet innerBottomSnippet()}
634
+ {#if shouldShowS3ArrayHelper}
635
+ <S3ArrayHelperButton
636
+ {connecting}
637
+ onClick={() =>
638
+ switchToJsAndConnect((path) => appendPathToArrayExpr(arg.expr, path))}
639
+ />
640
+ {/if}
641
+ {/snippet}
642
+ </ArgInput>
632
643
  {:else if arg.expr != undefined}
633
- <div class="border mt-2">
644
+ <div
645
+ class={`bg-surface-secondary rounded-md flex flex-col pl-4 ${inputBorderClass({ forceFocus: focused })}`}
646
+ >
634
647
  <SimpleEditor
635
648
  bind:this={monaco}
636
649
  bind:code={arg.expr}
650
+ yPadding={8}
637
651
  {extraLib}
638
652
  lang="javascript"
639
653
  shouldBindKey={false}
654
+ renderLineHighlight="none"
655
+ hideLineNumbers
656
+ fakeMonacoPlaceholderClass="mt-2"
640
657
  on:focus={() => {
641
658
  focused = true
642
659
  focusProp?.(argName, 'insert', (path) => {
@@ -655,12 +672,10 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
655
672
  />
656
673
  <!-- <input type="text" bind:value={arg.expr} /> -->
657
674
  </div>
658
- {#if !hideHelpButton}
659
- <DynamicInputHelpBox />
660
- {/if}
661
675
 
662
676
  {#if shouldShowS3ArrayHelper}
663
677
  <S3ArrayHelperButton
678
+ class="mt-2"
664
679
  {connecting}
665
680
  onClick={() =>
666
681
  focusProp?.(argName, 'connect', (path) => {
@@ -670,9 +685,23 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
670
685
  />
671
686
  {/if}
672
687
 
688
+ {#if argName && schema?.properties?.[argName]?.description}
689
+ <div class="text-xs italic py-1 text-hint">
690
+ <pre class="font-main whitespace-normal"
691
+ >{schema.properties[argName].description}</pre
692
+ >
693
+ </div>
694
+ {/if}
695
+
696
+ {#if !hideHelpButton}
697
+ <DynamicInputHelpBox />
698
+ {/if}
699
+
673
700
  <div class="mb-2"></div>
674
701
  {:else}
675
- Not recognized input type {argName} ({arg.expr}, {propertyType})
702
+ <span class="text-xs text-red-500">
703
+ Not recognized input type {argName} ({arg.expr}, {propertyType})
704
+ </span>
676
705
  <div class="flex mt-2">
677
706
  <Button
678
707
  variant="border"
@@ -684,29 +713,6 @@ let shouldShowS3ArrayHelper = $derived(inputCat === 'list' &&
684
713
  >
685
714
  {/if}
686
715
  </div>
687
-
688
- {#if $propPickerConfig?.propName == argName}
689
- <div
690
- class="text-blue-500 absolute top-2 lg:-right-2.5 -right-1"
691
- in:fade={{ duration: 200 }}
692
- >
693
- <svg
694
- xmlns="http://www.w3.org/2000/svg"
695
- width="16"
696
- height="24"
697
- viewBox="0 0 24 24"
698
- fill="currentColor"
699
- stroke="currentColor"
700
- stroke-width="2"
701
- stroke-linecap="round"
702
- stroke-linejoin="round"
703
- >
704
- <polyline points="24 24 12 12 24 0" />
705
- </svg>
706
- </div>
707
- {:else}
708
- <div class="w-0"></div>
709
- {/if}
710
716
  </div>
711
717
  </div>
712
718
  </div>