jodit
Version:
Jodit is an awesome and useful wysiwyg editor with filebrowser
56 lines (55 loc) • 1.61 kB
JavaScript
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
*/
import { INSEPARABLE_TAGS } from "../../../core/constants.js";
import { Dom } from "../../../core/dom/index.js";
import { checkJoinTwoLists } from "./check-join-two-lists.js";
/**
* Check if the current empty item can be removed
*
* @example
* ```html
* <p>first stop</p><p>|<br></p>
* ```
* result
* ```html
* <p>first stop|</p>
* ```
*
* @private
*/
export function checkRemoveEmptyParent(jodit, fakeNode, backspace) {
let found = false;
const { setCursorBefore, setCursorIn } = jodit.s;
let prn = Dom.closest(fakeNode, Dom.isElement, jodit.editor);
if (!prn || !Dom.isEmpty(prn)) {
return false;
}
const neighbor = Dom.findNotEmptyNeighbor(fakeNode, backspace, jodit.editor);
do {
if (prn && Dom.isEmpty(prn) && !Dom.isCell(prn)) {
Dom.after(prn, fakeNode);
const tmp = Dom.closest(prn, n => Dom.isElement(n) && n !== prn, jodit.editor);
Dom.safeRemove(prn);
found = true;
prn = tmp;
}
else {
break;
}
} while (prn);
if (found && checkJoinTwoLists(jodit, fakeNode, backspace)) {
return true;
}
if (neighbor &&
!Dom.isText(neighbor) &&
!Dom.isTag(neighbor, INSEPARABLE_TAGS)) {
setCursorIn(neighbor, !backspace);
}
else {
setCursorBefore(fakeNode);
}
return found;
}