@inweb/viewer-visualize 26.10.2 → 26.10.3

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.
@@ -2381,6 +2381,46 @@ commands.registerCommandAlias("clearMarkup", "clearOverlay");
2381
2381
  commands.registerCommandAlias("clearSelected", "unselect");
2382
2382
  commands.registerCommandAlias("zoomToExtents", "zoomExtents");
2383
2383
 
2384
+ class CameraComponent {
2385
+ constructor(viewer) {
2386
+ this.optionsChange = () => {
2387
+ this.switchCameraMode(this.viewer.options.cameraMode);
2388
+ };
2389
+ this.geometryEnd = () => {
2390
+ const activeView = this.viewer.visViewer().activeView;
2391
+ const mode = this.getCameraMode(activeView);
2392
+ this.viewer.options.cameraMode = mode;
2393
+ this.viewer.emitEvent({ type: "changecameramode", mode });
2394
+ activeView.delete();
2395
+ };
2396
+ this.viewer = viewer;
2397
+ this.viewer.addEventListener("databasechunk", this.geometryEnd);
2398
+ this.viewer.addEventListener("clear", this.geometryEnd);
2399
+ this.viewer.addEventListener("optionschange", this.optionsChange);
2400
+ this.viewer.addEventListener("initialize", this.optionsChange);
2401
+ }
2402
+ dispose() {
2403
+ this.viewer.removeEventListener("databasechunk", this.geometryEnd);
2404
+ this.viewer.removeEventListener("clear", this.geometryEnd);
2405
+ this.viewer.removeEventListener("optionschange", this.optionsChange);
2406
+ this.viewer.removeEventListener("initialize", this.optionsChange);
2407
+ }
2408
+ getCameraMode(view) {
2409
+ return view.perspective ? "perspective" : "orthographic";
2410
+ }
2411
+ switchCameraMode(mode) {
2412
+ if (!mode)
2413
+ return;
2414
+ const activeView = this.viewer.visViewer().activeView;
2415
+ if (mode !== this.getCameraMode(activeView)) {
2416
+ activeView.perspective = !activeView.perspective;
2417
+ this.viewer.update();
2418
+ this.viewer.emitEvent({ type: "changecameramode", mode });
2419
+ }
2420
+ activeView.delete();
2421
+ }
2422
+ }
2423
+
2384
2424
  class RenderLoopComponent {
2385
2425
  constructor(viewer) {
2386
2426
  this.animate = (time = 0) => {
@@ -2663,6 +2703,7 @@ class ResetComponent {
2663
2703
  }
2664
2704
 
2665
2705
  const components = componentsRegistry("visualizejs");
2706
+ components.registerComponent("CameraComponent", (viewer) => new CameraComponent(viewer));
2666
2707
  components.registerComponent("ResizeCanvasComponent", (viewer) => new ResizeCanvasComponent(viewer));
2667
2708
  components.registerComponent("RenderLoopComponent", (viewer) => new RenderLoopComponent(viewer));
2668
2709
  components.registerComponent("ZoomWheelComponent", (viewer) => new ZoomWheelComponent(viewer));