| 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 |