@pictogrammers/element
Version:
Web Component Element for TypeScript
37 lines (36 loc) • 1.33 kB
TypeScript
export declare const addObserver: unique symbol;
export declare const removeObserver: unique symbol;
export declare const hasObserver: unique symbol;
export declare const isProxy: unique symbol;
export declare const getTarget: unique symbol;
type AddObserverCallback = (key?: string) => void;
type AddObserver = (host: HTMLElement, callback: AddObserverCallback) => void;
type RemoveObserver = (host: HTMLElement) => void;
type IsAny<T> = unknown extends T & string ? true : false;
type ExtrasArray<T> = {
[addObserver]: AddObserver;
[removeObserver]: RemoveObserver;
[isProxy]: boolean;
} & Array<T extends (infer U)[] ? Partial<U> : object>;
type Extras = {
[addObserver]: AddObserver;
[removeObserver]: RemoveObserver;
[isProxy]: boolean;
};
type RecursiveProxy<T> = IsAny<T> extends true ? any : T extends Array<any> ? ExtrasArray<T> & {
[P in keyof T]: IsAny<T[P]> extends true ? any : RecursiveProxy<T[P]>;
} : {
[P in keyof T]: IsAny<T[P]> extends true ? any : T[P] extends Array<any> ? RecursiveProxy<T[P]> : T[P];
} & Extras;
export declare function createProxy<T>(obj: T): RecursiveProxy<T>;
export declare const Mutation: {
fill: string;
pop: string;
push: string;
reverse: string;
shift: string;
sort: string;
splice: string;
unshift: string;
};
export {};