@ckeditor/ckeditor5-ai
Version:
AI features for CKEditor 5.
148 lines (147 loc) • 4.73 kB
TypeScript
/**
* @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<AISuggestionActionName>;
}
/**
* 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 options The content update options.
*/
updateContent(options: {
part: AISuggestionContentPartDefinition;
renderingStrategy: AIContentRenderingStrategy;
abortSignal?: AbortSignal;
}): Promise<void>;
/**
* 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;
}];
};