@inweb/viewer-visualize 26.10.1 → 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.
@@ -236,6 +236,7 @@
236
236
  enableGestures: true,
237
237
  geometryType: "vsfx",
238
238
  rulerUnit: "Default",
239
+ cameraMode: "perspective",
239
240
  };
240
241
  }
241
242
  class Options {
@@ -491,6 +492,13 @@
491
492
  this._data.rulerUnit = value;
492
493
  this.change();
493
494
  }
495
+ get cameraMode() {
496
+ return this._data.cameraMode || "perspective";
497
+ }
498
+ set cameraMode(value) {
499
+ this._data.cameraMode = value;
500
+ this.change();
501
+ }
494
502
  }
495
503
  const CanvasEvents = [
496
504
  "click",
@@ -1425,8 +1433,8 @@
1425
1433
  else {
1426
1434
  move = Vector3d.createFromArray([0, currentDelta, 0]);
1427
1435
  }
1428
- let newPos = pos.add(move);
1429
- let newTarget = target.add(move);
1436
+ const newPos = pos.add(move);
1437
+ const newTarget = target.add(move);
1430
1438
  camera.setupCamera(newPos.toArray(), newTarget.toArray(), up.toArray());
1431
1439
  }
1432
1440
  moveBackward(currentDelta) {
@@ -2867,6 +2875,46 @@
2867
2875
  commands.registerCommandAlias("clearSelected", "unselect");
2868
2876
  commands.registerCommandAlias("zoomToExtents", "zoomExtents");
2869
2877
 
2878
+ class CameraComponent {
2879
+ constructor(viewer) {
2880
+ this.optionsChange = () => {
2881
+ this.switchCameraMode(this.viewer.options.cameraMode);
2882
+ };
2883
+ this.geometryEnd = () => {
2884
+ const activeView = this.viewer.visViewer().activeView;
2885
+ const mode = this.getCameraMode(activeView);
2886
+ this.viewer.options.cameraMode = mode;
2887
+ this.viewer.emitEvent({ type: "changecameramode", mode });
2888
+ activeView.delete();
2889
+ };
2890
+ this.viewer = viewer;
2891
+ this.viewer.addEventListener("databasechunk", this.geometryEnd);
2892
+ this.viewer.addEventListener("clear", this.geometryEnd);
2893
+ this.viewer.addEventListener("optionschange", this.optionsChange);
2894
+ this.viewer.addEventListener("initialize", this.optionsChange);
2895
+ }
2896
+ dispose() {
2897
+ this.viewer.removeEventListener("databasechunk", this.geometryEnd);
2898
+ this.viewer.removeEventListener("clear", this.geometryEnd);
2899
+ this.viewer.removeEventListener("optionschange", this.optionsChange);
2900
+ this.viewer.removeEventListener("initialize", this.optionsChange);
2901
+ }
2902
+ getCameraMode(view) {
2903
+ return view.perspective ? "perspective" : "orthographic";
2904
+ }
2905
+ switchCameraMode(mode) {
2906
+ if (!mode)
2907
+ return;
2908
+ const activeView = this.viewer.visViewer().activeView;
2909
+ if (mode !== this.getCameraMode(activeView)) {
2910
+ activeView.perspective = !activeView.perspective;
2911
+ this.viewer.update();
2912
+ this.viewer.emitEvent({ type: "changecameramode", mode });
2913
+ }
2914
+ activeView.delete();
2915
+ }
2916
+ }
2917
+
2870
2918
  class RenderLoopComponent {
2871
2919
  constructor(viewer) {
2872
2920
  this.animate = (time = 0) => {
@@ -3149,6 +3197,7 @@
3149
3197
  }
3150
3198
 
3151
3199
  const components = componentsRegistry("visualizejs");
3200
+ components.registerComponent("CameraComponent", (viewer) => new CameraComponent(viewer));
3152
3201
  components.registerComponent("ResizeCanvasComponent", (viewer) => new ResizeCanvasComponent(viewer));
3153
3202
  components.registerComponent("RenderLoopComponent", (viewer) => new RenderLoopComponent(viewer));
3154
3203
  components.registerComponent("ZoomWheelComponent", (viewer) => new ZoomWheelComponent(viewer));
@@ -17028,16 +17077,17 @@
17028
17077
  this._markupContainer = document.createElement("div");
17029
17078
  this._markupContainer.id = "markup-container";
17030
17079
  this._markupContainer.style.position = "absolute";
17031
- this._markupContainer.style.top = "0px";
17032
- this._markupContainer.style.left = "0px";
17033
17080
  this._markupContainer.style.outline = "0px";
17034
17081
  this._markupContainer.style.pointerEvents = "none";
17035
17082
  const parentDiv = this._container.parentElement;
17036
17083
  parentDiv.appendChild(this._markupContainer);
17037
- if (viewer)
17084
+ if (viewer) {
17038
17085
  this._viewer.addEventListener("resize", this.resizeViewer);
17039
- else
17086
+ }
17087
+ else {
17040
17088
  this._resizeObserver = new ResizeObserver(debounce(this.resizeContainer, 100));
17089
+ this._resizeObserver.observe(parentDiv);
17090
+ }
17041
17091
  this._markupColor.setColor(255, 0, 0);
17042
17092
  this.initializeKonva();
17043
17093
  if (this._viewer) {