UNPKG

3.14 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 * 重新设置选区
58 * @param startDom 选区开始的元素
59 * @param endDom 选区结束的元素
60 */
61 createRangeByElems(startDom: Node, endDom: Node): void;
62 /**
63 * 根据 DOM 元素设置选区
64 * @param $elem DOM 元素
65 * @param toStart true 开始位置,false 结束位置
66 * @param isContent 是否选中 $elem 的内容
67 */
68 createRangeByElem($elem: DomElement, toStart?: boolean, isContent?: boolean): void;
69 /**
70 * 获取 当前 选取范围的 顶级(段落) 元素
71 * @param $editor
72 */
73 getSelectionRangeTopNodes(): DomElement[];
74 /**
75 * 移动光标位置,默认情况下在尾部
76 * 有一个特殊情况是firefox下的文本节点会自动补充一个br元素,会导致自动换行
77 * 所以默认情况下在firefox下的文本节点会自动移动到br前面
78 * @param {Node} node 元素节点
79 * @param {number} position 光标的位置
80 */
81 moveCursor(node: Node, position?: number): void;
82 /**
83 * 获取光标在当前选区的位置
84 */
85 getCursorPos(): number | undefined;
86 /**
87 * 清除当前选区的Range,notice:不影响已保存的Range
88 */
89 clearWindowSelectionRange(): void;
90 /**
91 * 记录节点 - 从选区开始节点开始 一直到匹配到选区结束节点为止
92 * @param $node 节点
93 */
94 recordSelectionNodes($node: DomElement, $endElem: DomElement): DomElement[];
95 /**
96 * 将当前 range 设置到 node 元素并初始化位置
97 * 解决编辑器内容为空时,菜单不生效的问题
98 * @param node 元素节点
99 */
100 setRangeToElem(node: Node): void;
101}
102export default SelectionAndRange;