UNPKG

axe-core

Version:

Accessibility engine for automated Web UI testing

31 lines (25 loc) 713 B
import matches from './matches'; /** * closest implementation that operates on a VirtualNode * * @method closest * @memberof axe.utils * @param {VirtualNode} vNode VirtualNode to match * @param {String} selector CSS selector string * @return {VirtualNode | null} */ function closest(vNode, selector) { while (vNode) { if (matches(vNode, selector)) { return vNode; } // the top node of the tree will have parent === null, so a // undefined parent means we are in a disconnected tree if (typeof vNode.parent === 'undefined') { throw new TypeError('Cannot resolve parent for non-DOM nodes'); } vNode = vNode.parent; } return null; } export default closest;