selection.d.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /**
  2. * @description selection range API
  3. * @author wangfupeng
  4. */
  5. import { DomElement } from '../utils/dom-core';
  6. import Editor from './index';
  7. declare 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. }
  102. export default SelectionAndRange;