UNPKG

@t7/utils

Version:

Utility methods for T7 components.

80 lines (59 loc) 2.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _ = require("./"); // Dependencies. /* Used if the browser doesn't allow us to intercept the live `paste` event. */ var fallback = function fallback() { var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; window.setTimeout(function () { // Get value. var _el$innerText = el.innerText, innerText = _el$innerText === void 0 ? '' : _el$innerText; // Trim. innerText = (0, _.trimMultiLine)(innerText); // Update text. el.innerText = innerText; }, 0); }; /* You would call this when a user pastes from the clipboard into a `contenteditable` area. */ var contentOnPaste = function contentOnPaste() { var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; // Prevent paste. (0, _.stop)(e); // Get element. var _e$currentTarget = e.currentTarget, el = _e$currentTarget === void 0 ? {} : _e$currentTarget; // Used in conditional. var value; // For IE. if (window.clipboardData && typeof window.clipboardData.getData === 'function') { value = window.clipboardData.getData('text'); // Other browsers. } else if (e.clipboardData && typeof e.clipboardData.getData === 'function') { value = e.clipboardData.getData('text/plain'); } // No value? if (!value) { // Use fallback. fallback(el); // Exit. return; } // Insert into temp `<textarea>`, read back out. var textarea = document.createElement('textarea'); textarea.innerHTML = value; value = textarea.innerText; // Clean up. value = (0, _.trimMultiLine)(value); // For IE. if (document.selection) { // For IE8. if (document.documentMode === 8) { value = value.replace(/\n/g, '<br>'); } document.selection.createRange().pasteHTML(value); } else { // Other browsers. document.execCommand('insertText', false, value); } }; // Expose function. var _default = contentOnPaste; exports.default = _default;