UNPKG

@inweb/viewer-core

Version:

3D CAD and BIM data Viewer core

86 lines (77 loc) 2.77 kB
/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a // license agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// 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; }