import { isTag, isCDATA, isText, hasChildren, isComment, } from "domhandler"; import renderHTML from "dom-serializer"; import { ElementType } from "domelementtype"; /** * @category Stringify * @deprecated Use the `dom-serializer` module directly. * @param node Node to get the outer HTML of. * @param options Options for serialization. * @returns `node`'s outer HTML. */ export function getOuterHTML(node, options) { return renderHTML(node, options); } /** * @category Stringify * @deprecated Use the `dom-serializer` module directly. * @param node Node to get the inner HTML of. * @param options Options for serialization. * @returns `node`'s inner HTML. */ export function getInnerHTML(node, options) { return hasChildren(node) ? node.children.map((node) => getOuterHTML(node, options)).join("") : ""; } /** * Get a node's inner text. Same as `textContent`, but inserts newlines for `
` tags. Ignores comments. * * @category Stringify * @deprecated Use `textContent` instead. * @param node Node to get the inner text of. * @returns `node`'s inner text. */ export function getText(node) { if (Array.isArray(node)) return node.map(getText).join(""); if (isTag(node)) return node.name === "br" ? "\n" : getText(node.children); if (isCDATA(node)) return getText(node.children); if (isText(node)) return node.data; return ""; } /** * Get a node's text content. Ignores comments. * * @category Stringify * @param node Node to get the text content of. * @returns `node`'s text content. * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent} */ export function textContent(node) { if (Array.isArray(node)) return node.map(textContent).join(""); if (hasChildren(node) && !isComment(node)) { return textContent(node.children); } if (isText(node)) return node.data; return ""; } /** * Get a node's inner text, ignoring `