x_ite 8.6.19 → 8.6.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/Makefile +1 -4
  2. package/README.md +1 -1
  3. package/build/bin/components.js +45 -0
  4. package/dist/assets/components/Annotation.js +13 -13
  5. package/dist/assets/components/Annotation.min.js +1 -1
  6. package/dist/assets/components/CADGeometry.js +13 -13
  7. package/dist/assets/components/CADGeometry.min.js +1 -1
  8. package/dist/assets/components/CubeMapTexturing.js +25 -25
  9. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  10. package/dist/assets/components/DIS.js +13 -13
  11. package/dist/assets/components/DIS.min.js +1 -1
  12. package/dist/assets/components/EventUtilities.js +9 -9
  13. package/dist/assets/components/EventUtilities.min.js +1 -1
  14. package/dist/assets/components/Geometry2D.js +19 -19
  15. package/dist/assets/components/Geometry2D.min.js +1 -1
  16. package/dist/assets/components/Geospatial.js +33 -33
  17. package/dist/assets/components/Geospatial.min.js +1 -1
  18. package/dist/assets/components/HAnim.js +18 -18
  19. package/dist/assets/components/HAnim.min.js +1 -1
  20. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  21. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  22. package/dist/assets/components/Layout.js +27 -27
  23. package/dist/assets/components/Layout.min.js +1 -1
  24. package/dist/assets/components/NURBS.js +24 -24
  25. package/dist/assets/components/NURBS.min.js +1 -1
  26. package/dist/assets/components/ParticleSystems.js +22 -22
  27. package/dist/assets/components/ParticleSystems.min.js +1 -1
  28. package/dist/assets/components/Picking.js +18 -18
  29. package/dist/assets/components/Picking.min.js +1 -1
  30. package/dist/assets/components/RigidBodyPhysics.js +18 -18
  31. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  32. package/dist/assets/components/Scripting.js +28 -28
  33. package/dist/assets/components/Scripting.min.js +1 -1
  34. package/dist/assets/components/Text.js +24 -24
  35. package/dist/assets/components/Text.min.js +1 -1
  36. package/dist/assets/components/TextureProjector.js +14 -14
  37. package/dist/assets/components/TextureProjector.min.js +1 -1
  38. package/dist/assets/components/Texturing3D.js +30 -30
  39. package/dist/assets/components/Texturing3D.min.js +1 -1
  40. package/dist/assets/components/VolumeRendering.js +19 -19
  41. package/dist/assets/components/VolumeRendering.min.js +1 -1
  42. package/dist/assets/components/X_ITE.js +9 -9
  43. package/dist/assets/components/X_ITE.min.js +1 -1
  44. package/dist/x_ite.css +1 -1
  45. package/dist/x_ite.js +796 -654
  46. package/dist/x_ite.min.js +1 -1
  47. package/dist/x_ite.zip +0 -0
  48. package/docs/_config.yml +2 -2
  49. package/docs/_posts/dom-integration.md +14 -12
  50. package/docs/_posts/getting-started.md +31 -29
  51. package/docs/_posts/reference/ecmascript-object-and-function-definitions.md +1 -1
  52. package/docs/_posts/reference/scene-services.md +6 -3
  53. package/docs/_posts/report-a-bug.md +5 -3
  54. package/docs/_posts/setup-a-localhost-server.md +7 -7
  55. package/docs/_posts/tutorials/writing-program-scripts-with-ecmascript.md +1 -1
  56. package/docs/_tabs/playground.html +31 -28
  57. package/package.json +1 -1
  58. package/src/locale/de.po.js +9 -0
  59. package/src/locale/fr.po.js +31 -25
  60. package/src/tests.js +1 -0
  61. package/src/x_ite/Base/X3DBaseNode.js +2 -12
  62. package/src/x_ite/Base/X3DInfoArray.js +0 -2
  63. package/src/x_ite/Base/X3DObjectArrayField.js +0 -2
  64. package/src/x_ite/Base/X3DTypedArrayField.js +0 -2
  65. package/src/x_ite/Browser/Core/BrowserTimings.js +147 -67
  66. package/src/x_ite/Browser/Core/ContextMenu.js +2 -2
  67. package/src/x_ite/Browser/Core/X3DCoreContext.js +6 -2
  68. package/src/x_ite/Browser/Navigation/ExamineViewer.js +3 -0
  69. package/src/x_ite/Browser/Navigation/LookAtViewer.js +3 -0
  70. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +13 -5
  71. package/src/x_ite/Browser/VERSION.js +1 -1
  72. package/src/x_ite/Browser/X3DBrowser.js +14 -22
  73. package/src/x_ite/Browser/X3DBrowserContext.js +0 -1
  74. package/src/x_ite/Components/Core/X3DNode.js +40 -9
  75. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +5 -5
  76. package/src/x_ite/Configuration/ComponentInfo.js +2 -1
  77. package/src/x_ite/Configuration/ProfileInfo.js +1 -0
  78. package/src/x_ite/Configuration/UnitInfo.js +3 -5
  79. package/src/x_ite/Execution/BindableList.js +34 -27
  80. package/src/x_ite/Execution/BindableStack.js +15 -17
  81. package/src/x_ite/Execution/X3DExecutionContext.js +11 -21
  82. package/src/x_ite/Execution/X3DExportedNode.js +1 -3
  83. package/src/x_ite/Execution/X3DImportedNode.js +2 -6
  84. package/src/x_ite/Execution/X3DScene.js +30 -28
  85. package/src/x_ite/Fields/ArrayFields.js +4 -4
  86. package/src/x_ite/Fields/SFColor.js +0 -3
  87. package/src/x_ite/Fields/SFColorRGBA.js +0 -4
  88. package/src/x_ite/Fields/SFImage.js +0 -4
  89. package/src/x_ite/Fields/SFMatrix3.js +0 -1
  90. package/src/x_ite/Fields/SFMatrix4.js +0 -1
  91. package/src/x_ite/Fields/SFRotation.js +0 -4
  92. package/src/x_ite/Fields/SFString.js +7 -4
  93. package/src/x_ite/Fields/SFVec2.js +0 -2
  94. package/src/x_ite/Fields/SFVec3.js +0 -3
  95. package/src/x_ite/Fields/SFVec4.js +0 -4
  96. package/src/x_ite/InputOutput/FileLoader.js +13 -18
  97. package/src/x_ite/InputOutput/Generator.js +86 -16
  98. package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +6 -11
  99. package/src/x_ite/Prototype/X3DProtoDeclaration.js +5 -8
  100. package/src/x_ite/Routing/X3DRoute.js +1 -5
  101. package/src/x_ite/X3DCanvasElement.js +2 -0
  102. package/src/x_ite.css +5 -1
  103. package/src/x_ite.html +4 -36
  104. package/x_ite.min.html +4 -36
package/dist/x_ite.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v8.6.19 */(function webpackUniversalModuleDefinition(root, factory) {
1
+ /* X_ITE v8.6.22 */(function webpackUniversalModuleDefinition(root, factory) {
2
2
  if(typeof exports === 'object' && typeof module === 'object')
3
3
  module.exports = factory();
4
4
  else if(typeof define === 'function' && define.amd)
@@ -11,11 +11,11 @@
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
- /***/ 544:
14
+ /***/ 945:
15
15
  /***/ (function(module, exports, __webpack_require__) {
16
16
 
17
17
  "use strict";
18
- /* provided dependency */ var jQuery = __webpack_require__(849);
18
+ /* provided dependency */ var jQuery = __webpack_require__(714);
19
19
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
20
20
 
21
21
  /**
@@ -387,10 +387,10 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
387
387
 
388
388
  /***/ }),
389
389
 
390
- /***/ 865:
390
+ /***/ 526:
391
391
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
392
392
 
393
- /* provided dependency */ var jQuery = __webpack_require__(849);
393
+ /* provided dependency */ var jQuery = __webpack_require__(714);
394
394
  /**
395
395
  * @preserve jquery.fullscreen 1.1.5
396
396
  * https://github.com/code-lts/jquery-fullscreen-plugin
@@ -586,7 +586,7 @@ installFullScreenHandlers();
586
586
 
587
587
  /***/ }),
588
588
 
589
- /***/ 242:
589
+ /***/ 510:
590
590
  /***/ ((module, exports, __webpack_require__) => {
591
591
 
592
592
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -600,7 +600,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
600
600
  (function (factory) {
601
601
  if ( true ) {
602
602
  // AMD. Register as an anonymous module.
603
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(849)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
603
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(714)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
604
604
  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
605
605
  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
606
606
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -811,7 +811,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
811
811
 
812
812
  /***/ }),
813
813
 
814
- /***/ 849:
814
+ /***/ 714:
815
815
  /***/ (function(module, exports) {
816
816
 
817
817
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -11784,7 +11784,7 @@ return jQuery;
11784
11784
 
11785
11785
  /***/ }),
11786
11786
 
11787
- /***/ 625:
11787
+ /***/ 51:
11788
11788
  /***/ ((module) => {
11789
11789
 
11790
11790
  /**
@@ -16563,7 +16563,7 @@ if (true) {
16563
16563
 
16564
16564
  /***/ }),
16565
16565
 
16566
- /***/ 494:
16566
+ /***/ 671:
16567
16567
  /***/ (function(__unused_webpack_module, exports) {
16568
16568
 
16569
16569
 
@@ -19808,7 +19808,7 @@ if (true) {
19808
19808
 
19809
19809
  /***/ }),
19810
19810
 
19811
- /***/ 339:
19811
+ /***/ 997:
19812
19812
  /***/ (function(module, exports) {
19813
19813
 
19814
19814
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -21152,6 +21152,245 @@ const getUniqueName = function (array, name = "", number = false)
21152
21152
  return newName;
21153
21153
  };
21154
21154
 
21155
+ ;// CONCATENATED MODULE: ./src/standard/Math/Algorithm.js
21156
+ /*******************************************************************************
21157
+ *
21158
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
21159
+ *
21160
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
21161
+ *
21162
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
21163
+ *
21164
+ * The copyright notice above does not evidence any actual of intended
21165
+ * publication of such source code, and is an unpublished work by create3000.
21166
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
21167
+ * create3000.
21168
+ *
21169
+ * No permission is granted to copy, distribute, or create derivative works from
21170
+ * the contents of this software, in whole or in part, without the prior written
21171
+ * permission of create3000.
21172
+ *
21173
+ * NON-MILITARY USE ONLY
21174
+ *
21175
+ * All create3000 software are effectively free software with a non-military use
21176
+ * restriction. It is free. Well commented source is provided. You may reuse the
21177
+ * source in any way you please with the exception anything that uses it must be
21178
+ * marked to indicate is contains 'non-military use only' components.
21179
+ *
21180
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
21181
+ *
21182
+ * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
21183
+ *
21184
+ * This file is part of the X_ITE Project.
21185
+ *
21186
+ * X_ITE is free software: you can redistribute it and/or modify it under the
21187
+ * terms of the GNU General Public License version 3 only, as published by the
21188
+ * Free Software Foundation.
21189
+ *
21190
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
21191
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
21192
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
21193
+ * details (a copy is included in the LICENSE file that accompanied this code).
21194
+ *
21195
+ * You should have received a copy of the GNU General Public License version 3
21196
+ * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
21197
+ * copy of the GPLv3 License.
21198
+ *
21199
+ * For Silvio, Joy and Adi.
21200
+ *
21201
+ ******************************************************************************/
21202
+
21203
+ const Algorithm_default_ = class Algorithm
21204
+ {
21205
+ static radians (value)
21206
+ {
21207
+ return value * (Math .PI / 180);
21208
+ }
21209
+
21210
+ static degrees (value)
21211
+ {
21212
+ return value * (180 / Math .PI);
21213
+ }
21214
+
21215
+ static random (min, max)
21216
+ {
21217
+ return min + Math .random () * (max - min);
21218
+ }
21219
+
21220
+ static fract (value)
21221
+ {
21222
+ return value % 1;
21223
+ }
21224
+
21225
+ static clamp (value, min, max)
21226
+ {
21227
+ // https://registry.khronos.org/OpenGL-Refpages/gl4/html/clamp.xhtml
21228
+ return Math .min (Math .max (value, min), max);
21229
+ }
21230
+
21231
+ static interval (value, low, high)
21232
+ {
21233
+ if (value >= high)
21234
+ return ((value - low) % (high - low)) + low;
21235
+
21236
+ if (value < low)
21237
+ return ((value - high) % (high - low)) + high;
21238
+
21239
+ return value;
21240
+ }
21241
+
21242
+ static lerp (source, destination, t)
21243
+ {
21244
+ return source + t * (destination - source);
21245
+ }
21246
+
21247
+ static slerp (source, destination, t)
21248
+ {
21249
+ let cosom = source .dot (destination);
21250
+
21251
+ // if (cosom <= -1) ... vectors are inverse colinear.
21252
+
21253
+ if (cosom >= 1) // Both normal vectors are equal.
21254
+ return source;
21255
+
21256
+ if (cosom < 0)
21257
+ {
21258
+ // Reverse signs so we travel the short way round.
21259
+ cosom = -cosom;
21260
+ destination .negate ();
21261
+ }
21262
+
21263
+ const
21264
+ omega = Math .acos (cosom),
21265
+ sinom = Math .sin (omega),
21266
+ scale0 = Math .sin ((1 - t) * omega) / sinom,
21267
+ scale1 = Math .sin (t * omega) / sinom;
21268
+
21269
+ source .x = source .x * scale0 + destination .x * scale1;
21270
+ source .y = source .y * scale0 + destination .y * scale1;
21271
+ source .z = source .z * scale0 + destination .z * scale1;
21272
+ source .w = source .w * scale0 + destination .w * scale1;
21273
+
21274
+ return source;
21275
+ }
21276
+
21277
+ static simpleSlerp (source, destination, t)
21278
+ {
21279
+ const cosom = source .dot (destination);
21280
+
21281
+ // if (cosom <= -1) ... vectors are inverse colinear.
21282
+
21283
+ if (cosom >= 1) // Both normal vectors are equal.
21284
+ return source;
21285
+
21286
+ const
21287
+ omega = Math .acos (cosom),
21288
+ sinom = Math .sin (omega),
21289
+ scale0 = Math .sin ((1 - t) * omega) / sinom,
21290
+ scale1 = Math .sin (t * omega) / sinom;
21291
+
21292
+ source .x = source .x * scale0 + destination .x * scale1;
21293
+ source .y = source .y * scale0 + destination .y * scale1;
21294
+ source .z = source .z * scale0 + destination .z * scale1;
21295
+ source .w = source .w * scale0 + destination .w * scale1;
21296
+
21297
+ return source;
21298
+ }
21299
+
21300
+ static isPowerOfTwo (n)
21301
+ {
21302
+ return ((n - 1) & n) === 0;
21303
+ }
21304
+
21305
+ static nextPowerOfTwo (n)
21306
+ {
21307
+ /// Returns the next power of two of @a n. If n is a power of two, n is returned.
21308
+
21309
+ if (this .isPowerOfTwo (n))
21310
+ return n;
21311
+
21312
+ return 1 << (32 - Math .clz32 (n));
21313
+ }
21314
+
21315
+ static bitCount (n)
21316
+ {
21317
+ n = n - ((n >>> 1) & 0x55555555);
21318
+ n = (n & 0x33333333) + ((n >>> 2) & 0x33333333);
21319
+ return ((n + (n >>> 4) & 0xF0F0F0F) * 0x1010101) >>> 24;
21320
+ }
21321
+
21322
+ static cmp (lhs, rhs)
21323
+ {
21324
+ return lhs > rhs ? 1 : lhs < rhs ? -1 : 0;
21325
+ }
21326
+
21327
+ static less (lhs, rhs)
21328
+ {
21329
+ return lhs < rhs;
21330
+ }
21331
+
21332
+ static greater (lhs, rhs)
21333
+ {
21334
+ return lhs > rhs;
21335
+ }
21336
+
21337
+ static lowerBound (array, first, last, value, comp = this.less)
21338
+ {
21339
+ // https://en.cppreference.com/w/cpp/algorithm/lower_bound
21340
+
21341
+ let
21342
+ index = 0,
21343
+ step = 0,
21344
+ count = last - first;
21345
+
21346
+ while (count > 0)
21347
+ {
21348
+ step = count >>> 1;
21349
+ index = first + step;
21350
+
21351
+ if (comp (array [index], value))
21352
+ {
21353
+ first = ++ index;
21354
+ count -= step + 1;
21355
+ }
21356
+ else
21357
+ count = step;
21358
+ }
21359
+
21360
+ return first;
21361
+ }
21362
+
21363
+ static upperBound (array, first, last, value, comp = this.less)
21364
+ {
21365
+ // sen.cppreference.com/w/cpp/algorithm/upper_bound
21366
+
21367
+ let
21368
+ index = 0,
21369
+ step = 0,
21370
+ count = last - first;
21371
+
21372
+ while (count > 0)
21373
+ {
21374
+ step = count >>> 1;
21375
+ index = first + step;
21376
+
21377
+ if (comp (value, array [index]))
21378
+ count = step;
21379
+
21380
+ else
21381
+ {
21382
+ first = ++ index;
21383
+ count -= step + 1;
21384
+ }
21385
+ }
21386
+
21387
+ return first;
21388
+ }
21389
+ }
21390
+ ;
21391
+
21392
+ x_ite_Namespace.set ("standard/Math/Algorithm", Algorithm_default_);
21393
+ /* harmony default export */ const Algorithm = (Algorithm_default_);
21155
21394
  ;// CONCATENATED MODULE: ./src/x_ite/InputOutput/Generator.js
21156
21395
  /*******************************************************************************
21157
21396
  *
@@ -21203,16 +21442,42 @@ const getUniqueName = function (array, name = "", number = false)
21203
21442
 
21204
21443
 
21205
21444
 
21206
- function Generator ({ style = "TIDY", precision = 7, doublePrecision = 15 })
21445
+
21446
+ function Generator ({ style = "TIDY", indent = "", precision = 7, doublePrecision = 15, html = false, closingTags = false })
21207
21447
  {
21208
- this .Style (style);
21448
+ this .string = "";
21449
+ this .indent = indent;
21450
+ this .listIndent = indent;
21451
+ this .precision = Algorithm.clamp (precision, 1, 21);
21452
+ this .doublePrecision = Algorithm.clamp (doublePrecision, 1, 21);
21453
+ this .html = html;
21454
+ this .closingTags = html || closingTags;
21209
21455
 
21210
- this .string = "";
21211
- this .indent = "";
21212
- this .listIndent = "";
21213
- this .precision = precision;
21214
- this .doublePrecision = doublePrecision;
21215
- this .removeTrailingZeros = /(?:\.|(\.[0-9]*?))0*(?=[eE]|$)/;
21456
+ this .floatFormat = new Intl .NumberFormat ("en", {
21457
+ notation: "standard",
21458
+ maximumSignificantDigits: this .precision,
21459
+ useGrouping: false,
21460
+ }) .format;
21461
+
21462
+ this .floatExponentialFormat = new Intl .NumberFormat ("en", {
21463
+ notation: "scientific",
21464
+ maximumSignificantDigits: this .precision,
21465
+ useGrouping: false,
21466
+ }) .format;
21467
+
21468
+ this .doubleFormat = new Intl .NumberFormat ("en", {
21469
+ notation: "standard",
21470
+ maximumSignificantDigits: this .doublePrecision,
21471
+ useGrouping: false,
21472
+ }) .format;
21473
+
21474
+ this .doubleExponentialFormat = new Intl .NumberFormat ("en", {
21475
+ notation: "scientific",
21476
+ maximumSignificantDigits: this .doublePrecision,
21477
+ useGrouping: false,
21478
+ }) .format;
21479
+
21480
+ this .Style (style);
21216
21481
 
21217
21482
  this .executionContextStack = [ null ];
21218
21483
  this .importedNodesIndex = new Map ();
@@ -21239,6 +21504,8 @@ Generator .prototype =
21239
21504
  {
21240
21505
  case "CLEAN":
21241
21506
  {
21507
+ this .listIndent = "";
21508
+
21242
21509
  this .comma = " ";
21243
21510
  this .break = " ";
21244
21511
  this .tidyBreak = "";
@@ -21252,6 +21519,8 @@ Generator .prototype =
21252
21519
  }
21253
21520
  case "SMALL":
21254
21521
  {
21522
+ this .listIndent = "";
21523
+
21255
21524
  this .comma = ",";
21256
21525
  this .break = "\n";
21257
21526
  this .tidyBreak = "\n";
@@ -21265,6 +21534,8 @@ Generator .prototype =
21265
21534
  }
21266
21535
  case "COMPACT":
21267
21536
  {
21537
+ this .listIndent = "";
21538
+
21268
21539
  this .comma = ",";
21269
21540
  this .break = "\n";
21270
21541
  this .tidyBreak = "\n";
@@ -21349,18 +21620,42 @@ Generator .prototype =
21349
21620
  },
21350
21621
  DecIndent: function ()
21351
21622
  {
21352
- this .indent = this .indent .slice (0, this .indent .length - this .indentChar .length);
21623
+ this .indent = this .indent .slice (0, this .indent .length - this .indentChar .length);
21353
21624
  this .listIndent = this .listIndent .slice (0, this .listIndent .length - this .listIndentChar .length);
21354
21625
 
21355
21626
  return "";
21356
21627
  },
21357
- Precision: function (value)
21628
+ Precision: function (value)
21358
21629
  {
21359
- return Math .fround (value) .toPrecision (this .precision) .replace (this .removeTrailingZeros, "$1");
21630
+ if (Number .isFinite (value))
21631
+ {
21632
+ const exponent = Math .log10 (Math .abs (value));
21633
+
21634
+ if ((this .precision > exponent && exponent >= -4) || value === 0)
21635
+ return this .floatFormat (Math .fround (value));
21636
+
21637
+ return this .floatExponentialFormat (Math .fround (value)) .toLowerCase ();
21638
+ }
21639
+ else
21640
+ {
21641
+ return String (value);
21642
+ }
21360
21643
  },
21361
- DoublePrecision: function (value)
21644
+ DoublePrecision: function (value)
21362
21645
  {
21363
- return value .toPrecision (this .doublePrecision) .replace (this .removeTrailingZeros, "$1");
21646
+ if (Number .isFinite (value))
21647
+ {
21648
+ const exponent = Math .log10 (Math .abs (value));
21649
+
21650
+ if ((this .doublePrecision > exponent && exponent >= -4) || value === 0)
21651
+ return this .doubleFormat (value);
21652
+
21653
+ return this .doubleExponentialFormat (value) .toLowerCase ();
21654
+ }
21655
+ else
21656
+ {
21657
+ return String (value);
21658
+ }
21364
21659
  },
21365
21660
  PushExecutionContext: function (executionContext)
21366
21661
  {
@@ -21626,10 +21921,24 @@ Generator .prototype =
21626
21921
  return string .replace (regex, char => map [char]);
21627
21922
  };
21628
21923
  })(),
21629
- escapeCDATA: function (string)
21924
+ XMLEncodeSourceText: (function ()
21630
21925
  {
21631
- return string .replace (/\]\]\>/g, "\\]\\]\\>");
21632
- },
21926
+ const map = {
21927
+ "\\": "\\\\",
21928
+ "\"": "\\\"",
21929
+ "'": "&apos;",
21930
+ "<": "&lt;",
21931
+ ">": "&gt;",
21932
+ "&": "&amp;",
21933
+ };
21934
+
21935
+ const regex = /([\\"'<>&])/g;
21936
+
21937
+ return function (string)
21938
+ {
21939
+ return string .replace (regex, char => map [char]);
21940
+ };
21941
+ })(),
21633
21942
  JSONEncode: (function ()
21634
21943
  {
21635
21944
  const map = {
@@ -22752,8 +23061,6 @@ for (const key of Reflect .ownKeys (X3DInfoArray .prototype))
22752
23061
  Object .defineProperty (X3DInfoArray .prototype, "length",
22753
23062
  {
22754
23063
  get: function () { return this [_array] .length; },
22755
- enumerable: false,
22756
- configurable: false,
22757
23064
  });
22758
23065
 
22759
23066
  const X3DInfoArray_default_ = X3DInfoArray;
@@ -23451,245 +23758,6 @@ const SFBool_default_ = SFBool;
23451
23758
 
23452
23759
  x_ite_Namespace.set ("x_ite/Fields/SFBool", SFBool_default_);
23453
23760
  /* harmony default export */ const Fields_SFBool = (SFBool_default_);
23454
- ;// CONCATENATED MODULE: ./src/standard/Math/Algorithm.js
23455
- /*******************************************************************************
23456
- *
23457
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
23458
- *
23459
- * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
23460
- *
23461
- * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
23462
- *
23463
- * The copyright notice above does not evidence any actual of intended
23464
- * publication of such source code, and is an unpublished work by create3000.
23465
- * This material contains CONFIDENTIAL INFORMATION that is the property of
23466
- * create3000.
23467
- *
23468
- * No permission is granted to copy, distribute, or create derivative works from
23469
- * the contents of this software, in whole or in part, without the prior written
23470
- * permission of create3000.
23471
- *
23472
- * NON-MILITARY USE ONLY
23473
- *
23474
- * All create3000 software are effectively free software with a non-military use
23475
- * restriction. It is free. Well commented source is provided. You may reuse the
23476
- * source in any way you please with the exception anything that uses it must be
23477
- * marked to indicate is contains 'non-military use only' components.
23478
- *
23479
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
23480
- *
23481
- * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
23482
- *
23483
- * This file is part of the X_ITE Project.
23484
- *
23485
- * X_ITE is free software: you can redistribute it and/or modify it under the
23486
- * terms of the GNU General Public License version 3 only, as published by the
23487
- * Free Software Foundation.
23488
- *
23489
- * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
23490
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
23491
- * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
23492
- * details (a copy is included in the LICENSE file that accompanied this code).
23493
- *
23494
- * You should have received a copy of the GNU General Public License version 3
23495
- * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
23496
- * copy of the GPLv3 License.
23497
- *
23498
- * For Silvio, Joy and Adi.
23499
- *
23500
- ******************************************************************************/
23501
-
23502
- const Algorithm_default_ = class Algorithm
23503
- {
23504
- static radians (value)
23505
- {
23506
- return value * (Math .PI / 180);
23507
- }
23508
-
23509
- static degrees (value)
23510
- {
23511
- return value * (180 / Math .PI);
23512
- }
23513
-
23514
- static random (min, max)
23515
- {
23516
- return min + Math .random () * (max - min);
23517
- }
23518
-
23519
- static fract (value)
23520
- {
23521
- return value % 1;
23522
- }
23523
-
23524
- static clamp (value, min, max)
23525
- {
23526
- // https://registry.khronos.org/OpenGL-Refpages/gl4/html/clamp.xhtml
23527
- return Math .min (Math .max (value, min), max);
23528
- }
23529
-
23530
- static interval (value, low, high)
23531
- {
23532
- if (value >= high)
23533
- return ((value - low) % (high - low)) + low;
23534
-
23535
- if (value < low)
23536
- return ((value - high) % (high - low)) + high;
23537
-
23538
- return value;
23539
- }
23540
-
23541
- static lerp (source, destination, t)
23542
- {
23543
- return source + t * (destination - source);
23544
- }
23545
-
23546
- static slerp (source, destination, t)
23547
- {
23548
- let cosom = source .dot (destination);
23549
-
23550
- // if (cosom <= -1) ... vectors are inverse colinear.
23551
-
23552
- if (cosom >= 1) // Both normal vectors are equal.
23553
- return source;
23554
-
23555
- if (cosom < 0)
23556
- {
23557
- // Reverse signs so we travel the short way round.
23558
- cosom = -cosom;
23559
- destination .negate ();
23560
- }
23561
-
23562
- const
23563
- omega = Math .acos (cosom),
23564
- sinom = Math .sin (omega),
23565
- scale0 = Math .sin ((1 - t) * omega) / sinom,
23566
- scale1 = Math .sin (t * omega) / sinom;
23567
-
23568
- source .x = source .x * scale0 + destination .x * scale1;
23569
- source .y = source .y * scale0 + destination .y * scale1;
23570
- source .z = source .z * scale0 + destination .z * scale1;
23571
- source .w = source .w * scale0 + destination .w * scale1;
23572
-
23573
- return source;
23574
- }
23575
-
23576
- static simpleSlerp (source, destination, t)
23577
- {
23578
- const cosom = source .dot (destination);
23579
-
23580
- // if (cosom <= -1) ... vectors are inverse colinear.
23581
-
23582
- if (cosom >= 1) // Both normal vectors are equal.
23583
- return source;
23584
-
23585
- const
23586
- omega = Math .acos (cosom),
23587
- sinom = Math .sin (omega),
23588
- scale0 = Math .sin ((1 - t) * omega) / sinom,
23589
- scale1 = Math .sin (t * omega) / sinom;
23590
-
23591
- source .x = source .x * scale0 + destination .x * scale1;
23592
- source .y = source .y * scale0 + destination .y * scale1;
23593
- source .z = source .z * scale0 + destination .z * scale1;
23594
- source .w = source .w * scale0 + destination .w * scale1;
23595
-
23596
- return source;
23597
- }
23598
-
23599
- static isPowerOfTwo (n)
23600
- {
23601
- return ((n - 1) & n) === 0;
23602
- }
23603
-
23604
- static nextPowerOfTwo (n)
23605
- {
23606
- /// Returns the next power of two of @a n. If n is a power of two, n is returned.
23607
-
23608
- if (this .isPowerOfTwo (n))
23609
- return n;
23610
-
23611
- return 1 << (32 - Math .clz32 (n));
23612
- }
23613
-
23614
- static bitCount (n)
23615
- {
23616
- n = n - ((n >>> 1) & 0x55555555);
23617
- n = (n & 0x33333333) + ((n >>> 2) & 0x33333333);
23618
- return ((n + (n >>> 4) & 0xF0F0F0F) * 0x1010101) >>> 24;
23619
- }
23620
-
23621
- static cmp (lhs, rhs)
23622
- {
23623
- return lhs > rhs ? 1 : lhs < rhs ? -1 : 0;
23624
- }
23625
-
23626
- static less (lhs, rhs)
23627
- {
23628
- return lhs < rhs;
23629
- }
23630
-
23631
- static greater (lhs, rhs)
23632
- {
23633
- return lhs > rhs;
23634
- }
23635
-
23636
- static lowerBound (array, first, last, value, comp = this.less)
23637
- {
23638
- // https://en.cppreference.com/w/cpp/algorithm/lower_bound
23639
-
23640
- let
23641
- index = 0,
23642
- step = 0,
23643
- count = last - first;
23644
-
23645
- while (count > 0)
23646
- {
23647
- step = count >>> 1;
23648
- index = first + step;
23649
-
23650
- if (comp (array [index], value))
23651
- {
23652
- first = ++ index;
23653
- count -= step + 1;
23654
- }
23655
- else
23656
- count = step;
23657
- }
23658
-
23659
- return first;
23660
- }
23661
-
23662
- static upperBound (array, first, last, value, comp = this.less)
23663
- {
23664
- // sen.cppreference.com/w/cpp/algorithm/upper_bound
23665
-
23666
- let
23667
- index = 0,
23668
- step = 0,
23669
- count = last - first;
23670
-
23671
- while (count > 0)
23672
- {
23673
- step = count >>> 1;
23674
- index = first + step;
23675
-
23676
- if (comp (value, array [index]))
23677
- count = step;
23678
-
23679
- else
23680
- {
23681
- first = ++ index;
23682
- count -= step + 1;
23683
- }
23684
- }
23685
-
23686
- return first;
23687
- }
23688
- }
23689
- ;
23690
-
23691
- x_ite_Namespace.set ("standard/Math/Algorithm", Algorithm_default_);
23692
- /* harmony default export */ const Algorithm = (Algorithm_default_);
23693
23761
  ;// CONCATENATED MODULE: ./src/standard/Math/Numbers/Color3.js
23694
23762
  /*******************************************************************************
23695
23763
  *
@@ -24154,7 +24222,6 @@ const SFColor_r = {
24154
24222
  this .addEvent ();
24155
24223
  },
24156
24224
  enumerable: true,
24157
- configurable: false
24158
24225
  };
24159
24226
 
24160
24227
  const SFColor_g = {
@@ -24168,7 +24235,6 @@ const SFColor_g = {
24168
24235
  this .addEvent ();
24169
24236
  },
24170
24237
  enumerable: true,
24171
- configurable: false
24172
24238
  };
24173
24239
 
24174
24240
  const SFColor_b = {
@@ -24182,7 +24248,6 @@ const SFColor_b = {
24182
24248
  this .addEvent ();
24183
24249
  },
24184
24250
  enumerable: true,
24185
- configurable: false
24186
24251
  };
24187
24252
 
24188
24253
  Object .defineProperty (SFColor .prototype, "r", SFColor_r);
@@ -24552,7 +24617,6 @@ const SFColorRGBA_r = {
24552
24617
  this .addEvent ();
24553
24618
  },
24554
24619
  enumerable: true,
24555
- configurable: false
24556
24620
  };
24557
24621
 
24558
24622
  const SFColorRGBA_g = {
@@ -24566,7 +24630,6 @@ const SFColorRGBA_g = {
24566
24630
  this .addEvent ();
24567
24631
  },
24568
24632
  enumerable: true,
24569
- configurable: false
24570
24633
  };
24571
24634
 
24572
24635
  const SFColorRGBA_b = {
@@ -24580,7 +24643,6 @@ const SFColorRGBA_b = {
24580
24643
  this .addEvent ();
24581
24644
  },
24582
24645
  enumerable: true,
24583
- configurable: false
24584
24646
  };
24585
24647
 
24586
24648
  const SFColorRGBA_a = {
@@ -24594,7 +24656,6 @@ const SFColorRGBA_a = {
24594
24656
  this .addEvent ();
24595
24657
  },
24596
24658
  enumerable: true,
24597
- configurable: false
24598
24659
  };
24599
24660
 
24600
24661
  Object .defineProperty (SFColorRGBA .prototype, "r", SFColorRGBA_r);
@@ -25757,7 +25818,6 @@ function SFVec2Template (TypeName, Type, double)
25757
25818
  this .addEvent ();
25758
25819
  },
25759
25820
  enumerable: true,
25760
- configurable: false
25761
25821
  };
25762
25822
 
25763
25823
  const y = {
@@ -25771,7 +25831,6 @@ function SFVec2Template (TypeName, Type, double)
25771
25831
  this .addEvent ();
25772
25832
  },
25773
25833
  enumerable: true,
25774
- configurable: false
25775
25834
  };
25776
25835
 
25777
25836
  Object .defineProperty (SFVec2 .prototype, "x", x);
@@ -27495,7 +27554,6 @@ function SFMatrix3Template (TypeName, Type, SFVec2, double)
27495
27554
  this .addEvent ();
27496
27555
  },
27497
27556
  enumerable: true,
27498
- configurable: false,
27499
27557
  });
27500
27558
  }
27501
27559
 
@@ -27611,7 +27669,6 @@ function SFVec3Template (TypeName, Type, double)
27611
27669
  this .addEvent ();
27612
27670
  },
27613
27671
  enumerable: true,
27614
- configurable: false
27615
27672
  };
27616
27673
 
27617
27674
  const y = {
@@ -27625,7 +27682,6 @@ function SFVec3Template (TypeName, Type, double)
27625
27682
  this .addEvent ();
27626
27683
  },
27627
27684
  enumerable: true,
27628
- configurable: false
27629
27685
  };
27630
27686
 
27631
27687
  const z = {
@@ -27639,7 +27695,6 @@ function SFVec3Template (TypeName, Type, double)
27639
27695
  this .addEvent ();
27640
27696
  },
27641
27697
  enumerable: true,
27642
- configurable: false
27643
27698
  };
27644
27699
 
27645
27700
  Object .defineProperty (SFVec3 .prototype, "x", x);
@@ -30051,7 +30106,6 @@ function SFMatrix4Template (TypeName, Type, SFVec3, double)
30051
30106
  this .addEvent ();
30052
30107
  },
30053
30108
  enumerable: true,
30054
- configurable: false,
30055
30109
  });
30056
30110
  }
30057
30111
 
@@ -30872,7 +30926,6 @@ const SFRotation_x = {
30872
30926
  this .addEvent ();
30873
30927
  },
30874
30928
  enumerable: true,
30875
- configurable: false
30876
30929
  };
30877
30930
 
30878
30931
  const SFRotation_y = {
@@ -30886,7 +30939,6 @@ const SFRotation_y = {
30886
30939
  this .addEvent ();
30887
30940
  },
30888
30941
  enumerable: true,
30889
- configurable: false
30890
30942
  };
30891
30943
 
30892
30944
  const SFRotation_z = {
@@ -30900,7 +30952,6 @@ const SFRotation_z = {
30900
30952
  this .addEvent ();
30901
30953
  },
30902
30954
  enumerable: true,
30903
- configurable: false
30904
30955
  };
30905
30956
 
30906
30957
  const SFRotation_angle = {
@@ -30914,7 +30965,6 @@ const SFRotation_angle = {
30914
30965
  this .addEvent ();
30915
30966
  },
30916
30967
  enumerable: true,
30917
- configurable: false
30918
30968
  };
30919
30969
 
30920
30970
  Object .defineProperty (SFRotation .prototype, "x", SFRotation_x);
@@ -31035,15 +31085,19 @@ SFString .prototype = Object .assign (Object .create (Base_X3DField.prototype),
31035
31085
  valueOf: Base_X3DField.prototype.getValue,
31036
31086
  toStream: function (generator)
31037
31087
  {
31038
- generator .string += '"' + SFString .escape (this .getValue ()) + '"';
31088
+ generator .string += '"';
31089
+ generator .string += SFString .escape (this .getValue ());
31090
+ generator .string += '"';
31039
31091
  },
31040
31092
  toVRMLStream: function (generator)
31041
31093
  {
31042
31094
  this .toStream (generator);
31043
31095
  },
31044
- toXMLStream: function (generator)
31096
+ toXMLStream: function (generator, sourceText)
31045
31097
  {
31046
- generator .string += generator .XMLEncode (this .getValue ());
31098
+ generator .string += sourceText
31099
+ ? generator .XMLEncodeSourceText (this .getValue ())
31100
+ : generator .XMLEncode (this .getValue ());
31047
31101
  },
31048
31102
  toJSONStream: function (generator)
31049
31103
  {
@@ -31067,7 +31121,6 @@ Object .defineProperty (SFString .prototype, "length",
31067
31121
  return this .getValue () .length;
31068
31122
  },
31069
31123
  enumerable: true,
31070
- configurable: false
31071
31124
  });
31072
31125
 
31073
31126
  const SFString_default_ = SFString;
@@ -31277,7 +31330,6 @@ function SFVec4Template (TypeName, Type, double)
31277
31330
  this .addEvent ();
31278
31331
  },
31279
31332
  enumerable: true,
31280
- configurable: false
31281
31333
  };
31282
31334
 
31283
31335
  const y = {
@@ -31291,7 +31343,6 @@ function SFVec4Template (TypeName, Type, double)
31291
31343
  this .addEvent ();
31292
31344
  },
31293
31345
  enumerable: true,
31294
- configurable: false
31295
31346
  };
31296
31347
 
31297
31348
  const z = {
@@ -31305,7 +31356,6 @@ function SFVec4Template (TypeName, Type, double)
31305
31356
  this .addEvent ();
31306
31357
  },
31307
31358
  enumerable: true,
31308
- configurable: false
31309
31359
  };
31310
31360
 
31311
31361
  const w = {
@@ -31319,7 +31369,6 @@ function SFVec4Template (TypeName, Type, double)
31319
31369
  this .addEvent ();
31320
31370
  },
31321
31371
  enumerable: true,
31322
- configurable: false
31323
31372
  };
31324
31373
 
31325
31374
  Object .defineProperty (SFVec4 .prototype, "x", x);
@@ -32066,8 +32115,6 @@ Object .defineProperty (X3DObjectArrayField .prototype, "length",
32066
32115
  {
32067
32116
  get: function () { return this [X3DObjectArrayField_target] .getValue () .length; },
32068
32117
  set: function (value) { this [X3DObjectArrayField_target] .resize (value); },
32069
- enumerable: false,
32070
- configurable: false,
32071
32118
  });
32072
32119
 
32073
32120
  const X3DObjectArrayField_default_ = X3DObjectArrayField;
@@ -33154,8 +33201,6 @@ Object .defineProperty (X3DTypedArrayField .prototype, "length",
33154
33201
  {
33155
33202
  get: function () { return this [_length]; },
33156
33203
  set: function (value) { this [X3DTypedArrayField_target] .resize (value); },
33157
- enumerable: false,
33158
- configurable: false,
33159
33204
  });
33160
33205
 
33161
33206
  // Getter/Setter functions to reference a value for a given index.
@@ -33513,7 +33558,7 @@ MFNode .prototype = Object .assign (Object .create (Base_X3DObjectArrayField.pro
33513
33558
  generator .string += "'";
33514
33559
  }
33515
33560
 
33516
- generator .string += "/>";
33561
+ generator .string += generator .closingTags ? "></NULL>" : "/>";
33517
33562
  }
33518
33563
  }
33519
33564
 
@@ -33639,7 +33684,7 @@ MFString .prototype = Object .assign (Object .create (Base_X3DObjectArrayField.p
33639
33684
  {
33640
33685
  return Base_X3DConstants.MFString;
33641
33686
  },
33642
- toXMLStream: function (generator)
33687
+ toXMLStream: function (generator, sourceText)
33643
33688
  {
33644
33689
  const
33645
33690
  target = this .getTarget (),
@@ -33652,14 +33697,14 @@ MFString .prototype = Object .assign (Object .create (Base_X3DObjectArrayField.p
33652
33697
  for (let i = 0, n = length - 1; i < n; ++ i)
33653
33698
  {
33654
33699
  generator .string += "\"";
33655
- value [i] .toXMLStream (generator);
33700
+ value [i] .toXMLStream (generator, sourceText);
33656
33701
  generator .string += "\"";
33657
33702
  generator .string += generator .Comma ();
33658
33703
  generator .string += generator .TidySpace ();
33659
33704
  }
33660
33705
 
33661
33706
  generator .string += "\"";
33662
- value .at (-1) .toXMLStream (generator);
33707
+ value .at (-1) .toXMLStream (generator, sourceText);
33663
33708
  generator .string += "\"";
33664
33709
  }
33665
33710
  },
@@ -34086,7 +34131,6 @@ const width = {
34086
34131
  this .addEvent ();
34087
34132
  },
34088
34133
  enumerable: true,
34089
- configurable: false
34090
34134
  };
34091
34135
 
34092
34136
  const height = {
@@ -34100,7 +34144,6 @@ const height = {
34100
34144
  this .addEvent ();
34101
34145
  },
34102
34146
  enumerable: true,
34103
- configurable: false
34104
34147
  };
34105
34148
 
34106
34149
  const comp = {
@@ -34114,7 +34157,6 @@ const comp = {
34114
34157
  this .addEvent ();
34115
34158
  },
34116
34159
  enumerable: true,
34117
- configurable: false
34118
34160
  };
34119
34161
 
34120
34162
  const array = {
@@ -34128,7 +34170,6 @@ const array = {
34128
34170
  this .addEvent ();
34129
34171
  },
34130
34172
  enumerable: true,
34131
- configurable: false
34132
34173
  };
34133
34174
 
34134
34175
  Object .defineProperty (SFImage .prototype, "width", width);
@@ -34492,12 +34533,7 @@ X3DBaseNode .prototype = Object .assign (Object .create (Base_X3DEventObject.pro
34492
34533
 
34493
34534
  // Change function.
34494
34535
 
34495
- Object .defineProperty (this, "getLive",
34496
- {
34497
- value: getLive,
34498
- enumerable: false,
34499
- configurable: true,
34500
- });
34536
+ Object .defineProperty (this, "getLive", { value: getLive });
34501
34537
 
34502
34538
  // Add isLive event.
34503
34539
 
@@ -34508,7 +34544,7 @@ X3DBaseNode .prototype = Object .assign (Object .create (Base_X3DEventObject.pro
34508
34544
 
34509
34545
  // Connect to execution context.
34510
34546
 
34511
- if (this .getOuterNode && this .getOuterNode ())
34547
+ if (this .getOuterNode ?.())
34512
34548
  this .getOuterNode () .getLive () .addInterest (_set_live__, this);
34513
34549
 
34514
34550
  else if (this [_executionContext] !== this)
@@ -34612,8 +34648,6 @@ X3DBaseNode .prototype = Object .assign (Object .create (Base_X3DEventObject.pro
34612
34648
  {
34613
34649
  get: function () { return field; },
34614
34650
  set: function (value) { field .setValue (value); },
34615
- enumerable: false,
34616
- configurable: false,
34617
34651
  });
34618
34652
  },
34619
34653
  getFieldDefinitions: function ()
@@ -34639,8 +34673,6 @@ X3DBaseNode .prototype = Object .assign (Object .create (Base_X3DEventObject.pro
34639
34673
  {
34640
34674
  get: function () { return field; },
34641
34675
  set: function (value) { field .setValue (value); },
34642
- enumerable: false,
34643
- configurable: true, // false : non deletable
34644
34676
  });
34645
34677
 
34646
34678
  if (!this .isPrivate ())
@@ -34696,7 +34728,6 @@ X3DBaseNode .prototype = Object .assign (Object .create (Base_X3DEventObject.pro
34696
34728
  get: function () { return field; },
34697
34729
  set: function (value) { field .setValue (value); },
34698
34730
  enumerable: true,
34699
- configurable: false,
34700
34731
  });
34701
34732
 
34702
34733
  if (field .isInitializable ())
@@ -34967,7 +34998,7 @@ x_ite_Namespace.set ("x_ite/Base/X3DBaseNode", X3DBaseNode_default_);
34967
34998
  *
34968
34999
  ******************************************************************************/
34969
35000
 
34970
- const VERSION_default_ = "8.6.19";
35001
+ const VERSION_default_ = "8.6.22";
34971
35002
  ;
34972
35003
 
34973
35004
  x_ite_Namespace.set ("x_ite/Browser/VERSION", VERSION_default_);
@@ -35545,6 +35576,15 @@ msgstr "Auf Objekte zielen"
35545
35576
  msgid "None Viewer"
35546
35577
  msgstr "Kein Betrachter"
35547
35578
 
35579
+ msgid "Points"
35580
+ msgstr "Punkte"
35581
+
35582
+ msgid "Flat"
35583
+ msgstr "Flach"
35584
+
35585
+ msgid "Wireframe"
35586
+ msgstr "Drahtgittermodel"
35587
+
35548
35588
  msgid "Loading %1 file"
35549
35589
  msgstr "Lade %1 Datei"
35550
35590
 
@@ -35586,13 +35626,13 @@ msgstr ""
35586
35626
  "X-Poedit-SearchPath-0: .\n"
35587
35627
 
35588
35628
  msgid "Less Properties"
35589
- msgstr "Moins de propriétés"
35629
+ msgstr "Moins de Propriétés"
35590
35630
 
35591
35631
  msgid "More Properties"
35592
- msgstr "Plus de propriétés"
35632
+ msgstr "Plus de Propriétés"
35593
35633
 
35594
35634
  msgid "Frame rate"
35595
- msgstr "Fréquence"
35635
+ msgstr "Fréquence d'Images"
35596
35636
 
35597
35637
  msgid "fps"
35598
35638
  msgstr "fps"
@@ -35615,8 +35655,8 @@ msgstr ""
35615
35655
  msgid "X3D total"
35616
35656
  msgstr "X3D total"
35617
35657
 
35618
- msgid "Traitement des événements"
35619
- msgstr "Routes"
35658
+ msgid "Event Processing"
35659
+ msgstr "Traitement des Événements"
35620
35660
 
35621
35661
  msgid "Pointer"
35622
35662
  msgstr "Pointeur"
@@ -35625,34 +35665,34 @@ msgid "Camera"
35625
35665
  msgstr "Caméra"
35626
35666
 
35627
35667
  msgid "Collision Detection"
35628
- msgstr "Détection des collisions"
35668
+ msgstr "Détection des Collisions"
35629
35669
 
35630
35670
  msgid "Rendering"
35631
35671
  msgstr "Rendement"
35632
35672
 
35633
35673
  msgid "Number of Shapes"
35634
- msgstr "Nombre de formes"
35674
+ msgstr "Nombre de Formes"
35635
35675
 
35636
35676
  msgid "Number of Sensors"
35637
- msgstr "Nombre de senseurs"
35677
+ msgstr "Nombre de Senseurs"
35638
35678
 
35639
35679
  msgid "Browser Timings"
35640
- msgstr "Calcul du temps"
35680
+ msgstr "Calcul du Temps"
35641
35681
 
35642
35682
  msgid "X_ITE Browser"
35643
35683
  msgstr "X_ITE Navigateur"
35644
35684
 
35645
35685
  msgid "Viewpoints"
35646
- msgstr "Points de vue"
35686
+ msgstr "Points de Vue"
35647
35687
 
35648
35688
  msgid "Available Viewers"
35649
35689
  msgstr "Visionneurs disponibles"
35650
35690
 
35651
35691
  msgid "Straighten Horizon"
35652
- msgstr "Redresser l'horizon"
35692
+ msgstr "Redresser l'Horizon"
35653
35693
 
35654
35694
  msgid "Primitive Quality"
35655
- msgstr "Qualité des objets simples"
35695
+ msgstr "Qualité des Objets simples"
35656
35696
 
35657
35697
  msgid "High"
35658
35698
  msgstr "Haut"
@@ -35673,10 +35713,10 @@ msgid "low"
35673
35713
  msgstr "faible"
35674
35714
 
35675
35715
  msgid "Texture Quality"
35676
- msgstr "Qualité des textures"
35716
+ msgstr "Qualité des Textures"
35677
35717
 
35678
35718
  msgid "Display Rubberband"
35679
- msgstr "Présenter le bande élastique"
35719
+ msgstr "Présenter le Bande élastique"
35680
35720
 
35681
35721
  msgid "Rubberband"
35682
35722
  msgstr "Bande élastique"
@@ -35688,19 +35728,19 @@ msgid "off"
35688
35728
  msgstr "arrêt"
35689
35729
 
35690
35730
  msgid "Mute Browser"
35691
- msgstr "Rendre navigateur muet"
35731
+ msgstr "Rendre Navigateur muet"
35692
35732
 
35693
35733
  msgid "Browser muted"
35694
35734
  msgstr "Navigateur muet"
35695
35735
 
35696
35736
  msgid "Browser unmuted"
35697
- msgstr "Son de navigateur réactivé"
35737
+ msgstr "Son de Navigateur réactivé"
35698
35738
 
35699
35739
  msgid "Leave Fullscreen"
35700
- msgstr "Sortie en plein écran"
35740
+ msgstr "Laisser le plein Écran"
35701
35741
 
35702
35742
  msgid "Fullscreen"
35703
- msgstr "Plein écran"
35743
+ msgstr "Plein Écran"
35704
35744
 
35705
35745
  msgid "About X_ITE"
35706
35746
  msgstr "À propos de X_ITE"
@@ -35715,31 +35755,37 @@ msgid "Fly Viewer"
35715
35755
  msgstr "Voler"
35716
35756
 
35717
35757
  msgid "Plane Viewer"
35718
- msgstr "Visionneur de la plaine"
35758
+ msgstr "Visionneur de la Plaine"
35719
35759
 
35720
35760
  msgid "Look At Viewer"
35721
- msgstr "Regarder un objet de près"
35761
+ msgstr "Regarder un Objet de près"
35722
35762
 
35723
35763
  msgid "None Viewer"
35724
- msgstr "Pas de visionneur"
35764
+ msgstr "Pas de Visionneur"
35765
+
35766
+ msgid "Flat"
35767
+ msgstr "Plat"
35768
+
35769
+ msgid "Wireframe"
35770
+ msgstr "Image filaire"
35725
35771
 
35726
35772
  msgid "Loading %1 file"
35727
- msgstr "Télécharger %1 fichier"
35773
+ msgstr "Télécharger %1 Fichier"
35728
35774
 
35729
35775
  msgid "Loading %1 files"
35730
- msgstr "Télécharger %1 fichiers"
35776
+ msgstr "Télécharger %1 Fichiers"
35731
35777
 
35732
35778
  msgid "Loading done"
35733
35779
  msgstr "Téléchargement fini"
35734
35780
 
35735
35781
  msgid "Failed loading world."
35736
- msgstr "Le chargement des fichiers a échoué."
35782
+ msgstr "Le chargement des Fichiers a échoué."
35737
35783
 
35738
35784
  msgid "Show World Info"
35739
35785
  msgstr "Afficher World Info"
35740
35786
 
35741
35787
  msgid "Viewpoint is copied to clipboard."
35742
- msgstr "Le point de vue est copié dans le presse-papiers."
35788
+ msgstr "Le point de Vue est copié dans le Presse-Papiers."
35743
35789
  `;
35744
35790
  ;
35745
35791
 
@@ -35871,7 +35917,7 @@ const gettext_default_ = gettext;
35871
35917
  x_ite_Namespace.set ("locale/gettext", gettext_default_);
35872
35918
  /* harmony default export */ const locale_gettext = (gettext_default_);
35873
35919
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserTimings.js
35874
- /* provided dependency */ var $ = __webpack_require__(849);
35920
+ /* provided dependency */ var $ = __webpack_require__(714);
35875
35921
  /*******************************************************************************
35876
35922
  *
35877
35923
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -35929,7 +35975,6 @@ function BrowserTimings (executionContext)
35929
35975
 
35930
35976
  this .localStorage = this .getBrowser () .getLocalStorage () .addNameSpace ("BrowserTimings.");
35931
35977
  this .fps = new Time_StopWatch ();
35932
- this .localeOptions = { minimumFractionDigits: 2, maximumFractionDigits: 2 };
35933
35978
  }
35934
35979
 
35935
35980
  BrowserTimings .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype),
@@ -35955,17 +36000,101 @@ BrowserTimings .prototype = Object .assign (Object .create (Base_X3DBaseNode.pro
35955
36000
 
35956
36001
  this .localStorage .addDefaultValues ({ type: "LESS" });
35957
36002
 
35958
- this .element = $("<div></div>") .hide () .addClass ("x_ite-private-browser-timings") .appendTo (this .getBrowser () .getSurface ());
35959
- this .table = $("<table></table>") .appendTo (this .element);
35960
- this .header = $("<thead></thead>") .append ($("<tr></tr>") .append ($("<th colspan='2'></th>"))) .appendTo (this .table);
35961
- this .body = $("<tbody></tbody>") .appendTo (this .table);
35962
- this .footer = $("<tfoot></tfoot>") .append ($("<tr></tr>") .append ($("<td colspan='2'></td>"))) .appendTo (this .table);
35963
- this .button = $("<button></button>") .attr ("type", "button") .appendTo (this .footer .find ("td"));
35964
- this .rows = [ ];
36003
+ this .element = $("<div></div>")
36004
+ .hide ()
36005
+ .addClass ("x_ite-private-browser-timings")
36006
+ .appendTo (this .getBrowser () .getSurface ());
36007
+
36008
+ this .table = $("<table></table>")
36009
+ .appendTo (this .element);
36010
+
36011
+ this .header = $("<thead></thead>")
36012
+ .append ($("<tr></tr>")
36013
+ .append ($("<th colspan='2'></th>")
36014
+ .text (locale_gettext("Browser Timings"))))
36015
+ .appendTo (this .table);
36016
+
36017
+ this .body = $("<tbody></tbody>")
36018
+ .appendTo (this .table);
36019
+
36020
+ this .footer = $("<tfoot></tfoot>")
36021
+ .append ($("<tr></tr>")
36022
+ .append ($("<td colspan='2'></td>")))
36023
+ .appendTo (this .table);
36024
+
36025
+ this .button = $("<button></button>")
36026
+ .attr ("type", "button")
36027
+ .appendTo (this .footer .find ("td"));
36028
+
36029
+ this .frameRate = $("<td></td>");
36030
+ this .speed = $("<td></td>");
36031
+ this .frameRate = $("<td></td>");
36032
+ this .speed = $("<td></td>");
36033
+ this .browserTime = $("<td></td>");
36034
+ this .x3dTotal = $("<td></td>");
36035
+ this .eventProcessing = $("<td></td>");
36036
+ this .pointerTime = $("<td></td>");
36037
+ this .cameraTime = $("<td></td>");
36038
+ this .pickingTime = $("<td></td>");
36039
+ this .collisionTime = $("<td></td>");
36040
+ this .renderTime = $("<td></td>");
36041
+ this .numShapes = $("<td></td>");
36042
+ this .sensors = $("<td></td>");
36043
+
36044
+ this .body .append ($("<tr></tr>")
36045
+ .append ($("<td></td>") .text (locale_gettext("Frame rate") + ":"))
36046
+ .append (this .frameRate));
36047
+
36048
+ this .body .append ($("<tr></tr>")
36049
+ .append ($("<td></td>") .text (locale_gettext("Speed") + ":"))
36050
+ .append (this .speed)
36051
+ .addClass ("x_ite-private-more"));
36052
+
36053
+ this .body .append ($("<tr></tr>")
36054
+ .append ($("<td></td>") .text (locale_gettext("Browser") + ":"))
36055
+ .append (this .browserTime));
36056
+
36057
+ this .body .append ($("<tr></tr>")
36058
+ .append ($("<td></td>") .text (locale_gettext("X3D total") + ":"))
36059
+ .append (this .x3dTotal));
36060
+
36061
+ this .body .append ($("<tr></tr>")
36062
+ .append ($("<td></td>") .text (locale_gettext("Event Processing") + ":"))
36063
+ .append (this .eventProcessing));
36064
+
36065
+ this .body .append ($("<tr></tr>")
36066
+ .append ($("<td></td>") .text (locale_gettext("Pointer") + ":"))
36067
+ .append (this .pointerTime));
36068
+
36069
+ this .body .append ($("<tr></tr>")
36070
+ .append ($("<td></td>") .text (locale_gettext("Camera") + ":"))
36071
+ .append (this .cameraTime));
36072
+
36073
+ this .body .append ($("<tr></tr>")
36074
+ .append ($("<td></td>") .text (locale_gettext("Picking") + ":"))
36075
+ .append (this .pickingTime));
36076
+
36077
+ this .body .append ($("<tr></tr>")
36078
+ .append ($("<td></td>") .text (locale_gettext("Collision Detection") + ":"))
36079
+ .append (this .collisionTime));
36080
+
36081
+ this .body .append ($("<tr></tr>")
36082
+ .append ($("<td></td>") .text (locale_gettext("Rendering") + ":"))
36083
+ .append (this .renderTime));
36084
+
36085
+ this .body .append ($("<tr></tr>")
36086
+ .append ($("<td></td>") .text (locale_gettext("Number of Shapes") + ":"))
36087
+ .append (this .numShapes));
36088
+
36089
+ this .body .append ($("<tr></tr>")
36090
+ .append ($("<td></td>") .text (locale_gettext("Number of Sensors") + ":"))
36091
+ .append (this .sensors));
35965
36092
 
35966
36093
  this .button .on ("click touchend", this .set_type__ .bind (this));
35967
36094
 
35968
- this .set_button__ ();
36095
+ this .localStorage .type = this .localStorage .type === "MORE" ? "LESS" : "MORE";
36096
+
36097
+ this .set_type__ ();
35969
36098
  },
35970
36099
  set_enabled__: function ()
35971
36100
  {
@@ -35986,9 +36115,17 @@ BrowserTimings .prototype = Object .assign (Object .create (Base_X3DBaseNode.pro
35986
36115
  set_type__: function ()
35987
36116
  {
35988
36117
  if (this .localStorage .type === "MORE")
36118
+ {
35989
36119
  this .localStorage .type = "LESS";
36120
+ this .table .addClass ("less");
36121
+ this .table .removeClass ("more");
36122
+ }
35990
36123
  else
36124
+ {
35991
36125
  this .localStorage .type = "MORE";
36126
+ this .table .addClass ("more");
36127
+ this .table .removeClass ("less");
36128
+ }
35992
36129
 
35993
36130
  this .set_button__ ();
35994
36131
  this .build ();
@@ -36014,68 +36151,45 @@ BrowserTimings .prototype = Object .assign (Object .create (Base_X3DBaseNode.pro
36014
36151
  },
36015
36152
  build: function ()
36016
36153
  {
36017
- const
36018
- browser = this .getBrowser (),
36019
- language = navigator .language || navigator .userLanguage,
36020
- fixed = this .localeOptions,
36021
- rows = this .rows;
36022
-
36023
- let r = 0;
36024
-
36025
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Frame rate") + ":")) .append ($("<td></td>") .text (f2(1000 / this .fps .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("fps")));
36026
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Speed") + ":")) .append ($("<td></td>") .text (f2(this .getSpeed (browser .currentSpeed)) .toLocaleString (language, fixed) + " " + this .getSpeedUnit (browser .currentSpeed)));
36027
-
36028
- if (this .localStorage .type === "MORE")
36029
- {
36030
- const
36031
- layers = browser .getWorld () .getLayerSet () .getLayers (),
36032
- activeLayer = browser .getActiveLayer (),
36033
- navigationTime = activeLayer && browser .getCollisionCount () ? activeLayer .getCollisionTime () .averageTime : 0,
36034
- collisionTime = browser .getCollisionTime () .averageTime + navigationTime,
36035
- routingTime = Math .max (0, browser .getBrowserTime () .averageTime - (browser .getCameraTime () .averageTime + browser .getCollisionTime () .averageTime + browser .getDisplayTime () .averageTime)),
36036
- prepareEvents = browser .prepareEvents () .getInterests () .size - 1,
36037
- sensors = browser .sensorEvents () .getInterests () .size;
36038
-
36039
- let
36040
- opaqueShapes = 0,
36041
- transparentShapes = 0;
36042
-
36043
- for (const layer of layers)
36044
- {
36045
- opaqueShapes += layer .numOpaqueShapes;
36046
- transparentShapes += layer .numTransparentShapes;
36047
- }
36048
-
36049
- rows [1] .addClass ("x_ite-private-more");
36050
-
36051
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Browser") + ":")) .append ($("<td></td>") .text (f2(browser .getSystemTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36052
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("X3D total") + ":")) .append ($("<td></td>") .text (f2(browser .getBrowserTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36053
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Event Processing") + ":")) .append ($("<td></td>") .text (f2(routingTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36054
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Pointer") + ":")) .append ($("<td></td>") .text (f2(browser .getPointingTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36055
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Camera") + ":")) .append ($("<td></td>") .text (f2(browser .getCameraTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36056
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Picking") + ":")) .append ($("<td></td>") .text (f2(browser .getPickingTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36057
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Collision Detection") + ":")) .append ($("<td></td>") .text (f2(collisionTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36058
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Rendering") + ":")) .append ($("<td></td>") .text (f2(browser .getDisplayTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36059
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Number of Shapes") + ":")) .append ($("<td></td>") .text (opaqueShapes + " + " + transparentShapes));
36060
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Number of Sensors") + ":")) .append ($("<td></td>") .text (prepareEvents + sensors));
36061
-
36062
- browser .getSystemTime () .reset ();
36063
- browser .getBrowserTime () .reset ();
36064
- browser .getPointingTime () .reset ();
36065
- browser .getCameraTime () .reset ();
36066
- browser .getPickingTime () .reset ();
36067
- browser .getCollisionTime () .reset ();
36068
- browser .getDisplayTime () .reset ();
36154
+ const browser = this .getBrowser ();
36069
36155
 
36070
- if (activeLayer)
36071
- activeLayer .getCollisionTime () .reset ();
36072
- }
36156
+ this .frameRate .text (f2(1000 / this .fps .averageTime) + " " + locale_gettext("fps"));
36157
+ this .speed .text (f2(this .getSpeed (browser .currentSpeed)) + " " + this .getSpeedUnit (browser .currentSpeed));
36073
36158
 
36074
- rows .length = r;
36159
+ if (this .localStorage .type !== "MORE" || !browser .getWorld ())
36160
+ return;
36075
36161
 
36076
- this .header .find ("th") .text (locale_gettext("Browser Timings"));
36077
- this .body .empty ();
36078
- this .body .append (rows);
36162
+ const
36163
+ layers = browser .getWorld () .getLayerSet () .getLayers (),
36164
+ activeLayer = browser .getActiveLayer (),
36165
+ navigationTime = activeLayer && browser .getCollisionCount () ? activeLayer .getCollisionTime () .averageTime : 0,
36166
+ collisionTime = browser .getCollisionTime () .averageTime + navigationTime,
36167
+ routingTime = Math .max (0, browser .getBrowserTime () .averageTime - (browser .getCameraTime () .averageTime + browser .getCollisionTime () .averageTime + browser .getDisplayTime () .averageTime)),
36168
+ prepareEvents = browser .prepareEvents () .getInterests () .size - 1,
36169
+ sensors = browser .sensorEvents () .getInterests () .size,
36170
+ opaqueShapes = layers .reduce ((n, layer) => n + layer .getNumOpaqueShapes (), 0),
36171
+ transparentShapes = layers .reduce ((n, layer) => n + layer .getNumTransparentShapes (), 0);
36172
+
36173
+ this .browserTime .text (f2(browser .getSystemTime () .averageTime) + " " + locale_gettext("ms"));
36174
+ this .x3dTotal .text (f2(browser .getBrowserTime () .averageTime) + " " + locale_gettext("ms"));
36175
+ this .eventProcessing .text (f2(routingTime) + " " + locale_gettext("ms"));
36176
+ this .pointerTime .text (f2(browser .getPointingTime () .averageTime) + " " + locale_gettext("ms"));
36177
+ this .cameraTime .text (f2(browser .getCameraTime () .averageTime) + " " + locale_gettext("ms"));
36178
+ this .pickingTime .text (f2(browser .getPickingTime () .averageTime) + " " + locale_gettext("ms"));
36179
+ this .collisionTime .text (f2(collisionTime) + " " + locale_gettext("ms"));
36180
+ this .renderTime .text (f2(browser .getDisplayTime () .averageTime) + " " + locale_gettext("ms"));
36181
+ this .numShapes .text (opaqueShapes + " + " + transparentShapes);
36182
+ this .sensors .text (prepareEvents + sensors);
36183
+
36184
+ browser .getSystemTime () .reset ();
36185
+ browser .getBrowserTime () .reset ();
36186
+ browser .getPointingTime () .reset ();
36187
+ browser .getCameraTime () .reset ();
36188
+ browser .getPickingTime () .reset ();
36189
+ browser .getCollisionTime () .reset ();
36190
+ browser .getDisplayTime () .reset ();
36191
+
36192
+ activeLayer ?.getCollisionTime () .reset ();
36079
36193
  },
36080
36194
  getSpeed: function (speed)
36081
36195
  {
@@ -36093,7 +36207,19 @@ BrowserTimings .prototype = Object .assign (Object .create (Base_X3DBaseNode.pro
36093
36207
  },
36094
36208
  });
36095
36209
 
36096
- function f2 (n) { return isFinite (n) ? n .toFixed (2) : 0 .toFixed (2); }
36210
+ const f2 = (function ()
36211
+ {
36212
+ const format = new Intl .NumberFormat (navigator .language || navigator .userLanguage, {
36213
+ notation: "standard",
36214
+ minimumFractionDigits: 2,
36215
+ maximumFractionDigits: 2,
36216
+ }) .format;
36217
+
36218
+ return function (value)
36219
+ {
36220
+ return format (Number .isFinite (value) ? value : 0);
36221
+ };
36222
+ })();
36097
36223
 
36098
36224
  const BrowserTimings_default_ = BrowserTimings;
36099
36225
  ;
@@ -36289,7 +36415,7 @@ const TextureQuality_default_ = TextureQuality;
36289
36415
  x_ite_Namespace.set ("x_ite/Browser/Core/TextureQuality", TextureQuality_default_);
36290
36416
  /* harmony default export */ const Core_TextureQuality = (TextureQuality_default_);
36291
36417
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserOptions.js
36292
- /* provided dependency */ var BrowserOptions_$ = __webpack_require__(849);
36418
+ /* provided dependency */ var BrowserOptions_$ = __webpack_require__(714);
36293
36419
  /*******************************************************************************
36294
36420
  *
36295
36421
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -36825,7 +36951,7 @@ const RenderingProperties_default_ = RenderingProperties;
36825
36951
  x_ite_Namespace.set ("x_ite/Browser/Core/RenderingProperties", RenderingProperties_default_);
36826
36952
  /* harmony default export */ const Core_RenderingProperties = (RenderingProperties_default_);
36827
36953
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/Notification.js
36828
- /* provided dependency */ var Notification_$ = __webpack_require__(849);
36954
+ /* provided dependency */ var Notification_$ = __webpack_require__(714);
36829
36955
  /*******************************************************************************
36830
36956
  *
36831
36957
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -36947,8 +37073,8 @@ const Notification_default_ = Notification;
36947
37073
  x_ite_Namespace.set ("x_ite/Browser/Core/Notification", Notification_default_);
36948
37074
  /* harmony default export */ const Core_Notification = (Notification_default_);
36949
37075
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/ContextMenu.js
36950
- /* provided dependency */ var jquery_fullscreen = __webpack_require__(865);
36951
- /* provided dependency */ var ContextMenu_$ = __webpack_require__(849);
37076
+ /* provided dependency */ var jquery_fullscreen = __webpack_require__(526);
37077
+ /* provided dependency */ var ContextMenu_$ = __webpack_require__(714);
36952
37078
  /*******************************************************************************
36953
37079
  *
36954
37080
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -37229,7 +37355,7 @@ ContextMenu .prototype = Object .assign (Object .create (Base_X3DBaseNode.protot
37229
37355
  className: "context-menu-icon x_ite-private-icon-shading",
37230
37356
  items: {
37231
37357
  "point": {
37232
- name: locale_gettext("Point"),
37358
+ name: locale_gettext("Points"),
37233
37359
  type: "radio",
37234
37360
  radio: "shading",
37235
37361
  selected: browser .getBrowserOption ("Shading") === "POINT",
@@ -37237,7 +37363,7 @@ ContextMenu .prototype = Object .assign (Object .create (Base_X3DBaseNode.protot
37237
37363
  click: function ()
37238
37364
  {
37239
37365
  browser .setBrowserOption ("Shading", "POINT");
37240
- browser .getNotification () ._string = locale_gettext("Shading") + ": " + locale_gettext("Point");
37366
+ browser .getNotification () ._string = locale_gettext("Shading") + ": " + locale_gettext("Points");
37241
37367
  }
37242
37368
  .bind (this),
37243
37369
  },
@@ -38345,6 +38471,13 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
38345
38471
  generator .string += generator .Indent ();
38346
38472
  generator .string += "<";
38347
38473
  generator .string += this .getTypeName ();
38474
+
38475
+ if (generator .html && this .getTypeName () === "Script")
38476
+ {
38477
+ generator .string += generator .Space ();
38478
+ generator .string += "type='model/x3d+xml'";
38479
+ }
38480
+
38348
38481
  generator .string += generator .Space ();
38349
38482
  generator .string += "USE='";
38350
38483
  generator .string += generator .XMLEncode (name);
@@ -38363,7 +38496,16 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
38363
38496
  }
38364
38497
  }
38365
38498
 
38366
- generator .string += "/>";
38499
+ if (generator .closingTags)
38500
+ {
38501
+ generator .string += "></";
38502
+ generator .string += this .getTypeName ();
38503
+ generator .string += ">";
38504
+ }
38505
+ else
38506
+ {
38507
+ generator .string += "/>";
38508
+ }
38367
38509
 
38368
38510
  generator .LeaveScope ();
38369
38511
  return;
@@ -38374,6 +38516,12 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
38374
38516
  generator .string += "<";
38375
38517
  generator .string += this .getTypeName ();
38376
38518
 
38519
+ if (generator .html && this .getTypeName () === "Script")
38520
+ {
38521
+ generator .string += generator .Space ();
38522
+ generator .string += "type='model/x3d+xml'";
38523
+ }
38524
+
38377
38525
  if (name .length)
38378
38526
  {
38379
38527
  generator .AddNode (this);
@@ -38407,7 +38555,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
38407
38555
 
38408
38556
  let cdata = this .getSourceText ();
38409
38557
 
38410
- if (cdata && cdata .length === 0)
38558
+ if (cdata ?.length === 0 || (generator .html && this .getTypeName () !== "Script"))
38411
38559
  cdata = null;
38412
38560
 
38413
38561
  generator .IncIndent ();
@@ -38457,7 +38605,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
38457
38605
  generator .string += field .getName ();
38458
38606
  generator .string += "='";
38459
38607
 
38460
- field .toXMLStream (generator);
38608
+ field .toXMLStream (generator, field === this .getSourceText ());
38461
38609
 
38462
38610
  generator .string += "'";
38463
38611
  break;
@@ -38476,7 +38624,16 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
38476
38624
 
38477
38625
  if ((!this .canUserDefinedFields () || !userDefinedFields .length) && (!references .length || sharedNode) && !childNodes .length && !cdata)
38478
38626
  {
38479
- generator .string += "/>";
38627
+ if (generator .closingTags)
38628
+ {
38629
+ generator .string += "></";
38630
+ generator .string += this .getTypeName ();
38631
+ generator .string += ">";
38632
+ }
38633
+ else
38634
+ {
38635
+ generator .string += "/>";
38636
+ }
38480
38637
  }
38481
38638
  else
38482
38639
  {
@@ -38525,7 +38682,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
38525
38682
 
38526
38683
  if (!field .isInitializable () || field .isDefaultValue ())
38527
38684
  {
38528
- generator .string += "/>";
38685
+ generator .string += generator .closingTags ? "></field>" : "/>";
38529
38686
  generator .string += generator .TidyBreak ();
38530
38687
  }
38531
38688
  else
@@ -38565,7 +38722,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
38565
38722
  field .toXMLStream (generator);
38566
38723
 
38567
38724
  generator .string += "'";
38568
- generator .string += "/>";
38725
+ generator .string += generator .closingTags ? "></field>" : "/>";
38569
38726
  generator .string += generator .TidyBreak ();
38570
38727
  break;
38571
38728
  }
@@ -38577,7 +38734,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
38577
38734
  if (generator .ExecutionContext ())
38578
38735
  references .push (field);
38579
38736
 
38580
- generator .string += "/>";
38737
+ generator .string += generator .closingTags ? "></field>" : "/>";
38581
38738
  generator .string += generator .TidyBreak ();
38582
38739
  }
38583
38740
  }
@@ -38607,7 +38764,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
38607
38764
  generator .string += "protoField='";
38608
38765
  generator .string += generator .XMLEncode (protoField .getName ());
38609
38766
  generator .string += "'";
38610
- generator .string += "/>";
38767
+ generator .string += generator .closingTags ? "></connect>" : "/>";
38611
38768
  generator .string += generator .TidyBreak ();
38612
38769
  }
38613
38770
  }
@@ -38635,7 +38792,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
38635
38792
  for (const value of cdata)
38636
38793
  {
38637
38794
  generator .string += "<![CDATA[";
38638
- generator .string += generator .escapeCDATA (value);
38795
+ generator .string += value;
38639
38796
  generator .string += "]]>";
38640
38797
  generator .string += generator .TidyBreak ();
38641
38798
  }
@@ -39478,7 +39635,7 @@ X3DImportedNode .prototype = Object .assign (Object .create (Core_X3DNode.protot
39478
39635
  generator .string += "'";
39479
39636
  }
39480
39637
 
39481
- generator .string += "/>";
39638
+ generator .string += generator .closingTags ? "></IMPORT>" : "/>";
39482
39639
 
39483
39640
  try
39484
39641
  {
@@ -39527,7 +39684,7 @@ X3DImportedNode .prototype = Object .assign (Object .create (Core_X3DNode.protot
39527
39684
  generator .string += "toField='";
39528
39685
  generator .string += generator .XMLEncode (destinationField);
39529
39686
  generator .string += "'";
39530
- generator .string += "/>";
39687
+ generator .string += generator .closingTags ? "></ROUTE>" : "/>";
39531
39688
  }
39532
39689
  }
39533
39690
  }
@@ -39731,7 +39888,6 @@ Object .defineProperty (X3DImportedNode .prototype, "inlineNode",
39731
39888
  return Fields_SFNodeCache.get (this [_inlineNode]);
39732
39889
  },
39733
39890
  enumerable: true,
39734
- configurable: false
39735
39891
  });
39736
39892
 
39737
39893
  Object .defineProperty (X3DImportedNode .prototype, "exportedName",
@@ -39741,7 +39897,6 @@ Object .defineProperty (X3DImportedNode .prototype, "exportedName",
39741
39897
  return this [_exportedName];
39742
39898
  },
39743
39899
  enumerable: true,
39744
- configurable: false
39745
39900
  });
39746
39901
 
39747
39902
  Object .defineProperty (X3DImportedNode .prototype, "exportedNode",
@@ -39751,7 +39906,6 @@ Object .defineProperty (X3DImportedNode .prototype, "exportedNode",
39751
39906
  return this [_inlineNode] .getInternalScene () .getExportedNode (this [_exportedName]);
39752
39907
  },
39753
39908
  enumerable: true,
39754
- configurable: false
39755
39909
  });
39756
39910
 
39757
39911
  Object .defineProperty (X3DImportedNode .prototype, "importedName",
@@ -39761,7 +39915,6 @@ Object .defineProperty (X3DImportedNode .prototype, "importedName",
39761
39915
  return this [_importedName];
39762
39916
  },
39763
39917
  enumerable: true,
39764
- configurable: false
39765
39918
  });
39766
39919
 
39767
39920
  const X3DImportedNode_default_ = X3DImportedNode;
@@ -40393,7 +40546,7 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (Core_X3DNode.p
40393
40546
  }
40394
40547
  }
40395
40548
 
40396
- generator .string += "/>";
40549
+ generator .string += generator .closingTags ? "></ProtoInstance>" : "/>";
40397
40550
 
40398
40551
  generator .LeaveScope ();
40399
40552
  return;
@@ -40434,7 +40587,7 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (Core_X3DNode.p
40434
40587
 
40435
40588
  if (fields .length === 0)
40436
40589
  {
40437
- generator .string += "/>";
40590
+ generator .string += generator .closingTags ? "></ProtoInstance>" : "/>";
40438
40591
  }
40439
40592
  else
40440
40593
  {
@@ -40482,7 +40635,7 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (Core_X3DNode.p
40482
40635
 
40483
40636
  if (field .length === 0)
40484
40637
  {
40485
- generator .string += "/>";
40638
+ generator .string += generator .closingTags ? "></fieldValue>" : "/>";
40486
40639
  generator .string += generator .TidyBreak ();
40487
40640
  }
40488
40641
  else
@@ -40556,7 +40709,7 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (Core_X3DNode.p
40556
40709
  field .toXMLStream (generator);
40557
40710
 
40558
40711
  generator .string += "'";
40559
- generator .string += "/>";
40712
+ generator .string += generator .closingTags ? "></fieldValue>" : "/>";
40560
40713
  generator .string += generator .TidyBreak ();
40561
40714
  break;
40562
40715
  }
@@ -40592,7 +40745,7 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (Core_X3DNode.p
40592
40745
  generator .string += "protoField='";
40593
40746
  generator .string += generator .XMLEncode (protoField .getName ());
40594
40747
  generator .string += "'";
40595
- generator .string += "/>";
40748
+ generator .string += generator .closingTags ? "></connect>" : "/>";
40596
40749
  generator .string += generator .TidyBreak ();
40597
40750
  }
40598
40751
  }
@@ -41350,7 +41503,7 @@ X3DProtoDeclaration .prototype = Object .assign (Object .create (Prototype_X3DPr
41350
41503
 
41351
41504
  if (field .isDefaultValue ())
41352
41505
  {
41353
- generator .string += "/>";
41506
+ generator .string += generator .closingTags ? "></field>" : "/>";
41354
41507
  generator .string += generator .TidyBreak ();
41355
41508
  }
41356
41509
  else
@@ -41387,7 +41540,7 @@ X3DProtoDeclaration .prototype = Object .assign (Object .create (Prototype_X3DPr
41387
41540
  field .toXMLStream (generator);
41388
41541
 
41389
41542
  generator .string += "'";
41390
- generator .string += "/>";
41543
+ generator .string += generator .closingTags ? "></field>" : "/>";
41391
41544
  generator .string += generator .TidyBreak ();
41392
41545
  break;
41393
41546
  }
@@ -41672,23 +41825,20 @@ for (const key of Reflect .ownKeys (X3DProtoDeclaration .prototype))
41672
41825
 
41673
41826
  Object .defineProperty (X3DProtoDeclaration .prototype, "name",
41674
41827
  {
41675
- get: function () { return this .getName (); },
41828
+ get: X3DProtoDeclaration .prototype .getName,
41676
41829
  enumerable: true,
41677
- configurable: false
41678
41830
  });
41679
41831
 
41680
41832
  Object .defineProperty (X3DProtoDeclaration .prototype, "fields",
41681
41833
  {
41682
- get: function () { return this .getFieldDefinitions (); },
41834
+ get: X3DProtoDeclaration .prototype .getFieldDefinitions,
41683
41835
  enumerable: true,
41684
- configurable: false
41685
41836
  });
41686
41837
 
41687
41838
  Object .defineProperty (X3DProtoDeclaration .prototype, "isExternProto",
41688
41839
  {
41689
- get: function () { return false; },
41840
+ value: false,
41690
41841
  enumerable: true,
41691
- configurable: false
41692
41842
  });
41693
41843
 
41694
41844
  const X3DProtoDeclaration_default_ = X3DProtoDeclaration;
@@ -41979,7 +42129,7 @@ const X3DUrlObject_default_ = X3DUrlObject;
41979
42129
  x_ite_Namespace.set ("x_ite/Components/Networking/X3DUrlObject", X3DUrlObject_default_);
41980
42130
  /* harmony default export */ const Networking_X3DUrlObject = (X3DUrlObject_default_);
41981
42131
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/X3DParser.js
41982
- /* provided dependency */ var X3DParser_$ = __webpack_require__(849);
42132
+ /* provided dependency */ var X3DParser_$ = __webpack_require__(714);
41983
42133
  /*******************************************************************************
41984
42134
  *
41985
42135
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -45161,7 +45311,7 @@ const VRMLParser_default_ = VRMLParser;
45161
45311
  x_ite_Namespace.set ("x_ite/Parser/VRMLParser", VRMLParser_default_);
45162
45312
  /* harmony default export */ const Parser_VRMLParser = (VRMLParser_default_);
45163
45313
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/XMLParser.js
45164
- /* provided dependency */ var XMLParser_$ = __webpack_require__(849);
45314
+ /* provided dependency */ var XMLParser_$ = __webpack_require__(714);
45165
45315
  /*******************************************************************************
45166
45316
  *
45167
45317
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -47198,7 +47348,7 @@ const URLs_default_ = URLs;
47198
47348
  x_ite_Namespace.set ("x_ite/Browser/Networking/URLs", URLs_default_);
47199
47349
  /* harmony default export */ const Networking_URLs = (URLs_default_);
47200
47350
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLTF2Parser.js
47201
- /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(849);
47351
+ /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(714);
47202
47352
  /*******************************************************************************
47203
47353
  *
47204
47354
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -49664,7 +49814,7 @@ const GLTF2Parser_default_ = GLTF2Parser;
49664
49814
  x_ite_Namespace.set ("x_ite/Parser/GLTF2Parser", GLTF2Parser_default_);
49665
49815
  /* harmony default export */ const Parser_GLTF2Parser = (GLTF2Parser_default_);
49666
49816
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLB2Parser.js
49667
- /* provided dependency */ var GLB2Parser_$ = __webpack_require__(849);
49817
+ /* provided dependency */ var GLB2Parser_$ = __webpack_require__(714);
49668
49818
  /*******************************************************************************
49669
49819
  *
49670
49820
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -49817,7 +49967,7 @@ const GLB2Parser_default_ = GLB2Parser;
49817
49967
  x_ite_Namespace.set ("x_ite/Parser/GLB2Parser", GLB2Parser_default_);
49818
49968
  /* harmony default export */ const Parser_GLB2Parser = (GLB2Parser_default_);
49819
49969
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/OBJParser.js
49820
- /* provided dependency */ var OBJParser_$ = __webpack_require__(849);
49970
+ /* provided dependency */ var OBJParser_$ = __webpack_require__(714);
49821
49971
  /*******************************************************************************
49822
49972
  *
49823
49973
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -52307,8 +52457,8 @@ const MatrixStack_default_ = MatrixStack;
52307
52457
  x_ite_Namespace.set ("standard/Math/Utility/MatrixStack", MatrixStack_default_);
52308
52458
  /* harmony default export */ const Utility_MatrixStack = (MatrixStack_default_);
52309
52459
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/SVGParser.js
52310
- /* provided dependency */ var SVGParser_$ = __webpack_require__(849);
52311
- /* provided dependency */ var libtess = __webpack_require__(625);
52460
+ /* provided dependency */ var SVGParser_$ = __webpack_require__(714);
52461
+ /* provided dependency */ var libtess = __webpack_require__(51);
52312
52462
  /*******************************************************************************
52313
52463
  *
52314
52464
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -55077,7 +55227,7 @@ const SVGParser_default_ = SVGParser;
55077
55227
  x_ite_Namespace.set ("x_ite/Parser/SVGParser", SVGParser_default_);
55078
55228
  /* harmony default export */ const Parser_SVGParser = (SVGParser_default_);
55079
55229
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GoldenGate.js
55080
- /* provided dependency */ var GoldenGate_$ = __webpack_require__(849);
55230
+ /* provided dependency */ var GoldenGate_$ = __webpack_require__(714);
55081
55231
  /*******************************************************************************
55082
55232
  *
55083
55233
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -55406,7 +55556,7 @@ const Plane3_default_ = Plane3;
55406
55556
  x_ite_Namespace.set ("standard/Math/Geometry/Plane3", Plane3_default_);
55407
55557
  /* harmony default export */ const Geometry_Plane3 = (Plane3_default_);
55408
55558
  ;// CONCATENATED MODULE: ./src/standard/Math/Geometry/Triangle3.js
55409
- /* provided dependency */ var Triangle3_libtess = __webpack_require__(625);
55559
+ /* provided dependency */ var Triangle3_libtess = __webpack_require__(51);
55410
55560
  /*******************************************************************************
55411
55561
  *
55412
55562
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -58722,7 +58872,7 @@ function BindableStack (executionContext, defaultNode)
58722
58872
  {
58723
58873
  Base_X3DBaseNode.call (this, executionContext);
58724
58874
 
58725
- this .array = [ defaultNode ];
58875
+ this .nodes = [ defaultNode ];
58726
58876
  }
58727
58877
 
58728
58878
  BindableStack .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype),
@@ -58734,18 +58884,18 @@ BindableStack .prototype = Object .assign (Object .create (Base_X3DBaseNode.prot
58734
58884
  },
58735
58885
  get: function ()
58736
58886
  {
58737
- return this .array;
58887
+ return this .nodes;
58738
58888
  },
58739
58889
  top: function ()
58740
58890
  {
58741
- return this .array .at (-1);
58891
+ return this .nodes .at (-1);
58742
58892
  },
58743
58893
  pushOnTop: function (node)
58744
58894
  {
58745
- if (node !== this .array [0])
58895
+ if (node !== this .nodes [0])
58746
58896
  {
58747
- this .array .at (-1) ._isBound = false;
58748
- this .array .push (node);
58897
+ this .nodes .at (-1) ._isBound = false;
58898
+ this .nodes .push (node);
58749
58899
  }
58750
58900
 
58751
58901
  // Don't do set_bind.
@@ -58763,25 +58913,25 @@ BindableStack .prototype = Object .assign (Object .create (Base_X3DBaseNode.prot
58763
58913
 
58764
58914
  const
58765
58915
  fromNode = this .top (),
58766
- boundNode = this .array .at (-1);
58916
+ boundNode = this .nodes .at (-1);
58767
58917
 
58768
58918
  // Remove invisible nodes and unbind them if needed.
58769
58919
 
58770
58920
  for (const removedNode of removedNodes)
58771
58921
  {
58772
- const index = this .array .indexOf (removedNode);
58922
+ const index = this .nodes .indexOf (removedNode);
58773
58923
 
58774
58924
  if (index > 0)
58775
- this .array .splice (index, 1);
58925
+ this .nodes .splice (index, 1);
58776
58926
  }
58777
58927
 
58778
58928
  // Unbind nodes with set_bind false and pop top node.
58779
58929
 
58780
- if (boundNode !== this .array [0])
58930
+ if (boundNode !== this .nodes [0])
58781
58931
  {
58782
58932
  if (changedNodes .some (node => ! node ._set_bind .getValue () && node === boundNode))
58783
58933
  {
58784
- this .array .pop ();
58934
+ this .nodes .pop ();
58785
58935
  }
58786
58936
  }
58787
58937
 
@@ -58791,20 +58941,18 @@ BindableStack .prototype = Object .assign (Object .create (Base_X3DBaseNode.prot
58791
58941
  {
58792
58942
  if (bindNode ._set_bind .getValue ())
58793
58943
  {
58794
- const index = this .array .indexOf (bindNode);
58944
+ const index = this .nodes .indexOf (bindNode);
58795
58945
 
58796
58946
  if (index > -1)
58797
- {
58798
- this .array .splice (index, 1);
58799
- }
58947
+ this .nodes .splice (index, 1);
58800
58948
 
58801
- this .array .push (bindNode);
58949
+ this .nodes .push (bindNode);
58802
58950
  }
58803
58951
  }
58804
58952
 
58805
58953
  // Bind top node if not bound.
58806
58954
 
58807
- const top = this .array .at (-1);
58955
+ const top = this .nodes .at (-1);
58808
58956
 
58809
58957
  if (top !== boundNode)
58810
58958
  {
@@ -58891,10 +59039,11 @@ function BindableList (executionContext, defaultNode)
58891
59039
  {
58892
59040
  Base_X3DBaseNode.call (this, executionContext);
58893
59041
 
58894
- this .collected = [ defaultNode ];
58895
- this .array = [ defaultNode ];
58896
- this .updateTime = 0;
58897
- this .removedNodes = [ ];
59042
+ this .updateTime = 0;
59043
+ this .nodes = [ defaultNode ];
59044
+ this .collectedNodes = [ defaultNode ];
59045
+ this .changedNodes = [ ];
59046
+ this .removedNodes = [ ];
58898
59047
  }
58899
59048
 
58900
59049
  BindableList .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype),
@@ -58906,14 +59055,14 @@ BindableList .prototype = Object .assign (Object .create (Base_X3DBaseNode.proto
58906
59055
  },
58907
59056
  get: function ()
58908
59057
  {
58909
- return this .array;
59058
+ return this .nodes;
58910
59059
  },
58911
59060
  getBound: function (name)
58912
59061
  {
58913
- const length = this .array .length;
59062
+ const length = this .nodes .length;
58914
59063
 
58915
59064
  if (length === 1)
58916
- return this .array [0]; // Return default viewpoint.
59065
+ return this .nodes [0]; // Return default viewpoint.
58917
59066
 
58918
59067
  const enableInlineBindables = false;
58919
59068
 
@@ -58924,7 +59073,7 @@ BindableList .prototype = Object .assign (Object .create (Base_X3DBaseNode.proto
58924
59073
  for (let i = 1; i < length; ++ i)
58925
59074
  {
58926
59075
  const
58927
- node = this .array [i],
59076
+ node = this .nodes [i],
58928
59077
  scene = node .getExecutionContext () .getOuterNode () ?.getScene () ?? node .getScene ();
58929
59078
 
58930
59079
  if (!enableInlineBindables && !scene .isMainScene ())
@@ -58940,7 +59089,7 @@ BindableList .prototype = Object .assign (Object .create (Base_X3DBaseNode.proto
58940
59089
  for (let i = 1; i < length; ++ i)
58941
59090
  {
58942
59091
  const
58943
- node = this .array [i],
59092
+ node = this .nodes [i],
58944
59093
  scene = node .getExecutionContext () .getOuterNode () ?.getScene () ?? node .getScene ();
58945
59094
 
58946
59095
  if (!enableInlineBindables && !scene .isMainScene ())
@@ -58955,7 +59104,7 @@ BindableList .prototype = Object .assign (Object .create (Base_X3DBaseNode.proto
58955
59104
  for (let i = 1; i < length; ++ i)
58956
59105
  {
58957
59106
  const
58958
- node = this .array [i],
59107
+ node = this .nodes [i],
58959
59108
  scene = node .getExecutionContext () .getOuterNode () ?.getScene () ?? node .getScene ();
58960
59109
 
58961
59110
  if (!enableInlineBindables && !scene .isMainScene ())
@@ -58964,46 +59113,52 @@ BindableList .prototype = Object .assign (Object .create (Base_X3DBaseNode.proto
58964
59113
  return node;
58965
59114
  }
58966
59115
 
58967
- return this .array [0]; // Return default viewpoint.
59116
+ return this .nodes [0]; // Return default viewpoint.
58968
59117
  },
58969
59118
  push: function (node)
58970
59119
  {
58971
- return this .collected .push (node);
59120
+ return this .collectedNodes .push (node);
58972
59121
  },
58973
59122
  update: function (layerNode, stack)
58974
59123
  {
58975
59124
  const
58976
- changedNodes = this .collected .filter (node => node ._set_bind .getModificationTime () > this .updateTime),
58977
- removedNodes = this .removedNodes;
59125
+ collectedNodes = this .collectedNodes,
59126
+ changedNodes = this .changedNodes,
59127
+ removedNodes = this .removedNodes;
58978
59128
 
58979
- if (! equals (this .collected, this .array))
59129
+ for (const node of collectedNodes)
58980
59130
  {
58981
- // Unbind nodes not in current list (collected);
59131
+ if (node ._set_bind .getModificationTime () > this .updateTime)
59132
+ changedNodes .push (node);
59133
+ }
58982
59134
 
58983
- for (const node of this .array)
59135
+ if (!equals (collectedNodes, this .nodes))
59136
+ {
59137
+ // Unbind nodes not in current list (collectedNodes);
59138
+
59139
+ for (const node of this .nodes)
58984
59140
  {
58985
- if (this .collected .indexOf (node) === -1)
58986
- {
59141
+ if (collectedNodes .indexOf (node) === -1)
58987
59142
  removedNodes .push (node);
58988
- }
58989
59143
  }
58990
59144
 
58991
- // Swap arrays.
59145
+ // Swap nodes.
58992
59146
 
58993
- const tmp = this .array;
59147
+ const tmp = this .nodes;
58994
59148
 
58995
- this .array = this .collected;
58996
- this .collected = tmp;
59149
+ this .nodes = collectedNodes;
59150
+ this .collectedNodes = tmp;
58997
59151
  }
58998
59152
 
58999
- // Clear collected array.
59153
+ // Clear collected nodes.
59000
59154
 
59001
- this .collected .length = 1;
59155
+ this .collectedNodes .length = 1;
59002
59156
 
59003
59157
  // Update stack.
59004
59158
 
59005
59159
  stack .update (layerNode, removedNodes, changedNodes)
59006
59160
 
59161
+ changedNodes .length = 0;
59007
59162
  removedNodes .length = 0;
59008
59163
 
59009
59164
  // Advance updateTime time.
@@ -59015,7 +59170,7 @@ BindableList .prototype = Object .assign (Object .create (Base_X3DBaseNode.proto
59015
59170
  for (const key of Reflect .ownKeys (BindableList .prototype))
59016
59171
  Object .defineProperty (BindableList .prototype, key, { enumerable: false });
59017
59172
 
59018
- // Compares two arrays.
59173
+ // Compares two nodess.
59019
59174
 
59020
59175
  function equals (lhs, rhs)
59021
59176
  {
@@ -62712,7 +62867,7 @@ const X3DTexture2DNode_default_ = X3DTexture2DNode;
62712
62867
  x_ite_Namespace.set ("x_ite/Components/Texturing/X3DTexture2DNode", X3DTexture2DNode_default_);
62713
62868
  /* harmony default export */ const Texturing_X3DTexture2DNode = (X3DTexture2DNode_default_);
62714
62869
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/ImageTexture.js
62715
- /* provided dependency */ var ImageTexture_$ = __webpack_require__(849);
62870
+ /* provided dependency */ var ImageTexture_$ = __webpack_require__(714);
62716
62871
  /*******************************************************************************
62717
62872
  *
62718
62873
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -67052,7 +67207,7 @@ const X3DWorld_default_ = X3DWorld;
67052
67207
  x_ite_Namespace.set ("x_ite/Execution/X3DWorld", X3DWorld_default_);
67053
67208
  /* harmony default export */ const Execution_X3DWorld = (X3DWorld_default_);
67054
67209
  ;// CONCATENATED MODULE: ./src/x_ite/InputOutput/FileLoader.js
67055
- /* provided dependency */ var FileLoader_$ = __webpack_require__(849);
67210
+ /* provided dependency */ var FileLoader_$ = __webpack_require__(714);
67056
67211
  /*******************************************************************************
67057
67212
  *
67058
67213
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -67127,11 +67282,10 @@ function FileLoader (node, external)
67127
67282
  this .browser = node .getBrowser ();
67128
67283
  this .external = external === undefined ? this .browser .isExternal () : external;
67129
67284
  this .executionContext = this .external ? node .getExecutionContext () : this .browser .currentScene;
67130
- this .userAgent = this .browser .getName () + "/" + this .browser .getVersion () + " (X3D Browser; +" + this .browser .getProviderUrl () + ")";
67131
67285
  this .target = "";
67132
67286
  this .url = [ ];
67133
67287
  this .URL = new URL (this .getReferer (), this .getReferer ());
67134
- this .fileReader = new FileReader ();
67288
+ this .controller = new AbortController ();
67135
67289
  }
67136
67290
 
67137
67291
  FileLoader .prototype = Object .assign (Object .create (Base_X3DObject.prototype),
@@ -67139,24 +67293,20 @@ FileLoader .prototype = Object .assign (Object .create (Base_X3DObject.prototype
67139
67293
  constructor: FileLoader,
67140
67294
  abort: function ()
67141
67295
  {
67142
- this .callback = Function .prototype;
67143
- this .bindViewpoint = Function .prototype;
67144
- this .foreign = Function .prototype;
67145
- },
67146
- isPrivate: function ()
67147
- {
67148
- return true;
67296
+ this .url .length = 0;
67297
+
67298
+ this .controller .abort ();
67149
67299
  },
67150
- getWorldURL: function ()
67300
+ getURL: function ()
67151
67301
  {
67152
67302
  return this .URL;
67153
67303
  },
67154
67304
  getReferer: function ()
67155
67305
  {
67156
- if (this .node .getTypeName () === "X3DWorld")
67306
+ if (this .node instanceof Execution_X3DWorld)
67157
67307
  {
67158
67308
  if (this .external)
67159
- return this .browser .getLocation ();
67309
+ return this .browser .getBaseURL ();
67160
67310
  }
67161
67311
 
67162
67312
  return this .executionContext .getWorldURL ();
@@ -67254,7 +67404,7 @@ FileLoader .prototype = Object .assign (Object .create (Base_X3DObject.prototype
67254
67404
  createX3DFromURLAsync: function (callback, data)
67255
67405
  {
67256
67406
  if (data === null)
67257
- callback (null, this .URL);
67407
+ callback (null);
67258
67408
  else
67259
67409
  this .createX3DFromString (this .URL, data, callback, this .loadDocumentError .bind (this));
67260
67410
  },
@@ -67303,7 +67453,7 @@ FileLoader .prototype = Object .assign (Object .create (Base_X3DObject.prototype
67303
67453
  if (result [3] === "base64")
67304
67454
  data = atob (data);
67305
67455
  else
67306
- data = unescape (data);
67456
+ data = decodeURIComponent (data);
67307
67457
 
67308
67458
  this .callback (data);
67309
67459
  return;
@@ -67343,7 +67493,7 @@ FileLoader .prototype = Object .assign (Object .create (Base_X3DObject.prototype
67343
67493
  // Load URL async
67344
67494
 
67345
67495
  const
67346
- options = { cache: this .node .getCache () ? "default" : "reload" },
67496
+ options = { cache: this .node .getCache () ? "default" : "reload", signal: this .controller .signal },
67347
67497
  response = this .handleErrors (await fetch (this .URL .href, options)),
67348
67498
  contentType = response .headers .get ("content-type") ?.replace (/;.*$/, "");
67349
67499
 
@@ -67359,10 +67509,10 @@ FileLoader .prototype = Object .assign (Object .create (Base_X3DObject.prototype
67359
67509
  },
67360
67510
  handleErrors: function (response)
67361
67511
  {
67362
- if (!response .ok)
67363
- throw Error (response .statusText || response .status);
67512
+ if (response .ok)
67513
+ return response;
67364
67514
 
67365
- return response;
67515
+ throw Error (response .statusText || response .status);
67366
67516
  },
67367
67517
  loadDocumentError: function (exception)
67368
67518
  {
@@ -67570,7 +67720,7 @@ X3DExternProtoDeclaration .prototype = Object .assign (Object .create (Prototype
67570
67720
  },
67571
67721
  setError: function (error)
67572
67722
  {
67573
- console .error ("Error loading extern prototype:", error);
67723
+ console .error (`Error loading extern prototype '${this .getName ()}':`, error);
67574
67724
 
67575
67725
  this [_scene] = this .getBrowser () .getPrivateScene ();
67576
67726
 
@@ -67672,7 +67822,7 @@ X3DExternProtoDeclaration .prototype = Object .assign (Object .create (Prototype
67672
67822
  generator .string += "name='";
67673
67823
  generator .string += generator .XMLEncode (field .getName ());
67674
67824
  generator .string += "'";
67675
- generator .string += "/>";
67825
+ generator .string += generator .closingTags ? "></field>" : "/>";
67676
67826
  generator .string += generator .TidyBreak ();
67677
67827
  }
67678
67828
 
@@ -67815,37 +67965,32 @@ for (const key of Reflect .ownKeys (X3DExternProtoDeclaration .prototype))
67815
67965
 
67816
67966
  Object .defineProperty (X3DExternProtoDeclaration .prototype, "name",
67817
67967
  {
67818
- get: function () { return this .getName (); },
67968
+ get: X3DExternProtoDeclaration .prototype .getName,
67819
67969
  enumerable: true,
67820
- configurable: false
67821
67970
  });
67822
67971
 
67823
67972
  Object .defineProperty (X3DExternProtoDeclaration .prototype, "fields",
67824
67973
  {
67825
- get: function () { return this .getFieldDefinitions (); },
67974
+ get: X3DExternProtoDeclaration .prototype .getFieldDefinitions,
67826
67975
  enumerable: true,
67827
- configurable: false
67828
67976
  });
67829
67977
 
67830
67978
  Object .defineProperty (X3DExternProtoDeclaration .prototype, "isExternProto",
67831
67979
  {
67832
- get: function () { return true; },
67980
+ value: true,
67833
67981
  enumerable: true,
67834
- configurable: false
67835
67982
  });
67836
67983
 
67837
67984
  Object .defineProperty (X3DExternProtoDeclaration .prototype, "urls",
67838
67985
  {
67839
67986
  get: function () { return this ._url; },
67840
67987
  enumerable: true,
67841
- configurable: false
67842
67988
  });
67843
67989
 
67844
67990
  Object .defineProperty (X3DExternProtoDeclaration .prototype, "loadState",
67845
67991
  {
67846
- get: function () { return this .checkLoadState (); },
67992
+ get: X3DExternProtoDeclaration .prototype .checkLoadState,
67847
67993
  enumerable: true,
67848
- configurable: false
67849
67994
  });
67850
67995
 
67851
67996
  const X3DExternProtoDeclaration_default_ = X3DExternProtoDeclaration;
@@ -68098,7 +68243,7 @@ X3DRoute .prototype = Object .assign (Object .create (Base_X3DObject.prototype),
68098
68243
 
68099
68244
  generator .string += generator .XMLEncode (this [_destinationField] .getName ());
68100
68245
  generator .string += "'";
68101
- generator .string += "/>";
68246
+ generator .string += generator .closingTags ? "></ROUTE>" : "/>";
68102
68247
  },
68103
68248
  toJSONStream: function (generator)
68104
68249
  {
@@ -68195,7 +68340,6 @@ Object .defineProperty (X3DRoute .prototype, "sourceNode",
68195
68340
  return Fields_SFNodeCache.get (this [_sourceNode]);
68196
68341
  },
68197
68342
  enumerable: true,
68198
- configurable: false
68199
68343
  });
68200
68344
 
68201
68345
  Object .defineProperty (X3DRoute .prototype, "sourceField",
@@ -68205,7 +68349,6 @@ Object .defineProperty (X3DRoute .prototype, "sourceField",
68205
68349
  return this [_sourceField] .getName ();
68206
68350
  },
68207
68351
  enumerable: true,
68208
- configurable: false
68209
68352
  });
68210
68353
 
68211
68354
  Object .defineProperty (X3DRoute .prototype, "destinationNode",
@@ -68215,7 +68358,6 @@ Object .defineProperty (X3DRoute .prototype, "destinationNode",
68215
68358
  return Fields_SFNodeCache.get (this [_destinationNode]);
68216
68359
  },
68217
68360
  enumerable: true,
68218
- configurable: false
68219
68361
  });
68220
68362
 
68221
68363
  Object .defineProperty (X3DRoute .prototype, "destinationField",
@@ -68225,7 +68367,6 @@ Object .defineProperty (X3DRoute .prototype, "destinationField",
68225
68367
  return this [_destinationField] .getName ();
68226
68368
  },
68227
68369
  enumerable: true,
68228
- configurable: false
68229
68370
  });
68230
68371
 
68231
68372
  const X3DRoute_default_ = X3DRoute;
@@ -69178,73 +69319,63 @@ for (const key of Reflect .ownKeys (X3DExecutionContext .prototype))
69178
69319
 
69179
69320
  Object .defineProperty (X3DExecutionContext .prototype, "specificationVersion",
69180
69321
  {
69181
- get: function () { return this .getSpecificationVersion (); },
69322
+ get: function () { return this .getSpecificationVersion () },
69182
69323
  enumerable: true,
69183
- configurable: false
69184
69324
  });
69185
69325
 
69186
69326
  Object .defineProperty (X3DExecutionContext .prototype, "encoding",
69187
69327
  {
69188
- get: function () { return this .getEncoding (); },
69328
+ get: function () { return this .getEncoding () },
69189
69329
  enumerable: true,
69190
- configurable: false
69191
69330
  });
69192
69331
 
69193
69332
  Object .defineProperty (X3DExecutionContext .prototype, "profile",
69194
69333
  {
69195
- get: function () { return this .getProfile (); },
69334
+ get: function () { return this .getProfile () },
69196
69335
  enumerable: true,
69197
- configurable: false
69198
69336
  });
69199
69337
 
69200
69338
  Object .defineProperty (X3DExecutionContext .prototype, "components",
69201
69339
  {
69202
- get: function () { return this .getComponents (); },
69340
+ get: function () { return this .getComponents () },
69203
69341
  enumerable: true,
69204
- configurable: false
69205
69342
  });
69206
69343
 
69207
69344
  Object .defineProperty (X3DExecutionContext .prototype, "worldURL",
69208
69345
  {
69209
- get: function () { return this .getWorldURL (); },
69346
+ get: function () { return this .getWorldURL () },
69210
69347
  enumerable: true,
69211
- configurable: false
69212
69348
  });
69213
69349
 
69214
69350
  Object .defineProperty (X3DExecutionContext .prototype, "units",
69215
69351
  {
69216
- get: function () { return this .getUnits (); },
69352
+ get: function () { return this .getUnits () },
69217
69353
  enumerable: true,
69218
- configurable: false
69219
69354
  });
69220
69355
 
69221
69356
  Object .defineProperty (X3DExecutionContext .prototype, "rootNodes",
69222
69357
  {
69223
- get: function () { return this .getRootNodes (); },
69224
- set: function (value) { this .setRootNodes (value); },
69358
+ get: X3DExecutionContext .prototype .getRootNodes,
69359
+ set: function (value) { this .setRootNodes (value) },
69225
69360
  enumerable: true,
69226
- configurable: false
69227
69361
  });
69228
69362
 
69229
69363
  Object .defineProperty (X3DExecutionContext .prototype, "protos",
69230
69364
  {
69231
- get: function () { return this .getProtoDeclarations (); },
69365
+ get: X3DExecutionContext .prototype .getProtoDeclarations,
69232
69366
  enumerable: true,
69233
- configurable: false
69234
69367
  });
69235
69368
 
69236
69369
  Object .defineProperty (X3DExecutionContext .prototype, "externprotos",
69237
69370
  {
69238
- get: function () { return this .getExternProtoDeclarations (); },
69371
+ get: X3DExecutionContext .prototype .getExternProtoDeclarations,
69239
69372
  enumerable: true,
69240
- configurable: false
69241
69373
  });
69242
69374
 
69243
69375
  Object .defineProperty (X3DExecutionContext .prototype, "routes",
69244
69376
  {
69245
- get: function () { return this .getRoutes (); },
69377
+ get: X3DExecutionContext .prototype .getRoutes,
69246
69378
  enumerable: true,
69247
- configurable: false
69248
69379
  });
69249
69380
 
69250
69381
  const X3DExecutionContext_default_ = X3DExecutionContext;
@@ -69253,7 +69384,7 @@ const X3DExecutionContext_default_ = X3DExecutionContext;
69253
69384
  x_ite_Namespace.set ("x_ite/Execution/X3DExecutionContext", X3DExecutionContext_default_);
69254
69385
  /* harmony default export */ const Execution_X3DExecutionContext = (X3DExecutionContext_default_);
69255
69386
  ;// CONCATENATED MODULE: ./src/x_ite/Configuration/ComponentInfo.js
69256
- /* provided dependency */ var ComponentInfo_$ = __webpack_require__(849);
69387
+ /* provided dependency */ var ComponentInfo_$ = __webpack_require__(714);
69257
69388
  /*******************************************************************************
69258
69389
  *
69259
69390
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -69324,6 +69455,7 @@ ComponentInfo .prototype = Object .assign (Object .create (Base_X3DObject.protot
69324
69455
  },
69325
69456
  toVRMLStream: function (generator)
69326
69457
  {
69458
+ generator .string += generator .Indent ();
69327
69459
  generator .string += "COMPONENT";
69328
69460
  generator .string += generator .Space ();
69329
69461
  generator .string += this .name;
@@ -69344,7 +69476,7 @@ ComponentInfo .prototype = Object .assign (Object .create (Base_X3DObject.protot
69344
69476
  generator .string += "level='";
69345
69477
  generator .string += this .level;
69346
69478
  generator .string += "'";
69347
- generator .string += "/>";
69479
+ generator .string += generator .closingTags ? "></component>" : "/>";
69348
69480
  },
69349
69481
  toJSONStream: function (generator)
69350
69482
  {
@@ -69519,7 +69651,6 @@ function UnitInfo (category, name, conversionFactor)
69519
69651
  {
69520
69652
  Object .defineProperty (this, "category", {
69521
69653
  value: category,
69522
- writable: false,
69523
69654
  });
69524
69655
 
69525
69656
  this .name = name;
@@ -69535,6 +69666,7 @@ UnitInfo .prototype = Object .assign (Object .create (Base_X3DObject.prototype),
69535
69666
  },
69536
69667
  toVRMLStream: function (generator)
69537
69668
  {
69669
+ generator .string += generator .Indent ();
69538
69670
  generator .string += "UNIT";
69539
69671
  generator .string += generator .Space ();
69540
69672
  generator .string += this .category;
@@ -69559,7 +69691,7 @@ UnitInfo .prototype = Object .assign (Object .create (Base_X3DObject.prototype),
69559
69691
  generator .string += "conversionFactor='";
69560
69692
  generator .string += this .conversionFactor;
69561
69693
  generator .string += "'";
69562
- generator .string += "/>";
69694
+ generator .string += generator .closingTags ? "></unit>" : "/>";
69563
69695
  },
69564
69696
  toJSONStream: function (generator, _throw)
69565
69697
  {
@@ -69602,7 +69734,7 @@ UnitInfo .prototype = Object .assign (Object .create (Base_X3DObject.prototype),
69602
69734
  generator .string += '"';
69603
69735
  generator .string += ':';
69604
69736
  generator .string += generator .TidySpace ();
69605
- generator .string += generator .DoublePrecision (this .conversionFactor);
69737
+ generator .string += this .conversionFactor;
69606
69738
  generator .string += generator .TidyBreak ();
69607
69739
 
69608
69740
  generator .string += generator .DecIndent ();
@@ -69617,8 +69749,6 @@ for (const key of Reflect .ownKeys (UnitInfo .prototype))
69617
69749
  Object .defineProperty (UnitInfo .prototype, "conversion_factor",
69618
69750
  {
69619
69751
  get: function () { return this .conversionFactor; },
69620
- enumerable: false,
69621
- configurable: false
69622
69752
  });
69623
69753
 
69624
69754
  const UnitInfo_default_ = UnitInfo;
@@ -69808,7 +69938,7 @@ X3DExportedNode .prototype = Object .assign (Object .create (Base_X3DObject.prot
69808
69938
  generator .string += "'";
69809
69939
  }
69810
69940
 
69811
- generator .string += "/>";
69941
+ generator .string += generator .closingTags ? "></EXPORT>" : "/>";
69812
69942
  },
69813
69943
  toJSONStream: function (generator)
69814
69944
  {
@@ -69878,7 +70008,6 @@ Object .defineProperty (X3DExportedNode .prototype, "exportedName",
69878
70008
  return Fields_SFNodeCache.get (this [X3DExportedNode_exportedName]);
69879
70009
  },
69880
70010
  enumerable: true,
69881
- configurable: false
69882
70011
  });
69883
70012
 
69884
70013
  Object .defineProperty (X3DExportedNode .prototype, "localNode",
@@ -69888,7 +70017,6 @@ Object .defineProperty (X3DExportedNode .prototype, "localNode",
69888
70017
  return Fields_SFNodeCache.get (this [_localNode]);
69889
70018
  },
69890
70019
  enumerable: true,
69891
- configurable: false
69892
70020
  });
69893
70021
 
69894
70022
  const X3DExportedNode_default_ = X3DExportedNode;
@@ -70370,6 +70498,7 @@ X3DScene .prototype = Object .assign (Object .create (Execution_X3DExecutionCont
70370
70498
  },
70371
70499
  toVRMLStream: function (generator)
70372
70500
  {
70501
+ generator .string += generator .Indent ();
70373
70502
  generator .string += "#X3D V";
70374
70503
  generator .string += LATEST_VERSION;
70375
70504
  generator .string += generator .Space ();
@@ -70401,34 +70530,29 @@ X3DScene .prototype = Object .assign (Object .create (Execution_X3DExecutionCont
70401
70530
  generator .string += generator .TidyBreak ();
70402
70531
  }
70403
70532
 
70404
- // Units
70405
- {
70406
- let empty = true;
70533
+ const units = this .getUnits () .filter (unit => unit .conversionFactor !== 1);
70407
70534
 
70408
- for (const unit of this .getUnits ())
70535
+ if (units .length)
70536
+ {
70537
+ for (const unit of units)
70409
70538
  {
70410
- if (unit .conversionFactor !== 1)
70411
- {
70412
- empty = false;
70413
-
70414
- unit .toVRMLStream (generator);
70539
+ unit .toVRMLStream (generator);
70415
70540
 
70416
- generator .string += generator .Break ();
70417
- }
70541
+ generator .string += generator .Break ();
70418
70542
  }
70419
70543
 
70420
- if (!empty)
70421
- generator .string += generator .TidyBreak ();
70544
+ generator .string += generator .TidyBreak ();
70422
70545
  }
70423
70546
 
70424
70547
  const metadata = this .getMetaDatas ();
70425
70548
 
70426
70549
  if (metadata .size)
70427
70550
  {
70428
- for (const [key, values] of metadata .entries ())
70551
+ for (const [key, values] of metadata)
70429
70552
  {
70430
70553
  for (const value of values)
70431
70554
  {
70555
+ generator .string += generator .Indent ();
70432
70556
  generator .string += "META";
70433
70557
  generator .string += generator .Space ();
70434
70558
  generator .string += new x_ite_Fields.SFString (key) .toString ();
@@ -70461,15 +70585,21 @@ X3DScene .prototype = Object .assign (Object .create (Execution_X3DExecutionCont
70461
70585
  },
70462
70586
  toXMLStream: function (generator)
70463
70587
  {
70464
- generator .string += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
70465
- generator .string += generator .TidyBreak ();
70466
- generator .string += "<!DOCTYPE X3D PUBLIC \"ISO//Web3D//DTD X3D ";
70467
- generator .string += LATEST_VERSION;
70468
- generator .string += "//EN\" \"http://www.web3d.org/specifications/x3d-";
70469
- generator .string += LATEST_VERSION;
70470
- generator .string += ".dtd\">";
70471
- generator .string += generator .TidyBreak ();
70588
+ if (!generator .html)
70589
+ {
70590
+ generator .string += generator .Indent ();
70591
+ generator .string += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
70592
+ generator .string += generator .TidyBreak ();
70593
+ generator .string += generator .Indent ();
70594
+ generator .string += "<!DOCTYPE X3D PUBLIC \"ISO//Web3D//DTD X3D ";
70595
+ generator .string += LATEST_VERSION;
70596
+ generator .string += "//EN\" \"http://www.web3d.org/specifications/x3d-";
70597
+ generator .string += LATEST_VERSION;
70598
+ generator .string += ".dtd\">";
70599
+ generator .string += generator .TidyBreak ();
70600
+ }
70472
70601
 
70602
+ generator .string += generator .Indent ();
70473
70603
  generator .string += "<X3D";
70474
70604
  generator .string += generator .Space ();
70475
70605
  generator .string += "profile='";
@@ -70513,7 +70643,7 @@ X3DScene .prototype = Object .assign (Object .create (Execution_X3DExecutionCont
70513
70643
  }
70514
70644
  }
70515
70645
 
70516
- for (const [key, values] of this .getMetaDatas () .entries ())
70646
+ for (const [key, values] of this .getMetaDatas ())
70517
70647
  {
70518
70648
  for (const value of values)
70519
70649
  {
@@ -70527,7 +70657,7 @@ X3DScene .prototype = Object .assign (Object .create (Execution_X3DExecutionCont
70527
70657
  generator .string += "content='";
70528
70658
  generator .string += generator .XMLEncode (value);
70529
70659
  generator .string += "'";
70530
- generator .string += "/>";
70660
+ generator .string += generator .closingTags ? "></meta>" : "/>";
70531
70661
  generator .string += generator .TidyBreak ();
70532
70662
  }
70533
70663
  }
@@ -70583,13 +70713,14 @@ X3DScene .prototype = Object .assign (Object .create (Execution_X3DExecutionCont
70583
70713
 
70584
70714
  generator .DecIndent ();
70585
70715
 
70716
+ generator .string += generator .Indent ();
70586
70717
  generator .string += "</X3D>";
70587
- generator .string += generator .TidyBreak ();
70588
70718
  },
70589
70719
  toJSONStream: function (generator)
70590
70720
  {
70591
70721
  // X3D
70592
70722
 
70723
+ generator .string += generator .Indent ();
70593
70724
  generator .string += '{';
70594
70725
  generator .string += generator .TidySpace ();
70595
70726
  generator .string += '"';
@@ -70727,9 +70858,9 @@ X3DScene .prototype = Object .assign (Object .create (Execution_X3DExecutionCont
70727
70858
 
70728
70859
  // Meta data
70729
70860
 
70730
- for (const [i, [key, values]] of [... this .getMetaDatas ()] .entries ())
70861
+ for (const [i, [key, values]] of [... this .getMetaDatas ()])
70731
70862
  {
70732
- for (const [j, value] of values .entries ())
70863
+ for (const [j, value] of values)
70733
70864
  {
70734
70865
  generator .string += generator .Indent ();
70735
70866
  generator .string += '{';
@@ -70928,7 +71059,6 @@ X3DScene .prototype = Object .assign (Object .create (Execution_X3DExecutionCont
70928
71059
  generator .string += generator .DecIndent ();
70929
71060
  generator .string += generator .Indent ();
70930
71061
  generator .string += '}';
70931
- generator .string += generator .TidyBreak ();
70932
71062
  },
70933
71063
  });
70934
71064
 
@@ -71228,7 +71358,7 @@ const DataStorage_default_ = DataStorage;
71228
71358
  x_ite_Namespace.set ("standard/Utility/DataStorage", DataStorage_default_);
71229
71359
  /* harmony default export */ const Utility_DataStorage = (DataStorage_default_);
71230
71360
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/X3DCoreContext.js
71231
- /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(849);
71361
+ /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(714);
71232
71362
  /*******************************************************************************
71233
71363
  *
71234
71364
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -71387,7 +71517,6 @@ X3DCoreContext .prototype =
71387
71517
  this .loadURL (new x_ite_Fields.MFString (value), new x_ite_Fields.MFString ());
71388
71518
  },
71389
71519
  enumerable: true,
71390
- configurable: false,
71391
71520
  });
71392
71521
 
71393
71522
  Object .defineProperty (this .getElement () .get (0), "url",
@@ -71401,7 +71530,6 @@ X3DCoreContext .prototype =
71401
71530
  this .loadURL (value, new x_ite_Fields.MFString ());
71402
71531
  },
71403
71532
  enumerable: true,
71404
- configurable: false,
71405
71533
  });
71406
71534
 
71407
71535
  // Configure browser event handlers.
@@ -71503,6 +71631,12 @@ X3DCoreContext .prototype =
71503
71631
  this .setBrowserOption ("Antialiased", this .parseBooleanAttribute (newValue, true));
71504
71632
  break;
71505
71633
  }
71634
+ case "baseURL":
71635
+ case "baseurl":
71636
+ {
71637
+ this .setBaseURL (newValue);
71638
+ break;
71639
+ }
71506
71640
  case "cache":
71507
71641
  {
71508
71642
  this .setBrowserOption ("Cache", this .parseBooleanAttribute (newValue, true));
@@ -77285,8 +77419,8 @@ const OrientationChaser_default_ = OrientationChaser;
77285
77419
  x_ite_Namespace.set ("x_ite/Components/Followers/OrientationChaser", OrientationChaser_default_);
77286
77420
  /* harmony default export */ const Followers_OrientationChaser = (OrientationChaser_default_);
77287
77421
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/ExamineViewer.js
77288
- /* provided dependency */ var jquery_mousewheel = __webpack_require__(242);
77289
- /* provided dependency */ var ExamineViewer_$ = __webpack_require__(849);
77422
+ /* provided dependency */ var jquery_mousewheel = __webpack_require__(510);
77423
+ /* provided dependency */ var ExamineViewer_$ = __webpack_require__(714);
77290
77424
  /*******************************************************************************
77291
77425
  *
77292
77426
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -77822,6 +77956,9 @@ ExamineViewer .prototype = Object .assign (Object .create (Navigation_X3DViewer.
77822
77956
  event .deltaY = delta;
77823
77957
  event .zoomFactor = Math .abs (delta) / ExamineViewer_$(window) .width ();
77824
77958
 
77959
+ event .pageX = (touches [0] .pageX + touches [1] .pageX) / 2;
77960
+ event .pageY = (touches [0] .pageY + touches [1] .pageY) / 2;
77961
+
77825
77962
  this .mousewheel (event);
77826
77963
 
77827
77964
  break;
@@ -78147,8 +78284,8 @@ const ExamineViewer_default_ = ExamineViewer;
78147
78284
  x_ite_Namespace.set ("x_ite/Browser/Navigation/ExamineViewer", ExamineViewer_default_);
78148
78285
  /* harmony default export */ const Navigation_ExamineViewer = (ExamineViewer_default_);
78149
78286
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/X3DFlyViewer.js
78150
- /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(242);
78151
- /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(849);
78287
+ /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(510);
78288
+ /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(714);
78152
78289
  /*******************************************************************************
78153
78290
  *
78154
78291
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -79096,8 +79233,8 @@ const FlyViewer_default_ = FlyViewer;
79096
79233
  x_ite_Namespace.set ("x_ite/Browser/Navigation/FlyViewer", FlyViewer_default_);
79097
79234
  /* harmony default export */ const Navigation_FlyViewer = (FlyViewer_default_);
79098
79235
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/PlaneViewer.js
79099
- /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(242);
79100
- /* provided dependency */ var PlaneViewer_$ = __webpack_require__(849);
79236
+ /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(510);
79237
+ /* provided dependency */ var PlaneViewer_$ = __webpack_require__(714);
79101
79238
  /*******************************************************************************
79102
79239
  *
79103
79240
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -79406,8 +79543,8 @@ const NoneViewer_default_ = NoneViewer;
79406
79543
  x_ite_Namespace.set ("x_ite/Browser/Navigation/NoneViewer", NoneViewer_default_);
79407
79544
  /* harmony default export */ const Navigation_NoneViewer = (NoneViewer_default_);
79408
79545
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/LookAtViewer.js
79409
- /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(242);
79410
- /* provided dependency */ var LookAtViewer_$ = __webpack_require__(849);
79546
+ /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(510);
79547
+ /* provided dependency */ var LookAtViewer_$ = __webpack_require__(714);
79411
79548
  /*******************************************************************************
79412
79549
  *
79413
79550
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -79780,6 +79917,9 @@ LookAtViewer .prototype = Object .assign (Object .create (Navigation_X3DViewer.p
79780
79917
 
79781
79918
  event .deltaY = delta;
79782
79919
  event .zoomFactor = Math .abs (delta) / LookAtViewer_$(window) .width ();
79920
+
79921
+ event .pageX = (touches [0] .pageX + touches [1] .pageX) / 2;
79922
+ event .pageY = (touches [0] .pageY + touches [1] .pageY) / 2;
79783
79923
 
79784
79924
  this .mousewheel (event);
79785
79925
  }
@@ -80722,13 +80862,13 @@ const
80722
80862
  _loadingTotal = Symbol (),
80723
80863
  X3DNetworkingContext_loadingObjects = Symbol (),
80724
80864
  _loading = Symbol (),
80725
- _location = Symbol (),
80865
+ _baseURL = Symbol (),
80726
80866
  _defaultScene = Symbol (),
80727
80867
  _set_loadCount = Symbol ();
80728
80868
 
80729
80869
  function getBaseURI (element)
80730
80870
  {
80731
- let baseURI = element .baseURI;
80871
+ let baseURI = element .prop ("baseURI");
80732
80872
 
80733
80873
  // Fix for Edge.
80734
80874
  if (baseURI .startsWith ("about:"))
@@ -80745,7 +80885,7 @@ function X3DNetworkingContext ()
80745
80885
  this [_loadingTotal] = 0;
80746
80886
  this [X3DNetworkingContext_loadingObjects] = new Set ();
80747
80887
  this [_loading] = false;
80748
- this [_location] = getBaseURI (this .getElement () [0]);
80888
+ this [_baseURL] = getBaseURI (this .getElement ());
80749
80889
  }
80750
80890
 
80751
80891
  X3DNetworkingContext .prototype =
@@ -80758,9 +80898,17 @@ X3DNetworkingContext .prototype =
80758
80898
  {
80759
80899
  return Networking_URLs.getProviderUrl ();
80760
80900
  },
80761
- getLocation: function ()
80901
+ getBaseURL: function ()
80762
80902
  {
80763
- return this [_location];
80903
+ return this [_baseURL];
80904
+ },
80905
+ setBaseURL: function (value)
80906
+ {
80907
+ const
80908
+ base = getBaseURI (this .getElement ()),
80909
+ url = new URL (value, base);
80910
+
80911
+ this [_baseURL] = url .protocol === "data:" ? base : url .href;
80764
80912
  },
80765
80913
  getDefaultScene: function ()
80766
80914
  {
@@ -81028,8 +81176,8 @@ const X3DPickingContext_default_ = X3DPickingContext;
81028
81176
  x_ite_Namespace.set ("x_ite/Browser/Picking/X3DPickingContext", X3DPickingContext_default_);
81029
81177
  /* harmony default export */ const Picking_X3DPickingContext = (X3DPickingContext_default_);
81030
81178
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js
81031
- /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(242);
81032
- /* provided dependency */ var PointingDevice_$ = __webpack_require__(849);
81179
+ /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(510);
81180
+ /* provided dependency */ var PointingDevice_$ = __webpack_require__(714);
81033
81181
  /*******************************************************************************
81034
81182
  *
81035
81183
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -82067,8 +82215,8 @@ const MultiSampleFrameBuffer_default_ = MultiSampleFrameBuffer;
82067
82215
  x_ite_Namespace.set ("x_ite/Rendering/MultiSampleFrameBuffer", MultiSampleFrameBuffer_default_);
82068
82216
  /* harmony default export */ const Rendering_MultiSampleFrameBuffer = (MultiSampleFrameBuffer_default_);
82069
82217
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Rendering/X3DRenderingContext.js
82070
- /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(849);
82071
- /* provided dependency */ var ResizeSensor = __webpack_require__(544);
82218
+ /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(714);
82219
+ /* provided dependency */ var ResizeSensor = __webpack_require__(945);
82072
82220
  /*******************************************************************************
82073
82221
  *
82074
82222
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -87957,7 +88105,7 @@ const X3DShaderNode_default_ = X3DShaderNode;
87957
88105
  x_ite_Namespace.set ("x_ite/Components/Shaders/X3DShaderNode", X3DShaderNode_default_);
87958
88106
  /* harmony default export */ const Shaders_X3DShaderNode = (X3DShaderNode_default_);
87959
88107
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js
87960
- /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(849);
88108
+ /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(714);
87961
88109
  /*******************************************************************************
87962
88110
  *
87963
88111
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -90734,7 +90882,7 @@ const ShaderCompiler_default_ = ShaderCompiler;
90734
90882
  x_ite_Namespace.set ("x_ite/Browser/Shaders/ShaderCompiler", ShaderCompiler_default_);
90735
90883
  /* harmony default export */ const Shaders_ShaderCompiler = (ShaderCompiler_default_);
90736
90884
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/ShaderPart.js
90737
- /* provided dependency */ var ShaderPart_$ = __webpack_require__(849);
90885
+ /* provided dependency */ var ShaderPart_$ = __webpack_require__(714);
90738
90886
  /*******************************************************************************
90739
90887
  *
90740
90888
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -94262,7 +94410,6 @@ Object .assign (X3DBrowserContext,
94262
94410
  Object .defineProperty (X3DBrowserContext .prototype, key,
94263
94411
  {
94264
94412
  value: browserContext .prototype [key],
94265
- enumerable: false,
94266
94413
  writable: true,
94267
94414
  });
94268
94415
  }
@@ -113173,7 +113320,7 @@ const X3DSoundSourceNode_default_ = X3DSoundSourceNode;
113173
113320
  x_ite_Namespace.set ("x_ite/Components/Sound/X3DSoundSourceNode", X3DSoundSourceNode_default_);
113174
113321
  /* harmony default export */ const Sound_X3DSoundSourceNode = (X3DSoundSourceNode_default_);
113175
113322
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/AudioClip.js
113176
- /* provided dependency */ var AudioClip_$ = __webpack_require__(849);
113323
+ /* provided dependency */ var AudioClip_$ = __webpack_require__(714);
113177
113324
  /*******************************************************************************
113178
113325
  *
113179
113326
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116068,8 +116215,8 @@ const GIFMedia_default_ = GifMedia;
116068
116215
  x_ite_Namespace.set ("x_ite/Browser/Texturing/GIFMedia", GIFMedia_default_);
116069
116216
  /* harmony default export */ const GIFMedia = (GIFMedia_default_);
116070
116217
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/MovieTexture.js
116071
- /* provided dependency */ var MovieTexture_$ = __webpack_require__(849);
116072
- /* provided dependency */ var SuperGif = __webpack_require__(339);
116218
+ /* provided dependency */ var MovieTexture_$ = __webpack_require__(714);
116219
+ /* provided dependency */ var SuperGif = __webpack_require__(997);
116073
116220
  /*******************************************************************************
116074
116221
  *
116075
116222
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -117032,7 +117179,7 @@ const MultiTextureTransform_default_ = MultiTextureTransform;
117032
117179
  x_ite_Namespace.set ("x_ite/Components/Texturing/MultiTextureTransform", MultiTextureTransform_default_);
117033
117180
  /* harmony default export */ const Texturing_MultiTextureTransform = (MultiTextureTransform_default_);
117034
117181
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/PixelTexture.js
117035
- /* provided dependency */ var PixelTexture_$ = __webpack_require__(849);
117182
+ /* provided dependency */ var PixelTexture_$ = __webpack_require__(714);
117036
117183
  /*******************************************************************************
117037
117184
  *
117038
117185
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -117743,7 +117890,7 @@ const Components_default_ = Components;
117743
117890
  x_ite_Namespace.set ("x_ite/Components", Components_default_);
117744
117891
  /* harmony default export */ const x_ite_Components = ((/* unused pure expression or super */ null && (Components_default_)));
117745
117892
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/DOMIntegration.js
117746
- /* provided dependency */ var DOMIntegration_$ = __webpack_require__(849);
117893
+ /* provided dependency */ var DOMIntegration_$ = __webpack_require__(714);
117747
117894
  /*******************************************************************************
117748
117895
  * MIT License
117749
117896
  *
@@ -118276,6 +118423,7 @@ ProfileInfo .prototype = Object .assign (Object .create (Base_X3DObject.prototyp
118276
118423
  },
118277
118424
  toVRMLStream: function (generator)
118278
118425
  {
118426
+ generator .string += generator .Indent ();
118279
118427
  generator .string += "PROFILE";
118280
118428
  generator .string += generator .Space ();
118281
118429
  generator .string += this .name;
@@ -118980,7 +119128,7 @@ const SupportedProfiles_default_ = SupportedProfiles;
118980
119128
  x_ite_Namespace.set ("x_ite/Configuration/SupportedProfiles", SupportedProfiles_default_);
118981
119129
  /* harmony default export */ const Configuration_SupportedProfiles = (SupportedProfiles_default_);
118982
119130
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/X3DBrowser.js
118983
- /* provided dependency */ var X3DBrowser_$ = __webpack_require__(849);
119131
+ /* provided dependency */ var X3DBrowser_$ = __webpack_require__(714);
118984
119132
  /*******************************************************************************
118985
119133
  *
118986
119134
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -119809,51 +119957,46 @@ for (const key of Reflect .ownKeys (X3DBrowser .prototype))
119809
119957
 
119810
119958
  Object .defineProperty (X3DBrowser .prototype, "name",
119811
119959
  {
119812
- get: function () { return this .getName (); },
119960
+ get: X3DBrowser .prototype .getName,
119813
119961
  enumerable: true,
119814
- configurable: false
119815
119962
  });
119816
119963
 
119817
119964
  Object .defineProperty (X3DBrowser .prototype, "version",
119818
119965
  {
119819
- get: function () { return this .getVersion (); },
119966
+ get: X3DBrowser .prototype .getVersion,
119820
119967
  enumerable: true,
119821
- configurable: false
119822
119968
  });
119823
119969
 
119824
119970
  Object .defineProperty (X3DBrowser .prototype, "providerUrl",
119825
119971
  {
119826
- get: function () { return this .getProviderUrl (); },
119972
+ get: X3DBrowser .prototype .getProviderUrl,
119827
119973
  enumerable: true,
119828
- configurable: false
119829
119974
  });
119830
119975
 
119831
119976
  Object .defineProperty (X3DBrowser .prototype, "currentFrameRate",
119832
119977
  {
119833
- get: function () { return this .getCurrentFrameRate (); },
119978
+ get: X3DBrowser .prototype .getCurrentFrameRate,
119834
119979
  enumerable: true,
119835
- configurable: false
119836
119980
  });
119837
119981
 
119838
119982
  Object .defineProperty (X3DBrowser .prototype, "currentSpeed",
119839
119983
  {
119840
- get: function () { return this .getCurrentSpeed (); },
119984
+ get: X3DBrowser .prototype .getCurrentSpeed,
119841
119985
  enumerable: true,
119842
- configurable: false
119843
119986
  });
119844
119987
 
119845
119988
  Object .defineProperty (X3DBrowser .prototype, "description",
119846
119989
  {
119847
- get: function ()
119848
- {
119849
- return this .getDescription ();
119850
- },
119851
- set: function (value)
119852
- {
119853
- this .setDescription (value);
119854
- },
119990
+ get: X3DBrowser .prototype .getDescription,
119991
+ set: X3DBrowser .prototype .setDescription,
119992
+ enumerable: true,
119993
+ });
119994
+
119995
+ Object .defineProperty (X3DBrowser .prototype, "baseURL",
119996
+ {
119997
+ get: X3DBrowser .prototype .getBaseURL,
119998
+ set: X3DBrowser .prototype .setBaseURL,
119855
119999
  enumerable: true,
119856
- configurable: false
119857
120000
  });
119858
120001
 
119859
120002
  Object .defineProperty (X3DBrowser .prototype, "currentScene",
@@ -119863,7 +120006,6 @@ Object .defineProperty (X3DBrowser .prototype, "currentScene",
119863
120006
  return this .getScriptStack () .at (-1) .getExecutionContext ();
119864
120007
  },
119865
120008
  enumerable: true,
119866
- configurable: false
119867
120009
  });
119868
120010
 
119869
120011
  Object .defineProperty (X3DBrowser .prototype, "supportedProfiles",
@@ -119873,7 +120015,6 @@ Object .defineProperty (X3DBrowser .prototype, "supportedProfiles",
119873
120015
  return Configuration_SupportedProfiles;
119874
120016
  },
119875
120017
  enumerable: true,
119876
- configurable: false
119877
120018
  });
119878
120019
 
119879
120020
  Object .defineProperty (X3DBrowser .prototype, "supportedComponents",
@@ -119883,7 +120024,6 @@ Object .defineProperty (X3DBrowser .prototype, "supportedComponents",
119883
120024
  return Configuration_SupportedComponents;
119884
120025
  },
119885
120026
  enumerable: true,
119886
- configurable: false
119887
120027
  });
119888
120028
 
119889
120029
  const X3DBrowser_default_ = X3DBrowser;
@@ -119892,7 +120032,7 @@ const X3DBrowser_default_ = X3DBrowser;
119892
120032
  x_ite_Namespace.set ("x_ite/Browser/X3DBrowser", X3DBrowser_default_);
119893
120033
  /* harmony default export */ const Browser_X3DBrowser = (X3DBrowser_default_);
119894
120034
  ;// CONCATENATED MODULE: ./src/x_ite/Fallback.js
119895
- /* provided dependency */ var Fallback_$ = __webpack_require__(849);
120035
+ /* provided dependency */ var Fallback_$ = __webpack_require__(714);
119896
120036
  /*******************************************************************************
119897
120037
  *
119898
120038
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -120071,8 +120211,8 @@ const MicroTime_default_ = undefined;
120071
120211
  x_ite_Namespace.set ("standard/Time/MicroTime", MicroTime_default_);
120072
120212
  /* harmony default export */ const MicroTime = ((/* unused pure expression or super */ null && (MicroTime_default_)));
120073
120213
  ;// CONCATENATED MODULE: ./src/lib/jquery.js
120074
- /* provided dependency */ var jquery_$ = __webpack_require__(849);
120075
- /* provided dependency */ var pako = __webpack_require__(494);
120214
+ /* provided dependency */ var jquery_$ = __webpack_require__(714);
120215
+ /* provided dependency */ var pako = __webpack_require__(671);
120076
120216
  jquery_$.decodeText = function (input)
120077
120217
  {
120078
120218
  if (typeof input === "string")
@@ -120104,14 +120244,14 @@ const jquery_default_ = jquery_$;
120104
120244
  x_ite_Namespace.set ("lib/jquery", jquery_default_);
120105
120245
  /* harmony default export */ const jquery = ((/* unused pure expression or super */ null && (jquery_default_)));
120106
120246
  ;// CONCATENATED MODULE: ./src/lib/libtess.js
120107
- /* provided dependency */ var libtess_libtess = __webpack_require__(625);
120247
+ /* provided dependency */ var libtess_libtess = __webpack_require__(51);
120108
120248
  const libtess_default_ = libtess_libtess;
120109
120249
  ;
120110
120250
 
120111
120251
  x_ite_Namespace.set ("lib/libtess", libtess_default_);
120112
120252
  /* harmony default export */ const lib_libtess = ((/* unused pure expression or super */ null && (libtess_default_)));
120113
120253
  ;// CONCATENATED MODULE: ./src/x_ite/X3D.js
120114
- /* provided dependency */ var X3D_$ = __webpack_require__(849);
120254
+ /* provided dependency */ var X3D_$ = __webpack_require__(714);
120115
120255
  /*******************************************************************************
120116
120256
  *
120117
120257
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -120367,7 +120507,7 @@ const X3D_default_ = X3D;
120367
120507
  x_ite_Namespace.set ("x_ite/X3D", X3D_default_);
120368
120508
  /* harmony default export */ const x_ite_X3D = (X3D_default_);
120369
120509
  ;// CONCATENATED MODULE: ./src/x_ite/X3DCanvasElement.js
120370
- /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(849);
120510
+ /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(714);
120371
120511
  /*******************************************************************************
120372
120512
  *
120373
120513
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -120461,6 +120601,8 @@ class X3DCanvasElement extends HTMLElement
120461
120601
  {
120462
120602
  return [
120463
120603
  "antialiased",
120604
+ "baseURL",
120605
+ "baseurl",
120464
120606
  "cache",
120465
120607
  "contentScale",
120466
120608
  "contentscale",
@@ -120646,7 +120788,7 @@ x_ite_Namespace.set ("shim", shim_default_);
120646
120788
 
120647
120789
  // Assign X3D to global namespace.
120648
120790
 
120649
- window [Symbol .for ("X_ITE.X3D-8.6.19")] = x_ite_X3D;
120791
+ window [Symbol .for ("X_ITE.X3D-8.6.22")] = x_ite_X3D;
120650
120792
 
120651
120793
  x_ite_X3DCanvasElement.define ();
120652
120794