@inweb/viewer-visualize 27.1.6 → 27.1.7

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 (29) hide show
  1. package/dist/viewer-visualize.js +209 -298
  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 +210 -295
  5. package/dist/viewer-visualize.module.js.map +1 -1
  6. package/lib/Viewer/Components/GestureManagerComponent.d.ts +0 -1
  7. package/lib/Viewer/Components/ZoomWheelComponent.d.ts +0 -1
  8. package/lib/Viewer/Draggers/Common/GestureManager.d.ts +1 -0
  9. package/lib/Viewer/Draggers/Common/OdBaseDragger.d.ts +0 -4
  10. package/lib/Viewer/Draggers/MeasureLineDragger/index.d.ts +0 -1
  11. package/lib/Viewer/Draggers/OdZoomWheelDragger.d.ts +7 -1
  12. package/lib/Viewer/Draggers/OdaFlyDragger.d.ts +0 -1
  13. package/lib/Viewer/Draggers/OdaWalkDragger.d.ts +0 -1
  14. package/lib/Viewer/Viewer.d.ts +5 -42
  15. package/package.json +5 -5
  16. package/src/Viewer/Components/GestureManagerComponent.ts +0 -3
  17. package/src/Viewer/Components/ZoomWheelComponent.ts +0 -3
  18. package/src/Viewer/Draggers/Actions/OrbitAction.ts +1 -1
  19. package/src/Viewer/Draggers/Actions/PanAction.ts +1 -1
  20. package/src/Viewer/Draggers/Actions/ZoomAction.ts +1 -1
  21. package/src/Viewer/Draggers/Common/GestureManager.ts +9 -0
  22. package/src/Viewer/Draggers/Common/OdBaseDragger.ts +33 -30
  23. package/src/Viewer/Draggers/MeasureLineDragger/index.ts +9 -6
  24. package/src/Viewer/Draggers/OdZoomWheelDragger.ts +29 -21
  25. package/src/Viewer/Draggers/OdaFlyDragger.ts +0 -4
  26. package/src/Viewer/Draggers/OdaWalkDragger.ts +0 -4
  27. package/src/Viewer/Draggers/index.ts +4 -0
  28. package/src/Viewer/Markup/Visualize/VisualizeMarkup.ts +13 -7
  29. package/src/Viewer/Viewer.ts +16 -168
@@ -264,10 +264,6 @@
264
264
  static defaults() {
265
265
  return defaultOptions();
266
266
  }
267
- notifierChangeEvent() {
268
- console.warn("Options.notifierChangeEvent() has been deprecated since 25.3 and will be removed in a future release, use Options.change() instead.");
269
- this.change();
270
- }
271
267
  change() {
272
268
  if (this._emitter !== undefined) {
273
269
  this.saveToStorage();
@@ -709,17 +705,27 @@
709
705
  this.needInputText = false;
710
706
  this.mouseDownPosition = { x: 0, y: 0 };
711
707
  this.autoSelect = false;
712
- this.onmessage = (event) => this.subject.emitEvent(event);
713
- this.canvasEvents = CANVAS_EVENTS;
714
- }
715
- initialize() {
716
- this.canvasEvents = this.canvasEvents.filter((x) => typeof this[x] === "function");
717
- this.canvasEvents.forEach((x) => (this[x] = this[x].bind(this)));
718
- this.canvasEvents.forEach((x) => this.subject.on(x, this[x]));
719
- this.getViewer().setEnableAutoSelect(!!this.autoSelect);
708
+ this.pointerdown = this.pointerdown.bind(this);
709
+ this.pointerup = this.pointerup.bind(this);
710
+ this.pointercancel = this.pointercancel.bind(this);
711
+ this.pointermove = this.pointermove.bind(this);
712
+ this.click = this.click.bind(this);
713
+ this.dblclick = this.dblclick.bind(this);
714
+ this.subject.addEventListener("pointerdown", this.pointerdown);
715
+ this.subject.addEventListener("pointerup", this.pointerup);
716
+ this.subject.addEventListener("pointercancel", this.pointercancel);
717
+ this.subject.addEventListener("pointermove", this.pointermove);
718
+ this.subject.addEventListener("click", this.click);
719
+ this.subject.addEventListener("dblclick", this.dblclick);
720
+ this.getViewer().setEnableAutoSelect(false);
720
721
  }
721
722
  dispose() {
722
- this.canvasEvents.forEach((x) => this.subject.off(x, this[x]));
723
+ this.subject.removeEventListener("pointerdown", this.pointerdown);
724
+ this.subject.removeEventListener("pointerup", this.pointerup);
725
+ this.subject.removeEventListener("pointercancel", this.pointercancel);
726
+ this.subject.removeEventListener("pointermove", this.pointermove);
727
+ this.subject.removeEventListener("click", this.click);
728
+ this.subject.removeEventListener("dblclick", this.dblclick);
723
729
  }
724
730
  relativeCoords(event) {
725
731
  return { x: event.offsetX * window.devicePixelRatio, y: event.offsetY * window.devicePixelRatio };
@@ -770,13 +776,13 @@
770
776
  const x = relCoord.x;
771
777
  const y = relCoord.y;
772
778
  const isNotDragging = Math.abs(x - this.mouseDownPosition.x) < CLICK_DELTA && Math.abs(y - this.mouseDownPosition.y) < CLICK_DELTA;
773
- if (viewer && viewer.getEnableAutoSelect() && isNotDragging) {
779
+ if (this.autoSelect && isNotDragging) {
774
780
  viewer.unselect();
775
781
  viewer.select(x, y, x, y);
776
782
  this.subject.update();
777
783
  const selectionSet = viewer.getSelected();
778
- this.onmessage({ type: "select", data: selectionSet, handles: this.subject.getSelected() });
779
- this.onmessage({ type: "select2", data: selectionSet, handles: this.subject.getSelected2() });
784
+ this.subject.emitEvent({ type: "select", data: selectionSet, handles: this.subject.getSelected() });
785
+ this.subject.emitEvent({ type: "select2", data: selectionSet, handles: this.subject.getSelected2() });
780
786
  }
781
787
  }
782
788
  dblclick(ev) {
@@ -791,17 +797,15 @@
791
797
  clickView.delete();
792
798
  this.subject.update();
793
799
  }
794
- else {
795
- if (viewer && viewer.getEnableAutoSelect()) {
796
- const pSelected = viewer.getSelected();
797
- if (!pSelected.isNull() && pSelected.numItems() !== 0) {
798
- const itr = pSelected.getIterator();
799
- const entity = itr.getEntity();
800
- viewer.zoomToEntity(entity);
801
- this.onmessage({ type: "zoomtoentity", data: entity });
802
- this.subject.update();
803
- this.deleteAll([itr, entity]);
804
- }
800
+ else if (this.autoSelect) {
801
+ const pSelected = viewer.getSelected();
802
+ if (!pSelected.isNull() && pSelected.numItems() !== 0) {
803
+ const itr = pSelected.getIterator();
804
+ const entity = itr.getEntity();
805
+ viewer.zoomToEntity(entity);
806
+ this.subject.emitEvent({ type: "zoomtoentity", data: entity });
807
+ this.subject.update();
808
+ this.deleteAll([itr, entity]);
805
809
  }
806
810
  }
807
811
  device.delete();
@@ -821,7 +825,6 @@
821
825
  (_a = obj === null || obj === void 0 ? void 0 : obj.delete) === null || _a === void 0 ? void 0 : _a.call(obj);
822
826
  }
823
827
  }
824
- updatePreview() { }
825
828
  static set isGestureActive(value) {
826
829
  if (OdBaseDragger._isGestureActive === value) {
827
830
  return;
@@ -1199,23 +1202,23 @@
1199
1202
  this.rulerUnit = (_a = subject.options.rulerUnit) !== null && _a !== void 0 ? _a : "Default";
1200
1203
  this.rulerPrecision = (_b = subject.options.rulerPrecision) !== null && _b !== void 0 ? _b : "Default";
1201
1204
  this.items = [];
1202
- this.canvasEvents.push("resize", "optionsChange");
1203
- }
1204
- initialize() {
1205
- super.initialize();
1206
1205
  this.m_overlayElement = document.createElement("div");
1207
1206
  this.m_overlayElement.style.background = "rgba(0,0,0,0)";
1208
1207
  this.m_overlayElement.style.position = "fixed";
1209
1208
  this.m_overlayElement.style.zIndex = "1";
1210
1209
  this.m_overlayElement.style.pointerEvents = "none";
1211
1210
  document.body.appendChild(this.m_overlayElement);
1211
+ this.optionsChange = this.optionsChange.bind(this);
1212
+ this.updatePreview = this.updatePreview.bind(this);
1212
1213
  this.subject.addEventListener("optionschange", this.optionsChange);
1214
+ this.subject.addEventListener("render", this.updatePreview);
1213
1215
  this.resize();
1214
1216
  }
1215
1217
  dispose() {
1216
1218
  super.dispose();
1217
1219
  this.m_overlayElement.remove();
1218
1220
  this.subject.removeEventListener("optionschange", this.optionsChange);
1221
+ this.subject.removeEventListener("render", this.updatePreview);
1219
1222
  }
1220
1223
  updatePreview() {
1221
1224
  this.items.forEach((item) => item.update());
@@ -1556,7 +1559,6 @@
1556
1559
  class OdaWalkDragger extends OdBaseDragger {
1557
1560
  constructor(subject) {
1558
1561
  super(subject);
1559
- this.viewer = undefined;
1560
1562
  this.multiplier = 5;
1561
1563
  this.baseSpeed = 1;
1562
1564
  this.keyPressMap = new Set();
@@ -1571,9 +1573,6 @@
1571
1573
  this.autoSelect = true;
1572
1574
  this.isJoyStickMoving = false;
1573
1575
  this.addJoyStickDragger(subject.canvas.parentElement);
1574
- }
1575
- initialize() {
1576
- super.initialize();
1577
1576
  this.viewer = this.getViewer();
1578
1577
  window.addEventListener("keydown", this.keydown, false);
1579
1578
  window.addEventListener("keyup", this.keyup, false);
@@ -1836,7 +1835,6 @@
1836
1835
  class OdaFlyDragger extends OdBaseDragger {
1837
1836
  constructor(subject) {
1838
1837
  super(subject);
1839
- this.viewer = undefined;
1840
1838
  this.multiplier = 5;
1841
1839
  this.speed = 1;
1842
1840
  this.keyPressMap = new Set();
@@ -1851,9 +1849,6 @@
1851
1849
  this.autoSelect = true;
1852
1850
  this.isJoyStickMoving = false;
1853
1851
  this.addJoyStickDragger(subject.canvas.parentElement);
1854
- }
1855
- initialize() {
1856
- super.initialize();
1857
1852
  this.viewer = this.getViewer();
1858
1853
  window.addEventListener("keydown", this.keydown, false);
1859
1854
  window.addEventListener("keyup", this.keyup, false);
@@ -2292,7 +2287,6 @@
2292
2287
  this._beginInteractivity();
2293
2288
  }
2294
2289
  action(x, y) {
2295
- var _a, _b;
2296
2290
  const view = this.getViewer().activeView;
2297
2291
  const corners = view.vportRect;
2298
2292
  const size = Math.max(Math.abs(corners[2] - corners[0]), Math.abs(corners[3] - corners[1]));
@@ -2322,7 +2316,7 @@
2322
2316
  const extView = this.getViewer().getActiveTvExtendedView();
2323
2317
  extView.setView(viewParams.position, viewParams.target, viewParams.upVector, viewParams.viewFieldWidth, viewParams.viewFieldHeight, viewParams.perspective);
2324
2318
  extView.delete();
2325
- (_b = (_a = this._subject.activeDragger()) === null || _a === void 0 ? void 0 : _a.updatePreview) === null || _b === void 0 ? void 0 : _b.call(_a);
2319
+ this._subject.update();
2326
2320
  this._subject.emitEvent({
2327
2321
  type: "orbit",
2328
2322
  });
@@ -2509,7 +2503,6 @@
2509
2503
  this._beginInteractivity();
2510
2504
  }
2511
2505
  action(x, y, absoluteX, absoluteY) {
2512
- var _a, _b;
2513
2506
  const { Vector3d } = this._m_module;
2514
2507
  const params = this._getViewParams();
2515
2508
  const pt = this.screenToWorld(x, y);
@@ -2526,7 +2519,7 @@
2526
2519
  targetWithDelta.delete();
2527
2520
  position.delete();
2528
2521
  positionWithDelta.delete();
2529
- (_b = (_a = this._subject.activeDragger()) === null || _a === void 0 ? void 0 : _a.updatePreview) === null || _b === void 0 ? void 0 : _b.call(_a);
2522
+ this._subject.update();
2530
2523
  this._subject.emitEvent({
2531
2524
  type: "pan",
2532
2525
  x: absoluteX,
@@ -2575,11 +2568,10 @@
2575
2568
  this._subject = subject;
2576
2569
  }
2577
2570
  action(x, y, zoomFactor, absoluteX, absoluteY) {
2578
- var _a, _b;
2579
2571
  const viewer = this._m_module.getViewer();
2580
2572
  viewer.zoomAt(zoomFactor, x, y);
2581
2573
  this._subject.deviceAutoRegeneration();
2582
- (_b = (_a = this._subject.activeDragger()) === null || _a === void 0 ? void 0 : _a.updatePreview) === null || _b === void 0 ? void 0 : _b.call(_a);
2574
+ this._subject.update();
2583
2575
  this._subject.emitEvent({
2584
2576
  type: "zoomat",
2585
2577
  data: zoomFactor,
@@ -2627,11 +2619,27 @@
2627
2619
  class OdZoomWheelDragger extends OdBaseDragger {
2628
2620
  constructor(subject) {
2629
2621
  super(subject);
2630
- this.canvasEvents = ["wheel"];
2622
+ this.wheel = this.wheel.bind(this);
2623
+ this.subject.addEventListener("wheel", this.wheel);
2631
2624
  this._zoomAction = new ZoomAction(this.m_module, this.subject);
2632
2625
  this._endInteractivityTimeOutId = undefined;
2633
2626
  this._isEnableInteractivityMode = false;
2634
2627
  }
2628
+ dispose() {
2629
+ super.dispose();
2630
+ this.subject.removeEventListener("wheel", this.wheel);
2631
+ if (this._endInteractivityTimeOutId) {
2632
+ clearTimeout(this._endInteractivityTimeOutId);
2633
+ this.endInteractivity();
2634
+ this._isEnableInteractivityMode = false;
2635
+ }
2636
+ }
2637
+ pointerdown() { }
2638
+ pointerup() { }
2639
+ pointercancel() { }
2640
+ pointermove() { }
2641
+ click() { }
2642
+ dblclick() { }
2635
2643
  wheel(event) {
2636
2644
  if (!this.subject.options.enableZoomWheel) {
2637
2645
  return;
@@ -2651,13 +2659,6 @@
2651
2659
  if (this._endInteractivityTimeOutId) {
2652
2660
  clearTimeout(this._endInteractivityTimeOutId);
2653
2661
  }
2654
- if (!this._isEnableInteractivityMode) {
2655
- this._isEnableInteractivityMode = true;
2656
- this.beginInteractivity();
2657
- }
2658
- if (this._endInteractivityTimeOutId) {
2659
- clearTimeout(this._endInteractivityTimeOutId);
2660
- }
2661
2662
  this.subject.update(true);
2662
2663
  this._endInteractivityTimeOutId = setTimeout(() => {
2663
2664
  this._endInteractivityTimeOutId = undefined;
@@ -2666,13 +2667,6 @@
2666
2667
  }, INTERACTIVITY_TIME_OUT);
2667
2668
  }
2668
2669
  }
2669
- dispose() {
2670
- if (this._endInteractivityTimeOutId) {
2671
- clearTimeout(this._endInteractivityTimeOutId);
2672
- this.endInteractivity();
2673
- this._isEnableInteractivityMode = false;
2674
- }
2675
- }
2676
2670
  }
2677
2671
 
2678
2672
  class OdSelectionFrame {
@@ -2892,6 +2886,127 @@
2892
2886
  }
2893
2887
  }
2894
2888
 
2889
+ const MARKUP_ENTITY_LINE = "$MarkupTempEntity_Line";
2890
+ class OdaLineDragger extends OdBaseDragger {
2891
+ constructor(subject) {
2892
+ super(subject);
2893
+ this.press = false;
2894
+ }
2895
+ dispose() {
2896
+ super.dispose();
2897
+ this.end();
2898
+ this.points = null;
2899
+ this.drawPoints = null;
2900
+ }
2901
+ start(x, y) {
2902
+ const point = this.getViewer().screenToWorld(x, y);
2903
+ this.drawPoints = [point[0], point[1], point[2]];
2904
+ }
2905
+ drag(x, y) {
2906
+ if (this.isDragging) {
2907
+ const point = this.getViewer().screenToWorld(x, y);
2908
+ this.drawPoints.push(point[0], point[1], point[2]);
2909
+ this._updateFrame();
2910
+ }
2911
+ }
2912
+ end() {
2913
+ if (this.entity) {
2914
+ this.entity.delete();
2915
+ this.drawPoints = null;
2916
+ this.entity = null;
2917
+ }
2918
+ }
2919
+ _updateFrame() {
2920
+ if (this.entity) {
2921
+ const model = this.getViewer().getMarkupModel();
2922
+ model.removeEntity(this.entity);
2923
+ model.delete();
2924
+ this.entity.delete();
2925
+ }
2926
+ this.entity = this.getActiveMarkupEntity(MARKUP_ENTITY_LINE);
2927
+ const entityPtr = this.entity.openObject();
2928
+ entityPtr.appendPolyline(this.drawPoints).delete();
2929
+ entityPtr.delete();
2930
+ }
2931
+ }
2932
+
2933
+ const MARKUP_ENTITY_TEXT = "$MarkupTempEntity_Text";
2934
+ class OdaTextDragger extends OdBaseDragger {
2935
+ constructor(subject) {
2936
+ super(subject);
2937
+ this.TEXT_HEIGHT_ALIGN = 24;
2938
+ this.press = false;
2939
+ }
2940
+ dispose() {
2941
+ var _a;
2942
+ super.dispose();
2943
+ (_a = this.textRef) === null || _a === void 0 ? void 0 : _a.remove();
2944
+ this.textRef = null;
2945
+ }
2946
+ _finishInput() {
2947
+ var _a;
2948
+ if (this.textRef && this.textRef.value.trimLeft()) {
2949
+ this._updateFrame();
2950
+ }
2951
+ (_a = this.textRef) === null || _a === void 0 ? void 0 : _a.remove();
2952
+ this.textRef = null;
2953
+ }
2954
+ start(x, y, absoluteX, absoluteY) {
2955
+ if (!this.textRef) {
2956
+ this.textRef = document.createElement("textarea");
2957
+ this.textRef.style.zIndex = "9999";
2958
+ this.textRef.style.position = "absolute";
2959
+ this.textRef.style.display = "block";
2960
+ this.textRef.style.top = absoluteY + "px";
2961
+ this.textRef.style.left = absoluteX + "px";
2962
+ this.textRef.onkeypress = (event) => {
2963
+ if (event.key === "Enter") {
2964
+ event.preventDefault();
2965
+ this._finishInput();
2966
+ }
2967
+ };
2968
+ document.body.appendChild(this.textRef);
2969
+ this.press = true;
2970
+ this.m_center = this.screenToWorld(x, y + this.TEXT_HEIGHT_ALIGN);
2971
+ this.needInputText = true;
2972
+ }
2973
+ else {
2974
+ this._finishInput();
2975
+ }
2976
+ }
2977
+ _updateFrame() {
2978
+ this.entity = this.getActiveMarkupEntity(MARKUP_ENTITY_TEXT);
2979
+ const entityPtr = this.entity.openObject();
2980
+ const view = this.getViewer().activeView;
2981
+ const pos = this.toPoint(view.viewPosition);
2982
+ const target = this.toPoint(view.viewTarget);
2983
+ const eyeToWorld = view.eyeToWorldMatrix;
2984
+ const eyeDir = pos.sub(target).asVector();
2985
+ const xDir = this.toVector([1.0, 0.0, 0.0]);
2986
+ const direction = xDir.transformBy(eyeToWorld);
2987
+ const mtrx = this.createMatrix3d();
2988
+ mtrx.setToWorldToPlane(this.toGeVector(eyeDir));
2989
+ direction.transformBy(mtrx);
2990
+ const angel = -Math.atan2(-direction.y, direction.x);
2991
+ const textSize = 0.02;
2992
+ let textScale = 1.0;
2993
+ const projMtrx = view.projectionMatrix;
2994
+ const mtrxNumber = projMtrx.get(1, 1);
2995
+ const tol = 1.0e-6;
2996
+ if (!(mtrxNumber < tol && mtrxNumber > -tol)) {
2997
+ textScale = 1 / mtrxNumber;
2998
+ }
2999
+ const geomData = entityPtr.appendText(this.toGePoint(this.m_center), this.textRef.value.trimLeft());
3000
+ const textPtr = geomData.openAsText();
3001
+ textPtr.setNormal(this.toGeVector(eyeDir));
3002
+ textPtr.setRotation(angel);
3003
+ textPtr.setTextSize(textSize * textScale);
3004
+ textPtr.delete();
3005
+ geomData.delete();
3006
+ entityPtr.delete();
3007
+ }
3008
+ }
3009
+
2895
3010
  const draggers = draggersRegistry("visualizejs");
2896
3011
  draggers.registerDragger("Pan", (viewer) => new OdPanDragger(viewer));
2897
3012
  draggers.registerDragger("Orbit", (viewer) => new OdOrbitDragger(viewer));
@@ -2905,6 +3020,8 @@
2905
3020
  draggers.registerDragger("CuttingPlaneZAxis", (viewer) => new OdCuttingPlaneZAxisDragger(viewer));
2906
3021
  draggers.registerDragger("Walk", (viewer) => new OdaWalkDragger(viewer));
2907
3022
  draggers.registerDragger("Fly", (viewer) => new OdaFlyDragger(viewer));
3023
+ draggers.registerDragger("Line", (viewer) => new OdaLineDragger(viewer));
3024
+ draggers.registerDragger("Text", (viewer) => new OdaTextDragger(viewer));
2908
3025
 
2909
3026
  const composeMatrixFromTransform = (transform, modelCenter, visLib) => {
2910
3027
  const { translate, scale, rotation } = transform;
@@ -3501,10 +3618,8 @@
3501
3618
 
3502
3619
  class ZoomWheelComponent {
3503
3620
  constructor(viewer) {
3504
- this.viewer = viewer;
3505
3621
  this.zoomWheelDragger = new OdZoomWheelDragger(viewer);
3506
3622
  this.zoomWheelDragger.name = "ZoomWheel";
3507
- this.zoomWheelDragger.initialize();
3508
3623
  }
3509
3624
  dispose() {
3510
3625
  this.zoomWheelDragger.dispose();
@@ -3536,6 +3651,12 @@
3536
3651
  this._orbitAction = new OrbitAction(this.m_module, this.subject, this.beginInteractivity, this.endInteractivity);
3537
3652
  this._panAction = new PanAction(this.m_module, this.subject, this.beginInteractivity, this.endInteractivity, this.getViewParams, this.setViewParams);
3538
3653
  this._zoomAction = new ZoomAction(this.m_module, this.subject);
3654
+ this.pointerleave = this.pointerleave.bind(this);
3655
+ this.subject.addEventListener("pointerleave", this.pointerleave);
3656
+ }
3657
+ dispose() {
3658
+ super.dispose();
3659
+ this.subject.removeEventListener("pointerleave", this.pointerleave);
3539
3660
  }
3540
3661
  getMiddlePoint(events) {
3541
3662
  if (events.size !== 2) {
@@ -3692,9 +3813,7 @@
3692
3813
 
3693
3814
  class GestureManagerComponent {
3694
3815
  constructor(viewer) {
3695
- this.viewer = viewer;
3696
3816
  this.gestureManager = new GestureManager(viewer);
3697
- this.gestureManager.initialize();
3698
3817
  }
3699
3818
  dispose() {
3700
3819
  this.gestureManager.dispose();
@@ -17919,127 +18038,6 @@ js: import "konva/skia-backend";
17919
18038
  }
17920
18039
  }
17921
18040
 
17922
- const MARKUP_ENTITY_LINE = "$MarkupTempEntity_Line";
17923
- class OdaLineDragger extends OdBaseDragger {
17924
- constructor(subject) {
17925
- super(subject);
17926
- this.press = false;
17927
- }
17928
- dispose() {
17929
- super.dispose();
17930
- this.end();
17931
- this.points = null;
17932
- this.drawPoints = null;
17933
- }
17934
- start(x, y) {
17935
- const point = this.getViewer().screenToWorld(x, y);
17936
- this.drawPoints = [point[0], point[1], point[2]];
17937
- }
17938
- drag(x, y) {
17939
- if (this.isDragging) {
17940
- const point = this.getViewer().screenToWorld(x, y);
17941
- this.drawPoints.push(point[0], point[1], point[2]);
17942
- this._updateFrame();
17943
- }
17944
- }
17945
- end() {
17946
- if (this.entity) {
17947
- this.entity.delete();
17948
- this.drawPoints = null;
17949
- this.entity = null;
17950
- }
17951
- }
17952
- _updateFrame() {
17953
- if (this.entity) {
17954
- const model = this.getViewer().getMarkupModel();
17955
- model.removeEntity(this.entity);
17956
- model.delete();
17957
- this.entity.delete();
17958
- }
17959
- this.entity = this.getActiveMarkupEntity(MARKUP_ENTITY_LINE);
17960
- const entityPtr = this.entity.openObject();
17961
- entityPtr.appendPolyline(this.drawPoints).delete();
17962
- entityPtr.delete();
17963
- }
17964
- }
17965
-
17966
- const MARKUP_ENTITY_TEXT = "$MarkupTempEntity_Text";
17967
- class OdaTextDragger extends OdBaseDragger {
17968
- constructor(subject) {
17969
- super(subject);
17970
- this.TEXT_HEIGHT_ALIGN = 24;
17971
- this.press = false;
17972
- }
17973
- dispose() {
17974
- var _a;
17975
- super.dispose();
17976
- (_a = this.textRef) === null || _a === void 0 ? void 0 : _a.remove();
17977
- this.textRef = null;
17978
- }
17979
- _finishInput() {
17980
- var _a;
17981
- if (this.textRef && this.textRef.value.trimLeft()) {
17982
- this._updateFrame();
17983
- }
17984
- (_a = this.textRef) === null || _a === void 0 ? void 0 : _a.remove();
17985
- this.textRef = null;
17986
- }
17987
- start(x, y, absoluteX, absoluteY) {
17988
- if (!this.textRef) {
17989
- this.textRef = document.createElement("textarea");
17990
- this.textRef.style.zIndex = "9999";
17991
- this.textRef.style.position = "absolute";
17992
- this.textRef.style.display = "block";
17993
- this.textRef.style.top = absoluteY + "px";
17994
- this.textRef.style.left = absoluteX + "px";
17995
- this.textRef.onkeypress = (event) => {
17996
- if (event.key === "Enter") {
17997
- event.preventDefault();
17998
- this._finishInput();
17999
- }
18000
- };
18001
- document.body.appendChild(this.textRef);
18002
- this.press = true;
18003
- this.m_center = this.screenToWorld(x, y + this.TEXT_HEIGHT_ALIGN);
18004
- this.needInputText = true;
18005
- }
18006
- else {
18007
- this._finishInput();
18008
- }
18009
- }
18010
- _updateFrame() {
18011
- this.entity = this.getActiveMarkupEntity(MARKUP_ENTITY_TEXT);
18012
- const entityPtr = this.entity.openObject();
18013
- const view = this.getViewer().activeView;
18014
- const pos = this.toPoint(view.viewPosition);
18015
- const target = this.toPoint(view.viewTarget);
18016
- const eyeToWorld = view.eyeToWorldMatrix;
18017
- const eyeDir = pos.sub(target).asVector();
18018
- const xDir = this.toVector([1.0, 0.0, 0.0]);
18019
- const direction = xDir.transformBy(eyeToWorld);
18020
- const mtrx = this.createMatrix3d();
18021
- mtrx.setToWorldToPlane(this.toGeVector(eyeDir));
18022
- direction.transformBy(mtrx);
18023
- const angel = -Math.atan2(-direction.y, direction.x);
18024
- const textSize = 0.02;
18025
- let textScale = 1.0;
18026
- const projMtrx = view.projectionMatrix;
18027
- const mtrxNumber = projMtrx.get(1, 1);
18028
- const tol = 1.0e-6;
18029
- if (!(mtrxNumber < tol && mtrxNumber > -tol)) {
18030
- textScale = 1 / mtrxNumber;
18031
- }
18032
- const geomData = entityPtr.appendText(this.toGePoint(this.m_center), this.textRef.value.trimLeft());
18033
- const textPtr = geomData.openAsText();
18034
- textPtr.setNormal(this.toGeVector(eyeDir));
18035
- textPtr.setRotation(angel);
18036
- textPtr.setTextSize(textSize * textScale);
18037
- textPtr.delete();
18038
- geomData.delete();
18039
- entityPtr.delete();
18040
- }
18041
- }
18042
-
18043
18041
  class VisualizeMarkup {
18044
18042
  constructor() {
18045
18043
  this._markupColor = { r: 255, g: 0, b: 0 };
@@ -18048,8 +18046,6 @@ js: import "konva/skia-backend";
18048
18046
  }
18049
18047
  initialize(container, containerEvents, viewer, worldTransformer) {
18050
18048
  this._viewer = viewer;
18051
- this._viewer.registerDragger("Line", OdaLineDragger);
18052
- this._viewer.registerDragger("Text", OdaTextDragger);
18053
18049
  }
18054
18050
  dispose() { }
18055
18051
  syncOverlay() { }
@@ -18088,7 +18084,7 @@ js: import "konva/skia-backend";
18088
18084
  this._viewer.update();
18089
18085
  }
18090
18086
  colorizeSelectedMarkups(r = 255, g = 0, b = 0) {
18091
- throw new Error("Not implemented yet");
18087
+ console.warn("VisualizeMarkup: colorizeSelectedMarkups() not implemented yet");
18092
18088
  }
18093
18089
  setViewpoint(viewpoint) {
18094
18090
  function getLogicalPoint3dAsArray(point3d) {
@@ -18198,19 +18194,28 @@ js: import "konva/skia-backend";
18198
18194
  return ((_a = visLib.canvas) === null || _a === void 0 ? void 0 : _a.toDataURL(type, quality)) || "";
18199
18195
  }
18200
18196
  enableEditMode(mode) {
18197
+ if (mode === "Line" || mode === "Text")
18198
+ this._viewer.setActiveDragger(mode);
18201
18199
  return this;
18202
18200
  }
18203
18201
  createObject(type, params) {
18202
+ console.warn("VisualizeMarkup: createObject() not implemented yet");
18204
18203
  return undefined;
18205
18204
  }
18206
18205
  getObjects() {
18206
+ console.warn("VisualizeMarkup: getObjects() not implemented yet");
18207
18207
  return [];
18208
18208
  }
18209
18209
  getSelectedObjects() {
18210
+ console.warn("VisualizeMarkup: getSelectedObjects() not implemented yet");
18210
18211
  return [];
18211
18212
  }
18212
- selectObjects(objects) { }
18213
- clearSelected() { }
18213
+ selectObjects(objects) {
18214
+ console.warn("VisualizeMarkup: selectObjects() not implemented yet");
18215
+ }
18216
+ clearSelected() {
18217
+ console.warn("VisualizeMarkup: clearSelected() not implemented yet");
18218
+ }
18214
18219
  }
18215
18220
 
18216
18221
  class MarkupFactory {
@@ -18251,7 +18256,7 @@ js: import "konva/skia-backend";
18251
18256
  this._renderNeeded = false;
18252
18257
  this._renderTime = 0;
18253
18258
  this._enableAutoUpdate = (_a = params.enableAutoUpdate) !== null && _a !== void 0 ? _a : true;
18254
- this._isRunAsyncUpdate = false;
18259
+ this._maxRegenTime = 0;
18255
18260
  this.render = this.render.bind(this);
18256
18261
  this.update = this.update.bind(this);
18257
18262
  this._markup = MarkupFactory.createMarkup(params.markupType);
@@ -18357,18 +18362,6 @@ js: import "konva/skia-backend";
18357
18362
  this.emitEvent({ type: "resize", width, height });
18358
18363
  this.update(true);
18359
18364
  }
18360
- resize() {
18361
- console.warn("Viewer.resize() has been deprecated since 26.9 and will be removed in a future release, use Viewer.setSize() instead.");
18362
- if (!this.visualizeJs)
18363
- return this;
18364
- if (!this.canvas.parentElement)
18365
- return this;
18366
- const { width, height } = this.canvas.parentElement.getBoundingClientRect();
18367
- if (!width || !height)
18368
- return this;
18369
- this.setSize(width, height);
18370
- return this;
18371
- }
18372
18365
  update(force = false) {
18373
18366
  const time = performance.now();
18374
18367
  force = force || time - this._renderTime >= this._updateDelay;
@@ -18380,11 +18373,8 @@ js: import "konva/skia-backend";
18380
18373
  this.emitEvent({ type: "update", force });
18381
18374
  }
18382
18375
  render(time) {
18383
- var _a, _b;
18384
18376
  if (!this.visualizeJs)
18385
18377
  return;
18386
- if (this._isRunAsyncUpdate)
18387
- return;
18388
18378
  const renderNeeded = this.visViewer().isRunningAnimation() || this._renderNeeded;
18389
18379
  if (!renderNeeded)
18390
18380
  return;
@@ -18393,8 +18383,7 @@ js: import "konva/skia-backend";
18393
18383
  const deltaTime = (time - this._renderTime) / 1000;
18394
18384
  this._renderTime = time;
18395
18385
  this._renderNeeded = !this.visViewer().getActiveDevice().isValid();
18396
- this.visViewer().update();
18397
- (_b = (_a = this._activeDragger) === null || _a === void 0 ? void 0 : _a.updatePreview) === null || _b === void 0 ? void 0 : _b.call(_a);
18386
+ this.visViewer().update(this._maxRegenTime);
18398
18387
  this.emitEvent({ type: "render", time, deltaTime });
18399
18388
  }
18400
18389
  async loadReferences(model) {
@@ -18412,12 +18401,12 @@ js: import "konva/skia-backend";
18412
18401
  await model
18413
18402
  .getReferences(abortController.signal)
18414
18403
  .then((data) => (references = data.references))
18415
- .catch((e) => console.error("Cannot load model references.", e));
18404
+ .catch((e) => console.error("Viewer: Cannot load model references.", e));
18416
18405
  for (const file of references) {
18417
18406
  await this.client
18418
18407
  .downloadFile(file.id, undefined, abortController.signal)
18419
18408
  .then((arrayBuffer) => { var _a; return (_a = this.visualizeJs) === null || _a === void 0 ? void 0 : _a.getViewer().addEmbeddedFile(file.name, new Uint8Array(arrayBuffer)); })
18420
- .catch((e) => console.error(`Cannot load reference file ${file.name}.`, e));
18409
+ .catch((e) => console.error(`Viewer: Cannot load reference file ${file.name}.`, e));
18421
18410
  }
18422
18411
  return this;
18423
18412
  }
@@ -18478,56 +18467,6 @@ js: import "konva/skia-backend";
18478
18467
  this.update(true);
18479
18468
  return this;
18480
18469
  }
18481
- openVsfFile(buffer) {
18482
- console.warn("Viewer.openVsfFile() has been deprecated since 26.4 and will be removed in a future release, use Viewer.open() instead.");
18483
- if (!this.visualizeJs)
18484
- return this;
18485
- this.cancel();
18486
- this.clear();
18487
- this.emitEvent({ type: "open", mode: "file", file: "", buffer });
18488
- const visViewer = this.visViewer();
18489
- this.emitEvent({ type: "geometrystart", file: "", buffer });
18490
- try {
18491
- const data = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
18492
- visViewer.parseFile(data);
18493
- this.syncOptions();
18494
- this.syncOverlay();
18495
- this.emitEvent({ type: "geometryprogress", data: 1, file: "", buffer });
18496
- this.emitEvent({ type: "databasechunk", data, file: "", buffer });
18497
- }
18498
- catch (error) {
18499
- this.emitEvent({ type: "geometryerror", data: error, file: "", buffer });
18500
- throw error;
18501
- }
18502
- this.emitEvent({ type: "geometryend", file: "", buffer });
18503
- this.update(true);
18504
- return this;
18505
- }
18506
- openVsfxFile(buffer) {
18507
- console.warn("Viewer.openVsfxFile() has been deprecated since 26.4 and will be removed in a future release, use Viewer.open() instead.");
18508
- if (!this.visualizeJs)
18509
- return this;
18510
- this.cancel();
18511
- this.clear();
18512
- this.emitEvent({ type: "open", mode: "file", file: "", buffer });
18513
- const visViewer = this.visViewer();
18514
- this.emitEvent({ type: "geometrystart", file: "", buffer });
18515
- try {
18516
- const data = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
18517
- visViewer.parseVsfx(data);
18518
- this.syncOptions();
18519
- this.syncOverlay();
18520
- this.emitEvent({ type: "geometryprogress", data: 1, file: "", buffer });
18521
- this.emitEvent({ type: "databasechunk", data, file: "", buffer });
18522
- }
18523
- catch (error) {
18524
- this.emitEvent({ type: "geometryerror", data: error, file: "", buffer });
18525
- throw error;
18526
- }
18527
- this.emitEvent({ type: "geometryend", file: "", buffer });
18528
- this.update(true);
18529
- return this;
18530
- }
18531
18470
  cancel() {
18532
18471
  var _a;
18533
18472
  (_a = this._abortControllerForReferences) === null || _a === void 0 ? void 0 : _a.abort();
@@ -18739,15 +18678,10 @@ js: import "konva/skia-backend";
18739
18678
  collect() {
18740
18679
  this.executeCommand("collect");
18741
18680
  }
18742
- registerDragger(name, dragger) {
18743
- console.warn("Viewer.registerDragger() has been deprecated since 25.12 and will be removed in a future release, use draggers('visualizejs').registerDragger() instead.");
18744
- draggers.registerDragger(name, (viewer) => new dragger(viewer));
18745
- }
18746
18681
  activeDragger() {
18747
18682
  return this._activeDragger;
18748
18683
  }
18749
18684
  setActiveDragger(name = "") {
18750
- var _a, _b;
18751
18685
  if (!this._activeDragger || this._activeDragger.name !== name) {
18752
18686
  const oldDragger = this._activeDragger;
18753
18687
  let newDragger = null;
@@ -18757,10 +18691,7 @@ js: import "konva/skia-backend";
18757
18691
  }
18758
18692
  if (this.visualizeJs) {
18759
18693
  newDragger = draggers.createDragger(name, this);
18760
- if (newDragger) {
18761
- this._activeDragger = newDragger;
18762
- (_b = (_a = this._activeDragger).initialize) === null || _b === void 0 ? void 0 : _b.call(_a);
18763
- }
18694
+ this._activeDragger = newDragger;
18764
18695
  }
18765
18696
  const canvas = this.canvas;
18766
18697
  if (canvas) {
@@ -18966,51 +18897,34 @@ js: import "konva/skia-backend";
18966
18897
  const model = visViewer.getMarkupModel();
18967
18898
  const entityId = model.appendEntity(entityName);
18968
18899
  const entityPtr = entityId.openObject();
18969
- const color = this.getMarkupColor();
18900
+ const color = this.markup.getMarkupColor();
18970
18901
  entityPtr.setColor(color.r, color.g, color.b);
18971
18902
  entityPtr.setLineWeight(2);
18972
18903
  entityPtr.delete();
18973
18904
  this.update();
18974
18905
  return entityId;
18975
18906
  }
18976
- getMarkupColor() {
18977
- console.warn("Viewer.getMarkupColor() has been deprecated since 25.11 and will be removed in a future release, use Viewer.markup.getMarkupColor() instead.");
18978
- return this._markup.getMarkupColor();
18979
- }
18980
- setMarkupColor(r = 255, g = 0, b = 0) {
18981
- console.warn("Viewer.setMarkupColor() has been deprecated since 25.11 and will be removed in a future release, use Viewer.markup.setMarkupColor() instead.");
18982
- this._markup.setMarkupColor(r, g, b);
18983
- }
18984
- colorizeAllMarkup(r = 255, g = 0, b = 0) {
18985
- console.warn("Viewer.colorizeAllMarkup() has been deprecated since 25.11 and will be removed in a future release, use Viewer.markup.colorizeAllMarkup() instead.");
18986
- this._markup.colorizeAllMarkup(r, g, b);
18987
- }
18988
- colorizeSelectedMarkups(r = 255, g = 0, b = 0) {
18989
- this._markup.colorizeSelectedMarkups(r, g, b);
18990
- }
18991
18907
  scheduleUpdateAsync(maxScheduleUpdateTimeInMs = 50) {
18992
18908
  return new Promise((resolve, reject) => {
18993
18909
  setTimeout(() => {
18994
- var _a, _b, _c;
18910
+ this._maxRegenTime = maxScheduleUpdateTimeInMs;
18995
18911
  try {
18996
- if (this._enableAutoUpdate) {
18997
- (_a = this.visViewer()) === null || _a === void 0 ? void 0 : _a.update(maxScheduleUpdateTimeInMs);
18998
- (_c = (_b = this._activeDragger) === null || _b === void 0 ? void 0 : _b.updatePreview) === null || _c === void 0 ? void 0 : _c.call(_b);
18999
- }
19000
- this.emitEvent({ type: "update", force: false });
18912
+ this.update(true);
19001
18913
  resolve();
19002
18914
  }
19003
18915
  catch (e) {
19004
- console.error(e);
18916
+ console.error("Viewer: Async update error.", e);
19005
18917
  reject();
19006
18918
  }
18919
+ finally {
18920
+ this._maxRegenTime = 0;
18921
+ }
19007
18922
  }, 0);
19008
18923
  });
19009
18924
  }
19010
18925
  async updateAsync(maxScheduleUpdateTimeInMs = 50, maxScheduleUpdateCount = 50) {
19011
18926
  if (!this.visualizeJs)
19012
18927
  return;
19013
- this._isRunAsyncUpdate = true;
19014
18928
  try {
19015
18929
  const device = this.visViewer().getActiveDevice();
19016
18930
  for (let iterationCount = 0; !device.isValid() && iterationCount < maxScheduleUpdateCount; iterationCount++) {
@@ -19019,10 +18933,7 @@ js: import "konva/skia-backend";
19019
18933
  await this.scheduleUpdateAsync(maxScheduleUpdateTimeInMs);
19020
18934
  }
19021
18935
  catch (e) {
19022
- console.error(e);
19023
- }
19024
- finally {
19025
- this._isRunAsyncUpdate = false;
18936
+ console.error("Viewer: Async update error.", e);
19026
18937
  }
19027
18938
  }
19028
18939
  deviceAutoRegeneration() {