@xeokit/xeokit-sdk 2.5.2-beta-7 → 2.5.2-beta-9

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.
@@ -7474,8 +7474,28 @@ function Core() {
7474
7474
  */
7475
7475
  const core = new Core();
7476
7476
 
7477
-
7478
7477
  const frame = function () {
7478
+ let time = Date.now();
7479
+ elapsedTime = time - lastTime;
7480
+ if (lastTime > 0 && elapsedTime > 0) { // Log FPS stats
7481
+ var newFPS = 1000 / elapsedTime; // Moving average of FPS
7482
+ totalFPS += newFPS;
7483
+ fpsSamples.push(newFPS);
7484
+ if (fpsSamples.length >= numFPSSamples) {
7485
+ totalFPS -= fpsSamples.shift();
7486
+ }
7487
+ stats.frame.fps = Math.round(totalFPS / fpsSamples.length);
7488
+ }
7489
+ for (let id in core.scenes) {
7490
+ core.scenes[id].compile();
7491
+ }
7492
+ runTasks(time);
7493
+ lastTime = time;
7494
+ };
7495
+
7496
+ window.setInterval(frame, 1000 / 30);
7497
+
7498
+ const renderFrame = function () {
7479
7499
  let time = Date.now();
7480
7500
  elapsedTime = time - lastTime;
7481
7501
  if (lastTime > 0 && elapsedTime > 0) { // Log FPS stats
@@ -7490,10 +7510,11 @@ const frame = function () {
7490
7510
  runTasks(time);
7491
7511
  fireTickEvents(time);
7492
7512
  renderScenes();
7493
- lastTime = time;
7494
- (window.requestPostAnimationFrame !== undefined) ? window.requestPostAnimationFrame(frame) : requestAnimationFrame(frame);
7513
+ (window.requestPostAnimationFrame !== undefined) ? window.requestPostAnimationFrame(frame) : requestAnimationFrame(renderFrame);
7495
7514
  };
7496
7515
 
7516
+ renderFrame();
7517
+
7497
7518
  function runTasks(time) { // Process as many enqueued tasks as we can within the per-frame task budget
7498
7519
  const tasksRun = core.runTasks(time + taskBudget);
7499
7520
  const tasksScheduled = core.getNumTasks();
@@ -7567,17 +7588,6 @@ function renderScenes() {
7567
7588
  }
7568
7589
  }
7569
7590
 
7570
- (window.requestPostAnimationFrame !== undefined) ? window.requestPostAnimationFrame(frame) : requestAnimationFrame(frame);
7571
-
7572
- function compileScenes() {
7573
-
7574
- for (let id in core.scenes) {
7575
- core.scenes[id].compile();
7576
- }
7577
- }
7578
-
7579
- window.setInterval(compileScenes, 1000 / 60);
7580
-
7581
7591
  /**
7582
7592
  * @desc Base class for all xeokit components.
7583
7593
  *
@@ -12154,8 +12164,13 @@ class AngleMeasurementsMouseControl extends AngleMeasurementsControl {
12154
12164
  mouseHoverCanvasPos.set(canvasPos);
12155
12165
  switch (this._mouseState) {
12156
12166
  case MOUSE_FINDING_ORIGIN:
12157
- this.markerDiv.style.marginLeft = `${canvasPos[0] - 5}px`;
12158
- this.markerDiv.style.marginTop = `${canvasPos[1] - 5}px`;
12167
+ const canvasBoundRect = canvas.getBoundingClientRect();
12168
+ const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;
12169
+ const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
12170
+ const canvasLeftEdge = canvasBoundRect.left + scrollLeft;
12171
+ const canvasTopEdge = canvasBoundRect.top + scrollTop;
12172
+ this._markerDiv.style.marginLeft = `${canvasLeftEdge + canvasPos[0] - 5}px`;
12173
+ this._markerDiv.style.marginTop = `${canvasTopEdge + canvasPos[1] - 5}px`;
12159
12174
  break;
12160
12175
  case MOUSE_FINDING_CORNER:
12161
12176
  if (this._currentAngleMeasurement) {
@@ -12917,7 +12932,7 @@ class Annotation extends Marker {
12917
12932
  if (utils.isArray(markerHTML)) {
12918
12933
  markerHTML = markerHTML.join("");
12919
12934
  }
12920
- markerHTML = this._renderTemplate(markerHTML);
12935
+ markerHTML = this._renderTemplate(markerHTML.trim());
12921
12936
  const markerFragment = document.createRange().createContextualFragment(markerHTML);
12922
12937
  this._marker = markerFragment.firstChild;
12923
12938
  this._container.appendChild(this._marker);
@@ -12944,7 +12959,7 @@ class Annotation extends Marker {
12944
12959
  if (utils.isArray(labelHTML)) {
12945
12960
  labelHTML = labelHTML.join("");
12946
12961
  }
12947
- labelHTML = this._renderTemplate(labelHTML);
12962
+ labelHTML = this._renderTemplate(labelHTML.trim());
12948
12963
  const labelFragment = document.createRange().createContextualFragment(labelHTML);
12949
12964
  this._label = labelFragment.firstChild;
12950
12965
  this._container.appendChild(this._label);
@@ -85533,8 +85548,15 @@ class DistanceMeasurementsMouseControl extends DistanceMeasurementsControl {
85533
85548
  pointerWorldPos.set(event.worldPos);
85534
85549
  pointerCanvasPos.set(event.canvasPos);
85535
85550
  if (this._mouseState === MOUSE_FIRST_CLICK_EXPECTED) {
85536
- this._markerDiv.style.marginLeft = `${canvasPos[0] - 5}px`;
85537
- this._markerDiv.style.marginTop = `${canvasPos[1] - 5}px`;
85551
+
85552
+ const canvasBoundRect = canvas.getBoundingClientRect();
85553
+ const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;
85554
+ const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
85555
+ const canvasLeftEdge = canvasBoundRect.left + scrollLeft;
85556
+ const canvasTopEdge = canvasBoundRect.top + scrollTop;
85557
+
85558
+ this._markerDiv.style.marginLeft = `${canvasLeftEdge + canvasPos[0] - 5}px`;
85559
+ this._markerDiv.style.marginTop = `${canvasTopEdge + canvasPos[1] - 5}px`;
85538
85560
  this._markerDiv.style.background = "pink";
85539
85561
  if (event.snappedToVertex || event.snappedToEdge) {
85540
85562
  if (this.pointerLens) {
@@ -7470,8 +7470,28 @@ function Core() {
7470
7470
  */
7471
7471
  const core = new Core();
7472
7472
 
7473
-
7474
7473
  const frame = function () {
7474
+ let time = Date.now();
7475
+ elapsedTime = time - lastTime;
7476
+ if (lastTime > 0 && elapsedTime > 0) { // Log FPS stats
7477
+ var newFPS = 1000 / elapsedTime; // Moving average of FPS
7478
+ totalFPS += newFPS;
7479
+ fpsSamples.push(newFPS);
7480
+ if (fpsSamples.length >= numFPSSamples) {
7481
+ totalFPS -= fpsSamples.shift();
7482
+ }
7483
+ stats.frame.fps = Math.round(totalFPS / fpsSamples.length);
7484
+ }
7485
+ for (let id in core.scenes) {
7486
+ core.scenes[id].compile();
7487
+ }
7488
+ runTasks(time);
7489
+ lastTime = time;
7490
+ };
7491
+
7492
+ window.setInterval(frame, 1000 / 30);
7493
+
7494
+ const renderFrame = function () {
7475
7495
  let time = Date.now();
7476
7496
  elapsedTime = time - lastTime;
7477
7497
  if (lastTime > 0 && elapsedTime > 0) { // Log FPS stats
@@ -7486,10 +7506,11 @@ const frame = function () {
7486
7506
  runTasks(time);
7487
7507
  fireTickEvents(time);
7488
7508
  renderScenes();
7489
- lastTime = time;
7490
- (window.requestPostAnimationFrame !== undefined) ? window.requestPostAnimationFrame(frame) : requestAnimationFrame(frame);
7509
+ (window.requestPostAnimationFrame !== undefined) ? window.requestPostAnimationFrame(frame) : requestAnimationFrame(renderFrame);
7491
7510
  };
7492
7511
 
7512
+ renderFrame();
7513
+
7493
7514
  function runTasks(time) { // Process as many enqueued tasks as we can within the per-frame task budget
7494
7515
  const tasksRun = core.runTasks(time + taskBudget);
7495
7516
  const tasksScheduled = core.getNumTasks();
@@ -7563,17 +7584,6 @@ function renderScenes() {
7563
7584
  }
7564
7585
  }
7565
7586
 
7566
- (window.requestPostAnimationFrame !== undefined) ? window.requestPostAnimationFrame(frame) : requestAnimationFrame(frame);
7567
-
7568
- function compileScenes() {
7569
-
7570
- for (let id in core.scenes) {
7571
- core.scenes[id].compile();
7572
- }
7573
- }
7574
-
7575
- window.setInterval(compileScenes, 1000 / 60);
7576
-
7577
7587
  /**
7578
7588
  * @desc Base class for all xeokit components.
7579
7589
  *
@@ -12150,8 +12160,13 @@ class AngleMeasurementsMouseControl extends AngleMeasurementsControl {
12150
12160
  mouseHoverCanvasPos.set(canvasPos);
12151
12161
  switch (this._mouseState) {
12152
12162
  case MOUSE_FINDING_ORIGIN:
12153
- this.markerDiv.style.marginLeft = `${canvasPos[0] - 5}px`;
12154
- this.markerDiv.style.marginTop = `${canvasPos[1] - 5}px`;
12163
+ const canvasBoundRect = canvas.getBoundingClientRect();
12164
+ const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;
12165
+ const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
12166
+ const canvasLeftEdge = canvasBoundRect.left + scrollLeft;
12167
+ const canvasTopEdge = canvasBoundRect.top + scrollTop;
12168
+ this._markerDiv.style.marginLeft = `${canvasLeftEdge + canvasPos[0] - 5}px`;
12169
+ this._markerDiv.style.marginTop = `${canvasTopEdge + canvasPos[1] - 5}px`;
12155
12170
  break;
12156
12171
  case MOUSE_FINDING_CORNER:
12157
12172
  if (this._currentAngleMeasurement) {
@@ -12913,7 +12928,7 @@ class Annotation extends Marker {
12913
12928
  if (utils.isArray(markerHTML)) {
12914
12929
  markerHTML = markerHTML.join("");
12915
12930
  }
12916
- markerHTML = this._renderTemplate(markerHTML);
12931
+ markerHTML = this._renderTemplate(markerHTML.trim());
12917
12932
  const markerFragment = document.createRange().createContextualFragment(markerHTML);
12918
12933
  this._marker = markerFragment.firstChild;
12919
12934
  this._container.appendChild(this._marker);
@@ -12940,7 +12955,7 @@ class Annotation extends Marker {
12940
12955
  if (utils.isArray(labelHTML)) {
12941
12956
  labelHTML = labelHTML.join("");
12942
12957
  }
12943
- labelHTML = this._renderTemplate(labelHTML);
12958
+ labelHTML = this._renderTemplate(labelHTML.trim());
12944
12959
  const labelFragment = document.createRange().createContextualFragment(labelHTML);
12945
12960
  this._label = labelFragment.firstChild;
12946
12961
  this._container.appendChild(this._label);
@@ -81897,7 +81912,7 @@ class SceneModel extends Component {
81897
81912
  * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````.
81898
81913
  * @param {Number} [cfg.metallic=0] Metallic factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.
81899
81914
  * @param {Number} [cfg.roughness=1] Roughness factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````.
81900
- * @returns {Boolean} True if mesh was successfully created, else false if an error occurred.
81915
+ * @returns {Boolean} True = successfully mesh was created. False = error during creation of a mesh.
81901
81916
  */
81902
81917
  createMesh(cfg) {
81903
81918
 
@@ -82611,15 +82626,15 @@ class SceneModel extends Component {
82611
82626
  let meshes = [];
82612
82627
  for (let i = 0, len = cfg.meshIds.length; i < len; i++) {
82613
82628
  const meshId = cfg.meshIds[i];
82614
- let mesh = this._meshes[meshId];
82615
- if (!mesh) {
82616
- let meshCfg = this._meshesCfgsBeforeMeshCreation[meshId];
82617
- if (!meshCfg) {
82618
- this.error(`Mesh with this ID not found: "${meshId}" - ignoring this mesh`);
82629
+ let mesh = this._meshes[meshId]; // Trying to get already created mesh
82630
+ if (!mesh) { // Checks if there is already created mesh for this meshId
82631
+ let meshCfg = this._meshesCfgsBeforeMeshCreation[meshId]; // Trying to get already created cfg
82632
+ if (!meshCfg) { // Checks if there is already created cfg for this meshId
82633
+ this.error(`Mesh with this ID not found: "${meshId}" - ignoring this mesh`); // There is no such cfg
82619
82634
  continue;
82620
82635
  }
82621
- mesh = this._createMesh(meshCfg);
82622
- this._meshes[cfg.id] = mesh;
82636
+ mesh = this._createMesh(meshCfg); // There is no such mesh yet, but there is already created cfg, so it creates this mesh
82637
+ this._meshes[cfg.id] = mesh; // Now it will also add this mesh to dictionary of created meshes
82623
82638
  }
82624
82639
  if (mesh.parent) {
82625
82640
  this.error(`Mesh with ID "${meshId}" already belongs to object with ID "${mesh.parent.id}" - ignoring this mesh`);
@@ -85529,8 +85544,15 @@ class DistanceMeasurementsMouseControl extends DistanceMeasurementsControl {
85529
85544
  pointerWorldPos.set(event.worldPos);
85530
85545
  pointerCanvasPos.set(event.canvasPos);
85531
85546
  if (this._mouseState === MOUSE_FIRST_CLICK_EXPECTED) {
85532
- this._markerDiv.style.marginLeft = `${canvasPos[0] - 5}px`;
85533
- this._markerDiv.style.marginTop = `${canvasPos[1] - 5}px`;
85547
+
85548
+ const canvasBoundRect = canvas.getBoundingClientRect();
85549
+ const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;
85550
+ const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
85551
+ const canvasLeftEdge = canvasBoundRect.left + scrollLeft;
85552
+ const canvasTopEdge = canvasBoundRect.top + scrollTop;
85553
+
85554
+ this._markerDiv.style.marginLeft = `${canvasLeftEdge + canvasPos[0] - 5}px`;
85555
+ this._markerDiv.style.marginTop = `${canvasTopEdge + canvasPos[1] - 5}px`;
85534
85556
  this._markerDiv.style.background = "pink";
85535
85557
  if (event.snappedToVertex || event.snappedToEdge) {
85536
85558
  if (this.pointerLens) {
@@ -97224,94 +97246,94 @@ function arrayToMap(array) {
97224
97246
  * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
97225
97247
  * Released under MIT License
97226
97248
  */
97227
- /*! *****************************************************************************
97228
- Copyright (c) Microsoft Corporation.
97229
-
97230
- Permission to use, copy, modify, and/or distribute this software for any
97231
- purpose with or without fee is hereby granted.
97232
-
97233
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
97234
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
97235
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
97236
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
97237
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
97238
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
97239
- PERFORMANCE OF THIS SOFTWARE.
97240
- ***************************************************************************** */
97241
- /* global Reflect, Promise */
97242
-
97243
- var extendStatics = function(d, b) {
97244
- extendStatics = Object.setPrototypeOf ||
97245
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
97246
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
97247
- return extendStatics(d, b);
97248
- };
97249
-
97250
- function __extends(d, b) {
97251
- if (typeof b !== "function" && b !== null)
97252
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
97253
- extendStatics(d, b);
97254
- function __() { this.constructor = d; }
97255
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
97256
- }
97257
-
97258
- var __assign = function() {
97259
- __assign = Object.assign || function __assign(t) {
97260
- for (var s, i = 1, n = arguments.length; i < n; i++) {
97261
- s = arguments[i];
97262
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
97263
- }
97264
- return t;
97265
- };
97266
- return __assign.apply(this, arguments);
97267
- };
97268
-
97269
- function __awaiter(thisArg, _arguments, P, generator) {
97270
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
97271
- return new (P || (P = Promise))(function (resolve, reject) {
97272
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
97273
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
97274
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
97275
- step((generator = generator.apply(thisArg, _arguments || [])).next());
97276
- });
97277
- }
97278
-
97279
- function __generator(thisArg, body) {
97280
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
97281
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
97282
- function verb(n) { return function (v) { return step([n, v]); }; }
97283
- function step(op) {
97284
- if (f) throw new TypeError("Generator is already executing.");
97285
- while (_) try {
97286
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
97287
- if (y = 0, t) op = [op[0] & 2, t.value];
97288
- switch (op[0]) {
97289
- case 0: case 1: t = op; break;
97290
- case 4: _.label++; return { value: op[1], done: false };
97291
- case 5: _.label++; y = op[1]; op = [0]; continue;
97292
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
97293
- default:
97294
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
97295
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
97296
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
97297
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
97298
- if (t[2]) _.ops.pop();
97299
- _.trys.pop(); continue;
97300
- }
97301
- op = body.call(thisArg, _);
97302
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
97303
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
97304
- }
97305
- }
97306
-
97307
- function __spreadArray(to, from, pack) {
97308
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
97309
- if (ar || !(i in from)) {
97310
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
97311
- ar[i] = from[i];
97312
- }
97313
- }
97314
- return to.concat(ar || from);
97249
+ /*! *****************************************************************************
97250
+ Copyright (c) Microsoft Corporation.
97251
+
97252
+ Permission to use, copy, modify, and/or distribute this software for any
97253
+ purpose with or without fee is hereby granted.
97254
+
97255
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
97256
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
97257
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
97258
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
97259
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
97260
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
97261
+ PERFORMANCE OF THIS SOFTWARE.
97262
+ ***************************************************************************** */
97263
+ /* global Reflect, Promise */
97264
+
97265
+ var extendStatics = function(d, b) {
97266
+ extendStatics = Object.setPrototypeOf ||
97267
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
97268
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
97269
+ return extendStatics(d, b);
97270
+ };
97271
+
97272
+ function __extends(d, b) {
97273
+ if (typeof b !== "function" && b !== null)
97274
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
97275
+ extendStatics(d, b);
97276
+ function __() { this.constructor = d; }
97277
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
97278
+ }
97279
+
97280
+ var __assign = function() {
97281
+ __assign = Object.assign || function __assign(t) {
97282
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
97283
+ s = arguments[i];
97284
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
97285
+ }
97286
+ return t;
97287
+ };
97288
+ return __assign.apply(this, arguments);
97289
+ };
97290
+
97291
+ function __awaiter(thisArg, _arguments, P, generator) {
97292
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
97293
+ return new (P || (P = Promise))(function (resolve, reject) {
97294
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
97295
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
97296
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
97297
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
97298
+ });
97299
+ }
97300
+
97301
+ function __generator(thisArg, body) {
97302
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
97303
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
97304
+ function verb(n) { return function (v) { return step([n, v]); }; }
97305
+ function step(op) {
97306
+ if (f) throw new TypeError("Generator is already executing.");
97307
+ while (_) try {
97308
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
97309
+ if (y = 0, t) op = [op[0] & 2, t.value];
97310
+ switch (op[0]) {
97311
+ case 0: case 1: t = op; break;
97312
+ case 4: _.label++; return { value: op[1], done: false };
97313
+ case 5: _.label++; y = op[1]; op = [0]; continue;
97314
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
97315
+ default:
97316
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
97317
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
97318
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
97319
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
97320
+ if (t[2]) _.ops.pop();
97321
+ _.trys.pop(); continue;
97322
+ }
97323
+ op = body.call(thisArg, _);
97324
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
97325
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
97326
+ }
97327
+ }
97328
+
97329
+ function __spreadArray(to, from, pack) {
97330
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
97331
+ if (ar || !(i in from)) {
97332
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
97333
+ ar[i] = from[i];
97334
+ }
97335
+ }
97336
+ return to.concat(ar || from);
97315
97337
  }
97316
97338
 
97317
97339
  var Bounds = /** @class */ (function () {
@@ -1627,7 +1627,9 @@ var time=new Date().getTime();var callback;var scope;var tasksRun=0;while(taskQu
1627
1627
  * @type {Core}
1628
1628
  */var core=new Core();var frame=function frame(){var time=Date.now();elapsedTime=time-lastTime;if(lastTime>0&&elapsedTime>0){// Log FPS stats
1629
1629
  var newFPS=1000/elapsedTime;// Moving average of FPS
1630
- totalFPS+=newFPS;fpsSamples.push(newFPS);if(fpsSamples.length>=numFPSSamples){totalFPS-=fpsSamples.shift();}stats.frame.fps=Math.round(totalFPS/fpsSamples.length);}runTasks(time);fireTickEvents(time);renderScenes();lastTime=time;window.requestPostAnimationFrame!==undefined?window.requestPostAnimationFrame(frame):requestAnimationFrame(frame);};function runTasks(time){// Process as many enqueued tasks as we can within the per-frame task budget
1630
+ totalFPS+=newFPS;fpsSamples.push(newFPS);if(fpsSamples.length>=numFPSSamples){totalFPS-=fpsSamples.shift();}stats.frame.fps=Math.round(totalFPS/fpsSamples.length);}for(var id in core.scenes){core.scenes[id].compile();}runTasks(time);lastTime=time;};window.setInterval(frame,1000/30);var renderFrame=function renderFrame(){var time=Date.now();elapsedTime=time-lastTime;if(lastTime>0&&elapsedTime>0){// Log FPS stats
1631
+ var newFPS=1000/elapsedTime;// Moving average of FPS
1632
+ totalFPS+=newFPS;fpsSamples.push(newFPS);if(fpsSamples.length>=numFPSSamples){totalFPS-=fpsSamples.shift();}stats.frame.fps=Math.round(totalFPS/fpsSamples.length);}runTasks(time);fireTickEvents(time);renderScenes();window.requestPostAnimationFrame!==undefined?window.requestPostAnimationFrame(frame):requestAnimationFrame(renderFrame);};renderFrame();function runTasks(time){// Process as many enqueued tasks as we can within the per-frame task budget
1631
1633
  var tasksRun=core.runTasks(time+taskBudget);var tasksScheduled=core.getNumTasks();stats.frame.tasksRun=tasksRun;stats.frame.tasksScheduled=tasksScheduled;stats.frame.tasksBudget=taskBudget;}function fireTickEvents(time){// Fire tick event on each Scene
1632
1634
  tickEvent.time=time;for(var id in core.scenes){if(core.scenes.hasOwnProperty(id)){var scene=core.scenes[id];tickEvent.sceneId=id;tickEvent.startTime=scene.startTime;tickEvent.deltaTime=tickEvent.prevTime!=null?tickEvent.time-tickEvent.prevTime:0;/**
1633
1635
  * Fired on each game loop iteration.
@@ -1639,7 +1641,7 @@ tickEvent.time=time;for(var id in core.scenes){if(core.scenes.hasOwnProperty(id)
1639
1641
  * @param {Number} prevTime The time of the previous "tick" event from this Scene.
1640
1642
  * @param {Number} deltaTime The time in seconds since the previous "tick" event from this Scene.
1641
1643
  */scene.fire("tick",tickEvent,true);}}tickEvent.prevTime=time;}function renderScenes(){var scenes=core.scenes;var forceRender=false;var scene;var renderInfo;var ticksPerOcclusionTest;var ticksPerRender;var id;for(id in scenes){if(scenes.hasOwnProperty(id)){scene=scenes[id];renderInfo=scenesRenderInfo[id];if(!renderInfo){renderInfo=scenesRenderInfo[id]={};// FIXME
1642
- }ticksPerOcclusionTest=scene.ticksPerOcclusionTest;if(renderInfo.ticksPerOcclusionTest!==ticksPerOcclusionTest){renderInfo.ticksPerOcclusionTest=ticksPerOcclusionTest;renderInfo.renderCountdown=ticksPerOcclusionTest;}if(--scene.occlusionTestCountdown<=0){scene.doOcclusionTest();scene.occlusionTestCountdown=ticksPerOcclusionTest;}ticksPerRender=scene.ticksPerRender;if(renderInfo.ticksPerRender!==ticksPerRender){renderInfo.ticksPerRender=ticksPerRender;renderInfo.renderCountdown=ticksPerRender;}if(--renderInfo.renderCountdown===0){scene.render(forceRender);renderInfo.renderCountdown=ticksPerRender;}}}}window.requestPostAnimationFrame!==undefined?window.requestPostAnimationFrame(frame):requestAnimationFrame(frame);function compileScenes(){for(var id in core.scenes){core.scenes[id].compile();}}window.setInterval(compileScenes,1000/60);/**
1644
+ }ticksPerOcclusionTest=scene.ticksPerOcclusionTest;if(renderInfo.ticksPerOcclusionTest!==ticksPerOcclusionTest){renderInfo.ticksPerOcclusionTest=ticksPerOcclusionTest;renderInfo.renderCountdown=ticksPerOcclusionTest;}if(--scene.occlusionTestCountdown<=0){scene.doOcclusionTest();scene.occlusionTestCountdown=ticksPerOcclusionTest;}ticksPerRender=scene.ticksPerRender;if(renderInfo.ticksPerRender!==ticksPerRender){renderInfo.ticksPerRender=ticksPerRender;renderInfo.renderCountdown=ticksPerRender;}if(--renderInfo.renderCountdown===0){scene.render(forceRender);renderInfo.renderCountdown=ticksPerRender;}}}}/**
1643
1645
  * @desc Base class for all xeokit components.
1644
1646
  *
1645
1647
  * ## Component IDs
@@ -2979,7 +2981,7 @@ _this18._initMarkerDiv();_this18._onMouseHoverSurface=null;_this18._onHoverNothi
2979
2981
  */function get(){return this._snapping;}/**
2980
2982
  * Activates this AngleMeasurementsMouseControl, ready to respond to input.
2981
2983
  */,set:function set(snapping){if(snapping!==this._snapping){this._snapping=snapping;this.deactivate();this.activate();}else{this._snapping=snapping;}}},{key:"activate",value:function activate(){var _this19=this;if(this._active){return;}if(!this.markerDiv){this._initMarkerDiv();// if the marker is destroyed after deactivation, we recreate it
2982
- }this.angleMeasurementsPlugin;var scene=this.scene;scene.input;var canvas=scene.canvas.canvas;var clickTolerance=20;var cameraControl=this.angleMeasurementsPlugin.viewer.cameraControl;var pointerLens=this.pointerLens;var mouseHovering=false;var hoveredEntity=null;var lastMouseCanvasX=0;var lastMouseCanvasY=0;var mouseWorldPos=math.vec3();var mouseHoverCanvasPos=math.vec2();this._currentAngleMeasurement=null;this._onMouseHoverSurface=cameraControl.on(this._snapping?"hoverSnapOrSurface":"hoverSurface",function(event){if(event.snappedToVertex||event.snappedToEdge){if(pointerLens){pointerLens.visible=true;pointerLens.canvasPos=event.canvasPos;pointerLens.snappedCanvasPos=event.snappedCanvasPos||event.canvasPos;pointerLens.snapped=true;}_this19.markerDiv.style.background="greenyellow";_this19.markerDiv.style.border="2px solid green";}else{if(pointerLens){pointerLens.visible=true;pointerLens.canvasPos=event.canvasPos;pointerLens.snappedCanvasPos=event.canvasPos;pointerLens.snapped=false;}_this19.markerDiv.style.background="pink";_this19.markerDiv.style.border="2px solid red";}var canvasPos=event.snappedCanvasPos||event.canvasPos;mouseHovering=true;hoveredEntity=event.entity;mouseWorldPos.set(event.worldPos);mouseHoverCanvasPos.set(canvasPos);switch(_this19._mouseState){case MOUSE_FINDING_ORIGIN:_this19.markerDiv.style.marginLeft="".concat(canvasPos[0]-5,"px");_this19.markerDiv.style.marginTop="".concat(canvasPos[1]-5,"px");break;case MOUSE_FINDING_CORNER:if(_this19._currentAngleMeasurement){_this19._currentAngleMeasurement.originWireVisible=true;_this19._currentAngleMeasurement.targetWireVisible=false;_this19._currentAngleMeasurement.cornerVisible=true;_this19._currentAngleMeasurement.angleVisible=false;_this19._currentAngleMeasurement.corner.worldPos=event.worldPos;_this19._currentAngleMeasurement.corner.entity=event.entity;}_this19.markerDiv.style.marginLeft="-10000px";_this19.markerDiv.style.marginTop="-10000px";canvas.style.cursor="pointer";break;case MOUSE_FINDING_TARGET:if(_this19._currentAngleMeasurement){_this19._currentAngleMeasurement.targetWireVisible=true;_this19._currentAngleMeasurement.targetVisible=true;_this19._currentAngleMeasurement.angleVisible=true;_this19._currentAngleMeasurement.target.worldPos=event.worldPos;_this19._currentAngleMeasurement.target.entity=event.entity;}_this19.markerDiv.style.marginLeft="-10000px";_this19.markerDiv.style.marginTop="-10000px";canvas.style.cursor="pointer";break;}});canvas.addEventListener('mousedown',this._onMouseDown=function(e){if(e.which!==1){return;}lastMouseCanvasX=e.clientX;lastMouseCanvasY=e.clientY;});canvas.addEventListener("mouseup",this._onMouseUp=function(e){if(e.which!==1){return;}if(e.clientX>lastMouseCanvasX+clickTolerance||e.clientX<lastMouseCanvasX-clickTolerance||e.clientY>lastMouseCanvasY+clickTolerance||e.clientY<lastMouseCanvasY-clickTolerance){return;}switch(_this19._mouseState){case MOUSE_FINDING_ORIGIN:if(mouseHovering){_this19._currentAngleMeasurement=_this19.angleMeasurementsPlugin.createMeasurement({id:math.createUUID(),origin:{worldPos:mouseWorldPos},corner:{worldPos:mouseWorldPos},target:{worldPos:mouseWorldPos},approximate:true});_this19._currentAngleMeasurement.clickable=false;_this19._currentAngleMeasurement.originVisible=true;_this19._currentAngleMeasurement.originWireVisible=true;_this19._currentAngleMeasurement.cornerVisible=false;_this19._currentAngleMeasurement.targetWireVisible=false;_this19._currentAngleMeasurement.targetVisible=false;_this19._currentAngleMeasurement.angleVisible=false;_this19._currentAngleMeasurement.origin.entity=hoveredEntity;_this19._mouseState=MOUSE_FINDING_CORNER;_this19.angleMeasurementsPlugin.fire("measurementStart",_this19._currentAngleMeasurement);}break;case MOUSE_FINDING_CORNER:if(mouseHovering){_this19._currentAngleMeasurement.targetWireVisible=false;_this19._currentAngleMeasurement.targetVisible=true;_this19._currentAngleMeasurement.angleVisible=true;_this19._currentAngleMeasurement.corner.entity=hoveredEntity;_this19._mouseState=MOUSE_FINDING_TARGET;}else{if(_this19._currentAngleMeasurement){_this19._currentAngleMeasurement.destroy();_this19._currentAngleMeasurement=null;hoveredEntity=null;_this19._mouseState=MOUSE_FINDING_ORIGIN;_this19.angleMeasurementsPlugin.fire("measurementCancel",_this19._currentAngleMeasurement);}}break;case MOUSE_FINDING_TARGET:if(mouseHovering){_this19._currentAngleMeasurement.targetVisible=true;_this19._currentAngleMeasurement.angleVisible=true;_this19._currentAngleMeasurement.target.entity=hoveredEntity;_this19._currentAngleMeasurement.clickable=true;hoveredEntity=null;_this19.angleMeasurementsPlugin.fire("measurementEnd",_this19._currentAngleMeasurement);_this19._currentAngleMeasurement=null;_this19._mouseState=MOUSE_FINDING_ORIGIN;}else{if(_this19._currentAngleMeasurement){_this19._currentAngleMeasurement.destroy();_this19._currentAngleMeasurement=null;hoveredEntity=null;_this19._mouseState=MOUSE_FINDING_ORIGIN;_this19.angleMeasurementsPlugin.fire("measurementCancel",_this19._currentAngleMeasurement);}}break;}});this._onMouseHoverOff=cameraControl.on(this._snapping?"hoverSnapOrSurfaceOff":"hoverOff",function(event){mouseHovering=false;if(pointerLens){pointerLens.visible=true;pointerLens.pointerPos=event.canvasPos;pointerLens.snappedCanvasPos=event.snappedCanvasPos||event.canvasPos;pointerLens.snapped=false;}_this19.markerDiv.style.marginLeft="-100px";_this19.markerDiv.style.marginTop="-100px";if(_this19._currentAngleMeasurement){switch(_this19._mouseState){case MOUSE_FINDING_ORIGIN:_this19._currentAngleMeasurement.originVisible=false;break;case MOUSE_FINDING_CORNER:_this19._currentAngleMeasurement.cornerVisible=false;_this19._currentAngleMeasurement.originWireVisible=false;_this19._currentAngleMeasurement.targetVisible=false;_this19._currentAngleMeasurement.targetWireVisible=false;_this19._currentAngleMeasurement.angleVisible=false;break;case MOUSE_FINDING_TARGET:_this19._currentAngleMeasurement.targetVisible=false;_this19._currentAngleMeasurement.targetWireVisible=false;_this19._currentAngleMeasurement.angleVisible=false;break;}canvas.style.cursor="default";}});this._active=true;}/**
2984
+ }this.angleMeasurementsPlugin;var scene=this.scene;scene.input;var canvas=scene.canvas.canvas;var clickTolerance=20;var cameraControl=this.angleMeasurementsPlugin.viewer.cameraControl;var pointerLens=this.pointerLens;var mouseHovering=false;var hoveredEntity=null;var lastMouseCanvasX=0;var lastMouseCanvasY=0;var mouseWorldPos=math.vec3();var mouseHoverCanvasPos=math.vec2();this._currentAngleMeasurement=null;this._onMouseHoverSurface=cameraControl.on(this._snapping?"hoverSnapOrSurface":"hoverSurface",function(event){if(event.snappedToVertex||event.snappedToEdge){if(pointerLens){pointerLens.visible=true;pointerLens.canvasPos=event.canvasPos;pointerLens.snappedCanvasPos=event.snappedCanvasPos||event.canvasPos;pointerLens.snapped=true;}_this19.markerDiv.style.background="greenyellow";_this19.markerDiv.style.border="2px solid green";}else{if(pointerLens){pointerLens.visible=true;pointerLens.canvasPos=event.canvasPos;pointerLens.snappedCanvasPos=event.canvasPos;pointerLens.snapped=false;}_this19.markerDiv.style.background="pink";_this19.markerDiv.style.border="2px solid red";}var canvasPos=event.snappedCanvasPos||event.canvasPos;mouseHovering=true;hoveredEntity=event.entity;mouseWorldPos.set(event.worldPos);mouseHoverCanvasPos.set(canvasPos);switch(_this19._mouseState){case MOUSE_FINDING_ORIGIN:var canvasBoundRect=canvas.getBoundingClientRect();var scrollLeft=window.pageXOffset||document.documentElement.scrollLeft;var scrollTop=window.pageYOffset||document.documentElement.scrollTop;var canvasLeftEdge=canvasBoundRect.left+scrollLeft;var canvasTopEdge=canvasBoundRect.top+scrollTop;_this19._markerDiv.style.marginLeft="".concat(canvasLeftEdge+canvasPos[0]-5,"px");_this19._markerDiv.style.marginTop="".concat(canvasTopEdge+canvasPos[1]-5,"px");break;case MOUSE_FINDING_CORNER:if(_this19._currentAngleMeasurement){_this19._currentAngleMeasurement.originWireVisible=true;_this19._currentAngleMeasurement.targetWireVisible=false;_this19._currentAngleMeasurement.cornerVisible=true;_this19._currentAngleMeasurement.angleVisible=false;_this19._currentAngleMeasurement.corner.worldPos=event.worldPos;_this19._currentAngleMeasurement.corner.entity=event.entity;}_this19.markerDiv.style.marginLeft="-10000px";_this19.markerDiv.style.marginTop="-10000px";canvas.style.cursor="pointer";break;case MOUSE_FINDING_TARGET:if(_this19._currentAngleMeasurement){_this19._currentAngleMeasurement.targetWireVisible=true;_this19._currentAngleMeasurement.targetVisible=true;_this19._currentAngleMeasurement.angleVisible=true;_this19._currentAngleMeasurement.target.worldPos=event.worldPos;_this19._currentAngleMeasurement.target.entity=event.entity;}_this19.markerDiv.style.marginLeft="-10000px";_this19.markerDiv.style.marginTop="-10000px";canvas.style.cursor="pointer";break;}});canvas.addEventListener('mousedown',this._onMouseDown=function(e){if(e.which!==1){return;}lastMouseCanvasX=e.clientX;lastMouseCanvasY=e.clientY;});canvas.addEventListener("mouseup",this._onMouseUp=function(e){if(e.which!==1){return;}if(e.clientX>lastMouseCanvasX+clickTolerance||e.clientX<lastMouseCanvasX-clickTolerance||e.clientY>lastMouseCanvasY+clickTolerance||e.clientY<lastMouseCanvasY-clickTolerance){return;}switch(_this19._mouseState){case MOUSE_FINDING_ORIGIN:if(mouseHovering){_this19._currentAngleMeasurement=_this19.angleMeasurementsPlugin.createMeasurement({id:math.createUUID(),origin:{worldPos:mouseWorldPos},corner:{worldPos:mouseWorldPos},target:{worldPos:mouseWorldPos},approximate:true});_this19._currentAngleMeasurement.clickable=false;_this19._currentAngleMeasurement.originVisible=true;_this19._currentAngleMeasurement.originWireVisible=true;_this19._currentAngleMeasurement.cornerVisible=false;_this19._currentAngleMeasurement.targetWireVisible=false;_this19._currentAngleMeasurement.targetVisible=false;_this19._currentAngleMeasurement.angleVisible=false;_this19._currentAngleMeasurement.origin.entity=hoveredEntity;_this19._mouseState=MOUSE_FINDING_CORNER;_this19.angleMeasurementsPlugin.fire("measurementStart",_this19._currentAngleMeasurement);}break;case MOUSE_FINDING_CORNER:if(mouseHovering){_this19._currentAngleMeasurement.targetWireVisible=false;_this19._currentAngleMeasurement.targetVisible=true;_this19._currentAngleMeasurement.angleVisible=true;_this19._currentAngleMeasurement.corner.entity=hoveredEntity;_this19._mouseState=MOUSE_FINDING_TARGET;}else{if(_this19._currentAngleMeasurement){_this19._currentAngleMeasurement.destroy();_this19._currentAngleMeasurement=null;hoveredEntity=null;_this19._mouseState=MOUSE_FINDING_ORIGIN;_this19.angleMeasurementsPlugin.fire("measurementCancel",_this19._currentAngleMeasurement);}}break;case MOUSE_FINDING_TARGET:if(mouseHovering){_this19._currentAngleMeasurement.targetVisible=true;_this19._currentAngleMeasurement.angleVisible=true;_this19._currentAngleMeasurement.target.entity=hoveredEntity;_this19._currentAngleMeasurement.clickable=true;hoveredEntity=null;_this19.angleMeasurementsPlugin.fire("measurementEnd",_this19._currentAngleMeasurement);_this19._currentAngleMeasurement=null;_this19._mouseState=MOUSE_FINDING_ORIGIN;}else{if(_this19._currentAngleMeasurement){_this19._currentAngleMeasurement.destroy();_this19._currentAngleMeasurement=null;hoveredEntity=null;_this19._mouseState=MOUSE_FINDING_ORIGIN;_this19.angleMeasurementsPlugin.fire("measurementCancel",_this19._currentAngleMeasurement);}}break;}});this._onMouseHoverOff=cameraControl.on(this._snapping?"hoverSnapOrSurfaceOff":"hoverOff",function(event){mouseHovering=false;if(pointerLens){pointerLens.visible=true;pointerLens.pointerPos=event.canvasPos;pointerLens.snappedCanvasPos=event.snappedCanvasPos||event.canvasPos;pointerLens.snapped=false;}_this19.markerDiv.style.marginLeft="-100px";_this19.markerDiv.style.marginTop="-100px";if(_this19._currentAngleMeasurement){switch(_this19._mouseState){case MOUSE_FINDING_ORIGIN:_this19._currentAngleMeasurement.originVisible=false;break;case MOUSE_FINDING_CORNER:_this19._currentAngleMeasurement.cornerVisible=false;_this19._currentAngleMeasurement.originWireVisible=false;_this19._currentAngleMeasurement.targetVisible=false;_this19._currentAngleMeasurement.targetWireVisible=false;_this19._currentAngleMeasurement.angleVisible=false;break;case MOUSE_FINDING_TARGET:_this19._currentAngleMeasurement.targetVisible=false;_this19._currentAngleMeasurement.targetWireVisible=false;_this19._currentAngleMeasurement.angleVisible=false;break;}canvas.style.cursor="default";}});this._active=true;}/**
2983
2985
  * Deactivates this AngleMeasurementsMouseControl, making it unresponsive to input.
2984
2986
  *
2985
2987
  * Destroys any {@link AngleMeasurement} under construction by this AngleMeasurementsMouseControl.
@@ -3283,8 +3285,8 @@ _this18._initMarkerDiv();_this18._onMouseHoverSurface=null;_this18._onHoverNothi
3283
3285
  */_this22.projection=cfg.projection;return _this22;}/**
3284
3286
  * @private
3285
3287
  */_createClass(Annotation,[{key:"_buildHTML",value:function _buildHTML(){var _this23=this;if(!this._markerExternal){if(this._marker){this._container.removeChild(this._marker);this._marker=null;}var markerHTML=this._markerHTML||"<p></p>";// Make marker
3286
- if(utils.isArray(markerHTML)){markerHTML=markerHTML.join("");}markerHTML=this._renderTemplate(markerHTML);var markerFragment=document.createRange().createContextualFragment(markerHTML);this._marker=markerFragment.firstChild;this._container.appendChild(this._marker);this._marker.style.visibility=this._markerShown?"visible":"hidden";this._marker.addEventListener("click",function(){_this23.plugin.fire("markerClicked",_this23);});this._marker.addEventListener("mouseenter",function(){_this23.plugin.fire("markerMouseEnter",_this23);});this._marker.addEventListener("mouseleave",function(){_this23.plugin.fire("markerMouseLeave",_this23);});this._marker.addEventListener('wheel',function(event){_this23.plugin.viewer.scene.canvas.canvas.dispatchEvent(new WheelEvent('wheel',event));});}if(!this._labelExternal){if(this._label){this._container.removeChild(this._label);this._label=null;}var labelHTML=this._labelHTML||"<p></p>";// Make label
3287
- if(utils.isArray(labelHTML)){labelHTML=labelHTML.join("");}labelHTML=this._renderTemplate(labelHTML);var labelFragment=document.createRange().createContextualFragment(labelHTML);this._label=labelFragment.firstChild;this._container.appendChild(this._label);this._label.style.visibility=this._markerShown&&this._labelShown?"visible":"hidden";this._label.addEventListener('wheel',function(event){_this23.plugin.viewer.scene.canvas.canvas.dispatchEvent(new WheelEvent('wheel',event));});}}/**
3288
+ if(utils.isArray(markerHTML)){markerHTML=markerHTML.join("");}markerHTML=this._renderTemplate(markerHTML.trim());var markerFragment=document.createRange().createContextualFragment(markerHTML);this._marker=markerFragment.firstChild;this._container.appendChild(this._marker);this._marker.style.visibility=this._markerShown?"visible":"hidden";this._marker.addEventListener("click",function(){_this23.plugin.fire("markerClicked",_this23);});this._marker.addEventListener("mouseenter",function(){_this23.plugin.fire("markerMouseEnter",_this23);});this._marker.addEventListener("mouseleave",function(){_this23.plugin.fire("markerMouseLeave",_this23);});this._marker.addEventListener('wheel',function(event){_this23.plugin.viewer.scene.canvas.canvas.dispatchEvent(new WheelEvent('wheel',event));});}if(!this._labelExternal){if(this._label){this._container.removeChild(this._label);this._label=null;}var labelHTML=this._labelHTML||"<p></p>";// Make label
3289
+ if(utils.isArray(labelHTML)){labelHTML=labelHTML.join("");}labelHTML=this._renderTemplate(labelHTML.trim());var labelFragment=document.createRange().createContextualFragment(labelHTML);this._label=labelFragment.firstChild;this._container.appendChild(this._label);this._label.style.visibility=this._markerShown&&this._labelShown?"visible":"hidden";this._label.addEventListener('wheel',function(event){_this23.plugin.viewer.scene.canvas.canvas.dispatchEvent(new WheelEvent('wheel',event));});}}/**
3288
3290
  * @private
3289
3291
  */},{key:"_updatePosition",value:function _updatePosition(){var boundary=this.scene.canvas.boundary;var left=boundary[0];var top=boundary[1];var canvasPos=this.canvasPos;this._marker.style.left=Math.floor(left+canvasPos[0])-12+"px";this._marker.style.top=Math.floor(top+canvasPos[1])-12+"px";this._marker.style["z-index"]=90005+Math.floor(this._viewPos[2])+1;var offsetX=20;var offsetY=-17;this._label.style.left=20+Math.floor(left+canvasPos[0]+offsetX)+"px";this._label.style.top=Math.floor(top+canvasPos[1]+offsetY)+"px";this._label.style["z-index"]=90005+Math.floor(this._viewPos[2])+1;}/**
3290
3292
  * @private
@@ -18947,7 +18949,7 @@ this._originDot.setVisible(this._visible&&this._originVisible);this._targetDot.s
18947
18949
  * @returns {boolean} Whether snap-to-vertex and snap-to-edge are enabled for this DistanceMeasurementsMouseControl.
18948
18950
  */function get(){return this._snapping;}/**
18949
18951
  * Activates this DistanceMeasurementsMouseControl, ready to respond to input.
18950
- */,set:function set(snapping){if(snapping!==this._snapping){this._snapping=snapping;this.deactivate();this.activate();}else{this._snapping=snapping;}}},{key:"activate",value:function activate(){var _this82=this;if(this._active){return;}if(!this._markerDiv){this._initMarkerDiv();}this.fire("activated",true);var distanceMeasurementsPlugin=this.distanceMeasurementsPlugin;var scene=this.scene;var cameraControl=distanceMeasurementsPlugin.viewer.cameraControl;var canvas=scene.canvas.canvas;scene.input;var mouseHovering=false;var pointerWorldPos=math.vec3();var pointerCanvasPos=math.vec2();var pointerDownCanvasX;var pointerDownCanvasY;var clickTolerance=20;var hoveredEntity=null;this._mouseState=MOUSE_FIRST_CLICK_EXPECTED;this._onCameraControlHoverSnapOrSurface=cameraControl.on(this._snapping?"hoverSnapOrSurface":"hoverSurface",function(event){var canvasPos=event.snappedCanvasPos||event.canvasPos;mouseHovering=true;pointerWorldPos.set(event.worldPos);pointerCanvasPos.set(event.canvasPos);if(_this82._mouseState===MOUSE_FIRST_CLICK_EXPECTED){_this82._markerDiv.style.marginLeft="".concat(canvasPos[0]-5,"px");_this82._markerDiv.style.marginTop="".concat(canvasPos[1]-5,"px");_this82._markerDiv.style.background="pink";if(event.snappedToVertex||event.snappedToEdge){if(_this82.pointerLens){_this82.pointerLens.visible=true;_this82.pointerLens.canvasPos=event.canvasPos;_this82.pointerLens.snappedCanvasPos=event.snappedCanvasPos||event.canvasPos;_this82.pointerLens.snapped=true;}_this82._markerDiv.style.background="greenyellow";_this82._markerDiv.style.border="2px solid green";}else{if(_this82.pointerLens){_this82.pointerLens.visible=true;_this82.pointerLens.canvasPos=event.canvasPos;_this82.pointerLens.snappedCanvasPos=event.canvasPos;_this82.pointerLens.snapped=false;}_this82._markerDiv.style.background="pink";_this82._markerDiv.style.border="2px solid red";}hoveredEntity=event.entity;}else{_this82._markerDiv.style.marginLeft="-10000px";_this82._markerDiv.style.marginTop="-10000px";}canvas.style.cursor="pointer";if(_this82._currentDistanceMeasurement){_this82._currentDistanceMeasurement.wireVisible=_this82._currentDistanceMeasurementInitState.wireVisible;_this82._currentDistanceMeasurement.axisVisible=_this82._currentDistanceMeasurementInitState.axisVisible&&_this82.distanceMeasurementsPlugin.defaultAxisVisible;_this82._currentDistanceMeasurement.xAxisVisible=_this82._currentDistanceMeasurementInitState.xAxisVisible&&_this82.distanceMeasurementsPlugin.defaultXAxisVisible;_this82._currentDistanceMeasurement.yAxisVisible=_this82._currentDistanceMeasurementInitState.yAxisVisible&&_this82.distanceMeasurementsPlugin.defaultYAxisVisible;_this82._currentDistanceMeasurement.zAxisVisible=_this82._currentDistanceMeasurementInitState.zAxisVisible&&_this82.distanceMeasurementsPlugin.defaultZAxisVisible;_this82._currentDistanceMeasurement.targetVisible=_this82._currentDistanceMeasurementInitState.targetVisible;_this82._currentDistanceMeasurement.target.worldPos=pointerWorldPos.slice();_this82._markerDiv.style.marginLeft="-10000px";_this82._markerDiv.style.marginTop="-10000px";}});canvas.addEventListener('mousedown',this._onMouseDown=function(e){if(e.which!==1){return;}pointerDownCanvasX=e.clientX;pointerDownCanvasY=e.clientY;});canvas.addEventListener("mouseup",this._onMouseUp=function(e){if(e.which!==1){return;}if(e.clientX>pointerDownCanvasX+clickTolerance||e.clientX<pointerDownCanvasX-clickTolerance||e.clientY>pointerDownCanvasY+clickTolerance||e.clientY<pointerDownCanvasY-clickTolerance){return;}if(_this82._currentDistanceMeasurement){if(mouseHovering){_this82._currentDistanceMeasurement.target.entity=hoveredEntity;hoveredEntity=null;_this82._currentDistanceMeasurement.clickable=true;_this82.distanceMeasurementsPlugin.fire("measurementEnd",_this82._currentDistanceMeasurement);_this82._currentDistanceMeasurement=null;}else{_this82._currentDistanceMeasurement.destroy();_this82.distanceMeasurementsPlugin.fire("measurementCancel",_this82._currentDistanceMeasurement);_this82._currentDistanceMeasurement=null;hoveredEntity=null;}}else{if(mouseHovering){_this82._currentDistanceMeasurement=distanceMeasurementsPlugin.createMeasurement({id:math.createUUID(),origin:{worldPos:pointerWorldPos.slice()},target:{worldPos:pointerWorldPos.slice()},approximate:true});_this82._currentDistanceMeasurementInitState.axisVisible=_this82._currentDistanceMeasurement.axisVisible&&_this82.distanceMeasurementsPlugin.defaultAxisVisible;_this82._currentDistanceMeasurementInitState.xAxisVisible=_this82._currentDistanceMeasurement.xAxisVisible&&_this82.distanceMeasurementsPlugin.defaultXAxisVisible;_this82._currentDistanceMeasurementInitState.yAxisVisible=_this82._currentDistanceMeasurement.yAxisVisible&&_this82.distanceMeasurementsPlugin.defaultYAxisVisible;_this82._currentDistanceMeasurementInitState.zAxisVisible=_this82._currentDistanceMeasurement.zAxisVisible&&_this82.distanceMeasurementsPlugin.defaultZAxisVisible;_this82._currentDistanceMeasurementInitState.wireVisible=_this82._currentDistanceMeasurement.wireVisible;_this82._currentDistanceMeasurementInitState.targetVisible=_this82._currentDistanceMeasurement.targetVisible;_this82._currentDistanceMeasurement.clickable=false;_this82._currentDistanceMeasurement.origin.entity=hoveredEntity;hoveredEntity=null;_this82.fire("measurementStart",_this82._currentDistanceMeasurement);}}});this._onCameraControlHoverSnapOrSurfaceOff=cameraControl.on(this._snapping?"hoverSnapOrSurfaceOff":"hoverOff",function(event){if(_this82.pointerLens){_this82.pointerLens.visible=true;_this82.pointerLens.canvasPos=event.canvasPos;_this82.pointerLens.snappedCanvasPos=event.snappedCanvasPos||event.canvasPos;}mouseHovering=false;_this82._markerDiv.style.marginLeft="-100px";_this82._markerDiv.style.marginTop="-100px";if(_this82._currentDistanceMeasurement){_this82._currentDistanceMeasurement.wireVisible=false;_this82._currentDistanceMeasurement.targetVisible=false;_this82._currentDistanceMeasurement.axisVisible=false;}canvas.style.cursor="default";});this._active=true;}/**
18952
+ */,set:function set(snapping){if(snapping!==this._snapping){this._snapping=snapping;this.deactivate();this.activate();}else{this._snapping=snapping;}}},{key:"activate",value:function activate(){var _this82=this;if(this._active){return;}if(!this._markerDiv){this._initMarkerDiv();}this.fire("activated",true);var distanceMeasurementsPlugin=this.distanceMeasurementsPlugin;var scene=this.scene;var cameraControl=distanceMeasurementsPlugin.viewer.cameraControl;var canvas=scene.canvas.canvas;scene.input;var mouseHovering=false;var pointerWorldPos=math.vec3();var pointerCanvasPos=math.vec2();var pointerDownCanvasX;var pointerDownCanvasY;var clickTolerance=20;var hoveredEntity=null;this._mouseState=MOUSE_FIRST_CLICK_EXPECTED;this._onCameraControlHoverSnapOrSurface=cameraControl.on(this._snapping?"hoverSnapOrSurface":"hoverSurface",function(event){var canvasPos=event.snappedCanvasPos||event.canvasPos;mouseHovering=true;pointerWorldPos.set(event.worldPos);pointerCanvasPos.set(event.canvasPos);if(_this82._mouseState===MOUSE_FIRST_CLICK_EXPECTED){var canvasBoundRect=canvas.getBoundingClientRect();var scrollLeft=window.pageXOffset||document.documentElement.scrollLeft;var scrollTop=window.pageYOffset||document.documentElement.scrollTop;var canvasLeftEdge=canvasBoundRect.left+scrollLeft;var canvasTopEdge=canvasBoundRect.top+scrollTop;_this82._markerDiv.style.marginLeft="".concat(canvasLeftEdge+canvasPos[0]-5,"px");_this82._markerDiv.style.marginTop="".concat(canvasTopEdge+canvasPos[1]-5,"px");_this82._markerDiv.style.background="pink";if(event.snappedToVertex||event.snappedToEdge){if(_this82.pointerLens){_this82.pointerLens.visible=true;_this82.pointerLens.canvasPos=event.canvasPos;_this82.pointerLens.snappedCanvasPos=event.snappedCanvasPos||event.canvasPos;_this82.pointerLens.snapped=true;}_this82._markerDiv.style.background="greenyellow";_this82._markerDiv.style.border="2px solid green";}else{if(_this82.pointerLens){_this82.pointerLens.visible=true;_this82.pointerLens.canvasPos=event.canvasPos;_this82.pointerLens.snappedCanvasPos=event.canvasPos;_this82.pointerLens.snapped=false;}_this82._markerDiv.style.background="pink";_this82._markerDiv.style.border="2px solid red";}hoveredEntity=event.entity;}else{_this82._markerDiv.style.marginLeft="-10000px";_this82._markerDiv.style.marginTop="-10000px";}canvas.style.cursor="pointer";if(_this82._currentDistanceMeasurement){_this82._currentDistanceMeasurement.wireVisible=_this82._currentDistanceMeasurementInitState.wireVisible;_this82._currentDistanceMeasurement.axisVisible=_this82._currentDistanceMeasurementInitState.axisVisible&&_this82.distanceMeasurementsPlugin.defaultAxisVisible;_this82._currentDistanceMeasurement.xAxisVisible=_this82._currentDistanceMeasurementInitState.xAxisVisible&&_this82.distanceMeasurementsPlugin.defaultXAxisVisible;_this82._currentDistanceMeasurement.yAxisVisible=_this82._currentDistanceMeasurementInitState.yAxisVisible&&_this82.distanceMeasurementsPlugin.defaultYAxisVisible;_this82._currentDistanceMeasurement.zAxisVisible=_this82._currentDistanceMeasurementInitState.zAxisVisible&&_this82.distanceMeasurementsPlugin.defaultZAxisVisible;_this82._currentDistanceMeasurement.targetVisible=_this82._currentDistanceMeasurementInitState.targetVisible;_this82._currentDistanceMeasurement.target.worldPos=pointerWorldPos.slice();_this82._markerDiv.style.marginLeft="-10000px";_this82._markerDiv.style.marginTop="-10000px";}});canvas.addEventListener('mousedown',this._onMouseDown=function(e){if(e.which!==1){return;}pointerDownCanvasX=e.clientX;pointerDownCanvasY=e.clientY;});canvas.addEventListener("mouseup",this._onMouseUp=function(e){if(e.which!==1){return;}if(e.clientX>pointerDownCanvasX+clickTolerance||e.clientX<pointerDownCanvasX-clickTolerance||e.clientY>pointerDownCanvasY+clickTolerance||e.clientY<pointerDownCanvasY-clickTolerance){return;}if(_this82._currentDistanceMeasurement){if(mouseHovering){_this82._currentDistanceMeasurement.target.entity=hoveredEntity;hoveredEntity=null;_this82._currentDistanceMeasurement.clickable=true;_this82.distanceMeasurementsPlugin.fire("measurementEnd",_this82._currentDistanceMeasurement);_this82._currentDistanceMeasurement=null;}else{_this82._currentDistanceMeasurement.destroy();_this82.distanceMeasurementsPlugin.fire("measurementCancel",_this82._currentDistanceMeasurement);_this82._currentDistanceMeasurement=null;hoveredEntity=null;}}else{if(mouseHovering){_this82._currentDistanceMeasurement=distanceMeasurementsPlugin.createMeasurement({id:math.createUUID(),origin:{worldPos:pointerWorldPos.slice()},target:{worldPos:pointerWorldPos.slice()},approximate:true});_this82._currentDistanceMeasurementInitState.axisVisible=_this82._currentDistanceMeasurement.axisVisible&&_this82.distanceMeasurementsPlugin.defaultAxisVisible;_this82._currentDistanceMeasurementInitState.xAxisVisible=_this82._currentDistanceMeasurement.xAxisVisible&&_this82.distanceMeasurementsPlugin.defaultXAxisVisible;_this82._currentDistanceMeasurementInitState.yAxisVisible=_this82._currentDistanceMeasurement.yAxisVisible&&_this82.distanceMeasurementsPlugin.defaultYAxisVisible;_this82._currentDistanceMeasurementInitState.zAxisVisible=_this82._currentDistanceMeasurement.zAxisVisible&&_this82.distanceMeasurementsPlugin.defaultZAxisVisible;_this82._currentDistanceMeasurementInitState.wireVisible=_this82._currentDistanceMeasurement.wireVisible;_this82._currentDistanceMeasurementInitState.targetVisible=_this82._currentDistanceMeasurement.targetVisible;_this82._currentDistanceMeasurement.clickable=false;_this82._currentDistanceMeasurement.origin.entity=hoveredEntity;hoveredEntity=null;_this82.fire("measurementStart",_this82._currentDistanceMeasurement);}}});this._onCameraControlHoverSnapOrSurfaceOff=cameraControl.on(this._snapping?"hoverSnapOrSurfaceOff":"hoverOff",function(event){if(_this82.pointerLens){_this82.pointerLens.visible=true;_this82.pointerLens.canvasPos=event.canvasPos;_this82.pointerLens.snappedCanvasPos=event.snappedCanvasPos||event.canvasPos;}mouseHovering=false;_this82._markerDiv.style.marginLeft="-100px";_this82._markerDiv.style.marginTop="-100px";if(_this82._currentDistanceMeasurement){_this82._currentDistanceMeasurement.wireVisible=false;_this82._currentDistanceMeasurement.targetVisible=false;_this82._currentDistanceMeasurement.axisVisible=false;}canvas.style.cursor="default";});this._active=true;}/**
18951
18953
  * Deactivates this DistanceMeasurementsMouseControl, making it unresponsive to input.
18952
18954
  *
18953
18955
  * Destroys any {@link DistanceMeasurement} under construction by this DistanceMeasurementsMouseControl.