@player-ui/player
Version:
37 lines • 1.62 kB
TypeScript
import { SyncHook, SyncWaterfallHook } from "tapable-ts";
import type { View, NavigationFlowViewState } from "@player-ui/types";
import type { Resolve } from "../../view";
import { ViewInstance } from "../../view";
import type { Logger } from "../../logger";
import type { FlowController } from "../flow";
import type { DataController } from "../data/controller";
import type { TransformRegistry } from "./types";
export interface ViewControllerOptions {
/** Where to get data from */
model: DataController;
/** Where to log data */
logger?: Logger;
/** A flow-controller instance to listen for view changes */
flowController: FlowController;
}
/** A controller to manage updating/switching views */
export declare class ViewController {
readonly hooks: {
/** Do any processing before the `View` instance is created */
resolveView: SyncWaterfallHook<[(import("@player-ui/types").Asset<string> & {
validation?: Array<import("@player-ui/types").Validation.CrossfieldReference>;
}) | undefined, string, NavigationFlowViewState], Record<string, any>>;
view: SyncHook<[ViewInstance], Record<string, any>>;
};
private readonly viewMap;
private readonly viewOptions;
private pendingUpdate?;
currentView?: ViewInstance;
transformRegistry: TransformRegistry;
optimizeUpdates: boolean;
constructor(initialViews: View[], options: Resolve.ResolverOptions & ViewControllerOptions);
private queueUpdate;
private getViewForRef;
onView(state: NavigationFlowViewState): void;
}
//# sourceMappingURL=controller.d.ts.map