starboard-notebook
Version:
Starboard Notebook
34 lines (33 loc) • 1.2 kB
TypeScript
export declare type RegistryEventType = "register" | "deregister";
export declare type RegistryEvent<S, T> = {
type: RegistryEventType;
key: S;
value: T;
};
export declare type MapRegistryListenerFunction<S, T> = (event: RegistryEvent<S, T>) => void;
/**
* A registry here is just a wrapper around a Map. It has a register function that calls set,
* but also emits an event for internal use.
*/
export declare class MapRegistry<S, T> {
protected map: Map<S, T>;
private handlers;
subscribe(handler: MapRegistryListenerFunction<S, T>): void;
unsubscribe(handler: MapRegistryListenerFunction<S, T>): void;
private notifyHandlers;
get(key: S): T | undefined;
/**
* This does *not* trigger a register event, so cells already present with this cell type will not switch automatically.
* Use register instead.
*/
set(key: S | Array<S>, value: T): void;
has(key: S): boolean;
keys(): IterableIterator<S>;
values(): IterableIterator<T>;
register(key: S | Array<S>, value: T): void;
deregister(key: S): false | undefined;
/**
* Get the underlying Map
*/
getMap(): Map<S, T>;
}