export function createCssSelectorMatcher()

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