UNPKG

@textbus/platform-browser

Version:

Textbus is a rich text editor and framework that is highly customizable and extensible to achieve rich wysiwyg effects.

68 lines (67 loc) 2.5 kB
import { Observable } from '@tanbo/stream'; import { NativeSelectionBridge, NativeSelectionConnector, SelectionPosition, AbstractSelection, RootComponentRef, Controller, Selection, Textbus, Scheduler } from '@textbus/core'; import { Rect } from './_utils/uikit'; import { Input } from './types'; import { ViewOptions } from './browser-module'; import { DomAdapter } from './dom-adapter'; /** * Textbus PC 端选区桥接实现 */ export declare class SelectionBridge implements NativeSelectionBridge { private config; private selection; private rootComponentRef; private input; private scheduler; private domAdapter; onSelectionChange: Observable<Range | null>; nativeSelection: globalThis.Selection; syncSelectionFromNativeSelectionChange: boolean; private selectionChangeEvent; private subs; private sub; private connector; private ignoreSelectionChange; private changeFromUser; private docContainer; private cacheCaretPositionTimer; private oldCaretPosition; constructor(config: ViewOptions, textbus: Textbus, controller: Controller, selection: Selection, rootComponentRef: RootComponentRef, input: Input, scheduler: Scheduler, domAdapter: DomAdapter); connect(connector: NativeSelectionConnector): void; disConnect(): void; getRect(location: SelectionPosition): Rect | null; restore(abstractSelection: AbstractSelection | null, formLocal: boolean): void; destroy(): void; getPositionByRange(abstractSelection: AbstractSelection): { focus: { node: Node; offset: number; } | null; anchor: { node: Node; offset: number; } | null; }; getPreviousLinePositionByCurrent(position: SelectionPosition): SelectionPosition | null; getNextLinePositionByCurrent(position: SelectionPosition): SelectionPosition | null; private getLinePosition; /** * 获取选区向上移动一行的位置。 * @param currentPosition * @param startLeft 参考位置。 */ private getPreviousLinePositionByOffset; /** * 获取选区向下移动一行的位置。 * @param currentPosition * @param startLeft 参考位置。 */ private getNextLinePositionByOffset; private unListen; private listen; private syncSelection; private findSelectedNodeAndOffset; private getCorrectedPosition; private findFocusNode; private findFocusNodeByParent; }