x_ite 16.3.0 → 16.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +6 -6
  2. package/dist/assets/components/AnnotationComponent.js +1 -1
  3. package/dist/assets/components/AnnotationComponent.min.js +1 -1
  4. package/dist/assets/components/CADGeometryComponent.js +1 -1
  5. package/dist/assets/components/CADGeometryComponent.min.js +1 -1
  6. package/dist/assets/components/CubeMapTexturingComponent.js +1 -1
  7. package/dist/assets/components/CubeMapTexturingComponent.min.js +1 -1
  8. package/dist/assets/components/DISComponent.js +1 -1
  9. package/dist/assets/components/DISComponent.min.js +1 -1
  10. package/dist/assets/components/EventUtilitiesComponent.js +9 -6
  11. package/dist/assets/components/EventUtilitiesComponent.min.js +2 -2
  12. package/dist/assets/components/GaussianSplatsComponent.js +1 -1
  13. package/dist/assets/components/GaussianSplatsComponent.min.js +1 -1
  14. package/dist/assets/components/Geometry2DComponent.js +1 -1
  15. package/dist/assets/components/Geometry2DComponent.min.js +1 -1
  16. package/dist/assets/components/Geometry3DComponent.js +1 -1
  17. package/dist/assets/components/Geometry3DComponent.min.js +1 -1
  18. package/dist/assets/components/GeospatialComponent.js +1 -1
  19. package/dist/assets/components/GeospatialComponent.min.js +1 -1
  20. package/dist/assets/components/HAnimComponent.js +1 -1
  21. package/dist/assets/components/HAnimComponent.min.js +1 -1
  22. package/dist/assets/components/KeyDeviceSensorComponent.js +1 -1
  23. package/dist/assets/components/KeyDeviceSensorComponent.min.js +1 -1
  24. package/dist/assets/components/LayoutComponent.js +1 -1
  25. package/dist/assets/components/LayoutComponent.min.js +1 -1
  26. package/dist/assets/components/NURBSComponent.js +1 -1
  27. package/dist/assets/components/NURBSComponent.min.js +1 -1
  28. package/dist/assets/components/ParticleSystemsComponent.js +1 -1
  29. package/dist/assets/components/ParticleSystemsComponent.min.js +1 -1
  30. package/dist/assets/components/PickingComponent.js +1 -1
  31. package/dist/assets/components/PickingComponent.min.js +1 -1
  32. package/dist/assets/components/RigidBodyPhysicsComponent.js +1 -1
  33. package/dist/assets/components/RigidBodyPhysicsComponent.min.js +1 -1
  34. package/dist/assets/components/ScriptingComponent.js +1 -1
  35. package/dist/assets/components/ScriptingComponent.min.js +1 -1
  36. package/dist/assets/components/TextComponent.js +1 -1
  37. package/dist/assets/components/TextComponent.min.js +1 -1
  38. package/dist/assets/components/TextureProjectionComponent.js +1 -1
  39. package/dist/assets/components/TextureProjectionComponent.min.js +1 -1
  40. package/dist/assets/components/Texturing3DComponent.js +10 -10
  41. package/dist/assets/components/Texturing3DComponent.min.js +2 -2
  42. package/dist/assets/components/VolumeRenderingComponent.js +1 -1
  43. package/dist/assets/components/VolumeRenderingComponent.min.js +1 -1
  44. package/dist/assets/components/WebXRComponent.js +5 -3
  45. package/dist/assets/components/WebXRComponent.min.js +2 -2
  46. package/dist/assets/components/X_ITEComponent.js +1 -1
  47. package/dist/assets/components/X_ITEComponent.min.js +1 -1
  48. package/dist/assets/images/background-light.svg +1 -1
  49. package/dist/assets/images/head_mounted_device.svg +1 -0
  50. package/dist/assets/images/no_sound.svg +1 -1
  51. package/dist/example.html +1 -1
  52. package/dist/x_ite.css +1 -1
  53. package/dist/x_ite.js +323 -278
  54. package/dist/x_ite.min.js +2 -2
  55. package/dist/x_ite.min.mjs +2 -2
  56. package/dist/x_ite.mjs +323 -278
  57. package/dist/x_ite.zip +0 -0
  58. package/package.json +5 -4
  59. package/dist/assets/images/xr.svg +0 -1
package/dist/x_ite.mjs CHANGED
@@ -1,7 +1,7 @@
1
- /* X_ITE v16.3.0 */
1
+ /* X_ITE v16.4.0 */
2
2
  var __webpack_modules__ = ({
3
3
 
4
- /***/ 133
4
+ /***/ 530
5
5
  (module, exports) {
6
6
 
7
7
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -1006,7 +1006,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
1006
1006
 
1007
1007
  /***/ },
1008
1008
 
1009
- /***/ 991
1009
+ /***/ 504
1010
1010
  (module) {
1011
1011
 
1012
1012
  (function webpackUniversalModuleDefinition(root, factory) {
@@ -2002,7 +2002,7 @@ return /******/ (function(modules) { // webpackBootstrap
2002
2002
 
2003
2003
  /***/ },
2004
2004
 
2005
- /***/ 643
2005
+ /***/ 780
2006
2006
  (module) {
2007
2007
 
2008
2008
  /**
@@ -14552,12 +14552,11 @@ Object .assign (Object .setPrototypeOf (SFNode .prototype, Base_X3DField .protot
14552
14552
  },
14553
14553
  getFieldDefinition (name)
14554
14554
  {
14555
- const fieldDefinition = this .getFieldDefinitions () .get (name);
14556
-
14557
- if (fieldDefinition)
14558
- return fieldDefinition;
14555
+ const
14556
+ target = this [_target],
14557
+ node = target .getValue ();
14559
14558
 
14560
- throw new Error (`Unknown field '${name}' in node class ${this .getNodeTypeName ()}.`);
14559
+ return node .getFieldDefinition (name);
14561
14560
  },
14562
14561
  getFieldDefinitions ()
14563
14562
  {
@@ -14587,7 +14586,7 @@ Object .assign (Object .setPrototypeOf (SFNode .prototype, Base_X3DField .protot
14587
14586
 
14588
14587
  Error .captureStackTrace (target, this .getField);
14589
14588
 
14590
- console .warn ("The use of sfnode.getField(name) is deprecated. Future versions of X_ITE may remove this feature. Instead, use the sfnode.{fieldName} syntax or sfnode.addFieldCallback(key, fieldName, callback).", target .stack);
14589
+ console .warn ("The use of sfnode.getField(name) is deprecated. Future versions of X_ITE may remove this feature. Instead, use the sfnode.{fieldName} property syntax or sfnode.addFieldCallback(key, fieldName, callback).", target .stack);
14591
14590
  }
14592
14591
 
14593
14592
  const
@@ -18430,7 +18429,12 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18430
18429
  },
18431
18430
  getFieldDefinition (name)
18432
18431
  {
18433
- return this [_fieldDefinitions] .get (name);
18432
+ const fieldDefinition = this [_fieldDefinitions] .get (name);
18433
+
18434
+ if (fieldDefinition)
18435
+ return fieldDefinition;
18436
+
18437
+ throw new Error (`Unknown field '${name}' in node class ${this .getTypeName ()}.`);
18434
18438
  },
18435
18439
  getFieldDefinitions ()
18436
18440
  {
@@ -18865,7 +18869,7 @@ const Legacy_default_ = Legacy;
18865
18869
 
18866
18870
  /* harmony default export */ const Browser_Legacy = (x_ite_Namespace .add ("Legacy", Legacy_default_));
18867
18871
  ;// ./src/x_ite/BROWSER_VERSION.js
18868
- const BROWSER_VERSION_default_ = "16.3.0";
18872
+ const BROWSER_VERSION_default_ = "16.4.0";
18869
18873
  ;
18870
18874
 
18871
18875
  /* harmony default export */ const BROWSER_VERSION = (x_ite_Namespace .add ("BROWSER_VERSION", BROWSER_VERSION_default_));
@@ -19322,7 +19326,7 @@ Object .assign (Object .setPrototypeOf (BrowserTimings .prototype, Base_X3DBaseN
19322
19326
  // HTML
19323
19327
 
19324
19328
  const html = /* html */ `
19325
- <div class="x_ite-private-browser-timings x_ite-private-hidden"><table>
19329
+ <div class="x_ite-private-browser-timings x_ite-private-fade x_ite-private-hidden"><table>
19326
19330
  <thead>
19327
19331
  <tr>
19328
19332
  <th colspan="2">${gettext("Browser Timings")}</th>
@@ -19425,8 +19429,7 @@ Object .assign (Object .setPrototypeOf (BrowserTimings .prototype, Base_X3DBaseN
19425
19429
 
19426
19430
  if (this .getBrowser () .getBrowserOption ("Timings"))
19427
19431
  {
19428
- element .classList .remove ("x_ite-private-fade-out-300", "x_ite-private-hidden");
19429
- element .classList .add ("x_ite-private-fade-in-300");
19432
+ element .classList .remove ("x_ite-private-hidden");
19430
19433
 
19431
19434
  this .getBrowser () .addBrowserCallback (this, Base_X3DConstants .INITIALIZED_EVENT, () => this .reset ());
19432
19435
  this .getBrowser () .prepareEvents () .addInterest ("update", this);
@@ -19434,8 +19437,7 @@ Object .assign (Object .setPrototypeOf (BrowserTimings .prototype, Base_X3DBaseN
19434
19437
  }
19435
19438
  else
19436
19439
  {
19437
- element .classList .remove ("x_ite-private-fade-in-300");
19438
- element .classList .add ("x_ite-private-fade-out-300");
19440
+ element .classList .add ("x_ite-private-hidden");
19439
19441
 
19440
19442
  this .getBrowser () .removeBrowserCallback (this, Base_X3DConstants .INITIALIZED_EVENT);
19441
19443
  this .getBrowser () .prepareEvents () .removeInterest ("update", this);
@@ -20340,19 +20342,18 @@ Object .assign (Object .setPrototypeOf (Notification .prototype, Base_X3DBaseNod
20340
20342
  {
20341
20343
  Base_X3DBaseNode .prototype .initialize .call (this);
20342
20344
 
20343
- this .element = (() =>
20344
- {
20345
- const element = document .createElement ("div");
20345
+ const
20346
+ element = document .createElement ("div"),
20347
+ span = document .createElement ("span");
20346
20348
 
20347
- element .style .visibility = "hidden";
20349
+ element .classList .add ("x_ite-private-notification");
20348
20350
 
20349
- element .append (document .createElement ("span"));
20350
- element .classList .add ("x_ite-private-notification");
20351
+ element .append (span);
20351
20352
 
20352
- this .getBrowser () .getSurface () .append (element);
20353
+ this .getBrowser () .getSurface () .append (element);
20353
20354
 
20354
- return element;
20355
- })();
20355
+ this .element = element;
20356
+ this .span = span;
20356
20357
 
20357
20358
  this ._string .addInterest ("set_string__", this);
20358
20359
  },
@@ -20366,12 +20367,12 @@ Object .assign (Object .setPrototypeOf (Notification .prototype, Base_X3DBaseNod
20366
20367
 
20367
20368
  clearTimeout (this .timeoutId);
20368
20369
 
20369
- this .element .querySelector ("span") .textContent = this ._string .getValue ();
20370
+ this .span .textContent = this ._string .getValue ();
20370
20371
 
20371
20372
  Object .assign (this .element .style,
20372
20373
  {
20373
20374
  visibility: "visible",
20374
- width: `${this .textWidth (this .element)}px`,
20375
+ width: `${this .span .clientWidth}px`,
20375
20376
  transition: "width 300ms ease-in-out",
20376
20377
  });
20377
20378
 
@@ -20386,22 +20387,6 @@ Object .assign (Object .setPrototypeOf (Notification .prototype, Base_X3DBaseNod
20386
20387
  },
20387
20388
  5000);
20388
20389
  },
20389
- textWidth (element)
20390
- {
20391
- const
20392
- children = Array .from (element .children),
20393
- span = document .createElement ("span");
20394
-
20395
- span .textContent = element .textContent;
20396
-
20397
- element .replaceChildren (span);
20398
-
20399
- const width = span .clientWidth;
20400
-
20401
- element .replaceChildren (... children);
20402
-
20403
- return width;
20404
- },
20405
20390
  });
20406
20391
 
20407
20392
  Object .defineProperties (Notification,
@@ -20504,12 +20489,9 @@ Object .assign (Object .setPrototypeOf (ContextMenu .prototype, Base_X3DBaseNode
20504
20489
  layer .remove ();
20505
20490
 
20506
20491
  for (const child of ul .children)
20507
- {
20508
- child .classList .remove ("x_ite-private-fade-in-300");
20509
- child .classList .add ("x_ite-private-fade-out-300");
20510
- }
20492
+ child .classList .add ("x_ite-private-hidden");
20511
20493
 
20512
- setTimeout (() => ul .remove (), 1000);
20494
+ setTimeout (() => ul .remove (), 1_000);
20513
20495
 
20514
20496
  return false;
20515
20497
  };
@@ -20520,8 +20502,6 @@ Object .assign (Object .setPrototypeOf (ContextMenu .prototype, Base_X3DBaseNode
20520
20502
 
20521
20503
  ul .classList .add ("context-menu-root", "context-menu-list", menu .className);
20522
20504
 
20523
- ul .style .display = "none";
20524
-
20525
20505
  ul .addEventListener ("contextmenu", () => this .hide ());
20526
20506
 
20527
20507
  root .append (ul);
@@ -20539,15 +20519,12 @@ Object .assign (Object .setPrototypeOf (ContextMenu .prototype, Base_X3DBaseNode
20539
20519
  // Must animate children because of blurish background.
20540
20520
 
20541
20521
  for (const child of ul .children)
20542
- child .classList .add ("x_ite-private-hidden");
20522
+ child .classList .add ("x_ite-private-fade", "x_ite-private-hidden");
20543
20523
 
20544
20524
  ul .style .display = "block";
20545
20525
 
20546
20526
  for (const child of ul .children)
20547
- {
20548
20527
  child .classList .remove ("x_ite-private-hidden");
20549
- child .classList .add ("x_ite-private-fade-in-300");
20550
- }
20551
20528
 
20552
20529
  // Reposition menu if to right or to low.
20553
20530
 
@@ -20741,7 +20718,7 @@ Object .assign (Object .setPrototypeOf (ContextMenu .prototype, Base_X3DBaseNode
20741
20718
  className: "x_ite-private-menu",
20742
20719
  items: {
20743
20720
  "title": {
20744
- name: `${browser .getName ()} Browser v${browser .getVersion ()}`,
20721
+ name: `${browser .getName ()} v${browser .getVersion ()}`,
20745
20722
  className: "context-menu-title context-menu-icon x_ite-private-icon-logo context-menu-not-selectable",
20746
20723
  },
20747
20724
  "separator0": "--------",
@@ -20976,8 +20953,7 @@ Object .assign (Object .setPrototypeOf (ContextMenu .prototype, Base_X3DBaseNode
20976
20953
  overlay .classList .add ("x_ite-private-world-info-overlay");
20977
20954
  priv .append (overlay);
20978
20955
 
20979
- div .style .display = "none";
20980
- div .classList .add ("x_ite-private-world-info", "x_ite-private-hidden");
20956
+ div .classList .add ("x_ite-private-world-info", "x_ite-private-fade", "x_ite-private-hidden");
20981
20957
  overlay .append (div);
20982
20958
 
20983
20959
  const buttons = document .createElement ("div");
@@ -21108,13 +21084,12 @@ Object .assign (Object .setPrototypeOf (ContextMenu .prototype, Base_X3DBaseNode
21108
21084
 
21109
21085
  div .append (content);
21110
21086
 
21111
- div .style .display = "block";
21112
21087
  div .classList .remove ("x_ite-private-hidden");
21113
- div .classList .add ("x_ite-private-fade-in-300");
21114
21088
 
21115
21089
  overlay .addEventListener ("click", () =>
21116
21090
  {
21117
- div .classList .add ("x_ite-private-fade-out-300");
21091
+ div .classList .add ("x_ite-private-hidden");
21092
+
21118
21093
  setTimeout (() => overlay .remove (), 300);
21119
21094
  });
21120
21095
  },
@@ -21438,6 +21413,8 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
21438
21413
  {
21439
21414
  if (instance ?.getType () .includes (Base_X3DConstants .X3DExecutionContext) ?? true)
21440
21415
  {
21416
+ // Make flat copy:
21417
+
21441
21418
  const copy = this .create (instance);
21442
21419
 
21443
21420
  for (const field of this .getPredefinedFields ())
@@ -21453,6 +21430,8 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
21453
21430
  }
21454
21431
  else
21455
21432
  {
21433
+ // Make a copy for a X3DPrototypeInstance.
21434
+
21456
21435
  const executionContext = instance .getBody ();
21457
21436
 
21458
21437
  // First try to get a named node with the node's name.
@@ -26123,7 +26102,7 @@ Object .assign (X3DParser .prototype,
26123
26102
  if (!this .isInsideProtoDeclaration ())
26124
26103
  nodes .forEach (node => node .setup ());
26125
26104
 
26126
- nodes .length = 0;;
26105
+ nodes .length = 0;
26127
26106
  },
26128
26107
  rotateAxes90 (array)
26129
26108
  {
@@ -27447,9 +27426,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
27447
27426
  {
27448
27427
  if (this .nodeNameId ())
27449
27428
  {
27450
- const
27451
- fromNodeId = this .result [0],
27452
- fromNode = this .getExecutionContext () .getLocalNode (fromNodeId);
27429
+ const fromNodeId = this .result [0];
27453
27430
 
27454
27431
  this .comments ();
27455
27432
 
@@ -27465,9 +27442,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
27465
27442
  {
27466
27443
  if (this .nodeNameId ())
27467
27444
  {
27468
- const
27469
- toNodeId = this .result [0],
27470
- toNode = this .getExecutionContext () .getLocalNode (toNodeId);
27445
+ const toNodeId = this .result [0];
27471
27446
 
27472
27447
  this .comments ();
27473
27448
 
@@ -27477,7 +27452,10 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
27477
27452
  {
27478
27453
  try
27479
27454
  {
27480
- const eventInId = this .result [0];
27455
+ const
27456
+ eventInId = this .result [0],
27457
+ fromNode = this .getExecutionContext () .getLocalNode (fromNodeId),
27458
+ toNode = this .getExecutionContext () .getLocalNode (toNodeId);
27481
27459
 
27482
27460
  this .getExecutionContext () .addRoute (fromNode, eventOutId, toNode, eventInId);
27483
27461
  return true;
@@ -29762,16 +29740,16 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
29762
29740
  destinationField = xmlElement .getAttribute ("toField");
29763
29741
 
29764
29742
  if (sourceNodeName === null)
29765
- throw new Error ("Bad ROUTE statement: Expected fromNode attribute.");
29743
+ throw new Error ("Bad ROUTE specification: Expected fromNode attribute.");
29766
29744
 
29767
29745
  if (sourceField === null)
29768
- throw new Error ("Bad ROUTE statement: Expected fromField attribute.");
29746
+ throw new Error ("Bad ROUTE specification: Expected fromField attribute.");
29769
29747
 
29770
29748
  if (destinationNodeName === null)
29771
- throw new Error ("Bad ROUTE statement: Expected toNode attribute.");
29749
+ throw new Error ("Bad ROUTE specification: Expected toNode attribute.");
29772
29750
 
29773
29751
  if (destinationField === null)
29774
- throw new Error ("Bad ROUTE statement: Expected toField attribute.");
29752
+ throw new Error ("Bad ROUTE specification: Expected toField attribute.");
29775
29753
 
29776
29754
  const
29777
29755
  executionContext = this .getExecutionContext (),
@@ -31192,7 +31170,7 @@ const Plane3_default_ = Plane3;
31192
31170
 
31193
31171
  /* harmony default export */ const Geometry_Plane3 = (x_ite_Namespace .add ("Plane3", Plane3_default_));
31194
31172
  ;// ./src/standard/Math/Geometry/Triangle3.js
31195
- /* provided dependency */ var libtess = __webpack_require__(643);
31173
+ /* provided dependency */ var libtess = __webpack_require__(780);
31196
31174
 
31197
31175
 
31198
31176
  const Triangle3 =
@@ -38661,7 +38639,7 @@ const X3DSensorNode_default_ = X3DSensorNode;
38661
38639
 
38662
38640
 
38663
38641
 
38664
- function X3DTimeDependentNode (executionContext)
38642
+ function X3DTimeDependentNode (/* executionContext */)
38665
38643
  {
38666
38644
  this .addType (Base_X3DConstants .X3DTimeDependentNode);
38667
38645
 
@@ -38713,8 +38691,10 @@ Object .assign (Object .setPrototypeOf (X3DTimeDependentNode .prototype, Core_X3
38713
38691
  },
38714
38692
  resetElapsedTime ()
38715
38693
  {
38716
- this .start = this .getBrowser () .getCurrentTime ();
38717
- this .pause = this .getBrowser () .getCurrentTime ();
38694
+ const time = this .getBrowser () .getCurrentTime ();
38695
+
38696
+ this .start = time;
38697
+ this .pause = time;
38718
38698
  this .pauseInterval = 0;
38719
38699
  },
38720
38700
  set_live__ ()
@@ -38840,14 +38820,14 @@ Object .assign (Object .setPrototypeOf (X3DTimeDependentNode .prototype, Core_X3
38840
38820
 
38841
38821
  // The event order below is very important.
38842
38822
 
38843
- this ._isActive = true;
38844
- this ._elapsedTime = 0;
38823
+ this ._isActive = true;
38845
38824
 
38846
38825
  this .set_start ();
38847
38826
 
38848
38827
  if (this .getLive () .getValue ())
38849
38828
  {
38850
- this .getBrowser () .timeEvents () .addInterest ("set_time" ,this);
38829
+ this .getBrowser () .timeEvents () .addInterest ("set_time", this);
38830
+ this .getBrowser () .addBrowserEvent ();
38851
38831
  }
38852
38832
  else
38853
38833
  {
@@ -38872,7 +38852,7 @@ Object .assign (Object .setPrototypeOf (X3DTimeDependentNode .prototype, Core_X3
38872
38852
 
38873
38853
  this .set_pause ();
38874
38854
 
38875
- this .getBrowser () .timeEvents () .removeInterest ("set_time" ,this);
38855
+ this .getBrowser () .timeEvents () .removeInterest ("set_time", this);
38876
38856
  },
38877
38857
  do_resume ()
38878
38858
  {
@@ -38907,14 +38887,12 @@ Object .assign (Object .setPrototypeOf (X3DTimeDependentNode .prototype, Core_X3
38907
38887
 
38908
38888
  this .set_stop ();
38909
38889
 
38910
- this ._elapsedTime = this .getElapsedTime ();
38911
-
38912
38890
  if (this ._isPaused .getValue ())
38913
38891
  this ._isPaused = false;
38914
38892
 
38915
38893
  this ._isActive = false;
38916
38894
 
38917
- this .getBrowser () .timeEvents () .removeInterest ("set_time" ,this);
38895
+ this .getBrowser () .timeEvents () .removeInterest ("set_time", this);
38918
38896
  }
38919
38897
  },
38920
38898
  addTimeout (name, callback, startTime)
@@ -38936,19 +38914,16 @@ Object .assign (Object .setPrototypeOf (X3DTimeDependentNode .prototype, Core_X3
38936
38914
  if (!this ._enabled .getValue ())
38937
38915
  return;
38938
38916
 
38939
- if (!(this .getLive () .getValue ()))
38940
- return;
38941
-
38942
38917
  this .getBrowser () .advanceOnlyTime ();
38943
38918
 
38944
38919
  this [callback] ();
38945
38920
  },
38946
- set_loop: Function .prototype,
38947
- set_start: Function .prototype,
38948
- set_pause: Function .prototype,
38949
- set_resume: Function .prototype,
38950
- set_stop: Function .prototype,
38951
- set_time: Function .prototype,
38921
+ set_loop () { },
38922
+ set_start () { },
38923
+ set_pause () { },
38924
+ set_resume () { },
38925
+ set_stop () { },
38926
+ set_time () { },
38952
38927
  dispose ()
38953
38928
  {
38954
38929
  for (const name of [... this .timeouts .keys ()])
@@ -38979,7 +38954,9 @@ function TimeSensor (executionContext)
38979
38954
 
38980
38955
  this .addType (Base_X3DConstants .TimeSensor);
38981
38956
 
38982
- this .addChildObjects (Base_X3DConstants .inputOutput, "range", new x_ite_Fields .MFFloat (0, 0, 1)); // current, first, last (in fractions) - play range starting at current
38957
+ // Special non-public field:
38958
+ // rangeFraction, rangeStart, rangeEnd (in fractions) - play range starting at rangeFraction
38959
+ this .addChildObjects (Base_X3DConstants .inputOutput, "range", new x_ite_Fields .MFFloat (0, 0, 1));
38983
38960
 
38984
38961
  this .cycle = 0;
38985
38962
  this .interval = 0;
@@ -39015,6 +38992,10 @@ Object .assign (Object .setPrototypeOf (TimeSensor .prototype, Core_X3DSensorNod
39015
38992
  this .fraction = Math_Algorithm .fract (fraction + this .offset);
39016
38993
  this .cycle = currentTime - (this .fraction - this .first) * cycleInterval;
39017
38994
  },
38995
+ getFraction (time)
38996
+ {
38997
+ return this .first + (this .interval ? Math_Algorithm .fract ((time - this .cycle) / this .interval) : 0) * this .scale;
38998
+ },
39018
38999
  set_cycleInterval__ ()
39019
39000
  {
39020
39001
  if (!this ._isActive .getValue ())
@@ -39032,28 +39013,56 @@ Object .assign (Object .setPrototypeOf (TimeSensor .prototype, Core_X3DSensorNod
39032
39013
  if (this ._isPaused .getValue ())
39033
39014
  return;
39034
39015
 
39035
- this .set_fraction (this .getBrowser () .getCurrentTime ());
39016
+ this ._fraction_changed = this .fraction = this .getFraction (this .getBrowser () .getCurrentTime ());
39036
39017
  },
39037
39018
  set_start ()
39038
39019
  {
39020
+ const browser = this .getBrowser ();
39021
+
39022
+ browser .timePrepareEvents () .addInterest ("set_prepare", this);
39023
+ browser .addBrowserEvent ();
39024
+
39039
39025
  this .setRange (this ._range [0], this ._range [1], this ._range [2], true);
39040
39026
 
39041
- const time = this .getBrowser () .getCurrentTime ();
39027
+ const time = browser .getCurrentTime ();
39042
39028
 
39043
39029
  this ._time = time;
39030
+ this ._elapsedTime = 0;
39044
39031
  this ._cycleTime = time;
39045
39032
  this ._fraction_changed = this .fraction;
39033
+ this ._cycleCount = 0;
39034
+ },
39035
+ set_pause ()
39036
+ {
39037
+ this .getBrowser () .timePrepareEvents () .removeInterest ("set_prepare", this);
39046
39038
  },
39047
39039
  set_resume (/* pauseInterval */)
39048
39040
  {
39041
+ const browser = this .getBrowser ();
39042
+
39043
+ browser .timePrepareEvents () .addInterest ("set_prepare", this);
39044
+ browser .addBrowserEvent ();
39045
+
39049
39046
  this .setRange (this .fraction, this ._range [1], this ._range [2], false);
39050
39047
  },
39051
- set_fraction (time)
39048
+ set_stop ()
39049
+ {
39050
+ this .getBrowser () .timePrepareEvents () .removeInterest ("set_prepare", this);
39051
+ },
39052
+ set_prepare ()
39052
39053
  {
39053
- const fraction = this .first + (this .interval ? Math_Algorithm .fract ((time - this .cycle) / this .interval) : 0) * this .scale;
39054
+ const time = this .getBrowser () .getCurrentTime ();
39055
+
39056
+ this ._time = time;
39057
+ this ._elapsedTime = this .getElapsedTime ();
39054
39058
 
39055
- this .fraction = fraction;
39056
- this ._fraction_changed = fraction;
39059
+ if (time - this .cycle < this .interval)
39060
+ return;
39061
+
39062
+ this ._fraction_changed = this .last;
39063
+ this ._cycleCount = this ._cycleCount .getValue () + 1;
39064
+ this ._cycleComplete = true;
39065
+ this ._cycleCompleteTime = time;
39057
39066
  },
39058
39067
  set_time ()
39059
39068
  {
@@ -39061,8 +39070,6 @@ Object .assign (Object .setPrototypeOf (TimeSensor .prototype, Core_X3DSensorNod
39061
39070
 
39062
39071
  const time = this .getBrowser () .getCurrentTime ();
39063
39072
 
39064
- this ._time = time;
39065
-
39066
39073
  if (time - this .cycle >= this .interval)
39067
39074
  {
39068
39075
  if (this ._loop .getValue ())
@@ -39071,27 +39078,18 @@ Object .assign (Object .setPrototypeOf (TimeSensor .prototype, Core_X3DSensorNod
39071
39078
  {
39072
39079
  this .cycle += this .interval * Math .floor ((time - this .cycle) / this .interval);
39073
39080
 
39074
- this ._elapsedTime = this .getElapsedTime ();
39075
- this ._cycleComplete = time;
39076
- this ._cycleTime = time;
39077
-
39078
- this .set_fraction (time);
39081
+ this ._cycleTime = time;
39082
+ this ._fraction_changed = this .fraction = this .getFraction (time);
39079
39083
  }
39080
39084
  }
39081
39085
  else
39082
39086
  {
39083
- this ._elapsedTime = this .getElapsedTime ();
39084
- this ._cycleComplete = time;
39085
- this ._fraction_changed = this .fraction = this .last;
39086
-
39087
39087
  this .stop ();
39088
39088
  }
39089
39089
  }
39090
39090
  else
39091
39091
  {
39092
- this ._elapsedTime = this .getElapsedTime ();
39093
-
39094
- this .set_fraction (time);
39092
+ this ._fraction_changed = this .fraction = this .getFraction (time);
39095
39093
  }
39096
39094
  },
39097
39095
  dispose ()
@@ -39107,22 +39105,24 @@ Object .defineProperties (TimeSensor,
39107
39105
  fieldDefinitions:
39108
39106
  {
39109
39107
  value: new Base_FieldDefinitionArray ([
39110
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
39111
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
39112
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
39113
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "cycleInterval", new x_ite_Fields .SFTime (1)),
39114
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool ()),
39115
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "startTime", new x_ite_Fields .SFTime (0)),
39116
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "resumeTime", new x_ite_Fields .SFTime (0)),
39117
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "pauseTime", new x_ite_Fields .SFTime (0)),
39118
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "stopTime", new x_ite_Fields .SFTime (0)),
39119
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isPaused", new x_ite_Fields .SFBool ()),
39120
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isActive", new x_ite_Fields .SFBool ()),
39121
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleTime", new x_ite_Fields .SFTime ()),
39122
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleComplete", new x_ite_Fields .SFTime ()),
39123
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "elapsedTime", new x_ite_Fields .SFTime ()),
39124
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "fraction_changed", new x_ite_Fields .SFFloat ()),
39125
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "time", new x_ite_Fields .SFTime ()),
39108
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
39109
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
39110
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
39111
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "cycleInterval", new x_ite_Fields .SFTime (1)),
39112
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool ()),
39113
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "startTime", new x_ite_Fields .SFTime (0)),
39114
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "resumeTime", new x_ite_Fields .SFTime (0)),
39115
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "pauseTime", new x_ite_Fields .SFTime (0)),
39116
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "stopTime", new x_ite_Fields .SFTime (0)),
39117
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isPaused", new x_ite_Fields .SFBool ()),
39118
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isActive", new x_ite_Fields .SFBool ()),
39119
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleTime", new x_ite_Fields .SFTime ()),
39120
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleComplete", new x_ite_Fields .SFBool ()), // experimental
39121
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleCompleteTime", new x_ite_Fields .SFTime ()), // experimental
39122
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleCount", new x_ite_Fields .SFInt32 ()), // experimental
39123
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "fraction_changed", new x_ite_Fields .SFFloat ()),
39124
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "elapsedTime", new x_ite_Fields .SFTime ()),
39125
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "time", new x_ite_Fields .SFTime ()),
39126
39126
  ]),
39127
39127
  enumerable: true,
39128
39128
  },
@@ -46520,7 +46520,7 @@ Object .assign (Object .setPrototypeOf (STLBParser .prototype, Parser_X3DParser
46520
46520
  },
46521
46521
  header ()
46522
46522
  {
46523
- const header = helper.decodeText (this .arrayBuffer .slice (0, 80)) .trim ();
46523
+ const header = helper.decodeText (this .arrayBuffer .slice (0, 80)) .replace (/\u0000.*$/, "") .trim ();
46524
46524
 
46525
46525
  if (!header)
46526
46526
  return;
@@ -46704,7 +46704,8 @@ Object .assign (Object .setPrototypeOf (PLYAParser .prototype, Parser_X3DParser
46704
46704
  {
46705
46705
  const value = this .result [0] .trim ();
46706
46706
 
46707
- this .comments .push (value);
46707
+ if (value)
46708
+ this .comments .push (value);
46708
46709
 
46709
46710
  this .mustRotateAxes ||= !! value .match (/\b(?:Blender|Artec|Polycam)\b/i);
46710
46711
 
@@ -47916,7 +47917,7 @@ const Bezier_default_ = Bezier;
47916
47917
 
47917
47918
  /* harmony default export */ const Algorithms_Bezier = (x_ite_Namespace .add ("Bezier", Bezier_default_));
47918
47919
  ;// ./src/x_ite/Parser/SVGParser.js
47919
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(643);
47920
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(780);
47920
47921
 
47921
47922
 
47922
47923
 
@@ -50699,11 +50700,6 @@ class GoldenGate extends Parser_X3DParser
50699
50700
  return this .#parsers .slice ();
50700
50701
  }
50701
50702
 
50702
- /**
50703
- * @deprecated Use `GoldenGate.add/remove/getParsers`.
50704
- */
50705
- static get Parser () { return this .#parsers; }
50706
-
50707
50703
  parseIntoScene (x3dSyntax, resolve, reject)
50708
50704
  {
50709
50705
  for (const Parser of GoldenGate .#parsers)
@@ -50751,14 +50747,7 @@ class GoldenGate extends Parser_X3DParser
50751
50747
  }
50752
50748
  else
50753
50749
  {
50754
- if (this .#inputs .has (encoding))
50755
- return this .#inputs .get (encoding);
50756
-
50757
- const input = this .createInput (encoding, x3dSyntax);
50758
-
50759
- this .#inputs .set (encoding, input);
50760
-
50761
- return input;
50750
+ return this .#inputs .getOrInsertComputed (encoding, () => this .createInput (encoding, x3dSyntax));
50762
50751
  }
50763
50752
  }
50764
50753
 
@@ -50770,7 +50759,7 @@ class GoldenGate extends Parser_X3DParser
50770
50759
  {
50771
50760
  case "STRING":
50772
50761
  {
50773
- const string = helper.decodeText (x3dSyntax);;
50762
+ const string = helper.decodeText (x3dSyntax);
50774
50763
 
50775
50764
  if (x3dSyntax instanceof ArrayBuffer)
50776
50765
  {
@@ -52038,7 +52027,7 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52038
52027
  if (this [_disposed])
52039
52028
  return;
52040
52029
 
52041
- let firstError, secondError;
52030
+ const errors = [ ];
52042
52031
 
52043
52032
  try
52044
52033
  {
@@ -52050,7 +52039,7 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52050
52039
  }
52051
52040
  catch (error)
52052
52041
  {
52053
- firstError = error;
52042
+ errors .push (error);
52054
52043
  }
52055
52044
 
52056
52045
  try
@@ -52063,19 +52052,12 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52063
52052
  }
52064
52053
  catch (error)
52065
52054
  {
52066
- secondError = error;
52055
+ errors .push (error);
52067
52056
  }
52068
52057
 
52069
52058
  if (this [_sourceField] && this [_destinationField])
52070
52059
  {
52071
- if (this [_sourceField] .getType () !== this [_destinationField] .getType ())
52072
- throw new Error (`Bad ROUTE statement: Source field type must match destination field type of fields named "${this [_sourceField] .getName ()}" and "${this [_destinationField] .getName ()}".`);
52073
-
52074
- if (!this [_sourceField] .isOutput ())
52075
- throw new Error (`Bad ROUTE statement: Source field "${this [_sourceField] .getName ()}" must be an output.`);
52076
-
52077
- if (!this [_destinationField] .isInput ())
52078
- throw new Error (`Bad ROUTE statement: Destination field "${this [_destinationField] .getName ()}" must be an input.`);
52060
+ X3DRoute .checkFields (this [_sourceField], this [_destinationField]);
52079
52061
 
52080
52062
  this [_sourceField] .addOutputRoute (this);
52081
52063
  this [_destinationField] .addInputRoute (this);
@@ -52083,7 +52065,7 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52083
52065
  }
52084
52066
  else
52085
52067
  {
52086
- throw firstError ?? secondError;
52068
+ throw new AggregateError (errors, "Couldn't connect route.");
52087
52069
  }
52088
52070
  },
52089
52071
  disconnect ()
@@ -52091,8 +52073,8 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52091
52073
  this [_sourceField] ?.removeOutputRoute (this);
52092
52074
  this [_destinationField] ?.removeInputRoute (this);
52093
52075
 
52094
- if (this [_sourceField] && this [_destinationField])
52095
- this [_sourceField] .removeFieldInterest (this [_destinationField]);
52076
+ if (this [_destinationField])
52077
+ this [_sourceField] ?.removeFieldInterest (this [_destinationField]);
52096
52078
 
52097
52079
  this [_sourceField] = null;
52098
52080
  this [_destinationField] = null;
@@ -52253,6 +52235,8 @@ Object .assign (X3DRoute,
52253
52235
  ? destinationNode .getField (destinationFieldName)
52254
52236
  : helper.try (() => destinationNode .getExportedNode () .getField (destinationFieldName));
52255
52237
 
52238
+ X3DRoute .checkFields (sourceField, destinationField);
52239
+
52256
52240
  if (sourceField)
52257
52241
  {
52258
52242
  sourceFieldName = sourceField .getName ();
@@ -52271,6 +52255,26 @@ Object .assign (X3DRoute,
52271
52255
 
52272
52256
  return `${sourceNode .getId ()}.${sourceFieldName}.${destinationNode .getId ()}.${destinationFieldName}`;
52273
52257
  },
52258
+ checkFields (sourceField, destinationField)
52259
+ {
52260
+ if (sourceField && destinationField)
52261
+ {
52262
+ if (sourceField .getType () !== destinationField .getType ())
52263
+ throw new Error (`Bad ROUTE specification: source field type must match destination field type of fields named "${sourceField .getName ()}" and "${destinationField .getName ()}".`);
52264
+ }
52265
+
52266
+ if (sourceField)
52267
+ {
52268
+ if (!sourceField .isOutput ())
52269
+ throw new Error (`Bad ROUTE specification: source field "${sourceField .getName ()}" must be an output.`);
52270
+ }
52271
+
52272
+ if (destinationField)
52273
+ {
52274
+ if (!destinationField .isInput ())
52275
+ throw new Error (`Bad ROUTE specification: destination field "${destinationField .getName ()}" must be an input.`);
52276
+ }
52277
+ },
52274
52278
  });
52275
52279
 
52276
52280
  const X3DRoute_default_ = X3DRoute;
@@ -52919,54 +52923,47 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52919
52923
  },
52920
52924
  addRoute (sourceNode, sourceField, destinationNode, destinationField)
52921
52925
  {
52922
- try
52923
- {
52924
- // Normalize arguments.
52925
-
52926
- const
52927
- importedSourceNode = sourceNode instanceof Execution_X3DImportedNode ? sourceNode : null,
52928
- importedDestinationNode = destinationNode instanceof Execution_X3DImportedNode ? destinationNode : null;
52929
-
52930
- sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false) ?? importedSourceNode;
52931
- sourceField = String (sourceField);
52932
- destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false) ?? importedDestinationNode;
52933
- destinationField = String (destinationField);
52926
+ // Normalize arguments.
52934
52927
 
52935
- // Check nodes.
52928
+ const
52929
+ importedSourceNode = sourceNode instanceof Execution_X3DImportedNode ? sourceNode : null,
52930
+ importedDestinationNode = destinationNode instanceof Execution_X3DImportedNode ? destinationNode : null;
52936
52931
 
52937
- if (!sourceNode)
52938
- throw new Error ("source node must be of type X3DNode.");
52932
+ sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false) ?? importedSourceNode;
52933
+ sourceField = String (sourceField);
52934
+ destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false) ?? importedDestinationNode;
52935
+ destinationField = String (destinationField);
52939
52936
 
52940
- if (!destinationNode)
52941
- throw new Error ("destination node must be of type X3DNode.");
52937
+ // Check nodes.
52942
52938
 
52943
- // Resolve imported source and destination node.
52939
+ if (!sourceNode)
52940
+ throw new Error ("Bad ROUTE specification: source node must be of type X3DNode.");
52944
52941
 
52945
- sourceNode = this .getLocalizedNode (sourceNode);
52946
- destinationNode = this .getLocalizedNode (destinationNode);
52942
+ if (!destinationNode)
52943
+ throw new Error ("Bad ROUTE specification: destination node must be of type X3DNode.");
52947
52944
 
52948
- // Add route.
52945
+ // Resolve imported source and destination node.
52949
52946
 
52950
- const
52951
- id = Routing_X3DRoute .getRouteId (sourceNode, sourceField, destinationNode, destinationField),
52952
- route = this [_routes] .get (id);
52947
+ sourceNode = this .getLocalizedNode (sourceNode);
52948
+ destinationNode = this .getLocalizedNode (destinationNode);
52953
52949
 
52954
- if (route)
52955
- {
52956
- return route;
52957
- }
52958
- else
52959
- {
52960
- const route = new Routing_X3DRoute (this, sourceNode, sourceField, destinationNode, destinationField);
52950
+ // Add route.
52961
52951
 
52962
- this [_routes] .add (id, route);
52952
+ const
52953
+ id = Routing_X3DRoute .getRouteId (sourceNode, sourceField, destinationNode, destinationField),
52954
+ route = this [_routes] .get (id);
52963
52955
 
52964
- return route;
52965
- }
52956
+ if (route)
52957
+ {
52958
+ return route;
52966
52959
  }
52967
- catch (error)
52960
+ else
52968
52961
  {
52969
- throw new Error (`Bad ROUTE specification.`, { cause: error });
52962
+ const route = new Routing_X3DRoute (this, sourceNode, sourceField, destinationNode, destinationField);
52963
+
52964
+ this [_routes] .add (id, route);
52965
+
52966
+ return route;
52970
52967
  }
52971
52968
  },
52972
52969
  deleteRoute (route)
@@ -54636,9 +54633,9 @@ function X3DCoreContext (element)
54636
54633
  <div class="x_ite-private-browser" part="browser" tabindex="0">
54637
54634
  <div class="x_ite-private-surface" part="surface">
54638
54635
  <canvas class="x_ite-private-canvas" part="canvas"></canvas>
54639
- <div class="x_ite-private-buttons" part="buttons"></div>
54636
+ <div class="x_ite-private-buttons x_ite-private-fade" part="buttons"></div>
54640
54637
  </div>
54641
- <div class="x_ite-private-splash-screen x_ite-private-hidden">
54638
+ <div class="x_ite-private-splash-screen x_ite-private-fade x_ite-private-hidden">
54642
54639
  <div class="x_ite-private-spinner"></div>
54643
54640
  <div class="x_ite-private-progress">
54644
54641
  <div class="x_ite-private-x_ite">
@@ -54662,7 +54659,7 @@ function X3DCoreContext (element)
54662
54659
  {
54663
54660
  const link = document .createElement ("link");
54664
54661
 
54665
- link .integrity = "sha384-dhnoOI+clBqqFYGBrUCL7KhjerG/JEhXRHWvaNS1qEwbCU/f0MWYgFRQj2esJwbi";
54662
+ link .integrity = "sha384-/SECsklivyOEI8wp6xcDS0QDczGbqmxoaXDzSZCmJLpGmYfD16XJmOZr0O2QNDmj";
54666
54663
  link .rel = "stylesheet";
54667
54664
  link .crossOrigin = "anonymous";
54668
54665
  link .onload = resolve;
@@ -54961,12 +54958,7 @@ Object .assign (X3DCoreContext .prototype,
54961
54958
  this .setBrowserOption ("SplashScreen", this .parseBooleanAttribute (newValue) ?? true);
54962
54959
 
54963
54960
  if (!this .getBrowserOption ("SplashScreen"))
54964
- {
54965
- this .getCanvas () .style .display = "block";
54966
-
54967
- this .getSplashScreen () .classList .remove ("x_ite-private-fade-out-splash-screen");
54968
54961
  this .getSplashScreen () .classList .add ("x_ite-private-hidden");
54969
- }
54970
54962
 
54971
54963
  break;
54972
54964
  }
@@ -64134,7 +64126,7 @@ Object .assign (X3DNetworkingContext .prototype,
64134
64126
  {
64135
64127
  this .getContextMenu () .hide ();
64136
64128
  this .getCanvas () .style .display = "none";
64137
- this .getSplashScreen () .classList .remove ("x_ite-private-fade-out-splash-screen", "x_ite-private-hidden");
64129
+ this .getSplashScreen () .classList .remove ("x_ite-private-hidden");
64138
64130
  }
64139
64131
  }
64140
64132
  else
@@ -64149,7 +64141,7 @@ Object .assign (X3DNetworkingContext .prototype,
64149
64141
  setTimeout (() =>
64150
64142
  {
64151
64143
  if (!this [_browserLoading])
64152
- this .getSplashScreen () .classList .add ("x_ite-private-fade-out-splash-screen");
64144
+ this .getSplashScreen () .classList .add ("x_ite-private-hidden");
64153
64145
  });
64154
64146
  }
64155
64147
  }
@@ -64396,12 +64388,11 @@ Object .assign (Object .setPrototypeOf (PointingDevice .prototype, Base_X3DBaseN
64396
64388
  {
64397
64389
  const surface = this .getBrowser () .getSurface ();
64398
64390
 
64399
- helper.on (this, surface, "mousedown", event => this .mousedown (event));
64400
- helper.on (this, surface, "mouseup", event => this .mouseup (event));
64401
- helper.on (this, surface, "dblclick", event => this .dblclick (event));
64402
- helper.on (this, surface, "mousemove", event => this .mousemove (event));
64403
- helper.on (this, surface, "mouseenter", event => this .onmouseenter (event));
64404
- helper.on (this, surface, "mouseout", event => this .onmouseout (event));
64391
+ helper.on (this, surface, "mousedown", event => this .mousedown (event));
64392
+ helper.on (this, surface, "mouseup", event => this .mouseup (event));
64393
+ helper.on (this, surface, "dblclick", event => this .dblclick (event));
64394
+ helper.on (this, surface, "mousemove", event => this .mousemove (event));
64395
+ helper.on (this, surface, "mouseout", event => this .onmouseout (event));
64405
64396
 
64406
64397
  helper.on (this, surface, "touchstart", event => this .touchstart (event));
64407
64398
  helper.on (this, surface, "touchend", event => this .touchend (event));
@@ -64412,6 +64403,8 @@ Object .assign (Object .setPrototypeOf (PointingDevice .prototype, Base_X3DBaseN
64412
64403
  browser = this .getBrowser (),
64413
64404
  surface = browser .getSurface ();
64414
64405
 
64406
+ browser .getElement () .focus ({ preventScroll: true });
64407
+
64415
64408
  if (browser .getShiftKey () && (browser .getControlKey () || browser .getCommandKey ()))
64416
64409
  return;
64417
64410
 
@@ -64592,10 +64585,6 @@ Object .assign (Object .setPrototypeOf (PointingDevice .prototype, Base_X3DBaseN
64592
64585
  else
64593
64586
  browser .setCursor (this .grabbing && move ? "GRABBING" : "DEFAULT");
64594
64587
  },
64595
- onmouseenter ()
64596
- {
64597
- this .getBrowser () .getElement () .focus ({ preventScroll: true });
64598
- },
64599
64588
  onmouseout ()
64600
64589
  {
64601
64590
  this .getBrowser () .leaveNotifyEvent ();
@@ -66105,10 +66094,16 @@ Object .assign (X3DRenderingContext .prototype,
66105
66094
  {
66106
66095
  return Utility_Lock .acquire (this [_buttonLock], async () =>
66107
66096
  {
66108
- this .getSurface () .querySelector (".x_ite-private-xr-button") ?.remove ();
66109
66097
 
66110
66098
  if (!await this .xrCheckSupport ())
66099
+ {
66100
+ const button = this .getSurface () .querySelector (".x_ite-private-xr-button");
66101
+
66102
+ if (button)
66103
+ button .classList .add ("x_ite-private-hidden");
66104
+
66111
66105
  return;
66106
+ }
66112
66107
 
66113
66108
  await this .loadComponents (this .getComponent ("WebXR"), this .getComponent ("Geometry2D"));
66114
66109
 
@@ -71891,7 +71886,6 @@ const PeriodicWave_default_ = PeriodicWave;
71891
71886
 
71892
71887
 
71893
71888
 
71894
-
71895
71889
  const
71896
71890
  _audioContext = Symbol (),
71897
71891
  _soundDestinationNodes = Symbol (),
@@ -72002,7 +71996,7 @@ Object .assign (X3DSoundContext .prototype,
72002
71996
  noSoundButton = document .createElement ("div"),
72003
71997
  startAudioElements = () => this .startAudioElements ();
72004
71998
 
72005
- noSoundButton .classList .add ("x_ite-private-no-sound-button", "x_ite-private-button");
71999
+ noSoundButton .classList .add ("x_ite-private-no-sound-button", "x_ite-private-button", "x_ite-private-fade");
72006
72000
  noSoundButton .part ?.add ("no-sound-button");
72007
72001
 
72008
72002
  noSoundButton .title = gettext("Activate sound.");
@@ -72014,24 +72008,12 @@ Object .assign (X3DSoundContext .prototype,
72014
72008
  return noSoundButton;
72015
72009
  })();
72016
72010
 
72017
- const
72018
- count = !! this [_audioElements] .size,
72019
- fade = count ? "x_ite-private-fade-in-300" : "x_ite-private-fade-out-300";
72011
+ const count = !! this [_audioElements] .size;
72020
72012
 
72021
72013
  if (count)
72022
- this [_noSoundButton] .style .display = "";
72023
-
72024
- this [_noSoundButton] .classList .add (fade);
72025
-
72026
- await helper.sleep (400);
72027
-
72028
- this [_noSoundButton] .classList .remove (fade);
72029
-
72030
- if (count !== !! this [_audioElements] .size)
72031
- return;
72032
-
72033
- if (!count)
72034
- this [_noSoundButton] .style .display = "none";
72014
+ this [_noSoundButton] .classList .remove ("x_ite-private-hidden");
72015
+ else
72016
+ this [_noSoundButton] .classList .add ("x_ite-private-hidden");
72035
72017
  },
72036
72018
  200);
72037
72019
  },
@@ -72975,15 +72957,16 @@ function X3DBrowserContext (element)
72975
72957
  for (const browserContext of browserContexts)
72976
72958
  browserContext .call (this, element);
72977
72959
 
72978
- this .addChildObjects (Base_X3DConstants .outputOnly, "initialized", new x_ite_Fields .SFTime (),
72979
- Base_X3DConstants .outputOnly, "shutdown", new x_ite_Fields .SFTime (),
72980
- Base_X3DConstants .outputOnly, "prepareEvents", new x_ite_Fields .SFTime (),
72981
- Base_X3DConstants .outputOnly, "timeEvents", new x_ite_Fields .SFTime (),
72982
- Base_X3DConstants .outputOnly, "cameraEvents", new x_ite_Fields .SFTime (),
72983
- Base_X3DConstants .outputOnly, "sensorEvents", new x_ite_Fields .SFTime (),
72984
- Base_X3DConstants .outputOnly, "displayEvents", new x_ite_Fields .SFTime (),
72985
- Base_X3DConstants .outputOnly, "finishedEvents", new x_ite_Fields .SFTime (),
72986
- Base_X3DConstants .outputOnly, "endEvents", new x_ite_Fields .SFTime ());
72960
+ this .addChildObjects (Base_X3DConstants .outputOnly, "initialized", new x_ite_Fields .SFTime (),
72961
+ Base_X3DConstants .outputOnly, "shutdown", new x_ite_Fields .SFTime (),
72962
+ Base_X3DConstants .outputOnly, "prepareEvents", new x_ite_Fields .SFTime (),
72963
+ Base_X3DConstants .outputOnly, "timePrepareEvents", new x_ite_Fields .SFTime (),
72964
+ Base_X3DConstants .outputOnly, "timeEvents", new x_ite_Fields .SFTime (),
72965
+ Base_X3DConstants .outputOnly, "cameraEvents", new x_ite_Fields .SFTime (),
72966
+ Base_X3DConstants .outputOnly, "sensorEvents", new x_ite_Fields .SFTime (),
72967
+ Base_X3DConstants .outputOnly, "displayEvents", new x_ite_Fields .SFTime (),
72968
+ Base_X3DConstants .outputOnly, "finishedEvents", new x_ite_Fields .SFTime (),
72969
+ Base_X3DConstants .outputOnly, "endEvents", new x_ite_Fields .SFTime ());
72987
72970
 
72988
72971
  this [X3DBrowserContext_tainted] = false;
72989
72972
  this [_previousTime] = 0;
@@ -73017,6 +73000,10 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73017
73000
  {
73018
73001
  return this ._prepareEvents;
73019
73002
  },
73003
+ timePrepareEvents ()
73004
+ {
73005
+ return this ._timePrepareEvents;
73006
+ },
73020
73007
  timeEvents ()
73021
73008
  {
73022
73009
  return this ._timeEvents;
@@ -73120,6 +73107,9 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73120
73107
  this .addTaintedField (this ._prepareEvents);
73121
73108
  this [X3DBrowserContext_processEvents] ();
73122
73109
 
73110
+ this .addTaintedField (this ._timePrepareEvents);
73111
+ this [X3DBrowserContext_processEvents] ();
73112
+
73123
73113
  this .addTaintedField (this ._timeEvents);
73124
73114
  this [X3DBrowserContext_processEvents] ();
73125
73115
 
@@ -84009,7 +83999,9 @@ const Inline_default_ = Inline;
84009
83999
  * THIS NODE IS STILL EXPERIMENTAL.
84010
84000
  */
84011
84001
 
84012
- const InlineGeometry_cache = Symbol .for ("X_ITE.cache");
84002
+ const
84003
+ InlineGeometry_cache = Symbol .for ("X_ITE.cache"),
84004
+ _lock = Symbol ();
84013
84005
 
84014
84006
  function InlineGeometry (executionContext)
84015
84007
  {
@@ -84040,43 +84032,54 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84040
84032
  },
84041
84033
  set_solid__ ()
84042
84034
  {
84043
- if (!this .geometryNode)
84035
+ const { geometryNode } = this;
84036
+
84037
+ if (!geometryNode)
84044
84038
  return;
84045
84039
 
84046
- if (this .geometryNode .getGeometryType () < 2)
84040
+ if (geometryNode .getGeometryType () < 2)
84047
84041
  return;
84048
84042
 
84049
- this .geometryNode ._solid = this ._solid;
84043
+ geometryNode ._solid = this ._solid;
84050
84044
  },
84051
84045
  set_smooth__ ()
84052
84046
  {
84053
- if (!this .geometryNode)
84047
+ const { geometryNode } = this;
84048
+
84049
+ if (!geometryNode)
84050
+ return;
84051
+
84052
+ if (geometryNode .getGeometryType () < 3)
84054
84053
  return;
84055
84054
 
84056
- if (this .geometryNode .getGeometryType () < 2)
84055
+ if (geometryNode ._normal ?.getValue ())
84057
84056
  return;
84058
84057
 
84059
84058
  const smooth = this ._smooth .getValue ();
84060
84059
 
84061
- if (this .geometryNode ._creaseAngle)
84060
+ if (geometryNode ._creaseAngle)
84062
84061
  {
84063
84062
  const creaseAngle = smooth ? Math .PI : 0;
84064
84063
 
84065
- if (this .geometryNode ._creaseAngle .equals (creaseAngle))
84064
+ if (geometryNode ._creaseAngle .equals (creaseAngle))
84066
84065
  return;
84067
84066
 
84068
- this .geometryNode ._creaseAngle = creaseAngle;
84067
+ geometryNode ._creaseAngle = creaseAngle;
84069
84068
  }
84070
- else if (this .geometryNode ._normal && !this .geometryNode ._normal .getValue ())
84069
+
84070
+ if (geometryNode ._normalPerVertex)
84071
84071
  {
84072
- if (this .geometryNode ._normalPerVertex .equals (smooth))
84072
+ if (geometryNode ._normalPerVertex .equals (smooth))
84073
84073
  return;
84074
84074
 
84075
- this .geometryNode ._normalPerVertex = smooth;
84075
+ geometryNode ._normalPerVertex = smooth;
84076
84076
  }
84077
84077
  },
84078
84078
  unloadData ()
84079
84079
  {
84080
+ if (this .geometryNode)
84081
+ this .geometryNode [_lock] = false;
84082
+
84080
84083
  this .fileLoader ?.abort ();
84081
84084
  this .setInternalScene (null);
84082
84085
  },
@@ -84084,6 +84087,9 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84084
84087
  {
84085
84088
  const cache = this .getBrowser () .getBrowserOption ("Cache");
84086
84089
 
84090
+ if (this .geometryNode)
84091
+ this .geometryNode [_lock] = false;
84092
+
84087
84093
  this .fileLoader ?.abort ();
84088
84094
 
84089
84095
  this .fileLoader = new InputOutput_FileLoader (this, { cacheScene: cache })
@@ -84093,13 +84099,8 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84093
84099
  {
84094
84100
  // Remove old scene.
84095
84101
 
84096
- if (this .scene)
84097
- {
84098
- this .getLive () .removeFieldInterest (this .scene .getLive ());
84099
-
84100
- if (!this .scene [InlineGeometry_cache])
84101
- this .scene .dispose ();
84102
- }
84102
+ if (!this .scene ?.[InlineGeometry_cache])
84103
+ this .scene ?.dispose ();
84103
84104
 
84104
84105
  // Set new scene.
84105
84106
 
@@ -84119,6 +84120,19 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84119
84120
  if (!this .geometryNode)
84120
84121
  throw new Error ("No X3DGeometryNode found.");
84121
84122
 
84123
+ if (this .geometryNode [_lock])
84124
+ {
84125
+ this .geometryNode = this .geometryNode .copy (this .getExecutionContext ());
84126
+
84127
+ this .geometryNode .setup ();
84128
+
84129
+ // TODO: add routes.
84130
+ }
84131
+ else
84132
+ {
84133
+ this .geometryNode [_lock] = true;
84134
+ }
84135
+
84122
84136
  this .scene .setExecutionContext (scene [InlineGeometry_cache] ? browser .getDefaultScene () : this .getExecutionContext ());
84123
84137
  this .scene .setLive (true);
84124
84138
 
@@ -84200,6 +84214,9 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84200
84214
  { },
84201
84215
  dispose ()
84202
84216
  {
84217
+ if (this .geometryNode)
84218
+ this .geometryNode [_lock] = false;
84219
+
84203
84220
  Networking_X3DUrlObject .prototype .dispose .call (this);
84204
84221
  Rendering_X3DGeometryNode .prototype .dispose .call (this);
84205
84222
  },
@@ -87852,6 +87869,10 @@ Object .assign (Object .setPrototypeOf (X3DSoundProcessingNode .prototype, Sound
87852
87869
  for (const childNode of this .childNodes)
87853
87870
  childNode .getAudioSource () .connect (this .audioDestination);
87854
87871
  },
87872
+ set_start ()
87873
+ {
87874
+ this ._elapsedTime = 0;
87875
+ },
87855
87876
  set_time ()
87856
87877
  {
87857
87878
  this ._elapsedTime = this .getElapsedTime ();
@@ -88105,6 +88126,8 @@ Object .assign (Object .setPrototypeOf (X3DSoundSourceNode .prototype, Sound_X3D
88105
88126
  if (!this .mediaElement)
88106
88127
  return;
88107
88128
 
88129
+ this ._elapsedTime = 0;
88130
+
88108
88131
  this .mediaElement .currentTime = 0;
88109
88132
 
88110
88133
  this .getBrowser () .startAudioElement (this .mediaElement);
@@ -88660,7 +88683,10 @@ Object .assign (Object .setPrototypeOf (AudioDestination .prototype, Sound_X3DSo
88660
88683
  },
88661
88684
  set_mediaDeviceID_impl__ ()
88662
88685
  {
88663
- const sinkId = this ._mediaDeviceID .getValue () || "default";
88686
+ const sinkId = this ._mediaDeviceID .getValue ();
88687
+
88688
+ if (this .audioElement .sinkId === sinkId)
88689
+ return Promise .resolve ();
88664
88690
 
88665
88691
  return this .audioElement .setSinkId ?.(sinkId) ?? Promise .resolve ();
88666
88692
  },
@@ -89008,12 +89034,12 @@ Object .defineProperties (BufferAudioSource,
89008
89034
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
89009
89035
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "detune", new x_ite_Fields .SFFloat ()),
89010
89036
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "playbackRate", new x_ite_Fields .SFFloat (1)),
89011
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loopStart", new x_ite_Fields .SFTime (0)),
89012
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loopEnd", new x_ite_Fields .SFTime (0)),
89013
89037
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()), // skip test
89014
89038
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
89015
89039
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
89016
89040
 
89041
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loopStart", new x_ite_Fields .SFTime (0)),
89042
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loopEnd", new x_ite_Fields .SFTime (0)),
89017
89043
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool ()),
89018
89044
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "startTime", new x_ite_Fields .SFTime (0)),
89019
89045
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "resumeTime", new x_ite_Fields .SFTime (0)),
@@ -90051,6 +90077,8 @@ Object .assign (Object .setPrototypeOf (MicrophoneSource .prototype, Sound_X3DSo
90051
90077
 
90052
90078
  this .mediaStreamAudioSourceNode = new MediaStreamAudioSourceNode (audioContext, { mediaStream });
90053
90079
 
90080
+ this ._elapsedTime = 0;
90081
+
90054
90082
  if (this ._isActive .getValue ())
90055
90083
  {
90056
90084
  if (this ._isPaused .getValue () || !this .getLive () .getValue ())
@@ -90122,6 +90150,9 @@ Object .assign (Object .setPrototypeOf (MicrophoneSource .prototype, Sound_X3DSo
90122
90150
  },
90123
90151
  set_time ()
90124
90152
  {
90153
+ if (!this .mediaStreamAudioSourceNode)
90154
+ return;
90155
+
90125
90156
  this ._elapsedTime = this .getElapsedTime ();
90126
90157
  },
90127
90158
  });
@@ -90190,7 +90221,7 @@ Object .assign (Object .setPrototypeOf (OscillatorSource .prototype, Sound_X3DSo
90190
90221
  if (!this .oscillatorNode)
90191
90222
  return;
90192
90223
 
90193
- this .oscillatorNode .detune .value = Math .max (this ._detune .getValue (), 0);
90224
+ this .oscillatorNode .detune .value = this ._detune .getValue ();
90194
90225
  },
90195
90226
  set_frequency__ ()
90196
90227
  {
@@ -90258,12 +90289,15 @@ Object .assign (Object .setPrototypeOf (OscillatorSource .prototype, Sound_X3DSo
90258
90289
 
90259
90290
  this .oscillatorNode = new OscillatorNode (audioContext);
90260
90291
 
90292
+ this .set_gain__ ();
90261
90293
  this .set_detune__ ();
90262
90294
  this .set_frequency__ ();
90263
90295
  this .set_type__ ();
90264
90296
 
90265
90297
  this .oscillatorNode .connect (this .getAudioSource ());
90266
90298
  this .oscillatorNode .start ();
90299
+
90300
+ this ._elapsedTime = 0;
90267
90301
  },
90268
90302
  set_pause ()
90269
90303
  {
@@ -90275,8 +90309,16 @@ Object .assign (Object .setPrototypeOf (OscillatorSource .prototype, Sound_X3DSo
90275
90309
  },
90276
90310
  set_stop ()
90277
90311
  {
90278
- this .oscillatorNode .stop ();
90279
- this .oscillatorNode .disconnect ();
90312
+ const
90313
+ audioContext = this .getBrowser () .getAudioContext (),
90314
+ gainNode = this .getAudioSource (),
90315
+ now = audioContext .currentTime,
90316
+ fadeDuration = 0.03;
90317
+
90318
+ gainNode .gain .setValueAtTime (gainNode .gain .value, now);
90319
+ gainNode .gain .exponentialRampToValueAtTime (1e-3, now + fadeDuration);
90320
+
90321
+ this .oscillatorNode .stop (now + fadeDuration);
90280
90322
  },
90281
90323
  set_time ()
90282
90324
  {
@@ -90437,6 +90479,9 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90437
90479
  },
90438
90480
  setGain (gain, pan = 0.5, rotation = 0)
90439
90481
  {
90482
+ // Given a pan value, left and right channel levels can be obtained using the equations from:
90483
+ // https://www.web3d.org/documents/specifications/19775-1/V4.0/index.html
90484
+
90440
90485
  const
90441
90486
  panLeft = 1 - pan ** 2,
90442
90487
  panRight = 1 - (1 - pan) ** 2,
@@ -91315,7 +91360,7 @@ function GifMedia (gif, movieTexture)
91315
91360
  if (!loop && cycle < this .cycle)
91316
91361
  return this .duration;
91317
91362
 
91318
- return (movieTexture ._elapsedTime * playbackRate) % this .duration;
91363
+ return (movieTexture ._elapsedTime .getValue () * playbackRate) % this .duration;
91319
91364
  },
91320
91365
  set: Function .prototype,
91321
91366
  },
@@ -91342,7 +91387,7 @@ function GifMedia (gif, movieTexture)
91342
91387
  {
91343
91388
  get ()
91344
91389
  {
91345
- return Math .floor (movieTexture ._elapsedTime / this .duration);
91390
+ return Math .floor (movieTexture ._elapsedTime .getValue () / this .duration);
91346
91391
  },
91347
91392
  },
91348
91393
  currentFrame:
@@ -91436,7 +91481,7 @@ async function PNGMedia (apng, movieTexture)
91436
91481
  {
91437
91482
  get ()
91438
91483
  {
91439
- return Math .floor (movieTexture ._elapsedTime / this .duration);
91484
+ return Math .floor (movieTexture ._elapsedTime .getValue () / this .duration);
91440
91485
  },
91441
91486
  },
91442
91487
  currentFrame:
@@ -91481,8 +91526,8 @@ const PNGMedia_default_ = PNGMedia;
91481
91526
 
91482
91527
  /* harmony default export */ const Texturing_PNGMedia = (x_ite_Namespace .add ("PNGMedia", PNGMedia_default_));
91483
91528
  ;// ./src/x_ite/Components/Texturing/MovieTexture.js
91484
- /* provided dependency */ var SuperGif = __webpack_require__(133);
91485
- /* provided dependency */ var APNG = __webpack_require__(991);
91529
+ /* provided dependency */ var SuperGif = __webpack_require__(530);
91530
+ /* provided dependency */ var APNG = __webpack_require__(504);
91486
91531
 
91487
91532
 
91488
91533
 
@@ -93749,7 +93794,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
93749
93794
  },
93750
93795
  print (... args)
93751
93796
  {
93752
- const string = args .map (String) .join (" ");
93797
+ const string = args .join (" ");
93753
93798
 
93754
93799
  console .log (string);
93755
93800
 
@@ -93758,7 +93803,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
93758
93803
  },
93759
93804
  println (... args)
93760
93805
  {
93761
- const string = args .map (String) .join (" ");
93806
+ const string = args .join (" ");
93762
93807
 
93763
93808
  console .log (string);
93764
93809
 
@@ -94126,7 +94171,7 @@ const QuickSort_default_ = QuickSort;
94126
94171
 
94127
94172
  /* harmony default export */ const Algorithms_QuickSort = (x_ite_Namespace .add ("QuickSort", QuickSort_default_));
94128
94173
  ;// ./src/lib/libtess.js
94129
- /* provided dependency */ var libtess_libtess = __webpack_require__(643);
94174
+ /* provided dependency */ var libtess_libtess = __webpack_require__(780);
94130
94175
  const libtess_default_ = libtess_libtess;
94131
94176
  ;
94132
94177