@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
TypeScript
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;
}