export declare type HTMLOrSVGElement = HTMLElement | SVGElement;
export declare type IEffect = (elem?: TElement | null) => TReturn;
export declare type Primitive = string | number | boolean;
export declare type ICssVariable = Record;
export declare type OnlyNonPrimitiveKey = keyof {
[P in keyof T as T[P] extends Primitive ? never : P]: T[P];
};
export declare type IEqualFunction = T extends Primitive | Array ? (before: T, after: T) => boolean : T extends object ? IEqualFunctionMap | ((before: T, after: T) => boolean) : never;
export declare type IEqualFunctionMap = {
[key in keyof T]?: IEqualFunction;
};
export declare type ICreateEffect = (fn: IEffect) => void;
export declare type ISetupOptions = {
createVariable?: (value: T, eq?: IEqualFunctionMap | undefined) => T;
createEffect?: ICreateEffect;
createComputed?: (fn: () => T, eq?: IEqualFunction | undefined) => {
value: T;
};
};
export declare type ICreateEffectExecute = () => (() => void) | void;
export declare type ISubscription = Set;
export interface ICreateEffectRunning {
execute: ICreateEffectExecute;
dependencies: Set;
cleanup?: () => void;
owner: ICreateEffectRunning | null | undefined;
owned: ICreateEffectRunning[];
toRun: boolean;
id?: string;
}
export declare type IStringOrDomElement = string | T;
export declare type IGetDomElementFn = (domElement: IStringOrDomElement) => T | null;
export declare type DiffedElements = Node & {
isNew: boolean;
};
export declare type ElementWithListeners = (ChildNode | Element) & {
listeners: Map void>>;
};
export declare type DOMUpdate = {
[key in keyof T]?: Partial | Omit;
};
export declare type CSSStyles = Partial | Omit, any>;