UNPKG

@igo2/utils

Version:
52 lines 6.61 kB
import { userAgent } from './user-agent'; export class Clipboard { static copy(element) { let successful = false; if (typeof element === 'string') { const textArea = Clipboard.createTextArea(element); Clipboard.selectText(textArea); successful = Clipboard.copyTextToClipboard(); Clipboard.destroyTextArea(textArea); } else { Clipboard.selectText(element); successful = Clipboard.copyTextToClipboard(); } return successful; } static createTextArea(text) { const textArea = document.createElement('textArea'); textArea.value = text; document.body.appendChild(textArea); return textArea; } static destroyTextArea(textArea) { document.body.removeChild(textArea); } static selectText(textArea) { if (userAgent.getOSName() === 'iOS') { const oldContentEditable = textArea.contentEditable; const oldReadOnly = textArea.readOnly; const range = document.createRange(); const selection = window.getSelection(); textArea.contenteditable = true; textArea.readonly = false; range.selectNodeContents(textArea); selection.removeAllRanges(); selection.addRange(range); textArea.setSelectionRange(0, 999999); textArea.contentEditable = oldContentEditable; textArea.readOnly = oldReadOnly; } else { textArea.select(); } } static copyTextToClipboard() { if (!(userAgent.getOSName() === 'iOS' && userAgent.compareVersion('<10'))) { return document.execCommand('copy'); } return false; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbHMvc3JjL2xpYi9jbGlwYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxNQUFNLE9BQU8sU0FBUztJQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQXFDO1FBQy9DLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixVQUFVLEdBQUcsU0FBUyxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDN0MsU0FBUyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsVUFBVSxHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFZO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUF3QixDQUFDO1FBQzNFLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQVE7UUFDckMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUTtRQUNoQyxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNwQyxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDcEQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN0QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRXhDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQzFCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDNUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsa0JBQWtCLENBQUM7WUFDOUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDTixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsbUJBQW1CO1FBQ2hDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxLQUFLLElBQUksU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUUsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZXJBZ2VudCB9IGZyb20gJy4vdXNlci1hZ2VudCc7XG5cbmV4cG9ydCBjbGFzcyBDbGlwYm9hcmQge1xuICBzdGF0aWMgY29weShlbGVtZW50OiBIVE1MVGV4dEFyZWFFbGVtZW50IHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IHN1Y2Nlc3NmdWwgPSBmYWxzZTtcbiAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCB0ZXh0QXJlYSA9IENsaXBib2FyZC5jcmVhdGVUZXh0QXJlYShlbGVtZW50KTtcbiAgICAgIENsaXBib2FyZC5zZWxlY3RUZXh0KHRleHRBcmVhKTtcbiAgICAgIHN1Y2Nlc3NmdWwgPSBDbGlwYm9hcmQuY29weVRleHRUb0NsaXBib2FyZCgpO1xuICAgICAgQ2xpcGJvYXJkLmRlc3Ryb3lUZXh0QXJlYSh0ZXh0QXJlYSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIENsaXBib2FyZC5zZWxlY3RUZXh0KGVsZW1lbnQpO1xuICAgICAgc3VjY2Vzc2Z1bCA9IENsaXBib2FyZC5jb3B5VGV4dFRvQ2xpcGJvYXJkKCk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzZnVsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlVGV4dEFyZWEodGV4dDogc3RyaW5nKTogSFRNTFRleHRBcmVhRWxlbWVudCB7XG4gICAgY29uc3QgdGV4dEFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0QXJlYScpIGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQ7XG4gICAgdGV4dEFyZWEudmFsdWUgPSB0ZXh0O1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGV4dEFyZWEpO1xuICAgIHJldHVybiB0ZXh0QXJlYTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGRlc3Ryb3lUZXh0QXJlYSh0ZXh0QXJlYSkge1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dEFyZWEpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgc2VsZWN0VGV4dCh0ZXh0QXJlYSkge1xuICAgIGlmICh1c2VyQWdlbnQuZ2V0T1NOYW1lKCkgPT09ICdpT1MnKSB7XG4gICAgICBjb25zdCBvbGRDb250ZW50RWRpdGFibGUgPSB0ZXh0QXJlYS5jb250ZW50RWRpdGFibGU7XG4gICAgICBjb25zdCBvbGRSZWFkT25seSA9IHRleHRBcmVhLnJlYWRPbmx5O1xuICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gICAgICB0ZXh0QXJlYS5jb250ZW50ZWRpdGFibGUgPSB0cnVlO1xuICAgICAgdGV4dEFyZWEucmVhZG9ubHkgPSBmYWxzZTtcbiAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyh0ZXh0QXJlYSk7XG4gICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICAgICAgdGV4dEFyZWEuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgOTk5OTk5KTtcbiAgICAgIHRleHRBcmVhLmNvbnRlbnRFZGl0YWJsZSA9IG9sZENvbnRlbnRFZGl0YWJsZTtcbiAgICAgIHRleHRBcmVhLnJlYWRPbmx5ID0gb2xkUmVhZE9ubHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRleHRBcmVhLnNlbGVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvcHlUZXh0VG9DbGlwYm9hcmQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCEodXNlckFnZW50LmdldE9TTmFtZSgpID09PSAnaU9TJyAmJiB1c2VyQWdlbnQuY29tcGFyZVZlcnNpb24oJzwxMCcpKSkge1xuICAgICAgcmV0dXJuIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19