import { Sheet as SheetType, Freezen, Range, Selection, CellMatrix } from '../types'; import { Context } from '../context'; export declare const selectionCache: { isPasteAction: boolean; isPasteValuesOnly: boolean; }; interface RangeValueToHtmlOptions { includeCellMetadata?: boolean; preferRichText?: boolean; respectFilterHiddenRows?: boolean; } export declare function scrollToHighlightCell(ctx: Context, r: number, c: number): void; export declare function seletedHighlistByindex(ctx: Context, r1: number, r2: number, c1: number, c2: number): { left: number; width: number; top: number; height: number; } | null; /** * True when the selection rectangle is exactly one merged block (multi grid cells, one * logical cell). Literal 1×1 is false here — callers use row/column span for that. */ export declare function selectionIsExactlyOneMergeBlock(ctx: Context, selection: Selection): boolean; /** * Updates `ctx.primaryCellActive` from a selection list (multi-cell → active focus cell; * else null). Pass `selection` explicitly when normalizing a **new** array that is not * yet assigned to `ctx.luckysheet_select_save`. */ export declare function syncPrimaryCellActiveFromSelection(ctx: Context, selection?: SheetType['luckysheet_select_save'] | null): void; /** * Multi-cell range only: move `row_focus` / `column_focus` (and primary) in * column-major order — forward: down then next column right, wrapping top-left; * backward (Shift+Enter): up then previous column left, wrapping bottom-right. * Does not enter edit mode. Returns false if not a multi-cell selection. */ export declare function advancePrimaryCellInLastMultiSelection(ctx: Context, forward?: boolean): boolean; /** * Pin the primary-cell highlight to a sheet cell. Prefer calling inside the same * `setContext` (draft) as your selection update, after `normalizeSelection`, so a * later normalize in the same commit does not overwrite it. The next user-driven * selection that runs `normalizeSelection` will re-sync from the new range. */ export declare function setPrimaryCellActive(ctx: Context, r: number, c: number): void; /** * After formula segment / delete handling, move selection focus to the edited cell * (r,c). If the sheet already has a multi-cell range and (r,c) is inside it, keep * that range so Enter-primary navigation + typing do not collapse the yellow box. */ export declare function snapSheetSelectionFocusToCellPreserveMultiRange(ctx: Context, r: number, c: number): void; /** Default selection (A1, or top-left merge block) when a sheet has no `luckysheet_select_save`. */ export declare function defaultLuckysheetSelectRanges(data: CellMatrix | null | undefined): Selection[]; export declare function normalizeSelection(ctx: Context, selection: SheetType['luckysheet_select_save']): Selection[] | undefined; export declare function selectTitlesMap(rangeMap: Record, range1: number, range2: number): Record; export declare function selectTitlesRange(map: Record): number[][]; export declare function pasteHandlerOfPaintModel(ctx: Context, copyRange: Context['luckysheet_copy_save']): void; export declare function selectionCopyShow(range: any, ctx: Context): void; export declare function rowHasMerged(ctx: Context, r: number, c1: number, c2: number): boolean; export declare function colHasMerged(ctx: Context, c: number, r1: number, r2: number): boolean; export declare function getRowMerge(ctx: Context, rIndex: number, c1: number, c2: number): (number | null)[]; export declare function getColMerge(ctx: Context, cIndex: number, r1: number, r2: number): (number | null)[]; export declare function moveHighlightCell(ctx: Context, postion: 'down' | 'right', index: number, type: 'rangeOfSelect' | 'rangeOfFormula'): void; export declare function moveHighlightRange(ctx: Context, postion: 'down' | 'right', index: number, type: 'rangeOfSelect' | 'rangeOfFormula'): void; export declare function rangeValueToHtml(ctx: Context, sheetId: string, ranges?: Range, options?: RangeValueToHtmlOptions): string | null; export declare function copy(ctx: Context): void; export declare function deleteSelectedCellText(ctx: Context): string; export declare function deleteSelectedCellFormat(ctx: Context): string; export declare function fillRightData(ctx: Context): string; export declare function fillDownData(ctx: Context): string; export declare function textFormat(ctx: Context, type: 'left' | 'center' | 'right'): string; export declare function fillDate(ctx: Context): string; export declare function fillTime(ctx: Context): string; export declare function fillDateTime(ctx: Context): string; export declare function selectIsOverlap(ctx: Context, range?: any): boolean; export declare function selectAll(ctx: Context): void; export declare function fixRowStyleOverflowInFreeze(ctx: Context, r1: number, r2: number, freeze: Freezen | undefined): { top?: number; height?: number; display?: string; }; export declare function fixColumnStyleOverflowInFreeze(ctx: Context, c1: number, c2: number, freeze: Freezen | undefined): { left?: number; width?: number; display?: string; }; export declare function calcSelectionInfo(ctx: Context): { numberC: number; count: number; sum: number; max: number; min: number; average: string; }; /** Move the active selection focus to an absolute row/column (Home/End navigation). */ export declare function jumpHighlightCell(ctx: Context, targetRow: number, targetCol: number): void; /** * Fill every cell in the current selection with the active/focus cell value * (Ctrl/Cmd+Enter — same value across the whole selection). */ export declare function fillSelectionWithActiveValue(ctx: Context, cellInput: HTMLDivElement, canvas?: CanvasRenderingContext2D): boolean; export {};