UNPKG

@domx/statecontroller

Version:

A StateController base class for handling data state changes on a LitElement

73 lines 2.8 kB
import { LitElement, ReactiveController } from "lit"; export declare class RootStateChangeEvent extends Event { static eventType: string; event: Event | string; rootState: RootStateContainer; controller: any; statePath: string; state: any; constructor(event: Event | string, rootState: RootStateContainer, controller: any, statePath: string, state: any); } declare class StatePathChangeEvent extends Event { controller: any; statePath: string; state: any; constructor(controller: any, statePath: string, state: any); } declare type RootStateContainer = { [key: string]: any; }; declare type StateChangeEventListener = (event: StatePathChangeEvent) => void; declare type RootStateChangeEventListener = (event: RootStateChangeEvent) => void; /** * Class used to track root state changes */ export declare class RootState { private static bus; private static listenerCounts; static addStateChangeEventListener(statePath: string, listener: StateChangeEventListener, signal: AbortSignal): void; /** * Adds an event listener for any changes to the root state. * @param listener * @param signal provide a signal for removing the listener */ static addRootStateChangeEventListener(listener: RootStateChangeEventListener, signal?: AbortSignal): void; static get<T>(name: string): T | null; static change<T>(controller: any, event: Event | string, statePath: string, state: T): true; static push(state: RootStateContainer): void; static get current(): RootStateContainer; } export declare class StateController implements ReactiveController { static stateProperties: Array<string>; [name: string]: any; /** Returns the stateId property from the host element if defined */ get stateId(): string | null; /** * Initializes the StateController */ constructor(host: LitElement); /** The element that the controller is attached to */ host: LitElement & { stateId?: string; }; /** Used to signal when the host has been disconnected */ abortController: AbortController; private get stateProperties(); /** * Notifies the root state of the change and calls requestUpdate on the host. * @param event The event responsible for the update */ requestUpdate(event: Event | string): void; hostConnected(): void; hostDisconnected(): void; refreshState(force?: boolean): void; /** Override this method to react to state changes */ stateUpdated(): void; private _stateId; private initState; private syncStateValue; private addStateListeners; private getStateName; } export {}; //# sourceMappingURL=StateController.d.ts.map