UNPKG

react-simple-wysiwyg

Version:
87 lines 2.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function compare(a, b, keys) { return keys.every(function (key) { return a[key] === b[key]; }); } exports.compare = compare; function deepMerge(target) { var _a, _b; var sources = []; for (var _i = 1; _i < arguments.length; _i++) { sources[_i - 1] = arguments[_i]; } if (!sources.length) { return target; } var source = sources.shift(); if (isObject(target) && isObject(source)) { for (var key in source) { if (!source.hasOwnProperty(key)) { continue; } if (isObject(source[key])) { if (!target[key]) { Object.assign(target, (_a = {}, _a[key] = {}, _a)); } deepMerge(target[key], source[key]); } else { Object.assign(target, (_b = {}, _b[key] = source[key], _b)); } } } return deepMerge.apply(void 0, [target].concat(sources)); } exports.deepMerge = deepMerge; function findLastTextNode(node) { if (node.nodeType === Node.TEXT_NODE) { return node; } var children = node.childNodes; for (var i = children.length - 1; i >= 0; i--) { var textNode = findLastTextNode(children[i]); if (textNode !== null) { return textNode; } } return null; } exports.findLastTextNode = findLastTextNode; function getSelectedNode() { if (document.selection) { return document.selection.createRange().parentElement(); } var selection = window.getSelection(); if (selection.rangeCount > 0) { return selection.getRangeAt(0).startContainer.parentNode; } } exports.getSelectedNode = getSelectedNode; function isObject(item) { return (item && typeof item === 'object' && !Array.isArray(item)); } function normalizeHtml(str) { return str && str.replace(/&nbsp;|\u202F|\u00A0/g, ' '); } exports.normalizeHtml = normalizeHtml; function replaceCaret(el) { // Place the caret at the end of the element var target = findLastTextNode(el); // do not move caret if element was not focused var isTargetFocused = document.activeElement === el; if (target !== null && target.nodeValue !== null && isTargetFocused) { var range = document.createRange(); var sel = window.getSelection(); range.setStart(target, target.nodeValue.length); range.collapse(true); sel.removeAllRanges(); sel.addRange(range); if (el instanceof HTMLElement) { el.focus(); } } } exports.replaceCaret = replaceCaret; //# sourceMappingURL=utils.js.map