react-async-states-utils
Version:
utilities for react-async-states package
31 lines (28 loc) • 2.03 kB
TypeScript
import * as React from 'react';
import { MixedConfig, Status, State, Source, UseAsyncState } from 'react-async-states';
type StateBoundaryProps<T, A extends unknown[], E, S> = {
children: React.ReactNode;
config: MixedConfig<T, A, E, S>;
dependencies?: any[];
strategy?: RenderStrategy;
render?: StateBoundaryRenderProp;
};
type StateBoundaryRenderProp = Record<Status, React.ReactNode>;
type BoundaryContextValue<T, A extends unknown[] = unknown[], E = unknown, S = State<T, A, E>> = BoundaryContext<T, A, E, S> | null;
type BoundarySourceContextType = {
source: Source<unknown, unknown[], unknown>;
parent: BoundarySourceContextType | null;
};
type BoundaryContext<T, A extends unknown[] = unknown[], E = unknown, S = State<T, A, E>> = UseAsyncState<T, A, E, S>;
declare function StateBoundary<T, A extends unknown[], E, S>(props: StateBoundaryProps<T, A, E, S>): React.FunctionComponentElement<StateBoundaryProps<unknown, unknown[], unknown, unknown>>;
declare enum RenderStrategy {
FetchAsYouRender = 0,
FetchThenRender = 1,
RenderThenFetch = 2
}
declare function RenderThenFetchBoundary<T, A extends unknown[], E, S>(props: StateBoundaryProps<T, A, E, S>): JSX.Element;
declare function FetchAsYouRenderBoundary<T, A extends unknown[], E, S>(props: StateBoundaryProps<T, A, E, S>): JSX.Element;
declare function FetchThenRenderBoundary<T, E = unknown, R = unknown, A extends unknown[] = unknown[], S = State<T, A, E>>(props: StateBoundaryProps<T, A, E, S>): JSX.Element | null;
declare function useCurrentState<T, A extends unknown[], E, S = State<T, A, E>>(): UseAsyncState<T, A, E, S>;
declare function useBoundary<T, A extends unknown[] = [], E = Error>(stateKey?: string): UseAsyncState<T, A, E>;
export { BoundaryContext, BoundaryContextValue, BoundarySourceContextType, FetchAsYouRenderBoundary, FetchThenRenderBoundary, RenderStrategy, RenderThenFetchBoundary, StateBoundary, StateBoundaryProps, StateBoundaryRenderProp, useBoundary, useCurrentState };