UNPKG

2.41 kBTypeScriptView Raw
1/**
2 * @description selection range API
3 * @author wangfupeng
4 */
5import { DomElement } from '../utils/dom-core';
6import Editor from './index';
7declare class SelectionAndRange {
8 editor: Editor;
9 private _currentRange;
10 constructor(editor: Editor);
11 /**
12 * 获取当前 range
13 */
14 getRange(): Range | null | undefined;
15 /**
16 * 保存选区范围
17 * @param _range 选区范围
18 */
19 saveRange(_range?: Range): void;
20 /**
21 * 折叠选区范围
22 * @param toStart true 开始位置,false 结束位置
23 */
24 collapseRange(toStart?: boolean): void;
25 /**
26 * 获取选区范围内的文字
27 */
28 getSelectionText(): string;
29 /**
30 * 获取选区范围的 DOM 元素
31 * @param range 选区范围
32 */
33 getSelectionContainerElem(range?: Range): DomElement | undefined;
34 /**
35 * 选区范围开始的 DOM 元素
36 * @param range 选区范围
37 */
38 getSelectionStartElem(range?: Range): DomElement | undefined;
39 /**
40 * 选区范围结束的 DOM 元素
41 * @param range 选区范围
42 */
43 getSelectionEndElem(range?: Range): DomElement | undefined;
44 /**
45 * 选区是否为空(没有选择文字)
46 */
47 isSelectionEmpty(): boolean;
48 /**
49 * 恢复选区范围
50 */
51 restoreSelection(): void;
52 /**
53 * 创建一个空白(即 &#8203 字符)选区
54 */
55 createEmptyRange(): void;
56 /**
57 * 根据 DOM 元素设置选区
58 * @param $elem DOM 元素
59 * @param toStart true 开始位置,false 结束位置
60 * @param isContent 是否选中 $elem 的内容
61 */
62 createRangeByElem($elem: DomElement, toStart?: boolean, isContent?: boolean): void;
63 /**
64 * 获取 当前 选取范围的 顶级(段落) 元素
65 * @param $editor
66 */
67 getSelectionRangeTopNodes(editor: Editor): DomElement[];
68 /**
69 * 移动光标位置,默认情况下在尾部
70 * 有一个特殊情况是firefox下的文本节点会自动补充一个br元素,会导致自动换行
71 * 所以默认情况下在firefox下的文本节点会自动移动到br前面
72 * @param {Node} node 元素节点
73 * @param {number} position 光标的位置
74 */
75 moveCursor(node: Node, position?: number): void;
76 /**
77 * 获取光标在当前选区的位置
78 */
79 getCursorPos(): number | undefined;
80}
81export default SelectionAndRange;