1 |
|
2 | import { ComponentClass, StatelessComponent } from 'react';
|
3 | import { Dispatch, ReducibleNode } from 'reducible-node';
|
4 | import { PageInstance } from './pageInstance';
|
5 | export declare type ValidTreeNode = {
|
6 | [path: string]: PageFolder | Page;
|
7 | };
|
8 | export declare type PageTreeNode<T extends ValidTreeNode = {}> = T;
|
9 | export interface PageFolder<T extends ValidTreeNode = {}> {
|
10 | path: string;
|
11 | title: string;
|
12 | contents: PageTreeNode<T>;
|
13 | }
|
14 | export declare function folder<T extends ValidTreeNode = {}>(title: string, contents: PageTreeNode<T>): PageFolder<T>;
|
15 | export interface ReplaceOptions<TParams> {
|
16 | mutex?: string;
|
17 | params?: TParams;
|
18 | title?: string;
|
19 | parent?: string;
|
20 | openedFrom?: string;
|
21 | }
|
22 | export interface OpenOptions<TParams> extends ReplaceOptions<TParams> {
|
23 | insertAfterMutex?: string;
|
24 | }
|
25 | export 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 | }
|
39 | export interface BuildPageOptions {
|
40 | title?: string;
|
41 | hidden?: boolean;
|
42 | persistent?: boolean;
|
43 | }
|
44 | export declare function buildPage<TParams, TState>(component: ComponentClass<any> | StatelessComponent<any>, node: ReducibleNode<TState>, options?: BuildPageOptions): Page<TParams, TState>;
|
45 | export interface PageOccurrence<TParams = {}> {
|
46 | path: string;
|
47 | mutex: string;
|
48 | params?: TParams;
|
49 | title?: string;
|
50 | parent?: string;
|
51 | openedFrom?: string;
|
52 | }
|
53 | export declare type PathTreeNode = string | PathTree;
|
54 | export interface PathTree extends Array<PathTreeNode> {
|
55 | }
|
56 | export 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 | }
|