/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
import { BR } from "../../../core/constants.js";
import { Dom } from "../../../core/dom/dom.js";
import { scrollIntoViewIfNeeded } from "../../../core/helpers/utils/scroll-into-view.js";
/**
* Checks the possibility and necessity of inserting a BR instead of a block
* @private
*/
export function checkBR(fake, jodit, shiftKeyPressed) {
const isMultiLineBlock = Boolean(Dom.closest(fake, ['pre', 'blockquote'], jodit.editor));
const isCell = !isMultiLineBlock && Dom.closest(fake, ['td', 'th'], jodit.editor);
const isBRMode = jodit.o.enter.toLowerCase() === BR.toLowerCase();
// if you use
defaultTag for break line or when was entered SHIFt key or in
if (isBRMode || isCell || (shiftKeyPressed && !isMultiLineBlock) || (!shiftKeyPressed && isMultiLineBlock)) { // 2 BR before if (isMultiLineBlock && checkSeveralBR(fake)) { return false; } const br = jodit.createInside.element('br'); Dom.before(fake, br); if (!Dom.findNotEmptySibling(br, false)) { const clone = br.cloneNode(); Dom.after(br, clone); Dom.before(clone, fake); } scrollIntoViewIfNeeded(br, jodit.editor, jodit.ed); return true; } return false; } function checkSeveralBR(fake) { // 2 BR before const preBr = brBefore(brBefore(fake)); if (preBr) { Dom.safeRemove(brBefore(fake)); Dom.safeRemove(preBr); return true; } return false; } function brBefore(start) { if (!start) { return false; } const prev = Dom.findSibling(start, true); if (!prev || !Dom.isTag(prev, 'br')) { return false; } return prev; }