windmill-components 1.550.0 → 1.555.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.
- package/package/aiStore.d.ts +13 -0
- package/package/aiStore.js +70 -0
- package/package/common.d.ts +2 -1
- package/package/components/AIProviderPicker.svelte +25 -8
- package/package/components/ArgEnum.svelte +3 -2
- package/package/components/ArgEnum.svelte.d.ts +1 -0
- package/package/components/ArgInput.svelte +235 -174
- package/package/components/ArgInput.svelte.d.ts +4 -1
- package/package/components/ArrayTypeNarrowing.svelte +38 -32
- package/package/components/AutoscalingEvents.svelte +21 -5
- package/package/components/AutoscalingEvents.svelte.d.ts +4 -18
- package/package/components/DateTimeInput.svelte +8 -6
- package/package/components/DeployButton.svelte +1 -1
- package/package/components/Dev.svelte +6 -4
- package/package/components/EditableSchemaForm.svelte +7 -6
- package/package/components/Editor.svelte +2 -1
- package/package/components/EditorSettings.svelte +5 -5
- package/package/components/EditorSettings.svelte.d.ts +4 -18
- package/package/components/FakeMonacoPlaceHolder.svelte +4 -2
- package/package/components/FakeMonacoPlaceHolder.svelte.d.ts +1 -0
- package/package/components/FieldHeader.svelte +5 -7
- package/package/components/FirstStepInputs.svelte +1 -1
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
- package/package/components/FlowPlugConnect.svelte +8 -2
- package/package/components/FlowPlugConnect.svelte.d.ts +1 -0
- package/package/components/FlowPreviewContent.svelte +113 -92
- package/package/components/FlowPreviewContent.svelte.d.ts +3 -3
- package/package/components/FlowStatusViewer.svelte +3 -2
- package/package/components/FlowStatusViewerInner.svelte +1 -1
- package/package/components/FolderEditor.svelte +6 -7
- package/package/components/GroupEditor.svelte +148 -141
- package/package/components/GroupEditor.svelte.d.ts +5 -4
- package/package/components/InputTransformForm.svelte +88 -82
- package/package/components/InputTransformSchemaForm.svelte +5 -4
- package/package/components/InstanceSetting.svelte +17 -9
- package/package/components/JsonEditor.svelte +18 -9
- package/package/components/JsonEditor.svelte.d.ts +1 -1
- package/package/components/JsonInputs.svelte +1 -1
- package/package/components/ModulePreviewForm.svelte +23 -19
- package/package/components/NumberTypeNarrowing.svelte +32 -16
- package/package/components/ObjectStoreConfigSettings.svelte +27 -19
- package/package/components/Path.svelte +2 -8
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/ResourceEditor.svelte +3 -10
- package/package/components/ResourcePicker.svelte +85 -72
- package/package/components/ResourcePicker.svelte.d.ts +2 -0
- package/package/components/RunChart.svelte +1 -1
- package/package/components/RunForm.svelte +11 -7
- package/package/components/S3ArrayHelperButton.svelte +12 -6
- package/package/components/S3ArrayHelperButton.svelte.d.ts +1 -0
- package/package/components/S3FilePicker.svelte +1 -1
- package/package/components/SchemaForm.svelte +18 -10
- package/package/components/SchemaForm.svelte.d.ts +7 -1
- package/package/components/SchemaFormWithArgPicker.svelte +1 -1
- package/package/components/ScriptBuilder.svelte +2 -2
- package/package/components/ScriptEditor.svelte +4 -3
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ShareModal.svelte +4 -4
- package/package/components/SimpleEditor.svelte +6 -2
- package/package/components/SimpleEditor.svelte.d.ts +3 -0
- package/package/components/StringTypeNarrowing.svelte +5 -1
- package/package/components/SuperadminSettingsInner.svelte +3 -3
- package/package/components/TemplateEditor.svelte +18 -9
- package/package/components/Toast.svelte +2 -7
- package/package/components/Toast.svelte.d.ts +4 -18
- package/package/components/Toggle.svelte +17 -7
- package/package/components/ToggleHubWorkspaceQuick.svelte +3 -3
- package/package/components/WorkerGroup.svelte +2 -14
- package/package/components/apps/components/buttons/AppButton.svelte +57 -39
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +32 -2
- package/package/components/apps/components/display/dbtable/queries/insert.js +2 -1
- package/package/components/apps/components/display/dbtable/utils.d.ts +8 -8
- package/package/components/apps/components/display/table/utils.js +13 -3
- package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -3
- package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -1
- package/package/components/apps/editor/AppEditorHeader.svelte +33 -271
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +233 -0
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +18 -0
- package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +47 -0
- package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +8 -0
- package/package/components/apps/editor/GridEditor.svelte +7 -2
- package/package/components/apps/editor/appDeploy.svelte.d.ts +1 -0
- package/package/components/apps/editor/appDeploy.svelte.js +6 -0
- package/package/components/apps/editor/appUtils.d.ts +1 -0
- package/package/components/apps/editor/appUtils.js +30 -1
- package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -1
- package/package/components/apps/editor/component/components.d.ts +3 -3
- package/package/components/apps/editor/component/components.js +1 -1
- package/package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +6 -4
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +58 -8
- package/package/components/auditLogs/AuditLogsFilters.svelte +1 -1
- package/package/components/common/ResizeTransitionWrapper.svelte +39 -0
- package/package/components/common/ResizeTransitionWrapper.svelte.d.ts +12 -0
- package/package/components/common/badge/CountBadge.svelte +29 -0
- package/package/components/common/badge/CountBadge.svelte.d.ts +8 -0
- package/package/components/common/button/Button.svelte +1 -0
- package/package/components/common/button/ConnectionButton.svelte +6 -1
- package/package/components/common/button/ConnectionButton.svelte.d.ts +2 -0
- package/package/components/common/button/RefreshButton.svelte +8 -4
- package/package/components/common/button/RefreshButton.svelte.d.ts +3 -0
- package/package/components/common/calendarPicker/CalendarPicker.svelte +1 -1
- package/package/components/common/fileInput/FileInput.svelte +7 -6
- package/package/components/common/fileUpload/S3ArgInput.svelte +11 -9
- package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +1 -0
- package/package/components/common/popup/PopupV2.svelte +6 -0
- package/package/components/common/toggleButton-v2/ToggleButton.svelte +17 -26
- package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +16 -30
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +1 -1
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +3 -3
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
- package/package/components/copilot/CodeCompletionStatus.svelte +2 -1
- package/package/components/copilot/CronGen.svelte +1 -1
- package/package/components/copilot/FlowInlineScriptAIButton.svelte +2 -2
- package/package/components/copilot/IteratorGen.svelte +30 -25
- package/package/components/copilot/IteratorGen.svelte.d.ts +8 -7
- package/package/components/copilot/MetadataGen.svelte +4 -3
- package/package/components/copilot/PredicateGen.svelte +15 -12
- package/package/components/copilot/PredicateGen.svelte.d.ts +5 -4
- package/package/components/copilot/RegexGen.svelte +1 -1
- package/package/components/copilot/ScriptFix.svelte +1 -1
- package/package/components/copilot/ScriptGen.svelte +2 -1
- package/package/components/copilot/StepGenQuick.svelte +15 -16
- package/package/components/copilot/StepGenQuick.svelte.d.ts +14 -13
- package/package/components/copilot/StepInputGen.svelte +50 -36
- package/package/components/copilot/StepInputGen.svelte.d.ts +13 -10
- package/package/components/copilot/StepInputsGen.svelte +18 -19
- package/package/components/copilot/StepInputsGen.svelte.d.ts +4 -18
- package/package/components/copilot/autocomplete/Autocompletor.js +1 -1
- package/package/components/copilot/autocomplete/request.js +1 -1
- package/package/components/copilot/chat/AIChat.svelte +2 -1
- package/package/components/copilot/chat/AIChatManager.svelte.js +2 -1
- package/package/components/copilot/chat/AiChatLayout.svelte +2 -1
- package/package/components/copilot/chat/ProviderModelSelector.svelte +10 -9
- package/package/components/copilot/chat/ProviderModelSelector.svelte.d.ts +2 -17
- package/package/components/copilot/chat/flow/FlowAIButton.svelte +1 -1
- package/package/components/copilot/chat/script/core.js +2 -1
- package/package/components/copilot/chat/shared.js +2 -1
- package/package/components/copilot/lib.js +2 -1
- package/package/components/details/DetailPageLayout.svelte +3 -2
- package/package/components/details/DetailPageLayout.svelte.d.ts +1 -0
- package/package/components/flows/CreateActionsFlow.svelte +1 -1
- package/package/components/flows/FlowChatInterface.svelte +404 -0
- package/package/components/flows/FlowChatInterface.svelte.d.ts +19 -0
- package/package/components/flows/FlowChatMessage.svelte +41 -0
- package/package/components/flows/FlowChatMessage.svelte.d.ts +9 -0
- package/package/components/flows/FlowConversationsSidebar.svelte +213 -0
- package/package/components/flows/FlowConversationsSidebar.svelte.d.ts +15 -0
- package/package/components/flows/FlowEditor.svelte.d.ts +1 -1
- package/package/components/flows/FlowModuleIcon.svelte +10 -10
- package/package/components/flows/common/FlowCard.svelte +10 -2
- package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
- package/package/components/flows/common/FlowCardHeader.svelte +2 -1
- package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
- package/package/components/flows/content/DynamicInputHelpBox.svelte +4 -4
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -1
- package/package/components/flows/content/FlowInput.svelte +381 -259
- package/package/components/flows/content/FlowInput.svelte.d.ts +1 -1
- package/package/components/flows/content/FlowInputsQuick.svelte +55 -34
- package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +2 -2
- package/package/components/flows/content/FlowModuleComponent.svelte +5 -10
- package/package/components/flows/flowInfers.d.ts +60 -0
- package/package/components/flows/flowInfers.js +72 -66
- package/package/components/flows/{flowStore.d.ts → flowStore.svelte.d.ts} +1 -0
- package/package/components/flows/header/FlowPreviewButtons.svelte +1 -1
- package/package/components/flows/map/FlowErrorHandlerItem.svelte +4 -2
- package/package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +5 -2
- package/package/components/flows/map/FlowStickyNode.svelte +2 -2
- package/package/components/flows/map/FlowStickyNode.svelte.d.ts +1 -0
- package/package/components/flows/map/InsertModuleButton.svelte +5 -2
- package/package/components/flows/map/InsertModuleButton.svelte.d.ts +4 -3
- package/package/components/flows/map/InsertModuleInner.svelte +3 -1
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +2 -2
- package/package/components/flows/map/VirtualItem.svelte +1 -2
- package/package/components/flows/pickers/PickHubScriptQuick.svelte +8 -3
- package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
- package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +15 -12
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +1 -15
- package/package/components/graph/FlowGraphV2.svelte +2 -1
- package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
- package/package/components/graph/graphBuilder.svelte.d.ts +2 -0
- package/package/components/graph/graphBuilder.svelte.js +1 -0
- package/package/components/graph/renderers/edges/BaseEdge.svelte +1 -0
- package/package/components/graph/renderers/nodes/InputNode.svelte +13 -2
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +2 -27
- package/package/components/instanceSettings.js +17 -0
- package/package/components/progressBar/ProgressBar.svelte +1 -1
- package/package/components/raw_apps/FileEditorIcon.svelte +1 -1
- package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +4 -18
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte +2 -8
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte.d.ts +4 -18
- package/package/components/raw_apps/RawAppEditor.svelte +6 -7
- package/package/components/raw_apps/RawAppEditorHeader.svelte +48 -301
- package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +18 -19
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +10 -16
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +13 -13
- package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +8 -11
- package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -2
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +0 -1
- package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +7 -13
- package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +8 -8
- package/package/components/raw_apps/RawAppPreview.svelte +3 -7
- package/package/components/raw_apps/RawAppPreview.svelte.d.ts +5 -19
- package/package/components/raw_apps/utils.d.ts +1 -1
- package/package/components/raw_apps/utils.js +3 -3
- package/package/components/runs/RunOption.svelte +2 -2
- package/package/components/runs/RunsFilter.svelte +15 -12
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/schema/EditableSchemaDrawer.svelte +19 -18
- package/package/components/schema/FlowPropertyEditor.svelte +9 -2
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte +22 -26
- package/package/components/schema/SchemaFormDND.svelte +3 -2
- package/package/components/schema/SchemaFormDND.svelte.d.ts +1 -0
- package/package/components/select/DraggableTags.svelte +2 -2
- package/package/components/select/MultiSelect.svelte +14 -8
- package/package/components/select/Select.svelte +12 -5
- package/package/components/select/Select.svelte.d.ts +11 -0
- package/package/components/select/SelectDropdown.svelte +98 -46
- package/package/components/select/SelectDropdown.svelte.d.ts +10 -0
- package/package/components/select/utils.svelte.js +2 -0
- package/package/components/settings/CreateToken.svelte +76 -49
- package/package/components/settings/WorkspaceUserSettings.svelte +20 -17
- package/package/components/sidebar/CriticalAlertTable.svelte +2 -1
- package/package/components/sidebar/Linkify.svelte +14 -0
- package/package/components/sidebar/Linkify.svelte.d.ts +5 -0
- package/package/components/sidebar/WorkspaceMenu.svelte +8 -3
- package/package/components/table/tableUtils.js +1 -1
- package/package/components/text_input/TextInput.svelte +30 -0
- package/package/components/text_input/TextInput.svelte.d.ts +17 -0
- package/package/components/triggers/TriggersEditor.svelte +11 -1
- package/package/components/triggers/triggers.svelte.d.ts +1 -1
- package/package/components/triggers/triggers.svelte.js +8 -4
- package/package/components/tutorials/FlowBuilderTutorialErrorHandler.svelte +2 -2
- package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +3 -0
- package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +49 -17
- package/package/components/tutorials/Tutorial.svelte +9 -0
- package/package/components/tutorials/Tutorial.svelte.d.ts +1 -0
- package/package/components/tutorials/app/AppTutorial.svelte +41 -57
- package/package/components/tutorials/app/BackgroundRunnablesTutorial.svelte +3 -5
- package/package/components/tutorials/app/ConnectionTutorial.svelte +2 -2
- package/package/components/tutorials/utils.js +2 -154
- package/package/components/vscode.js +16 -8
- package/package/components/workspaceSettings/AISettings.svelte +4 -3
- package/package/components/workspaceSettings/CreateWorkspace.svelte +2 -2
- package/package/components/workspaceSettings/DucklakeSettings.svelte +64 -7
- package/package/components/workspaceSettings/StorageSettings.svelte +24 -26
- package/package/editorUtils.d.ts +1 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +82 -1
- package/package/gen/schemas.gen.js +82 -1
- package/package/gen/services.gen.d.ts +175 -1
- package/package/gen/services.gen.js +345 -2
- package/package/gen/types.gen.d.ts +1324 -549
- package/package/script_helpers.js +5 -5
- package/package/services/JobManager.js +4 -2
- package/package/stores.d.ts +4 -13
- package/package/stores.js +5 -68
- package/package/toast.js +2 -1
- package/package/utils.d.ts +1 -0
- package/package/utils.js +3 -0
- package/package.json +5 -5
- /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
|
-
|
|
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
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
<
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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="
|
|
214
|
-
|
|
215
|
-
label="
|
|
216
|
-
tooltip="A
|
|
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
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
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
|
-
}, {}, {},
|
|
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
|
|
351
|
-
<div
|
|
352
|
-
class=
|
|
353
|
-
|
|
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="
|
|
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
|
|
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="
|
|
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
|
-
|
|
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
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
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
|
|
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
|
-
|
|
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>
|