@inweb/viewer-visualize 26.9.1 → 26.9.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.
@@ -14,7 +14,7 @@ class OdaGeAction {
14
14
  var _a;
15
15
  const extView = this.m_module.getViewer().getActiveTvExtendedView();
16
16
  extView.setView(params.position, params.target, params.upVector, params.viewFieldWidth, params.viewFieldHeight, params.perspective);
17
- (_a = extView.delete) === null || _a === undefined ? undefined : _a.call(extView);
17
+ (_a = extView.delete) === null || _a === void 0 ? void 0 : _a.call(extView);
18
18
  };
19
19
  this.getViewParams = () => {
20
20
  var _a;
@@ -27,7 +27,7 @@ class OdaGeAction {
27
27
  viewFieldHeight: view.viewFieldHeight,
28
28
  perspective: view.perspective
29
29
  };
30
- (_a = view.delete) === null || _a === undefined ? undefined : _a.call(view);
30
+ (_a = view.delete) === null || _a === void 0 ? void 0 : _a.call(view);
31
31
  return obj;
32
32
  };
33
33
  this.m_module = module;
@@ -132,13 +132,13 @@ class OdBaseDragger extends OdaGeAction {
132
132
  this.canvasEvents = CANVAS_EVENTS;
133
133
  }
134
134
  initialize() {
135
- this.canvasEvents = this.canvasEvents.filter((x => typeof this[x] === "function"));
136
- this.canvasEvents.forEach((x => this[x] = this[x].bind(this)));
137
- this.canvasEvents.forEach((x => this.subject.on(x, this[x])));
135
+ this.canvasEvents = this.canvasEvents.filter(x => typeof this[x] === "function");
136
+ this.canvasEvents.forEach(x => this[x] = this[x].bind(this));
137
+ this.canvasEvents.forEach(x => this.subject.on(x, this[x]));
138
138
  this.getViewer().setEnableAutoSelect(!!this.autoSelect);
139
139
  }
140
140
  dispose() {
141
- this.canvasEvents.forEach((x => this.subject.off(x, this[x])));
141
+ this.canvasEvents.forEach(x => this.subject.off(x, this[x]));
142
142
  }
143
143
  relativeCoords(event) {
144
144
  return {
@@ -249,7 +249,7 @@ class OdBaseDragger extends OdaGeAction {
249
249
  deleteAll(objects) {
250
250
  var _a;
251
251
  for (const obj of objects) {
252
- (_a = obj === null || obj === undefined ? undefined : obj.delete) === null || _a === undefined ? undefined : _a.call(obj);
252
+ (_a = obj === null || obj === void 0 ? void 0 : obj.delete) === null || _a === void 0 ? void 0 : _a.call(obj);
253
253
  }
254
254
  }
255
255
  updatePreview() {}
@@ -618,7 +618,7 @@ class MeasureLineDragger extends OdBaseDragger {
618
618
  };
619
619
  this.items = [];
620
620
  this.canvasEvents.push("resize");
621
- this.oldRulerUnit = (_a = subject.options.rulerUnit) !== null && _a !== undefined ? _a : "Default";
621
+ this.oldRulerUnit = (_a = subject.options.rulerUnit) !== null && _a !== void 0 ? _a : "Default";
622
622
  this.optionsChange = this.optionsChange.bind(this);
623
623
  }
624
624
  initialize() {
@@ -638,7 +638,7 @@ class MeasureLineDragger extends OdBaseDragger {
638
638
  this.subject.removeEventListener("optionschange", this.optionsChange);
639
639
  }
640
640
  updatePreview() {
641
- this.items.forEach((item => item.update()));
641
+ this.items.forEach(item => item.update());
642
642
  }
643
643
  resize() {
644
644
  const rect = this.m_module.canvas.getBoundingClientRect();
@@ -727,13 +727,13 @@ class MeasureLineDragger extends OdBaseDragger {
727
727
  optionsChange(event) {
728
728
  var _a;
729
729
  const options = event.data;
730
- const toUnitName = (_a = options.rulerUnit) !== null && _a !== undefined ? _a : "Default";
730
+ const toUnitName = (_a = options.rulerUnit) !== null && _a !== void 0 ? _a : "Default";
731
731
  if (this.oldRulerUnit === toUnitName) return;
732
732
  this.oldRulerUnit = toUnitName;
733
733
  const drawingUnit = this.m_module.getViewer().getUnit();
734
734
  const eToUnit = this.getKUnitByName(toUnitName);
735
735
  const eFromUnit = this.getKUnitByName(drawingUnit);
736
- this.items.forEach((item => {
736
+ this.items.forEach(item => {
737
737
  if (toUnitName === "Default") {
738
738
  item.setUnit(renameUnit(this.renameUnitTable, drawingUnit));
739
739
  item.setConversionFactor(1);
@@ -743,7 +743,7 @@ class MeasureLineDragger extends OdBaseDragger {
743
743
  this.conversionFactor = 1 / multiplier;
744
744
  item.setConversionFactor(this.conversionFactor);
745
745
  }
746
- }));
746
+ });
747
747
  }
748
748
  getKUnitByName(unitName) {
749
749
  let eUnit = this.m_module.Units.kUserDefined;
@@ -852,7 +852,7 @@ class OdaWalkDragger extends OdBaseDragger {
852
852
  const model = this.viewer.getActiveModel();
853
853
  model.removeEntity(this.cameraId);
854
854
  model.delete();
855
- (_a = this.cameraWalker) === null || _a === undefined ? undefined : _a.delete();
855
+ (_a = this.cameraWalker) === null || _a === void 0 ? void 0 : _a.delete();
856
856
  }
857
857
  if (this.viewParams) {
858
858
  this.setViewParams(this.viewParams);
@@ -938,6 +938,9 @@ class OdaWalkDragger extends OdBaseDragger {
938
938
  }
939
939
  }
940
940
  this.subject.update();
941
+ this.subject.emitEvent({
942
+ type: "changecamera"
943
+ });
941
944
  }
942
945
  this.lastFrameTS = timestamp;
943
946
  }
@@ -958,6 +961,9 @@ class OdaWalkDragger extends OdBaseDragger {
958
961
  if (dltX !== 0) this.turnLeft(-dltX * this.deltaAngle);
959
962
  if (dltY !== 0) this.cameraWalker.turnDown(dltY * this.deltaAngle);
960
963
  this.subject.update();
964
+ this.subject.emitEvent({
965
+ type: "changecamera"
966
+ });
961
967
  }
962
968
  }
963
969
  turnLeft(angle) {
@@ -1207,7 +1213,13 @@ class OrbitAction {
1207
1213
  const extView = this.getViewer().getActiveTvExtendedView();
1208
1214
  extView.setView(viewParams.position, viewParams.target, viewParams.upVector, viewParams.viewFieldWidth, viewParams.viewFieldHeight, viewParams.perspective);
1209
1215
  extView.delete();
1210
- (_b = (_a = this._subject.activeDragger()) === null || _a === undefined ? undefined : _a.updatePreview) === null || _b === undefined ? undefined : _b.call(_a);
1216
+ (_b = (_a = this._subject.activeDragger()) === null || _a === void 0 ? void 0 : _a.updatePreview) === null || _b === void 0 ? void 0 : _b.call(_a);
1217
+ this._subject.emitEvent({
1218
+ type: "orbit"
1219
+ });
1220
+ this._subject.emitEvent({
1221
+ type: "changecamera"
1222
+ });
1211
1223
  }
1212
1224
  endAction() {
1213
1225
  this._endInteractivity();
@@ -1312,7 +1324,7 @@ class OrbitAction {
1312
1324
  deleteAll(objects) {
1313
1325
  var _a;
1314
1326
  for (const obj of objects) {
1315
- (_a = obj === null || obj === undefined ? undefined : obj.delete) === null || _a === undefined ? undefined : _a.call(obj);
1327
+ (_a = obj === null || obj === void 0 ? void 0 : obj.delete) === null || _a === void 0 ? void 0 : _a.call(obj);
1316
1328
  }
1317
1329
  }
1318
1330
  }
@@ -1379,7 +1391,7 @@ class PanAction {
1379
1391
  targetWithDelta.delete();
1380
1392
  position.delete();
1381
1393
  positionWithDelta.delete();
1382
- (_b = (_a = this._subject.activeDragger()) === null || _a === undefined ? undefined : _a.updatePreview) === null || _b === undefined ? undefined : _b.call(_a);
1394
+ (_b = (_a = this._subject.activeDragger()) === null || _a === void 0 ? void 0 : _a.updatePreview) === null || _b === void 0 ? void 0 : _b.call(_a);
1383
1395
  this._subject.emitEvent({
1384
1396
  type: "pan",
1385
1397
  x: absoluteX,
@@ -1387,6 +1399,9 @@ class PanAction {
1387
1399
  dX: absoluteX - this._deltaScreenPosition.x,
1388
1400
  dY: absoluteY - this._deltaScreenPosition.y
1389
1401
  });
1402
+ this._subject.emitEvent({
1403
+ type: "changecamera"
1404
+ });
1390
1405
  this._deltaScreenPosition = {
1391
1406
  x: absoluteX,
1392
1407
  y: absoluteY
@@ -1432,13 +1447,16 @@ class ZoomAction {
1432
1447
  const viewer = this._m_module.getViewer();
1433
1448
  viewer.zoomAt(zoomFactor, x, y);
1434
1449
  this._subject.deviceAutoRegeneration();
1435
- (_b = (_a = this._subject.activeDragger()) === null || _a === undefined ? undefined : _a.updatePreview) === null || _b === undefined ? undefined : _b.call(_a);
1450
+ (_b = (_a = this._subject.activeDragger()) === null || _a === void 0 ? void 0 : _a.updatePreview) === null || _b === void 0 ? void 0 : _b.call(_a);
1436
1451
  this._subject.emitEvent({
1437
1452
  type: "zoomat",
1438
1453
  data: zoomFactor,
1439
1454
  x: absoluteX,
1440
1455
  y: absoluteY
1441
1456
  });
1457
+ this._subject.emitEvent({
1458
+ type: "changecamera"
1459
+ });
1442
1460
  }
1443
1461
  }
1444
1462
 
@@ -1510,11 +1528,11 @@ class OdZoomWheelDragger extends OdBaseDragger {
1510
1528
  clearTimeout(this._endInteractivityTimeOutId);
1511
1529
  }
1512
1530
  this.subject.update(true);
1513
- this._endInteractivityTimeOutId = setTimeout((() => {
1531
+ this._endInteractivityTimeOutId = setTimeout(() => {
1514
1532
  this._endInteractivityTimeOutId = undefined;
1515
1533
  this.endInteractivity();
1516
1534
  this._isEnableInteractivityMode = false;
1517
- }), INTERACTIVITY_TIME_OUT);
1535
+ }, INTERACTIVITY_TIME_OUT);
1518
1536
  }
1519
1537
  }
1520
1538
  dispose() {
@@ -1743,27 +1761,27 @@ class OrbitAroundBuildingDragger extends OdBaseDragger {
1743
1761
 
1744
1762
  const draggers = draggersRegistry("visualizejs");
1745
1763
 
1746
- draggers.registerDragger("Pan", (viewer => new OdPanDragger(viewer)));
1764
+ draggers.registerDragger("Pan", viewer => new OdPanDragger(viewer));
1747
1765
 
1748
- draggers.registerDragger("Orbit", (viewer => new OdOrbitDragger(viewer)));
1766
+ draggers.registerDragger("Orbit", viewer => new OdOrbitDragger(viewer));
1749
1767
 
1750
- draggers.registerDragger("Zoom", (viewer => new OdZoomDragger(viewer)));
1768
+ draggers.registerDragger("Zoom", viewer => new OdZoomDragger(viewer));
1751
1769
 
1752
- draggers.registerDragger("ZoomWindow", (viewer => new OdZoomWindowDragger(viewer)));
1770
+ draggers.registerDragger("ZoomWindow", viewer => new OdZoomWindowDragger(viewer));
1753
1771
 
1754
- draggers.registerDragger("ZoomWheel", (viewer => new OdZoomWheelDragger(viewer)));
1772
+ draggers.registerDragger("ZoomWheel", viewer => new OdZoomWheelDragger(viewer));
1755
1773
 
1756
- draggers.registerDragger("OrbitAroundBuilding", (viewer => new OrbitAroundBuildingDragger(viewer)));
1774
+ draggers.registerDragger("OrbitAroundBuilding", viewer => new OrbitAroundBuildingDragger(viewer));
1757
1775
 
1758
- draggers.registerDragger("MeasureLine", (viewer => new MeasureLineDragger(viewer)));
1776
+ draggers.registerDragger("MeasureLine", viewer => new MeasureLineDragger(viewer));
1759
1777
 
1760
- draggers.registerDragger("CuttingPlaneXAxis", (viewer => new OdCuttingPlaneXAxisDragger(viewer)));
1778
+ draggers.registerDragger("CuttingPlaneXAxis", viewer => new OdCuttingPlaneXAxisDragger(viewer));
1761
1779
 
1762
- draggers.registerDragger("CuttingPlaneYAxis", (viewer => new OdCuttingPlaneYAxisDragger(viewer)));
1780
+ draggers.registerDragger("CuttingPlaneYAxis", viewer => new OdCuttingPlaneYAxisDragger(viewer));
1763
1781
 
1764
- draggers.registerDragger("CuttingPlaneZAxis", (viewer => new OdCuttingPlaneZAxisDragger(viewer)));
1782
+ draggers.registerDragger("CuttingPlaneZAxis", viewer => new OdCuttingPlaneZAxisDragger(viewer));
1765
1783
 
1766
- draggers.registerDragger("Walk", (viewer => new OdaWalkDragger(viewer)));
1784
+ draggers.registerDragger("Walk", viewer => new OdaWalkDragger(viewer));
1767
1785
 
1768
1786
  const composeMatrixFromTransform = (transform, modelCenter, visLib) => {
1769
1787
  const {translate: translate, scale: scale, rotation: rotation} = transform;
@@ -1781,7 +1799,7 @@ function applyModelTransform(viewer, model) {
1781
1799
  if (!viewer.visualizeJs) return;
1782
1800
  if (!model.getModelTransformMatrix) return;
1783
1801
  const visLib = viewer.visLib();
1784
- const visViewer = visLib.getViewer();
1802
+ const visViewer = viewer.visViewer();
1785
1803
  const modelItr = visViewer.getModelIterator();
1786
1804
  for (;!modelItr.done(); modelItr.step()) {
1787
1805
  const modelPtr = modelItr.getModel();
@@ -1794,7 +1812,7 @@ function applyModelTransform(viewer, model) {
1794
1812
  }
1795
1813
  }
1796
1814
  modelItr.delete();
1797
- (_a = visViewer.clearViewExtentsCache) === null || _a === undefined ? undefined : _a.call(visViewer);
1815
+ (_a = visViewer.clearViewExtentsCache) === null || _a === void 0 ? void 0 : _a.call(visViewer);
1798
1816
  viewer.update();
1799
1817
  }
1800
1818
 
@@ -1821,7 +1839,7 @@ function clearSlices(viewer) {
1821
1839
  function createPreview(viewer, type = "image/jpeg", encoderOptions = .25) {
1822
1840
  var _a;
1823
1841
  if (!viewer.visualizeJs) return "";
1824
- return ((_a = viewer.canvas) === null || _a === undefined ? undefined : _a.toDataURL(type, encoderOptions)) || "";
1842
+ return ((_a = viewer.canvas) === null || _a === void 0 ? void 0 : _a.toDataURL(type, encoderOptions)) || "";
1825
1843
  }
1826
1844
 
1827
1845
  function explode(viewer, index = 0) {
@@ -1843,7 +1861,7 @@ function getDefaultViewPositions(viewer) {
1843
1861
  if (!viewer.visualizeJs) return [];
1844
1862
  const visLib = viewer.visLib();
1845
1863
  const defViewPos = visLib.DefaultViewPosition;
1846
- return Object.keys(defViewPos).filter((x => x !== "values"));
1864
+ return Object.keys(defViewPos).filter(x => x !== "values");
1847
1865
  }
1848
1866
 
1849
1867
  function getModels(viewer) {
@@ -1979,12 +1997,12 @@ function setMarkupColor(viewer, r = 255, g = 0, b = 0) {
1979
1997
  function setSelected(viewer, handles = []) {
1980
1998
  if (!viewer.visualizeJs) return;
1981
1999
  const visLib = viewer.visLib();
1982
- const visViewer = visLib.getViewer();
2000
+ const visViewer = viewer.visViewer();
1983
2001
  const selectionSet = new visLib.OdTvSelectionSet;
1984
- handles === null || handles === undefined ? undefined : handles.forEach((handle => {
2002
+ handles === null || handles === void 0 ? void 0 : handles.forEach(handle => {
1985
2003
  const entityId = visViewer.getEntityByOriginalHandle(handle + "");
1986
2004
  if (!entityId.isNull()) selectionSet.appendEntity(entityId);
1987
- }));
2005
+ });
1988
2006
  visViewer.setSelected(selectionSet);
1989
2007
  viewer.update();
1990
2008
  viewer.emitEvent({
@@ -2026,11 +2044,11 @@ function zoomToObjects(viewer, handles = []) {
2026
2044
  const visLib = viewer.visLib();
2027
2045
  const visViewer = viewer.visViewer();
2028
2046
  const selectionSet = new visLib.OdTvSelectionSet;
2029
- handles.forEach((handle => {
2047
+ handles.forEach(handle => {
2030
2048
  const entityId = visViewer.getEntityByOriginalHandle(handle + "");
2031
2049
  if (!entityId.isNull()) selectionSet.appendEntity(entityId);
2032
- }));
2033
- (_a = visViewer.zoomToObjects) === null || _a === undefined ? undefined : _a.call(visViewer, selectionSet);
2050
+ });
2051
+ (_a = visViewer.zoomToObjects) === null || _a === void 0 ? void 0 : _a.call(visViewer, selectionSet);
2034
2052
  viewer.deviceAutoRegeneration();
2035
2053
  viewer.update();
2036
2054
  viewer.emitEvent({
@@ -2044,7 +2062,7 @@ function zoomToSelected(viewer) {
2044
2062
  if (!viewer.visualizeJs) return;
2045
2063
  const visViewer = viewer.visViewer();
2046
2064
  const selectionSet = visViewer.getSelected();
2047
- (_a = visViewer.zoomToObjects) === null || _a === undefined ? undefined : _a.call(visViewer, selectionSet);
2065
+ (_a = visViewer.zoomToObjects) === null || _a === void 0 ? void 0 : _a.call(visViewer, selectionSet);
2048
2066
  viewer.deviceAutoRegeneration();
2049
2067
  viewer.update();
2050
2068
  viewer.emitEvent({
@@ -2061,7 +2079,7 @@ async function autoTransformAllModelsToCentralPoint(viewer, model) {
2061
2079
  if (!viewer.visualizeJs) return;
2062
2080
  if (!model.getModelTransformMatrix) return;
2063
2081
  const visLib = viewer.visLib();
2064
- const visViewer = visLib.getViewer();
2082
+ const visViewer = viewer.visViewer();
2065
2083
  const viewExt = visViewer.getActiveExtents();
2066
2084
  const centralPoint = viewExt.center();
2067
2085
  const modelItr = visViewer.getModelIterator();
@@ -2102,7 +2120,7 @@ async function autoTransformAllModelsToCentralPoint(viewer, model) {
2102
2120
  modelPtr.delete();
2103
2121
  }
2104
2122
  modelItr.delete();
2105
- (_a = visViewer.clearViewExtentsCache) === null || _a === undefined ? undefined : _a.call(visViewer);
2123
+ (_a = visViewer.clearViewExtentsCache) === null || _a === void 0 ? void 0 : _a.call(visViewer);
2106
2124
  viewer.update();
2107
2125
  }
2108
2126
 
@@ -2156,25 +2174,25 @@ commands.registerCommand("zoomToSelected", zoomToSelected);
2156
2174
 
2157
2175
  commands.registerCommand("autoTransformAllModelsToCentralPoint", autoTransformAllModelsToCentralPoint);
2158
2176
 
2159
- commands.registerCommand("k3DViewTop", (viewer => setDefaultViewPosition(viewer, "k3DViewTop")));
2177
+ commands.registerCommand("k3DViewTop", viewer => setDefaultViewPosition(viewer, "k3DViewTop"));
2160
2178
 
2161
- commands.registerCommand("k3DViewBottom", (viewer => setDefaultViewPosition(viewer, "k3DViewBottom")));
2179
+ commands.registerCommand("k3DViewBottom", viewer => setDefaultViewPosition(viewer, "k3DViewBottom"));
2162
2180
 
2163
- commands.registerCommand("k3DViewLeft", (viewer => setDefaultViewPosition(viewer, "k3DViewLeft")));
2181
+ commands.registerCommand("k3DViewLeft", viewer => setDefaultViewPosition(viewer, "k3DViewLeft"));
2164
2182
 
2165
- commands.registerCommand("k3DViewRight", (viewer => setDefaultViewPosition(viewer, "k3DViewRight")));
2183
+ commands.registerCommand("k3DViewRight", viewer => setDefaultViewPosition(viewer, "k3DViewRight"));
2166
2184
 
2167
- commands.registerCommand("k3DViewFront", (viewer => setDefaultViewPosition(viewer, "k3DViewFront")));
2185
+ commands.registerCommand("k3DViewFront", viewer => setDefaultViewPosition(viewer, "k3DViewFront"));
2168
2186
 
2169
- commands.registerCommand("k3DViewBack", (viewer => setDefaultViewPosition(viewer, "k3DViewBack")));
2187
+ commands.registerCommand("k3DViewBack", viewer => setDefaultViewPosition(viewer, "k3DViewBack"));
2170
2188
 
2171
- commands.registerCommand("k3DViewSE", (viewer => setDefaultViewPosition(viewer, "k3DViewSE")));
2189
+ commands.registerCommand("k3DViewSE", viewer => setDefaultViewPosition(viewer, "k3DViewSE"));
2172
2190
 
2173
- commands.registerCommand("k3DViewSW", (viewer => setDefaultViewPosition(viewer, "k3DViewSW")));
2191
+ commands.registerCommand("k3DViewSW", viewer => setDefaultViewPosition(viewer, "k3DViewSW"));
2174
2192
 
2175
- commands.registerCommand("k3DViewNE", (viewer => setDefaultViewPosition(viewer, "k3DViewNE")));
2193
+ commands.registerCommand("k3DViewNE", viewer => setDefaultViewPosition(viewer, "k3DViewNE"));
2176
2194
 
2177
- commands.registerCommand("k3DViewNW", (viewer => setDefaultViewPosition(viewer, "k3DViewNW")));
2195
+ commands.registerCommand("k3DViewNW", viewer => setDefaultViewPosition(viewer, "k3DViewNW"));
2178
2196
 
2179
2197
  commands.registerCommandAlias("clearMarkup", "clearOverlay");
2180
2198
 
@@ -2202,8 +2220,10 @@ class RenderLoopComponent {
2202
2220
 
2203
2221
  class ResizeCanvasComponent {
2204
2222
  constructor(viewer) {
2205
- this.resizeViewer = () => {
2206
- this.viewer.resize();
2223
+ this.resizeViewer = entries => {
2224
+ const {width: width, height: height} = entries[0].contentRect;
2225
+ if (!width || !height) return;
2226
+ this.viewer.setSize(width, height);
2207
2227
  };
2208
2228
  this.viewer = viewer;
2209
2229
  this.resizeObserver = new ResizeObserver(this.resizeViewer);
@@ -2417,13 +2437,13 @@ class GestureManagerComponent {
2417
2437
 
2418
2438
  const components = componentsRegistry("visualizejs");
2419
2439
 
2420
- components.registerComponent("ResizeCanvasComponent", (viewer => new ResizeCanvasComponent(viewer)));
2440
+ components.registerComponent("ResizeCanvasComponent", viewer => new ResizeCanvasComponent(viewer));
2421
2441
 
2422
- components.registerComponent("RenderLoopComponent", (viewer => new RenderLoopComponent(viewer)));
2442
+ components.registerComponent("RenderLoopComponent", viewer => new RenderLoopComponent(viewer));
2423
2443
 
2424
- components.registerComponent("ZoomWheelComponent", (viewer => new ZoomWheelComponent(viewer)));
2444
+ components.registerComponent("ZoomWheelComponent", viewer => new ZoomWheelComponent(viewer));
2425
2445
 
2426
- components.registerComponent("GestureManagerComponent", (viewer => new GestureManagerComponent(viewer)));
2446
+ components.registerComponent("GestureManagerComponent", viewer => new GestureManagerComponent(viewer));
2427
2447
 
2428
2448
  class FileLoader {
2429
2449
  constructor() {
@@ -2447,7 +2467,7 @@ class FileLoader {
2447
2467
  credentials: this.withCredentials ? "include" : "same-origin",
2448
2468
  signal: this.abortSignal
2449
2469
  });
2450
- return fetch(request).then((response => {
2470
+ return fetch(request).then(response => {
2451
2471
  if (!response.ok) throw new Error(`Failed to fetch "${response.url}", status ${response.status}`);
2452
2472
  const contentLength = response.headers.get("X-File-Size") || response.headers.get("Content-Length");
2453
2473
  const total = parseInt(contentLength || "", 10) || 0;
@@ -2477,16 +2497,16 @@ class FileLoader {
2477
2497
  }
2478
2498
  });
2479
2499
  return new Response(stream);
2480
- })).then((response => response.arrayBuffer()));
2500
+ }).then(response => response.arrayBuffer());
2481
2501
  }
2482
2502
  if (file instanceof globalThis.File) {
2483
- return new Promise(((resolve, reject) => {
2503
+ return new Promise((resolve, reject) => {
2484
2504
  const reader = new FileReader;
2485
2505
  reader.onload = () => resolve(reader.result);
2486
2506
  reader.onerror = () => reject(reader.error);
2487
2507
  reader.onprogress = onProgress;
2488
2508
  reader.readAsArrayBuffer(new Blob([ file ]));
2489
- }));
2509
+ });
2490
2510
  }
2491
2511
  if (onProgress) {
2492
2512
  const total = file.byteLength;
@@ -2512,6 +2532,7 @@ class VSFFileLoader extends Loader {
2512
2532
  }
2513
2533
  async load(file, format, params) {
2514
2534
  if (!this.viewer.visualizeJs) return this;
2535
+ const visViewer = this.viewer.visViewer();
2515
2536
  const progress = event => {
2516
2537
  const {lengthComputable: lengthComputable, loaded: loaded, total: total} = event;
2517
2538
  const progress = lengthComputable ? loaded / total : 1;
@@ -2525,15 +2546,18 @@ class VSFFileLoader extends Loader {
2525
2546
  loader.setRequestHeader(params.requestHeader);
2526
2547
  loader.setWithCredentials(params.withCredentials);
2527
2548
  loader.setAbortSignal(this.abortController.signal);
2528
- const buffer = await loader.load(file, progress);
2529
- const data = new Uint8Array(buffer);
2530
- const visLib = this.viewer.visLib();
2531
- const visViewer = visLib.getViewer();
2532
- visViewer.parseFile(data);
2533
- this.viewer.syncOpenCloudVisualStyle(false);
2549
+ const arrayBuffer = await loader.load(file, progress);
2550
+ const data = new Uint8Array(arrayBuffer);
2551
+ if (!this.viewer.visualizeJs) return this;
2552
+ try {
2553
+ visViewer.parseFile(data);
2554
+ } catch (error) {
2555
+ console.error("VSF parse error.", error);
2556
+ throw error;
2557
+ }
2534
2558
  this.viewer.syncOptions();
2535
2559
  this.viewer.syncOverlay();
2536
- this.viewer.resize();
2560
+ this.viewer.update(true);
2537
2561
  this.viewer.emitEvent({
2538
2562
  type: "databasechunk",
2539
2563
  data: data,
@@ -2553,8 +2577,7 @@ class VSFCloudLoader extends Loader {
2553
2577
  }
2554
2578
  async load(model, format) {
2555
2579
  if (!this.viewer.visualizeJs) return this;
2556
- const visLib = this.viewer.visLib();
2557
- const visViewer = visLib.getViewer();
2580
+ const visViewer = this.viewer.visViewer();
2558
2581
  const filesToDownload = [ model.database, ...model.geometry ];
2559
2582
  console.time("File load time");
2560
2583
  for (let i = 0; i < filesToDownload.length; i++) {
@@ -2569,15 +2592,18 @@ class VSFCloudLoader extends Loader {
2569
2592
  });
2570
2593
  };
2571
2594
  const arrayBuffer = await model.downloadResource(dataId, progress, this.abortController.signal);
2572
- if (!this.viewer.visualizeJs) return this;
2573
2595
  const data = new Uint8Array(arrayBuffer);
2574
- visViewer.parseStream(data);
2596
+ if (!this.viewer.visualizeJs) return this;
2597
+ try {
2598
+ visViewer.parseStream(data);
2599
+ } catch (error) {
2600
+ console.error("VSF parse error.", error);
2601
+ throw error;
2602
+ }
2575
2603
  if (i === 0) {
2576
- this.viewer.update(true);
2577
- this.viewer.syncOpenCloudVisualStyle(false);
2578
2604
  this.viewer.syncOptions();
2579
2605
  this.viewer.syncOverlay();
2580
- this.viewer.resize();
2606
+ this.viewer.update(true);
2581
2607
  this.viewer.emitEvent({
2582
2608
  type: "databasechunk",
2583
2609
  data: data,
@@ -2609,6 +2635,7 @@ class VSFXFileLoader extends Loader {
2609
2635
  }
2610
2636
  async load(file, format, params) {
2611
2637
  if (!this.viewer.visualizeJs) return this;
2638
+ const visViewer = this.viewer.visViewer();
2612
2639
  const progress = event => {
2613
2640
  const {lengthComputable: lengthComputable, loaded: loaded, total: total} = event;
2614
2641
  const progress = lengthComputable ? loaded / total : 1;
@@ -2622,15 +2649,18 @@ class VSFXFileLoader extends Loader {
2622
2649
  loader.setRequestHeader(params.requestHeader);
2623
2650
  loader.setWithCredentials(params.withCredentials);
2624
2651
  loader.setAbortSignal(this.abortController.signal);
2625
- const buffer = await loader.load(file, progress);
2626
- const data = new Uint8Array(buffer);
2627
- const visLib = this.viewer.visLib();
2628
- const visViewer = visLib.getViewer();
2629
- visViewer.parseVsfx(data);
2630
- this.viewer.syncOpenCloudVisualStyle(false);
2652
+ const arrayBuffer = await loader.load(file, progress);
2653
+ const data = new Uint8Array(arrayBuffer);
2654
+ if (!this.viewer.visualizeJs) return this;
2655
+ try {
2656
+ visViewer.parseVsfx(data);
2657
+ } catch (error) {
2658
+ console.error("VSFX parse error.", error);
2659
+ throw error;
2660
+ }
2631
2661
  this.viewer.syncOptions();
2632
2662
  this.viewer.syncOverlay();
2633
- this.viewer.resize();
2663
+ this.viewer.update(true);
2634
2664
  this.viewer.emitEvent({
2635
2665
  type: "databasechunk",
2636
2666
  data: data,
@@ -2650,8 +2680,7 @@ class VSFXCloudLoader extends Loader {
2650
2680
  }
2651
2681
  async load(model, format, params = {}) {
2652
2682
  if (!this.viewer.visualizeJs) return Promise.resolve(this);
2653
- const visLib = this.viewer.visLib();
2654
- const visViewer = visLib.getViewer();
2683
+ const visViewer = this.viewer.visViewer();
2655
2684
  const progress = progress => {
2656
2685
  this.viewer.emitEvent({
2657
2686
  type: "geometryprogress",
@@ -2662,18 +2691,17 @@ class VSFXCloudLoader extends Loader {
2662
2691
  };
2663
2692
  console.time("File load time");
2664
2693
  const arrayBuffer = await model.downloadResource(model.database, progress, this.abortController.signal);
2665
- if (!this.viewer.visualizeJs) return this;
2666
2694
  const data = new Uint8Array(arrayBuffer);
2695
+ if (!this.viewer.visualizeJs) return this;
2667
2696
  try {
2668
2697
  visViewer.parseVsfx(data);
2669
2698
  } catch (error) {
2670
2699
  console.error("VSFX parse error.", error);
2671
2700
  throw error;
2672
2701
  }
2673
- this.viewer.syncOpenCloudVisualStyle(false);
2674
2702
  this.viewer.syncOptions();
2675
2703
  this.viewer.syncOverlay();
2676
- this.viewer.resize();
2704
+ this.viewer.update(true);
2677
2705
  this.viewer.emitEvent({
2678
2706
  type: "databasechunk",
2679
2707
  data: data,
@@ -2728,7 +2756,7 @@ class VSFXCloudStreamingLoader extends Loader {
2728
2756
  async load(model) {
2729
2757
  if (!this.viewer.visualizeJs) return this;
2730
2758
  const visLib = this.viewer.visLib();
2731
- const visViewer = visLib.getViewer();
2759
+ const visViewer = this.viewer.visViewer();
2732
2760
  const updateController = new UpdateController;
2733
2761
  updateController.initialize(this.viewer);
2734
2762
  let isFireDatabaseChunk = false;
@@ -2741,24 +2769,21 @@ class VSFXCloudStreamingLoader extends Loader {
2741
2769
  console.error("VSFX parse error.", error);
2742
2770
  throw error;
2743
2771
  }
2744
- updateController.update(UpdateType.kDelay);
2745
2772
  this.viewer.emitEvent({
2746
2773
  type: "geometryprogress",
2747
2774
  data: progress,
2748
2775
  file: model.file,
2749
2776
  model: model
2750
2777
  });
2751
- let state = false;
2778
+ let isDatabaseChunk = false;
2752
2779
  if (status === visLib.DatabaseStreamStatus.ReadyServiceData || status === visLib.DatabaseStreamStatus.Complete && !isFireDatabaseChunk) {
2753
2780
  isFireDatabaseChunk = true;
2754
- state = true;
2781
+ isDatabaseChunk = true;
2755
2782
  }
2756
- if (state) {
2757
- updateController.update(UpdateType.kForce);
2758
- this.viewer.syncOpenCloudVisualStyle(false);
2783
+ if (isDatabaseChunk) {
2759
2784
  this.viewer.syncOptions();
2760
2785
  this.viewer.syncOverlay();
2761
- this.viewer.resize();
2786
+ updateController.update(UpdateType.kForce);
2762
2787
  this.viewer.emitEvent({
2763
2788
  type: "databasechunk",
2764
2789
  data: chunk,
@@ -2766,6 +2791,7 @@ class VSFXCloudStreamingLoader extends Loader {
2766
2791
  model: model
2767
2792
  });
2768
2793
  } else {
2794
+ updateController.update(UpdateType.kDelay);
2769
2795
  this.viewer.emitEvent({
2770
2796
  type: "geometrychunk",
2771
2797
  data: chunk,
@@ -2797,8 +2823,7 @@ class VSFXCloudPartialLoader extends Loader {
2797
2823
  }
2798
2824
  async load(model, format) {
2799
2825
  if (!this.viewer.visualizeJs) return this;
2800
- const visLib = this.viewer.visLib();
2801
- const visViewer = visLib.getViewer();
2826
+ const visViewer = this.viewer.visViewer();
2802
2827
  let servicePartAborted = false;
2803
2828
  const pendingRequestsMap = new Map;
2804
2829
  let pendingRequestsTimerId = 0;
@@ -2810,26 +2835,23 @@ class VSFXCloudPartialLoader extends Loader {
2810
2835
  visViewer.memoryLimit = this.viewer.options.memoryLimit;
2811
2836
  const chunkLoadHandler = (progress, chunk, requestId = 0) => {
2812
2837
  if (!this.viewer.visualizeJs) return;
2813
- let state;
2838
+ let isDatabaseChunk;
2814
2839
  try {
2815
- state = visViewer.parseVsfxInPartialMode(requestId, chunk);
2840
+ isDatabaseChunk = visViewer.parseVsfxInPartialMode(requestId, chunk);
2816
2841
  } catch (error) {
2817
2842
  console.error("VSFX parse error.", error);
2818
2843
  throw error;
2819
2844
  }
2820
- updateController.update(UpdateType.kDelay);
2821
2845
  this.viewer.emitEvent({
2822
2846
  type: "geometryprogress",
2823
2847
  data: progress,
2824
2848
  file: model.file,
2825
2849
  model: model
2826
2850
  });
2827
- if (state) {
2828
- updateController.update(UpdateType.kForce);
2829
- this.viewer.syncOpenCloudVisualStyle(false);
2851
+ if (isDatabaseChunk) {
2830
2852
  this.viewer.syncOptions();
2831
2853
  this.viewer.syncOverlay();
2832
- this.viewer.resize();
2854
+ updateController.update(UpdateType.kForce);
2833
2855
  this.viewer.emitEvent({
2834
2856
  type: "databasechunk",
2835
2857
  data: chunk,
@@ -2837,6 +2859,7 @@ class VSFXCloudPartialLoader extends Loader {
2837
2859
  model: model
2838
2860
  });
2839
2861
  } else {
2862
+ updateController.update(UpdateType.kDelay);
2840
2863
  this.viewer.emitEvent({
2841
2864
  type: "geometrychunk",
2842
2865
  data: chunk,
@@ -2858,7 +2881,7 @@ class VSFXCloudPartialLoader extends Loader {
2858
2881
  model: model
2859
2882
  });
2860
2883
  } finally {
2861
- ranges.forEach((range => visViewer.onRequestResponseComplete(range.requestId)));
2884
+ ranges.forEach(range => visViewer.onRequestResponseComplete(range.requestId));
2862
2885
  this.abortControllerForRequestMap.delete(requestId);
2863
2886
  updateController.update(UpdateType.kNormal);
2864
2887
  }
@@ -2934,10 +2957,10 @@ class VSFXCloudPartialLoader extends Loader {
2934
2957
  number: requestNumber + 1
2935
2958
  });
2936
2959
  if (pendingRequestsTimerId === 0) {
2937
- pendingRequestsTimerId = window.setTimeout((() => {
2960
+ pendingRequestsTimerId = window.setTimeout(() => {
2938
2961
  pendingRequestsAbortController.signal.removeEventListener("abort", pendingRequestsAbortHandler);
2939
2962
  pendingRequestsTimerId = 0;
2940
- pendingRequestsMap.forEach(((request, dataId) => {
2963
+ pendingRequestsMap.forEach((request, dataId) => {
2941
2964
  if (request.ranges.length > 0) {
2942
2965
  pendingRequestsMap.set(dataId, {
2943
2966
  ranges: [],
@@ -2945,8 +2968,8 @@ class VSFXCloudPartialLoader extends Loader {
2945
2968
  });
2946
2969
  downloadResourceRange(dataId, requestId, request.ranges);
2947
2970
  }
2948
- }));
2949
- }), PENDING_REQUESTS_TIMEOUT);
2971
+ });
2972
+ }, PENDING_REQUESTS_TIMEOUT);
2950
2973
  pendingRequestsAbortController.signal.addEventListener("abort", pendingRequestsAbortHandler, {
2951
2974
  once: true
2952
2975
  });
@@ -2964,26 +2987,26 @@ class VSFXCloudPartialLoader extends Loader {
2964
2987
  }
2965
2988
  cancel() {
2966
2989
  super.cancel();
2967
- this.abortControllerForRequestMap.forEach((controller => controller.abort()));
2990
+ this.abortControllerForRequestMap.forEach(controller => controller.abort());
2968
2991
  }
2969
2992
  }
2970
2993
 
2971
2994
  const loaders = loadersRegistry("visualizejs");
2972
2995
 
2973
- loaders.registerLoader("vsf-file", (viewer => new VSFFileLoader(viewer)));
2996
+ loaders.registerLoader("vsf-file", viewer => new VSFFileLoader(viewer));
2974
2997
 
2975
- loaders.registerLoader("vsf-cloud", (viewer => new VSFCloudLoader(viewer)));
2998
+ loaders.registerLoader("vsf-cloud", viewer => new VSFCloudLoader(viewer));
2976
2999
 
2977
- loaders.registerLoader("vsfx-file", (viewer => new VSFXFileLoader(viewer)));
3000
+ loaders.registerLoader("vsfx-file", viewer => new VSFXFileLoader(viewer));
2978
3001
 
2979
- loaders.registerLoader("vsfx-cloud", (viewer => new VSFXCloudLoader(viewer)));
3002
+ loaders.registerLoader("vsfx-cloud", viewer => new VSFXCloudLoader(viewer));
2980
3003
 
2981
- loaders.registerLoader("vsfx-cloud-streaming", (viewer => new VSFXCloudStreamingLoader(viewer)));
3004
+ loaders.registerLoader("vsfx-cloud-streaming", viewer => new VSFXCloudStreamingLoader(viewer));
2982
3005
 
2983
- loaders.registerLoader("vsfx-cloud-partial", (viewer => new VSFXCloudPartialLoader(viewer)));
3006
+ loaders.registerLoader("vsfx-cloud-partial", viewer => new VSFXCloudPartialLoader(viewer));
2984
3007
 
2985
3008
  function loadScript(url, params = {}) {
2986
- return new Promise(((resolve, reject) => {
3009
+ return new Promise((resolve, reject) => {
2987
3010
  const script = document.createElement("script");
2988
3011
  script.src = url;
2989
3012
  script.async = true;
@@ -2994,7 +3017,7 @@ function loadScript(url, params = {}) {
2994
3017
  reject(new Error(`GET ${url} failed to load script`));
2995
3018
  };
2996
3019
  document.body.appendChild(script);
2997
- }));
3020
+ });
2998
3021
  }
2999
3022
 
3000
3023
  function loadVisuazlizeJsScript(url, params) {
@@ -3011,7 +3034,7 @@ function loadVisuazlizeJsScript(url, params) {
3011
3034
 
3012
3035
  const loadVisualizeJs = async (url, onprogress, params = {}) => {
3013
3036
  const script = await loadVisuazlizeJsScript(url, params);
3014
- return await new Promise(((resolve, reject) => {
3037
+ return await new Promise((resolve, reject) => {
3015
3038
  const options = {
3016
3039
  urlMemFile: url + ".wasm",
3017
3040
  TOTAL_MEMORY: 134217728,
@@ -3019,11 +3042,11 @@ const loadVisualizeJs = async (url, onprogress, params = {}) => {
3019
3042
  };
3020
3043
  const instance = window["getVisualizeLibInst"](options);
3021
3044
  instance.loadWasmError = reject;
3022
- instance.postRun.push((() => {
3045
+ instance.postRun.push(() => {
3023
3046
  window["getVisualizeLibInst"].script = script;
3024
3047
  resolve(instance);
3025
- }));
3026
- }));
3048
+ });
3049
+ });
3027
3050
  };
3028
3051
 
3029
3052
  const MARKUP_ENTITY_LINE = "$MarkupTempEntity_Line";
@@ -3082,7 +3105,7 @@ class OdaTextDragger extends OdBaseDragger {
3082
3105
  dispose() {
3083
3106
  var _a;
3084
3107
  super.dispose();
3085
- (_a = this.textRef) === null || _a === undefined ? undefined : _a.remove();
3108
+ (_a = this.textRef) === null || _a === void 0 ? void 0 : _a.remove();
3086
3109
  this.textRef = null;
3087
3110
  }
3088
3111
  _finishInput() {
@@ -3090,7 +3113,7 @@ class OdaTextDragger extends OdBaseDragger {
3090
3113
  if (this.textRef && this.textRef.value.trimLeft()) {
3091
3114
  this._updateFrame();
3092
3115
  }
3093
- (_a = this.textRef) === null || _a === undefined ? undefined : _a.remove();
3116
+ (_a = this.textRef) === null || _a === void 0 ? void 0 : _a.remove();
3094
3117
  this.textRef = null;
3095
3118
  }
3096
3119
  start(x, y, absoluteX, absoluteY) {
@@ -3134,7 +3157,7 @@ class OdaTextDragger extends OdBaseDragger {
3134
3157
  const projMtrx = view.projectionMatrix;
3135
3158
  const mtrxNumber = projMtrx.get(1, 1);
3136
3159
  const tol = 1e-6;
3137
- if (!(mtrxNumber < tol && mtrxNumber > -1e-6)) {
3160
+ if (!(mtrxNumber < tol && mtrxNumber > -tol)) {
3138
3161
  textScale = 1 / mtrxNumber;
3139
3162
  }
3140
3163
  const geomData = entityPtr.appendText(this.toGePoint(this.m_center), this.textRef.value.trimLeft());
@@ -3216,7 +3239,7 @@ class VisualizeMarkup {
3216
3239
  }
3217
3240
  if (!this._viewer.visualizeJs) return;
3218
3241
  const visLib = this._viewer.visLib();
3219
- const visViewer = visLib.getViewer();
3242
+ const visViewer = this._viewer.visViewer();
3220
3243
  const activeView = visViewer.activeView;
3221
3244
  this._viewer.syncOverlay();
3222
3245
  const markupColor = viewpoint.custom_fields.markup_color || {
@@ -3267,7 +3290,7 @@ class VisualizeMarkup {
3267
3290
  };
3268
3291
  }
3269
3292
  const visLib = this._viewer.visLib();
3270
- const visViewer = visLib.getViewer();
3293
+ const visViewer = this._viewer.visViewer();
3271
3294
  if (!viewpoint) viewpoint = {};
3272
3295
  viewpoint.lines = [];
3273
3296
  viewpoint.texts = [];
@@ -3370,8 +3393,8 @@ class Viewer extends EventEmitter2 {
3370
3393
  this._renderTime = 0;
3371
3394
  this.canvasEvents = CANVAS_EVENTS.slice();
3372
3395
  this.canvaseventlistener = event => this.emit(event);
3373
- this._enableAutoUpdate = (_a = params.enableAutoUpdate) !== null && _a !== undefined ? _a : true;
3374
- this._isNeedRender = false;
3396
+ this._enableAutoUpdate = (_a = params.enableAutoUpdate) !== null && _a !== void 0 ? _a : true;
3397
+ this._renderNeeded = false;
3375
3398
  this._isRunAsyncUpdate = false;
3376
3399
  this.render = this.render.bind(this);
3377
3400
  this.update = this.update.bind(this);
@@ -3392,18 +3415,19 @@ class Viewer extends EventEmitter2 {
3392
3415
  return this;
3393
3416
  }
3394
3417
  async initialize(canvas, onProgress) {
3395
- this.addEventListener("optionschange", (event => this.syncOptions(event.data)));
3396
- if (canvas.style.width === "" && canvas.style.height === "") {
3397
- canvas.style.width = "100%";
3398
- canvas.style.height = "100%";
3399
- }
3418
+ this.addEventListener("optionschange", event => this.syncOptions(event.data));
3419
+ const rect = canvas.parentElement.getBoundingClientRect();
3420
+ const width = rect.width || 1;
3421
+ const height = rect.height || 1;
3422
+ canvas.width = Math.round(width * window.devicePixelRatio);
3423
+ canvas.height = Math.round(height * window.devicePixelRatio);
3424
+ canvas.style.width = width + "px";
3425
+ canvas.style.height = height + "px";
3400
3426
  canvas.parentElement.style.touchAction = "none";
3401
3427
  canvas.style.touchAction = "none";
3402
- canvas.width = canvas.clientWidth * window.devicePixelRatio;
3403
- canvas.height = canvas.clientHeight * window.devicePixelRatio;
3404
3428
  this._visualizeTimestamp = Date.now();
3405
3429
  const visualizeTimestamp = this._visualizeTimestamp;
3406
- const visualizeJs = await loadVisualizeJs(this.visualizeJsUrl, (event => {
3430
+ const visualizeJs = await loadVisualizeJs(this.visualizeJsUrl, event => {
3407
3431
  const {loaded: loaded, total: total} = event;
3408
3432
  if (onProgress) onProgress(new ProgressEvent("progress", {
3409
3433
  lengthComputable: true,
@@ -3416,21 +3440,20 @@ class Viewer extends EventEmitter2 {
3416
3440
  loaded: loaded,
3417
3441
  total: total
3418
3442
  });
3419
- }), {
3443
+ }, {
3420
3444
  crossOrigin: this._crossOrigin
3421
3445
  });
3422
3446
  if (visualizeTimestamp !== this._visualizeTimestamp) throw new Error("Viewer error: dispose() was called before initialize() completed. Are you using React strict mode?");
3423
3447
  this._visualizeJs = visualizeJs;
3424
- this.visualizeJs.canvas = canvas;
3425
- this.visualizeJs.Viewer.create();
3426
- this.visualizeJs.getViewer().resize(0, canvas.width, canvas.height, 0);
3448
+ this._visualizeJs.canvas = canvas;
3449
+ this._viewer = visualizeJs.Viewer.create();
3450
+ this._viewer.resize(0, canvas.width, canvas.height, 0);
3427
3451
  this.canvas = canvas;
3428
- this.canvasEvents.forEach((x => canvas.addEventListener(x, this.canvaseventlistener)));
3452
+ this.canvasEvents.forEach(x => canvas.addEventListener(x, this.canvaseventlistener));
3429
3453
  this._markup.initialize(this.canvas, this.canvasEvents, this, this);
3430
3454
  for (const name of components.getComponents().keys()) {
3431
3455
  this._components.push(components.createComponent(name, this));
3432
3456
  }
3433
- this.syncOpenCloudVisualStyle(true);
3434
3457
  this.syncOptions();
3435
3458
  this.syncOverlay();
3436
3459
  this._renderTime = performance.now();
@@ -3448,64 +3471,69 @@ class Viewer extends EventEmitter2 {
3448
3471
  });
3449
3472
  this.removeAllListeners();
3450
3473
  this.setActiveDragger();
3451
- this._components.forEach((component => component.dispose()));
3474
+ this._components.forEach(component => component.dispose());
3452
3475
  this._components = [];
3453
3476
  this._markup.dispose();
3454
3477
  if (this.canvas) {
3455
- this.canvasEvents.forEach((x => this.canvas.removeEventListener(x, this.canvaseventlistener)));
3478
+ this.canvasEvents.forEach(x => this.canvas.removeEventListener(x, this.canvaseventlistener));
3456
3479
  this.canvas = undefined;
3457
3480
  }
3458
- if (this._visualizeJs) this._visualizeJs.getViewer().clear();
3481
+ if (this._viewer) this._viewer.clear();
3459
3482
  this._visualizeJs = undefined;
3460
3483
  this._visualizeTimestamp = undefined;
3484
+ this._viewer = undefined;
3461
3485
  return this;
3462
3486
  }
3463
3487
  isInitialized() {
3464
3488
  return !!this.visualizeJs;
3465
3489
  }
3490
+ setSize(width, height, updateStyle = true) {
3491
+ if (!this.visualizeJs) return;
3492
+ this.canvas.width = Math.round(width * window.devicePixelRatio);
3493
+ this.canvas.height = Math.round(height * window.devicePixelRatio);
3494
+ if (updateStyle) {
3495
+ this.canvas.style.width = width + "px";
3496
+ this.canvas.style.height = height + "px";
3497
+ }
3498
+ this._viewer.resize(0, this.canvas.width, this.canvas.height, 0);
3499
+ this.update(true);
3500
+ this.emitEvent({
3501
+ type: "resize",
3502
+ width: width,
3503
+ height: height
3504
+ });
3505
+ }
3466
3506
  render(time) {
3467
3507
  var _a, _b;
3468
3508
  if (!this.visualizeJs) return;
3469
3509
  if (this._isRunAsyncUpdate) return;
3470
- const visViewer = this.visualizeJs.getViewer();
3471
- if (visViewer.isRunningAnimation() || this._isNeedRender) {
3472
- visViewer.update();
3473
- (_b = (_a = this._activeDragger) === null || _a === undefined ? undefined : _a.updatePreview) === null || _b === undefined ? undefined : _b.call(_a);
3474
- this._isNeedRender = !visViewer.getActiveDevice().isValid();
3475
- const deltaTime = (time - this._renderTime) / 1e3;
3476
- this._renderTime = time;
3477
- this.emitEvent({
3478
- type: "render",
3479
- time: time,
3480
- deltaTime: deltaTime
3481
- });
3482
- }
3510
+ const renderNeeded = this.visViewer().isRunningAnimation() || this._renderNeeded;
3511
+ if (!renderNeeded) return;
3512
+ if (!time) time = performance.now();
3513
+ const deltaTime = (time - this._renderTime) / 1e3;
3514
+ this._renderTime = time;
3515
+ this._renderNeeded = !this.visViewer().getActiveDevice().isValid();
3516
+ this.visViewer().update();
3517
+ (_b = (_a = this._activeDragger) === null || _a === void 0 ? void 0 : _a.updatePreview) === null || _b === void 0 ? void 0 : _b.call(_a);
3518
+ this.emitEvent({
3519
+ type: "render",
3520
+ time: time,
3521
+ deltaTime: deltaTime
3522
+ });
3483
3523
  }
3484
3524
  resize() {
3525
+ console.warn("Viewer.resize() has been deprecated since 26.9 and will be removed in a future release, use Viewer.setSize() instead.");
3485
3526
  if (!this.visualizeJs) return this;
3486
- const {clientWidth: clientWidth, clientHeight: clientHeight} = this.canvas;
3487
- if (!clientWidth || !clientHeight) return this;
3488
- this.canvas.width = clientWidth * window.devicePixelRatio;
3489
- this.canvas.height = clientHeight * window.devicePixelRatio;
3490
- const visViewer = this.visualizeJs.getViewer();
3491
- visViewer.resize(0, this.canvas.width, this.canvas.height, 0);
3492
- this.update(true);
3493
- this.emitEvent({
3494
- type: "resize",
3495
- width: clientWidth,
3496
- height: clientHeight
3497
- });
3527
+ if (!this.canvas.parentElement) return this;
3528
+ const {width: width, height: height} = this.canvas.parentElement.getBoundingClientRect();
3529
+ if (!width || !height) return this;
3530
+ this.setSize(width, height);
3498
3531
  return this;
3499
3532
  }
3500
3533
  update(force = false) {
3501
- var _a, _b, _c;
3502
3534
  if (this._enableAutoUpdate) {
3503
- if (force) {
3504
- (_a = this.visViewer()) === null || _a === undefined ? undefined : _a.update();
3505
- (_c = (_b = this._activeDragger) === null || _b === undefined ? undefined : _b.updatePreview) === null || _c === undefined ? undefined : _c.call(_b);
3506
- } else {
3507
- this._isNeedRender = true;
3508
- }
3535
+ this._renderNeeded = true;
3536
+ if (force) this.render();
3509
3537
  }
3510
3538
  this.emitEvent({
3511
3539
  type: "update",
@@ -3513,8 +3541,8 @@ class Viewer extends EventEmitter2 {
3513
3541
  });
3514
3542
  }
3515
3543
  scheduleUpdateAsync(maxScheduleUpdateTimeInMs = 50) {
3516
- return new Promise(((resolve, reject) => {
3517
- setTimeout((() => {
3544
+ return new Promise((resolve, reject) => {
3545
+ setTimeout(() => {
3518
3546
  var _a, _b, _c;
3519
3547
  try {
3520
3548
  if (this._enableAutoUpdate) {
@@ -3530,13 +3558,14 @@ class Viewer extends EventEmitter2 {
3530
3558
  console.error(e);
3531
3559
  reject();
3532
3560
  }
3533
- }), 0);
3534
- }));
3561
+ }, 0);
3562
+ });
3535
3563
  }
3536
3564
  async updateAsync(maxScheduleUpdateTimeInMs = 50, maxScheduleUpdateCount = 50) {
3565
+ if (!this.visualizeJs) return;
3537
3566
  this._isRunAsyncUpdate = true;
3538
- const device = this.visViewer().getActiveDevice();
3539
3567
  try {
3568
+ const device = this.visViewer().getActiveDevice();
3540
3569
  for (let iterationCount = 0; !device.isValid() && iterationCount < maxScheduleUpdateCount; iterationCount++) {
3541
3570
  await this.scheduleUpdateAsync(maxScheduleUpdateTimeInMs);
3542
3571
  }
@@ -3551,16 +3580,15 @@ class Viewer extends EventEmitter2 {
3551
3580
  return this._visualizeJs;
3552
3581
  }
3553
3582
  visLib() {
3554
- return this.visualizeJs;
3583
+ return this._visualizeJs;
3555
3584
  }
3556
3585
  visViewer() {
3557
- var _a;
3558
- return (_a = this.visualizeJs) === null || _a === undefined ? undefined : _a.getViewer();
3586
+ return this._viewer;
3559
3587
  }
3560
- syncOpenCloudVisualStyle(isInitializing) {
3588
+ syncOpenCloudVisualStyle() {
3561
3589
  if (!this.visualizeJs) return this;
3562
3590
  const visLib = this.visLib();
3563
- const visViewer = visLib.getViewer();
3591
+ const visViewer = this.visViewer();
3564
3592
  const device = visViewer.getActiveDevice();
3565
3593
  if (device.isNull()) return this;
3566
3594
  const view = device.getActiveView();
@@ -3593,8 +3621,9 @@ class Viewer extends EventEmitter2 {
3593
3621
  }
3594
3622
  syncOptions(options = this.options) {
3595
3623
  if (!this.visualizeJs) return this;
3624
+ this.syncOpenCloudVisualStyle();
3596
3625
  const visLib = this.visLib();
3597
- const visViewer = visLib.getViewer();
3626
+ const visViewer = this.visViewer();
3598
3627
  const device = visViewer.getActiveDevice();
3599
3628
  if (device.isNull()) return this;
3600
3629
  if (options.showWCS !== visViewer.getEnableWCS()) {
@@ -3611,7 +3640,7 @@ class Viewer extends EventEmitter2 {
3611
3640
  if (options.shadows !== visViewer.shadows) {
3612
3641
  visViewer.shadows = options.shadows;
3613
3642
  const canvas = visLib.canvas;
3614
- device.invalidate([ 0, canvas.clientWidth, canvas.clientHeight, 0 ]);
3643
+ device.invalidate([ 0, canvas.width, canvas.height, 0 ]);
3615
3644
  }
3616
3645
  if (options.groundShadow !== visViewer.groundShadow) {
3617
3646
  visViewer.groundShadow = options.groundShadow;
@@ -3646,7 +3675,7 @@ class Viewer extends EventEmitter2 {
3646
3675
  if (!this.visualizeJs) return this;
3647
3676
  const params = options.enableCustomHighlight ? options : Options.defaults();
3648
3677
  const visLib = this.visLib();
3649
- const visViewer = visLib.getViewer();
3678
+ const visViewer = this.visViewer();
3650
3679
  const {Entry: Entry, OdTvRGBColorDef: OdTvRGBColorDef} = visLib;
3651
3680
  const highlightStyleId = visViewer.findHighlightStyle("Web_Default");
3652
3681
  const highlightStylePtr = highlightStyleId.openObject();
@@ -3676,7 +3705,7 @@ class Viewer extends EventEmitter2 {
3676
3705
  const device = visViewer.getActiveDevice();
3677
3706
  if (!device.isNull()) {
3678
3707
  const canvas = visLib.canvas;
3679
- device.invalidate([ 0, canvas.clientWidth, canvas.clientHeight, 0 ]);
3708
+ device.invalidate([ 0, canvas.width, canvas.height, 0 ]);
3680
3709
  device.delete();
3681
3710
  }
3682
3711
  return this;
@@ -3689,7 +3718,7 @@ class Viewer extends EventEmitter2 {
3689
3718
  }
3690
3719
  registerDragger(name, dragger) {
3691
3720
  console.warn("Viewer.registerDragger() has been deprecated since 25.12 and will be removed in a future release, use draggers('visualizejs').registerDragger() instead.");
3692
- draggers.registerDragger(name, (viewer => new dragger(viewer)));
3721
+ draggers.registerDragger(name, viewer => new dragger(viewer));
3693
3722
  }
3694
3723
  activeDragger() {
3695
3724
  return this._activeDragger;
@@ -3707,7 +3736,7 @@ class Viewer extends EventEmitter2 {
3707
3736
  newDragger = draggers.createDragger(name, this);
3708
3737
  if (newDragger) {
3709
3738
  this._activeDragger = newDragger;
3710
- (_b = (_a = this._activeDragger).initialize) === null || _b === undefined ? undefined : _b.call(_a);
3739
+ (_b = (_a = this._activeDragger).initialize) === null || _b === void 0 ? void 0 : _b.call(_a);
3711
3740
  }
3712
3741
  }
3713
3742
  const canvas = this.canvas;
@@ -3731,7 +3760,7 @@ class Viewer extends EventEmitter2 {
3731
3760
  }
3732
3761
  }
3733
3762
  getComponent(name) {
3734
- return this._components.find((component => component.name === name));
3763
+ return this._components.find(component => component.name === name);
3735
3764
  }
3736
3765
  clearSlices() {
3737
3766
  if (!this.visualizeJs) return;
@@ -3818,11 +3847,11 @@ class Viewer extends EventEmitter2 {
3818
3847
  const projMatrix = this.visViewer().activeView.projectionMatrix;
3819
3848
  const tolerance = 1e-6;
3820
3849
  const x = projMatrix.get(0, 0);
3821
- if (x > tolerance || x < -1e-6) result.x = 1 / x;
3850
+ if (x > tolerance || x < -tolerance) result.x = 1 / x;
3822
3851
  const y = projMatrix.get(1, 1);
3823
- if (y > tolerance || y < -1e-6) result.y = 1 / y;
3852
+ if (y > tolerance || y < -tolerance) result.y = 1 / y;
3824
3853
  const z = projMatrix.get(2, 2);
3825
- if (z > tolerance || z < -1e-6) result.z = 1 / z;
3854
+ if (z > tolerance || z < -tolerance) result.z = 1 / z;
3826
3855
  return result;
3827
3856
  }
3828
3857
  getSelected() {
@@ -3855,15 +3884,15 @@ class Viewer extends EventEmitter2 {
3855
3884
  if (!this.client) return this;
3856
3885
  if (!model.getReferences) return this;
3857
3886
  const abortController = new AbortController;
3858
- (_a = this._abortControllerForReferences) === null || _a === undefined ? undefined : _a.abort();
3887
+ (_a = this._abortControllerForReferences) === null || _a === void 0 ? void 0 : _a.abort();
3859
3888
  this._abortControllerForReferences = abortController;
3860
3889
  let references = [];
3861
- await model.getReferences(abortController.signal).then((data => references = data.references)).catch((e => console.error("Cannot load model references.", e)));
3890
+ await model.getReferences(abortController.signal).then(data => references = data.references).catch(e => console.error("Cannot load model references.", e));
3862
3891
  for (const file of references) {
3863
- await this.client.downloadFile(file.id, undefined, abortController.signal).then((arrayBuffer => {
3892
+ await this.client.downloadFile(file.id, undefined, abortController.signal).then(arrayBuffer => {
3864
3893
  var _a;
3865
- return (_a = this.visualizeJs) === null || _a === undefined ? undefined : _a.getViewer().addEmbeddedFile(file.name, new Uint8Array(arrayBuffer));
3866
- })).catch((e => console.error(`Cannot load reference file ${file.name}.`, e)));
3894
+ return (_a = this.visualizeJs) === null || _a === void 0 ? void 0 : _a.getViewer().addEmbeddedFile(file.name, new Uint8Array(arrayBuffer));
3895
+ }).catch(e => console.error(`Cannot load reference file ${file.name}.`, e));
3867
3896
  }
3868
3897
  return this;
3869
3898
  }
@@ -3873,7 +3902,7 @@ class Viewer extends EventEmitter2 {
3873
3902
  applySceneGraphSettings(options = this.options) {
3874
3903
  if (!this.visualizeJs) return;
3875
3904
  const visLib = this.visLib();
3876
- const visViewer = visLib.getViewer();
3905
+ const visViewer = this.visViewer();
3877
3906
  const device = visViewer.getActiveDevice();
3878
3907
  if (isExist(options.sceneGraph)) {
3879
3908
  device.setOptionBool(visLib.DeviceOptions.kDelaySceneGraphProc, !options.sceneGraph);
@@ -3892,7 +3921,7 @@ class Viewer extends EventEmitter2 {
3892
3921
  let model = file;
3893
3922
  if (model && typeof model.getModels === "function") {
3894
3923
  const models = await model.getModels();
3895
- model = models.find((model => model.default)) || models[0] || file;
3924
+ model = models.find(model => model.default) || models[0] || file;
3896
3925
  }
3897
3926
  if (!model) throw new Error(`Format not supported`);
3898
3927
  let format = params.format;
@@ -3937,42 +3966,46 @@ class Viewer extends EventEmitter2 {
3937
3966
  this.clear();
3938
3967
  this.emitEvent({
3939
3968
  type: "open",
3940
- file: buffer
3969
+ file: "",
3970
+ buffer: buffer
3941
3971
  });
3942
- const visLib = this.visLib();
3943
- const visViewer = visLib.getViewer();
3972
+ const visViewer = this.visViewer();
3944
3973
  this.emitEvent({
3945
3974
  type: "geometrystart",
3946
- file: buffer
3975
+ file: "",
3976
+ buffer: buffer
3947
3977
  });
3948
3978
  try {
3949
3979
  const data = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
3950
3980
  visViewer.parseFile(data);
3951
- this.syncOpenCloudVisualStyle(false);
3952
3981
  this.syncOptions();
3953
3982
  this.syncOverlay();
3954
- this.resize();
3983
+ this.update(true);
3955
3984
  this.emitEvent({
3956
3985
  type: "geometryprogress",
3957
3986
  data: 1,
3958
- file: buffer
3987
+ file: "",
3988
+ buffer: buffer
3959
3989
  });
3960
3990
  this.emitEvent({
3961
3991
  type: "databasechunk",
3962
3992
  data: data,
3963
- file: buffer
3993
+ file: "",
3994
+ buffer: buffer
3964
3995
  });
3965
3996
  } catch (error) {
3966
3997
  this.emitEvent({
3967
3998
  type: "geometryerror",
3968
3999
  data: error,
3969
- file: buffer
4000
+ file: "",
4001
+ buffer: buffer
3970
4002
  });
3971
4003
  throw error;
3972
4004
  }
3973
4005
  this.emitEvent({
3974
4006
  type: "geometryend",
3975
- file: buffer
4007
+ file: "",
4008
+ buffer: buffer
3976
4009
  });
3977
4010
  return this;
3978
4011
  }
@@ -3983,50 +4016,54 @@ class Viewer extends EventEmitter2 {
3983
4016
  this.clear();
3984
4017
  this.emitEvent({
3985
4018
  type: "open",
3986
- file: buffer
4019
+ file: "",
4020
+ buffer: buffer
3987
4021
  });
3988
- const visLib = this.visLib();
3989
- const visViewer = visLib.getViewer();
4022
+ const visViewer = this.visViewer();
3990
4023
  this.emitEvent({
3991
4024
  type: "geometrystart",
3992
- file: buffer
4025
+ file: "",
4026
+ buffer: buffer
3993
4027
  });
3994
4028
  try {
3995
4029
  const data = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
3996
4030
  visViewer.parseVsfx(data);
3997
- this.syncOpenCloudVisualStyle(false);
3998
4031
  this.syncOptions();
3999
4032
  this.syncOverlay();
4000
- this.resize();
4033
+ this.update(true);
4001
4034
  this.emitEvent({
4002
4035
  type: "geometryprogress",
4003
4036
  data: 1,
4004
- file: buffer
4037
+ file: "",
4038
+ buffer: buffer
4005
4039
  });
4006
4040
  this.emitEvent({
4007
4041
  type: "databasechunk",
4008
4042
  data: data,
4009
- file: buffer
4043
+ file: "",
4044
+ buffer: buffer
4010
4045
  });
4011
4046
  } catch (error) {
4012
4047
  this.emitEvent({
4013
4048
  type: "geometryerror",
4014
4049
  data: error,
4015
- file: buffer
4050
+ file: "",
4051
+ buffer: buffer
4016
4052
  });
4017
4053
  throw error;
4018
4054
  }
4019
4055
  this.emitEvent({
4020
4056
  type: "geometryend",
4021
- file: buffer
4057
+ file: "",
4058
+ buffer: buffer
4022
4059
  });
4023
4060
  return this;
4024
4061
  }
4025
4062
  cancel() {
4026
4063
  var _a;
4027
- (_a = this._abortControllerForReferences) === null || _a === undefined ? undefined : _a.abort();
4064
+ (_a = this._abortControllerForReferences) === null || _a === void 0 ? void 0 : _a.abort();
4028
4065
  this._abortControllerForReferences = undefined;
4029
- this.loaders.forEach((loader => loader.cancel()));
4066
+ this.loaders.forEach(loader => loader.cancel());
4030
4067
  this.emitEvent({
4031
4068
  type: "cancel"
4032
4069
  });
@@ -4034,20 +4071,18 @@ class Viewer extends EventEmitter2 {
4034
4071
  }
4035
4072
  clear() {
4036
4073
  if (!this.visualizeJs) return this;
4037
- const visLib = this.visLib();
4038
- const visViewer = visLib.getViewer();
4074
+ const visViewer = this.visViewer();
4039
4075
  this.setActiveDragger();
4040
4076
  this.clearSlices();
4041
4077
  this.clearOverlay();
4042
4078
  this.clearSelected();
4079
+ this.loaders.forEach(loader => loader.dispose());
4080
+ this.loaders = [];
4043
4081
  visViewer.clear();
4044
4082
  visViewer.createLocalDatabase();
4045
- this.loaders.forEach((loader => loader.dispose()));
4046
- this.loaders = [];
4047
- this.syncOpenCloudVisualStyle(true);
4048
4083
  this.syncOptions();
4049
4084
  this.syncOverlay();
4050
- this.resize();
4085
+ this.update(true);
4051
4086
  this.emitEvent({
4052
4087
  type: "clear"
4053
4088
  });
@@ -4085,7 +4120,7 @@ class Viewer extends EventEmitter2 {
4085
4120
  drawViewpoint(viewpoint) {
4086
4121
  var _a;
4087
4122
  if (!this.visualizeJs) return;
4088
- const draggerName = (_a = this._activeDragger) === null || _a === undefined ? undefined : _a.name;
4123
+ const draggerName = (_a = this._activeDragger) === null || _a === void 0 ? void 0 : _a.name;
4089
4124
  this.setActiveDragger();
4090
4125
  this.clearSlices();
4091
4126
  this.clearOverlay();
@@ -4174,12 +4209,12 @@ class Viewer extends EventEmitter2 {
4174
4209
  }
4175
4210
  }
4176
4211
  getSelection() {
4177
- return this.getSelected().map((handle => ({
4212
+ return this.getSelected().map(handle => ({
4178
4213
  handle: handle
4179
- })));
4214
+ }));
4180
4215
  }
4181
4216
  setSelection(selection) {
4182
- this.setSelected(selection === null || selection === undefined ? undefined : selection.map((component => component.handle)));
4217
+ this.setSelected(selection === null || selection === void 0 ? void 0 : selection.map(component => component.handle));
4183
4218
  }
4184
4219
  executeCommand(id, ...args) {
4185
4220
  return commands.executeCommand(id, this, ...args);