UNPKG

piral-ng

Version:

Plugin for integrating Angular components in Piral.

111 lines (110 loc) 3.62 kB
import type { Type, PlatformRef, NgModuleRef } from '@angular/core'; import type { ForeignComponent } from 'piral-core'; declare module 'piral-core/lib/types/custom' { interface PiletCustomApi extends PiletNgApi { } interface PiralCustomComponentConverters<TProps> { ng(component: NgComponent): ForeignComponent<TProps>; } } export interface NgModuleFlags { /** * If set to true prevents the module from being disposed. */ keepAlive?: boolean; } /** * Options passed through to Angular `bootstrapModule`. * * Mainly to specify Noop Zone, but also includes compiler specific settings. * See https://angular.io/api/core/PlatformRef#bootstrapModule for possible values. */ export type NgOptions = Parameters<PlatformRef['bootstrapModule']>[1]; export type ModuleInstanceResult = [any, NgOptions, NgModuleFlags]; export type PrepareBootstrapResult = [...ModuleInstanceResult, any]; export type NgModuleInt = NgModuleRef<any> & { _destroyed: boolean; }; export { Type }; /** * Gives you the ability to use a component from a lazy loaded module. */ export interface NgComponentLoader { /** * Uses a component from a lazy loaded module. * @param selector The selector defined for the component to load. */ (selector: string): NgComponent; } export interface NgLazyType { selector: string; module: () => Promise<{ default: Type<any>; }>; opts: NgOptions; flags: NgModuleFlags; state: any; } /** * The lazy loading interface for retrieving Angular components. */ export interface LazyType<T> { /** * Callback to be invoked for lazy loading an Angular module or component. */ (): Promise<{ default: Type<T>; }>; } /** * Represents the interface implemented by a module definer function. */ export interface NgModuleDefiner { /** * Defines the module to use when bootstrapping the Angular pilet. * @param ngModule The module to use for running Angular. * @param opts The options to pass when bootstrapping. * @param flags The flags to use when dealing with the module. */ <T>(module: Type<T>, opts?: NgOptions, flags?: NgModuleFlags): void; /** * Defines the module to lazy load for bootstrapping the Angular pilet. * @param getModule The module lazy loader to use for running Angular. * @param opts The options to pass when bootstrapping. * @param flags The flags to use when dealing with the module. * @returns The module ID to be used to reference components. */ <T>(getModule: LazyType<T>, opts?: NgOptions, flags?: NgModuleFlags): NgComponentLoader; } export interface NgComponent { /** * The component root. */ component: Type<any> | NgLazyType; /** * The type of the Angular component. */ type: 'ng'; } /** * Defines the provided set of Angular Pilet API extensions. */ export interface PiletNgApi { /** * Defines the module to use when bootstrapping the Angular pilet. */ defineNgModule: NgModuleDefiner; /** * Wraps an Angular component for use in Piral. Might reuse a previously * defined module if the component was exported from it. * Alternatively, a module might be passed in, where the first component * of either the bootstrap or the entryComponents declaration is used. * @param component The component root. * @returns The Piral Ng component. */ fromNg<T>(component: Type<T>): NgComponent; /** * Angular component for displaying extensions of the given name. */ NgExtension: any; }