Current File : /home/exataengenharia/public_html/node_modules/@splidejs/splide/src/js/utils/dom/closest/closest.ts |
import { isFunction } from '../../type/type';
import { matches } from '../matches/matches';
/**
* Starts from the provided element, searches for the first element that matches the selector in ascendants.
*
* @param from - An element to search from.
* @param selector - A selector.
*
* @return The found element if available, or `null`.
*/
export function closest( from: HTMLElement, selector: string ): HTMLElement | null {
if ( isFunction( from.closest ) ) {
return from.closest( selector );
}
let elm: HTMLElement | null = from;
while ( elm && elm.nodeType === 1 ) {
if ( matches( elm, selector ) ) {
break;
}
elm = elm.parentElement;
}
return elm;
}