UNPKG

piral-lazy

Version:

Plugin for lazy loading third-party framework components in Piral.

37 lines (32 loc) 1.12 kB
import type { ComponentType } from 'react'; import type { AnyComponent, BaseComponentProps } from 'piral-core'; declare module 'piral-core/lib/types/custom' { interface PiletCustomApi extends PiletLazyApi {} } export interface LazyComponentLoader<TProps> { (): Promise<AnyComponent<TProps>>; } export interface LazyDependencyLoader { (): Promise<any>; } /** * Defines the provided set of lazy loading Pilet API extensions. */ export interface PiletLazyApi { /** * Defines a dependency for lazy loading. * @param name The name of the dependency. * @param loader The associated dependency loader. */ defineDependency(name: string, loader: LazyDependencyLoader): void; /** * Properly introduces a lazy loaded foreign component. * @param cb The callback to trigger when the component should be loaded. * @param deps The optional names of the dependencies to load beforehand. * @returns The lazy loading component. */ fromLazy<T extends BaseComponentProps>( cb: LazyComponentLoader<T>, deps?: Array<string>, ): ComponentType<T & { deps?: Record<string, any> }>; }