@t7/utils
Version:
Utility methods for T7 components.
80 lines (59 loc) • 2.05 kB
JavaScript
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;
;