windmill-components 1.542.5 → 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.
- package/package/aiStore.d.ts +13 -0
- package/package/aiStore.js +70 -0
- package/package/common.d.ts +6 -2
- package/package/components/AIAgentLogViewer.svelte +1 -1
- package/package/components/AIProviderPicker.svelte +25 -8
- package/package/components/ArgEnum.svelte +17 -7
- package/package/components/ArgEnum.svelte.d.ts +1 -0
- package/package/components/ArgInput.svelte +257 -188
- 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/ChannelSelector.svelte +92 -18
- package/package/components/ChannelSelector.svelte.d.ts +2 -0
- package/package/components/ConnectionSection.svelte +12 -1
- package/package/components/DateTimeInput.svelte +8 -6
- package/package/components/DeployButton.svelte +1 -1
- package/package/components/Dev.svelte +24 -9
- package/package/components/Dev.svelte.d.ts +23 -1
- package/package/components/DisplayResult.svelte +36 -23
- package/package/components/DropdownV2.svelte +8 -2
- package/package/components/DropdownV2.svelte.d.ts +1 -0
- package/package/components/DynamicInput.svelte +10 -10
- package/package/components/EditableSchemaForm.svelte +28 -13
- 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/ErrorOrRecoveryHandler.svelte +14 -20
- 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/FlowHistoryJobPicker.svelte +3 -0
- package/package/components/FlowHistoryJobPicker.svelte.d.ts +1 -0
- package/package/components/FlowJobResult.svelte +5 -5
- package/package/components/FlowLogRow.svelte +2 -2
- package/package/components/FlowLogViewer.svelte +228 -57
- package/package/components/FlowLogViewer.svelte.d.ts +16 -5
- package/package/components/FlowLogViewerWrapper.svelte +56 -3
- package/package/components/FlowLogViewerWrapper.svelte.d.ts +4 -3
- package/package/components/FlowLoopIterationPreview.svelte +4 -4
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
- package/package/components/FlowMetadata.svelte +3 -4
- package/package/components/FlowMetadata.svelte.d.ts +4 -18
- package/package/components/FlowPlugConnect.svelte +8 -2
- package/package/components/FlowPlugConnect.svelte.d.ts +1 -0
- package/package/components/FlowPreviewContent.svelte +121 -94
- package/package/components/FlowPreviewContent.svelte.d.ts +3 -3
- package/package/components/FlowStatusViewer.svelte +63 -59
- package/package/components/FlowStatusViewer.svelte.d.ts +2 -2
- package/package/components/FlowStatusViewerInner.svelte +186 -94
- package/package/components/FlowStatusViewerInner.svelte.d.ts +10 -3
- package/package/components/FlowTimeline.svelte +110 -131
- package/package/components/FlowTimeline.svelte.d.ts +13 -4
- package/package/components/FlowTimelineBar.svelte +227 -0
- package/package/components/FlowTimelineBar.svelte.d.ts +24 -0
- 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 +193 -71
- package/package/components/InputTransformForm.svelte.d.ts +3 -0
- package/package/components/InputTransformSchemaForm.svelte +10 -5
- package/package/components/InputTransformSchemaForm.svelte.d.ts +2 -0
- package/package/components/InstanceSetting.svelte +34 -51
- package/package/components/InstanceSettings.svelte +12 -21
- package/package/components/JobArgs.svelte +15 -16
- package/package/components/JobArgs.svelte.d.ts +4 -18
- package/package/components/JobLoader.svelte +23 -42
- package/package/components/JobLoader.svelte.d.ts +2 -0
- package/package/components/JobStatus.svelte +1 -1
- package/package/components/JobStatus.svelte.d.ts +4 -18
- 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/ModulePreviewResultViewer.svelte +1 -7
- package/package/components/NextcloudSetting.svelte +6 -1
- package/package/components/NumberTypeNarrowing.svelte +32 -16
- package/package/components/ObjectStoreConfigSettings.svelte +27 -19
- package/package/components/Password.svelte +7 -11
- package/package/components/Password.svelte.d.ts +5 -20
- package/package/components/PasswordArgInput.svelte +35 -15
- package/package/components/PasswordArgInput.svelte.d.ts +4 -18
- package/package/components/Path.svelte +2 -8
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/QueuePosition.svelte +6 -2
- 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 +16 -21
- package/package/components/S3ArrayHelperButton.svelte +18 -0
- package/package/components/S3ArrayHelperButton.svelte.d.ts +9 -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 +9 -9
- 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 +44 -25
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/SuperadminSettingsInner.svelte +3 -3
- package/package/components/TeamSelector.svelte +83 -37
- package/package/components/TeamSelector.svelte.d.ts +0 -1
- 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 +66 -38
- 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/AppAggridInfiniteTable.svelte +13 -4
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte +2 -2
- package/package/components/apps/components/display/table/utils.js +14 -4
- package/package/components/apps/components/helpers/RefreshButton.svelte +5 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -5
- package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -1
- package/package/components/apps/components/layout/AppTabs.svelte +116 -71
- package/package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -0
- 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/ComponentInner.svelte +1 -0
- package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -1
- package/package/components/apps/editor/component/components.d.ts +19 -4
- package/package/components/apps/editor/component/components.js +23 -3
- 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/ComponentPanel.svelte +2 -0
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +19 -1
- package/package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +3 -1
- package/package/components/apps/editor/settingsPanel/GridTabHidden.svelte +52 -0
- package/package/components/apps/editor/settingsPanel/GridTabHidden.svelte.d.ts +9 -0
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +58 -8
- package/package/components/auditLogs/AuditLogsFilters.svelte +7 -1
- package/package/components/auditLogs/AuditLogsTable.svelte +17 -7
- package/package/components/auditLogs/AuditLogsTable.svelte.d.ts +1 -0
- package/package/components/common/CloseButton.svelte +2 -2
- package/package/components/common/CloseButton.svelte.d.ts +1 -0
- 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/layout/List.svelte +3 -7
- package/package/components/common/layout/List.svelte.d.ts +7 -29
- package/package/components/common/popup/PopupV2.svelte +14 -25
- package/package/components/common/popup/PopupV2.svelte.d.ts +4 -2
- package/package/components/common/table/ScriptRow.svelte +22 -2
- 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/FlowCopilotInputsModal.svelte +26 -23
- 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 +5 -3
- package/package/components/copilot/chat/AiChatLayout.svelte +2 -1
- package/package/components/copilot/chat/ProviderModelSelector.svelte +11 -10
- 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/flow/FlowAIChat.svelte +4 -2
- package/package/components/copilot/chat/script/core.d.ts +4 -4
- package/package/components/copilot/chat/script/core.js +95 -35
- package/package/components/copilot/chat/shared.js +2 -1
- package/package/components/copilot/lib.d.ts +1 -0
- package/package/components/copilot/lib.js +7 -3
- package/package/components/custom_ui.d.ts +1 -0
- 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/FlowProgressBar.svelte +16 -16
- package/package/components/flows/FlowProgressBar.svelte.d.ts +7 -22
- 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 +56 -34
- package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +3 -2
- package/package/components/flows/content/FlowModuleComponent.svelte +29 -11
- package/package/components/flows/flowInfers.d.ts +60 -0
- package/package/components/flows/flowInfers.js +72 -40
- package/package/components/flows/{flowStore.d.ts → flowStore.svelte.d.ts} +5 -1
- 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/FlowJobsMenu.svelte +3 -3
- package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +1 -1
- 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 +8 -15
- package/package/components/flows/map/InsertModuleButton.svelte.d.ts +4 -4
- package/package/components/flows/map/InsertModuleInner.svelte +19 -20
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +2 -2
- package/package/components/flows/map/MapItem.svelte +1 -1
- package/package/components/flows/map/VirtualItem.svelte +1 -2
- package/package/components/flows/pickers/PickHubScriptQuick.svelte +43 -52
- package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +2 -1
- package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +41 -26
- package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte.d.ts +1 -0
- package/package/components/flows/propPicker/OutputPicker.svelte +2 -0
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +1 -15
- package/package/components/git_sync/DetectionFlow.svelte +33 -44
- package/package/components/git_sync/DetectionFlow.svelte.d.ts +1 -0
- package/package/components/git_sync/GitSyncContext.svelte.d.ts +22 -0
- package/package/components/git_sync/GitSyncContext.svelte.js +145 -5
- package/package/components/git_sync/GitSyncModeDisplay.svelte +14 -0
- package/package/components/git_sync/GitSyncModeDisplay.svelte.d.ts +9 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +365 -253
- package/package/components/git_sync/GitSyncRepositoryCard.svelte.d.ts +10 -1
- package/package/components/git_sync/GitSyncSection.svelte +134 -14
- package/package/components/git_sync/PullWorkspaceModal.svelte +24 -32
- package/package/components/git_sync/PushWorkspaceModal.svelte +24 -32
- 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/model.d.ts +5 -5
- package/package/components/graph/renderers/edges/BaseEdge.svelte +1 -0
- package/package/components/graph/renderers/edges/EmptyEdge.svelte +3 -10
- package/package/components/graph/renderers/edges/EmptyEdge.svelte.d.ts +4 -18
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +2 -2
- package/package/components/graph/renderers/nodes/InputNode.svelte +13 -2
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +5 -10
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +2 -27
- package/package/components/home/ItemsList.svelte +1 -1
- package/package/components/instanceSettings.js +17 -0
- package/package/components/jobs/JobProgressBar.svelte +27 -21
- package/package/components/jobs/JobProgressBar.svelte.d.ts +9 -24
- package/package/components/meltComponents/MenuSingleItem.svelte +3 -8
- package/package/components/meltComponents/MenuSingleItem.svelte.d.ts +0 -3
- package/package/components/meltComponents/Popover.svelte +3 -2
- package/package/components/meltComponents/Popover.svelte.d.ts +1 -0
- package/package/components/meltComponents/Tooltip.svelte +1 -1
- package/package/components/progressBar/ProgressBar.svelte +39 -53
- package/package/components/progressBar/ProgressBar.svelte.d.ts +11 -26
- 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/JobsLoader.svelte +1 -1
- package/package/components/runs/NoWorkerWithTagWarning.svelte +3 -3
- package/package/components/runs/NoWorkerWithTagWarning.svelte.d.ts +1 -1
- 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/AddPropertyV2.svelte +7 -4
- 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/PropertyEditor.svelte.d.ts +1 -1
- 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 +15 -9
- package/package/components/select/MultiSelect.svelte.d.ts +1 -0
- 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 +111 -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/MenuLink.svelte +2 -1
- package/package/components/sidebar/MenuLink.svelte.d.ts +1 -0
- package/package/components/sidebar/SidebarContent.svelte +27 -27
- package/package/components/sidebar/WorkspaceMenu.svelte +8 -3
- package/package/components/table/Cell.svelte +7 -14
- package/package/components/table/Cell.svelte.d.ts +13 -35
- 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/AddTriggersButton.svelte +1 -0
- package/package/components/triggers/TriggersEditor.svelte +11 -1
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte +1 -1
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte.d.ts +2 -1
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +28 -5
- package/package/components/triggers/gcp/utils.js +1 -0
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +1 -0
- package/package/components/triggers/triggers.svelte.d.ts +1 -1
- package/package/components/triggers/triggers.svelte.js +8 -4
- package/package/components/triggers/webhook/WebhooksConfigSection.svelte +143 -63
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +22 -0
- package/package/components/triggers/websocket/utils.js +1 -0
- 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 +12 -5
- package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
- package/package/components/workspaceSettings/CreateWorkspace.svelte +2 -2
- package/package/components/workspaceSettings/DucklakeSettings.svelte +64 -7
- package/package/components/workspaceSettings/ModelTokenLimits.svelte +165 -0
- package/package/components/workspaceSettings/ModelTokenLimits.svelte.d.ts +8 -0
- package/package/components/workspaceSettings/StorageSettings.svelte +147 -77
- package/package/editorUtils.d.ts +1 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +223 -17
- package/package/gen/schemas.gen.js +226 -17
- package/package/gen/services.gen.d.ts +221 -27
- package/package/gen/services.gen.js +440 -48
- package/package/gen/types.gen.d.ts +1067 -218
- package/package/hubPaths.json +2 -1
- package/package/script_helpers.js +5 -5
- package/package/services/JobManager.js +14 -9
- package/package/stores.d.ts +4 -12
- package/package/stores.js +5 -65
- package/package/timelineCompute.svelte.d.ts +21 -0
- package/package/timelineCompute.svelte.js +113 -0
- package/package/toast.js +2 -1
- package/package/utils.d.ts +16 -8
- package/package/utils.js +65 -12
- package/package/workspace_settings.d.ts +13 -8
- package/package/workspace_settings.js +46 -11
- package/package.json +4 -4
- /package/package/components/flows/{flowStore.js → flowStore.svelte.js} +0 -0
|
@@ -11,7 +11,7 @@ import InitializeComponent from '../helpers/InitializeComponent.svelte';
|
|
|
11
11
|
import { twMerge } from 'tailwind-merge';
|
|
12
12
|
import ResolveStyle from '../helpers/ResolveStyle.svelte';
|
|
13
13
|
import { deepEqual } from 'fast-equals';
|
|
14
|
-
let { id, configuration, componentContainerHeight, tabs, customCss = undefined, render, disabledTabs, onTabChange = undefined } = $props();
|
|
14
|
+
let { id, configuration, componentContainerHeight, tabs, customCss = undefined, render, disabledTabs, hiddenTabs, onTabChange = undefined } = $props();
|
|
15
15
|
let resolvedConfig = $state(initConfig(components['tabscomponent'].initialData.configuration, configuration));
|
|
16
16
|
let everRender = $state(render);
|
|
17
17
|
$effect.pre(() => {
|
|
@@ -51,18 +51,28 @@ $componentControl[id] = {
|
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
53
|
left: () => {
|
|
54
|
-
const
|
|
55
|
-
if (
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
const currentIndex = tabs.indexOf(selected);
|
|
55
|
+
if (currentIndex > 0) {
|
|
56
|
+
// Find the next visible tab to the left
|
|
57
|
+
for (let i = currentIndex - 1; i >= 0; i--) {
|
|
58
|
+
if (!resolvedHiddenTabs[i]) {
|
|
59
|
+
selected = tabs[i];
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
58
63
|
}
|
|
59
64
|
return false;
|
|
60
65
|
},
|
|
61
66
|
right: () => {
|
|
62
|
-
const
|
|
63
|
-
if (
|
|
64
|
-
|
|
65
|
-
|
|
67
|
+
const currentIndex = tabs.indexOf(selected);
|
|
68
|
+
if (currentIndex < tabs.length - 1) {
|
|
69
|
+
// Find the next visible tab to the right
|
|
70
|
+
for (let i = currentIndex + 1; i < tabs.length; i++) {
|
|
71
|
+
if (!resolvedHiddenTabs[i]) {
|
|
72
|
+
selected = tabs[i];
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
66
76
|
}
|
|
67
77
|
return false;
|
|
68
78
|
},
|
|
@@ -88,6 +98,26 @@ $effect.pre(() => {
|
|
|
88
98
|
selected != undefined && untrack(() => handleTabSelection());
|
|
89
99
|
});
|
|
90
100
|
let resolvedDisabledTabs = $state([]);
|
|
101
|
+
let resolvedHiddenTabs = $state([]);
|
|
102
|
+
// Filter visible tabs based on hiddenTabs configuration
|
|
103
|
+
let visibleTabsIndices = $derived((tabs ?? []).map((_, index) => index).filter((index) => !resolvedHiddenTabs[index]));
|
|
104
|
+
// Auto-select first visible tab if current selection is hidden or invalid
|
|
105
|
+
$effect(() => {
|
|
106
|
+
if (visibleTabsIndices.length === 0) {
|
|
107
|
+
// Handle case where all tabs are hidden
|
|
108
|
+
selected = '';
|
|
109
|
+
selectedIndex = -1;
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const currentIndex = tabs?.indexOf(selected) ?? -1;
|
|
113
|
+
if (currentIndex === -1 || resolvedHiddenTabs[currentIndex]) {
|
|
114
|
+
const firstVisibleTab = tabs[visibleTabsIndices[0]];
|
|
115
|
+
if (selected !== firstVisibleTab) {
|
|
116
|
+
// Current selection is hidden or invalid, select first visible tab
|
|
117
|
+
selected = firstVisibleTab;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
});
|
|
91
121
|
</script>
|
|
92
122
|
|
|
93
123
|
<InputValue key="kind" {id} input={configuration.tabsKind} bind:value={resolvedConfig.tabsKind} />
|
|
@@ -113,6 +143,15 @@ let resolvedDisabledTabs = $state([]);
|
|
|
113
143
|
/>
|
|
114
144
|
{/each}
|
|
115
145
|
|
|
146
|
+
{#each hiddenTabs ?? [] as hideTab, index}
|
|
147
|
+
<InputValue
|
|
148
|
+
key="tabHidden {index}"
|
|
149
|
+
{id}
|
|
150
|
+
input={hideTab}
|
|
151
|
+
bind:value={resolvedHiddenTabs[index]}
|
|
152
|
+
/>
|
|
153
|
+
{/each}
|
|
154
|
+
|
|
116
155
|
{#if everRender}
|
|
117
156
|
<div class={resolvedConfig.tabsKind == 'sidebar' ? 'flex gap-4 w-full h-full' : 'w-full'}>
|
|
118
157
|
{#if !resolvedConfig.tabsKind || resolvedConfig.tabsKind == 'tabs' || (resolvedConfig.tabsKind == 'invisibleOnView' && $mode == 'dnd')}
|
|
@@ -123,16 +162,18 @@ let resolvedDisabledTabs = $state([]);
|
|
|
123
162
|
style={css?.tabRow?.style}
|
|
124
163
|
>
|
|
125
164
|
{#each tabs ?? [] as res, index}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
165
|
+
{#if !resolvedHiddenTabs[index]}
|
|
166
|
+
<Tab
|
|
167
|
+
value={res}
|
|
168
|
+
class={twMerge(css?.allTabs?.class, 'wm-tabs-alltabs')}
|
|
169
|
+
style={css?.allTabs?.style}
|
|
170
|
+
selectedClass={twMerge(css?.selectedTab?.class, 'wm-tabs-selectedTab')}
|
|
171
|
+
selectedStyle={css?.selectedTab?.style}
|
|
172
|
+
disabled={resolvedDisabledTabs[index]}
|
|
173
|
+
>
|
|
174
|
+
<span class="font-semibold">{res}</span>
|
|
175
|
+
</Tab>
|
|
176
|
+
{/if}
|
|
136
177
|
{/each}
|
|
137
178
|
</Tabs>
|
|
138
179
|
</div>
|
|
@@ -146,78 +187,82 @@ let resolvedDisabledTabs = $state([]);
|
|
|
146
187
|
style={css?.tabRow?.style}
|
|
147
188
|
>
|
|
148
189
|
{#each tabs ?? [] as res, index}
|
|
149
|
-
|
|
150
|
-
onpointerdown={stopPropagation(bubble('pointerdown'))}
|
|
151
|
-
onclick={() => !resolvedDisabledTabs[index] && (selected = res)}
|
|
152
|
-
disabled={resolvedDisabledTabs[index]}
|
|
153
|
-
class={twMerge(
|
|
154
|
-
'rounded-sm !truncate text-sm hover:text-primary px-1 py-2',
|
|
155
|
-
css?.allTabs?.class,
|
|
156
|
-
'wm-tabs-alltabs',
|
|
157
|
-
selected == res
|
|
158
|
-
? twMerge(
|
|
159
|
-
'border-r border-primary border-l bg-surface text-primary',
|
|
160
|
-
css?.selectedTab?.class,
|
|
161
|
-
'wm-tabs-selectedTab'
|
|
162
|
-
)
|
|
163
|
-
: '',
|
|
164
|
-
resolvedDisabledTabs[index]
|
|
165
|
-
? 'opacity-50 cursor-not-allowed hover:text-secondary'
|
|
166
|
-
: ''
|
|
167
|
-
)}
|
|
168
|
-
style={selected == res
|
|
169
|
-
? [css?.allTabs?.style, css?.selectedTab?.style].filter(Boolean).join(';')
|
|
170
|
-
: css?.allTabs?.style}
|
|
171
|
-
>
|
|
172
|
-
{res}
|
|
173
|
-
</button>
|
|
174
|
-
{/each}
|
|
175
|
-
</div>
|
|
176
|
-
{/if}
|
|
177
|
-
{#if resolvedConfig.tabsKind == 'accordion'}
|
|
178
|
-
<div class="flex flex-col w-full">
|
|
179
|
-
{#each tabs ?? [] as res, index}
|
|
180
|
-
<div class="border-b">
|
|
190
|
+
{#if !resolvedHiddenTabs[index]}
|
|
181
191
|
<button
|
|
182
192
|
onpointerdown={stopPropagation(bubble('pointerdown'))}
|
|
183
193
|
onclick={() => !resolvedDisabledTabs[index] && (selected = res)}
|
|
184
194
|
disabled={resolvedDisabledTabs[index]}
|
|
185
195
|
class={twMerge(
|
|
186
|
-
'
|
|
196
|
+
'rounded-sm !truncate text-sm hover:text-primary px-1 py-2',
|
|
187
197
|
css?.allTabs?.class,
|
|
188
198
|
'wm-tabs-alltabs',
|
|
189
199
|
selected == res
|
|
190
200
|
? twMerge(
|
|
191
|
-
'bg-surface text-primary
|
|
201
|
+
'border-r border-primary border-l bg-surface text-primary',
|
|
192
202
|
css?.selectedTab?.class,
|
|
193
203
|
'wm-tabs-selectedTab'
|
|
194
204
|
)
|
|
195
|
-
: '
|
|
205
|
+
: '',
|
|
196
206
|
resolvedDisabledTabs[index]
|
|
197
207
|
? 'opacity-50 cursor-not-allowed hover:text-secondary'
|
|
198
208
|
: ''
|
|
199
209
|
)}
|
|
210
|
+
style={selected == res
|
|
211
|
+
? [css?.allTabs?.style, css?.selectedTab?.style].filter(Boolean).join(';')
|
|
212
|
+
: css?.allTabs?.style}
|
|
200
213
|
>
|
|
201
|
-
<span class="mr-2 w-8 font-mono">{selected == res ? '-' : '+'}</span>
|
|
202
214
|
{res}
|
|
203
215
|
</button>
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
216
|
+
{/if}
|
|
217
|
+
{/each}
|
|
218
|
+
</div>
|
|
219
|
+
{/if}
|
|
220
|
+
{#if resolvedConfig.tabsKind == 'accordion'}
|
|
221
|
+
<div class="flex flex-col w-full">
|
|
222
|
+
{#each tabs ?? [] as res, index}
|
|
223
|
+
{#if !resolvedHiddenTabs[index]}
|
|
224
|
+
<div class="border-b">
|
|
225
|
+
<button
|
|
226
|
+
onpointerdown={stopPropagation(bubble('pointerdown'))}
|
|
227
|
+
onclick={() => !resolvedDisabledTabs[index] && (selected = res)}
|
|
228
|
+
disabled={resolvedDisabledTabs[index]}
|
|
229
|
+
class={twMerge(
|
|
230
|
+
'w-full text-left bg-surface !truncate text-sm hover:text-primary px-1 py-2',
|
|
231
|
+
css?.allTabs?.class,
|
|
232
|
+
'wm-tabs-alltabs',
|
|
233
|
+
selected == res
|
|
234
|
+
? twMerge(
|
|
235
|
+
'bg-surface text-primary ',
|
|
236
|
+
css?.selectedTab?.class,
|
|
237
|
+
'wm-tabs-selectedTab'
|
|
238
|
+
)
|
|
239
|
+
: 'text-secondary',
|
|
240
|
+
resolvedDisabledTabs[index]
|
|
241
|
+
? 'opacity-50 cursor-not-allowed hover:text-secondary'
|
|
242
|
+
: ''
|
|
243
|
+
)}
|
|
244
|
+
>
|
|
245
|
+
<span class="mr-2 w-8 font-mono">{selected == res ? '-' : '+'}</span>
|
|
246
|
+
{res}
|
|
247
|
+
</button>
|
|
248
|
+
<div class={selected == res ? 'border-t' : ''}>
|
|
249
|
+
<SubGridEditor
|
|
250
|
+
{id}
|
|
251
|
+
visible={render && index === selectedIndex}
|
|
252
|
+
subGridId={`${id}-${index}`}
|
|
253
|
+
class={twMerge(css?.container?.class, 'wm-tabs-container')}
|
|
254
|
+
style={css?.container?.style}
|
|
255
|
+
containerHeight={componentContainerHeight - (titleBarHeight * tabs.length + 40)}
|
|
256
|
+
onFocus={() => {
|
|
257
|
+
if (!$connectingInput.opened) {
|
|
258
|
+
$selectedComponent = [id]
|
|
259
|
+
handleTabSelection()
|
|
260
|
+
}
|
|
261
|
+
}}
|
|
262
|
+
/>
|
|
263
|
+
</div>
|
|
219
264
|
</div>
|
|
220
|
-
|
|
265
|
+
{/if}
|
|
221
266
|
{/each}
|
|
222
267
|
</div>
|
|
223
268
|
{:else}
|
|
@@ -7,6 +7,7 @@ interface Props {
|
|
|
7
7
|
customCss?: ComponentCustomCSS<'tabscomponent'> | undefined;
|
|
8
8
|
render: boolean;
|
|
9
9
|
disabledTabs: RichConfiguration[];
|
|
10
|
+
hiddenTabs: RichConfiguration[];
|
|
10
11
|
onTabChange?: string[] | undefined;
|
|
11
12
|
}
|
|
12
13
|
declare const AppTabs: import("svelte").Component<Props, {}, "">;
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
<script lang="ts">import {
|
|
2
|
-
const bubble = createBubbler();
|
|
3
|
-
import { Alert, Drawer, DrawerContent, UndoRedo } from '../../common';
|
|
1
|
+
<script lang="ts">import { Drawer, DrawerContent, UndoRedo } from '../../common';
|
|
4
2
|
import Button from '../../common/button/Button.svelte';
|
|
5
|
-
import Path from '../../Path.svelte';
|
|
6
3
|
import Toggle from '../../Toggle.svelte';
|
|
7
|
-
import { AppService, DraftService
|
|
4
|
+
import { AppService, DraftService } from '../../../gen';
|
|
8
5
|
import { redo, undo } from '../../../history.svelte';
|
|
9
6
|
import { enterpriseLicense, userStore, workspaceStore } from '../../../stores';
|
|
10
|
-
import { AlignHorizontalSpaceAround, BellOff, Bug, DiffIcon, Expand, FileJson, FileUp, FormInput, History, Laptop2,
|
|
7
|
+
import { AlignHorizontalSpaceAround, BellOff, Bug, DiffIcon, Expand, FileJson, FileUp, FormInput, History, Laptop2, Save, Smartphone, FileClock, Sun, Moon, SunMoon, Zap, Globe } from 'lucide-svelte';
|
|
11
8
|
import { getContext, untrack } from 'svelte';
|
|
12
9
|
import { cleanValueProperties, orderedJsonStringify, replaceFalseWithUndefined } from '../../../utils';
|
|
13
10
|
import { BG_PREFIX, allItems, toStatic } from '../utils';
|
|
@@ -16,7 +13,6 @@ import AppInputs from './AppInputs.svelte';
|
|
|
16
13
|
import PreviewToggle from './PreviewToggle.svelte';
|
|
17
14
|
import ToggleButtonGroup from '../../common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
18
15
|
import ToggleButton from '../../common/toggleButton-v2/ToggleButton.svelte';
|
|
19
|
-
import Tooltip from '../../Tooltip.svelte';
|
|
20
16
|
import { sendUserToast } from '../../../toast';
|
|
21
17
|
import DeploymentHistory from './DeploymentHistory.svelte';
|
|
22
18
|
import Awareness from '../../Awareness.svelte';
|
|
@@ -36,13 +32,13 @@ import Summary from '../../Summary.svelte';
|
|
|
36
32
|
import HideButton from './settingsPanel/HideButton.svelte';
|
|
37
33
|
import DeployOverrideConfirmationModal from '../../common/confirmationModal/DeployOverrideConfirmationModal.svelte';
|
|
38
34
|
import { computeS3FileInputPolicy, computeWorkspaceS3FileInputPolicy, computeS3ImageViewerPolicy } from './appUtilsS3';
|
|
39
|
-
import { isCloudHosted } from '../../../cloud';
|
|
40
|
-
import { base } from '../../../base';
|
|
41
|
-
import ClipboardPanel from '../../details/ClipboardPanel.svelte';
|
|
42
35
|
import AppJobsDrawer from './AppJobsDrawer.svelte';
|
|
43
36
|
import { collectStaticFields } from './commonAppUtils';
|
|
44
37
|
import LazyModePanel from './contextPanel/LazyModePanel.svelte';
|
|
45
38
|
import { Sha256 } from '@aws-crypto/sha256-js';
|
|
39
|
+
import AppEditorHeaderDeploy from './AppEditorHeaderDeploy.svelte';
|
|
40
|
+
import AppEditorHeaderDeployInitialDraft from './AppEditorHeaderDeployInitialDraft.svelte';
|
|
41
|
+
import { computeSecretUrl } from './appDeploy.svelte';
|
|
46
42
|
async function hash(message) {
|
|
47
43
|
try {
|
|
48
44
|
const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array
|
|
@@ -66,6 +62,7 @@ let deployedValue = $state(undefined); // Value to diff against
|
|
|
66
62
|
let deployedBy = $state(undefined); // Author
|
|
67
63
|
let confirmCallback = $state(() => { }); // What happens when user clicks `override` in warning
|
|
68
64
|
let open = $state(false); // Is confirmation modal open
|
|
65
|
+
let customPathError = $state('');
|
|
69
66
|
const { app, summary, breakpoint, appPath, jobs, jobsById, staticExporter, errorByComponent, openDebugRun, mode, darkMode } = getContext('AppViewerContext');
|
|
70
67
|
const { history, jobsDrawerOpen, refreshComponents } = getContext('AppEditorContext');
|
|
71
68
|
const loading = $state({
|
|
@@ -74,7 +71,7 @@ const loading = $state({
|
|
|
74
71
|
saveDraft: false
|
|
75
72
|
});
|
|
76
73
|
let selectedJobId = $state(undefined);
|
|
77
|
-
let pathError = $state(
|
|
74
|
+
let pathError = $state('');
|
|
78
75
|
let appExport = $state();
|
|
79
76
|
let draftDrawerOpen = $state(false);
|
|
80
77
|
let saveDrawerOpen = $state(false);
|
|
@@ -82,7 +79,7 @@ let inputsDrawerOpen = $state(fromHub);
|
|
|
82
79
|
let historyBrowserDrawerOpen = $state(false);
|
|
83
80
|
let debugAppDrawerOpen = $state(false);
|
|
84
81
|
let lazyDrawerOpen = $state(false);
|
|
85
|
-
let deploymentMsg = $state(
|
|
82
|
+
let deploymentMsg = $state('');
|
|
86
83
|
function closeSaveDrawer() {
|
|
87
84
|
saveDrawerOpen = false;
|
|
88
85
|
}
|
|
@@ -366,13 +363,6 @@ async function updateApp(npath) {
|
|
|
366
363
|
onSavedNewAppPath?.(npath);
|
|
367
364
|
}
|
|
368
365
|
}
|
|
369
|
-
let secretUrl = $state(undefined);
|
|
370
|
-
async function getSecretUrl() {
|
|
371
|
-
secretUrl = await AppService.getPublicSecretOfApp({
|
|
372
|
-
workspace: $workspaceStore,
|
|
373
|
-
path: $appPath
|
|
374
|
-
});
|
|
375
|
-
}
|
|
376
366
|
async function setPublishState() {
|
|
377
367
|
await computeTriggerables();
|
|
378
368
|
await AppService.updateApp({
|
|
@@ -614,11 +604,6 @@ function onKeyDown(event) {
|
|
|
614
604
|
}
|
|
615
605
|
lock = false;
|
|
616
606
|
}
|
|
617
|
-
let dirtyPath = $state(false);
|
|
618
|
-
let path = $state(undefined);
|
|
619
|
-
let secretUrlHref = $derived(secretUrl
|
|
620
|
-
? `${window.location.origin}${base}/public/${$workspaceStore}/${secretUrl}`
|
|
621
|
-
: undefined);
|
|
622
607
|
let moreItems = $derived([
|
|
623
608
|
{
|
|
624
609
|
displayName: 'Deployment history',
|
|
@@ -638,9 +623,13 @@ let moreItems = $derived([
|
|
|
638
623
|
{
|
|
639
624
|
displayName: 'Public URL',
|
|
640
625
|
icon: Globe,
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
626
|
+
action: async () => {
|
|
627
|
+
const secretUrl = await AppService.getPublicSecretOfApp({
|
|
628
|
+
workspace: $workspaceStore,
|
|
629
|
+
path: $appPath
|
|
630
|
+
});
|
|
631
|
+
window.open(computeSecretUrl(secretUrl), '_blank');
|
|
632
|
+
}
|
|
644
633
|
},
|
|
645
634
|
// {
|
|
646
635
|
// displayName: 'Publish to Hub',
|
|
@@ -736,43 +725,6 @@ function setTheme(newDarkMode) {
|
|
|
736
725
|
let priorDarkMode = document.documentElement.classList.contains('dark');
|
|
737
726
|
setTheme($app?.darkMode);
|
|
738
727
|
let customPath = $state(savedApp?.custom_path);
|
|
739
|
-
let dirtyCustomPath = $state(false);
|
|
740
|
-
let customPathError = $state('');
|
|
741
|
-
let globalWorkspacedRoute = $state(false);
|
|
742
|
-
async function loadGlobalWorkspacedRouteSetting() {
|
|
743
|
-
try {
|
|
744
|
-
const setting = await SettingService.getGlobal({ key: 'app_workspaced_route' });
|
|
745
|
-
globalWorkspacedRoute = setting ?? false;
|
|
746
|
-
}
|
|
747
|
-
catch (error) {
|
|
748
|
-
globalWorkspacedRoute = false;
|
|
749
|
-
}
|
|
750
|
-
}
|
|
751
|
-
async function appExists(customPath) {
|
|
752
|
-
return await AppService.customPathExists({
|
|
753
|
-
workspace: $workspaceStore,
|
|
754
|
-
customPath
|
|
755
|
-
});
|
|
756
|
-
}
|
|
757
|
-
let validateTimeout = undefined;
|
|
758
|
-
async function validateCustomPath(customPath) {
|
|
759
|
-
customPathError = '';
|
|
760
|
-
if (validateTimeout) {
|
|
761
|
-
clearTimeout(validateTimeout);
|
|
762
|
-
}
|
|
763
|
-
validateTimeout = setTimeout(async () => {
|
|
764
|
-
if (!/^[\w-]+(\/[\w-]+)*$/.test(customPath)) {
|
|
765
|
-
customPathError = 'Invalid path';
|
|
766
|
-
}
|
|
767
|
-
else if (customPath !== savedApp?.custom_path && (await appExists(customPath))) {
|
|
768
|
-
customPathError = 'Path already taken';
|
|
769
|
-
}
|
|
770
|
-
else {
|
|
771
|
-
customPathError = '';
|
|
772
|
-
}
|
|
773
|
-
validateTimeout = undefined;
|
|
774
|
-
}, 500);
|
|
775
|
-
}
|
|
776
728
|
$effect(() => {
|
|
777
729
|
if ($openDebugRun == undefined) {
|
|
778
730
|
$openDebugRun = (jobId) => {
|
|
@@ -781,20 +733,10 @@ $effect(() => {
|
|
|
781
733
|
};
|
|
782
734
|
}
|
|
783
735
|
});
|
|
784
|
-
$effect(() => {
|
|
785
|
-
$appPath && $appPath != '' && secretUrl == undefined && untrack(() => getSecretUrl());
|
|
786
|
-
});
|
|
787
736
|
$effect(() => {
|
|
788
737
|
saveDrawerOpen && untrack(() => compareVersions());
|
|
789
738
|
});
|
|
790
739
|
let hasErrors = $derived(Object.keys($errorByComponent).length > 0);
|
|
791
|
-
let fullCustomUrl = $derived(`${window.location.origin}${base}/a/${isCloudHosted() || globalWorkspacedRoute ? $workspaceStore + '/' : ''}${customPath}`);
|
|
792
|
-
$effect(() => {
|
|
793
|
-
;
|
|
794
|
-
[customPath];
|
|
795
|
-
untrack(() => customPath !== undefined && validateCustomPath(customPath));
|
|
796
|
-
});
|
|
797
|
-
loadGlobalWorkspacedRouteSetting();
|
|
798
740
|
</script>
|
|
799
741
|
|
|
800
742
|
<svelte:window onkeydown={onKeyDown} />
|
|
@@ -835,45 +777,6 @@ loadGlobalWorkspacedRouteSetting();
|
|
|
835
777
|
{#if $appPath == ''}
|
|
836
778
|
<Drawer bind:open={draftDrawerOpen} size="800px">
|
|
837
779
|
<DrawerContent title="Initial draft save" on:close={() => closeDraftDrawer()}>
|
|
838
|
-
<Alert bgClass="mb-4" title="Require path" type="info">
|
|
839
|
-
Choose a path to save the initial draft of the app.
|
|
840
|
-
</Alert>
|
|
841
|
-
<h3>Summary</h3>
|
|
842
|
-
<div class="w-full pt-2">
|
|
843
|
-
<!-- svelte-ignore a11y_autofocus -->
|
|
844
|
-
<input
|
|
845
|
-
autofocus
|
|
846
|
-
type="text"
|
|
847
|
-
placeholder="App summary"
|
|
848
|
-
class="text-sm w-full font-semibold"
|
|
849
|
-
onkeydown={stopPropagation(bubble('keydown'))}
|
|
850
|
-
bind:value={$summary}
|
|
851
|
-
onkeyup={() => {
|
|
852
|
-
if ($appPath == '' && $summary?.length > 0 && !dirtyPath) {
|
|
853
|
-
path?.setName(
|
|
854
|
-
$summary
|
|
855
|
-
.toLowerCase()
|
|
856
|
-
.replace(/[^a-z0-9_]/g, '_')
|
|
857
|
-
.replace(/-+/g, '_')
|
|
858
|
-
.replace(/^-|-$/g, '')
|
|
859
|
-
)
|
|
860
|
-
}
|
|
861
|
-
}}
|
|
862
|
-
/>
|
|
863
|
-
</div>
|
|
864
|
-
<div class="py-2"></div>
|
|
865
|
-
<Path
|
|
866
|
-
autofocus={false}
|
|
867
|
-
bind:this={path}
|
|
868
|
-
bind:error={pathError}
|
|
869
|
-
bind:path={newEditedPath}
|
|
870
|
-
bind:dirty={dirtyPath}
|
|
871
|
-
initialPath=""
|
|
872
|
-
namePlaceholder="app"
|
|
873
|
-
kind="app"
|
|
874
|
-
/>
|
|
875
|
-
<div class="py-4"></div>
|
|
876
|
-
|
|
877
780
|
{#snippet actions()}
|
|
878
781
|
<div>
|
|
879
782
|
<Button
|
|
@@ -885,6 +788,8 @@ loadGlobalWorkspacedRouteSetting();
|
|
|
885
788
|
</Button>
|
|
886
789
|
</div>
|
|
887
790
|
{/snippet}
|
|
791
|
+
|
|
792
|
+
<AppEditorHeaderDeployInitialDraft {summary} {appPath} bind:pathError bind:newEditedPath />
|
|
888
793
|
</DrawerContent>
|
|
889
794
|
</Drawer>
|
|
890
795
|
{/if}
|
|
@@ -907,59 +812,6 @@ loadGlobalWorkspacedRouteSetting();
|
|
|
907
812
|
/>
|
|
908
813
|
<Drawer bind:open={saveDrawerOpen} size="800px">
|
|
909
814
|
<DrawerContent title="Deploy" on:close={() => closeSaveDrawer()}>
|
|
910
|
-
{#if !onLatest}
|
|
911
|
-
<Alert title="You're not on the latest app version. " type="warning">
|
|
912
|
-
By deploying, you may overwrite changes made by other users. Press 'Deploy' to see diff.
|
|
913
|
-
</Alert>
|
|
914
|
-
<div class="py-2"></div>
|
|
915
|
-
{/if}
|
|
916
|
-
<span class="text-secondary text-sm font-bold">Summary</span>
|
|
917
|
-
<div class="w-full pt-2">
|
|
918
|
-
<!-- svelte-ignore a11y_autofocus -->
|
|
919
|
-
<input
|
|
920
|
-
autofocus
|
|
921
|
-
type="text"
|
|
922
|
-
placeholder="App summary"
|
|
923
|
-
class="text-sm w-full"
|
|
924
|
-
bind:value={$summary}
|
|
925
|
-
onkeydown={stopPropagation(bubble('keydown'))}
|
|
926
|
-
onkeyup={() => {
|
|
927
|
-
if ($appPath == '' && $summary?.length > 0 && !dirtyPath) {
|
|
928
|
-
path?.setName(
|
|
929
|
-
$summary
|
|
930
|
-
.toLowerCase()
|
|
931
|
-
.replace(/[^a-z0-9_]/g, '_')
|
|
932
|
-
.replace(/-+/g, '_')
|
|
933
|
-
.replace(/^-|-$/g, '')
|
|
934
|
-
)
|
|
935
|
-
}
|
|
936
|
-
}}
|
|
937
|
-
/>
|
|
938
|
-
</div>
|
|
939
|
-
<div class="py-4"></div>
|
|
940
|
-
<span class="text-secondary text-sm font-bold">Deployment message</span>
|
|
941
|
-
<div class="w-full pt-2">
|
|
942
|
-
<!-- svelte-ignore a11y_autofocus -->
|
|
943
|
-
<input
|
|
944
|
-
type="text"
|
|
945
|
-
placeholder="Optional deployment message"
|
|
946
|
-
class="text-sm w-full"
|
|
947
|
-
bind:value={deploymentMsg}
|
|
948
|
-
/>
|
|
949
|
-
</div>
|
|
950
|
-
<div class="py-4"></div>
|
|
951
|
-
<span class="text-secondary text-sm font-bold">Path</span>
|
|
952
|
-
<Path
|
|
953
|
-
bind:this={path}
|
|
954
|
-
bind:dirty={dirtyPath}
|
|
955
|
-
bind:error={pathError}
|
|
956
|
-
bind:path={newEditedPath}
|
|
957
|
-
initialPath={newPath}
|
|
958
|
-
namePlaceholder="app"
|
|
959
|
-
kind="app"
|
|
960
|
-
autofocus={false}
|
|
961
|
-
/>
|
|
962
|
-
|
|
963
815
|
{#snippet actions()}
|
|
964
816
|
<div class="flex flex-row gap-4">
|
|
965
817
|
<Button
|
|
@@ -1019,111 +871,21 @@ loadGlobalWorkspacedRouteSetting();
|
|
|
1019
871
|
</Button>
|
|
1020
872
|
</div>
|
|
1021
873
|
{/snippet}
|
|
1022
|
-
<
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
<h2>Public URL</h2>
|
|
1038
|
-
|
|
1039
|
-
<div class="my-6">
|
|
1040
|
-
<div class="flex gap-2 items-center mb-2">
|
|
1041
|
-
<Toggle
|
|
1042
|
-
options={{
|
|
1043
|
-
left: `Require login and read-access`,
|
|
1044
|
-
right: `No login required`
|
|
1045
|
-
}}
|
|
1046
|
-
checked={policy.execution_mode == 'anonymous'}
|
|
1047
|
-
on:change={(e) => {
|
|
1048
|
-
policy.execution_mode = e.detail ? 'anonymous' : 'publisher'
|
|
1049
|
-
setPublishState()
|
|
1050
|
-
}}
|
|
1051
|
-
disabled={$appPath == ''}
|
|
1052
|
-
/>
|
|
1053
|
-
</div>
|
|
1054
|
-
{#if $appPath == ''}
|
|
1055
|
-
<ClipboardPanel content={`Save this app once to get the public secret URL`} size="md" />
|
|
1056
|
-
{:else if secretUrlHref}
|
|
1057
|
-
<ClipboardPanel content={secretUrlHref} size="md" />
|
|
1058
|
-
{:else}<Loader2 class="animate-spin" />
|
|
1059
|
-
{/if}
|
|
1060
|
-
<div class="text-xs text-secondary mt-1">
|
|
1061
|
-
Share this url directly or embed it using an iframe (if requiring login, top-level domain of
|
|
1062
|
-
embedding app must be the same as the one of Windmill)
|
|
1063
|
-
</div>
|
|
1064
|
-
|
|
1065
|
-
<div class="mt-4">
|
|
1066
|
-
{#if !($userStore?.is_admin || $userStore?.is_super_admin)}
|
|
1067
|
-
<Alert type="warning" title="Admin only" size="xs">
|
|
1068
|
-
Custom path can only be set by workspace admins
|
|
1069
|
-
</Alert>
|
|
1070
|
-
<div class="mb-2"></div>
|
|
1071
|
-
{/if}
|
|
1072
|
-
{#if !$enterpriseLicense}
|
|
1073
|
-
<div class="flex text-xs items-center gap-1 text-yellow-500 whitespace-nowrap mb-2">
|
|
1074
|
-
<AlertTriangle size={16} />
|
|
1075
|
-
EE only <Tooltip>Enterprise Edition only feature</Tooltip>
|
|
1076
|
-
</div>
|
|
1077
|
-
{/if}
|
|
1078
|
-
<Toggle
|
|
1079
|
-
on:change={({ detail }) => {
|
|
1080
|
-
customPath = detail ? '' : undefined
|
|
1081
|
-
if (customPath === undefined) {
|
|
1082
|
-
customPathError = ''
|
|
1083
|
-
}
|
|
1084
|
-
}}
|
|
1085
|
-
checked={customPath !== undefined}
|
|
1086
|
-
options={{
|
|
1087
|
-
right: 'Use a custom URL'
|
|
1088
|
-
}}
|
|
1089
|
-
disabled={!$enterpriseLicense || !($userStore?.is_admin || $userStore?.is_super_admin)}
|
|
1090
|
-
/>
|
|
1091
|
-
|
|
1092
|
-
{#if customPath !== undefined}
|
|
1093
|
-
<div class="text-secondary text-sm flex items-center gap-1 w-full justify-between">
|
|
1094
|
-
<div>Custom path</div>
|
|
1095
|
-
</div>
|
|
1096
|
-
<input
|
|
1097
|
-
disabled={!($userStore?.is_admin || $userStore?.is_super_admin)}
|
|
1098
|
-
type="text"
|
|
1099
|
-
autocomplete="off"
|
|
1100
|
-
bind:value={customPath}
|
|
1101
|
-
class={customPathError === ''
|
|
1102
|
-
? ''
|
|
1103
|
-
: 'border border-red-700 bg-red-100 border-opacity-30 focus:border-red-700 focus:border-opacity-30 focus-visible:ring-red-700 focus-visible:ring-opacity-25 focus-visible:border-red-700'}
|
|
1104
|
-
oninput={() => {
|
|
1105
|
-
dirtyCustomPath = true
|
|
1106
|
-
}}
|
|
1107
|
-
/>
|
|
1108
|
-
<div class="text-secondary text-sm flex items-center gap-1 mt-2 w-full justify-between">
|
|
1109
|
-
<div>Custom public URL</div>
|
|
1110
|
-
</div>
|
|
1111
|
-
<ClipboardPanel content={fullCustomUrl} size="md" />
|
|
1112
|
-
|
|
1113
|
-
<div class="text-red-600 dark:text-red-400 text-2xs mt-1.5"
|
|
1114
|
-
>{dirtyCustomPath ? customPathError : ''}
|
|
1115
|
-
</div>
|
|
1116
|
-
{/if}
|
|
1117
|
-
</div>
|
|
1118
|
-
</div>
|
|
1119
|
-
<Alert type="info" title="Only latest deployed app is publicly available">
|
|
1120
|
-
You will still need to deploy the app to make visible the latest changes
|
|
1121
|
-
</Alert>
|
|
1122
|
-
|
|
1123
|
-
<a
|
|
1124
|
-
href="https://www.windmill.dev/docs/advanced/external_auth_with_jwt#embed-public-apps-using-your-own-authentification"
|
|
1125
|
-
class="mt-4 text-2xs">Embed this app in your own product to be used by your own users</a
|
|
1126
|
-
>
|
|
874
|
+
<AppEditorHeaderDeploy
|
|
875
|
+
{newPath}
|
|
876
|
+
{policy}
|
|
877
|
+
{setPublishState}
|
|
878
|
+
appPath={$appPath}
|
|
879
|
+
{onLatest}
|
|
880
|
+
{savedApp}
|
|
881
|
+
bind:summary={$summary}
|
|
882
|
+
bind:customPath
|
|
883
|
+
bind:deploymentMsg
|
|
884
|
+
bind:customPathError
|
|
885
|
+
bind:pathError
|
|
886
|
+
bind:newEditedPath
|
|
887
|
+
hideSecretUrl={false}
|
|
888
|
+
/>
|
|
1127
889
|
</DrawerContent>
|
|
1128
890
|
</Drawer>
|
|
1129
891
|
|