import { BlockElement, ContainerElement, SelectedBlock, ContainerSelectedBlocks, SelectionDetail, RichTextElement, CaretDetail, Editor, RangeDetail, BoxElement } from "../../interface"; import RichTextDocument from "../../text/RichTextDocument"; export declare function getSelection(): Selection; export declare function getRange(): Range | null; /** * 获取 selection 方向 * @returns number * -1: 从后往前 * 0:collapsed 或 无 Range * 1:从前往后 */ export declare function getSelectionDirect(sel: Selection): number; export declare function collapseToEnd(): void; export declare function isCollapsed(): boolean; export declare function isSelected(): boolean; export declare function getRangeDetail(range: Range, direction: number): RangeDetail; export declare function getSelectionDetail(editor: Editor): SelectionDetail; export declare function selectBlocksWithDirect(startBlock: BlockElement, startOffset: number, endBlock?: BlockElement | null, endOffset?: number, selectionDirect?: number): void; export declare function selectBlocks(startBlock: BlockElement, startOffset: number, endBlock?: BlockElement | null, endOffset?: number): void; export declare function selectBlock(block: BlockElement, start: number, end?: number | undefined): void; export declare function selectBox(block: BlockElement, boxElement: BoxElement): void; export declare function selectBlockChild(child: Node, start: number, end?: number | undefined): void; export declare function selectCompositionSpanFillChar(textElement: RichTextElement): void; export declare function getSelectedBlocksInComplexBlock(complexBlock: BlockElement, range: Range): ContainerSelectedBlocks[]; export declare function getSelectedBlocksInDeep(editor: Editor): SelectedBlock[]; export declare function getSelectedBlocksInRoot(editor: Editor): SelectedBlock[]; export declare function getSelectedTextBlocks(editor: Editor): SelectedBlock[]; export declare function getSelectedRootBlocks(detail: SelectionDetail): BlockElement[]; export declare function getLineHomeOffset(block: BlockElement, blockOffset: number): number; export declare function getLineEndOffset(block: BlockElement, blockOffset: number): number; export declare function getOffsetOfLine(block: BlockElement, blockOffset: number): number; export declare function getFirstLineOffset(block: BlockElement, adviceOffset: number): number; export declare function getLastLineOffset(block: BlockElement, adviceOffset: number): number; export declare function getCaretDetail(selection: Selection, block: BlockElement, blockOffset: number, node: Node, nodeOffset: number): CaretDetail; export interface CaretType { type: 'invalid' | 'container' | 'block' | 'block_content' | 'box' | 'complex_block' | 'complex_block_content' | 'in_complex_block' | 'in_embed'; block?: BlockElement; container?: ContainerElement; nearbyContainer?: ContainerElement; } export declare function getCaretType(node: Node): CaretType; export declare function tryMoveCaretToBlock(node: Node, nodeOffset: number, type: 'start' | 'end'): { block?: BlockElement; offset?: number; }; export declare function isEqualSelectionDetail(detailA: SelectionDetail | null, detailB: SelectionDetail | null): boolean; export declare function transformBlockOffset(block: BlockElement, oldDoc: RichTextDocument, offsets: number[]): number[]; export declare function isSelectionWritable(editor: Editor, detail: SelectionDetail): boolean; export declare function getSelectedBlocks(editor: Editor, options: { deep: boolean; }): BlockElement[]; export declare function isLineEndsWithBr(block: BlockElement, offset: number): boolean;