16 lines
446 B
TypeScript
16 lines
446 B
TypeScript
|
/**
|
||
|
* 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;
|
||
|
}
|