UNPKG

2.79 kBTypeScriptView Raw
1/// <reference types="react" />
2import { ComponentClass, StatelessComponent } from 'react';
3import { Dispatch, ReducibleNode } from 'reducible-node';
4import { PageInstance } from './pageInstance';
5export declare type ValidTreeNode = {
6 [path: string]: PageFolder | Page;
7};
8export declare type PageTreeNode<T extends ValidTreeNode = {}> = T;
9export interface PageFolder<T extends ValidTreeNode = {}> {
10 path: string;
11 title: string;
12 contents: PageTreeNode<T>;
13}
14export declare function folder<T extends ValidTreeNode = {}>(title: string, contents: PageTreeNode<T>): PageFolder<T>;
15export interface ReplaceOptions<TParams> {
16 mutex?: string;
17 params?: TParams;
18 title?: string;
19 parent?: string;
20 openedFrom?: string;
21}
22export interface OpenOptions<TParams> extends ReplaceOptions<TParams> {
23 insertAfterMutex?: string;
24}
25export interface Page<TParams = any, TState = any> {
26 readonly type: {
27 params: TParams;
28 state: TState;
29 };
30 title?: string;
31 path: string;
32 hidden: boolean;
33 persistent: boolean;
34 component: ComponentClass<any> | StatelessComponent<any>;
35 node: ReducibleNode<TState>;
36 open: (dispatch: Dispatch, opt?: OpenOptions<TParams>) => void;
37 replace: (dispatch: Dispatch, target: string, opt?: ReplaceOptions<TParams>) => void;
38}
39export interface BuildPageOptions {
40 title?: string;
41 hidden?: boolean;
42 persistent?: boolean;
43}
44export declare function buildPage<TParams, TState>(component: ComponentClass<any> | StatelessComponent<any>, node: ReducibleNode<TState>, options?: BuildPageOptions): Page<TParams, TState>;
45export interface PageOccurrence<TParams = {}> {
46 path: string;
47 mutex: string;
48 params?: TParams;
49 title?: string;
50 parent?: string;
51 openedFrom?: string;
52}
53export declare type PathTreeNode = string | PathTree;
54export interface PathTree extends Array<PathTreeNode> {
55}
56export declare class Pages<T extends ValidTreeNode = any> {
57 private pages;
58 private folders;
59 private calculatedPathTree;
60 private calculatedFolderContents;
61 private calculatedFilteredPathTree;
62 private calculatedFilteredFolderContents;
63 readonly tree: PageTreeNode<T>;
64 constructor(root: PageTreeNode<T>);
65 hasPage(path: string): boolean;
66 getPage(path: string): Page;
67 hasFolder(path: string): boolean;
68 getFolder(path: string): PageFolder;
69 isHidden(path: string): boolean;
70 readonly pathTree: PathTree;
71 readonly folderContents: {
72 [folder: string]: string[];
73 };
74 readonly filteredPathTree: PathTree;
75 readonly filteredFolderContents: {
76 [folder: string]: string[];
77 };
78 buildInstance<TState, TReducerBuilderData>(occurrence: PageOccurrence<TReducerBuilderData>): PageInstance<TState, TReducerBuilderData>;
79}