UNPKG

@wordpress/blocks

Version:
8 lines (7 loc) 2.46 kB
{ "version": 3, "sources": ["../../../src/api/raw-handling/is-inline-content.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { isTextContent } from '@wordpress/dom';\n\n/**\n * Checks if the given node should be considered inline content, optionally\n * depending on a context tag.\n *\n * @param {Node} node Node name.\n * @param {string} contextTag Tag name.\n *\n * @return {boolean} True if the node is inline content, false if nohe.\n */\nfunction isInline( node, contextTag ) {\n\tif ( isTextContent( node ) ) {\n\t\treturn true;\n\t}\n\n\tif ( ! contextTag ) {\n\t\treturn false;\n\t}\n\n\tconst tag = node.nodeName.toLowerCase();\n\tconst inlineAllowedTagGroups = [\n\t\t[ 'ul', 'li', 'ol' ],\n\t\t[ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' ],\n\t];\n\n\treturn inlineAllowedTagGroups.some(\n\t\t( tagGroup ) =>\n\t\t\t[ tag, contextTag ].filter( ( t ) => ! tagGroup.includes( t ) )\n\t\t\t\t.length === 0\n\t);\n}\n\nfunction deepCheck( nodes, contextTag ) {\n\treturn nodes.every(\n\t\t( node ) =>\n\t\t\tisInline( node, contextTag ) &&\n\t\t\tdeepCheck( Array.from( node.children ), contextTag )\n\t);\n}\n\nfunction isDoubleBR( node ) {\n\treturn (\n\t\tnode.nodeName === 'BR' &&\n\t\tnode.previousSibling &&\n\t\tnode.previousSibling.nodeName === 'BR'\n\t);\n}\n\nexport default function isInlineContent( HTML, contextTag ) {\n\tconst doc = document.implementation.createHTMLDocument( '' );\n\n\tdoc.body.innerHTML = HTML;\n\n\tconst nodes = Array.from( doc.body.children );\n\n\treturn ! nodes.some( isDoubleBR ) && deepCheck( nodes, contextTag );\n}\n"], "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAA8B;AAW9B,SAAS,SAAU,MAAM,YAAa;AACrC,UAAK,0BAAe,IAAK,GAAI;AAC5B,WAAO;AAAA,EACR;AAEA,MAAK,CAAE,YAAa;AACnB,WAAO;AAAA,EACR;AAEA,QAAM,MAAM,KAAK,SAAS,YAAY;AACtC,QAAM,yBAAyB;AAAA,IAC9B,CAAE,MAAM,MAAM,IAAK;AAAA,IACnB,CAAE,MAAM,MAAM,MAAM,MAAM,MAAM,IAAK;AAAA,EACtC;AAEA,SAAO,uBAAuB;AAAA,IAC7B,CAAE,aACD,CAAE,KAAK,UAAW,EAAE,OAAQ,CAAE,MAAO,CAAE,SAAS,SAAU,CAAE,CAAE,EAC5D,WAAW;AAAA,EACf;AACD;AAEA,SAAS,UAAW,OAAO,YAAa;AACvC,SAAO,MAAM;AAAA,IACZ,CAAE,SACD,SAAU,MAAM,UAAW,KAC3B,UAAW,MAAM,KAAM,KAAK,QAAS,GAAG,UAAW;AAAA,EACrD;AACD;AAEA,SAAS,WAAY,MAAO;AAC3B,SACC,KAAK,aAAa,QAClB,KAAK,mBACL,KAAK,gBAAgB,aAAa;AAEpC;AAEe,SAAR,gBAAkC,MAAM,YAAa;AAC3D,QAAM,MAAM,SAAS,eAAe,mBAAoB,EAAG;AAE3D,MAAI,KAAK,YAAY;AAErB,QAAM,QAAQ,MAAM,KAAM,IAAI,KAAK,QAAS;AAE5C,SAAO,CAAE,MAAM,KAAM,UAAW,KAAK,UAAW,OAAO,UAAW;AACnE;", "names": [] }