/** * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options */ /** * @module ai/aiquickactions/ui/balloon/aiactionsballoonview */ import { type ViewWithFocusCycler } from '@ckeditor/ckeditor5-ui'; import { type Locale } from '@ckeditor/ckeditor5-utils'; import { type AISuggestionActionName } from '../../../aichat/ui/feed/aichatfeedsuggestionitemactionsview.js'; import { type AIMiniToolbarConfig } from '../../../aicore/ui/suggestioncontainer/aiminitoolbarview.js'; import { type AIContentRenderingStrategy } from '../../../aicore/ui/suggestioncontainer/aisuggestionstreamablecontentview.js'; import { type AISuggestionContentPartDefinition } from '../../../aicore/utils/getsuggestionpartsfromreply.js'; import { AIBalloonView } from '../../../aiballoon/ui/aiballoonview.js'; import '../../../../theme/aiquickactions/aiquickactionsballoon.css'; /** * Event names that can be fired by the AI Balloon view. */ export declare const AI_ACTIONS_BALLOON_VIEW_EVENT_NAMES: readonly ["applySuggestion", "insertSuggestion"]; /** * Configuration object for creating AI Balloon content. */ export interface AIActionsBalloonViewConfig { showApplyButton: boolean; showSuggestButton: boolean; miniToolbarConfig: AIMiniToolbarConfig; availableActions: Array; } /** * The AI Actions Balloon view class responsible for creating and managing the balloon dialog UI. * * This view handles: * - Focus management and keyboard navigation * - Event firing for suggestion interactions * - Toolbar and disclaimer management */ export declare class AIActionsBalloonView extends AIBalloonView implements ViewWithFocusCycler { /** * Observable property that indicates whether the view is busy. * * It is set to `true` when there are AI response being streamed or rendered. */ isBusy: boolean; constructor(locale: Locale, config: AIActionsBalloonViewConfig); /** * @inheritDoc */ render(): void; /** * @inheritDoc */ destroy(): void; /** * Focuses the balloon view. */ focus(direction?: 1 | -1): void; /** * Sets the view loading state, enabling or disabling all interactive elements. */ setIsLoading(isLoading: boolean): void; /** * Disables specific buttons (show changes) for error state. */ setErrorState(): void; /** * Re-enables specific buttons (show changes) after clearing error state. */ clearErrorState(): void; /** * Shows an error message in the balloon. */ showError(message: string): void; /** * Clears the error state, re-enabling the previously disabled buttons (apply, suggest, etc.). */ hideError(): void; /** * Displays a blocking error message and disables the toolbar buttons. */ showBlockingError(message: string): void; /** * Shows the loader if it exists. */ showLoader(): void; /** * Hides the loader if it exists. */ hideLoader(): void; /** * Updates the main content view of the balloon. * This method replaces the current main view with a new one without recreating the entire balloon. * * @param mainView The new main view to display in the balloon */ updateContent(options: { part: AISuggestionContentPartDefinition; renderingStrategy: AIContentRenderingStrategy; abortSignal?: AbortSignal; }): Promise; /** * Clears the main content of the view. */ clearContent(): void; /** * Starts auto-scrolling to the bottom during streaming. */ startAutoScroll(): void; /** * Stops auto-scrolling. */ stopAutoScroll(): void; toggleIsLoading(isLoading: boolean): void; /** * Resets the show changes button to default state (off). */ resetShowChangesButton(): void; } /** * Event fired when user clicks the apply button to apply a suggestion. */ export type AIActionsBalloonApplySuggestionEvent = { name: 'applySuggestion'; args: []; }; /** * Event fired when user clicks the insert/suggest button to insert a suggestion. */ export type AIActionsBalloonInsertSuggestionEvent = { name: 'insertSuggestion'; args: []; }; /** * Event fired when user clicks the try again button. */ export type AIActionsBalloonTryAgainEvent = { name: 'tryAgain'; args: []; }; /** * Event fired when user toggles the suggestion display mode. */ export type AIActionsBalloonToggleSuggestionDisplayModeEvent = { name: 'toggleSuggestionDisplayMode'; args: [{ showDiff: boolean; }]; };