|
|
/**
|
|
|
* @description selection range API
|
|
|
* @author wangfupeng
|
|
|
*/
|
|
|
import { DomElement } from '../utils/dom-core';
|
|
|
import Editor from './index';
|
|
|
declare class SelectionAndRange {
|
|
|
editor: Editor;
|
|
|
private _currentRange;
|
|
|
constructor(editor: Editor);
|
|
|
/**
|
|
|
* 获取当前 range
|
|
|
*/
|
|
|
getRange(): Range | null | undefined;
|
|
|
/**
|
|
|
* 保存选区范围
|
|
|
* @param _range 选区范围
|
|
|
*/
|
|
|
saveRange(_range?: Range): void;
|
|
|
/**
|
|
|
* 折叠选区范围
|
|
|
* @param toStart true 开始位置,false 结束位置
|
|
|
*/
|
|
|
collapseRange(toStart?: boolean): void;
|
|
|
/**
|
|
|
* 获取选区范围内的文字
|
|
|
*/
|
|
|
getSelectionText(): string;
|
|
|
/**
|
|
|
* 获取选区范围的 DOM 元素
|
|
|
* @param range 选区范围
|
|
|
*/
|
|
|
getSelectionContainerElem(range?: Range): DomElement | undefined;
|
|
|
/**
|
|
|
* 选区范围开始的 DOM 元素
|
|
|
* @param range 选区范围
|
|
|
*/
|
|
|
getSelectionStartElem(range?: Range): DomElement | undefined;
|
|
|
/**
|
|
|
* 选区范围结束的 DOM 元素
|
|
|
* @param range 选区范围
|
|
|
*/
|
|
|
getSelectionEndElem(range?: Range): DomElement | undefined;
|
|
|
/**
|
|
|
* 选区是否为空(没有选择文字)
|
|
|
*/
|
|
|
isSelectionEmpty(): boolean;
|
|
|
/**
|
|
|
* 恢复选区范围
|
|
|
*/
|
|
|
restoreSelection(): void;
|
|
|
/**
|
|
|
* 创建一个空白(即 ​ 字符)选区
|
|
|
*/
|
|
|
createEmptyRange(): void;
|
|
|
/**
|
|
|
* 重新设置选区
|
|
|
* @param startDom 选区开始的元素
|
|
|
* @param endDom 选区结束的元素
|
|
|
*/
|
|
|
createRangeByElems(startDom: Node, endDom: Node): void;
|
|
|
/**
|
|
|
* 根据 DOM 元素设置选区
|
|
|
* @param $elem DOM 元素
|
|
|
* @param toStart true 开始位置,false 结束位置
|
|
|
* @param isContent 是否选中 $elem 的内容
|
|
|
*/
|
|
|
createRangeByElem($elem: DomElement, toStart?: boolean, isContent?: boolean): void;
|
|
|
/**
|
|
|
* 获取 当前 选取范围的 顶级(段落) 元素
|
|
|
* @param $editor
|
|
|
*/
|
|
|
getSelectionRangeTopNodes(): DomElement[];
|
|
|
/**
|
|
|
* 移动光标位置,默认情况下在尾部
|
|
|
* 有一个特殊情况是firefox下的文本节点会自动补充一个br元素,会导致自动换行
|
|
|
* 所以默认情况下在firefox下的文本节点会自动移动到br前面
|
|
|
* @param {Node} node 元素节点
|
|
|
* @param {number} position 光标的位置
|
|
|
*/
|
|
|
moveCursor(node: Node, position?: number): void;
|
|
|
/**
|
|
|
* 获取光标在当前选区的位置
|
|
|
*/
|
|
|
getCursorPos(): number | undefined;
|
|
|
/**
|
|
|
* 清除当前选区的Range,notice:不影响已保存的Range
|
|
|
*/
|
|
|
clearWindowSelectionRange(): void;
|
|
|
/**
|
|
|
* 记录节点 - 从选区开始节点开始 一直到匹配到选区结束节点为止
|
|
|
* @param $node 节点
|
|
|
*/
|
|
|
recordSelectionNodes($node: DomElement, $endElem: DomElement): DomElement[];
|
|
|
/**
|
|
|
* 将当前 range 设置到 node 元素并初始化位置
|
|
|
* 解决编辑器内容为空时,菜单不生效的问题
|
|
|
* @param node 元素节点
|
|
|
*/
|
|
|
setRangeToElem(node: Node): void;
|
|
|
}
|
|
|
export default SelectionAndRange;
|