123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- import { isTag, hasChildren, } from "domhandler";
- /**
- * Get a node's children.
- *
- * @category Traversal
- * @param elem Node to get the children of.
- * @returns `elem`'s children, or an empty array.
- */
- export function getChildren(elem) {
- return hasChildren(elem) ? elem.children : [];
- }
- /**
- * Get a node's parent.
- *
- * @category Traversal
- * @param elem Node to get the parent of.
- * @returns `elem`'s parent node.
- */
- export function getParent(elem) {
- return elem.parent || null;
- }
- /**
- * Gets an elements siblings, including the element itself.
- *
- * Attempts to get the children through the element's parent first. If we don't
- * have a parent (the element is a root node), we walk the element's `prev` &
- * `next` to get all remaining nodes.
- *
- * @category Traversal
- * @param elem Element to get the siblings of.
- * @returns `elem`'s siblings.
- */
- export function getSiblings(elem) {
- const parent = getParent(elem);
- if (parent != null)
- return getChildren(parent);
- const siblings = [elem];
- let { prev, next } = elem;
- while (prev != null) {
- siblings.unshift(prev);
- ({ prev } = prev);
- }
- while (next != null) {
- siblings.push(next);
- ({ next } = next);
- }
- return siblings;
- }
- /**
- * Gets an attribute from an element.
- *
- * @category Traversal
- * @param elem Element to check.
- * @param name Attribute name to retrieve.
- * @returns The element's attribute value, or `undefined`.
- */
- export function getAttributeValue(elem, name) {
- var _a;
- return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];
- }
- /**
- * Checks whether an element has an attribute.
- *
- * @category Traversal
- * @param elem Element to check.
- * @param name Attribute name to look for.
- * @returns Returns whether `elem` has the attribute `name`.
- */
- export function hasAttrib(elem, name) {
- return (elem.attribs != null &&
- Object.prototype.hasOwnProperty.call(elem.attribs, name) &&
- elem.attribs[name] != null);
- }
- /**
- * Get the tag name of an element.
- *
- * @category Traversal
- * @param elem The element to get the name for.
- * @returns The tag name of `elem`.
- */
- export function getName(elem) {
- return elem.name;
- }
- /**
- * Returns the next element sibling of a node.
- *
- * @category Traversal
- * @param elem The element to get the next sibling of.
- * @returns `elem`'s next sibling that is a tag.
- */
- export function nextElementSibling(elem) {
- let { next } = elem;
- while (next !== null && !isTag(next))
- ({ next } = next);
- return next;
- }
- /**
- * Returns the previous element sibling of a node.
- *
- * @category Traversal
- * @param elem The element to get the previous sibling of.
- * @returns `elem`'s previous sibling that is a tag.
- */
- export function prevElementSibling(elem) {
- let { prev } = elem;
- while (prev !== null && !isTag(prev))
- ({ prev } = prev);
- return prev;
- }
- //# sourceMappingURL=traversal.js.map
|