123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- /**
- * @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;
|