UNPKG

jodit

Version:

Jodit is an awesome and useful wysiwyg editor with filebrowser

42 lines (41 loc) 1.9 kB
/*! * 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 { Dom } from "../../../../dom/dom.js"; import { elementsEqualAttributes, isSameAttributes } from "../is-same-attributes.js"; import { toggleAttributes } from "../toggle-attributes.js"; import { _PREFIX, INITIAL, REPLACE, WRAP } from "../../constants.js"; /** * Replaces non-leaf items with leaf items and either creates a new list or * adds a new item to the nearest old list * @private */ export function wrapList(commitStyle, wrapper, jodit) { const result = jodit.e.fire(`${_PREFIX}BeforeWrapList`, REPLACE, wrapper, commitStyle); const newWrapper = result !== null && result !== void 0 ? result : Dom.replace(wrapper, 'li', jodit.createInside); const prev = newWrapper.previousElementSibling; const next = newWrapper.nextElementSibling; let list = Dom.isTag(prev, commitStyle.element) ? prev : null; list !== null && list !== void 0 ? list : (list = Dom.isTag(next, commitStyle.element) ? next : null); if (!Dom.isList(list) || !isSameAttributes(list, commitStyle.options.attributes)) { list = jodit.createInside.element(commitStyle.element); toggleAttributes(commitStyle, list, jodit, INITIAL); Dom.before(newWrapper, list); } if (prev === list) { Dom.append(list, newWrapper); } else { Dom.prepend(list, newWrapper); } if (Dom.isTag(list.nextElementSibling, commitStyle.element) && elementsEqualAttributes(list, list.nextElementSibling)) { Dom.append(list, Array.from(list.nextElementSibling.childNodes)); Dom.safeRemove(list.nextElementSibling); } jodit.e.fire(`${_PREFIX}AfterWrapList`, WRAP, list, commitStyle); return list; }