piral-lazy
Version:
Plugin for lazy loading third-party framework components in Piral.
37 lines (32 loc) • 1.12 kB
text/typescript
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> }>;
}