export type Selector = string | T | null;
export type SelectorMultiple = string | T[] | NodeList | null;
const getElement = (
selector?: Selector,
fallback?: () => Selector,
): HTMLElement | null => {
if (!selector) {
if (fallback) return getElement(fallback());
return null;
}
if (selector instanceof HTMLElement) return selector;
return getElement(document.querySelector(selector) as T);
};
const getElements = (
selector?: SelectorMultiple,
fallback?: () => SelectorMultiple,
): T[] => {
if (!selector) {
if (fallback) return getElements(fallback());
return [];
}
if (selector instanceof NodeList) {
return [...selector] as T[];
}
if (Array.isArray(selector)) return selector;
return getElements(document.querySelectorAll(selector));
};
export { getElements };
export default getElement;