import type { HighlightRange } from "./renderTypes.js"; import type { AutocompletePopoverHandle } from "./autocompletePopover.js"; import type { SignatureTipHandle } from "./signatureTip.js"; import type { ValidationDropdownHandle } from "./validationDropdown.js"; import type { Sheet } from "./types.js"; export interface CellEditDetail { sheetIndex: number; r: number; c: number; input: string; commitMove: "down" | "right" | "up" | "left" | null; } export interface CellEditorHost { readonly editable: boolean; getSheet(): Sheet; getColOverrides(): Map; getRowOverrides(): Map; getActiveCellState(): { r: number; c: number; } | null; getZoom(): number; getActiveSheetIndex(): number; getFormulaBox(): HTMLInputElement; getStageScrollLeft(): number; getStageScrollTop(): number; getStageClientWidth(): number; scrollToCell(r: number, c: number): void; scheduleDraw(): void; focusCanvas(): void; emitCellEdit(detail: CellEditDetail): void; } export interface CellEditorDeps { host: CellEditorHost; autocomplete: AutocompletePopoverHandle; signature: SignatureTipHandle; validation: ValidationDropdownHandle; } export declare class CellEditor { private readonly host; private readonly autocomplete; private readonly signature; private readonly validation; private readonly editInput; private editCell; private editEnterMode; private pointModeArmed; private editBaseLeft; private editBaseWidth; private pointKeyAnchor; private pointKeyCursor; private activeRefSpan; private pointHighlight; constructor(deps: CellEditorDeps); getEditInput(): HTMLInputElement; getEditCell(): { r: number; c: number; } | null; getEditText(): string; setEditText(value: string): void; getPointHighlight(): HighlightRange | null; disarmPointMode(): void; private activeEditor; armPointMode(input: HTMLInputElement): void; isPointModeActive(): boolean; applyPointModeRef(ref: string, _opts: { extend: boolean; }): void; resetPointSpanOnType(ev: KeyboardEvent): void; private movePointKeyboard; openEditOverlay(cell: { r: number; c: number; }, initialText: string | null): void; private growEditInput; hideEditOverlay(): void; commitEdit(commitMove: "down" | "right" | "up" | "left" | null): void; handlePointKeyboardKey(ev: KeyboardEvent): boolean; private onEditInputKeyDown; }