@joist/element
Version:
Intelligently apply styles to WebComponents
29 lines (28 loc) • 966 B
TypeScript
export interface AttrDef {
propName: string | symbol;
observe: boolean;
reflect: boolean;
getPropValue: () => unknown;
setPropValue: (value: unknown) => void;
}
export type ListenerSelector<T> = (el: T) => EventTarget | null;
export interface Listener<T> {
event: string;
cb: (e: Event) => void;
selector: ListenerSelector<T>;
}
export type AttrChangedCallback = (name: string, oldValue: string, newValue: string) => void;
export declare class AttrMetadata extends Map<string, AttrDef> {
}
export declare class AttrChangeMetadata extends Map<string, Set<AttrChangedCallback>> {
}
export declare class ElementMetadata<T> {
attrs: AttrMetadata;
attrChanges: AttrChangeMetadata;
listeners: Listener<T>[];
onReady: Set<() => void>;
}
export declare class MetadataStore extends WeakMap<object, ElementMetadata<unknown>> {
read<T>(value: object): ElementMetadata<T>;
}
export declare const metadataStore: MetadataStore;