toggle-selection.js 1006 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. // copy from https://github.com/sudodoki/toggle-selection
  7. // refactor to esm
  8. const deselectCurrent = () => {
  9. const selection = document.getSelection();
  10. if (!selection.rangeCount) {
  11. return function () {};
  12. }
  13. let active = document.activeElement;
  14. const ranges = [];
  15. for (let i = 0; i < selection.rangeCount; i++) {
  16. ranges.push(selection.getRangeAt(i));
  17. }
  18. switch (active.tagName.toUpperCase() // .toUpperCase handles XHTML
  19. ) {
  20. case 'INPUT':
  21. case 'TEXTAREA':
  22. active.blur();
  23. break;
  24. default:
  25. active = null;
  26. break;
  27. }
  28. selection.removeAllRanges();
  29. return function () {
  30. selection.type === 'Caret' && selection.removeAllRanges();
  31. if (!selection.rangeCount) {
  32. ranges.forEach(function (range) {
  33. selection.addRange(range);
  34. });
  35. }
  36. active && active.focus();
  37. };
  38. };
  39. var _default = exports.default = deselectCurrent;