1 | import { ComponentType, ForwardRefExoticComponent, ReactElement, ReactNode, Ref } from 'react';
|
2 | export interface DefaultImportedComponent<P> {
|
3 | default: ComponentType<P>;
|
4 | }
|
5 | export declare type AnyFunction = (x: any) => any;
|
6 | export interface Default<T> {
|
7 | default: T;
|
8 | }
|
9 | export interface Stream {
|
10 | marks: Record<any, any>;
|
11 | }
|
12 | export declare type Mark = string[];
|
13 | export declare type Promised<T> = () => Promise<T>;
|
14 | export declare type DefaultComponent<P> = ComponentType<P> | DefaultImportedComponent<P>;
|
15 | export declare type DefaultComponentImport<T> = () => Promise<DefaultComponent<T>>;
|
16 | export declare type Defaultable<P> = P | Default<P>;
|
17 |
|
18 |
|
19 |
|
20 |
|
21 | export declare type DefaultImport<T> = () => Promise<Defaultable<T>>;
|
22 | export interface MarkMeta {
|
23 | loadable: Loadable<any>;
|
24 | mark: Mark;
|
25 | chunkName: string;
|
26 | fileName: string;
|
27 | }
|
28 | export declare type LazyImport<T> = () => Promise<DefaultImportedComponent<T>>;
|
29 | export interface LoadableComponentState {
|
30 | loading?: boolean;
|
31 | error?: any;
|
32 | }
|
33 | export interface Loadable<T> {
|
34 | done: boolean;
|
35 | error: any;
|
36 | payload: T | undefined;
|
37 | mark: Mark;
|
38 | resolution: Promise<void>;
|
39 | importer: any;
|
40 | isLoading(): boolean;
|
41 | reset(): void;
|
42 | replaceImportFunction(newImportFunction: Promised<T>): void;
|
43 | loadIfNeeded(): Promise<T>;
|
44 | tryResolveSync<Y = T>(then: (x: T) => Y): Promise<Y>;
|
45 | load(): Promise<T>;
|
46 | reload(): Promise<void>;
|
47 | then(callback: (x: T) => void, err: () => void): Promise<any>;
|
48 | }
|
49 | export interface ComponentOptions<P, K> {
|
50 | loadable: DefaultComponentImport<P> | Loadable<ComponentType<P>>;
|
51 | LoadingComponent?: ComponentType<any>;
|
52 | ErrorComponent?: ComponentType<any>;
|
53 | onError?: (a: any) => void;
|
54 | async?: boolean;
|
55 | render?: (Component: ComponentType<P> | undefined, State: LoadableComponentState, props?: K) => ReactElement | null;
|
56 | forwardRef?: Ref<any>;
|
57 | forwardProps?: K;
|
58 | }
|
59 | export interface HOCOptions {
|
60 | noAutoImport?: boolean;
|
61 | }
|
62 | export interface AdditionalHOC {
|
63 | done: Promise<void>;
|
64 | preload(): Promise<void>;
|
65 | }
|
66 | export declare type HOCType<P, K> = ForwardRefExoticComponent<K & {
|
67 | importedProps?: Partial<ComponentOptions<P, K>>;
|
68 | }> & AdditionalHOC;
|
69 | export interface ImportModuleHOCProps {
|
70 | fallback: NonNullable<ReactNode> | null;
|
71 | }
|
72 | export interface ImportModuleProps<T> extends ImportModuleHOCProps {
|
73 | children: (arg: T) => ReactElement | null;
|
74 | }
|
75 | export interface FullImportModuleProps<T> extends ImportModuleProps<T> {
|
76 | import: DefaultImport<T> | Loadable<T>;
|
77 | }
|
78 | export declare type ModuleFC<T> = (props: ImportModuleProps<T>) => ReactElement | null;
|
79 | export declare type HOCModuleType<T> = ModuleFC<T> & AdditionalHOC;
|
80 | export declare type HOC = <P, K = P>(loader: DefaultComponentImport<P>, options?: Partial<ComponentOptions<P, K>> & HOCOptions) => HOCType<P, K>;
|
81 | export interface ImportedComponents {
|
82 | [index: number]: () => Promise<DefaultComponent<any>>;
|
83 | }
|