UNPKG

@inweb/viewer-core

Version:

3D CAD and BIM data Viewer core

63 lines (62 loc) 1.86 kB
import type { IViewer } from "../viewer/IViewer"; /** * Defines the component of the viewer. */ export interface IComponent { /** * The name of the component. */ name?: string; /** * Releases resources allocated by the component. */ dispose(): void; } /** * Defines the component provider function. */ export interface IComponentProvider { /** * @param viewer - Viewer instance that creates the component. */ (viewer: any): IComponent; } export type IComponentsMap = Map<string, IComponentProvider>; /** * Define the viewer components registry interface. */ export interface IComponentsRegistry { /** * Binds a component name to a component. Registering a component with an existing name twice overrides * the existing component. * * @param name - Unique name for the component. * @param provider - Component provider. */ registerComponent(name: string, provider: IComponentProvider): void; /** * Registers an alias for a component. * * @param name - Unique name for the component. * @param alias - Component alias string. */ registerComponentAlias(name: string, alias: string): void; /** * Returns a list of registered components. */ getComponents(): IComponentsMap; /** * Returns the specified component or `undefined` when the component doesn't exists. * * @param name - Component name. */ getComponent(name: string): IComponentProvider | undefined; /** * Creates the component denoted by the given name. Returns `null` if a component with given name not * registered. * * @param name - Component name. * @param viewer - Viewer instance that wants to create the component. */ createComponent(name: string, viewer: IViewer): IComponent | null; }