UNPKG

@wordpress/blocks

Version:
44 lines (43 loc) 1.42 kB
// packages/blocks/src/api/raw-handling/list-reducer.js import { unwrap } from "@wordpress/dom"; function isList(node) { return node.nodeName === "OL" || node.nodeName === "UL"; } function shallowTextContent(element) { return Array.from(element.childNodes).map(({ nodeValue = "" }) => nodeValue).join(""); } function listReducer(node) { if (!isList(node)) { return; } const list = node; const prevElement = node.previousElementSibling; if (prevElement && prevElement.nodeName === node.nodeName && list.children.length === 1) { while (list.firstChild) { prevElement.appendChild(list.firstChild); } list.parentNode.removeChild(list); } const parentElement = node.parentNode; if (parentElement && parentElement.nodeName === "LI" && parentElement.children.length === 1 && !/\S/.test(shallowTextContent(parentElement))) { const parentListItem = parentElement; const prevListItem = parentListItem.previousElementSibling; const parentList = parentListItem.parentNode; if (prevListItem) { prevListItem.appendChild(list); parentList.removeChild(parentListItem); } } if (parentElement && isList(parentElement)) { const prevListItem = node.previousElementSibling; if (prevListItem) { prevListItem.appendChild(node); } else { unwrap(node); } } } export { listReducer as default }; //# sourceMappingURL=list-reducer.js.map