| 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 `<br>` 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 `<script>` and `<style>` tags. Ignores comments. |
| * |
| * @category Stringify |
| * @param node Node to get the inner text of. |
| * @returns `node`'s inner text. |
| * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText} |
| */ |
| export function innerText(node) { |
| if (Array.isArray(node)) |
| return node.map(innerText).join(""); |
| if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) { |
| return innerText(node.children); |
| } |
| if (isText(node)) |
| return node.data; |
| return ""; |
| } |
| //# sourceMappingURL=stringify.js.map |