@inweb/viewer-core
Version:
3D CAD and BIM data Viewer core
56 lines (55 loc) • 1.61 kB
TypeScript
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;
}
/**
* Defines 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(): Map<string, IComponentProvider>;
/**
* 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;
}