setSelectionRange.js 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. 'use strict';
  2. require('../../utils/dataTransfer/Clipboard.js');
  3. var isContentEditable = require('../../utils/edit/isContentEditable.js');
  4. var selection = require('../../utils/focus/selection.js');
  5. var setSelection = require('./setSelection.js');
  6. /**
  7. * Backward-compatible selection.
  8. *
  9. * Handles input elements and contenteditable if it only contains a single text node.
  10. */ function setSelectionRange(element, anchorOffset, focusOffset) {
  11. var _element_firstChild;
  12. if (selection.hasOwnSelection(element)) {
  13. return setSelection.setSelection({
  14. focusNode: element,
  15. anchorOffset,
  16. focusOffset
  17. });
  18. }
  19. /* istanbul ignore else */ if (isContentEditable.isContentEditable(element) && ((_element_firstChild = element.firstChild) === null || _element_firstChild === undefined ? undefined : _element_firstChild.nodeType) === 3) {
  20. return setSelection.setSelection({
  21. focusNode: element.firstChild,
  22. anchorOffset,
  23. focusOffset
  24. });
  25. }
  26. /* istanbul ignore next */ throw new Error('Not implemented. The result of this interaction is unreliable.');
  27. }
  28. exports.setSelectionRange = setSelectionRange;