16 lines
No EOL
446 B
TypeScript
16 lines
No EOL
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;
|
|
} |