exec-copy
Version:
Copy text to clipboard using execCommand('copy') on Web browser
26 lines (25 loc) • 3.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = copy;
function copy(str, onError) {
if (typeof str !== 'string') return;
if (!window || !document) return;
var textarea = document.createElement('textarea');
document.body.appendChild(textarea);
textarea.setAttribute('readonly', true);
textarea.style.position = 'absolute';
textarea.style.left = '-1000px';
textarea.style.top = (window.scrollY || document.body.scrollTop) + 'px';
textarea.value = str;
textarea.focus();
textarea.setSelectionRange(0, str.length);
var result = typeof document.execCommand === 'function' && document.execCommand('copy');
document.body.removeChild(textarea);
if (!result) {
if (typeof onError === 'function') onError(str);else window.prompt('Copy', str); // fallback
}
return result;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJjb3B5Iiwic3RyIiwib25FcnJvciIsIndpbmRvdyIsImRvY3VtZW50IiwidGV4dGFyZWEiLCJjcmVhdGVFbGVtZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwic2V0QXR0cmlidXRlIiwic3R5bGUiLCJwb3NpdGlvbiIsImxlZnQiLCJ0b3AiLCJzY3JvbGxZIiwic2Nyb2xsVG9wIiwidmFsdWUiLCJmb2N1cyIsInNldFNlbGVjdGlvblJhbmdlIiwibGVuZ3RoIiwicmVzdWx0IiwiZXhlY0NvbW1hbmQiLCJyZW1vdmVDaGlsZCIsInByb21wdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7a0JBQXdCQSxJO0FBQVQsU0FBU0EsSUFBVCxDQUFlQyxHQUFmLEVBQW9CQyxPQUFwQixFQUE2QjtBQUMxQyxNQUFJLE9BQU9ELEdBQVAsS0FBZSxRQUFuQixFQUE2QjtBQUM3QixNQUFJLENBQUNFLE1BQUQsSUFBVyxDQUFDQyxRQUFoQixFQUEwQjtBQUMxQixNQUFNQyxXQUFXRCxTQUFTRSxhQUFULENBQXVCLFVBQXZCLENBQWpCO0FBQ0FGLFdBQVNHLElBQVQsQ0FBY0MsV0FBZCxDQUEwQkgsUUFBMUI7QUFDQUEsV0FBU0ksWUFBVCxDQUFzQixVQUF0QixFQUFrQyxJQUFsQztBQUNBSixXQUFTSyxLQUFULENBQWVDLFFBQWYsR0FBMEIsVUFBMUI7QUFDQU4sV0FBU0ssS0FBVCxDQUFlRSxJQUFmLEdBQXNCLFNBQXRCO0FBQ0FQLFdBQVNLLEtBQVQsQ0FBZUcsR0FBZixHQUFxQixDQUFDVixPQUFPVyxPQUFQLElBQWtCVixTQUFTRyxJQUFULENBQWNRLFNBQWpDLElBQThDLElBQW5FO0FBQ0FWLFdBQVNXLEtBQVQsR0FBaUJmLEdBQWpCO0FBQ0FJLFdBQVNZLEtBQVQ7QUFDQVosV0FBU2EsaUJBQVQsQ0FBMkIsQ0FBM0IsRUFBOEJqQixJQUFJa0IsTUFBbEM7QUFDQSxNQUFNQyxTQUNFLE9BQU9oQixTQUFTaUIsV0FBaEIsS0FBZ0MsVUFBaEMsSUFDQWpCLFNBQVNpQixXQUFULENBQXFCLE1BQXJCLENBRlI7QUFHQWpCLFdBQVNHLElBQVQsQ0FBY2UsV0FBZCxDQUEwQmpCLFFBQTFCO0FBQ0EsTUFBSSxDQUFDZSxNQUFMLEVBQWE7QUFDWCxRQUFJLE9BQU9sQixPQUFQLEtBQW1CLFVBQXZCLEVBQW1DQSxRQUFRRCxHQUFSLEVBQW5DLEtBQ0tFLE9BQU9vQixNQUFQLENBQWMsTUFBZCxFQUFzQnRCLEdBQXRCLEVBRk0sQ0FFcUI7QUFDakM7QUFDRCxTQUFPbUIsTUFBUDtBQUNEIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29weSAoc3RyLCBvbkVycm9yKSB7XG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykgcmV0dXJuXG4gIGlmICghd2luZG93IHx8ICFkb2N1bWVudCkgcmV0dXJuXG4gIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKVxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRhcmVhKVxuICB0ZXh0YXJlYS5zZXRBdHRyaWJ1dGUoJ3JlYWRvbmx5JywgdHJ1ZSlcbiAgdGV4dGFyZWEuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnXG4gIHRleHRhcmVhLnN0eWxlLmxlZnQgPSAnLTEwMDBweCdcbiAgdGV4dGFyZWEuc3R5bGUudG9wID0gKHdpbmRvdy5zY3JvbGxZIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSArICdweCdcbiAgdGV4dGFyZWEudmFsdWUgPSBzdHJcbiAgdGV4dGFyZWEuZm9jdXMoKVxuICB0ZXh0YXJlYS5zZXRTZWxlY3Rpb25SYW5nZSgwLCBzdHIubGVuZ3RoKVxuICBjb25zdCByZXN1bHQgPVxuICAgICAgICAgIHR5cGVvZiBkb2N1bWVudC5leGVjQ29tbWFuZCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5JylcbiAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZXh0YXJlYSlcbiAgaWYgKCFyZXN1bHQpIHtcbiAgICBpZiAodHlwZW9mIG9uRXJyb3IgPT09ICdmdW5jdGlvbicpIG9uRXJyb3Ioc3RyKVxuICAgIGVsc2Ugd2luZG93LnByb21wdCgnQ29weScsIHN0cikgLy8gZmFsbGJhY2tcbiAgfVxuICByZXR1cm4gcmVzdWx0XG59XG4iXX0=