/** * @module plugins/tab */ import type { IJodit } from 'jodit/types'; import { Dom } from 'jodit/core/dom/dom'; /** * Checks if the cursor is at the beginning of the LI element when tabbed. * If so then add an internal list * @private */ export function onTabInsideLi(jodit: IJodit): boolean { if (!jodit.o.tab.tabInsideLiInsertNewList || !jodit.s.isCollapsed()) { return false; } const fake = jodit.createInside.fake(); jodit.s.insertNode(fake); const li = Dom.closest(fake, 'li', jodit.editor); if ( li && jodit.s.cursorOnTheLeft(li) && Dom.isTag(li.previousElementSibling, 'li') ) { const list = Dom.closest(li, ['ol', 'ul'], jodit.editor); if (list) { const newList = jodit.createInside.element(list.tagName); const previousLi = li.previousElementSibling; newList.appendChild(li); previousLi.appendChild(newList); jodit.s.setCursorAfter(fake); Dom.safeRemove(fake); return true; } } Dom.safeRemove(fake); return false; }