@inweb/viewer-visualize 25.12.1 → 26.1.1

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.
Files changed (75) hide show
  1. package/dist/viewer-visualize.js +4699 -4322
  2. package/dist/viewer-visualize.js.map +1 -1
  3. package/dist/viewer-visualize.min.js +1 -1
  4. package/dist/viewer-visualize.module.js +2914 -2735
  5. package/dist/viewer-visualize.module.js.map +1 -1
  6. package/lib/Viewer/Commands/ApplyModelTransform.d.ts +3 -0
  7. package/lib/Viewer/Commands/AutoTransformAllModelsToCentralPoint.d.ts +3 -1
  8. package/lib/Viewer/Commands/ClearMarkup.d.ts +2 -1
  9. package/lib/Viewer/Commands/ClearSelected.d.ts +2 -1
  10. package/lib/Viewer/Commands/ClearSlices.d.ts +2 -1
  11. package/lib/Viewer/Commands/CreatePreview.d.ts +2 -1
  12. package/lib/Viewer/Commands/Explode.d.ts +3 -1
  13. package/lib/Viewer/Commands/GetDefaultViewPositions.d.ts +2 -1
  14. package/lib/Viewer/Commands/GetModels.d.ts +2 -1
  15. package/lib/Viewer/Commands/GetSelected.d.ts +2 -1
  16. package/lib/Viewer/Commands/HideSelected.d.ts +2 -1
  17. package/lib/Viewer/Commands/IsolateSelected.d.ts +2 -1
  18. package/lib/Viewer/Commands/RegenerateAll.d.ts +2 -1
  19. package/lib/Viewer/Commands/ResetView.d.ts +2 -1
  20. package/lib/Viewer/Commands/SelectModel.d.ts +2 -1
  21. package/lib/Viewer/Commands/SetActiveDragger.d.ts +2 -1
  22. package/lib/Viewer/Commands/SetDefaultViewPosition.d.ts +2 -1
  23. package/lib/Viewer/Commands/SetMarkupColor.d.ts +2 -1
  24. package/lib/Viewer/Commands/SetSelected.d.ts +2 -1
  25. package/lib/Viewer/Commands/ShowAll.d.ts +2 -1
  26. package/lib/Viewer/Commands/ZoomToExtents.d.ts +2 -1
  27. package/lib/Viewer/Commands/ZoomToObjects.d.ts +2 -1
  28. package/lib/Viewer/Commands/ZoomToSelected.d.ts +2 -1
  29. package/lib/Viewer/Commands/index.d.ts +22 -23
  30. package/lib/Viewer/Components/GestureManagerComponent.d.ts +8 -0
  31. package/lib/Viewer/Components/RenderLoopComponent.d.ts +9 -0
  32. package/lib/Viewer/Components/ResizeCanvasComponent.d.ts +9 -0
  33. package/lib/Viewer/Components/ZoomWheelComponent.d.ts +8 -0
  34. package/lib/Viewer/Components/index.d.ts +40 -0
  35. package/lib/Viewer/Draggers/OdaWalkDragger.d.ts +3 -1
  36. package/lib/Viewer/Draggers/index.d.ts +40 -0
  37. package/lib/Viewer/Viewer.d.ts +7 -36
  38. package/lib/index.d.ts +3 -1
  39. package/package.json +5 -5
  40. package/src/Viewer/Commands/ApplyModelTransform.ts +1 -4
  41. package/src/Viewer/Commands/AutoTransformAllModelsToCentralPoint.ts +4 -5
  42. package/src/Viewer/Commands/ClearMarkup.ts +3 -3
  43. package/src/Viewer/Commands/ClearSelected.ts +1 -5
  44. package/src/Viewer/Commands/ClearSlices.ts +3 -2
  45. package/src/Viewer/Commands/CreatePreview.ts +1 -4
  46. package/src/Viewer/Commands/Explode.ts +4 -4
  47. package/src/Viewer/Commands/GetDefaultViewPositions.ts +1 -4
  48. package/src/Viewer/Commands/GetModels.ts +1 -4
  49. package/src/Viewer/Commands/GetSelected.ts +1 -4
  50. package/src/Viewer/Commands/HideSelected.ts +1 -4
  51. package/src/Viewer/Commands/IsolateSelected.ts +1 -4
  52. package/src/Viewer/Commands/RegenerateAll.ts +1 -4
  53. package/src/Viewer/Commands/ResetView.ts +1 -4
  54. package/src/Viewer/Commands/SelectModel.ts +1 -4
  55. package/src/Viewer/Commands/SetActiveDragger.ts +2 -3
  56. package/src/Viewer/Commands/SetDefaultViewPosition.ts +1 -14
  57. package/src/Viewer/Commands/SetMarkupColor.ts +3 -4
  58. package/src/Viewer/Commands/SetSelected.ts +1 -4
  59. package/src/Viewer/Commands/ShowAll.ts +1 -4
  60. package/src/Viewer/Commands/ZoomToExtents.ts +1 -5
  61. package/src/Viewer/Commands/ZoomToObjects.ts +1 -4
  62. package/src/Viewer/Commands/ZoomToSelected.ts +1 -4
  63. package/src/Viewer/Commands/index.ts +89 -23
  64. package/src/Viewer/Components/GestureManagerComponent.ts +42 -0
  65. package/src/Viewer/Components/RenderLoopComponent.ts +44 -0
  66. package/src/Viewer/Components/ResizeCanvasComponent.ts +44 -0
  67. package/src/Viewer/Components/ZoomWheelComponent.ts +43 -0
  68. package/src/Viewer/Components/index.ts +76 -0
  69. package/src/Viewer/Draggers/Actions/OrbitAction.ts +1 -1
  70. package/src/Viewer/Draggers/Actions/PanAction.ts +1 -1
  71. package/src/Viewer/Draggers/Actions/ZoomAction.ts +1 -1
  72. package/src/Viewer/Draggers/OdaWalkDragger.ts +10 -1
  73. package/src/Viewer/Draggers/index.ts +91 -0
  74. package/src/Viewer/Viewer.ts +47 -106
  75. package/src/index.ts +5 -2
@@ -37,7 +37,7 @@ export class ZoomAction {
37
37
  viewer.zoomAt(zoomFactor, x, y);
38
38
 
39
39
  this._subject.deviceAutoRegeneration();
40
- this._subject.activeDragger()?.updatePreview();
40
+ this._subject.activeDragger()?.updatePreview?.();
41
41
  this._subject.emitEvent({
42
42
  type: "zoomat",
43
43
  data: zoomFactor,
@@ -45,6 +45,7 @@ export class OdaWalkDragger extends OdBaseDragger {
45
45
  protected animationId: any;
46
46
  protected deltaAngle: number;
47
47
  protected enableZoomWheelPreviousValue: boolean;
48
+ protected dragPosition: Point2d;
48
49
 
49
50
  constructor(subject: Viewer) {
50
51
  super(subject);
@@ -210,8 +211,16 @@ export class OdaWalkDragger extends OdBaseDragger {
210
211
  this.lastFrameTS = timestamp;
211
212
  }
212
213
 
213
- override drag(x, y, dltX, dltY) {
214
+ override start(x: number, y: number): void {
215
+ this.dragPosition = { x, y };
216
+ }
217
+
218
+ override drag(x: number, y: number) {
214
219
  if (this.cameraId && this.isDragging) {
220
+ const dltX = x - this.dragPosition.x;
221
+ const dltY = y - this.dragPosition.y;
222
+ this.dragPosition = { x, y };
223
+
215
224
  if (dltX !== 0.0) this.turnLeft(-dltX * this.deltaAngle);
216
225
  if (dltY !== 0.0) this.cameraWalker.turnDown(dltY * this.deltaAngle);
217
226
  this.subject.update();
@@ -0,0 +1,91 @@
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 { IDraggersRegistry, draggersRegistry } from "@inweb/viewer-core";
25
+
26
+ import { MeasureLineDragger } from "./MeasureLineDragger";
27
+ import { OdaWalkDragger } from "./OdaWalkDragger";
28
+ import { OdCuttingPlaneXAxisDragger } from "./OdCuttingPlaneXAxisDragger";
29
+ import { OdCuttingPlaneYAxisDragger } from "./OdCuttingPlaneYAxisDragger";
30
+ import { OdCuttingPlaneZAxisDragger } from "./OdCuttingPlaneZAxisDragger";
31
+ import { OdOrbitDragger } from "./OdOrbitDragger";
32
+ import { OdPanDragger } from "./OdPanDragger";
33
+ import { OdZoomDragger } from "./OdZoomDragger";
34
+ import { OdZoomWheelDragger } from "./OdZoomWheelDragger";
35
+ import { OdZoomWindowDragger } from "./OdZoomWindowDragger";
36
+ import { OrbitAroundBuildingDragger } from "./OrbitAroundBuildingDragger";
37
+
38
+ /**
39
+ * A draggers registry. Use this registry to register custom draggers.
40
+ *
41
+ * To implement custom dragger:
42
+ *
43
+ * 1. Define a dragger class implements {@link IDragger}.
44
+ * 2. Define a constructor with a `viewer` parameter and add mouse event listeners for the specified viewer.
45
+ * 3. Define the dragger logic in the event listeners. For example, listen for the `mousemove`
46
+ * event and zoom in/out when the left mouse button is pressed.
47
+ * 4. Override {@link IDragger.dispose} and remove mouse event listeners from the viewer.
48
+ * 5. Register dragger provider in the draggers registry by calling the {@link draggers.registerDragger}.
49
+ *
50
+ * @example <caption>Implementing a custom dragger.</caption>
51
+ * import { IDragger, draggers, Viewer } from "@inweb/viewer-visualize";
52
+ *
53
+ * class MyDragger implements IDragger {
54
+ * protected viewer: Viewer;
55
+ *
56
+ * constructor(viewer: Viewer) {
57
+ * this.viewer = viewer;
58
+ * this.viewer.addEventListener("pointermove", this.onPointerMove);
59
+ * }
60
+ *
61
+ * override dispose() {
62
+ * this.viewer.removeEventListener("pointermove", this.onPointerMove);
63
+ * }
64
+ *
65
+ * onPointerMove = (event: PointerEvent) => {
66
+ * // place custom logic here
67
+ * };
68
+ * }
69
+ *
70
+ * draggers.registerDragger("MyDragger", (viewer): IDragger => new MyDragger(viewer));
71
+ *
72
+ * @example <caption>Activating a custom dragger.</caption>
73
+ * viewer.setActiveDragger("MyDragger");
74
+ */
75
+ const draggers: IDraggersRegistry = draggersRegistry("visualizejs");
76
+
77
+ // build-in draggers
78
+
79
+ draggers.registerDragger("Pan", (viewer) => new OdPanDragger(viewer));
80
+ draggers.registerDragger("Orbit", (viewer) => new OdOrbitDragger(viewer));
81
+ draggers.registerDragger("Zoom", (viewer) => new OdZoomDragger(viewer));
82
+ draggers.registerDragger("ZoomWindow", (viewer) => new OdZoomWindowDragger(viewer));
83
+ draggers.registerDragger("ZoomWheel", (viewer) => new OdZoomWheelDragger(viewer));
84
+ draggers.registerDragger("OrbitAroundBuilding", (viewer) => new OrbitAroundBuildingDragger(viewer));
85
+ draggers.registerDragger("MeasureLine", (viewer) => new MeasureLineDragger(viewer));
86
+ draggers.registerDragger("CuttingPlaneXAxis", (viewer) => new OdCuttingPlaneXAxisDragger(viewer));
87
+ draggers.registerDragger("CuttingPlaneYAxis", (viewer) => new OdCuttingPlaneYAxisDragger(viewer));
88
+ draggers.registerDragger("CuttingPlaneZAxis", (viewer) => new OdCuttingPlaneZAxisDragger(viewer));
89
+ draggers.registerDragger("Walk", (viewer) => new OdaWalkDragger(viewer));
90
+
91
+ export { draggers };
@@ -26,10 +26,10 @@ import { Assembly, Client, File, Model } from "@inweb/client";
26
26
  import {
27
27
  CANVAS_EVENTS,
28
28
  CanvasEventMap,
29
- commands,
30
29
  Dragger,
31
30
  IClippingPlane,
32
31
  IComponent,
32
+ IEntity,
33
33
  IDragger,
34
34
  IOrthogonalCamera,
35
35
  IOptions,
@@ -42,18 +42,9 @@ import {
42
42
  } from "@inweb/viewer-core";
43
43
  import { IMarkup, IWorldTransform } from "@inweb/markup";
44
44
 
45
- import { MeasureLineDragger } from "./Draggers/MeasureLineDragger/index";
46
- import { OdaWalkDragger } from "./Draggers/OdaWalkDragger";
47
- import { OdCuttingPlaneXAxisDragger } from "./Draggers/OdCuttingPlaneXAxisDragger";
48
- import { OdCuttingPlaneYAxisDragger } from "./Draggers/OdCuttingPlaneYAxisDragger";
49
- import { OdCuttingPlaneZAxisDragger } from "./Draggers/OdCuttingPlaneZAxisDragger";
50
- import { OdOrbitDragger } from "./Draggers/OdOrbitDragger";
51
- import { OdPanDragger } from "./Draggers/OdPanDragger";
52
- import { OdZoomDragger } from "./Draggers/OdZoomDragger";
53
- import { OdZoomWheelDragger } from "./Draggers/OdZoomWheelDragger";
54
- import { OdZoomWindowDragger } from "./Draggers/OdZoomWindowDragger/index";
55
- import { OrbitAroundBuildingDragger } from "./Draggers/OrbitAroundBuildingDragger";
56
- import { GestureManager } from "./Draggers/Common/GestureManager";
45
+ import { draggers } from "./Draggers";
46
+ import { commands } from "./Commands";
47
+ import { components } from "./Components";
57
48
 
58
49
  import { loadVisualizeJs } from "./utils";
59
50
  import { LoaderFactory } from "./Loaders/LoaderFactory";
@@ -72,8 +63,7 @@ export class Viewer
72
63
  implements IViewer, IWorldTransform
73
64
  {
74
65
  private _activeDragger: IDragger | null;
75
- private _zoomWheelDragger: OdZoomWheelDragger | null;
76
- private _gestureManager: GestureManager | null;
66
+ private _components: Array<IComponent>;
77
67
  private _enableAutoUpdate: boolean;
78
68
  private _isNeedRender: boolean;
79
69
  private _isRunAsyncUpdate: boolean;
@@ -86,10 +76,7 @@ export class Viewer
86
76
 
87
77
  private canvaseventlistener: (event: Event) => void;
88
78
 
89
- public draggerFactory: Map<string, typeof Dragger>;
90
79
  public canvasEvents: string[];
91
- private frameId = 0;
92
- private _resizeObserver: ResizeObserver | undefined;
93
80
  private _markup: IMarkup;
94
81
  public canvas: HTMLCanvasElement | undefined;
95
82
 
@@ -124,21 +111,9 @@ export class Viewer
124
111
  this.client = client;
125
112
 
126
113
  this._activeDragger = null;
127
- this._zoomWheelDragger = null;
128
- this._gestureManager = null;
129
- this._renderTime = 0;
114
+ this._components = [];
130
115
 
131
- this.draggerFactory = new Map<string, typeof Dragger>();
132
- this.registerDragger("Pan", OdPanDragger);
133
- this.registerDragger("Orbit", OdOrbitDragger);
134
- this.registerDragger("Zoom", OdZoomDragger);
135
- this.registerDragger("ZoomWindow", OdZoomWindowDragger);
136
- this.registerDragger("OrbitAroundBuilding", OrbitAroundBuildingDragger);
137
- this.registerDragger("MeasureLine", MeasureLineDragger);
138
- this.registerDragger("CuttingPlaneXAxis", OdCuttingPlaneXAxisDragger);
139
- this.registerDragger("CuttingPlaneYAxis", OdCuttingPlaneYAxisDragger);
140
- this.registerDragger("CuttingPlaneZAxis", OdCuttingPlaneZAxisDragger);
141
- this.registerDragger("Walk", OdaWalkDragger);
116
+ this._renderTime = 0;
142
117
 
143
118
  this.canvasEvents = CANVAS_EVENTS.slice();
144
119
  this.canvaseventlistener = (event: Event) => this.emit(event);
@@ -148,7 +123,7 @@ export class Viewer
148
123
  this._isRunAsyncUpdate = false;
149
124
 
150
125
  this.render = this.render.bind(this);
151
- this.resize = this.resize.bind(this);
126
+ this.update = this.update.bind(this);
152
127
 
153
128
  this._markup = MarkupFactory.createMarkup(params.markupType);
154
129
  }
@@ -236,22 +211,16 @@ export class Viewer
236
211
  this._visualizeJs = visualizeJs;
237
212
  this.visualizeJs.canvas = canvas;
238
213
  this.visualizeJs.Viewer.create();
214
+ this.visualizeJs.getViewer().resize(0, canvas.width, canvas.height, 0);
239
215
 
240
216
  this.canvas = canvas;
241
217
  this.canvasEvents.forEach((x) => canvas.addEventListener(x, this.canvaseventlistener));
242
218
 
243
219
  this._markup.initialize(this.canvas, this.canvasEvents, this, this);
244
220
 
245
- this._resizeObserver = new ResizeObserver(this.resize);
246
- this._resizeObserver.observe(canvas.parentElement);
247
- this.resize();
248
-
249
- this._zoomWheelDragger = new OdZoomWheelDragger(this);
250
- this._zoomWheelDragger.name = "ZoomWheel";
251
- this._zoomWheelDragger.initialize();
252
-
253
- this._gestureManager = new GestureManager(this);
254
- this._gestureManager.initialize();
221
+ for (let name of components.getComponents().keys()) {
222
+ this._components.push(components.createComponent(name, this));
223
+ }
255
224
 
256
225
  this.syncOpenCloudVisualStyle(true);
257
226
  this.syncOptions();
@@ -269,21 +238,12 @@ export class Viewer
269
238
  this.cancel();
270
239
  this.emitEvent({ type: "dispose" });
271
240
 
272
- if (this.frameId) cancelAnimationFrame(this.frameId);
273
- this.frameId = 0;
241
+ this._components.forEach((component: IComponent) => component.dispose());
242
+ this._components = [];
274
243
 
275
244
  this.setActiveDragger();
276
245
  this.removeAllListeners();
277
246
 
278
- if (this._gestureManager) this._gestureManager.dispose();
279
- this._gestureManager = undefined;
280
-
281
- if (this._zoomWheelDragger) this._zoomWheelDragger.dispose();
282
- this._zoomWheelDragger = undefined;
283
-
284
- if (this._resizeObserver) this._resizeObserver.disconnect();
285
- this._resizeObserver = undefined;
286
-
287
247
  this._markup.dispose();
288
248
 
289
249
  if (this.canvas) {
@@ -307,9 +267,7 @@ export class Viewer
307
267
 
308
268
  // internal render/resize routines
309
269
 
310
- private render(time: DOMHighResTimeStamp) {
311
- this.frameId = requestAnimationFrame(this.render);
312
-
270
+ public render(time: DOMHighResTimeStamp) {
313
271
  if (!this.visualizeJs) return;
314
272
 
315
273
  if (this._isRunAsyncUpdate) return;
@@ -317,7 +275,7 @@ export class Viewer
317
275
  const visViewer = this.visualizeJs.getViewer();
318
276
  if (visViewer.isRunningAnimation() || this._isNeedRender) {
319
277
  visViewer.update();
320
- this._activeDragger?.updatePreview();
278
+ this._activeDragger?.updatePreview?.();
321
279
  this._isNeedRender = !visViewer.getActiveDevice().isValid();
322
280
 
323
281
  const deltaTime = (time - this._renderTime) / 1000;
@@ -362,7 +320,7 @@ export class Viewer
362
320
  if (this._enableAutoUpdate) {
363
321
  if (force) {
364
322
  this.visViewer()?.update();
365
- this.activeDragger()?.updatePreview();
323
+ this._activeDragger?.updatePreview?.();
366
324
  } else {
367
325
  this._isNeedRender = true;
368
326
  }
@@ -376,7 +334,7 @@ export class Viewer
376
334
  try {
377
335
  if (this._enableAutoUpdate) {
378
336
  this.visViewer()?.update(maxScheduleUpdateTimeInMs);
379
- this.activeDragger()?.updatePreview();
337
+ this._activeDragger?.updatePreview?.();
380
338
  }
381
339
  this.emitEvent({ type: "update", data: false });
382
340
  resolve();
@@ -621,41 +579,22 @@ export class Viewer
621
579
  return this;
622
580
  }
623
581
 
624
- /**
625
- * List of names of available draggers.
626
- *
627
- * The following draggers are available by default:
628
- *
629
- * - `Line`
630
- * - `Text`
631
- * - `Pan`
632
- * - `Orbit`
633
- * - `Zoom`
634
- * - `ZoomWindow`
635
- * - `OrbitAroundBuilding`
636
- * - `MeasureLine`
637
- * - `CuttingPlaneXAxis`
638
- * - `CuttingPlaneYAxis`
639
- * - `CuttingPlaneZAxis`
640
- * - `Walk`
641
- *
642
- * To register your own command use the {@link registerDragger | registerDragger()}.
643
- */
644
582
  get draggers(): string[] {
645
- return [...this.draggerFactory.keys()];
583
+ return [...draggers.getDraggers().keys()];
584
+ }
585
+
586
+ get components(): string[] {
587
+ return [...components.getComponents().keys()];
646
588
  }
647
589
 
648
590
  /**
649
- * Registers a dragger for the viewer.
650
- *
651
- * Dragger is an object that received mouse/keyboard events and does something to the viewer.
652
- * For a quick tutorial on how to create your own dragger, see {@link Dragger}.
653
- *
654
- * @param name - Dragger name.
655
- * @param dragger - Dragger class.
591
+ * Deprecated since `25.12`. Use {@link draggers.registerDragger} instead.
656
592
  */
657
593
  public registerDragger(name: string, dragger: typeof Dragger): void {
658
- this.draggerFactory.set(name, dragger);
594
+ console.warn(
595
+ "Viewer.registerDragger() has been deprecated since 25.12 and will be removed in a future release, use draggers('visualizejs').registerDragger() instead."
596
+ );
597
+ draggers.registerDragger(name, (viewer: IViewer) => new dragger(viewer));
659
598
  }
660
599
 
661
600
  activeDragger(): IDragger | null {
@@ -663,28 +602,27 @@ export class Viewer
663
602
  }
664
603
 
665
604
  setActiveDragger(name = ""): IDragger | null {
666
- if (this._activeDragger?.name !== name) {
605
+ if (!this._activeDragger || this._activeDragger.name !== name) {
606
+ const oldDragger = this._activeDragger;
607
+ let newDragger = null;
608
+
667
609
  if (this._activeDragger) {
668
610
  this._activeDragger.dispose();
669
611
  this._activeDragger = null;
670
612
  }
671
613
  if (this.visualizeJs) {
672
- const Constructor = this.draggerFactory.get(name);
673
- if (Constructor) {
674
- this._activeDragger = new Constructor(this);
675
- this._activeDragger.name = name;
676
- this._activeDragger.initialize();
614
+ newDragger = draggers.createDragger(name, this);
615
+ if (newDragger) {
616
+ this._activeDragger = newDragger;
617
+ this._activeDragger.initialize?.();
677
618
  }
678
619
  }
679
620
  const canvas = this.canvas;
680
621
  if (canvas) {
681
- canvas.className = canvas.className
682
- .split(" ")
683
- .filter((x) => !x.startsWith("oda-cursor-"))
684
- .filter((x) => x)
685
- .concat(`oda-cursor-${name.toLowerCase()}`)
686
- .join(" ");
622
+ if (oldDragger) canvas.classList.remove(`oda-cursor-${oldDragger.name.toLowerCase()}`);
623
+ if (newDragger) canvas.classList.add(`oda-cursor-${newDragger.name.toLowerCase()}`);
687
624
  }
625
+
688
626
  this.emitEvent({ type: "changeactivedragger", data: name });
689
627
  this.update();
690
628
  }
@@ -699,6 +637,10 @@ export class Viewer
699
637
  }
700
638
  }
701
639
 
640
+ getComponent(name: string): IComponent {
641
+ return this._components.find((component) => component.name === name);
642
+ }
643
+
702
644
  clearSlices(): void {
703
645
  if (!this.visualizeJs) return;
704
646
 
@@ -1280,11 +1222,11 @@ export class Viewer
1280
1222
  }
1281
1223
  }
1282
1224
 
1283
- private getSelection(): IComponent[] {
1225
+ private getSelection(): IEntity[] {
1284
1226
  return this.getSelected().map((handle) => ({ handle }));
1285
1227
  }
1286
1228
 
1287
- private setSelection(selection: IComponent[]) {
1229
+ private setSelection(selection: IEntity[]) {
1288
1230
  this.setSelected(selection?.map((component) => component.handle));
1289
1231
  }
1290
1232
 
@@ -1318,8 +1260,7 @@ export class Viewer
1318
1260
  * - `zoomToObjects`
1319
1261
  * - `zoomToSelected`
1320
1262
  *
1321
- * To register your own command use the {@link ICommands.registerCommand | registerCommand()}
1322
- * method of the {@link commands} manager.
1263
+ * To register custom command use the {@link commands.registerCommand}.
1323
1264
  *
1324
1265
  * @param id - Command ID or dragger name.
1325
1266
  * @param args - Parameters passed to the command handler function.
@@ -1327,7 +1268,7 @@ export class Viewer
1327
1268
  * instance. Returns `undefined` if neither the command nor the dragger exists.
1328
1269
  */
1329
1270
  executeCommand(id: string, ...args: any[]): any {
1330
- return commands("VisualizeJS").executeCommand(id, this, ...args);
1271
+ return commands.executeCommand(id, this, ...args);
1331
1272
  }
1332
1273
 
1333
1274
  public deviceAutoRegeneration() {
package/src/index.ts CHANGED
@@ -21,10 +21,13 @@
21
21
  // acknowledge and accept the above terms.
22
22
  ///////////////////////////////////////////////////////////////////////////////
23
23
 
24
- import "./Viewer/Commands";
25
-
26
24
  export * from "@inweb/viewer-core";
27
25
  export * from "@inweb/markup";
26
+
27
+ export { draggers } from "./Viewer/Draggers";
28
+ export { commands } from "./Viewer/Commands";
29
+ export { components } from "./Viewer/Components";
28
30
  export { Viewer } from "./Viewer/Viewer";
31
+
29
32
  export { OdBaseDragger } from "./Viewer/Draggers/Common/OdBaseDragger";
30
33
  export { MarkupType } from "./Viewer/Markup/MarkupFactory";