UNPKG

angular-rich-text-editor

Version:

A lightweight, configurable rich-text editor component for Angular applications.

67 lines 6.82 kB
export function safeCleanupFloatingPanels() { try { const selectors = [ 'rte-floatpanel', '.rte-floatpanel', '.rte-floatpanel-paragraphop', '[class*="rte-float"]', '[class*="rte-popup"]', '.rte-toolbar-float', '.rte-dropdown-panel', ]; selectors.forEach((selector) => { const elements = document.querySelectorAll(selector); elements.forEach((element) => { try { if (element && element.parentNode && document.body.contains(element)) { element.parentNode.removeChild(element); } } catch (e) { if (element instanceof HTMLElement) { element.style.display = 'none'; element.style.visibility = 'hidden'; } } }); }); cleanupOrphanedElements(); } catch (error) { // Silent fail } } export function cleanupOrphanedElements() { try { const rteElements = document.querySelectorAll('[id*="rte_"], [class*="rte_"]'); rteElements.forEach((element) => { try { if (!document.body.contains(element)) { element.remove(); } } catch (e) { // Ignore } }); } catch (e) { // Silent fail } } /** * Monkey patch Node.prototype.removeChild to avoid NotFoundError * when removing already-detached DOM elements. */ export function patchRemoveChildIfDetached() { const originalRemoveChild = Node.prototype.removeChild; Node.prototype.removeChild = function (child) { if (child && child.parentNode === this) { return originalRemoveChild.call(this, child); } return child; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLWNsZWFudXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaWNoLXRleHQtZWRpdG9yL3NyYy9saWIvdXRpbHMvZG9tLWNsZWFudXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLHlCQUF5QjtJQUN2QyxJQUFJLENBQUM7UUFDSCxNQUFNLFNBQVMsR0FBRztZQUNoQixnQkFBZ0I7WUFDaEIsaUJBQWlCO1lBQ2pCLDZCQUE2QjtZQUM3QixzQkFBc0I7WUFDdEIsc0JBQXNCO1lBQ3RCLG9CQUFvQjtZQUNwQixxQkFBcUI7U0FDdEIsQ0FBQztRQUVGLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM3QixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzQixJQUFJLENBQUM7b0JBQ0gsSUFDRSxPQUFPO3dCQUNQLE9BQU8sQ0FBQyxVQUFVO3dCQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFDL0IsQ0FBQzt3QkFDRCxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDMUMsQ0FBQztnQkFDSCxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1gsSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFLENBQUM7d0JBQ25DLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQzt3QkFDL0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO29CQUN0QyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsdUJBQXVCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLGNBQWM7SUFDaEIsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLElBQUksQ0FBQztRQUNILE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDM0MsK0JBQStCLENBQ2hDLENBQUM7UUFFRixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDOUIsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUNyQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ25CLENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxTQUFTO1lBQ1gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxjQUFjO0lBQ2hCLENBQUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLDBCQUEwQjtJQUN4QyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO0lBRXZELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQXNCLEtBQVc7UUFDNUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN2QyxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBc0MsQ0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHNhZmVDbGVhbnVwRmxvYXRpbmdQYW5lbHMoKTogdm9pZCB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc2VsZWN0b3JzID0gW1xuICAgICAgJ3J0ZS1mbG9hdHBhbmVsJyxcbiAgICAgICcucnRlLWZsb2F0cGFuZWwnLFxuICAgICAgJy5ydGUtZmxvYXRwYW5lbC1wYXJhZ3JhcGhvcCcsXG4gICAgICAnW2NsYXNzKj1cInJ0ZS1mbG9hdFwiXScsXG4gICAgICAnW2NsYXNzKj1cInJ0ZS1wb3B1cFwiXScsXG4gICAgICAnLnJ0ZS10b29sYmFyLWZsb2F0JyxcbiAgICAgICcucnRlLWRyb3Bkb3duLXBhbmVsJyxcbiAgICBdO1xuXG4gICAgc2VsZWN0b3JzLmZvckVhY2goKHNlbGVjdG9yKSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGVsZW1lbnQgJiZcbiAgICAgICAgICAgIGVsZW1lbnQucGFyZW50Tm9kZSAmJlxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jb250YWlucyhlbGVtZW50KVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjbGVhbnVwT3JwaGFuZWRFbGVtZW50cygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIFNpbGVudCBmYWlsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFudXBPcnBoYW5lZEVsZW1lbnRzKCk6IHZvaWQge1xuICB0cnkge1xuICAgIGNvbnN0IHJ0ZUVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICdbaWQqPVwicnRlX1wiXSwgW2NsYXNzKj1cInJ0ZV9cIl0nXG4gICAgKTtcblxuICAgIHJ0ZUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZG9jdW1lbnQuYm9keS5jb250YWlucyhlbGVtZW50KSkge1xuICAgICAgICAgIGVsZW1lbnQucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gSWdub3JlXG4gICAgICB9XG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBTaWxlbnQgZmFpbFxuICB9XG59XG5cbi8qKlxuICogTW9ua2V5IHBhdGNoIE5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkIHRvIGF2b2lkIE5vdEZvdW5kRXJyb3JcbiAqIHdoZW4gcmVtb3ZpbmcgYWxyZWFkeS1kZXRhY2hlZCBET00gZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaFJlbW92ZUNoaWxkSWZEZXRhY2hlZCgpOiB2b2lkIHtcbiAgY29uc3Qgb3JpZ2luYWxSZW1vdmVDaGlsZCA9IE5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkO1xuXG4gIE5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24gKHRoaXM6IE5vZGUsIGNoaWxkOiBOb2RlKTogTm9kZSB7XG4gICAgaWYgKGNoaWxkICYmIGNoaWxkLnBhcmVudE5vZGUgPT09IHRoaXMpIHtcbiAgICAgIHJldHVybiBvcmlnaW5hbFJlbW92ZUNoaWxkLmNhbGwodGhpcywgY2hpbGQpO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGQ7XG4gIH0gYXMgdHlwZW9mIE5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkO1xufVxuIl19