windmill-components 1.596.1 → 1.613.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/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +2 -0
- package/dist/sharedUtils/base.d.ts +1 -0
- package/dist/sharedUtils/cloud.d.ts +1 -0
- package/dist/sharedUtils/common.d.ts +111 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +5 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +5 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +13 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +11 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +95 -0
- package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +6 -0
- package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +7 -0
- package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +33 -0
- package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +10 -0
- package/dist/sharedUtils/components/apps/editor/component/components.d.ts +5371 -0
- package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +3 -0
- package/dist/sharedUtils/components/apps/editor/component/index.d.ts +3 -0
- package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +7 -0
- package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +3 -0
- package/dist/sharedUtils/components/apps/gridUtils.d.ts +14 -0
- package/dist/sharedUtils/components/apps/inputType.d.ts +178 -0
- package/dist/sharedUtils/components/apps/rx.d.ts +29 -0
- package/dist/sharedUtils/components/apps/sharedTypes.d.ts +21 -0
- package/dist/sharedUtils/components/apps/types.d.ts +274 -0
- package/dist/sharedUtils/components/assets/lib.d.ts +25 -0
- package/dist/sharedUtils/components/common/alert/model.d.ts +2 -0
- package/dist/sharedUtils/components/common/badge/model.d.ts +8 -0
- package/dist/sharedUtils/components/common/button/model.d.ts +45 -0
- package/dist/sharedUtils/components/common/fileInput/model.d.ts +1 -0
- package/dist/sharedUtils/components/common/index.d.ts +24 -0
- package/dist/sharedUtils/components/common/skeleton/model.d.ts +21 -0
- package/dist/sharedUtils/components/dbTypes.d.ts +14 -0
- package/dist/sharedUtils/components/diff_drawer.d.ts +26 -0
- package/dist/sharedUtils/components/ducklake.d.ts +1 -0
- package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +7 -0
- package/dist/sharedUtils/components/icons/index.d.ts +101 -0
- package/dist/sharedUtils/components/random_positive_adjetive.d.ts +1 -0
- package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +10 -0
- package/dist/sharedUtils/components/raw_apps/utils.d.ts +15 -0
- package/dist/sharedUtils/components/triggers/email/utils.d.ts +4 -0
- package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/http/utils.d.ts +11 -0
- package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/nats/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +8 -0
- package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +32 -0
- package/dist/sharedUtils/components/triggers/utils.d.ts +80 -0
- package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers.d.ts +20 -0
- package/dist/sharedUtils/gen/core/ApiError.d.ts +10 -0
- package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +13 -0
- package/dist/sharedUtils/gen/core/ApiResult.d.ts +7 -0
- package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +26 -0
- package/dist/sharedUtils/gen/core/OpenAPI.d.ts +27 -0
- package/dist/sharedUtils/gen/core/request.d.ts +29 -0
- package/dist/sharedUtils/gen/index.d.ts +6 -0
- package/dist/sharedUtils/gen/schemas.gen.d.ts +7036 -0
- package/dist/sharedUtils/gen/services.gen.d.ts +6047 -0
- package/dist/sharedUtils/gen/types.gen.d.ts +21881 -0
- package/dist/sharedUtils/history.svelte.d.ts +9 -0
- package/dist/sharedUtils/hub.d.ts +49 -0
- package/dist/sharedUtils/jsr.json +6 -0
- package/dist/sharedUtils/lib.d.ts +5 -0
- package/dist/sharedUtils/lib.es.js +1588 -0
- package/dist/sharedUtils/package.json +12 -0
- package/dist/sharedUtils/schema.d.ts +3 -0
- package/dist/sharedUtils/stores.d.ts +97 -0
- package/dist/sharedUtils/svelte5Utils.svelte.d.ts +80 -0
- package/dist/sharedUtils/toast.d.ts +8 -0
- package/dist/sharedUtils/utils.d.ts +265 -0
- package/package/assets/tokens/tokens.json +11 -1
- package/package/ata/apis.js +78 -5
- package/package/components/AddUser.svelte +1 -1
- package/package/components/CenteredModal.svelte +32 -24
- package/package/components/CenteredModal.svelte.d.ts +7 -27
- package/package/components/CenteredPage.svelte +5 -2
- package/package/components/CenteredPage.svelte.d.ts +2 -0
- package/package/components/ConcurrentJobsChart.svelte +3 -2
- package/package/components/ConcurrentJobsChart.svelte.d.ts +2 -2
- package/package/components/CustomPopover.svelte +20 -23
- package/package/components/CustomPopover.svelte.d.ts +14 -39
- package/package/components/DBManager.svelte +105 -17
- package/package/components/DBManager.svelte.d.ts +2 -1
- package/package/components/DBManagerContent.svelte +4 -3
- package/package/components/DBManagerContent.svelte.d.ts +1 -1
- package/package/components/DBTableEditor.svelte +210 -171
- package/package/components/DBTableEditor.svelte.d.ts +22 -3
- package/package/components/Description.svelte +3 -2
- package/package/components/Dev.svelte +36 -2
- package/package/components/DiffDrawer.svelte +8 -29
- package/package/components/DiffEditor.svelte +32 -2
- package/package/components/DisplayResult.svelte +32 -24
- package/package/components/Editor.svelte +70 -16
- package/package/components/Editor.svelte.d.ts +3 -0
- package/package/components/EditorBar.svelte +1 -1
- package/package/components/FakeMonacoPlaceHolder.svelte +1 -1
- package/package/components/FlowBuilder.svelte +17 -11
- package/package/components/FlowDiffViewer.svelte +37 -0
- package/package/components/FlowDiffViewer.svelte.d.ts +7 -0
- package/package/components/FlowPreviewContent.svelte +3 -2
- package/package/components/FlowPreviewResult.svelte +0 -4
- package/package/components/FlowStatusViewerInner.svelte +50 -33
- package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -1
- package/package/components/FlowStatusWaitingForEvents.svelte +27 -23
- package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +4 -18
- package/package/components/FlowViewer.svelte +103 -2
- package/package/components/FlowViewer.svelte.d.ts +9 -3
- package/package/components/ForkWorkspaceBanner.svelte +16 -13
- package/package/components/GraphqlSchemaViewer.svelte +8 -1
- package/package/components/HistoricInputs.svelte +25 -27
- package/package/components/HistoricInputs.svelte.d.ts +2 -2
- package/package/components/InstanceSetting.svelte +38 -0
- package/package/components/InviteUser.svelte +16 -42
- package/package/components/InviteUser.svelte.d.ts +4 -18
- package/package/components/JobOtelTraces.svelte +287 -0
- package/package/components/JobOtelTraces.svelte.d.ts +6 -0
- package/package/components/JsonInputs.svelte +6 -8
- package/package/components/JsonInputs.svelte.d.ts +7 -8
- package/package/components/LogViewer.svelte +91 -33
- package/package/components/Login.svelte +21 -0
- package/package/components/ManualPopover.svelte +5 -6
- package/package/components/ManualPopover.svelte.d.ts +9 -35
- package/package/components/MemoryFootprintViewer.svelte +2 -6
- package/package/components/ModulePreview.svelte +23 -21
- package/package/components/ModulePreview.svelte.d.ts +1 -0
- package/package/components/Path.svelte +2 -2
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/ResourcePicker.svelte +3 -0
- package/package/components/ResourcePicker.svelte.d.ts +1 -0
- package/package/components/RunButton.svelte +5 -15
- package/package/components/RunButton.svelte.d.ts +7 -19
- package/package/components/RunChart.svelte +8 -4
- package/package/components/RunChart.svelte.d.ts +2 -2
- package/package/components/RunFormAdvancedPopup.svelte +1 -1
- package/package/components/RunsPage.svelte +169 -539
- package/package/components/RunsPage.svelte.d.ts +5 -5
- package/package/components/S3FilePicker.svelte +7 -11
- package/package/components/S3FilePickerInner.svelte +2 -3
- package/package/components/S3FilePickerInner.svelte.d.ts +2 -2
- package/package/components/SchemaForm.svelte +26 -19
- package/package/components/SchemaFormWithArgPicker.svelte +4 -3
- package/package/components/ScriptBuilder.svelte +1 -1
- package/package/components/ScriptEditor.svelte +575 -101
- package/package/components/Section.svelte +3 -1
- package/package/components/ServiceLogsInner.svelte +4 -4
- package/package/components/SimpleEditor.svelte +46 -2
- package/package/components/SuperadminSettingsInner.svelte +1 -1
- package/package/components/TemplateEditor.svelte +54 -29
- package/package/components/TemplateEditor.svelte.d.ts +13 -102
- package/package/components/UserSettings.svelte +1 -1
- package/package/components/WorkerTagPicker.svelte +1 -1
- package/package/components/WorkerTagSelect.svelte +5 -2
- package/package/components/WorkspaceTutorials.svelte +5 -0
- package/package/components/apps/components/buttons/AppButton.svelte +21 -6
- package/package/components/apps/components/buttons/AppForm.svelte +2 -1
- package/package/components/apps/components/buttons/AppFormButton.svelte +2 -1
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +0 -4
- package/package/components/apps/components/display/dbtable/metadata.js +69 -30
- package/package/components/apps/components/display/dbtable/queries/alterTable.d.ts +46 -0
- package/package/components/apps/components/display/dbtable/queries/alterTable.js +314 -0
- package/package/components/apps/components/display/dbtable/queries/alterTable.test.d.ts +1 -0
- package/package/components/apps/components/display/dbtable/queries/alterTable.test.js +867 -0
- package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +2 -24
- package/package/components/apps/components/display/dbtable/queries/createTable.js +11 -25
- package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.d.ts +9 -0
- package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.js +45 -0
- package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +47 -0
- package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +402 -0
- package/package/components/apps/components/display/dbtable/queries/select.d.ts +2 -0
- package/package/components/apps/components/display/dbtable/queries/select.js +37 -6
- package/package/components/apps/components/display/dbtable/tableEditor.d.ts +35 -0
- package/package/components/apps/components/display/dbtable/tableEditor.js +49 -0
- package/package/components/apps/components/display/dbtable/utils.d.ts +10 -1
- package/package/components/apps/components/display/dbtable/utils.js +52 -20
- package/package/components/apps/components/helpers/HiddenComponent.svelte +1 -1
- package/package/components/apps/components/helpers/InputValue.svelte +1 -1
- package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -2
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -1
- package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -2
- package/package/components/apps/editor/AppEditorHeader.svelte +8 -1
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +32 -29
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +2 -2
- package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +4 -4
- package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +3 -3
- package/package/components/apps/editor/PublicApp.svelte +49 -30
- package/package/components/apps/editor/PublicApp.svelte.d.ts +1 -0
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +77 -7
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/utils.d.ts +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/utils.js +10 -1
- package/package/components/apps/inputType.d.ts +6 -1
- package/package/components/auditLogs/AuditLogsFilters.svelte +9 -17
- package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
- package/package/components/common/button/model.js +1 -1
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -1
- package/package/components/common/languageIcons/TypeScript.svelte +5 -3
- package/package/components/common/languageIcons/TypeScript.svelte.d.ts +1 -0
- package/package/components/common/modal/Modal.svelte +3 -3
- package/package/components/copilot/autocomplete/Autocompletor.js +3 -2
- package/package/components/copilot/chat/AIButtonStyle.d.ts +1 -1
- package/package/components/copilot/chat/AIButtonStyle.js +2 -1
- package/package/components/copilot/chat/AIChat.svelte +3 -1
- package/package/components/copilot/chat/AIChatDisplay.svelte +89 -4
- package/package/components/copilot/chat/AIChatInput.svelte +275 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +107 -1
- package/package/components/copilot/chat/AiChatLayout.svelte +15 -30
- package/package/components/copilot/chat/AppAvailableContextList.svelte +263 -0
- package/package/components/copilot/chat/AppAvailableContextList.svelte.d.ts +13 -0
- package/package/components/copilot/chat/ContextElementBadge.svelte +44 -0
- package/package/components/copilot/chat/DatatableCreationPolicy.svelte +32 -33
- package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
- package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +3 -0
- package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +4 -0
- package/package/components/copilot/chat/app/core.d.ts +56 -15
- package/package/components/copilot/chat/app/core.js +141 -22
- package/package/components/copilot/chat/context.d.ts +59 -2
- package/package/components/copilot/chat/context.js +6 -2
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +22 -0
- package/package/components/copilot/chat/flow/core.d.ts +3 -1
- package/package/components/copilot/chat/flow/core.js +29 -2
- package/package/components/copilot/chat/flow/openFlow.json +1 -1
- package/package/components/copilot/chat/flow/openFlowZod.d.ts +1 -0
- package/package/components/copilot/chat/flow/openFlowZod.js +14 -2
- package/package/components/copilot/chat/script/core.d.ts +4 -1
- package/package/components/copilot/chat/script/core.js +38 -2
- package/package/components/copilot/chat/shared.d.ts +10 -0
- package/package/components/copilot/chat/shared.js +24 -0
- package/package/components/copilot/lib.d.ts +1 -1
- package/package/components/custom_ui.d.ts +2 -0
- package/package/components/dbOps.d.ts +18 -4
- package/package/components/dbOps.js +25 -3
- package/package/components/debug/DebugConsole.svelte +277 -0
- package/package/components/debug/DebugConsole.svelte.d.ts +13 -0
- package/package/components/debug/DebugPanel.svelte +97 -0
- package/package/components/debug/DebugPanel.svelte.d.ts +11 -0
- package/package/components/debug/DebugToolbar.svelte +148 -0
- package/package/components/debug/DebugToolbar.svelte.d.ts +17 -0
- package/package/components/debug/DebugVariableViewer.svelte +115 -0
- package/package/components/debug/DebugVariableViewer.svelte.d.ts +11 -0
- package/package/components/debug/MonacoDebugger.svelte +384 -0
- package/package/components/debug/MonacoDebugger.svelte.d.ts +15 -0
- package/package/components/debug/dapClient.d.ts +192 -0
- package/package/components/debug/dapClient.js +426 -0
- package/package/components/debug/debugUtils.d.ts +30 -0
- package/package/components/debug/debugUtils.js +131 -0
- package/package/components/debug/index.d.ts +75 -0
- package/package/components/debug/index.js +82 -0
- package/package/components/flows/CreateActionsApp.svelte +6 -4
- package/package/components/flows/DebounceLimit.svelte.d.ts +1 -1
- package/package/components/flows/FlowHistoryInner.svelte +15 -4
- package/package/components/flows/content/AgentToolWrapper.svelte +1 -1
- package/package/components/flows/content/FlowEditorDrawer.svelte +124 -0
- package/package/components/flows/content/FlowEditorDrawer.svelte.d.ts +22 -0
- package/package/components/flows/content/FlowInput.svelte +211 -37
- package/package/components/flows/content/FlowModuleComponent.svelte +553 -67
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +8 -10
- package/package/components/flows/content/FlowModuleHeader.svelte +7 -4
- package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +1 -1
- package/package/components/flows/content/McpOAuthConnect.svelte +217 -0
- package/package/components/flows/content/McpOAuthConnect.svelte.d.ts +7 -0
- package/package/components/flows/content/McpToolEditor.svelte +50 -37
- package/package/components/flows/content/McpToolEditor.svelte.d.ts +0 -1
- package/package/components/flows/conversations/FlowChat.svelte +16 -2
- package/package/components/flows/conversations/FlowChat.svelte.d.ts +2 -1
- package/package/components/flows/conversations/FlowChatInterface.svelte +103 -6
- package/package/components/flows/conversations/FlowChatInterface.svelte.d.ts +2 -0
- package/package/components/flows/conversations/FlowChatManager.svelte.js +53 -21
- package/package/components/flows/header/FlowImportExportMenu.svelte +1 -1
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +3 -1
- package/package/components/flows/types.d.ts +2 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +16 -8
- package/package/components/home/ItemsList.svelte +5 -5
- package/package/components/home/TutorialBanner.svelte +34 -18
- package/package/components/icons/CssIcon.svelte +20 -0
- package/package/components/icons/CssIcon.svelte.d.ts +7 -25
- package/package/components/icons/HtmlIcon.svelte +20 -0
- package/package/components/icons/HtmlIcon.svelte.d.ts +8 -0
- package/package/components/icons/JavaScriptIcon.svelte +10 -2
- package/package/components/icons/JavaScriptIcon.svelte.d.ts +1 -0
- package/package/components/icons/JsonIcon.svelte +8 -2
- package/package/components/icons/JsonIcon.svelte.d.ts +1 -0
- package/package/components/icons/LessIcon.svelte +16 -0
- package/package/components/icons/LessIcon.svelte.d.ts +8 -0
- package/package/components/icons/MarkdownIcon.svelte +20 -0
- package/package/components/icons/MarkdownIcon.svelte.d.ts +8 -0
- package/package/components/icons/ReactIcon.svelte +10 -2
- package/package/components/icons/ReactIcon.svelte.d.ts +1 -0
- package/package/components/icons/SassIcon.svelte +28 -0
- package/package/components/icons/SassIcon.svelte.d.ts +8 -0
- package/package/components/icons/SvelteIcon.svelte +10 -2
- package/package/components/icons/SvelteIcon.svelte.d.ts +1 -0
- package/package/components/icons/VueIcon.svelte +10 -2
- package/package/components/icons/VueIcon.svelte.d.ts +1 -0
- package/package/components/icons/YamlIcon.svelte +20 -0
- package/package/components/icons/YamlIcon.svelte.d.ts +8 -0
- package/package/components/instanceSettings/SecretBackendConfig.svelte +514 -0
- package/package/components/instanceSettings/SecretBackendConfig.svelte.d.ts +8 -0
- package/package/components/instanceSettings.d.ts +2 -1
- package/package/components/instanceSettings.js +32 -1
- package/package/components/jobs/JobPreview.svelte +46 -39
- package/package/components/jobs/JobPreview.svelte.d.ts +1 -0
- package/package/components/monacoLanguagesOptions.js +16 -15
- package/package/components/propertyPicker/PropPicker.svelte +16 -2
- package/package/components/propertyPicker/PropPicker.svelte.d.ts +2 -0
- package/package/components/raw_apps/DefaultDatabaseSelector.svelte +9 -5
- package/package/components/raw_apps/FileEditorIcon.svelte +12 -7
- package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +2 -0
- package/package/components/raw_apps/FileTreeNode.svelte +119 -83
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte +88 -8
- package/package/components/raw_apps/RawAppDataTableList.svelte +12 -9
- package/package/components/raw_apps/RawAppEditor.svelte +218 -68
- package/package/components/raw_apps/RawAppEditorHeader.svelte +33 -16
- package/package/components/raw_apps/RawAppHistoryList.svelte +264 -80
- package/package/components/raw_apps/RawAppHistoryList.svelte.d.ts +1 -0
- package/package/components/raw_apps/RawAppHistoryManager.svelte.d.ts +15 -1
- package/package/components/raw_apps/RawAppHistoryManager.svelte.js +46 -12
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +549 -47
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +31 -5
- package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +25 -18
- package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -0
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +141 -10
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +8 -0
- package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +2 -1
- package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +9 -1
- package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +47 -3
- package/package/components/raw_apps/RawAppInputsSpecEditor.svelte.d.ts +2 -2
- package/package/components/raw_apps/RawAppModules.svelte +13 -7
- package/package/components/raw_apps/RawAppPreview.svelte +48 -6
- package/package/components/raw_apps/RawAppSidebar.svelte +194 -125
- package/package/components/raw_apps/RawAppSidebar.svelte.d.ts +1 -0
- package/package/components/raw_apps/RunnableRow.svelte +41 -0
- package/package/components/raw_apps/RunnableRow.svelte.d.ts +11 -0
- package/package/components/raw_apps/utils.d.ts +1 -1
- package/package/components/raw_apps/utils.js +76 -18
- package/package/components/runs/ManuelDatePicker.svelte +3 -3
- package/package/components/runs/ManuelDatePicker.svelte.d.ts +3 -3
- package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -1
- package/package/components/runs/RunsFilter.svelte +75 -63
- package/package/components/runs/RunsFilter.svelte.d.ts +35 -4
- package/package/components/runs/RunsQueue.svelte.d.ts +1 -1
- package/package/components/runs/RunsTable.svelte +1 -1
- package/package/components/runs/RunsTable.svelte.d.ts +1 -1
- package/package/components/runs/useJobsLoader.svelte.d.ts +34 -0
- package/package/components/runs/useJobsLoader.svelte.js +507 -0
- package/package/components/scriptEditor/LogPanel.svelte +17 -2
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
- package/package/components/select/SelectDropdown.svelte +2 -2
- package/package/components/settings/AIPromptsModal.svelte +88 -0
- package/package/components/settings/AIPromptsModal.svelte.d.ts +11 -0
- package/package/components/settings/ChangeWorkspaceColor.svelte +4 -3
- package/package/components/settings/ChangeWorkspaceId.svelte +14 -10
- package/package/components/settings/ChangeWorkspaceName.svelte +7 -6
- package/package/components/settings/CreateToken.svelte +1 -1
- package/package/components/settings/UserAIPromptsSettings.svelte +56 -15
- package/package/components/settings/WorkspaceOperatorSettings.svelte +68 -85
- package/package/components/settings/WorkspaceUserSettings.svelte +531 -406
- package/package/components/sidebar/MenuButton.svelte +46 -24
- package/package/components/sidebar/MenuButton.svelte.d.ts +2 -0
- package/package/components/sidebar/MultiplayerMenu.svelte +3 -3
- package/package/components/sidebar/OperatorMenu.svelte +62 -87
- package/package/components/sidebar/SidebarContent.svelte +7 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +35 -85
- package/package/components/sqlTypeService.js +4 -3
- package/package/components/table/DataTable.svelte +3 -2
- package/package/components/table/DataTable.svelte.d.ts +1 -0
- package/package/components/text_input/TextInput.svelte +3 -0
- package/package/components/text_input/TextInput.svelte.d.ts +2 -0
- package/package/components/tutorials/FlowBuilderLiveTutorial.svelte +6 -35
- package/package/components/tutorials/RunsTutorial.svelte +399 -0
- package/package/components/{schema/SchemaPicker.svelte.d.ts → tutorials/RunsTutorial.svelte.d.ts} +11 -12
- package/package/components/tutorials/TroubleshootFlowTutorial.svelte +5 -20
- package/package/components/tutorials/utils.d.ts +16 -0
- package/package/components/tutorials/utils.js +96 -0
- package/package/components/tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte +133 -0
- package/package/components/{SavedInputs.svelte.d.ts → tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte.d.ts} +8 -11
- package/package/components/vscode.js +6 -6
- package/package/components/workspace/WorkspaceCard.svelte +184 -0
- package/package/components/workspace/WorkspaceCard.svelte.d.ts +24 -0
- package/package/components/workspace/WorkspaceIcon.svelte +21 -0
- package/package/components/workspace/WorkspaceIcon.svelte.d.ts +9 -0
- package/package/components/workspace/WorkspaceTreeView.svelte +331 -0
- package/package/components/workspace/WorkspaceTreeView.svelte.d.ts +15 -0
- package/package/components/workspaceSettings/AISettings.svelte +146 -108
- package/package/components/workspaceSettings/CreateWorkspace.svelte +25 -11
- package/package/components/workspaceSettings/DucklakeSettings.svelte +46 -23
- package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +2 -1
- package/package/components/workspaceSettings/ModelTokenLimits.svelte +14 -18
- package/package/components/workspaceSettings/StorageSettings.svelte +280 -241
- package/package/components/workspaceSettings/StorageSettings.svelte.d.ts +1 -0
- package/package/consts.js +4 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +126 -0
- package/package/gen/schemas.gen.js +126 -0
- package/package/gen/services.gen.d.ts +151 -2
- package/package/gen/services.gen.js +301 -4
- package/package/gen/types.gen.d.ts +584 -2
- package/package/hubPaths.json +3 -2
- package/package/infer.js +2 -0
- package/package/monaco_workers/graphql.worker.bundle.js +121 -121
- package/package/rawAppWmillTs.d.ts +11 -0
- package/package/rawAppWmillTs.js +38 -1
- package/package/svelte5Utils.svelte.d.ts +9 -0
- package/package/svelte5Utils.svelte.js +51 -1
- package/package/tutorialUtils.js +0 -4
- package/package/tutorials/config.js +31 -3
- package/package/tutorials/roleUtils.d.ts +1 -1
- package/package/tutorials/roleUtils.js +6 -2
- package/package/utils.js +159 -1
- package/package.json +16 -17
- package/package/components/SavedInputs.svelte +0 -416
- package/package/components/runs/JobsLoader.svelte +0 -468
- package/package/components/runs/JobsLoader.svelte.d.ts +0 -49
- package/package/components/schema/SchemaPicker.svelte +0 -92
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">import { BROWSER } from 'esm-env';
|
|
2
2
|
import { JobService } from '../gen';
|
|
3
3
|
import { enterpriseLicense, userStore, workspaceStore } from '../stores';
|
|
4
|
-
import { copyToClipboard, emptySchema, sendUserToast } from '../utils';
|
|
4
|
+
import { copyToClipboard, emptySchema, getLocalSetting, sendUserToast, storeLocalSetting } from '../utils';
|
|
5
5
|
import Editor from './Editor.svelte';
|
|
6
6
|
import { inferArgs, inferAssets, inferAnsibleExecutionMode } from '../infer';
|
|
7
7
|
import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
@@ -19,7 +19,9 @@ import { scriptLangToEditorLang } from '../scripts';
|
|
|
19
19
|
import { WebsocketProvider } from 'y-websocket';
|
|
20
20
|
import Modal from './common/modal/Modal.svelte';
|
|
21
21
|
import DiffEditor from './DiffEditor.svelte';
|
|
22
|
-
import { Copy, CornerDownLeft, ExternalLink, Github, GitBranch, Play, PlayIcon, WandSparkles } from 'lucide-svelte';
|
|
22
|
+
import { AlertTriangle, Bug, Copy, CornerDownLeft, ExternalLink, Github, GitBranch, Play, PlayIcon, Terminal, WandSparkles } from 'lucide-svelte';
|
|
23
|
+
import { DebugToolbar, DebugPanel, DebugConsole, getDAPClient, debugState, resetDAPClient, getDebugServerUrl, isDebuggable, getDebugFileExtension, fetchContextualVariables, signDebugRequest, getDebugErrorMessage } from './debug';
|
|
24
|
+
import { SvelteSet } from 'svelte/reactivity';
|
|
23
25
|
import { setLicense } from '../enterpriseUtils';
|
|
24
26
|
import Tabs from './common/tabs/Tabs.svelte';
|
|
25
27
|
import Tab from './common/tabs/Tab.svelte';
|
|
@@ -118,6 +120,46 @@ let peers = $state([]);
|
|
|
118
120
|
let showCollabPopup = $state(false);
|
|
119
121
|
let ansibleAlternativeExecutionMode = $state();
|
|
120
122
|
let ansibleGitSshIdentity = $state([]);
|
|
123
|
+
// Debug mode state
|
|
124
|
+
const DEBUG_BETA_WARNING_KEY = 'debug_beta_warning_confirmed';
|
|
125
|
+
let showDebugBetaWarning = $state(false);
|
|
126
|
+
let debugMode = $state(false);
|
|
127
|
+
let debugBreakpoints = new SvelteSet();
|
|
128
|
+
let breakpointDecorations = $state([]);
|
|
129
|
+
let currentLineDecoration = $state([]);
|
|
130
|
+
// Get the DAP server URL based on language
|
|
131
|
+
const dapServerUrl = $derived(getDebugServerUrl((lang || 'python3')));
|
|
132
|
+
const debugFilePath = $derived(`/tmp/script${getDebugFileExtension(lang || '')}`);
|
|
133
|
+
let dapClient = $state(null);
|
|
134
|
+
const isDebuggableScript = $derived(isDebuggable(lang || ''));
|
|
135
|
+
// Derived: show debug panel when connected and (running or stopped, but not terminated)
|
|
136
|
+
const showDebugPanel = $derived(debugMode && $debugState.connected && ($debugState.running || $debugState.stopped));
|
|
137
|
+
// Derived: debug has a result (script completed)
|
|
138
|
+
const hasDebugResult = $derived(debugMode && $debugState.result !== undefined);
|
|
139
|
+
// Show debug console at bottom of editor when debugging is active
|
|
140
|
+
let showDebugConsole = $state(true);
|
|
141
|
+
const debugConsoleVisible = $derived(showDebugPanel && showDebugConsole);
|
|
142
|
+
// Selected stack frame ID - shared between DebugPanel and DebugConsole
|
|
143
|
+
let selectedDebugFrameId = $state(null);
|
|
144
|
+
// Use selected frame or first frame for console context
|
|
145
|
+
const currentDebugFrameId = $derived(selectedDebugFrameId ?? $debugState.stackFrames[0]?.id);
|
|
146
|
+
// Job ID of the current debug session (for expression signing/audit logging)
|
|
147
|
+
let debugSessionJobId = $state(null);
|
|
148
|
+
// Pane sizes for editor/console split (percentage)
|
|
149
|
+
let editorPaneSize = $state(75);
|
|
150
|
+
let consolePaneSize = $state(25);
|
|
151
|
+
// Breakpoint decoration options
|
|
152
|
+
// stickiness: 1 = NeverGrowsWhenTypingAtEdges - decorations track their position when code changes
|
|
153
|
+
const breakpointDecorationType = {
|
|
154
|
+
glyphMarginClassName: 'debug-breakpoint-glyph',
|
|
155
|
+
glyphMarginHoverMessage: { value: 'Breakpoint (click to remove)' },
|
|
156
|
+
stickiness: 1
|
|
157
|
+
};
|
|
158
|
+
const currentLineDecorationType = {
|
|
159
|
+
isWholeLine: true,
|
|
160
|
+
className: 'debug-current-line',
|
|
161
|
+
glyphMarginClassName: 'debug-current-line-glyph'
|
|
162
|
+
};
|
|
121
163
|
const url = new URL(window.location.toString());
|
|
122
164
|
let initialCollab = /true|1/i.test(url.searchParams.get('collab') ?? '0');
|
|
123
165
|
if (initialCollab) {
|
|
@@ -221,6 +263,286 @@ function handleAddInventories(event) {
|
|
|
221
263
|
// Trigger schema inference to update assets
|
|
222
264
|
inferSchema(newCode);
|
|
223
265
|
}
|
|
266
|
+
// Debug functions
|
|
267
|
+
function toggleBreakpoint(line) {
|
|
268
|
+
if (debugBreakpoints.has(line)) {
|
|
269
|
+
debugBreakpoints.delete(line);
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
debugBreakpoints.add(line);
|
|
273
|
+
}
|
|
274
|
+
updateBreakpointDecorations();
|
|
275
|
+
}
|
|
276
|
+
function updateBreakpointDecorations() {
|
|
277
|
+
const monacoEditor = editor?.getEditor?.();
|
|
278
|
+
if (!monacoEditor)
|
|
279
|
+
return;
|
|
280
|
+
const decorations = Array.from(debugBreakpoints).map((line) => ({
|
|
281
|
+
range: { startLineNumber: line, startColumn: 1, endLineNumber: line, endColumn: 1 },
|
|
282
|
+
options: breakpointDecorationType
|
|
283
|
+
}));
|
|
284
|
+
// Use untrack to prevent reactive loop when reading the old decorations
|
|
285
|
+
const oldDecorations = untrack(() => breakpointDecorations);
|
|
286
|
+
breakpointDecorations = monacoEditor.deltaDecorations(oldDecorations, decorations);
|
|
287
|
+
}
|
|
288
|
+
// Refresh breakpoint line numbers from decoration positions after code edits
|
|
289
|
+
function refreshBreakpointPositions() {
|
|
290
|
+
const monacoEditor = editor?.getEditor?.();
|
|
291
|
+
if (!monacoEditor || breakpointDecorations.length === 0)
|
|
292
|
+
return;
|
|
293
|
+
const model = monacoEditor.getModel();
|
|
294
|
+
if (!model)
|
|
295
|
+
return;
|
|
296
|
+
// Get current line numbers from decorations (Monaco tracks positions when code changes)
|
|
297
|
+
const newLines = new Set();
|
|
298
|
+
for (const decorationId of breakpointDecorations) {
|
|
299
|
+
const range = model.getDecorationRange(decorationId);
|
|
300
|
+
if (range) {
|
|
301
|
+
newLines.add(range.startLineNumber);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
// Check if positions changed
|
|
305
|
+
const oldLines = Array.from(debugBreakpoints).sort((a, b) => a - b);
|
|
306
|
+
const updatedLines = Array.from(newLines).sort((a, b) => a - b);
|
|
307
|
+
const positionsChanged = oldLines.length !== updatedLines.length ||
|
|
308
|
+
oldLines.some((line, i) => line !== updatedLines[i]);
|
|
309
|
+
if (positionsChanged) {
|
|
310
|
+
// Update breakpoints set with new positions
|
|
311
|
+
debugBreakpoints.clear();
|
|
312
|
+
for (const line of newLines) {
|
|
313
|
+
debugBreakpoints.add(line);
|
|
314
|
+
}
|
|
315
|
+
// Sync updated positions with server if connected
|
|
316
|
+
syncBreakpointsWithServer();
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
// Sync breakpoints with DAP server when connected
|
|
320
|
+
async function syncBreakpointsWithServer() {
|
|
321
|
+
if (!dapClient || !dapClient.isConnected())
|
|
322
|
+
return;
|
|
323
|
+
try {
|
|
324
|
+
await dapClient.setBreakpoints(debugFilePath, Array.from(debugBreakpoints));
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
console.error('Failed to sync breakpoints:', error);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
function updateCurrentLineDecoration(line) {
|
|
331
|
+
const monacoEditor = editor?.getEditor?.();
|
|
332
|
+
if (!monacoEditor)
|
|
333
|
+
return;
|
|
334
|
+
// Use untrack to prevent reactive loop when reading the old decorations
|
|
335
|
+
const oldDecorations = untrack(() => currentLineDecoration);
|
|
336
|
+
if (!line) {
|
|
337
|
+
currentLineDecoration = monacoEditor.deltaDecorations(oldDecorations, []);
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
const decorations = [
|
|
341
|
+
{
|
|
342
|
+
range: { startLineNumber: line, startColumn: 1, endLineNumber: line, endColumn: 1 },
|
|
343
|
+
options: currentLineDecorationType
|
|
344
|
+
}
|
|
345
|
+
];
|
|
346
|
+
currentLineDecoration = monacoEditor.deltaDecorations(oldDecorations, decorations);
|
|
347
|
+
monacoEditor.revealLineInCenter(line);
|
|
348
|
+
}
|
|
349
|
+
async function startDebugging() {
|
|
350
|
+
try {
|
|
351
|
+
// Show console when starting a debug session
|
|
352
|
+
showDebugConsole = true;
|
|
353
|
+
// Reset selected frame when starting new session
|
|
354
|
+
selectedDebugFrameId = null;
|
|
355
|
+
// Always reset and create a fresh DAP client with the correct URL for the current language
|
|
356
|
+
// This ensures we connect to the correct endpoint even if language changed
|
|
357
|
+
resetDAPClient();
|
|
358
|
+
dapClient = getDAPClient(dapServerUrl);
|
|
359
|
+
// Fetch contextual variables (WM_WORKSPACE, WM_TOKEN, etc.) from backend
|
|
360
|
+
const env = await fetchContextualVariables($workspaceStore ?? '');
|
|
361
|
+
// Sign the debug request (creates audit log entry)
|
|
362
|
+
let signedPayload;
|
|
363
|
+
try {
|
|
364
|
+
signedPayload = await signDebugRequest($workspaceStore ?? '', code ?? '', lang ?? 'python3');
|
|
365
|
+
debugSessionJobId = signedPayload.job_id;
|
|
366
|
+
}
|
|
367
|
+
catch (signError) {
|
|
368
|
+
sendUserToast(getDebugErrorMessage(signError), true);
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
await dapClient.connect();
|
|
372
|
+
await dapClient.initialize();
|
|
373
|
+
await dapClient.setBreakpoints(debugFilePath, Array.from(debugBreakpoints));
|
|
374
|
+
await dapClient.configurationDone();
|
|
375
|
+
// Pass the signed token along with other launch parameters
|
|
376
|
+
await dapClient.launch({
|
|
377
|
+
code,
|
|
378
|
+
cwd: '/tmp',
|
|
379
|
+
args: args ?? {},
|
|
380
|
+
callMain: true,
|
|
381
|
+
env,
|
|
382
|
+
// JWT token for verification by the debugger
|
|
383
|
+
token: signedPayload.token
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
catch (error) {
|
|
387
|
+
console.error('Failed to start debugging:', error);
|
|
388
|
+
sendUserToast(getDebugErrorMessage(error), true);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
async function stopDebugging() {
|
|
392
|
+
if (!dapClient)
|
|
393
|
+
return;
|
|
394
|
+
try {
|
|
395
|
+
await dapClient.terminate();
|
|
396
|
+
dapClient.disconnect();
|
|
397
|
+
}
|
|
398
|
+
catch (error) {
|
|
399
|
+
console.error('Failed to stop debugging:', error);
|
|
400
|
+
}
|
|
401
|
+
finally {
|
|
402
|
+
// Clear the job ID when debug session ends
|
|
403
|
+
debugSessionJobId = null;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
async function continueExecution() {
|
|
407
|
+
if (!dapClient)
|
|
408
|
+
return;
|
|
409
|
+
await dapClient.continue_();
|
|
410
|
+
}
|
|
411
|
+
async function stepOver() {
|
|
412
|
+
if (!dapClient)
|
|
413
|
+
return;
|
|
414
|
+
await dapClient.stepOver();
|
|
415
|
+
}
|
|
416
|
+
async function stepIn() {
|
|
417
|
+
if (!dapClient)
|
|
418
|
+
return;
|
|
419
|
+
await dapClient.stepIn();
|
|
420
|
+
}
|
|
421
|
+
async function stepOut() {
|
|
422
|
+
if (!dapClient)
|
|
423
|
+
return;
|
|
424
|
+
await dapClient.stepOut();
|
|
425
|
+
}
|
|
426
|
+
function clearAllBreakpoints() {
|
|
427
|
+
debugBreakpoints.clear();
|
|
428
|
+
updateBreakpointDecorations();
|
|
429
|
+
}
|
|
430
|
+
function toggleDebugMode() {
|
|
431
|
+
if (debugMode) {
|
|
432
|
+
// Exiting debug mode - clean up
|
|
433
|
+
debugMode = false;
|
|
434
|
+
stopDebugging();
|
|
435
|
+
clearAllBreakpoints();
|
|
436
|
+
updateCurrentLineDecoration(undefined);
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
// Entering debug mode - check if beta warning was confirmed
|
|
440
|
+
if (getLocalSetting(DEBUG_BETA_WARNING_KEY) !== 'true') {
|
|
441
|
+
showDebugBetaWarning = true;
|
|
442
|
+
}
|
|
443
|
+
else {
|
|
444
|
+
debugMode = true;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
function confirmDebugBetaWarning() {
|
|
449
|
+
storeLocalSetting(DEBUG_BETA_WARNING_KEY, 'true');
|
|
450
|
+
showDebugBetaWarning = false;
|
|
451
|
+
debugMode = true;
|
|
452
|
+
}
|
|
453
|
+
// Subscribe to debug state changes for current line highlighting
|
|
454
|
+
$effect(() => {
|
|
455
|
+
const currentLine = $debugState.currentLine;
|
|
456
|
+
if (debugMode) {
|
|
457
|
+
untrack(() => updateCurrentLineDecoration(currentLine));
|
|
458
|
+
}
|
|
459
|
+
});
|
|
460
|
+
// Watch for language changes - exit debug mode and reset client when language changes
|
|
461
|
+
let lastDebugLang = undefined;
|
|
462
|
+
$effect(() => {
|
|
463
|
+
const currentLang = lang;
|
|
464
|
+
if (lastDebugLang !== undefined && lastDebugLang !== currentLang && debugMode) {
|
|
465
|
+
// Language changed while in debug mode - exit debug mode
|
|
466
|
+
untrack(() => {
|
|
467
|
+
// Stop any running debug session
|
|
468
|
+
if (dapClient) {
|
|
469
|
+
dapClient
|
|
470
|
+
.terminate()
|
|
471
|
+
.catch(() => { })
|
|
472
|
+
.finally(() => {
|
|
473
|
+
dapClient?.disconnect();
|
|
474
|
+
});
|
|
475
|
+
}
|
|
476
|
+
// Reset the singleton
|
|
477
|
+
resetDAPClient();
|
|
478
|
+
dapClient = null;
|
|
479
|
+
// Exit debug mode
|
|
480
|
+
debugMode = false;
|
|
481
|
+
// Clear decorations
|
|
482
|
+
clearAllBreakpoints();
|
|
483
|
+
updateCurrentLineDecoration(undefined);
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
lastDebugLang = currentLang;
|
|
487
|
+
});
|
|
488
|
+
// Set up glyph margin click handler for breakpoints when debug mode is enabled
|
|
489
|
+
$effect(() => {
|
|
490
|
+
const monacoEditor = editor?.getEditor?.();
|
|
491
|
+
if (!monacoEditor)
|
|
492
|
+
return;
|
|
493
|
+
if (debugMode && isDebuggableScript) {
|
|
494
|
+
// Enable glyph margin for breakpoints
|
|
495
|
+
monacoEditor.updateOptions({ glyphMargin: true });
|
|
496
|
+
// Add click handler for glyph margin (breakpoint toggle)
|
|
497
|
+
const mouseDownDisposable = monacoEditor.onMouseDown((e) => {
|
|
498
|
+
// MouseTargetType.GUTTER_GLYPH_MARGIN = 2
|
|
499
|
+
if (e.target.type === 2) {
|
|
500
|
+
const line = e.target.position?.lineNumber;
|
|
501
|
+
if (line) {
|
|
502
|
+
toggleBreakpoint(line);
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
// Add F9 keyboard shortcut for toggling breakpoint at cursor
|
|
507
|
+
monacoEditor.addCommand(120, () => {
|
|
508
|
+
// KeyCode.F9 = 120
|
|
509
|
+
const position = monacoEditor.getPosition();
|
|
510
|
+
if (position) {
|
|
511
|
+
toggleBreakpoint(position.lineNumber);
|
|
512
|
+
}
|
|
513
|
+
});
|
|
514
|
+
// Debug stepping keyboard shortcuts (only active when stopped)
|
|
515
|
+
// F8 = Continue (KeyCode.F8 = 119)
|
|
516
|
+
monacoEditor.addCommand(119, () => {
|
|
517
|
+
if ($debugState.stopped)
|
|
518
|
+
continueExecution();
|
|
519
|
+
});
|
|
520
|
+
// F6 = Step Over (KeyCode.F6 = 117)
|
|
521
|
+
monacoEditor.addCommand(117, () => {
|
|
522
|
+
if ($debugState.stopped)
|
|
523
|
+
stepOver();
|
|
524
|
+
});
|
|
525
|
+
// F7 = Step Into (KeyCode.F7 = 118)
|
|
526
|
+
monacoEditor.addCommand(118, () => {
|
|
527
|
+
if ($debugState.stopped)
|
|
528
|
+
stepIn();
|
|
529
|
+
});
|
|
530
|
+
// Shift+F8 = Step Out (KeyMod.Shift | KeyCode.F8 = 1024 | 119 = 1143)
|
|
531
|
+
monacoEditor.addCommand(1143, () => {
|
|
532
|
+
if ($debugState.stopped)
|
|
533
|
+
stepOut();
|
|
534
|
+
});
|
|
535
|
+
return () => {
|
|
536
|
+
mouseDownDisposable.dispose();
|
|
537
|
+
// Disable glyph margin when exiting debug mode
|
|
538
|
+
monacoEditor.updateOptions({ glyphMargin: false });
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
else {
|
|
542
|
+
// Ensure glyph margin is disabled when not in debug mode
|
|
543
|
+
monacoEditor.updateOptions({ glyphMargin: false });
|
|
544
|
+
}
|
|
545
|
+
});
|
|
224
546
|
onMount(() => {
|
|
225
547
|
inferSchema(code, { applyInitialArgs: true });
|
|
226
548
|
loadPastTests();
|
|
@@ -277,7 +599,6 @@ export function disableCollaboration() {
|
|
|
277
599
|
if (!wsProvider?.shouldConnect)
|
|
278
600
|
return;
|
|
279
601
|
peers = [];
|
|
280
|
-
console.log('collab mode disabled');
|
|
281
602
|
wsProvider?.disconnect();
|
|
282
603
|
wsProvider.destroy();
|
|
283
604
|
wsProvider = undefined;
|
|
@@ -286,9 +607,15 @@ onDestroy(() => {
|
|
|
286
607
|
disableCollaboration();
|
|
287
608
|
aiChatManager.scriptEditorApplyCode = undefined;
|
|
288
609
|
aiChatManager.scriptEditorShowDiffMode = undefined;
|
|
610
|
+
aiChatManager.scriptEditorGetLintErrors = undefined;
|
|
289
611
|
aiChatManager.scriptEditorOptions = undefined;
|
|
290
612
|
aiChatManager.saveAndClear();
|
|
291
613
|
aiChatManager.changeMode(AIMode.NAVIGATOR);
|
|
614
|
+
// Clean up debug mode
|
|
615
|
+
if (debugMode) {
|
|
616
|
+
stopDebugging();
|
|
617
|
+
resetDAPClient();
|
|
618
|
+
}
|
|
292
619
|
});
|
|
293
620
|
function asKind(str) {
|
|
294
621
|
return str;
|
|
@@ -296,7 +623,7 @@ function asKind(str) {
|
|
|
296
623
|
function collabUrl() {
|
|
297
624
|
let url = new URL(window.location.toString().split('#')[0]);
|
|
298
625
|
url.search = '';
|
|
299
|
-
return `${url}?collab=1` + (edit ? '' : `&path=${path}`);
|
|
626
|
+
return `${url}?collab=1&workspace=${encodeURIComponent($workspaceStore ?? '')}&lang=${encodeURIComponent(lang ?? '')}` + (edit ? '' : `&path=${path}`);
|
|
300
627
|
}
|
|
301
628
|
let showTabs = $derived(hasPreprocessor);
|
|
302
629
|
$effect(() => {
|
|
@@ -365,6 +692,9 @@ $effect(() => {
|
|
|
365
692
|
await editor?.reviewAndApplyCode(code, opts);
|
|
366
693
|
};
|
|
367
694
|
aiChatManager.scriptEditorShowDiffMode = showDiffMode;
|
|
695
|
+
aiChatManager.scriptEditorGetLintErrors = () => {
|
|
696
|
+
return (editor?.getLintErrors() ?? { errorCount: 0, warningCount: 0, errors: [], warnings: [] });
|
|
697
|
+
};
|
|
368
698
|
});
|
|
369
699
|
});
|
|
370
700
|
</script>
|
|
@@ -401,6 +731,24 @@ $effect(() => {
|
|
|
401
731
|
/>
|
|
402
732
|
</div>
|
|
403
733
|
</Modal>
|
|
734
|
+
|
|
735
|
+
<Modal title="Debug Feature (Beta)" bind:open={showDebugBetaWarning}>
|
|
736
|
+
<div class="flex items-start gap-3">
|
|
737
|
+
<div class="flex-shrink-0">
|
|
738
|
+
<div class="flex h-10 w-10 items-center justify-center rounded-full bg-yellow-100 dark:bg-yellow-800/50">
|
|
739
|
+
<AlertTriangle class="h-5 w-5 text-yellow-600 dark:text-yellow-400" />
|
|
740
|
+
</div>
|
|
741
|
+
</div>
|
|
742
|
+
<div class="text-secondary text-sm">
|
|
743
|
+
<p>The Debug feature is currently in <strong>beta</strong>. You may encounter unexpected behavior or limitations.</p>
|
|
744
|
+
<p class="mt-2">By continuing, you acknowledge that this feature is experimental.</p>
|
|
745
|
+
</div>
|
|
746
|
+
</div>
|
|
747
|
+
{#snippet actions()}
|
|
748
|
+
<Button size="sm" on:click={confirmDebugBetaWarning}>Continue</Button>
|
|
749
|
+
{/snippet}
|
|
750
|
+
</Modal>
|
|
751
|
+
|
|
404
752
|
<div class="border-b shadow-sm px-1 pr-4" bind:clientWidth={width}>
|
|
405
753
|
<div class="flex justify-between space-x-2">
|
|
406
754
|
{#if args}
|
|
@@ -504,6 +852,24 @@ $effect(() => {
|
|
|
504
852
|
</div>
|
|
505
853
|
{/if}
|
|
506
854
|
|
|
855
|
+
{#if debugMode && isDebuggableScript}
|
|
856
|
+
<div transition:slide={{ duration: 200 }}>
|
|
857
|
+
<DebugToolbar
|
|
858
|
+
connected={$debugState.connected}
|
|
859
|
+
running={$debugState.running}
|
|
860
|
+
stopped={$debugState.stopped}
|
|
861
|
+
breakpointCount={debugBreakpoints.size}
|
|
862
|
+
onStart={startDebugging}
|
|
863
|
+
onStop={stopDebugging}
|
|
864
|
+
onContinue={continueExecution}
|
|
865
|
+
onStepOver={stepOver}
|
|
866
|
+
onStepIn={stepIn}
|
|
867
|
+
onStepOut={stepOut}
|
|
868
|
+
onClearBreakpoints={clearAllBreakpoints}
|
|
869
|
+
/>
|
|
870
|
+
</div>
|
|
871
|
+
{/if}
|
|
872
|
+
|
|
507
873
|
<div class="flex justify-center pt-1 relative">
|
|
508
874
|
<div class="absolute top-2 left-2">
|
|
509
875
|
<HideButton
|
|
@@ -517,44 +883,51 @@ $effect(() => {
|
|
|
517
883
|
}}
|
|
518
884
|
/>
|
|
519
885
|
</div>
|
|
520
|
-
{#if
|
|
521
|
-
|
|
522
|
-
<
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
{
|
|
533
|
-
|
|
534
|
-
<
|
|
535
|
-
|
|
536
|
-
btnClasses="w-full {!disableTriggerButton ? 'rounded-r-none' : ''}"
|
|
537
|
-
size="xs"
|
|
538
|
-
variant="accent-secondary"
|
|
539
|
-
startIcon={{ icon: Play, classes: 'animate-none' }}
|
|
540
|
-
shortCut={{ Icon: CornerDownLeft, hide: testIsLoading }}
|
|
886
|
+
{#if !(debugMode && isDebuggableScript)}
|
|
887
|
+
{#if testIsLoading}
|
|
888
|
+
<Button on:click={jobLoader?.cancelJob} btnClasses="w-full" color="red" size="xs">
|
|
889
|
+
<WindmillIcon
|
|
890
|
+
white={true}
|
|
891
|
+
class="mr-2 text-white"
|
|
892
|
+
height="16px"
|
|
893
|
+
width="20px"
|
|
894
|
+
spin="fast"
|
|
895
|
+
/>
|
|
896
|
+
Cancel
|
|
897
|
+
</Button>
|
|
898
|
+
{:else}
|
|
899
|
+
{@const disableTriggerButton = customUi?.previewPanel?.disableTriggerButton === true}
|
|
900
|
+
<div
|
|
901
|
+
class="flex flex-row divide-x divide-gray-800 dark:divide-gray-300 items-stretch"
|
|
541
902
|
>
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
903
|
+
<Button
|
|
904
|
+
on:click={() => runTest()}
|
|
905
|
+
btnClasses="w-full {!disableTriggerButton ? 'rounded-r-none' : ''}"
|
|
906
|
+
size="xs"
|
|
907
|
+
variant="accent-secondary"
|
|
908
|
+
startIcon={{ icon: Play, classes: 'animate-none' }}
|
|
909
|
+
shortCut={{ Icon: CornerDownLeft, hide: testIsLoading }}
|
|
910
|
+
>
|
|
911
|
+
{#if testIsLoading}
|
|
912
|
+
Running
|
|
913
|
+
{:else}
|
|
914
|
+
Test
|
|
915
|
+
{/if}
|
|
916
|
+
</Button>
|
|
917
|
+
{#if !disableTriggerButton}
|
|
918
|
+
<CaptureButton on:openTriggers />
|
|
546
919
|
{/if}
|
|
547
|
-
</
|
|
548
|
-
|
|
549
|
-
<CaptureButton on:openTriggers />
|
|
550
|
-
{/if}
|
|
551
|
-
</div>
|
|
920
|
+
</div>
|
|
921
|
+
{/if}
|
|
552
922
|
{/if}
|
|
553
923
|
<div class="absolute top-2 right-2"
|
|
554
924
|
><Toggle size="2xs" bind:checked={jsonView} options={{ right: 'JSON' }} /></div
|
|
555
925
|
>
|
|
556
926
|
</div>
|
|
557
|
-
<Splitpanes
|
|
927
|
+
<Splitpanes
|
|
928
|
+
horizontal
|
|
929
|
+
class="!max-h-[calc(100%-{debugMode && isDebuggableScript ? '83' : '43'}px)]"
|
|
930
|
+
>
|
|
558
931
|
<Pane size={33}>
|
|
559
932
|
{#if jsonView}
|
|
560
933
|
<div
|
|
@@ -599,16 +972,27 @@ $effect(() => {
|
|
|
599
972
|
<LogPanel
|
|
600
973
|
bind:this={logPanel}
|
|
601
974
|
{lang}
|
|
602
|
-
previewJob={
|
|
975
|
+
previewJob={debugMode
|
|
976
|
+
? ({
|
|
977
|
+
id: 'debug',
|
|
978
|
+
logs: $debugState.logs,
|
|
979
|
+
result: $debugState.result,
|
|
980
|
+
success: !$debugState.error,
|
|
981
|
+
type: hasDebugResult ? 'CompletedJob' : 'QueuedJob'
|
|
982
|
+
} as any)
|
|
983
|
+
: testJob}
|
|
603
984
|
{pastPreviews}
|
|
604
|
-
previewIsLoading={
|
|
985
|
+
previewIsLoading={debugMode
|
|
986
|
+
? $debugState.running && !$debugState.stopped
|
|
987
|
+
: testIsLoading}
|
|
605
988
|
{editor}
|
|
606
989
|
{diffEditor}
|
|
607
990
|
{args}
|
|
608
991
|
{showCaptures}
|
|
609
992
|
customUi={customUi?.previewPanel}
|
|
993
|
+
showCustomResultPanel={showDebugPanel}
|
|
610
994
|
>
|
|
611
|
-
{#if scriptProgress}
|
|
995
|
+
{#if scriptProgress && !debugMode}
|
|
612
996
|
<!-- Put to the slot in logpanel -->
|
|
613
997
|
<JobProgressBar
|
|
614
998
|
job={testJob}
|
|
@@ -632,6 +1016,15 @@ $effect(() => {
|
|
|
632
1016
|
/>
|
|
633
1017
|
</div>
|
|
634
1018
|
{/snippet}
|
|
1019
|
+
{#snippet customResultPanel()}
|
|
1020
|
+
<DebugPanel
|
|
1021
|
+
stackFrames={$debugState.stackFrames}
|
|
1022
|
+
scopes={$debugState.scopes}
|
|
1023
|
+
variables={$debugState.variables}
|
|
1024
|
+
client={dapClient}
|
|
1025
|
+
bind:selectedFrameId={selectedDebugFrameId}
|
|
1026
|
+
/>
|
|
1027
|
+
{/snippet}
|
|
635
1028
|
</LogPanel>
|
|
636
1029
|
</Pane>
|
|
637
1030
|
</Splitpanes>
|
|
@@ -646,11 +1039,37 @@ $effect(() => {
|
|
|
646
1039
|
{#if assets?.length}
|
|
647
1040
|
<AssetsDropdownButton {assets} />
|
|
648
1041
|
{/if}
|
|
1042
|
+
{#if isDebuggableScript && customUi?.editorBar?.debug != false}
|
|
1043
|
+
<Button
|
|
1044
|
+
variant={debugMode ? 'accent' : 'default'}
|
|
1045
|
+
size="xs"
|
|
1046
|
+
onclick={toggleDebugMode}
|
|
1047
|
+
startIcon={{ icon: Bug }}
|
|
1048
|
+
btnClasses={debugMode
|
|
1049
|
+
? ''
|
|
1050
|
+
: 'bg-surface hover:bg-surface-hover border border-tertiary/30'}
|
|
1051
|
+
title="Toggle Debug Mode"
|
|
1052
|
+
>
|
|
1053
|
+
{debugMode ? 'Exit Debug' : 'Debug'}
|
|
1054
|
+
</Button>
|
|
1055
|
+
{/if}
|
|
1056
|
+
{#if showDebugPanel && !showDebugConsole}
|
|
1057
|
+
<Button
|
|
1058
|
+
variant="default"
|
|
1059
|
+
size="xs"
|
|
1060
|
+
onclick={() => (showDebugConsole = true)}
|
|
1061
|
+
startIcon={{ icon: Terminal }}
|
|
1062
|
+
btnClasses="bg-surface hover:bg-surface-hover border border-tertiary/30"
|
|
1063
|
+
title="Show Debug Console"
|
|
1064
|
+
>
|
|
1065
|
+
Console
|
|
1066
|
+
</Button>
|
|
1067
|
+
{/if}
|
|
649
1068
|
{#if lang === 'ansible' && hasDelegateToGitRepo}
|
|
650
1069
|
<Button
|
|
651
1070
|
variant="default"
|
|
652
1071
|
size="xs"
|
|
653
|
-
|
|
1072
|
+
onclick={() => (gitRepoResourcePickerOpen = true)}
|
|
654
1073
|
startIcon={{ icon: GitBranch }}
|
|
655
1074
|
btnClasses="bg-surface hover:bg-surface-hover border border-tertiary/30"
|
|
656
1075
|
>
|
|
@@ -710,71 +1129,100 @@ $effect(() => {
|
|
|
710
1129
|
{/if}
|
|
711
1130
|
</div>
|
|
712
1131
|
|
|
713
|
-
{#
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
bind:
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
localStorage.setItem(path ?? 'last_save', code)
|
|
736
|
-
} catch (e) {
|
|
737
|
-
console.error('Could not save last_save to local storage', e)
|
|
738
|
-
}
|
|
739
|
-
dispatch('format')
|
|
740
|
-
}}
|
|
741
|
-
class="flex flex-1 h-full !overflow-visible"
|
|
742
|
-
scriptLang={lang}
|
|
743
|
-
automaticLayout={true}
|
|
744
|
-
{fixedOverflowWidgets}
|
|
745
|
-
{args}
|
|
746
|
-
{enablePreprocessorSnippet}
|
|
747
|
-
preparedAssetsSqlQueries={preparedSqlQueries.current}
|
|
748
|
-
/>
|
|
749
|
-
<DiffEditor
|
|
750
|
-
className="h-full"
|
|
751
|
-
bind:this={diffEditor}
|
|
752
|
-
modifiedModel={editor?.getModel() as meditor.ITextModel}
|
|
753
|
-
automaticLayout
|
|
754
|
-
defaultLang={scriptLangToEditorLang(lang)}
|
|
755
|
-
{fixedOverflowWidgets}
|
|
756
|
-
buttons={diffMode
|
|
757
|
-
? [
|
|
758
|
-
{
|
|
759
|
-
text: 'See changes history',
|
|
760
|
-
onClick: () => {
|
|
761
|
-
showHistoryDrawer = true
|
|
762
|
-
}
|
|
763
|
-
},
|
|
764
|
-
{
|
|
765
|
-
text: 'Quit diff mode',
|
|
766
|
-
onClick: () => {
|
|
767
|
-
hideDiffMode()
|
|
768
|
-
},
|
|
769
|
-
color: 'red'
|
|
770
|
-
}
|
|
771
|
-
]
|
|
772
|
-
: []}
|
|
773
|
-
/>
|
|
774
|
-
{/key}
|
|
1132
|
+
{#if debugConsoleVisible}
|
|
1133
|
+
<!-- Use Splitpanes when debug console is visible for resizing -->
|
|
1134
|
+
<Splitpanes horizontal class="h-full !overflow-visible">
|
|
1135
|
+
<Pane bind:size={editorPaneSize} minSize={20} class="!overflow-visible">
|
|
1136
|
+
{@render editorPane()}
|
|
1137
|
+
</Pane>
|
|
1138
|
+
<Pane bind:size={consolePaneSize} minSize={10}>
|
|
1139
|
+
<DebugConsole
|
|
1140
|
+
client={dapClient}
|
|
1141
|
+
currentFrameId={currentDebugFrameId}
|
|
1142
|
+
onClose={() => (showDebugConsole = false)}
|
|
1143
|
+
workspace={$workspaceStore}
|
|
1144
|
+
jobId={debugSessionJobId ?? undefined}
|
|
1145
|
+
/>
|
|
1146
|
+
</Pane>
|
|
1147
|
+
</Splitpanes>
|
|
1148
|
+
{:else}
|
|
1149
|
+
<!-- Normal editor without console -->
|
|
1150
|
+
<div class="h-full !overflow-visible">
|
|
1151
|
+
{@render editorPane()}
|
|
1152
|
+
</div>
|
|
1153
|
+
{/if}
|
|
775
1154
|
</div>
|
|
776
1155
|
{/snippet}
|
|
777
1156
|
|
|
1157
|
+
{#snippet editorPane()}
|
|
1158
|
+
{#key lang}
|
|
1159
|
+
<Editor
|
|
1160
|
+
lineNumbersMinChars={4}
|
|
1161
|
+
folding
|
|
1162
|
+
{path}
|
|
1163
|
+
bind:code
|
|
1164
|
+
bind:websocketAlive
|
|
1165
|
+
bind:this={editor}
|
|
1166
|
+
{yContent}
|
|
1167
|
+
awareness={wsProvider?.awareness}
|
|
1168
|
+
on:change={(e) => {
|
|
1169
|
+
inferSchema(e.detail)
|
|
1170
|
+
// Refresh breakpoint positions when code changes (decorations track their lines)
|
|
1171
|
+
if (debugMode && breakpointDecorations.length > 0) {
|
|
1172
|
+
refreshBreakpointPositions()
|
|
1173
|
+
}
|
|
1174
|
+
}}
|
|
1175
|
+
on:saveDraft
|
|
1176
|
+
on:toggleTestPanel={toggleTestPanel}
|
|
1177
|
+
cmdEnterAction={async () => {
|
|
1178
|
+
await inferSchema(code)
|
|
1179
|
+
runTest()
|
|
1180
|
+
}}
|
|
1181
|
+
formatAction={async () => {
|
|
1182
|
+
await inferSchema(code)
|
|
1183
|
+
try {
|
|
1184
|
+
localStorage.setItem(path ?? 'last_save', code)
|
|
1185
|
+
} catch (e) {
|
|
1186
|
+
console.error('Could not save last_save to local storage', e)
|
|
1187
|
+
}
|
|
1188
|
+
dispatch('format')
|
|
1189
|
+
}}
|
|
1190
|
+
class="flex flex-1 h-full !overflow-visible"
|
|
1191
|
+
scriptLang={lang}
|
|
1192
|
+
automaticLayout={true}
|
|
1193
|
+
{fixedOverflowWidgets}
|
|
1194
|
+
{args}
|
|
1195
|
+
{enablePreprocessorSnippet}
|
|
1196
|
+
preparedAssetsSqlQueries={preparedSqlQueries.current}
|
|
1197
|
+
/>
|
|
1198
|
+
<DiffEditor
|
|
1199
|
+
className="h-full"
|
|
1200
|
+
bind:this={diffEditor}
|
|
1201
|
+
modifiedModel={editor?.getModel() as meditor.ITextModel}
|
|
1202
|
+
automaticLayout
|
|
1203
|
+
defaultLang={scriptLangToEditorLang(lang)}
|
|
1204
|
+
{fixedOverflowWidgets}
|
|
1205
|
+
buttons={diffMode
|
|
1206
|
+
? [
|
|
1207
|
+
{
|
|
1208
|
+
text: 'See changes history',
|
|
1209
|
+
onClick: () => {
|
|
1210
|
+
showHistoryDrawer = true
|
|
1211
|
+
}
|
|
1212
|
+
},
|
|
1213
|
+
{
|
|
1214
|
+
text: 'Quit diff mode',
|
|
1215
|
+
onClick: () => {
|
|
1216
|
+
hideDiffMode()
|
|
1217
|
+
},
|
|
1218
|
+
color: 'red'
|
|
1219
|
+
}
|
|
1220
|
+
]
|
|
1221
|
+
: []}
|
|
1222
|
+
/>
|
|
1223
|
+
{/key}
|
|
1224
|
+
{/snippet}
|
|
1225
|
+
|
|
778
1226
|
<GitRepoResourcePicker
|
|
779
1227
|
bind:open={gitRepoResourcePickerOpen}
|
|
780
1228
|
currentResource={ansibleAlternativeExecutionMode?.resource}
|
|
@@ -785,3 +1233,29 @@ $effect(() => {
|
|
|
785
1233
|
on:selected={handleDelegateConfigUpdate}
|
|
786
1234
|
on:addInventories={handleAddInventories}
|
|
787
1235
|
/>
|
|
1236
|
+
|
|
1237
|
+
<style global>
|
|
1238
|
+
/* Debug breakpoint glyph - red circle in the glyph margin */
|
|
1239
|
+
:global(.debug-breakpoint-glyph) {
|
|
1240
|
+
background-color: #e51400;
|
|
1241
|
+
border-radius: 50%;
|
|
1242
|
+
width: 10px !important;
|
|
1243
|
+
height: 10px !important;
|
|
1244
|
+
margin-left: 5px;
|
|
1245
|
+
margin-top: 4px;
|
|
1246
|
+
}
|
|
1247
|
+
|
|
1248
|
+
/* Current execution line - yellow background */
|
|
1249
|
+
:global(.debug-current-line) {
|
|
1250
|
+
background-color: rgba(255, 238, 0, 0.2);
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1253
|
+
/* Current execution line glyph - yellow arrow in the glyph margin */
|
|
1254
|
+
:global(.debug-current-line-glyph) {
|
|
1255
|
+
background-color: #ffcc00;
|
|
1256
|
+
clip-path: polygon(0 0, 100% 50%, 0 100%);
|
|
1257
|
+
width: 10px !important;
|
|
1258
|
+
height: 14px !important;
|
|
1259
|
+
margin-left: 5px;
|
|
1260
|
+
margin-top: 2px;
|
|
1261
|
+
}</style>
|