UNPKG

@wordpress/blocks

Version:
37 lines (36 loc) 1.15 kB
// packages/blocks/src/api/raw-handling/is-inline-content.js import { isTextContent } from "@wordpress/dom"; function isInline(node, contextTag) { if (isTextContent(node)) { return true; } if (!contextTag) { return false; } const tag = node.nodeName.toLowerCase(); const inlineAllowedTagGroups = [ ["ul", "li", "ol"], ["h1", "h2", "h3", "h4", "h5", "h6"] ]; return inlineAllowedTagGroups.some( (tagGroup) => [tag, contextTag].filter((t) => !tagGroup.includes(t)).length === 0 ); } function deepCheck(nodes, contextTag) { return nodes.every( (node) => isInline(node, contextTag) && deepCheck(Array.from(node.children), contextTag) ); } function isDoubleBR(node) { return node.nodeName === "BR" && node.previousSibling && node.previousSibling.nodeName === "BR"; } function isInlineContent(HTML, contextTag) { const doc = document.implementation.createHTMLDocument(""); doc.body.innerHTML = HTML; const nodes = Array.from(doc.body.children); return !nodes.some(isDoubleBR) && deepCheck(nodes, contextTag); } export { isInlineContent as default }; //# sourceMappingURL=is-inline-content.js.map