UNPKG

rsuite-utils

Version:
63 lines (55 loc) 1.81 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function execCommandCopy() { var succeeded = void 0; try { succeeded = document.execCommand('copy'); } catch (err) { succeeded = false; } return succeeded; } function select(input) { var selectedText = void 0; var isReadOnly = input.hasAttribute('readonly'); if (!isReadOnly) { input.setAttribute('readonly', ''); } input.select(); input.setSelectionRange(0, input.value.length); if (!isReadOnly) { input.removeAttribute('readonly'); } selectedText = input.value; return selectedText; } function copy(text) { var _fakeElemStyle; var isRTL = document.documentElement.getAttribute('dir') === 'rtl'; var fakeElem = document.createElement('textarea'); var yPosition = window.pageYOffset || document.documentElement.scrollTop; var fakeElemStyle = (_fakeElemStyle = { // Prevent zooming on iOS fontSize: '12pt', // Reset box model border: '0', padding: '0', margin: '0', // Move element out of screen horizontally position: 'absolute' }, _defineProperty(_fakeElemStyle, isRTL ? 'right' : 'left', '-9999px'), _defineProperty(_fakeElemStyle, 'top', yPosition + 'px'), _fakeElemStyle); Object.keys(fakeElemStyle).forEach(function (key) { fakeElem.style[key] = fakeElemStyle[key]; }); fakeElem.setAttribute('readonly', ''); fakeElem.value = text; document.body.appendChild(fakeElem); select(fakeElem); var result = execCommandCopy(); document.body.removeChild(fakeElem); return result; } exports.default = copy;