Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
 * @see https://w3c.github.io/clipboard-apis/#clipboard-event-paste
 * @see https://stackoverflow.com/questions/34045777/copy-to-clipboard-using-javascript-in-ios
 */
const IS_BROWSER = typeof document === 'object';
function isOS() {
    return (navigator.userAgent.match(/ipad|iphone/i) ? true : false);
}
exports.isOS = isOS;
function copyToClipboard(urlToCopy) {
    if (IS_BROWSER) {
        const listener = event => {
            event.clipboardData.setData('text/plain', urlToCopy);
            event.preventDefault();
        };
        document.addEventListener('copy', listener);
        document.execCommand('copy');
        document.removeEventListener('copy', listener);
    }
}
exports.copyToClipboard = copyToClipboard;
function makeEditable(dom) {
    if (IS_BROWSER) {
        dom.contentEditable = true;
        dom.readonly = false;
    }
}
exports.makeEditable = makeEditable;
function createElement(text, scoped) {
    console.debug('[Copy] creating element');
    if (IS_BROWSER) {
        scoped.textArea = document.createElement('textArea');
        scoped.textArea.value = text;
        scoped.textArea.innerHTML = text;
        makeEditable(scoped.textArea);
        document.body.appendChild(scoped.textArea);
        // window.textarea = scoped.textArea
        scoped.actions.push('appended textArea');
    }
}
exports.createElement = createElement;
function selectText(scoped) {
    console.debug('[Copy] selecting text');
    if (IS_BROWSER) {
        const range = document.createRange();
        range.selectNodeContents(scoped.textArea);
        const selection = window.getSelection();
        selection.removeAllRanges();
        selection.addRange(range);
        scoped.textArea.setSelectionRange(0, 999999);
        scoped.actions.push('set selection range');
    }
}
exports.selectText = selectText;
function executeCopyToClipboard(scoped) {
    console.debug('[Copy] executing copy');
    if (IS_BROWSER) {
        document.execCommand('copy');
        document.body.removeChild(scoped.textArea);
    }
}
exports.executeCopyToClipboard = executeCopyToClipboard;
function copy(text) {
    if (IS_BROWSER) {
        const scoped = {
            textArea: document.createElement('textArea'),
            editableDiv: document.createElement('div'),
            actions: [],
        };
        if (isOS()) {
            console.debug('[Copy] iOS');
            createElement(text, scoped);
            selectText(scoped);
            executeCopyToClipboard(scoped);
        }
        else {
            console.debug('[Copy] native export functionality');
            copyToClipboard(text);
        }
    }
}
exports.copy = copy;
//# sourceMappingURL=Copy.js.map