/** * Find nearest parent that satisfies a requirement * @param node Node to start from * @param findFn Matching function * @returns Found element, or null if no parent matches */ export function findNearestParent(node: Node | Element, findFn: (el: Element) => boolean): HTMLElement | null { let parent = node.parentElement; while (parent) { if (findFn(parent)) { return parent; } parent = parent.parentElement; } return null; }