UNPKG

pretur.navigation

Version:
82 lines (81 loc) 2.92 kB
/// <reference types="react" /> import { ComponentClass, StatelessComponent } from 'react'; import { Dispatch, ReducibleNode } from 'reducible-node'; import { PageInstance } from './pageInstance'; import { Navigator } from './navigator'; export declare type ValidTreeNode = { [path: string]: PageFolder | Page; }; export declare type PageTreeNode<T extends ValidTreeNode = {}> = T; export interface PageFolder<T extends ValidTreeNode = {}> { path: string; title: string; contents: PageTreeNode<T>; } export declare function folder<T extends ValidTreeNode = {}>(title: string, contents: PageTreeNode<T>): PageFolder<T>; export interface ReplaceOptions<TParams> { mutex?: string; params?: TParams; title?: string; parent?: string; openedFrom?: string; } export interface OpenOptions<TParams> extends ReplaceOptions<TParams> { insertAfterMutex?: string; } export interface Page<TParams = any, TState = any> { readonly type: { params: TParams; state: TState; }; title?: string; path: string; hidden: boolean; persistent: boolean; component: ComponentClass<any> | StatelessComponent<any>; node: ReducibleNode<TState>; open: (dispatch: Dispatch, navigator: Navigator, opt?: OpenOptions<TParams>) => void; replace: (dispatch: Dispatch, navigator: Navigator, target: string, opt?: ReplaceOptions<TParams>) => void; } export interface BuildPageOptions { title?: string; hidden?: boolean; persistent?: boolean; } export declare function buildPage<TParams, TState>(component: ComponentClass<any> | StatelessComponent<any>, node: ReducibleNode<TState>, options?: BuildPageOptions): Page<TParams, TState>; export interface PageOccurrence<TParams = {}> { path: string; mutex: string; params?: TParams; title?: string; parent?: string; openedFrom?: string; } export declare type PathTreeNode = string | PathTree; export interface PathTree extends Array<PathTreeNode> { } export declare class Pages<T extends ValidTreeNode = any> { private pages; private folders; private calculatedPathTree; private calculatedFolderContents; private calculatedFilteredPathTree; private calculatedFilteredFolderContents; readonly prefix: string; readonly tree: PageTreeNode<T>; constructor(prefix: string, root: PageTreeNode<T>); hasPage(path: string): boolean; getPage(path: string): Page; hasFolder(path: string): boolean; getFolder(path: string): PageFolder; isHidden(path: string): boolean; readonly pathTree: PathTree; readonly folderContents: { [folder: string]: string[]; }; readonly filteredPathTree: PathTree; readonly filteredFolderContents: { [folder: string]: string[]; }; buildInstance<TState, TReducerBuilderData>(occurrence: PageOccurrence<TReducerBuilderData>): PageInstance<TState, TReducerBuilderData>; }