@inweb/viewer-visualize 25.9.8 → 25.11.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.
Files changed (42) hide show
  1. package/README.md +1 -1
  2. package/dist/viewer-visualize.js +252 -163
  3. package/dist/viewer-visualize.js.map +1 -1
  4. package/dist/viewer-visualize.min.js +1 -1
  5. package/dist/viewer-visualize.module.js +211 -89
  6. package/dist/viewer-visualize.module.js.map +1 -1
  7. package/lib/Viewer/Commands/index.d.ts +1 -1
  8. package/lib/Viewer/Draggers/Actions/PanAction.d.ts +2 -2
  9. package/lib/Viewer/Draggers/Actions/ZoomAction.d.ts +1 -1
  10. package/lib/Viewer/Draggers/Common/OdBaseDragger.d.ts +1 -1
  11. package/lib/Viewer/Draggers/MeasureLineDragger/index.d.ts +4 -0
  12. package/lib/Viewer/Draggers/OdOrbitDragger.d.ts +1 -1
  13. package/lib/Viewer/Draggers/OdPanDragger.d.ts +2 -2
  14. package/lib/Viewer/Draggers/OdZoomDragger.d.ts +5 -2
  15. package/lib/Viewer/Draggers/OdZoomWindowDragger/index.d.ts +1 -1
  16. package/lib/Viewer/Draggers/OrbitAroundBuildingDragger.d.ts +1 -1
  17. package/lib/Viewer/Viewer.d.ts +25 -67
  18. package/package.json +6 -6
  19. package/src/Viewer/Commands/{Unselect.ts → ClearSelected.ts} +4 -3
  20. package/src/Viewer/Commands/Explode.ts +1 -1
  21. package/src/Viewer/Commands/HideSelected.ts +2 -1
  22. package/src/Viewer/Commands/IsolateSelected.ts +1 -1
  23. package/src/Viewer/Commands/ResetView.ts +1 -1
  24. package/src/Viewer/Commands/ShowAll.ts +1 -1
  25. package/src/Viewer/Commands/index.ts +1 -1
  26. package/src/Viewer/Draggers/Actions/PanAction.ts +8 -8
  27. package/src/Viewer/Draggers/Actions/ZoomAction.ts +3 -1
  28. package/src/Viewer/Draggers/Common/GestureManager.ts +3 -3
  29. package/src/Viewer/Draggers/Common/OdBaseDragger.ts +3 -3
  30. package/src/Viewer/Draggers/MeasureLineDragger/MeasureLineItem.ts +6 -1
  31. package/src/Viewer/Draggers/MeasureLineDragger/index.ts +81 -3
  32. package/src/Viewer/Draggers/OdOrbitDragger.ts +1 -1
  33. package/src/Viewer/Draggers/OdPanDragger.ts +4 -4
  34. package/src/Viewer/Draggers/OdZoomDragger.ts +13 -4
  35. package/src/Viewer/Draggers/OdZoomWheelDragger.ts +3 -1
  36. package/src/Viewer/Draggers/OdZoomWindowDragger/index.ts +1 -1
  37. package/src/Viewer/Draggers/OrbitAroundBuildingDragger.ts +1 -1
  38. package/src/Viewer/Markup/Visualize/VisualizeMarkup.ts +1 -0
  39. package/src/Viewer/Viewer.ts +61 -77
  40. /package/lib/{ConvetMath.d.ts → ConvertMath.d.ts} +0 -0
  41. /package/lib/Viewer/Commands/{Unselect.d.ts → ClearSelected.d.ts} +0 -0
  42. /package/src/{ConvetMath.ts → ConvertMath.ts} +0 -0
@@ -99,7 +99,8 @@ function defaultOptions() {
99
99
  reverseZoomWheel: false,
100
100
  enableZoomWheel: true,
101
101
  enableGestures: true,
102
- geometryType: "vsfx"
102
+ geometryType: "vsfx",
103
+ rulerUnit: "Default"
103
104
  };
104
105
  }
105
106
 
@@ -359,6 +360,13 @@ class Options {
359
360
  this._data.geometryType = value;
360
361
  this.change();
361
362
  }
363
+ get rulerUnit() {
364
+ return this._data.rulerUnit;
365
+ }
366
+ set rulerUnit(value) {
367
+ this._data.rulerUnit = value;
368
+ this.change();
369
+ }
362
370
  }
363
371
 
364
372
  const CanvasEvents = [ "click", "contextmenu", "dblclick", "mousedown", "mouseleave", "mousemove", "mouseup", "pointercancel", "pointerdown", "pointerleave", "pointermove", "pointerup", "touchcancel", "touchend", "touchmove", "touchstart", "wheel" ];
@@ -413,6 +421,22 @@ commands("VisualizeJS").registerCommand("clearMarkup", (viewer => viewer.clearOv
413
421
 
414
422
  commands("VisualizeJS").registerCommandAlias("clearMarkup", "clearOverlay");
415
423
 
424
+ function clearSelected(viewer) {
425
+ if (!viewer.visualizeJs) return;
426
+ const visViewer = viewer.visViewer();
427
+ visViewer.unselect();
428
+ viewer.update();
429
+ viewer.emitEvent({
430
+ type: "select",
431
+ data: undefined,
432
+ handles: []
433
+ });
434
+ }
435
+
436
+ commands("VisualizeJS").registerCommand("clearSelected", clearSelected);
437
+
438
+ commands("VisualizeJS").registerCommandAlias("clearSelected", "unselect");
439
+
416
440
  commands("VisualizeJS").registerCommand("clearSlices", (viewer => viewer.clearSlices()));
417
441
 
418
442
  function createPreview(viewer, type = "image/jpeg", encoderOptions = .25) {
@@ -428,7 +452,7 @@ function explode(viewer, index = 0) {
428
452
  const visViewer = viewer.visViewer();
429
453
  visViewer.explode(index);
430
454
  viewer.update();
431
- viewer.emit({
455
+ viewer.emitEvent({
432
456
  type: "explode",
433
457
  data: index
434
458
  });
@@ -490,9 +514,14 @@ function hideSelected(viewer) {
490
514
  const visViewer = viewer.visViewer();
491
515
  visViewer.hideSelectedObjects(false);
492
516
  viewer.update();
493
- viewer.emit({
517
+ viewer.emitEvent({
494
518
  type: "hide"
495
519
  });
520
+ viewer.emitEvent({
521
+ type: "select",
522
+ data: undefined,
523
+ handles: []
524
+ });
496
525
  }
497
526
 
498
527
  commands("VisualizeJS").registerCommand("hideSelected", hideSelected);
@@ -502,7 +531,7 @@ function isolateSelected(viewer) {
502
531
  const visViewer = viewer.visViewer();
503
532
  visViewer.isolateSelectedObjects(false);
504
533
  viewer.update();
505
- viewer.emit({
534
+ viewer.emitEvent({
506
535
  type: "isolate"
507
536
  });
508
537
  }
@@ -527,7 +556,7 @@ function resetView(viewer) {
527
556
  viewer.executeCommand("clearSlices");
528
557
  viewer.executeCommand("clearOverlay");
529
558
  viewer.executeCommand("setMarkupColor");
530
- viewer.executeCommand("unselect");
559
+ viewer.executeCommand("clearSelected");
531
560
  viewer.executeCommand("showAll");
532
561
  viewer.executeCommand("explode", 0);
533
562
  viewer.executeCommand("zoomToExtents", true);
@@ -634,27 +663,13 @@ function showAll(viewer) {
634
663
  const visViewer = viewer.visViewer();
635
664
  visViewer.unisolateSelectedObjects(false);
636
665
  viewer.update();
637
- viewer.emit({
666
+ viewer.emitEvent({
638
667
  type: "showall"
639
668
  });
640
669
  }
641
670
 
642
671
  commands("VisualizeJS").registerCommand("showAll", showAll);
643
672
 
644
- function unselect(viewer) {
645
- if (!viewer.visualizeJs) return;
646
- const visViewer = viewer.visViewer();
647
- visViewer.unselect();
648
- viewer.update();
649
- viewer.emitEvent({
650
- type: "select",
651
- data: visViewer.getSelected(),
652
- handles: []
653
- });
654
- }
655
-
656
- commands("VisualizeJS").registerCommand("unselect", unselect);
657
-
658
673
  function zoomToExtents(viewer, force = false, animate = viewer.options.cameraAnimation) {
659
674
  if (!viewer.visualizeJs) return;
660
675
  const visViewer = viewer.visViewer();
@@ -1770,33 +1785,21 @@ class KonvaMarkup {
1770
1785
  this._konvaStage.height(height);
1771
1786
  };
1772
1787
  this.pan = event => {
1773
- const pointer = this._konvaStage.getPointerPosition();
1774
- const pointTo = {
1775
- x: (pointer.x - this._konvaStage.x()) / this._konvaStage.scaleX(),
1776
- y: (pointer.y - this._konvaStage.y()) / this._konvaStage.scaleX()
1777
- };
1778
1788
  const newPos = {
1779
- x: pointer.x - pointTo.x * this._konvaStage.scale().x + event.dX,
1780
- y: pointer.y - pointTo.y * this._konvaStage.scale().x + event.dY
1789
+ x: this._konvaStage.x() + event.dX,
1790
+ y: this._konvaStage.y() + event.dY
1781
1791
  };
1782
1792
  this._konvaStage.position(newPos);
1783
1793
  };
1784
1794
  this.zoomAt = event => {
1785
- const oldScale = this._konvaStage.scaleX();
1786
- const pointer = this._konvaStage.getPointerPosition();
1787
- const mousePointTo = {
1788
- x: (pointer.x - this._konvaStage.x()) / oldScale,
1789
- y: (pointer.y - this._konvaStage.y()) / oldScale
1790
- };
1791
- const direction = event.data > 0 ? 1 : -1;
1792
- const newScale = direction > 0 ? oldScale * event.data : oldScale / event.data;
1795
+ const newScale = this._konvaStage.scaleX() * event.data;
1793
1796
  this._konvaStage.scale({
1794
1797
  x: newScale,
1795
1798
  y: newScale
1796
1799
  });
1797
1800
  const newPos = {
1798
- x: pointer.x - mousePointTo.x * newScale,
1799
- y: pointer.y - mousePointTo.y * newScale
1801
+ x: event.x - (event.x - this._konvaStage.x()) * event.data,
1802
+ y: event.y - (event.y - this._konvaStage.y()) * event.data
1800
1803
  };
1801
1804
  this._konvaStage.position(newPos);
1802
1805
  };
@@ -1822,6 +1825,7 @@ class KonvaMarkup {
1822
1825
  this._markupContainer.style.top = "0px";
1823
1826
  this._markupContainer.style.left = "0px";
1824
1827
  this._markupContainer.style.outline = "0px";
1828
+ this._markupContainer.style.pointerEvents = "none";
1825
1829
  const parentDiv = this._container.parentElement;
1826
1830
  parentDiv.appendChild(this._markupContainer);
1827
1831
  this._resizeObserver = new ResizeObserver(this.resizeContainer);
@@ -1829,7 +1833,6 @@ class KonvaMarkup {
1829
1833
  this._markupColor.setColor(255, 0, 0);
1830
1834
  this.initializeKonva();
1831
1835
  if (this._viewer) {
1832
- this._containerEvents.forEach((x => this._markupContainer.addEventListener(x, this.redirectToViewer)));
1833
1836
  this._viewer.addEventListener("changeactivedragger", this.changeActiveDragger);
1834
1837
  this._viewer.addEventListener("pan", this.pan);
1835
1838
  this._viewer.addEventListener("zoomat", this.zoomAt);
@@ -1841,7 +1844,6 @@ class KonvaMarkup {
1841
1844
  this._viewer.removeEventListener("zoomat", this.zoomAt);
1842
1845
  this._viewer.removeEventListener("pan", this.pan);
1843
1846
  this._viewer.removeEventListener("changeactivedragger", this.changeActiveDragger);
1844
- this._containerEvents.forEach((x => this._markupContainer.removeEventListener(x, this.redirectToViewer)));
1845
1847
  }
1846
1848
  this.destroyKonva();
1847
1849
  (_a = this._resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
@@ -1865,6 +1867,14 @@ class KonvaMarkup {
1865
1867
  }
1866
1868
  setMarkupColor(r, g, b) {
1867
1869
  this._markupColor.setColor(r, g, b);
1870
+ this._viewer.emit({
1871
+ type: "changemarkupcolor",
1872
+ data: {
1873
+ r: r,
1874
+ g: g,
1875
+ b: b
1876
+ }
1877
+ });
1868
1878
  }
1869
1879
  colorizeAllMarkup(r, g, b) {
1870
1880
  const hexColor = new MarkupColor(r, g, b).asHex();
@@ -1957,9 +1967,11 @@ class KonvaMarkup {
1957
1967
  this.clearSelected();
1958
1968
  this.removeTextInput();
1959
1969
  this.removeImageInput();
1970
+ this._markupContainer.style.pointerEvents = "none";
1960
1971
  this._markupIsActive = false;
1961
1972
  } else {
1962
1973
  this._markupMode = mode;
1974
+ this._markupContainer.style.pointerEvents = "all";
1963
1975
  this._markupIsActive = true;
1964
1976
  }
1965
1977
  return this;
@@ -2814,7 +2826,7 @@ class OdBaseDragger extends OdaGeAction {
2814
2826
  }
2815
2827
  ev.target.releasePointerCapture(ev.pointerId);
2816
2828
  const relCoord = this.relativeCoords(ev);
2817
- this.end(relCoord.x, relCoord.y);
2829
+ this.end(relCoord.x, relCoord.y, ev.clientX, ev.clientY);
2818
2830
  this.isDragging = false;
2819
2831
  this.subject.update();
2820
2832
  }
@@ -2829,7 +2841,7 @@ class OdBaseDragger extends OdaGeAction {
2829
2841
  return;
2830
2842
  }
2831
2843
  const relCoord = this.relativeCoords(ev);
2832
- this.drag(relCoord.x, relCoord.y, ev.movementX, ev.movementY);
2844
+ this.drag(relCoord.x, relCoord.y, ev.clientX, ev.clientY);
2833
2845
  if (this.isDragging) {
2834
2846
  this.subject.update();
2835
2847
  }
@@ -2884,7 +2896,7 @@ class OdBaseDragger extends OdaGeAction {
2884
2896
  }
2885
2897
  start(x, y, absoluteX = 0, absoluteY = 0) {}
2886
2898
  drag(x, y, absoluteX = 0, absoluteY = 0) {}
2887
- end(x, y) {}
2899
+ end(x, y, absoluteX = 0, absoluteY = 0) {}
2888
2900
  getActiveMarkupEntity(entityName) {
2889
2901
  return this.subject.addMarkupEntity(entityName);
2890
2902
  }
@@ -3180,7 +3192,11 @@ class MeasureLineItem {
3180
3192
  }
3181
3193
  }
3182
3194
  getDistance() {
3183
- return getDistance(this.startPoint, this.endPoint, this.moduleInstance) / this.scale;
3195
+ let distance = getDistance(this.startPoint, this.endPoint, this.moduleInstance);
3196
+ if (Math.abs(this.scale - 1) > 1e-4) {
3197
+ distance = (distance / this.scale).toFixed(2);
3198
+ }
3199
+ return distance;
3184
3200
  }
3185
3201
  setStartPoint(gePoint) {
3186
3202
  this.startPoint = gePoint;
@@ -3237,6 +3253,7 @@ function renameUnit(table, unit) {
3237
3253
 
3238
3254
  class MeasureLineDragger extends OdBaseDragger {
3239
3255
  constructor(subject) {
3256
+ var _a;
3240
3257
  super(subject);
3241
3258
  this.lineThickness = 2;
3242
3259
  this.press = false;
@@ -3254,10 +3271,12 @@ class MeasureLineDragger extends OdBaseDragger {
3254
3271
  Miles: "mi",
3255
3272
  Micrometers: "µm",
3256
3273
  MicroInches: "µin",
3257
- Undefined: " "
3274
+ Default: "unit"
3258
3275
  };
3259
3276
  this.items = [];
3260
3277
  this.canvasEvents.push("resize");
3278
+ this.oldRulerUnit = (_a = subject.options.rulerUnit) !== null && _a !== void 0 ? _a : "Default";
3279
+ this.optionsChange = this.optionsChange.bind(this);
3261
3280
  }
3262
3281
  initialize() {
3263
3282
  super.initialize();
@@ -3267,11 +3286,13 @@ class MeasureLineDragger extends OdBaseDragger {
3267
3286
  this.m_overlayElement.style.zIndex = "1";
3268
3287
  this.m_overlayElement.style.pointerEvents = "none";
3269
3288
  document.body.appendChild(this.m_overlayElement);
3289
+ this.subject.addEventListener("optionschange", this.optionsChange);
3270
3290
  this.resize();
3271
3291
  }
3272
3292
  dispose() {
3273
3293
  super.dispose();
3274
3294
  this.m_overlayElement.remove();
3295
+ this.subject.removeEventListener("optionschange", this.optionsChange);
3275
3296
  }
3276
3297
  updatePreview() {
3277
3298
  this.items.forEach((item => item.update()));
@@ -3346,10 +3367,86 @@ class MeasureLineDragger extends OdBaseDragger {
3346
3367
  const viewer = this.m_module.getViewer();
3347
3368
  const item = new MeasureLineItem(this.m_overlayElement, viewer, this.m_module);
3348
3369
  item.lineThickness = this.lineThickness || item.lineThickness;
3349
- item.setUnit(renameUnit(this.renameUnitTable, viewer.getUnit()));
3370
+ const isDefaultUnit = !this.subject.options.rulerUnit || this.subject.options.rulerUnit === "Default";
3371
+ item.setUnit(renameUnit(this.renameUnitTable, isDefaultUnit ? viewer.getUnit() : this.subject.options.rulerUnit));
3372
+ if (!isDefaultUnit) {
3373
+ const fromUnit = this.getKUnitByName(viewer.getUnit());
3374
+ const toUnit = this.getKUnitByName(this.subject.options.rulerUnit);
3375
+ const multiplier = viewer.getUnitsConversionCoef(fromUnit, toUnit);
3376
+ this.conversionFactor = 1 / multiplier;
3377
+ item.setConversionFactor(this.conversionFactor);
3378
+ } else {
3379
+ item.setConversionFactor(1);
3380
+ }
3350
3381
  this.items.push(item);
3351
3382
  return item;
3352
3383
  }
3384
+ optionsChange(event) {
3385
+ var _a;
3386
+ const options = event.data;
3387
+ const toUnitName = (_a = options.rulerUnit) !== null && _a !== void 0 ? _a : "Default";
3388
+ if (this.oldRulerUnit === toUnitName) return;
3389
+ this.oldRulerUnit = toUnitName;
3390
+ const drawingUnit = this.m_module.getViewer().getUnit();
3391
+ const eToUnit = this.getKUnitByName(toUnitName);
3392
+ const eFromUnit = this.getKUnitByName(drawingUnit);
3393
+ this.items.forEach((item => {
3394
+ if (toUnitName === "Default") {
3395
+ item.setUnit(renameUnit(this.renameUnitTable, drawingUnit));
3396
+ item.setConversionFactor(1);
3397
+ } else {
3398
+ item.setUnit(renameUnit(this.renameUnitTable, toUnitName));
3399
+ const multiplier = this.m_module.getViewer().getUnitsConversionCoef(eFromUnit, eToUnit);
3400
+ this.conversionFactor = 1 / multiplier;
3401
+ item.setConversionFactor(this.conversionFactor);
3402
+ }
3403
+ }));
3404
+ }
3405
+ getKUnitByName(unitName) {
3406
+ let eUnit = this.m_module.Units.kUserDefined;
3407
+ switch (unitName) {
3408
+ case "Millimeters":
3409
+ eUnit = this.m_module.Units.kMillimeters;
3410
+ break;
3411
+
3412
+ case "Centimeters":
3413
+ eUnit = this.m_module.Units.kCentimeters;
3414
+ break;
3415
+
3416
+ case "Meters":
3417
+ eUnit = this.m_module.Units.kMeters;
3418
+ break;
3419
+
3420
+ case "Feet":
3421
+ eUnit = this.m_module.Units.kFeet;
3422
+ break;
3423
+
3424
+ case "Inches":
3425
+ eUnit = this.m_module.Units.kInches;
3426
+ break;
3427
+
3428
+ case "Yards":
3429
+ eUnit = this.m_module.Units.kYards;
3430
+ break;
3431
+
3432
+ case "Kilometers":
3433
+ eUnit = this.m_module.Units.kKilometers;
3434
+ break;
3435
+
3436
+ case "Miles":
3437
+ eUnit = this.m_module.Units.kMiles;
3438
+ break;
3439
+
3440
+ case "Micrometers":
3441
+ eUnit = this.m_module.Units.kMicrometers;
3442
+ break;
3443
+
3444
+ case "MicroInches":
3445
+ eUnit = this.m_module.Units.kMicroInches;
3446
+ break;
3447
+ }
3448
+ return eUnit;
3449
+ }
3353
3450
  }
3354
3451
 
3355
3452
  const FocalLengthConst = 42;
@@ -3881,7 +3978,7 @@ class OdOrbitDragger extends OdBaseDragger {
3881
3978
  extView.setView(this.startCameraParams.position, this.startCameraParams.target, this.startCameraParams.upVector, this.startCameraParams.viewFieldWidth, this.startCameraParams.viewFieldHeight, this.startCameraParams.perspective);
3882
3979
  extView.delete();
3883
3980
  }
3884
- drag(x, y, dltX, dltY) {
3981
+ drag(x, y) {
3885
3982
  if (this.press) {
3886
3983
  this._orbitAction.action(x, y);
3887
3984
  }
@@ -3901,15 +3998,15 @@ class PanAction {
3901
3998
  this._getViewParams = getViewParams;
3902
3999
  this._setViewParams = setViewParams;
3903
4000
  }
3904
- beginAction(x, y) {
4001
+ beginAction(x, y, absoluteX, absoluteY) {
3905
4002
  this._m_start = this.screenToWorld(x, y);
3906
4003
  this._deltaScreenPosition = {
3907
- x: x,
3908
- y: y
4004
+ x: absoluteX,
4005
+ y: absoluteY
3909
4006
  };
3910
4007
  this._beginInteractivity();
3911
4008
  }
3912
- action(x, y) {
4009
+ action(x, y, absoluteX, absoluteY) {
3913
4010
  var _a;
3914
4011
  const {Vector3d: Vector3d} = this._m_module;
3915
4012
  const params = this._getViewParams();
@@ -3930,14 +4027,14 @@ class PanAction {
3930
4027
  (_a = this._subject.activeDragger()) === null || _a === void 0 ? void 0 : _a.updatePreview();
3931
4028
  this._subject.emitEvent({
3932
4029
  type: "pan",
3933
- x: x,
3934
- y: y,
3935
- dX: x - this._deltaScreenPosition.x,
3936
- dY: y - this._deltaScreenPosition.y
4030
+ x: absoluteX,
4031
+ y: absoluteY,
4032
+ dX: absoluteX - this._deltaScreenPosition.x,
4033
+ dY: absoluteY - this._deltaScreenPosition.y
3937
4034
  });
3938
4035
  this._deltaScreenPosition = {
3939
- x: x,
3940
- y: y
4036
+ x: absoluteX,
4037
+ y: absoluteY
3941
4038
  };
3942
4039
  }
3943
4040
  endAction() {
@@ -3955,13 +4052,13 @@ class OdPanDragger extends OdBaseDragger {
3955
4052
  this.press = false;
3956
4053
  this._panAction = new PanAction(this.m_module, this.subject, this.beginInteractivity, this.endInteractivity, this.getViewParams, this.setViewParams);
3957
4054
  }
3958
- start(x, y) {
4055
+ start(x, y, absoluteX, absoluteY) {
3959
4056
  this.press = true;
3960
- this._panAction.beginAction(x, y);
4057
+ this._panAction.beginAction(x, y, absoluteX, absoluteY);
3961
4058
  }
3962
- drag(x, y, dltX, dltY) {
4059
+ drag(x, y, absoluteX, absoluteY) {
3963
4060
  if (this.press) {
3964
- this._panAction.action(x, y);
4061
+ this._panAction.action(x, y, absoluteX, absoluteY);
3965
4062
  }
3966
4063
  }
3967
4064
  end(x, y) {
@@ -3975,7 +4072,7 @@ class ZoomAction {
3975
4072
  this._m_module = m_module;
3976
4073
  this._subject = subject;
3977
4074
  }
3978
- action(x, y, zoomFactor) {
4075
+ action(x, y, zoomFactor, absoluteX, absoluteY) {
3979
4076
  var _a;
3980
4077
  const viewer = this._m_module.getViewer();
3981
4078
  viewer.zoomAt(zoomFactor, x, y);
@@ -3983,7 +4080,9 @@ class ZoomAction {
3983
4080
  (_a = this._subject.activeDragger()) === null || _a === void 0 ? void 0 : _a.updatePreview();
3984
4081
  this._subject.emitEvent({
3985
4082
  type: "zoomat",
3986
- data: zoomFactor
4083
+ data: zoomFactor,
4084
+ x: absoluteX,
4085
+ y: absoluteY
3987
4086
  });
3988
4087
  }
3989
4088
  }
@@ -3995,17 +4094,22 @@ class OdZoomDragger extends OdBaseDragger {
3995
4094
  this.press = false;
3996
4095
  this._zoomAction = new ZoomAction(this.m_module, this.subject);
3997
4096
  }
3998
- start(x, y) {
4097
+ start(x, y, absoluteX = 0, absoluteY = 0) {
3999
4098
  this.press = true;
4000
4099
  this.pressX = x;
4001
4100
  this.pressY = y;
4101
+ this.absoluteX = absoluteX;
4102
+ this.absoluteY = absoluteY;
4103
+ this.prevY = y;
4002
4104
  this.beginInteractivity();
4003
4105
  }
4004
- drag(x, y, dltX, dltY) {
4106
+ drag(x, y) {
4107
+ const dltY = y - this.prevY;
4108
+ this.prevY = y;
4005
4109
  if (this.press && Math.abs(dltY) >= 1e-5) {
4006
4110
  const ZOOM_SPEED = .025;
4007
4111
  const zoomFactor = dltY > 0 ? 1 + ZOOM_SPEED : 1 - ZOOM_SPEED;
4008
- this._zoomAction.action(this.pressX, this.pressY, zoomFactor);
4112
+ this._zoomAction.action(this.pressX, this.pressY, zoomFactor, this.absoluteX, this.absoluteY);
4009
4113
  }
4010
4114
  }
4011
4115
  end() {
@@ -4035,7 +4139,7 @@ class OdZoomWheelDragger extends OdBaseDragger {
4035
4139
  const viewer = this.getViewer();
4036
4140
  if (viewer) {
4037
4141
  const zoomFactor = event.deltaY > 0 ? 1 + zoomSpeed : 1 - zoomSpeed;
4038
- this._zoomAction.action(event.offsetX * window.devicePixelRatio, event.offsetY * window.devicePixelRatio, zoomFactor);
4142
+ this._zoomAction.action(event.offsetX * window.devicePixelRatio, event.offsetY * window.devicePixelRatio, zoomFactor, event.offsetX, event.offsetY);
4039
4143
  if (!this._isEnableInteractivityMode) {
4040
4144
  this._isEnableInteractivityMode = true;
4041
4145
  this.beginInteractivity();
@@ -4158,7 +4262,7 @@ class OdZoomWindowDragger extends OdBaseDragger {
4158
4262
  const startPoint = this.screenToWorld(x, y);
4159
4263
  this.m_frame.setStartPoint(startPoint);
4160
4264
  }
4161
- drag(x, y, dltX, dltY) {
4265
+ drag(x, y) {
4162
4266
  if (this.press) {
4163
4267
  this.m_maxX = x;
4164
4268
  this.m_maxY = y;
@@ -4201,7 +4305,7 @@ class OrbitAroundBuildingDragger extends OdBaseDragger {
4201
4305
  setDefaultViewParams() {
4202
4306
  this.setViewParams(this.startCameraParams);
4203
4307
  }
4204
- drag(x, y, dltX, dltY) {
4308
+ drag(x, y) {
4205
4309
  if (this.press) {
4206
4310
  let dX = x - this.m_startPoint.x;
4207
4311
  let dY = y - this.m_startPoint.y;
@@ -4386,7 +4490,7 @@ class GestureManager extends OdBaseDragger {
4386
4490
  const zoomSpeed = (currentDistance - previousDistance) / 700;
4387
4491
  const zoomFactor = 1 + zoomSpeed;
4388
4492
  const middlePoint = this.getMiddlePoint(this._currentEvents);
4389
- this._zoomAction.action(middlePoint.x, middlePoint.y, zoomFactor);
4493
+ this._zoomAction.action(middlePoint.x, middlePoint.y, zoomFactor, middlePoint.x, middlePoint.y);
4390
4494
  this.subject.update();
4391
4495
  }
4392
4496
  executePanAction(currentPoint) {
@@ -4394,9 +4498,9 @@ class GestureManager extends OdBaseDragger {
4394
4498
  this.executeEndAction(this._lastGestureAction);
4395
4499
  this._lastGestureAction = GestureAction.Pan;
4396
4500
  OdBaseDragger.isGestureActive = true;
4397
- this._panAction.beginAction(currentPoint.x, currentPoint.y);
4501
+ this._panAction.beginAction(currentPoint.x, currentPoint.y, currentPoint.x, currentPoint.y);
4398
4502
  }
4399
- this._panAction.action(currentPoint.x, currentPoint.y);
4503
+ this._panAction.action(currentPoint.x, currentPoint.y, currentPoint.x, currentPoint.y);
4400
4504
  this.subject.update();
4401
4505
  }
4402
4506
  executeOrbitAction(currentPoint) {
@@ -5074,6 +5178,10 @@ class VisualizeMarkup {
5074
5178
  b: b
5075
5179
  };
5076
5180
  this._markupColor = color;
5181
+ this._viewer.emitEvent({
5182
+ type: "changemarkupcolor",
5183
+ data: color
5184
+ });
5077
5185
  }
5078
5186
  colorizeAllMarkup(r = 255, g = 0, b = 0) {
5079
5187
  if (!this._viewer.visualizeJs) return;
@@ -5289,7 +5397,7 @@ class Viewer extends EventEmitter2 {
5289
5397
  return this._markup;
5290
5398
  }
5291
5399
  configure(params) {
5292
- this._visualizeJsUrl = params.visualizeJsUrl || "https://opencloud.azureedge.net/libs/visualizejs/master/Visualize.js";
5400
+ this._visualizeJsUrl = params.visualizeJsUrl || "https://public-fhemb7e3embacwec.z02.azurefd.net/libs/visualizejs/master/Visualize.js";
5293
5401
  return this;
5294
5402
  }
5295
5403
  async initialize(canvas, onProgress) {
@@ -5349,7 +5457,7 @@ class Viewer extends EventEmitter2 {
5349
5457
  });
5350
5458
  if (this.frameId) cancelAnimationFrame(this.frameId);
5351
5459
  this.frameId = 0;
5352
- this.setActiveDragger("");
5460
+ this.setActiveDragger();
5353
5461
  this.removeAllListeners();
5354
5462
  if (this._gestureManager) this._gestureManager.dispose();
5355
5463
  this._gestureManager = undefined;
@@ -5594,7 +5702,7 @@ class Viewer extends EventEmitter2 {
5594
5702
  activeDragger() {
5595
5703
  return this._activeDragger;
5596
5704
  }
5597
- setActiveDragger(name) {
5705
+ setActiveDragger(name = "") {
5598
5706
  var _a;
5599
5707
  if (((_a = this._activeDragger) === null || _a === void 0 ? void 0 : _a.name) !== name) {
5600
5708
  if (this._activeDragger) {
@@ -5623,7 +5731,7 @@ class Viewer extends EventEmitter2 {
5623
5731
  resetActiveDragger() {
5624
5732
  const dragger = this._activeDragger;
5625
5733
  if (dragger) {
5626
- this.setActiveDragger("");
5734
+ this.setActiveDragger();
5627
5735
  this.setActiveDragger(dragger.name);
5628
5736
  }
5629
5737
  }
@@ -5725,6 +5833,24 @@ class Viewer extends EventEmitter2 {
5725
5833
  setSelected(handles) {
5726
5834
  this.executeCommand("setSelected", handles);
5727
5835
  }
5836
+ clearSelected() {
5837
+ this.executeCommand("clearSelected");
5838
+ }
5839
+ hideSelected() {
5840
+ this.executeCommand("hideSelected");
5841
+ }
5842
+ isolateSelected() {
5843
+ this.executeCommand("isolateSelected");
5844
+ }
5845
+ showAll() {
5846
+ this.executeCommand("showAll");
5847
+ }
5848
+ explode(index = 0) {
5849
+ this.executeCommand("explode", index);
5850
+ }
5851
+ collect() {
5852
+ this.executeCommand("collect");
5853
+ }
5728
5854
  async loadReferences(model) {
5729
5855
  var _a;
5730
5856
  if (!this.visualizeJs) return this;
@@ -5774,7 +5900,8 @@ class Viewer extends EventEmitter2 {
5774
5900
  const overrideOptions = new Options;
5775
5901
  overrideOptions.data = this._options.data;
5776
5902
  if (file.type === ".rcs" && !overrideOptions.enablePartialMode) {
5777
- console.log("Partial load mode is forced for RCS file");
5903
+ console.log("Partial streaming mode is forced for RCS file");
5904
+ overrideOptions.enableStreamingMode = true;
5778
5905
  overrideOptions.enablePartialMode = true;
5779
5906
  }
5780
5907
  const loaderFactory = new LoaderFactory;
@@ -5892,6 +6019,7 @@ class Viewer extends EventEmitter2 {
5892
6019
  if (!this.visualizeJs) return this;
5893
6020
  const visLib = this.visLib();
5894
6021
  const visViewer = visLib.getViewer();
6022
+ this.setActiveDragger();
5895
6023
  this.clearOverlay();
5896
6024
  visViewer.clear();
5897
6025
  visViewer.createLocalDatabase();
@@ -5904,21 +6032,15 @@ class Viewer extends EventEmitter2 {
5904
6032
  return this;
5905
6033
  }
5906
6034
  getMarkupColor() {
6035
+ console.warn("Viewer.getMarkupColor() has been deprecated since 25.11 and will be removed in a future release, use Viewer.markup.getMarkupColor() instead.");
5907
6036
  return this._markup.getMarkupColor();
5908
6037
  }
5909
6038
  setMarkupColor(r = 255, g = 0, b = 0) {
6039
+ console.warn("Viewer.setMarkupColor() has been deprecated since 25.11 and will be removed in a future release, use Viewer.markup.setMarkupColor() instead.");
5910
6040
  this._markup.setMarkupColor(r, g, b);
5911
- const color = {
5912
- r: r,
5913
- g: g,
5914
- b: b
5915
- };
5916
- this.emitEvent({
5917
- type: "changemarkupcolor",
5918
- data: color
5919
- });
5920
6041
  }
5921
6042
  colorizeAllMarkup(r = 255, g = 0, b = 0) {
6043
+ console.warn("Viewer.colorizeAllMarkup() has been deprecated since 25.11 and will be removed in a future release, use Viewer.markup.colorizeAllMarkup() instead.");
5922
6044
  this._markup.colorizeAllMarkup(r, g, b);
5923
6045
  }
5924
6046
  colorizeSelectedMarkups(r = 255, g = 0, b = 0) {
@@ -5944,10 +6066,10 @@ class Viewer extends EventEmitter2 {
5944
6066
  this._markup.setViewpoint(viewpoint);
5945
6067
  }
5946
6068
  createViewpoint() {
5947
- const vp = this._markup.getViewpoint();
5948
- vp.orthogonal_camera = this.getOrthogonalCameraSettings();
5949
- vp.clipping_planes = this.getClippingPlanes();
5950
- return vp;
6069
+ const viewpoint = this._markup.getViewpoint();
6070
+ viewpoint.orthogonal_camera = this.getOrthogonalCameraSettings();
6071
+ viewpoint.clipping_planes = this.getClippingPlanes();
6072
+ return viewpoint;
5951
6073
  }
5952
6074
  getPoint3dFromArray(array) {
5953
6075
  return {