@protorians/widgets
Version:
Create your web user interfaces with widgets
21 lines (20 loc) • 1.4 kB
TypeScript
import type { IAttributes, ICallable, IWidgetCapabilities, IWidgetCapabilitiesMap, IWidgetCapabilitiesScheme, IWidgetCapability, IWidgetNode } from "./types/index.js";
export declare class WidgetCapability<E extends HTMLElement, A extends IAttributes, Payload> implements IWidgetCapability<E, A, Payload> {
readonly name: string;
readonly callable: ICallable<E, A, Payload>;
protected target: IWidgetNode<E, A> | undefined;
constructor(name: string, callable: ICallable<E, A, Payload>);
on(widget: IWidgetNode<E, A>): this;
make<T>(payload: Payload): T | void;
}
export declare function createWidgetCapability<E extends HTMLElement, A extends IAttributes, Payload>(name: string, callable: ICallable<E, A, Payload>): IWidgetCapability<E, A, Payload>;
export declare class Capabilities<C> implements IWidgetCapabilities<C> {
protected _scheme: Partial<IWidgetCapabilitiesMap<C>>;
get scheme(): Partial<IWidgetCapabilitiesMap<C>>;
attach<K extends keyof C>(capability: IWidgetCapability<any, any, C[K]>): this;
override<K extends keyof C>(capability: IWidgetCapability<any, any, C[K]>): this;
detach(name: keyof C): this;
capability<K extends keyof C>(name: K): IWidgetCapability<any, any, C[K]> | undefined;
has(name: keyof C): boolean;
}
export declare function createWidgetCapabilities<C extends IWidgetCapabilitiesScheme>(): Capabilities<C>;