router-primitives
Version:
A cross-platform application router. Declarative routing by way of layout primitives
30 lines (29 loc) • 1.18 kB
TypeScript
import { IInputLocation, IOutputLocation, StateObserver } from '../types';
import { ISerializedStateStore, SerializedStateSerializer, SerializedStateDeserializer, ISerializedStateStoreConfig } from '../types/serialized_state';
interface INativeStoreConfig extends ISerializedStateStoreConfig {
serializer: SerializedStateSerializer;
deserializer: SerializedStateDeserializer;
historySize: number;
}
interface ISetStateOptions {
updateHistory?: boolean;
}
export default class NativeStore implements ISerializedStateStore {
kind: 'memory';
serializer: SerializedStateSerializer;
deserializer: SerializedStateDeserializer;
historySize: number;
history: string[];
private observers;
private currentLocationInHistory;
constructor(config?: INativeStoreConfig);
setState(unserializedLocation: IInputLocation, options?: ISetStateOptions): void;
getState(): IOutputLocation;
subscribeToStateChanges(fn: StateObserver): void;
unsubscribeFromStateChanges(fn: StateObserver): void;
back(): void;
forward(): void;
go(historyChange: number): void;
private notifyObservers;
}
export {};