router-primitives
Version:
A cross-platform application router. Declarative routing by way of layout primitives
41 lines (40 loc) • 2.95 kB
TypeScript
import { IRouterDeclaration, ISerializeOptions, IRouterInitArgs, RouterInstance, ExtractCustomStateFromTemplate, RouterCurrentState, RouterHistoricalState, IRouterTemplates, NeighborsOfType, NarrowRouterTypeName, Childs, Parent, Root, IInputLocation, AllTemplates, LinkOptions } from './types';
import { IRouterBase } from './types/router_base';
export interface IInternalState {
isActive?: boolean;
}
export default class RouterBase<CustomTemplates extends IRouterTemplates, RouterTypeName extends NarrowRouterTypeName<keyof AllTemplates<CustomTemplates>>, InitArgs extends IRouterInitArgs<CustomTemplates, NarrowRouterTypeName<RouterTypeName>> = IRouterInitArgs<CustomTemplates, NarrowRouterTypeName<RouterTypeName>>> implements IRouterBase<CustomTemplates, RouterTypeName, InitArgs> {
name: InitArgs['name'];
type: InitArgs['type'];
manager: InitArgs['manager'];
parent?: Parent<CustomTemplates>;
children: Childs<CustomTemplates>;
root: Root<CustomTemplates>;
getState?: InitArgs['getState'];
subscribe?: InitArgs['subscribe'];
config: InitArgs['config'];
_EXPERIMENTAL_internal_state: IInternalState;
constructor(init: InitArgs);
link: (actionName: string, options?: LinkOptions<ExtractCustomStateFromTemplate<AllTemplates<CustomTemplates>[RouterTypeName]>>) => string;
get lastDefinedParentsDisableChildCacheState(): boolean;
get routeKey(): string;
get data(): ExtractCustomStateFromTemplate<AllTemplates<CustomTemplates>[RouterTypeName]>;
get siblings(): RouterInstance<CustomTemplates, RouterTypeName>[];
getNeighborsByType<DesiredType extends NarrowRouterTypeName<keyof AllTemplates<CustomTemplates>>>(type: DesiredType): Array<RouterInstance<CustomTemplates, DesiredType>>;
getLocationDataFromLocationObject: (location: IInputLocation) => string | number | boolean | string[] | number[];
getNeighbors(): NeighborsOfType<CustomTemplates, NarrowRouterTypeName<Exclude<keyof AllTemplates<CustomTemplates>, RouterTypeName>>>;
get pathLocation(): number;
get isRootRouter(): boolean;
EXPERIMENTAL_setInternalState(internalState: IInternalState): void;
get EXPERIMENTAL_internal_state(): IInternalState;
serialize(options?: ISerializeOptions): IRouterDeclaration<AllTemplates<CustomTemplates>> & {
[key: string]: any;
};
get isPathRouter(): boolean;
get state(): RouterCurrentState<ExtractCustomStateFromTemplate<AllTemplates<CustomTemplates>[RouterTypeName]>>;
protected _state: () => RouterCurrentState<ExtractCustomStateFromTemplate<AllTemplates<CustomTemplates>[RouterTypeName]>> & {
isActive?: boolean;
};
get history(): RouterHistoricalState<ExtractCustomStateFromTemplate<AllTemplates<CustomTemplates>[RouterTypeName]>>;
protected _history: () => RouterHistoricalState<ExtractCustomStateFromTemplate<AllTemplates<CustomTemplates>[RouterTypeName]>>;
}