import React from 'react'; import { Emitter, Event } from '@opensumi/ide-core-common'; import * as monaco from '@opensumi/ide-monaco'; import { ReactInlineContentWidget, ShowAIContentOptions } from '@opensumi/ide-monaco/lib/browser/ai-native/BaseInlineContentWidget'; import { InlineInputService } from '../inline-input/inline-input.service'; import { EInlineChatStatus, EResultKind } from './inline-chat.service'; import type { ICodeEditor as IMonacoCodeEditor } from '@opensumi/ide-monaco/lib/browser/monaco-api/types'; export declare class AIInlineContentWidget extends ReactInlineContentWidget { protected readonly editor: IMonacoCodeEditor; allowEditorOverflow: boolean; private readonly injector; protected readonly inlineInputService: InlineInputService; private readonly aiNativeContextKey; private readonly _onActionClickEmitter; readonly onActionClick: Event<{ actionId: string; source: string; }>; protected readonly _onStatusChange: Emitter; readonly onStatusChange: Event; protected readonly _onResultClick: Emitter; readonly onResultClick: Event; protected _status: EInlineChatStatus; get status(): EInlineChatStatus; get isPersisted(): boolean; constructor(editor: IMonacoCodeEditor); launchChatStatus(status: EInlineChatStatus): import("@opensumi/ide-core-browser").IDisposable; dispose(): void; clickActionId(actionId: string, source: string): void; renderView(): React.ReactNode; show(options?: ShowAIContentOptions | undefined): Promise; getDomNode(): HTMLElement; hide(): Promise; setOptions(options: ShowAIContentOptions): void; setOffsetTop(top: number): void; id(): string; getPosition(): monaco.editor.IContentWidgetPosition | null; /** * 获取指定行的最后一个非空白字符的列数 */ private safeGetLineLastNonWhitespaceColumn; private toAbovePosition; private toBelowPosition; /** * 以当前 selection 为中心取上下各 1 行重新计算 */ private recheckSelection; private isProtrudeAbove; private isProtrudeBelow; /** * 动态计算要显示的位置 * 1. 以选区里的光标作为顶点 * 2. 靠近光标处周围没有字符的空白区域作为要显示的区域 * 3. 显示的区域方向在右侧,左侧不考虑 */ protected computePosition(selection: monaco.Selection): monaco.editor.IContentWidgetPosition; } //# sourceMappingURL=inline-content-widget.d.ts.map