/** * @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/aichat/ui/controls/resources/aichatresourcesballoonview */ import { type Locale } from '@ckeditor/ckeditor5-utils'; import { type BodyCollection } from '@ckeditor/ckeditor5-ui'; import { type AIContextProvider, type AIContextResourceState } from '../../../../aichat/model/aichatcontext.js'; /** * Configuration interface for the AI chat resources balloon view. */ export interface AIChatResourcesBalloonViewConfig { /** * Callback fired when user requests to go back to the main context view. */ onBackToContext: () => void; /** * Callback fired when a resource is selected to be added to context. */ onResourceSelected: (source: AIContextProvider, resource: AIContextResourceState) => void; /** * Callback fired when source resources need to be loaded. */ onLoadSourceResources: (data: { sourceId: string; query: string; uid: string; }) => void; /** * Callback fired when the balloon is closed via click outside. */ onBalloonClosed: () => void; /** * Returns the element that limits balloon positioning. */ getLimiterElement: () => HTMLElement; /** * Returns the target element for balloon positioning. */ getTargetElement: () => HTMLElement; /** * The minimum number of resources to show the search input. */ searchInputVisibleFrom?: number; } /** * Manages resource balloon panels for AI chat context sources. * * This class handles the creation, positioning, and lifecycle of balloon panels * that display resources from various AI context providers. Each source can have * its own balloon panel with search functionality and resource listing. */ export declare class AIChatResourcesBalloonView { /** * Creates a new AI chat resources balloon view manager. * * @param locale The locale instance for internationalization * @param bodyCollection The body collection for managing balloon DOM lifecycle * @param config Configuration object for balloon behavior and event handling */ constructor(locale: Locale, bodyCollection: BodyCollection, config: AIChatResourcesBalloonViewConfig); /** * Shows a source resources balloon for the given source provider. * Creates a new balloon if one doesn't exist for this source, otherwise reuses the existing one. */ showSourceResourcesBalloon({ source, withBackButton }: { source: AIContextProvider; withBackButton: boolean; }): void; /** * Populates a source resource balloon with loaded resources. * Only updates the balloon if it exists and is currently active. * * @param sourceId The unique identifier of the source * @param resources Array of resource states to display * @param uid Unique identifier for the resource loading request */ populateSourceResourceBalloon(sourceId: string, resources: Array, uid: string): void; /** * Closes the source resource balloon and cleans up its state. * Uses requestAnimationFrame to ensure proper cleanup timing. * * @param sourceId The unique identifier of the source balloon to close */ closeSourceResourceBalloon(sourceId: string): void; /** * Checks if any resource balloon is currently visible. * * @returns True if at least one resource balloon is visible, false otherwise */ isAnyResourceBalloonVisible(): boolean; /** * Updates the state of a specific resource in the balloon and repositions it. * This method also handles balloon repositioning to ensure proper display. * * @param sourceId The unique identifier of the source * @param resourceId The unique identifier of the resource to update * @param isInContext Whether the resource is currently in the context */ updateResourceState(sourceId: string, resourceId: string, isInContext: boolean): void; /** * Destroys all resource balloons and cleans up resources. * Should be called when the view is no longer needed to prevent memory leaks. */ destroy(): void; }