export function* ancestors(element: HTMLElement): IterableIterator {
let cur = element.parentElement;
while (cur) {
yield cur;
cur = cur.parentElement;
}
}
export function closest(element: HTMLElement, sel: string): HTMLElement {
const a = ancestors(element);
let iter = a.next();
while (!iter.done) {
const cur = iter.value;
const m = cur.querySelector(sel);
if (m) {
return m;
}
iter = a.next();
}
return null;
}