You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
780 B
39 lines
780 B
|
|
module.exports = function () { |
|
var selection = document.getSelection(); |
|
if (!selection.rangeCount) { |
|
return function () {}; |
|
} |
|
var active = document.activeElement; |
|
|
|
var ranges = []; |
|
for (var i = 0; i < selection.rangeCount; i++) { |
|
ranges.push(selection.getRangeAt(i)); |
|
} |
|
|
|
switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML |
|
case 'INPUT': |
|
case 'TEXTAREA': |
|
active.blur(); |
|
break; |
|
|
|
default: |
|
active = null; |
|
break; |
|
} |
|
|
|
selection.removeAllRanges(); |
|
return function () { |
|
selection.type === 'Caret' && |
|
selection.removeAllRanges(); |
|
|
|
if (!selection.rangeCount) { |
|
ranges.forEach(function(range) { |
|
selection.addRange(range); |
|
}); |
|
} |
|
|
|
active && |
|
active.focus(); |
|
}; |
|
};
|
|
|