All files / src/utils/edit select.js

0% Statements 0/21
0% Branches 0/12
0% Functions 0/1
0% Lines 0/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46                                                                                           
/**
 * https://github.com/zenorocha/select/blob/master/src/select.js
 */
 
export function select(el) {
    let selectedText;
 
    if (el.nodeName === 'SELECT') {
        el.focus();
 
        selectedText = el.value;
    } else if (el.nodeName === 'INPUT' || el.nodeName === 'TEXTAREA') {
        const readonly = el.hasAttribute('readonly');
 
        if (!readonly) {
            el.setAttribute('readonly', '');
        }
 
        el.select();
        el.setSelectionRange(0, el.value.length);
 
        if (!readonly) {
            el.removeAttribute('readonly');
        }
 
        selectedText = el.value;
    } else {
        if (el.hasAttribute('contenteditable')) {
            el.focus();
        }
 
        const selection = window.getSelection();
        const range = document.createRange();
 
        range.selectNodeContents(el);
        selection.removeAllRanges();
        selection.addRange(range);
 
        selectedText = selection.toString();
    }
 
    return selectedText;
}
 
export default select;