@inweb/viewer-core 25.12.0 → 26.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,33 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ // Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3
+ // All rights reserved.
4
+ //
5
+ // This software and its documentation and related materials are owned by
6
+ // the Alliance. The software may only be incorporated into application
7
+ // programs owned by members of the Alliance, subject to a signed
8
+ // Membership Agreement and Supplemental Software License Agreement with the
9
+ // Alliance. The structure and organization of this software are the valuable
10
+ // trade secrets of the Alliance and its suppliers. The software is also
11
+ // protected by copyright law and international treaty provisions. Application
12
+ // programs incorporating this software must include the following statement
13
+ // with their copyright notices:
14
+ //
15
+ // This application incorporates Open Design Alliance software pursuant to a
16
+ // license agreement with Open Design Alliance.
17
+ // Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18
+ // All rights reserved.
19
+ //
20
+ // By use of this software, its documentation or related materials, you
21
+ // acknowledge and accept the above terms.
22
+ ///////////////////////////////////////////////////////////////////////////////
23
+
24
+ import type { IViewer } from "../viewer/IViewer";
25
+ import type { IComponent } from "./IComponents";
26
+
27
+ export class Component implements IComponent {
28
+ name = "";
29
+
30
+ constructor(viewer: IViewer) {}
31
+
32
+ dispose(): void {}
33
+ }
@@ -0,0 +1,71 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ // Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3
+ // All rights reserved.
4
+ //
5
+ // This software and its documentation and related materials are owned by
6
+ // the Alliance. The software may only be incorporated into application
7
+ // programs owned by members of the Alliance, subject to a signed
8
+ // Membership Agreement and Supplemental Software License Agreement with the
9
+ // Alliance. The structure and organization of this software are the valuable
10
+ // trade secrets of the Alliance and its suppliers. The software is also
11
+ // protected by copyright law and international treaty provisions. Application
12
+ // programs incorporating this software must include the following statement
13
+ // with their copyright notices:
14
+ //
15
+ // This application incorporates Open Design Alliance software pursuant to a
16
+ // license agreement with Open Design Alliance.
17
+ // Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18
+ // All rights reserved.
19
+ //
20
+ // By use of this software, its documentation or related materials, you
21
+ // acknowledge and accept the above terms.
22
+ ///////////////////////////////////////////////////////////////////////////////
23
+
24
+ import type { IViewer } from "../viewer/IViewer";
25
+ import { IComponent, IComponentProvider, IComponentsMap, IComponentsRegistry } from "./IComponents";
26
+
27
+ class Components implements IComponentsRegistry {
28
+ private readonly _components = new Map<string, IComponentProvider>();
29
+
30
+ registerComponent(name: string, provider: IComponentProvider): void {
31
+ this._components.set(name, provider);
32
+ }
33
+
34
+ registerComponentAlias(name: string, alias: string): void {
35
+ const provider = this.getComponent(name);
36
+ if (provider) this.registerComponent(alias, (viewer: IViewer) => provider(viewer));
37
+ }
38
+
39
+ getComponent(name: string): IComponentProvider | undefined {
40
+ return this._components.get(name);
41
+ }
42
+
43
+ getComponents(): IComponentsMap {
44
+ const map = new Map<string, IComponentProvider>();
45
+ this._components.forEach((value, key) => map.set(key, value));
46
+ return map;
47
+ }
48
+
49
+ createComponent(name: string, viewer: IViewer): IComponent | null {
50
+ const provider = this.getComponent(name);
51
+ if (!provider) return null;
52
+
53
+ const component = provider(viewer);
54
+ component.name = name;
55
+
56
+ return component;
57
+ }
58
+ }
59
+
60
+ const _components = new Map<string, Components>();
61
+
62
+ function componentsRegistry(viewerType = ""): IComponentsRegistry {
63
+ let result = _components.get(viewerType);
64
+ if (!result) {
65
+ result = new Components();
66
+ _components.set(viewerType, result);
67
+ }
68
+ return result;
69
+ }
70
+
71
+ export { componentsRegistry };
@@ -0,0 +1,94 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ // Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3
+ // All rights reserved.
4
+ //
5
+ // This software and its documentation and related materials are owned by
6
+ // the Alliance. The software may only be incorporated into application
7
+ // programs owned by members of the Alliance, subject to a signed
8
+ // Membership Agreement and Supplemental Software License Agreement with the
9
+ // Alliance. The structure and organization of this software are the valuable
10
+ // trade secrets of the Alliance and its suppliers. The software is also
11
+ // protected by copyright law and international treaty provisions. Application
12
+ // programs incorporating this software must include the following statement
13
+ // with their copyright notices:
14
+ //
15
+ // This application incorporates Open Design Alliance software pursuant to a
16
+ // license agreement with Open Design Alliance.
17
+ // Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18
+ // All rights reserved.
19
+ //
20
+ // By use of this software, its documentation or related materials, you
21
+ // acknowledge and accept the above terms.
22
+ ///////////////////////////////////////////////////////////////////////////////
23
+
24
+ import type { IViewer } from "../viewer/IViewer";
25
+
26
+ /**
27
+ * Defines the component of the viewer.
28
+ */
29
+ export interface IComponent {
30
+ /**
31
+ * The name of the component.
32
+ */
33
+ name?: string;
34
+
35
+ /**
36
+ * Releases resources allocated by the component.
37
+ */
38
+ dispose(): void;
39
+ }
40
+
41
+ /**
42
+ * Defines the component provider function.
43
+ */
44
+ export interface IComponentProvider {
45
+ /**
46
+ * @param viewer - Viewer instance that creates the component.
47
+ */
48
+ (viewer: any): IComponent;
49
+ }
50
+
51
+ export type IComponentsMap = Map<string, IComponentProvider>;
52
+
53
+ /**
54
+ * Define the viewer components registry interface.
55
+ */
56
+ export interface IComponentsRegistry {
57
+ /**
58
+ * Binds a component name to a component. Registering a component with an existing name twice
59
+ * overrides the existing component.
60
+ *
61
+ * @param name - Unique name for the component.
62
+ * @param provider - Component provider.
63
+ */
64
+ registerComponent(name: string, provider: IComponentProvider): void;
65
+
66
+ /**
67
+ * Registers an alias for a component.
68
+ *
69
+ * @param name - Unique name for the component.
70
+ * @param alias - Component alias string.
71
+ */
72
+ registerComponentAlias(name: string, alias: string): void;
73
+
74
+ /**
75
+ * Returns a list of registered components.
76
+ */
77
+ getComponents(): IComponentsMap;
78
+
79
+ /**
80
+ * Returns the specified component or `undefined` when the component doesn't exists.
81
+ *
82
+ * @param name - Component name.
83
+ */
84
+ getComponent(name: string): IComponentProvider | undefined;
85
+
86
+ /**
87
+ * Creates the component denoted by the given name. Returns `null` if a component with given
88
+ * name not registered.
89
+ *
90
+ * @param name - Component name.
91
+ * @param viewer - Viewer instance that wants to create the component.
92
+ */
93
+ createComponent(name: string, viewer: IViewer): IComponent | null;
94
+ }
@@ -0,0 +1,33 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ // Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3
+ // All rights reserved.
4
+ //
5
+ // This software and its documentation and related materials are owned by
6
+ // the Alliance. The software may only be incorporated into application
7
+ // programs owned by members of the Alliance, subject to a signed
8
+ // Membership Agreement and Supplemental Software License Agreement with the
9
+ // Alliance. The structure and organization of this software are the valuable
10
+ // trade secrets of the Alliance and its suppliers. The software is also
11
+ // protected by copyright law and international treaty provisions. Application
12
+ // programs incorporating this software must include the following statement
13
+ // with their copyright notices:
14
+ //
15
+ // This application incorporates Open Design Alliance software pursuant to a
16
+ // license agreement with Open Design Alliance.
17
+ // Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18
+ // All rights reserved.
19
+ //
20
+ // By use of this software, its documentation or related materials, you
21
+ // acknowledge and accept the above terms.
22
+ ///////////////////////////////////////////////////////////////////////////////
23
+
24
+ import type { IViewer } from "../viewer/IViewer";
25
+ import type { IDragger } from "./IDraggers";
26
+
27
+ export class Dragger implements IDragger {
28
+ name = "";
29
+
30
+ constructor(viewer: IViewer) {}
31
+
32
+ dispose(): void {}
33
+ }
@@ -0,0 +1,71 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ // Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3
+ // All rights reserved.
4
+ //
5
+ // This software and its documentation and related materials are owned by
6
+ // the Alliance. The software may only be incorporated into application
7
+ // programs owned by members of the Alliance, subject to a signed
8
+ // Membership Agreement and Supplemental Software License Agreement with the
9
+ // Alliance. The structure and organization of this software are the valuable
10
+ // trade secrets of the Alliance and its suppliers. The software is also
11
+ // protected by copyright law and international treaty provisions. Application
12
+ // programs incorporating this software must include the following statement
13
+ // with their copyright notices:
14
+ //
15
+ // This application incorporates Open Design Alliance software pursuant to a
16
+ // license agreement with Open Design Alliance.
17
+ // Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18
+ // All rights reserved.
19
+ //
20
+ // By use of this software, its documentation or related materials, you
21
+ // acknowledge and accept the above terms.
22
+ ///////////////////////////////////////////////////////////////////////////////
23
+
24
+ import type { IViewer } from "../viewer/IViewer";
25
+ import { IDragger, IDraggerProvider, IDraggersMap, IDraggersRegistry } from "./IDraggers";
26
+
27
+ class DraggersRegistry implements IDraggersRegistry {
28
+ private readonly _draggers = new Map<string, IDraggerProvider>();
29
+
30
+ registerDragger(name: string, provider: IDraggerProvider): void {
31
+ this._draggers.set(name, provider);
32
+ }
33
+
34
+ registerDraggerAlias(name: string, alias: string): void {
35
+ const provider = this.getDragger(name);
36
+ if (provider) this.registerDragger(alias, (viewer: IViewer) => provider(viewer));
37
+ }
38
+
39
+ getDragger(name: string): IDraggerProvider | undefined {
40
+ return this._draggers.get(name);
41
+ }
42
+
43
+ getDraggers(): IDraggersMap {
44
+ const map = new Map<string, IDraggerProvider>();
45
+ this._draggers.forEach((value, key) => map.set(key, value));
46
+ return map;
47
+ }
48
+
49
+ createDragger(name: string, viewer: IViewer): IDragger | null {
50
+ const provider = this.getDragger(name);
51
+ if (!provider) return null;
52
+
53
+ const dragger = provider(viewer);
54
+ dragger.name = name;
55
+
56
+ return dragger;
57
+ }
58
+ }
59
+
60
+ const _draggersRegistry = new Map<string, DraggersRegistry>();
61
+
62
+ function draggersRegistry(viewerType = ""): IDraggersRegistry {
63
+ let result = _draggersRegistry.get(viewerType);
64
+ if (!result) {
65
+ result = new DraggersRegistry();
66
+ _draggersRegistry.set(viewerType, result);
67
+ }
68
+ return result;
69
+ }
70
+
71
+ export { draggersRegistry };
@@ -0,0 +1,110 @@
1
+ ///////////////////////////////////////////////////////////////////////////////
2
+ // Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3
+ // All rights reserved.
4
+ //
5
+ // This software and its documentation and related materials are owned by
6
+ // the Alliance. The software may only be incorporated into application
7
+ // programs owned by members of the Alliance, subject to a signed
8
+ // Membership Agreement and Supplemental Software License Agreement with the
9
+ // Alliance. The structure and organization of this software are the valuable
10
+ // trade secrets of the Alliance and its suppliers. The software is also
11
+ // protected by copyright law and international treaty provisions. Application
12
+ // programs incorporating this software must include the following statement
13
+ // with their copyright notices:
14
+ //
15
+ // This application incorporates Open Design Alliance software pursuant to a
16
+ // license agreement with Open Design Alliance.
17
+ // Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18
+ // All rights reserved.
19
+ //
20
+ // By use of this software, its documentation or related materials, you
21
+ // acknowledge and accept the above terms.
22
+ ///////////////////////////////////////////////////////////////////////////////
23
+
24
+ import type { IViewer } from "../viewer/IViewer";
25
+
26
+ /**
27
+ * Defines the dragger interface for the viewer.
28
+ */
29
+ export interface IDragger {
30
+ /**
31
+ * The name of the dragger. Use this name to activate dragger using
32
+ * {@link Viewer.setActiveDragger | Viewer.setActiveDragger()}
33
+ */
34
+ name?: string;
35
+
36
+ /**
37
+ * Deprecated since `25.12`. Use costructor instead to initialize dragger.
38
+ *
39
+ * @deprecated
40
+ */
41
+ initialize?(): void;
42
+
43
+ /**
44
+ * Releases resources allocated by the dragger.
45
+ */
46
+ dispose(): void;
47
+
48
+ /**
49
+ * Deprecated since `25.12`. Instead, register an `update` event listener for the viewer and
50
+ * update the dragger preview in the event handler.
51
+ *
52
+ * @deprecated
53
+ */
54
+ updatePreview?(): void;
55
+ }
56
+
57
+ /**
58
+ * Dragger provider is a function that creates a dragger instance for the specified viewer.
59
+ */
60
+ export interface IDraggerProvider {
61
+ /**
62
+ * @param viewer - Viewer instance that creates the dragger.
63
+ */
64
+ (viewer: any): IDragger;
65
+ }
66
+
67
+ export type IDraggersMap = Map<string, IDraggerProvider>;
68
+
69
+ /**
70
+ * Defines the viewer draggers registry interface.
71
+ */
72
+ export interface IDraggersRegistry {
73
+ /**
74
+ * Binds a dragger name to a dragger provider. Registering a dragger with an existing name
75
+ * twice overrides the existing dragger.
76
+ *
77
+ * @param name - Unique name for the dragger.
78
+ * @param provider - Dragger provider.
79
+ */
80
+ registerDragger(name: string, provider: IDraggerProvider): void;
81
+
82
+ /**
83
+ * Registers an alias for a dragger.
84
+ *
85
+ * @param name - Unique name for the dragger.
86
+ * @param alias - Dragger alias string.
87
+ */
88
+ registerDraggerAlias(name: string, alias: string): void;
89
+
90
+ /**
91
+ * Returns a list of registered draggers.
92
+ */
93
+ getDraggers(): IDraggersMap;
94
+
95
+ /**
96
+ * Returns the specified dragger provider or `undefined` when the dragger doesn't exists.
97
+ *
98
+ * @param name - Dragger name.
99
+ */
100
+ getDragger(name: string): IDraggerProvider | undefined;
101
+
102
+ /**
103
+ * Creates the dragger denoted by the given name. Returns `null` if a dragger with given name
104
+ * not registered.
105
+ *
106
+ * @param name - Dragger name.
107
+ * @param viewer - Viewer instance that wants to create the dragger.
108
+ */
109
+ createDragger(name: string, viewer: IViewer): IDragger | null;
110
+ }
package/src/index.ts CHANGED
@@ -23,11 +23,16 @@
23
23
 
24
24
  export * from "./commands/Commands";
25
25
  export * from "./commands/ICommands";
26
+ export * from "./draggers/Dragger";
27
+ export * from "./draggers/Draggers";
28
+ export * from "./draggers/IDraggers";
29
+ export * from "./components/Component";
30
+ export * from "./components/Components";
31
+ export * from "./components/IComponents";
26
32
  export * from "./options/IOptions";
27
33
  export * from "./options/Options";
28
34
  export * from "./options/OptionsEvents";
29
35
  export * from "./viewer/CanvasEvents";
30
- export * from "./viewer/IDragger";
31
36
  export * from "./viewer/IViewer";
32
37
  export * from "./viewer/IViewpoint";
33
38
  export * from "./viewer/ViewerEvents";
@@ -25,7 +25,8 @@ import { IEventEmitter } from "@inweb/eventemitter2";
25
25
  import { Assembly, Client, File, Model } from "@inweb/client";
26
26
  import { ICommandService } from "../commands/ICommands";
27
27
  import { IOptions } from "../options/IOptions";
28
- import { IDragger } from "./IDragger";
28
+ import { IDragger } from "../draggers/IDraggers";
29
+ import { IComponent } from "../components/IComponents";
29
30
  import { IViewpoint } from "./IViewpoint";
30
31
 
31
32
  /**
@@ -79,9 +80,27 @@ export interface IViewer extends IEventEmitter, ICommandService {
79
80
 
80
81
  /**
81
82
  * List of names of available draggers.
83
+ *
84
+ * The following draggers are available by default:
85
+ *
86
+ * - `Pan`
87
+ * - `Orbit`
88
+ * - `Zoom`
89
+ * - `MeasureLine`
90
+ * - `CuttingPlaneXAxis`
91
+ * - `CuttingPlaneYAxis`
92
+ * - `CuttingPlaneZAxis`
93
+ * - `Walk`
94
+ *
95
+ * For a quick reference on how to implement your own dragger, see {@link IDragger}.
82
96
  */
83
97
  draggers: string[];
84
98
 
99
+ /**
100
+ * List of names of available components.
101
+ */
102
+ components: string[];
103
+
85
104
  /**
86
105
  * Initializes the viewer it with the specified canvas. Call {@link dispose | dispose()} to
87
106
  * release allocated resources.
@@ -285,6 +304,11 @@ export interface IViewer extends IEventEmitter, ICommandService {
285
304
  */
286
305
  resetActiveDragger(): void;
287
306
 
307
+ /**
308
+ * Returns the component reference, or `null` if there is no component with the specified name.
309
+ */
310
+ getComponent(name: string): IComponent | null;
311
+
288
312
  /**
289
313
  * Sets the viewer state to the specified viewpoint.
290
314
  *
@@ -415,9 +415,9 @@ export interface IColoring {
415
415
  }
416
416
 
417
417
  /**
418
- * Defines the component in the model.
418
+ * Defines the entity in the model.
419
419
  */
420
- export interface IComponent {
420
+ export interface IEntity {
421
421
  /**
422
422
  * Component original handle in the model.
423
423
  */
@@ -505,12 +505,12 @@ export interface IViewpoint {
505
505
  /**
506
506
  * Selected components.
507
507
  */
508
- selection?: IComponent[];
508
+ selection?: IEntity[];
509
509
 
510
510
  /**
511
511
  * Visibility of components.
512
512
  */
513
- visibility?: IComponent[];
513
+ visibility?: IEntity[];
514
514
 
515
515
  /**
516
516
  * Colored components.
@@ -1,53 +0,0 @@
1
- import type { IViewer } from "./IViewer";
2
- /**
3
- * Defines the dragger of the viewer.
4
- */
5
- export interface IDragger {
6
- /**
7
- * The name of the dragger. Use this name to activate dragger using
8
- * {@link Viewer.setActiveDragger | Viewer.setActiveDragger()}
9
- */
10
- name: string;
11
- /**
12
- * Initializes the dragger instance. Call {@link dispose | dispose()} to release allocated resources.
13
- *
14
- * This is internal method, called by the {@link Viewer} when the dragger is activated. Do not
15
- * call this directly.
16
- */
17
- initialize(): void;
18
- /**
19
- * Releases resources allocated in the {@link initialize | initialize()}.
20
- *
21
- * This is internal method, called by the {@link Viewer} when the dragger is deactivated. Do
22
- * not call this directly.
23
- */
24
- dispose(): void;
25
- /**
26
- * Updates the dragger preview if exists.
27
- *
28
- * This is internal method, called by the {@link Viewer} when it updates. Do not call this
29
- * method directly unless you are manually updating the viewer.
30
- */
31
- updatePreview(): void;
32
- }
33
- /**
34
- * Base class for the viewer draggers.
35
- *
36
- * To create your own dragger:
37
- *
38
- * 1. Define a dragger class inherited from Dragger.
39
- * 2. Override {@link initialize | initialize()} method to add mouse event listeners using
40
- * {@link Viewer.addEventListener | Viewer.addEventListener()}.
41
- * 3. Define the dragger logic in the event listeners. For example, listen for the `mousemove`
42
- * event and zoom in/out when the left mouse button is pressed.
43
- * 4. Override {@link dispose | dispose()} method to remove mouse event listeners
44
- * {@link Viewer.removeEventListener | Viewer.removeEventListener()}.
45
- * 5. Register dragger class for the viewer instance.
46
- */
47
- export declare class Dragger implements IDragger {
48
- name: string;
49
- constructor(viewer: IViewer);
50
- initialize(): void;
51
- dispose(): void;
52
- updatePreview(): void;
53
- }
@@ -1,85 +0,0 @@
1
- ///////////////////////////////////////////////////////////////////////////////
2
- // Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3
- // All rights reserved.
4
- //
5
- // This software and its documentation and related materials are owned by
6
- // the Alliance. The software may only be incorporated into application
7
- // programs owned by members of the Alliance, subject to a signed
8
- // Membership Agreement and Supplemental Software License Agreement with the
9
- // Alliance. The structure and organization of this software are the valuable
10
- // trade secrets of the Alliance and its suppliers. The software is also
11
- // protected by copyright law and international treaty provisions. Application
12
- // programs incorporating this software must include the following statement
13
- // with their copyright notices:
14
- //
15
- // This application incorporates Open Design Alliance software pursuant to a
16
- // license agreement with Open Design Alliance.
17
- // Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18
- // All rights reserved.
19
- //
20
- // By use of this software, its documentation or related materials, you
21
- // acknowledge and accept the above terms.
22
- ///////////////////////////////////////////////////////////////////////////////
23
-
24
- import type { IViewer } from "./IViewer";
25
-
26
- /**
27
- * Defines the dragger of the viewer.
28
- */
29
- export interface IDragger {
30
- /**
31
- * The name of the dragger. Use this name to activate dragger using
32
- * {@link Viewer.setActiveDragger | Viewer.setActiveDragger()}
33
- */
34
- name: string;
35
-
36
- /**
37
- * Initializes the dragger instance. Call {@link dispose | dispose()} to release allocated resources.
38
- *
39
- * This is internal method, called by the {@link Viewer} when the dragger is activated. Do not
40
- * call this directly.
41
- */
42
- initialize(): void;
43
-
44
- /**
45
- * Releases resources allocated in the {@link initialize | initialize()}.
46
- *
47
- * This is internal method, called by the {@link Viewer} when the dragger is deactivated. Do
48
- * not call this directly.
49
- */
50
- dispose(): void;
51
-
52
- /**
53
- * Updates the dragger preview if exists.
54
- *
55
- * This is internal method, called by the {@link Viewer} when it updates. Do not call this
56
- * method directly unless you are manually updating the viewer.
57
- */
58
- updatePreview(): void;
59
- }
60
-
61
- /**
62
- * Base class for the viewer draggers.
63
- *
64
- * To create your own dragger:
65
- *
66
- * 1. Define a dragger class inherited from Dragger.
67
- * 2. Override {@link initialize | initialize()} method to add mouse event listeners using
68
- * {@link Viewer.addEventListener | Viewer.addEventListener()}.
69
- * 3. Define the dragger logic in the event listeners. For example, listen for the `mousemove`
70
- * event and zoom in/out when the left mouse button is pressed.
71
- * 4. Override {@link dispose | dispose()} method to remove mouse event listeners
72
- * {@link Viewer.removeEventListener | Viewer.removeEventListener()}.
73
- * 5. Register dragger class for the viewer instance.
74
- */
75
- export class Dragger implements IDragger {
76
- name = "";
77
-
78
- constructor(viewer: IViewer) {}
79
-
80
- initialize(): void {}
81
-
82
- dispose(): void {}
83
-
84
- updatePreview(): void {}
85
- }