@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
18 lines (17 loc) • 1.12 kB
TypeScript
export interface ExtendedMutationObserver extends MutationObserver {
new: () => ExtendedMutationObserver;
unobserve: (target: Node) => void;
}
type ObserverType = "mutation" | "intersection" | "resize";
type ObserverCallbackType<T extends ObserverType> = T extends "mutation" ? MutationCallback : T extends "intersection" ? IntersectionObserverCallback : T extends "resize" ? ResizeObserverCallback : never;
type ObserverOptions<T extends ObserverType> = T extends "intersection" ? IntersectionObserverInit : never;
type ObserverInstanceType<T extends ObserverType> = T extends "mutation" ? ExtendedMutationObserver : T extends "intersection" ? IntersectionObserver : T extends "resize" ? ResizeObserver : never;
/**
* This utility ensures observers are created only for browser contexts.
*
* @param type - the type of observer to create
* @param callback - the observer callback
* @param options - the observer options
*/
export declare function createObserver<T extends ObserverType>(type: T, callback: ObserverCallbackType<T>, options?: ObserverOptions<T>): ObserverInstanceType<T> | undefined;
export {};