in packages/dom/src/css.ts [74:92]
export function createCssSelectorMatcher(
selector: CssSelector,
): Matcher<Node | Range, Element> {
return async function* matchAll(scope) {
scope = toRange(scope);
const document = ownerDocument(scope);
for (const element of document.querySelectorAll(selector.value)) {
const range = document.createRange();
range.selectNode(element);
if (
scope.isPointInRange(range.startContainer, range.startOffset) &&
scope.isPointInRange(range.endContainer, range.endOffset)
) {
yield element;
}
}
};
}