/// import Fill from './components/Fill'; import * as mitt from 'mitt'; export declare type Name = string | Symbol; export declare type Listener = (components: Component[]) => void; export interface Component { name: Name; fill: Fill; children: React.ReactChild[]; } export interface FillRegistration { listeners: Listener[]; components: Component[]; } export interface Db { byName: Map; byFill: Map; } export default class Manager { private _bus; private _db; constructor(bus: mitt.Emitter); mount(): void; unmount(): void; handleFillMount({fill}: { fill: Fill; }): void; handleFillUpdated({fill}: { fill: Fill; }): void; handleFillUnmount({fill}: { fill: Fill; }): void; /** * Triggers once immediately, then each time the components change for a location * * name: String, fn: (components: Component[]) => void */ onComponentsChange(name: Name, fn: Listener): void; getFillsByName(name: string): Fill[]; getChildrenByName(name: string): React.ReactChild[]; /** * Removes previous listener * * name: String, fn: (components: Component[]) => void */ removeOnComponentsChange(name: Name, fn: Listener): void; }