@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.
@@ -2875,6 +2875,46 @@
2875
2875
  commands.registerCommandAlias("clearSelected", "unselect");
2876
2876
  commands.registerCommandAlias("zoomToExtents", "zoomExtents");
2877
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
+
2878
2918
  class RenderLoopComponent {
2879
2919
  constructor(viewer) {
2880
2920
  this.animate = (time = 0) => {
@@ -3157,6 +3197,7 @@
3157
3197
  }
3158
3198
 
3159
3199
  const components = componentsRegistry("visualizejs");
3200
+ components.registerComponent("CameraComponent", (viewer) => new CameraComponent(viewer));
3160
3201
  components.registerComponent("ResizeCanvasComponent", (viewer) => new ResizeCanvasComponent(viewer));
3161
3202
  components.registerComponent("RenderLoopComponent", (viewer) => new RenderLoopComponent(viewer));
3162
3203
  components.registerComponent("ZoomWheelComponent", (viewer) => new ZoomWheelComponent(viewer));
@@ -17036,16 +17077,17 @@
17036
17077
  this._markupContainer = document.createElement("div");
17037
17078
  this._markupContainer.id = "markup-container";
17038
17079
  this._markupContainer.style.position = "absolute";
17039
- this._markupContainer.style.top = "0px";
17040
- this._markupContainer.style.left = "0px";
17041
17080
  this._markupContainer.style.outline = "0px";
17042
17081
  this._markupContainer.style.pointerEvents = "none";
17043
17082
  const parentDiv = this._container.parentElement;
17044
17083
  parentDiv.appendChild(this._markupContainer);
17045
- if (viewer)
17084
+ if (viewer) {
17046
17085
  this._viewer.addEventListener("resize", this.resizeViewer);
17047
- else
17086
+ }
17087
+ else {
17048
17088
  this._resizeObserver = new ResizeObserver(debounce(this.resizeContainer, 100));
17089
+ this._resizeObserver.observe(parentDiv);
17090
+ }
17049
17091
  this._markupColor.setColor(255, 0, 0);
17050
17092
  this.initializeKonva();
17051
17093
  if (this._viewer) {