x_ite 16.4.3 → 16.5.1

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 (56) 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 +2 -2
  7. package/dist/assets/components/CubeMapTexturingComponent.min.js +2 -2
  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 +1 -1
  11. package/dist/assets/components/EventUtilitiesComponent.min.js +1 -1
  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 +27 -13
  21. package/dist/assets/components/HAnimComponent.min.js +2 -2
  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 +1 -1
  45. package/dist/assets/components/WebXRComponent.min.js +1 -1
  46. package/dist/assets/components/X_ITEComponent.js +1 -1
  47. package/dist/assets/components/X_ITEComponent.min.js +1 -1
  48. package/dist/example.html +1 -1
  49. package/dist/x_ite.css +1 -1
  50. package/dist/x_ite.d.ts +7 -3
  51. package/dist/x_ite.js +511 -458
  52. package/dist/x_ite.min.js +2 -2
  53. package/dist/x_ite.min.mjs +2 -2
  54. package/dist/x_ite.mjs +511 -458
  55. package/dist/x_ite.zip +0 -0
  56. package/package.json +2 -1
package/dist/x_ite.mjs CHANGED
@@ -1,7 +1,7 @@
1
- /* X_ITE v16.4.3 */
1
+ /* X_ITE v16.5.1 */
2
2
  var __webpack_modules__ = ({
3
3
 
4
- /***/ 802
4
+ /***/ 971
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
- /***/ 528
1009
+ /***/ 697
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
- /***/ 628
2005
+ /***/ 617
2006
2006
  (module) {
2007
2007
 
2008
2008
  /**
@@ -7561,21 +7561,21 @@ Object .assign (Generator .prototype,
7561
7561
 
7562
7562
  return false;
7563
7563
  },
7564
- ImportedName (importedNode)
7564
+ ImportedName (importedNodeInstance)
7565
7565
  {
7566
7566
  const importedNames = this .importedNames .get (this .ExecutionContext ());
7567
7567
 
7568
- if (importedNames .has (importedNode))
7569
- return importedNames .get (importedNode);
7568
+ if (importedNames .has (importedNodeInstance))
7569
+ return importedNames .get (importedNodeInstance);
7570
7570
 
7571
7571
  const
7572
7572
  names = this .names .get (this .ExecutionContext ()),
7573
- newName = getUniqueName (names, importedNode .getImportedName ());
7573
+ newName = getUniqueName (names, importedNodeInstance .getName ());
7574
7574
 
7575
7575
  // Add to indices.
7576
7576
 
7577
7577
  names .add (newName);
7578
- importedNames .set (importedNode, newName);
7578
+ importedNames .set (importedNodeInstance, newName);
7579
7579
 
7580
7580
  return newName;
7581
7581
  },
@@ -7800,7 +7800,7 @@ Object .assign (Object .setPrototypeOf (JSONGenerator .prototype, X3DGenerator .
7800
7800
  },
7801
7801
  RemoveComma ()
7802
7802
  {
7803
- this .string = this .string .replace (/,\s*$/s, "");
7803
+ this .string = this .string .replace (/,\s*$/, "");
7804
7804
  },
7805
7805
  stringProperty (key, value, comma = true)
7806
7806
  {
@@ -8253,14 +8253,14 @@ Object .assign (X3DObject .prototype,
8253
8253
  {
8254
8254
  return this .constructor .typeName;
8255
8255
  },
8256
- setName (value)
8257
- {
8258
- this [_name] = value;
8259
- },
8260
8256
  getName ()
8261
8257
  {
8262
8258
  return this [_name];
8263
8259
  },
8260
+ setName (value)
8261
+ {
8262
+ this [_name] = value;
8263
+ },
8264
8264
  getDisplayName ()
8265
8265
  {
8266
8266
  return this [_name];
@@ -14341,14 +14341,14 @@ const SFNode_handler =
14341
14341
  {
14342
14342
  get (target, key)
14343
14343
  {
14344
- if (typeof key === "string")
14344
+ try
14345
14345
  {
14346
- const
14347
- node = target .getValue (),
14348
- field = node ?.getField (key, false);
14349
-
14350
- if (field)
14346
+ if (typeof key === "string")
14351
14347
  {
14348
+ const
14349
+ node = target .getValue (),
14350
+ field = node ?.getField (key);
14351
+
14352
14352
  // Specification conform would be: `accessType & X3DConstants .outputOnly`.
14353
14353
  // However, we also allow read access to initializeOnly fields.
14354
14354
  if (field .getAccessType () === Base_X3DConstants .inputOnly)
@@ -14357,19 +14357,21 @@ const SFNode_handler =
14357
14357
  return field .valueOf ();
14358
14358
  }
14359
14359
  }
14360
+ catch
14361
+ { }
14360
14362
 
14361
14363
  return Reflect .get (target, key);
14362
14364
  },
14363
14365
  set (target, key, value)
14364
14366
  {
14365
- if (typeof key === "string")
14367
+ try
14366
14368
  {
14367
- const
14368
- node = target .getValue (),
14369
- field = node ?.getField (key, false);
14370
-
14371
- if (field)
14369
+ if (typeof key === "string")
14372
14370
  {
14371
+ const
14372
+ node = target .getValue (),
14373
+ field = node ?.getField (key);
14374
+
14373
14375
  if (field .getAccessType () === Base_X3DConstants .outputOnly)
14374
14376
  return false;
14375
14377
 
@@ -14377,13 +14379,21 @@ const SFNode_handler =
14377
14379
  return true;
14378
14380
  }
14379
14381
  }
14382
+ catch
14383
+ { }
14380
14384
 
14381
14385
  return Reflect .set (target, key, value);
14382
14386
  },
14383
14387
  has (target, key)
14384
14388
  {
14385
- return Boolean (target .getValue () ?.getField (key, false))
14386
- || Reflect .has (target, key);
14389
+ try
14390
+ {
14391
+ return Boolean (target .getValue () ?.getField (key));
14392
+ }
14393
+ catch
14394
+ {
14395
+ return Reflect .has (target, key);
14396
+ }
14387
14397
  },
14388
14398
  ownKeys (target)
14389
14399
  {
@@ -18424,7 +18434,7 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18424
18434
  {
18425
18435
  return this [_fieldDefinitions];
18426
18436
  },
18427
- getField (name, _throw = true)
18437
+ getField (name)
18428
18438
  {
18429
18439
  const field = getFieldFromArray (this [_userDefinedFields], name)
18430
18440
  ?? getFieldFromArray (this [_predefinedFields], name);
@@ -18432,8 +18442,7 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18432
18442
  if (field)
18433
18443
  return field;
18434
18444
 
18435
- if (_throw)
18436
- throw new Error (`Unknown field '${name}' in node class ${this .getTypeName ()}.`);
18445
+ throw new Error (`Unknown field '${name}' in node class ${this .getTypeName ()}.`);
18437
18446
  },
18438
18447
  getFields ()
18439
18448
  {
@@ -18865,7 +18874,7 @@ const Legacy_default_ = Legacy;
18865
18874
 
18866
18875
  /* harmony default export */ const Browser_Legacy = (x_ite_Namespace .add ("Legacy", Legacy_default_));
18867
18876
  ;// ./src/x_ite/BROWSER_VERSION.js
18868
- const BROWSER_VERSION_default_ = "16.4.3";
18877
+ const BROWSER_VERSION_default_ = "16.5.1";
18869
18878
  ;
18870
18879
 
18871
18880
  /* harmony default export */ const BROWSER_VERSION = (x_ite_Namespace .add ("BROWSER_VERSION", BROWSER_VERSION_default_));
@@ -21378,6 +21387,7 @@ const URLs_default_ = URLs;
21378
21387
 
21379
21388
 
21380
21389
 
21390
+
21381
21391
  const _metaDataCallbacks = Symbol ();
21382
21392
 
21383
21393
  function X3DNode (executionContext)
@@ -21427,17 +21437,19 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
21427
21437
  else
21428
21438
  {
21429
21439
  // Make a copy for a X3DPrototypeInstance.
21430
-
21440
+
21431
21441
  const executionContext = instance .getBody ();
21432
21442
 
21433
21443
  // First try to get a named node with the node's name.
21434
21444
 
21435
- if (this .getName () .length)
21445
+ if (this .getName ())
21436
21446
  {
21437
- const namedNode = executionContext .getNamedNodes () .get (this .getName ());
21438
-
21439
- if (namedNode)
21440
- return namedNode .getValue ();
21447
+ try
21448
+ {
21449
+ return executionContext .getLocalNode (this .getName ()) .getValue ();
21450
+ }
21451
+ catch
21452
+ { }
21441
21453
  }
21442
21454
 
21443
21455
  // Create copy.
@@ -21448,7 +21460,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
21448
21460
  if (this .getNeedsName ())
21449
21461
  this .getExecutionContext () .updateNamedNode (this .getExecutionContext () .getUniqueName (), this);
21450
21462
 
21451
- if (this .getName () .length)
21463
+ if (this .getName ())
21452
21464
  executionContext .updateNamedNode (this .getName (), copy);
21453
21465
 
21454
21466
  // Default fields
@@ -21549,7 +21561,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
21549
21561
  },
21550
21562
  getNeedsName ()
21551
21563
  {
21552
- if (this .getName () .length)
21564
+ if (this .getName ())
21553
21565
  return false;
21554
21566
 
21555
21567
  if (this .getCloneCount () > 1)
@@ -22275,7 +22287,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
22275
22287
  if (cdata ?.length === 0)
22276
22288
  cdata = null;
22277
22289
 
22278
- if (!cdata ?.some (string => string .match (/^\s*(?:data|ecmascript|javascript|vrmlscript):/s)))
22290
+ if (!cdata ?.some (string => string .match (/^\s*(?:data|ecmascript|javascript|vrmlscript):/)))
22279
22291
  cdata = null;
22280
22292
 
22281
22293
  generator .IncIndent ();
@@ -22554,7 +22566,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
22554
22566
  if (sourceText ?.length !== 1)
22555
22567
  sourceText = null;
22556
22568
 
22557
- if (!sourceText ?.some (string => string .match (/^\s*(?:data|ecmascript|javascript|vrmlscript):/s)))
22569
+ if (!sourceText ?.some (string => string .match (/^\s*(?:data|ecmascript|javascript|vrmlscript):/)))
22558
22570
  sourceText = null;
22559
22571
 
22560
22572
  // Predefined fields
@@ -22773,22 +22785,47 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
22773
22785
 
22774
22786
  if (executionContext .isScene)
22775
22787
  {
22776
- // Remove exported node if any.
22788
+ // Collect imported nodes in parent context.
22789
+ // This must be done before the exported nodes are removed.
22790
+
22791
+ const
22792
+ parentContext = executionContext .getExecutionContext (),
22793
+ importedNodes = [ ];
22794
+
22795
+ if (parentContext)
22796
+ {
22797
+ for (const importedNode of parentContext .getImportedNodes ())
22798
+ {
22799
+ if (helper.try (() => importedNode .getExportedNode ()) === this)
22800
+ importedNodes .push (importedNode);
22801
+ }
22802
+ }
22803
+
22804
+ // Remove exported nodes if any.
22777
22805
 
22778
22806
  for (const exportedNode of Array .from (executionContext .getExportedNodes ()))
22779
22807
  {
22780
- if (exportedNode .getLocalNode () === this)
22781
- executionContext .removeExportedNode (exportedNode .getExportedName ());
22808
+ if (exportedNode .getLocalNode () !== this)
22809
+ continue;
22810
+
22811
+ executionContext .removeExportedNode (exportedNode .getExportedName ());
22782
22812
  }
22783
22813
 
22784
- // Remove imported node if any.
22814
+ // Update imported node instances in parent context if any.
22815
+ // This must be done after the exported nodes are removed.
22785
22816
 
22786
- const parentContext = executionContext .getExecutionContext ();
22817
+ for (const importedNode of importedNodes)
22818
+ importedNode .getInstance () .update ();
22787
22819
 
22788
- if (parentContext)
22820
+ // Update routes after the exported nodes are removed.
22821
+
22822
+ for (const field of this .getFields ())
22789
22823
  {
22790
- for (const importedNode of parentContext .getImportedNodes ())
22791
- importedNode .getExportedNode () .update ();
22824
+ for (const route of Array .from (field .getInputRoutes ()))
22825
+ route .reconnect ();
22826
+
22827
+ for (const route of Array .from (field .getOutputRoutes ()))
22828
+ route .reconnect ();
22792
22829
  }
22793
22830
  }
22794
22831
 
@@ -23933,146 +23970,121 @@ const NamedNodesArray_default_ = NamedNodesArray;
23933
23970
  ;
23934
23971
 
23935
23972
  /* harmony default export */ const Execution_NamedNodesArray = (x_ite_Namespace .add ("NamedNodesArray", NamedNodesArray_default_));
23936
- ;// ./src/x_ite/Components/Core/X3DImportedNodeProxy.js
23973
+ ;// ./src/x_ite/Components/Core/X3DImportedNodeInstance.js
23937
23974
 
23938
23975
 
23939
23976
 
23940
23977
 
23941
23978
 
23942
- const
23943
- _importedName = Symbol (),
23944
- _importedNode = Symbol (),
23945
- X3DImportedNodeProxy_type = Symbol (),
23946
- _functions = Symbol ();
23979
+ const _importedNode = Symbol ();
23947
23980
 
23948
- const X3DImportedNodeProxy_handler =
23981
+ const X3DImportedNodeInstance_handler =
23949
23982
  {
23950
23983
  get (target, key)
23951
23984
  {
23952
23985
  if (Reflect .has (target, key))
23953
23986
  return Reflect .get (target, key);
23954
23987
 
23955
- const node = target .getSharedNode ();
23956
-
23957
- if (node)
23958
- {
23959
- const property = Reflect .get (node, key);
23960
-
23961
- if (typeof property === "function")
23962
- {
23963
- return target [_functions] .get (key) ?? (() =>
23964
- {
23965
- const func = property .bind (node);
23966
-
23967
- target [_functions] .set (key, func);
23988
+ const exportedNode = helper.try (() => target [_importedNode] .getExportedNode ());
23968
23989
 
23969
- return func;
23970
- })();
23971
- }
23972
-
23973
- return property;
23974
- }
23990
+ if (exportedNode)
23991
+ return Reflect .get (exportedNode, key);
23975
23992
  },
23976
23993
  set (target, key, value)
23977
23994
  {
23978
23995
  if (Reflect .has (target, key))
23979
- {
23980
23996
  return Reflect .set (target, key, value);
23981
- }
23982
- else
23983
- {
23984
- const node = target .getSharedNode ();
23985
23997
 
23986
- if (node)
23987
- return Reflect .set (node, key, value);
23998
+ const exportedNode = helper.try (() => target [_importedNode] .getExportedNode ());
23988
23999
 
23989
- return false;
23990
- }
24000
+ if (exportedNode)
24001
+ return Reflect .set (exportedNode, key, value);
24002
+
24003
+ return false;
23991
24004
  },
23992
24005
  has (target, key)
23993
24006
  {
24007
+ const exportedNode = helper.try (() => target [_importedNode] .getExportedNode ());
24008
+
23994
24009
  return Reflect .has (target, key)
23995
- || Reflect .has (target .getSharedNode () ?? { }, key);
24010
+ || (exportedNode && Reflect .has (exportedNode, key));
23996
24011
  },
23997
24012
  ownKeys (target)
23998
24013
  {
23999
- return Array .from (new Set (Reflect .ownKeys (target)
24000
- .concat (Reflect .ownKeys (target .getSharedNode () ?? { }))));
24014
+ let keys = Reflect .ownKeys (target);
24015
+
24016
+ const exportedNode = helper.try (() => target [_importedNode] .getExportedNode ());
24017
+
24018
+ if (exportedNode)
24019
+ keys = keys .concat (Reflect .ownKeys (exportedNode));
24020
+
24021
+ return Array .from (new Set (keys));
24001
24022
  },
24002
24023
  getOwnPropertyDescriptor (target, key)
24003
24024
  {
24025
+ const exportedNode = helper.try (() => target [_importedNode] .getExportedNode ());
24026
+
24004
24027
  return Reflect .getOwnPropertyDescriptor (target, key)
24005
- ?? Reflect .getOwnPropertyDescriptor (target .getSharedNode () ?? { }, key);
24028
+ ?? (exportedNode && Reflect .getOwnPropertyDescriptor (exportedNode, key));
24006
24029
  },
24007
24030
  };
24008
24031
 
24009
- function X3DImportedNodeProxy (executionContext, importedName, type)
24032
+ function X3DImportedNodeInstance (executionContext, importedNode)
24010
24033
  {
24011
24034
  Core_X3DNode .call (this, executionContext);
24012
24035
 
24013
- const proxy = new Proxy (this, X3DImportedNodeProxy_handler);
24036
+ this .addType (Base_X3DConstants .X3DImportedNodeInstance);
24014
24037
 
24015
- this [_importedName] = importedName;
24016
- this [X3DImportedNodeProxy_type] = type;
24017
- this [_functions] = new Map ();
24038
+ // Private properties
24018
24039
 
24019
- this .setup ();
24040
+ this [_importedNode] = importedNode;
24020
24041
 
24021
- return proxy;
24042
+ // Return Proxy
24043
+
24044
+ return new Proxy (this, X3DImportedNodeInstance_handler);
24022
24045
  }
24023
24046
 
24024
- Object .assign (Object .setPrototypeOf (X3DImportedNodeProxy .prototype, Core_X3DNode .prototype),
24047
+ Object .assign (Object .setPrototypeOf (X3DImportedNodeInstance .prototype, Core_X3DNode .prototype),
24025
24048
  {
24026
24049
  initialize ()
24027
24050
  {
24028
24051
  Core_X3DNode .prototype .initialize .call (this);
24029
24052
 
24030
- this .getExecutionContext () .importedNodes .addInterest ("update", this);
24053
+ this [_importedNode] .getInlineNode () ._loadState .addInterest ("update", this);
24031
24054
 
24032
24055
  this .update ();
24033
24056
  },
24034
- getExtendedEventHandling ()
24057
+ update ()
24035
24058
  {
24036
- return false;
24059
+ if (this [_importedNode] .getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE)
24060
+ helper.try (() => this [_importedNode] .getExportedNode ()) ?.addInterest ("addNodeEvent", this);
24061
+
24062
+ this ._typeName_changed ?.setValue (Date .now () / 1000);
24063
+
24064
+ Base_X3DChildObject .prototype .addEvent .call (this);
24037
24065
  },
24038
- setTypeHint (value)
24066
+ getExtendedEventHandling ()
24039
24067
  {
24040
- this [X3DImportedNodeProxy_type] ??= value;
24068
+ return false;
24041
24069
  },
24042
- getSharedNode ()
24070
+ getInnerNode ()
24043
24071
  {
24044
- return helper.try (() => this [_importedNode] .getSharedNode ()) ?? null;
24072
+ return this [_importedNode] .getExportedNode () .getInnerNode ();
24045
24073
  },
24046
24074
  getImportedNode ()
24047
24075
  {
24048
24076
  return this [_importedNode];
24049
24077
  },
24050
- getInnerNode ()
24051
- {
24052
- return this [_importedNode] .getSharedNode () .getInnerNode ();
24053
- },
24054
24078
  getName ()
24055
24079
  {
24056
- return this [_importedName];
24057
- },
24058
- setName (value)
24059
- {
24060
- this [_importedName] = value;
24061
-
24062
- this ._name_changed ?.setValue (Date .now () / 1000);
24080
+ return this [_importedNode] .getImportedName ();
24063
24081
  },
24064
24082
  ... Object .fromEntries ([
24065
- ["getComponentInfo", "componentInfo"],
24066
- ["getContainerField", "containerField"],
24067
- ["getSpecificationRange", "specificationRange"],
24068
- ["getTypeName", "typeName"],
24069
- ]
24070
- .map (([fn, property]) => [fn, function ()
24071
- {
24072
- return this .getSharedNode () ?.[fn] () ?? this .constructor [property];
24073
- }])),
24074
- ... Object .fromEntries ([
24083
+ "getTypeName",
24075
24084
  "getType",
24085
+ "getComponentInfo",
24086
+ "getContainerField",
24087
+ "getSpecificationRange",
24076
24088
  "getFieldDefinitions",
24077
24089
  "getPredefinedField",
24078
24090
  "getPredefinedFields",
@@ -24086,42 +24098,15 @@ Object .assign (Object .setPrototypeOf (X3DImportedNodeProxy .prototype, Core_X3
24086
24098
  ]
24087
24099
  .map (fn => [fn, function (... args)
24088
24100
  {
24089
- return this .getSharedNode () ?.[fn] (... args) ?? Core_X3DNode .prototype [fn] .call (this, ... args);
24101
+ return helper.try (() => this [_importedNode] .getExportedNode ()) ?.[fn] (... args)
24102
+ ?? Core_X3DNode .prototype [fn] .call (this, ... args);
24090
24103
  }])),
24091
- update ()
24092
- {
24093
- const importedNode = this .getExecutionContext () .getImportedNodes () .get (this [_importedName])
24094
- ?? null;
24095
-
24096
- this [_importedNode] ?.getInlineNode () ._loadState .removeInterest ("set_loadState__", this);
24097
-
24098
- this [_importedNode] = importedNode;
24099
-
24100
- this [_importedNode] ?.getInlineNode () ._loadState .addInterest ("set_loadState__", this);
24101
-
24102
- this .set_loadState__ ();
24103
- },
24104
- set_loadState__ ()
24105
- {
24106
- if (this [_importedNode] ?.getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE)
24107
- {
24108
- const sharedNode = this .getSharedNode ();
24109
-
24110
- this [X3DImportedNodeProxy_type] = sharedNode ?.constructor ?? this [X3DImportedNodeProxy_type];
24111
-
24112
- sharedNode ?.addInterest ("addNodeEvent", this);
24113
- }
24114
-
24115
- this ._typeName_changed ?.setValue (Date .now () / 1000);
24116
-
24117
- Base_X3DChildObject .prototype .addEvent .call (this);
24118
- },
24119
24104
  toVRMLStream (generator)
24120
24105
  {
24121
24106
  generator .CheckSpace ();
24122
24107
  generator .string += "USE";
24123
24108
  generator .Space ();
24124
- generator .string += this [_importedName];
24109
+ generator .string += this [_importedNode] .getImportedName ();
24125
24110
  generator .NeedsSpace ();
24126
24111
  },
24127
24112
  toXMLStream (generator)
@@ -24131,36 +24116,48 @@ Object .assign (Object .setPrototypeOf (X3DImportedNodeProxy .prototype, Core_X3
24131
24116
  if (generator .html && this .getTypeName () === "Script")
24132
24117
  generator .attribute ("type", "model/x3d+xml");
24133
24118
 
24134
- generator .attribute ("USE", this [_importedName]);
24119
+ generator .attribute ("USE", this [_importedNode] .getImportedName ());
24135
24120
  generator .containerField (this .getContainerField ());
24136
24121
  generator .closeTag (this .getTypeName ());
24137
24122
  },
24138
24123
  toJSONStream (generator)
24139
24124
  {
24140
24125
  generator .beginObject (this .getTypeName (), false, true);
24141
- generator .stringProperty ("@USE", this [_importedName], false);
24126
+ generator .stringProperty ("@USE", this [_importedNode] .getImportedName (), false);
24142
24127
  generator .endObject ();
24143
24128
  generator .endObject ();
24144
24129
  },
24145
- });
24146
-
24147
- Object .defineProperties (X3DImportedNodeProxy .prototype,
24148
- {
24149
- constructor:
24130
+ dispose ()
24150
24131
  {
24151
- get ()
24132
+ const executionContext = this .getExecutionContext ();
24133
+
24134
+ for (const route of Array .from (executionContext .getRoutes ()))
24152
24135
  {
24153
- return this [X3DImportedNodeProxy_type] ?? Core_X3DNode;
24154
- },
24155
- }
24136
+ if (route .getSourceNode () === this)
24137
+ {
24138
+ executionContext .deleteRoute (route);
24139
+ continue;
24140
+ }
24141
+
24142
+ if (route .getDestinationNode () === this)
24143
+ {
24144
+ executionContext .deleteRoute (route);
24145
+ continue;
24146
+ }
24147
+ }
24148
+
24149
+ this .getImportedNode () .refreshInstance ();
24150
+
24151
+ Core_X3DNode .prototype .dispose .call (this);
24152
+ },
24156
24153
  });
24157
24154
 
24158
- Object .defineProperties (X3DImportedNodeProxy, Core_X3DNode .getStaticProperties ("X3DImportedNodeProxy", "Core", 2, "children", "4.1"));
24155
+ Object .defineProperties (X3DImportedNodeInstance, Core_X3DNode .getStaticProperties ("X3DImportedNodeInstance", "Core", 2, "children", "4.1"));
24159
24156
 
24160
- const X3DImportedNodeProxy_default_ = X3DImportedNodeProxy;
24157
+ const X3DImportedNodeInstance_default_ = X3DImportedNodeInstance;
24161
24158
  ;
24162
24159
 
24163
- /* harmony default export */ const Core_X3DImportedNodeProxy = (x_ite_Namespace .add ("X3DImportedNodeProxy", X3DImportedNodeProxy_default_));
24160
+ /* harmony default export */ const Core_X3DImportedNodeInstance = (x_ite_Namespace .add ("X3DImportedNodeInstance", X3DImportedNodeInstance_default_));
24164
24161
  ;// ./src/x_ite/Execution/X3DImportedNode.js
24165
24162
 
24166
24163
 
@@ -24170,20 +24167,23 @@ const
24170
24167
  X3DImportedNode_executionContext = Symbol (),
24171
24168
  _inlineNode = Symbol (),
24172
24169
  _exportedName = Symbol (),
24173
- X3DImportedNode_importedName = Symbol (),
24174
- _description = Symbol (),
24175
- _exportedNodes = Symbol ();
24170
+ _importedName = Symbol (),
24171
+ _instance = Symbol (),
24172
+ _description = Symbol ();
24176
24173
 
24177
24174
  function X3DImportedNode (executionContext, inlineNode, exportedName, importedName, description)
24178
24175
  {
24179
24176
  Base_X3DObject .call (this);
24180
24177
 
24178
+ // Private properties
24179
+
24181
24180
  this [X3DImportedNode_executionContext] = executionContext;
24182
24181
  this [_inlineNode] = inlineNode;
24183
24182
  this [_exportedName] = exportedName;
24184
- this [X3DImportedNode_importedName] = importedName;
24183
+ this [_importedName] = importedName;
24185
24184
  this [_description] = description;
24186
- this [_exportedNodes] = executionContext [_exportedNodes] ??= new Map ();
24185
+
24186
+ this .refreshInstance ();
24187
24187
  }
24188
24188
 
24189
24189
  Object .assign (Object .setPrototypeOf (X3DImportedNode .prototype, Base_X3DObject .prototype),
@@ -24200,27 +24200,7 @@ Object .assign (Object .setPrototypeOf (X3DImportedNode .prototype, Base_X3DObje
24200
24200
  {
24201
24201
  return this [_exportedName];
24202
24202
  },
24203
- getExportedNode (type)
24204
- {
24205
- const exportedNode = this [_exportedNodes] .get (this [X3DImportedNode_importedName]);
24206
-
24207
- exportedNode ?.setTypeHint (type);
24208
-
24209
- return exportedNode ?? this .createExportedNode (type);
24210
- },
24211
- createExportedNode (type)
24212
- {
24213
- const exportedNode = new Core_X3DImportedNodeProxy (this .getExecutionContext (), this [X3DImportedNode_importedName], type);
24214
-
24215
- this [_exportedNodes] .set (this [X3DImportedNode_importedName], exportedNode);
24216
-
24217
- return exportedNode;
24218
- },
24219
- updateExportedNode ()
24220
- {
24221
- this [_exportedNodes] .get (this [X3DImportedNode_importedName]) ?.update ();
24222
- },
24223
- getSharedNode ()
24203
+ getExportedNode ()
24224
24204
  {
24225
24205
  const exportedNode = this .getInlineNode () .getInternalScene () .getExportedNodes () .get (this [_exportedName]);
24226
24206
 
@@ -24231,20 +24211,26 @@ Object .assign (Object .setPrototypeOf (X3DImportedNode .prototype, Base_X3DObje
24231
24211
  },
24232
24212
  getImportedName ()
24233
24213
  {
24234
- return this [X3DImportedNode_importedName];
24214
+ return this [_importedName];
24235
24215
  },
24236
- [Symbol .for ("X_ITE.X3DImportedNode.setImportName")] (importedName)
24216
+ setImportName (importedName)
24237
24217
  {
24238
- const
24239
- exportedNode = this .getExportedNode (),
24240
- exportedNodes = this [_exportedNodes];
24218
+ this [_instance] .setName (importedName);
24241
24219
 
24242
- exportedNodes .delete (this [X3DImportedNode_importedName]);
24243
- exportedNodes .set (importedName, exportedNode);
24220
+ this [_importedName] = importedName;
24221
+ },
24222
+ getInstance ()
24223
+ {
24224
+ return this [_instance];
24225
+ },
24226
+ refreshInstance ()
24227
+ {
24228
+ if (this [_instance] && !this [X3DImportedNode_executionContext] .getImportedNodes () .has (this [_importedName]))
24229
+ return;
24244
24230
 
24245
- this [X3DImportedNode_importedName] = importedName;
24231
+ this [_instance] = new Core_X3DImportedNodeInstance (this [X3DImportedNode_executionContext], this);
24246
24232
 
24247
- exportedNode .setName (importedName);
24233
+ this [_instance] .setup ();
24248
24234
  },
24249
24235
  getDescription ()
24250
24236
  {
@@ -24259,9 +24245,9 @@ Object .assign (Object .setPrototypeOf (X3DImportedNode .prototype, Base_X3DObje
24259
24245
  if (!generator .ExistsNode (this .getInlineNode ()))
24260
24246
  throw new Error ("X3DImportedNode.toVRMLStream: Inline node does not exist.");
24261
24247
 
24262
- generator .AddRouteNode (this);
24248
+ generator .AddRouteNode (this .getInstance ());
24263
24249
 
24264
- const importedName = generator .ImportedName (this);
24250
+ const importedName = generator .ImportedName (this .getInstance ());
24265
24251
 
24266
24252
  generator .Indent ();
24267
24253
  generator .string += "IMPORT";
@@ -24293,9 +24279,9 @@ Object .assign (Object .setPrototypeOf (X3DImportedNode .prototype, Base_X3DObje
24293
24279
  if (!generator .ExistsNode (this .getInlineNode ()))
24294
24280
  throw new Error ("X3DImportedNode.toXMLStream: Inline node does not exist.");
24295
24281
 
24296
- generator .AddRouteNode (this);
24282
+ generator .AddRouteNode (this .getInstance ());
24297
24283
 
24298
- const importedName = generator .ImportedName (this);
24284
+ const importedName = generator .ImportedName (this .getInstance ());
24299
24285
 
24300
24286
  generator .openTag ("IMPORT");
24301
24287
  generator .attribute ("inlineDEF", generator .Name (this .getInlineNode ()));
@@ -24317,12 +24303,12 @@ Object .assign (Object .setPrototypeOf (X3DImportedNode .prototype, Base_X3DObje
24317
24303
  generator .TidyBreak ();
24318
24304
  generator .Indent ();
24319
24305
 
24320
- generator .AddRouteNode (this);
24306
+ generator .AddRouteNode (this .getInstance ());
24321
24307
  generator .beginObject ("IMPORT", false, true);
24322
24308
  generator .stringProperty ("@inlineDEF", generator .Name (this .getInlineNode ()), false);
24323
24309
  generator .stringProperty ("@importedDEF", this .getExportedName ());
24324
24310
 
24325
- const importedName = generator .ImportedName (this);
24311
+ const importedName = generator .ImportedName (this .getInstance ());
24326
24312
 
24327
24313
  if (importedName !== this .getExportedName ())
24328
24314
  generator .stringProperty ("@AS", importedName);
@@ -24335,20 +24321,9 @@ Object .assign (Object .setPrototypeOf (X3DImportedNode .prototype, Base_X3DObje
24335
24321
  },
24336
24322
  dispose ()
24337
24323
  {
24338
- for (const route of Array .from (this [X3DImportedNode_executionContext] .getRoutes ()))
24339
- {
24340
- if (route .getSourceNode () === this)
24341
- {
24342
- this [X3DImportedNode_executionContext] .deleteRoute (route);
24343
- continue;
24344
- }
24324
+ this [X3DImportedNode_executionContext] .removeImportedNode (this [_importedName]);
24345
24325
 
24346
- if (route .getDestinationNode () === this)
24347
- {
24348
- this [X3DImportedNode_executionContext] .deleteRoute (route);
24349
- continue;
24350
- }
24351
- }
24326
+ this .instance .dispose ();
24352
24327
 
24353
24328
  Base_X3DObject .prototype .dispose .call (this);
24354
24329
  },
@@ -24385,6 +24360,14 @@ Object .defineProperties (X3DImportedNode .prototype,
24385
24360
  get: X3DImportedNode .prototype .getImportedName,
24386
24361
  enumerable: true,
24387
24362
  },
24363
+ instance:
24364
+ {
24365
+ get ()
24366
+ {
24367
+ return Fields_SFNodeCache .get (this .getInstance ());
24368
+ },
24369
+ enumerable: true,
24370
+ },
24388
24371
  description:
24389
24372
  {
24390
24373
  get: X3DImportedNode .prototype .getDescription,
@@ -24746,11 +24729,14 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
24746
24729
 
24747
24730
  this .set_live__ ();
24748
24731
 
24749
- this .importExternProtos (proto .getBody () .externprotos);
24750
- this .importProtos (proto .getBody () .protos);
24751
- this .copyRootNodes (proto .getBody () .rootNodes);
24752
- this .importImportedNodes (proto .getBody () .importedNodes);
24753
- this .copyRoutes (proto .getBody () .routes);
24732
+ const protoBody = proto .getBody ();
24733
+
24734
+ this .addExternProtos (protoBody .externprotos);
24735
+ this .addProtos (protoBody .protos);
24736
+ this .copyNamedNodes (protoBody .namedNodes);
24737
+ this .copyImportedNodes (protoBody .importedNodes);
24738
+ this .copyRootNodes (protoBody .rootNodes);
24739
+ this .copyRoutes (protoBody .routes);
24754
24740
 
24755
24741
  // Propagate events.
24756
24742
 
@@ -25010,20 +24996,25 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
25010
24996
 
25011
24997
  return Core_X3DNode .prototype .isDefaultValue .call (this, field);
25012
24998
  },
25013
- importExternProtos (externprotos1)
24999
+ addExternProtos (externprotos1)
25014
25000
  {
25015
25001
  const externprotos2 = this [_body] .externprotos;
25016
25002
 
25017
25003
  for (const externproto of externprotos1)
25018
25004
  externprotos2 .add (externproto .getName (), externproto);
25019
25005
  },
25020
- importProtos (protos1)
25006
+ addProtos (protos1)
25021
25007
  {
25022
25008
  const protos2 = this [_body] .protos;
25023
25009
 
25024
25010
  for (const proto of protos1)
25025
25011
  protos2 .add (proto .getName (), proto);
25026
25012
  },
25013
+ copyNamedNodes (namedNodes)
25014
+ {
25015
+ for (const node of namedNodes)
25016
+ node .copy (this);
25017
+ },
25027
25018
  copyRootNodes (rootNodes1)
25028
25019
  {
25029
25020
  const rootNodes2 = this [_body] .getRootNodes ();
@@ -25031,15 +25022,17 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
25031
25022
  for (const node of rootNodes1 .getValue ())
25032
25023
  rootNodes2 .push (node .copy (this));
25033
25024
  },
25034
- importImportedNodes (importedNodes)
25025
+ copyImportedNodes (importedNodes)
25035
25026
  {
25027
+ const body = this [_body];
25028
+
25036
25029
  for (const importedNode of importedNodes)
25037
25030
  {
25038
25031
  try
25039
25032
  {
25040
- const inlineNode = this [_body] .getNamedNode (importedNode .getInlineNode () .getName ());
25033
+ const inlineNode = body .getNamedNode (importedNode .getInlineNode () .getName ());
25041
25034
 
25042
- this [_body] .addImportedNode (inlineNode, importedNode .getExportedName (), importedNode .getImportedName ());
25035
+ body .addImportedNode (inlineNode, importedNode .getExportedName (), importedNode .getImportedName ());
25043
25036
  }
25044
25037
  catch (error)
25045
25038
  {
@@ -25049,19 +25042,17 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
25049
25042
  },
25050
25043
  copyRoutes (routes)
25051
25044
  {
25045
+ const body = this [_body];
25046
+
25052
25047
  for (const route of routes)
25053
25048
  {
25054
25049
  try
25055
25050
  {
25056
- const sourceNode = route .getSourceNode () instanceof Core_X3DNode
25057
- ? this [_body] .getLocalNode (route .getSourceNode () .getName ())
25058
- : this [_body] .getLocalNode (route .getSourceNode () .getImportedName ());
25059
-
25060
- const destinationNode = route .getDestinationNode () instanceof Core_X3DNode
25061
- ? this [_body] .getLocalNode (route .getDestinationNode () .getName ())
25062
- : this [_body] .getLocalNode (route .getDestinationNode () .getImportedName ());
25051
+ const
25052
+ sourceNode = body .getLocalNode (route .getSourceNode () .getName ()),
25053
+ destinationNode = body .getLocalNode (route .getDestinationNode () .getName ());
25063
25054
 
25064
- this [_body] .addRoute (sourceNode, route .sourceField, destinationNode, route .destinationField);
25055
+ body .addRoute (sourceNode, route .sourceField, destinationNode, route .destinationField);
25065
25056
  }
25066
25057
  catch (error)
25067
25058
  {
@@ -26013,6 +26004,11 @@ Object .assign (X3DParser .prototype,
26013
26004
 
26014
26005
  return values;
26015
26006
  },
26007
+ checkColorName (color, name)
26008
+ {
26009
+ if (color .every (v => v === 1) && name .toLowerCase () !== "white" && name .match (/^[a-zA-Z]+$/))
26010
+ throw new Error ("Invalid color name.");
26011
+ },
26016
26012
  sanitizeName (name = "")
26017
26013
  {
26018
26014
  // NonIdFirstChar
@@ -26216,7 +26212,7 @@ class Placeholder extends Core_X3DNode
26216
26212
  localNode = this .#namedNodes .get (name) ?? this .#importedNodes .get (name);
26217
26213
 
26218
26214
  const node = localNode instanceof Execution_X3DImportedNode
26219
- ? localNode .getExportedNode (this .#type)
26215
+ ? localNode .getInstance ()
26220
26216
  : localNode;
26221
26217
 
26222
26218
  if (node)
@@ -26326,7 +26322,7 @@ const Grammar = Parser_Expressions ({
26326
26322
 
26327
26323
  // Values
26328
26324
  int32: /(?:0[xX][\da-fA-F]+)|(?:[+-]?\d+)/y,
26329
- double: /[+-]?(?:(?:(?:\d*\.\d+)|(?:\d+(?:\.)?))(?:[eE][+-]?\d+)?)/y,
26325
+ double: /(?!0[xX])[+-]?(?:(?:(?:\d*\.\d+)|(?:\d+(?:\.)?))(?:[eE][+-]?\d+)?)/y,
26330
26326
  doubleQuotes: /"/y,
26331
26327
  noDoubleQuotes: /[^"]+/y,
26332
26328
 
@@ -26428,6 +26424,9 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
26428
26424
  }
26429
26425
  catch (error)
26430
26426
  {
26427
+ if (DEVELOPMENT)
26428
+ console .error (error);
26429
+
26431
26430
  throw new Error (this .getError (error), { cause: error });
26432
26431
  }
26433
26432
  },
@@ -26581,6 +26580,9 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
26581
26580
  }
26582
26581
  catch (error)
26583
26582
  {
26583
+ if (DEVELOPMENT)
26584
+ console .error (error);
26585
+
26584
26586
  throw new Error (this .getError (error), { cause: error });
26585
26587
  }
26586
26588
  })
@@ -26935,11 +26937,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
26935
26937
 
26936
26938
  try
26937
26939
  {
26938
- const localNode = this .getExecutionContext () .getLocalNode (nodeNameId);
26939
-
26940
- return localNode instanceof Execution_X3DImportedNode
26941
- ? localNode .getExportedNode ()
26942
- : localNode .getValue ();
26940
+ return this .getExecutionContext () .getLocalNode (nodeNameId) .getValue ();
26943
26941
  }
26944
26942
  catch
26945
26943
  {
@@ -27980,7 +27978,9 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
27980
27978
 
27981
27979
  if (Grammar .HTMLColor .parse (this))
27982
27980
  {
27983
- const color = this .convertColor (this .result [0] .replace (/0x/i, "#"));
27981
+ const color = this .convertColor (this .result [0] .replace (/^0x/i, "#"));
27982
+
27983
+ this .checkColorName (color, this .result [0]);
27984
27984
 
27985
27985
  field .r = color [0];
27986
27986
  field .g = color [1];
@@ -28013,12 +28013,28 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
28013
28013
 
28014
28014
  return false;
28015
28015
  },
28016
+ sfColor: new x_ite_Fields .SFColor (),
28016
28017
  sfcolorValues (field)
28017
28018
  {
28018
28019
  const array = [ ];
28019
28020
 
28020
- while (this .double ())
28021
- array .push (this .value);
28021
+ for (;;)
28022
+ {
28023
+ if (this .double ())
28024
+ {
28025
+ array .push (this .value);
28026
+ continue;
28027
+ }
28028
+
28029
+ // Try parse HTML/CSS color values.
28030
+ if (this .sfcolorValue (this .sfColor))
28031
+ {
28032
+ array .push (... this .sfColor);
28033
+ continue;
28034
+ }
28035
+
28036
+ break;
28037
+ }
28022
28038
 
28023
28039
  field .setValue (array);
28024
28040
 
@@ -28061,7 +28077,9 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
28061
28077
 
28062
28078
  if (Grammar .HTMLColor .parse (this))
28063
28079
  {
28064
- const color = this .convertColor (this .result [0] .replace (/0x/i, "#"));
28080
+ const color = this .convertColor (this .result [0] .replace (/^0x/i, "#"));
28081
+
28082
+ this .checkColorName (color, this .result [0]);
28065
28083
 
28066
28084
  field .r = color [0];
28067
28085
  field .g = color [1];
@@ -28085,7 +28103,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
28085
28103
 
28086
28104
  if (Grammar .OpenBracket .parse (this))
28087
28105
  {
28088
- this .sfcolorValues (field);
28106
+ this .sfcolorrgbaValues (field);
28089
28107
 
28090
28108
  if (Grammar .CloseBracket .parse (this))
28091
28109
  return true;
@@ -28095,6 +28113,33 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
28095
28113
 
28096
28114
  return false;
28097
28115
  },
28116
+ sfColorRGBA: new x_ite_Fields .SFColorRGBA (),
28117
+ sfcolorrgbaValues (field)
28118
+ {
28119
+ const array = [ ];
28120
+
28121
+ for (;;)
28122
+ {
28123
+ if (this .double ())
28124
+ {
28125
+ array .push (this .value);
28126
+ continue;
28127
+ }
28128
+
28129
+ // Try parse HTML/CSS color values.
28130
+ if (this .sfcolorrgbaValue (this .sfColorRGBA))
28131
+ {
28132
+ array .push (... this .sfColorRGBA);
28133
+ continue;
28134
+ }
28135
+
28136
+ break;
28137
+ }
28138
+
28139
+ field .setValue (array);
28140
+
28141
+ return field .length !== 0;
28142
+ },
28098
28143
  sfdoubleValue (field)
28099
28144
  {
28100
28145
  if (this .double ())
@@ -29865,11 +29910,7 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
29865
29910
 
29866
29911
  try
29867
29912
  {
29868
- const localNode = this .getExecutionContext () .getLocalNode (name);
29869
-
29870
- const node = localNode instanceof Execution_X3DImportedNode
29871
- ? localNode .getExportedNode (type)
29872
- : localNode .getValue ();
29913
+ const node = this .getExecutionContext () .getLocalNode (name) .getValue ();
29873
29914
 
29874
29915
  this .checkNodeType (node, name, type, typeName);
29875
29916
  this .addNode (xmlElement, node);
@@ -29898,6 +29939,9 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
29898
29939
  },
29899
29940
  checkNodeType (node, name, type, typeName)
29900
29941
  {
29942
+ if (node instanceof Core_X3DImportedNodeInstance)
29943
+ return;
29944
+
29901
29945
  if (type === Core_X3DNode)
29902
29946
  return;
29903
29947
 
@@ -31172,7 +31216,7 @@ const Plane3_default_ = Plane3;
31172
31216
 
31173
31217
  /* harmony default export */ const Geometry_Plane3 = (x_ite_Namespace .add ("Plane3", Plane3_default_));
31174
31218
  ;// ./src/standard/Math/Geometry/Triangle3.js
31175
- /* provided dependency */ var libtess = __webpack_require__(628);
31219
+ /* provided dependency */ var libtess = __webpack_require__(617);
31176
31220
 
31177
31221
 
31178
31222
  const Triangle3 =
@@ -37866,7 +37910,7 @@ Object .assign (Object .setPrototypeOf (ImageTexture .prototype, Texturing_X3DTe
37866
37910
  {
37867
37911
  fileURL = new URL (fileURL);
37868
37912
 
37869
- if (fileURL .pathname .match (/\.ktx2?(?:\.gz)?$/) || fileURL .href .match (/^\s*data:image\/ktx2[;,]/s))
37913
+ if (fileURL .pathname .match (/\.ktx2?(?:\.gz)?$/) || fileURL .href .match (/^\s*data:image\/ktx2[;,]/))
37870
37914
  {
37871
37915
  this .setLinear (true);
37872
37916
  this .setMipMaps (false);
@@ -42756,10 +42800,14 @@ function eventsProcessed ()
42756
42800
  {
42757
42801
  if (childNode .getType () .at (-1) !== Base_X3DConstants .HAnimJoint)
42758
42802
  {
42759
- const segmentNode = scene .createNode ("HAnimSegment", false);
42803
+ const
42804
+ siteNode = scene .createNode ("HAnimSite", false),
42805
+ segmentNode = scene .createNode ("HAnimSegment", false);
42760
42806
 
42761
- segmentNode ._children .push (childNode);
42807
+ siteNode ._children .push (childNode);
42808
+ segmentNode ._children .push (siteNode);
42762
42809
 
42810
+ siteNode .setup ();
42763
42811
  segmentNode .setup ();
42764
42812
 
42765
42813
  return segmentNode;
@@ -47894,7 +47942,7 @@ const Bezier_default_ = Bezier;
47894
47942
 
47895
47943
  /* harmony default export */ const Algorithms_Bezier = (x_ite_Namespace .add ("Bezier", Bezier_default_));
47896
47944
  ;// ./src/x_ite/Parser/SVGParser.js
47897
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(628);
47945
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(617);
47898
47946
 
47899
47947
 
47900
47948
 
@@ -50753,9 +50801,15 @@ class GoldenGate extends Parser_X3DParser
50753
50801
  if (string === undefined)
50754
50802
  return;
50755
50803
 
50756
- if (string .match (/^\s*$/s))
50804
+ // An empty string should result in an empty XML (encoding) scene.
50805
+ if (string .match (/^\s*$/))
50757
50806
  return "";
50758
50807
 
50808
+ // XML must start with markup. Do not try DOMParser on other input, because
50809
+ // some browsers (Firefox) log a parsing error to the console when it fails.
50810
+ if (!string .match (/^\s*</))
50811
+ return;
50812
+
50759
50813
  return helper.parseXML (string);
50760
50814
  }
50761
50815
  case "JSON":
@@ -51176,9 +51230,6 @@ class FileLoader
51176
51230
  {
51177
51231
  const scene = new Execution_X3DScene (this .browser);
51178
51232
 
51179
- if (!(this .node instanceof Execution_X3DWorld))
51180
- scene .setExecutionContext (this .executionContext);
51181
-
51182
51233
  scene .setWorldURL (new URL (worldURL, this .getBaseURL ()));
51183
51234
  scene .setup ();
51184
51235
 
@@ -51283,7 +51334,7 @@ class FileLoader
51283
51334
 
51284
51335
  // Script:
51285
51336
  {
51286
- const result = url .match (/^\s*(?:ecmascript|javascript|vrmlscript):/s);
51337
+ const result = url .match (/^\s*(?:ecmascript|javascript|vrmlscript):/);
51287
51338
 
51288
51339
  if (result)
51289
51340
  return await this .dataCallback (url .substring (result [0] .length));
@@ -51294,7 +51345,7 @@ class FileLoader
51294
51345
  // Handle data URLs that are not base64 decoded here:
51295
51346
  if (this .dataAsString)
51296
51347
  {
51297
- const result = url .match (/^\s*data:(.*?)(?:;charset=(.*?))?(?:;(base64))?,/s);
51348
+ const result = url .match (/^\s*data:(.*?)(?:;charset=(.*?))?(?:;(base64))?,/);
51298
51349
 
51299
51350
  if (result && result [3] !== "base64")
51300
51351
  {
@@ -51922,8 +51973,6 @@ const ProtoDeclarationArray_default_ = ProtoDeclarationArray;
51922
51973
 
51923
51974
 
51924
51975
 
51925
-
51926
-
51927
51976
  const
51928
51977
  X3DRoute_executionContext = Symbol (),
51929
51978
  _sourceNode = Symbol (),
@@ -51931,8 +51980,7 @@ const
51931
51980
  _sourceField = Symbol (),
51932
51981
  _destinationNode = Symbol (),
51933
51982
  _destinationFieldName = Symbol (),
51934
- _destinationField = Symbol (),
51935
- _disposed = Symbol ();
51983
+ _destinationField = Symbol ();
51936
51984
 
51937
51985
  function X3DRoute (executionContext, sourceNode, sourceFieldName, destinationNode, destinationFieldName)
51938
51986
  {
@@ -51944,11 +51992,11 @@ function X3DRoute (executionContext, sourceNode, sourceFieldName, destinationNod
51944
51992
  this [_destinationNode] = destinationNode;
51945
51993
  this [_destinationFieldName] = destinationFieldName;
51946
51994
 
51947
- if (sourceNode instanceof Execution_X3DImportedNode)
51948
- sourceNode .getInlineNode () ._loadState .addInterest ("reconnect", this);
51995
+ if (sourceNode instanceof Core_X3DImportedNodeInstance)
51996
+ sourceNode .getImportedNode () .getInlineNode () ._loadState .addInterest ("reconnect", this);
51949
51997
 
51950
- if (destinationNode instanceof Execution_X3DImportedNode)
51951
- destinationNode .getInlineNode () ._loadState .addInterest ("reconnect", this);
51998
+ if (destinationNode instanceof Core_X3DImportedNodeInstance)
51999
+ destinationNode .getImportedNode () .getInlineNode () ._loadState .addInterest ("reconnect", this);
51952
52000
 
51953
52001
  this .reconnect ();
51954
52002
  }
@@ -51959,17 +52007,8 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
51959
52007
  {
51960
52008
  return this [X3DRoute_executionContext];
51961
52009
  },
51962
- getRouteId ()
51963
- {
51964
- return X3DRoute .getRouteId (this [_sourceNode], this [_sourceFieldName], this [_destinationNode], this [_destinationFieldName]);
51965
- },
51966
52010
  getSourceNode ()
51967
52011
  {
51968
- /// SAI
51969
-
51970
- if (this [_sourceNode] instanceof Execution_X3DImportedNode)
51971
- return this [_sourceNode] .getExportedNode ();
51972
-
51973
52012
  return this [_sourceNode];
51974
52013
  },
51975
52014
  getSourceField ()
@@ -51990,11 +52029,6 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
51990
52029
  },
51991
52030
  getDestinationNode ()
51992
52031
  {
51993
- /// SAI
51994
-
51995
- if (this [_destinationNode] instanceof Execution_X3DImportedNode)
51996
- return this [_destinationNode] .getExportedNode ();
51997
-
51998
52032
  return this [_destinationNode];
51999
52033
  },
52000
52034
  getDestinationField ()
@@ -52021,10 +52055,10 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52021
52055
  }
52022
52056
  catch (error)
52023
52057
  {
52024
- if ((this [_sourceNode] instanceof Core_X3DNode ||
52025
- this [_sourceNode] .getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE) &&
52026
- (this [_destinationNode] instanceof Core_X3DNode ||
52027
- this [_destinationNode] .getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE))
52058
+ if ((!(this [_sourceNode] instanceof Core_X3DImportedNodeInstance) ||
52059
+ this [_sourceNode] .getImportedNode () .getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE) &&
52060
+ (!(this [_destinationNode] instanceof Core_X3DImportedNodeInstance) ||
52061
+ this [_destinationNode] .getImportedNode () .getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE))
52028
52062
  {
52029
52063
  console .warn (error);
52030
52064
  }
@@ -52032,18 +52066,11 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52032
52066
  },
52033
52067
  connect ()
52034
52068
  {
52035
- if (this [_disposed])
52036
- return;
52037
-
52038
52069
  const errors = [ ];
52039
52070
 
52040
52071
  try
52041
52072
  {
52042
- const sourceNode = this [_sourceNode] instanceof Core_X3DNode
52043
- ? this [_sourceNode]
52044
- : this [_sourceNode] .getExportedNode ();
52045
-
52046
- this [_sourceField] = sourceNode .getField (this [_sourceFieldName]);
52073
+ this [_sourceField] = this [_sourceNode] .getField (this [_sourceFieldName]);
52047
52074
  }
52048
52075
  catch (error)
52049
52076
  {
@@ -52052,11 +52079,7 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52052
52079
 
52053
52080
  try
52054
52081
  {
52055
- const destinationNode = this [_destinationNode] instanceof Core_X3DNode
52056
- ? this [_destinationNode]
52057
- : this [_destinationNode] .getExportedNode ();
52058
-
52059
- this [_destinationField] = destinationNode .getField (this [_destinationFieldName]);
52082
+ this [_destinationField] = this [_destinationNode] .getField (this [_destinationFieldName]);
52060
52083
  }
52061
52084
  catch (error)
52062
52085
  {
@@ -52095,13 +52118,13 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52095
52118
  if (!generator .ExistsRouteNode (this [_destinationNode]))
52096
52119
  throw new Error (`Destination node does not exist in scene graph.`);
52097
52120
 
52098
- const sourceNodeName = this [_sourceNode] instanceof Core_X3DNode
52099
- ? generator .Name (this [_sourceNode])
52100
- : generator .ImportedName (this [_sourceNode]);
52121
+ const sourceNodeName = this [_sourceNode] instanceof Core_X3DImportedNodeInstance
52122
+ ? generator .ImportedName (this [_sourceNode])
52123
+ : generator .Name (this [_sourceNode]);
52101
52124
 
52102
- const destinationNodeName = this [_destinationNode] instanceof Core_X3DNode
52103
- ? generator .Name (this [_destinationNode])
52104
- : generator .ImportedName (this [_destinationNode]);
52125
+ const destinationNodeName = this [_destinationNode] instanceof Core_X3DImportedNodeInstance
52126
+ ? generator .ImportedName (this [_destinationNode])
52127
+ : generator .Name (this [_destinationNode]);
52105
52128
 
52106
52129
  generator .Indent ();
52107
52130
  generator .string += "ROUTE";
@@ -52124,13 +52147,13 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52124
52147
  if (!generator .ExistsRouteNode (this [_destinationNode]))
52125
52148
  throw new Error (`Destination node does not exist in scene graph.`);
52126
52149
 
52127
- const sourceNodeName = this [_sourceNode] instanceof Core_X3DNode
52128
- ? generator .Name (this [_sourceNode])
52129
- : generator .ImportedName (this [_sourceNode]);
52150
+ const sourceNodeName = this [_sourceNode] instanceof Core_X3DImportedNodeInstance
52151
+ ? generator .ImportedName (this [_sourceNode])
52152
+ : generator .Name (this [_sourceNode]);
52130
52153
 
52131
- const destinationNodeName = this [_destinationNode] instanceof Core_X3DNode
52132
- ? generator .Name (this [_destinationNode])
52133
- : generator .ImportedName (this [_destinationNode]);
52154
+ const destinationNodeName = this [_destinationNode] instanceof Core_X3DImportedNodeInstance
52155
+ ? generator .ImportedName (this [_destinationNode])
52156
+ : generator .Name (this [_destinationNode]);
52134
52157
 
52135
52158
  generator .openTag ("ROUTE");
52136
52159
  generator .attribute ("fromNode", sourceNodeName);
@@ -52147,13 +52170,13 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52147
52170
  if (!generator .ExistsRouteNode (this [_destinationNode]))
52148
52171
  throw new Error (`Destination node does not exist in scene graph.`);
52149
52172
 
52150
- const sourceNodeName = this [_sourceNode] instanceof Core_X3DNode
52151
- ? generator .Name (this [_sourceNode])
52152
- : generator .ImportedName (this [_sourceNode]);
52173
+ const sourceNodeName = this [_sourceNode] instanceof Core_X3DImportedNodeInstance
52174
+ ? generator .ImportedName (this [_sourceNode])
52175
+ : generator .Name (this [_sourceNode]);
52153
52176
 
52154
- const destinationNodeName = this [_destinationNode] instanceof Core_X3DNode
52155
- ? generator .Name (this [_destinationNode])
52156
- : generator .ImportedName (this [_destinationNode]);
52177
+ const destinationNodeName = this [_destinationNode] instanceof Core_X3DImportedNodeInstance
52178
+ ? generator .ImportedName (this [_destinationNode])
52179
+ : generator .Name (this [_destinationNode]);
52157
52180
 
52158
52181
  generator .TidyBreak ();
52159
52182
  generator .Indent ();
@@ -52170,18 +52193,13 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52170
52193
  },
52171
52194
  dispose ()
52172
52195
  {
52173
- if (this [_disposed])
52174
- return;
52175
-
52176
- this [_disposed] = true;
52177
-
52178
52196
  this .disconnect ();
52179
52197
 
52180
- if (this [_sourceNode] instanceof Execution_X3DImportedNode)
52181
- this [_sourceNode] .getInlineNode () ._loadState .removeInterest ("reconnect", this);
52198
+ if (this [_sourceNode] instanceof Core_X3DImportedNodeInstance)
52199
+ this [_sourceNode] .getImportedNode () .getInlineNode () ._loadState .removeInterest ("reconnect", this);
52182
52200
 
52183
- if (this [_destinationNode] instanceof Execution_X3DImportedNode)
52184
- this [_destinationNode] .getInlineNode () ._loadState .removeInterest ("reconnect", this);
52201
+ if (this [_destinationNode] instanceof Core_X3DImportedNodeInstance)
52202
+ this [_destinationNode] .getImportedNode () .getInlineNode () ._loadState .removeInterest ("reconnect", this);
52185
52203
 
52186
52204
  this [X3DRoute_executionContext] .deleteRoute (this);
52187
52205
 
@@ -52233,36 +52251,6 @@ Object .defineProperties (X3DRoute,
52233
52251
 
52234
52252
  Object .assign (X3DRoute,
52235
52253
  {
52236
- getRouteId (sourceNode, sourceFieldName, destinationNode, destinationFieldName)
52237
- {
52238
- const sourceField = sourceNode instanceof Core_X3DNode
52239
- ? sourceNode .getField (sourceFieldName)
52240
- : helper.try (() => sourceNode .getExportedNode () .getField (sourceFieldName));
52241
-
52242
- const destinationField = destinationNode instanceof Core_X3DNode
52243
- ? destinationNode .getField (destinationFieldName)
52244
- : helper.try (() => destinationNode .getExportedNode () .getField (destinationFieldName));
52245
-
52246
- X3DRoute .checkFields (sourceField, destinationField);
52247
-
52248
- if (sourceField)
52249
- {
52250
- sourceFieldName = sourceField .getName ();
52251
-
52252
- if (sourceField .getAccessType () === Base_X3DConstants .inputOutput)
52253
- sourceFieldName += "_changed";
52254
- }
52255
-
52256
- if (destinationField)
52257
- {
52258
- destinationFieldName = destinationField .getName ();
52259
-
52260
- if (destinationField .getAccessType () === Base_X3DConstants .inputOutput)
52261
- destinationFieldName = "set_" + destinationFieldName;
52262
- }
52263
-
52264
- return `${sourceNode .getId ()}.${sourceFieldName}.${destinationNode .getId ()}.${destinationFieldName}`;
52265
- },
52266
52254
  checkFields (sourceField, destinationField)
52267
52255
  {
52268
52256
  if (sourceField && destinationField)
@@ -52335,6 +52323,7 @@ const RouteArray_default_ = RouteArray;
52335
52323
 
52336
52324
 
52337
52325
 
52326
+
52338
52327
  const
52339
52328
  _outerNode = Symbol (),
52340
52329
  _namedNodes = Symbol (),
@@ -52543,10 +52532,13 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52543
52532
  if (!node)
52544
52533
  throw new Error ("Couldn't add named node: node must be of type X3DNode.");
52545
52534
 
52535
+ if (node instanceof Core_X3DImportedNodeInstance)
52536
+ throw new Error ("Couldn't add named node: node cannot be of type X3DImportedNodeInstance.");
52537
+
52546
52538
  if (node .getExecutionContext () !== this)
52547
52539
  throw new Error ("Couldn't add named node: node does not belong to this execution context.");
52548
52540
 
52549
- if (name .length === 0)
52541
+ if (!name)
52550
52542
  throw new Error ("Couldn't add named node: node name is empty.");
52551
52543
 
52552
52544
  if (this [_namedNodes] .has (name))
@@ -52569,10 +52561,13 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52569
52561
  if (!node)
52570
52562
  throw new Error ("Couldn't update named node: node must be of type X3DNode.");
52571
52563
 
52564
+ if (node instanceof Core_X3DImportedNodeInstance)
52565
+ throw new Error ("Couldn't add named node: node cannot be of type X3DImportedNodeInstance.");
52566
+
52572
52567
  if (node .getExecutionContext () !== this)
52573
52568
  throw new Error ("Couldn't update named node: node does not belong to this execution context.");
52574
52569
 
52575
- if (name .length === 0)
52570
+ if (!name)
52576
52571
  throw new Error ("Couldn't update named node: node name is empty.");
52577
52572
 
52578
52573
  // Remove named node.
@@ -52641,10 +52636,10 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52641
52636
  if (inlineNode .getExecutionContext () !== this)
52642
52637
  throw new Error ("Couldn't update imported node: Inline node does not belong to this execution context.");
52643
52638
 
52644
- if (exportedName .length === 0)
52639
+ if (!exportedName)
52645
52640
  throw new Error ("Couldn't update imported node: exported name is empty.");
52646
52641
 
52647
- if (importedName .length === 0)
52642
+ if (!importedName)
52648
52643
  throw new Error ("Couldn't update imported node: imported name is empty.");
52649
52644
 
52650
52645
  // Update imported node.
@@ -52655,8 +52650,6 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52655
52650
 
52656
52651
  this [_importedNodes] .add (importedName, importedNode);
52657
52652
 
52658
- importedNode .updateExportedNode ();
52659
-
52660
52653
  this ._sceneGraph_changed = Date .now () / 1000;
52661
52654
  },
52662
52655
  renameImportedNode (oldImportedName, newImportedName)
@@ -52669,7 +52662,7 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52669
52662
  if (this [_importedNodes] .get (newImportedName))
52670
52663
  throw new Error ("Couldn't rename imported node: new imported name does already exists.");
52671
52664
 
52672
- importedNode [Symbol .for ("X_ITE.X3DImportedNode.setImportName")] (newImportedName);
52665
+ importedNode .setImportName (newImportedName);
52673
52666
 
52674
52667
  this [_importedNodes] .update (oldImportedName, newImportedName, importedNode);
52675
52668
 
@@ -52684,10 +52677,10 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52684
52677
  if (!importedNode)
52685
52678
  return;
52686
52679
 
52687
- importedNode .dispose ();
52688
-
52689
52680
  this [_importedNodes] .remove (importedName);
52690
52681
 
52682
+ importedNode .dispose ();
52683
+
52691
52684
  this ._sceneGraph_changed = Date .now () / 1000;
52692
52685
  },
52693
52686
  getImportedNode (importedName)
@@ -52697,7 +52690,7 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52697
52690
  const importedNode = this [_importedNodes] .get (importedName);
52698
52691
 
52699
52692
  if (importedNode)
52700
- return importedNode .exportedNode;
52693
+ return importedNode .instance;
52701
52694
 
52702
52695
  throw new Error (`Imported node '${importedName}' not found.`);
52703
52696
  },
@@ -52722,7 +52715,7 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52722
52715
  const importedNode = this [_importedNodes] .get (name);
52723
52716
 
52724
52717
  if (importedNode)
52725
- return importedNode;
52718
+ return importedNode .instance;
52726
52719
 
52727
52720
  throw new Error (`Unknown named or imported node '${name}'.`);
52728
52721
  }
@@ -52732,28 +52725,19 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52732
52725
  * @param {SFNode|X3DNode|X3DImportedNode} node
52733
52726
  * @returns either an X3DImportedNode if possible or X3DNode
52734
52727
  */
52735
- getLocalizedNode (node)
52728
+ getNodeOrImportedNode (node)
52736
52729
  {
52737
- node = Base_X3DCast (Base_X3DConstants .X3DNode, node, false)
52738
- ?? (node instanceof Execution_X3DImportedNode ? node : null);
52730
+ node = Base_X3DCast (Base_X3DConstants .X3DNode, node, false);
52739
52731
 
52740
52732
  if (!node)
52741
52733
  throw new Error ("Couldn't get localized node: node must be of type X3DNode.");
52742
52734
 
52743
- if (node .getExecutionContext () === this)
52744
- {
52745
- if (node instanceof Core_X3DImportedNodeProxy)
52746
- return node .getImportedNode ();
52747
-
52748
- return node;
52749
- }
52750
-
52751
52735
  for (const importedNode of this [_importedNodes])
52752
52736
  {
52753
52737
  try
52754
52738
  {
52755
- if (importedNode .getSharedNode () === node)
52756
- return importedNode;
52739
+ if (importedNode .getExportedNode () === node)
52740
+ return importedNode .getInstance ();
52757
52741
  }
52758
52742
  catch
52759
52743
  { }
@@ -52794,7 +52778,7 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52794
52778
  if (this [_protos] .get (proto .getName ()) === proto)
52795
52779
  throw new Error (`Couldn't add proto declaration: proto '${proto .getName ()}' already added.`);
52796
52780
 
52797
- if (name .length === 0)
52781
+ if (!name)
52798
52782
  throw new Error ("Couldn't add proto declaration: proto name is empty.");
52799
52783
 
52800
52784
  if (this [_externprotos] .has (name))
@@ -52818,7 +52802,7 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52818
52802
  if (proto .getExecutionContext () !== this)
52819
52803
  throw new Error ("Couldn't update proto declaration: proto does not belong to this execution context.");
52820
52804
 
52821
- if (name .length === 0)
52805
+ if (!name)
52822
52806
  throw new Error ("Couldn't update proto declaration: proto name is empty.");
52823
52807
 
52824
52808
  if (this [_externprotos] .has (name))
@@ -52875,7 +52859,7 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52875
52859
  if (this [_externprotos] .get (externproto .getName ()) === externproto)
52876
52860
  throw new Error (`Couldn't add extern proto declaration: extern proto '${externproto .getName ()}' already added.`);
52877
52861
 
52878
- if (name .length === 0)
52862
+ if (!name)
52879
52863
  throw new Error ("Couldn't add extern proto declaration: extern proto name is empty.");
52880
52864
 
52881
52865
  if (this [_protos] .has (name))
@@ -52899,7 +52883,7 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52899
52883
  if (externproto .getExecutionContext () !== this)
52900
52884
  throw new Error ("Couldn't update extern proto declaration: extern proto does not belong to this execution context.");
52901
52885
 
52902
- if (name .length === 0)
52886
+ if (!name)
52903
52887
  throw new Error ("Couldn't update extern proto declaration: extern proto name is empty.");
52904
52888
 
52905
52889
  if (this [_protos] .has (name))
@@ -52933,13 +52917,9 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52933
52917
  {
52934
52918
  // Normalize arguments.
52935
52919
 
52936
- const
52937
- importedSourceNode = sourceNode instanceof Execution_X3DImportedNode ? sourceNode : null,
52938
- importedDestinationNode = destinationNode instanceof Execution_X3DImportedNode ? destinationNode : null;
52939
-
52940
- sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false) ?? importedSourceNode;
52920
+ sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false);
52941
52921
  sourceField = String (sourceField);
52942
- destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false) ?? importedDestinationNode;
52922
+ destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false);
52943
52923
  destinationField = String (destinationField);
52944
52924
 
52945
52925
  // Check nodes.
@@ -52952,14 +52932,11 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52952
52932
 
52953
52933
  // Resolve imported source and destination node.
52954
52934
 
52955
- sourceNode = this .getLocalizedNode (sourceNode);
52956
- destinationNode = this .getLocalizedNode (destinationNode);
52935
+ sourceNode = this .getNodeOrImportedNode (sourceNode);
52936
+ destinationNode = this .getNodeOrImportedNode (destinationNode);
52957
52937
 
52958
52938
  // Add route.
52959
-
52960
- const
52961
- id = Routing_X3DRoute .getRouteId (sourceNode, sourceField, destinationNode, destinationField),
52962
- route = this [_routes] .get (id);
52939
+ const route = this .getRoute (sourceNode, sourceField, destinationNode, destinationField);
52963
52940
 
52964
52941
  if (route)
52965
52942
  {
@@ -52969,7 +52946,7 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52969
52946
  {
52970
52947
  const route = new Routing_X3DRoute (this, sourceNode, sourceField, destinationNode, destinationField);
52971
52948
 
52972
- this [_routes] .add (id, route);
52949
+ this [_routes] .add (route .getId (), route);
52973
52950
 
52974
52951
  return route;
52975
52952
  }
@@ -52983,25 +52960,21 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52983
52960
  if (!(route instanceof Routing_X3DRoute))
52984
52961
  return;
52985
52962
 
52986
- if (this [_routes] .get (route .getRouteId ()) !== route)
52963
+ if (!this .routes .has (route .getId ()))
52987
52964
  return;
52988
52965
 
52989
- this [_routes] .remove (route .getRouteId ());
52966
+ this [_routes] .remove (route .getId ());
52990
52967
 
52991
52968
  route .dispose ();
52992
52969
  },
52993
- getRoute (sourceNode, sourceField, destinationNode, destinationField)
52970
+ getRoute (sourceNode, sourceFieldName, destinationNode, destinationFieldName)
52994
52971
  {
52995
52972
  // Normalize arguments.
52996
52973
 
52997
- const
52998
- importedSourceNode = sourceNode instanceof Execution_X3DImportedNode ? sourceNode : null,
52999
- importedDestinationNode = destinationNode instanceof Execution_X3DImportedNode ? destinationNode : null;
53000
-
53001
- sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false) ?? importedSourceNode;
53002
- sourceField = String (sourceField);
53003
- destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false) ?? importedDestinationNode;
53004
- destinationField = String (destinationField);
52974
+ sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false);
52975
+ sourceFieldName = String (sourceFieldName);
52976
+ destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false);
52977
+ destinationFieldName = String (destinationFieldName);
53005
52978
 
53006
52979
  // Check nodes.
53007
52980
 
@@ -53013,12 +52986,69 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
53013
52986
 
53014
52987
  // Resolve imported source and destination node.
53015
52988
 
53016
- sourceNode = this .getLocalizedNode (sourceNode);
53017
- destinationNode = this .getLocalizedNode (destinationNode);
52989
+ sourceNode = this .getNodeOrImportedNode (sourceNode);
52990
+ destinationNode = this .getNodeOrImportedNode (destinationNode);
52991
+
52992
+ // Get fields if possible.
52993
+
52994
+ const sourceField = sourceNode instanceof Core_X3DImportedNodeInstance
52995
+ ? helper.try (() => sourceNode .getField (sourceFieldName))
52996
+ : sourceNode .getField (sourceFieldName);
52997
+
52998
+ const destinationField = destinationNode instanceof Core_X3DImportedNodeInstance
52999
+ ? helper.try (() => destinationNode .getField (destinationFieldName))
53000
+ : destinationNode .getField (destinationFieldName);
53001
+
53002
+ Routing_X3DRoute .checkFields (sourceField, destinationField);
53018
53003
 
53019
53004
  // Return route.
53020
53005
 
53021
- return this [_routes] .get (Routing_X3DRoute .getRouteId (sourceNode, sourceField, destinationNode, destinationField));
53006
+ return this [_routes] .find (route =>
53007
+ {
53008
+ if (route .getSourceNode () !== sourceNode)
53009
+ return false;
53010
+
53011
+ if (route .getDestinationNode () !== destinationNode)
53012
+ return false;
53013
+
53014
+ if (sourceField)
53015
+ {
53016
+ if (helper.try (() => sourceNode .getField (route .getSourceField ())) !== sourceField)
53017
+ return false;
53018
+ }
53019
+ else
53020
+ {
53021
+ if (sourceNode instanceof Core_X3DImportedNodeInstance)
53022
+ {
53023
+ if (route .getSourceField () !== sourceFieldName)
53024
+ return false;
53025
+ }
53026
+ else
53027
+ {
53028
+ return false;
53029
+ }
53030
+ }
53031
+
53032
+ if (destinationField)
53033
+ {
53034
+ if (helper.try (() => destinationNode .getField (route .getDestinationField ())) !== destinationField)
53035
+ return false;
53036
+ }
53037
+ else
53038
+ {
53039
+ if (destinationNode instanceof Core_X3DImportedNodeInstance)
53040
+ {
53041
+ if (route .getDestinationField () !== destinationFieldName)
53042
+ return false;
53043
+ }
53044
+ else
53045
+ {
53046
+ return false;
53047
+ }
53048
+ }
53049
+
53050
+ return true;
53051
+ });
53022
53052
  },
53023
53053
  getRoutes ()
53024
53054
  {
@@ -53584,6 +53614,12 @@ Object .assign (Object .setPrototypeOf (X3DExportedNode .prototype, Base_X3DObje
53584
53614
  generator .endObject ();
53585
53615
  generator .endObject ();
53586
53616
  },
53617
+ dispose ()
53618
+ {
53619
+ this [X3DExportedNode_executionContext] .removeExportedNode (this [X3DExportedNode_exportedName]);
53620
+
53621
+ Base_X3DObject .prototype .dispose .call (this);
53622
+ },
53587
53623
  });
53588
53624
 
53589
53625
  for (const key of Object .keys (X3DExportedNode .prototype))
@@ -53674,6 +53710,7 @@ const LATEST_VERSION_default_ = "4.1";
53674
53710
 
53675
53711
 
53676
53712
 
53713
+
53677
53714
  const
53678
53715
  _specificationVersion = Symbol (),
53679
53716
  _encoding = Symbol (),
@@ -53682,7 +53719,7 @@ const
53682
53719
  _worldURL = Symbol (),
53683
53720
  _units = Symbol (),
53684
53721
  _metadata = Symbol (),
53685
- X3DScene_exportedNodes = Symbol (),
53722
+ _exportedNodes = Symbol (),
53686
53723
  _loadingObjects = Symbol ();
53687
53724
 
53688
53725
  function X3DScene (browser)
@@ -53714,12 +53751,12 @@ function X3DScene (browser)
53714
53751
  this [_units] .add ("mass", new Configuration_UnitInfo ("mass", "kilogram", 1));
53715
53752
 
53716
53753
  this [_metadata] = [ ];
53717
- this [X3DScene_exportedNodes] = new Execution_ExportedNodesArray ();
53754
+ this [_exportedNodes] = new Execution_ExportedNodesArray ();
53718
53755
  this [_loadingObjects] = new Set ();
53719
53756
 
53720
53757
  this [_components] .addParent (this);
53721
53758
  this [_units] .addParent (this);
53722
- this [X3DScene_exportedNodes] .addParent (this);
53759
+ this [_exportedNodes] .addParent (this);
53723
53760
  }
53724
53761
 
53725
53762
  Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecutionContext .prototype),
@@ -53775,7 +53812,7 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
53775
53812
  hasComponent (name, level = 0)
53776
53813
  {
53777
53814
  if (name instanceof Configuration_ComponentInfo)
53778
- var { name, level } = name;
53815
+ ({ name, level } = name);
53779
53816
 
53780
53817
  const
53781
53818
  browser = this .getBrowser (),
@@ -53946,7 +53983,7 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
53946
53983
  {
53947
53984
  exportedName = String (exportedName);
53948
53985
 
53949
- if (this [X3DScene_exportedNodes] .has (exportedName))
53986
+ if (this [_exportedNodes] .has (exportedName))
53950
53987
  throw new Error (`Couldn't add exported node: exported name '${exportedName}' already in use.`);
53951
53988
 
53952
53989
  this .updateExportedNode (exportedName, node, description);
@@ -53959,18 +53996,21 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
53959
53996
  node = Base_X3DCast (Base_X3DConstants .X3DNode, node, false);
53960
53997
  description = String (description);
53961
53998
 
53962
- if (exportedName .length === 0)
53963
- throw new Error ("Couldn't update exported node: node exported name is empty.");
53964
-
53965
53999
  if (!node)
53966
54000
  throw new Error ("Couldn't update exported node: node must be of type X3DNode.");
53967
54001
 
53968
- //if (node .getExecutionContext () !== this)
53969
- // throw new Error ("Couldn't update exported node: node does not belong to this execution context.");
54002
+ if (node instanceof Core_X3DImportedNodeInstance)
54003
+ throw new Error ("Couldn't update exported node: node cannot be of type X3DImportedNodeInstance.");
54004
+
54005
+ if (node .getExecutionContext () !== this)
54006
+ throw new Error ("Couldn't update exported node: node does not belong to this execution context.");
54007
+
54008
+ if (!exportedName)
54009
+ throw new Error ("Couldn't update exported node: node exported name is empty.");
53970
54010
 
53971
54011
  const exportedNode = new Execution_X3DExportedNode (this, exportedName, node, description);
53972
54012
 
53973
- this [X3DScene_exportedNodes] .update (exportedName, exportedName, exportedNode);
54013
+ this [_exportedNodes] .update (exportedName, exportedName, exportedNode);
53974
54014
 
53975
54015
  this ._sceneGraph_changed = Date .now () / 1000;
53976
54016
  },
@@ -53978,7 +54018,14 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
53978
54018
  {
53979
54019
  exportedName = String (exportedName);
53980
54020
 
53981
- this [X3DScene_exportedNodes] .remove (exportedName);
54021
+ const exportedNode = this [_exportedNodes] .get (exportedName);
54022
+
54023
+ if (!exportedNode)
54024
+ return;
54025
+
54026
+ this [_exportedNodes] .remove (exportedName);
54027
+
54028
+ exportedNode .dispose ();
53982
54029
 
53983
54030
  this ._sceneGraph_changed = Date .now () / 1000;
53984
54031
  },
@@ -53986,7 +54033,7 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
53986
54033
  {
53987
54034
  exportedName = String (exportedName);
53988
54035
 
53989
- const exportedNode = this [X3DScene_exportedNodes] .get (exportedName);
54036
+ const exportedNode = this [_exportedNodes] .get (exportedName);
53990
54037
 
53991
54038
  if (exportedNode)
53992
54039
  return exportedNode .localNode;
@@ -53995,15 +54042,16 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
53995
54042
  },
53996
54043
  getExportedNodes ()
53997
54044
  {
53998
- return this [X3DScene_exportedNodes];
54045
+ return this [_exportedNodes];
53999
54046
  },
54000
54047
  getUniqueExportName (name)
54001
54048
  {
54002
- return getUniqueName (this [X3DScene_exportedNodes], name);
54049
+ return getUniqueName (this [_exportedNodes], name);
54003
54050
  },
54004
54051
  addRootNode (node)
54005
54052
  {
54006
- node = Fields_SFNodeCache .get (Base_X3DCast (Base_X3DConstants .X3DNode, node, false));
54053
+ node = Base_X3DCast (Base_X3DConstants .X3DNode, node, false);
54054
+ node &&= Fields_SFNodeCache .get (node);
54007
54055
 
54008
54056
  const rootNodes = this .getRootNodes ();
54009
54057
 
@@ -54014,7 +54062,8 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
54014
54062
  },
54015
54063
  removeRootNode (node)
54016
54064
  {
54017
- node = Fields_SFNodeCache .get (Base_X3DCast (Base_X3DConstants .X3DNode, node, false));
54065
+ node = Base_X3DCast (Base_X3DConstants .X3DNode, node, false);
54066
+ node &&= Fields_SFNodeCache .get (node);
54018
54067
 
54019
54068
  const rootNodes = this .getRootNodes ();
54020
54069
 
@@ -54275,7 +54324,7 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
54275
54324
 
54276
54325
  generator .endArray ();
54277
54326
 
54278
- headLastProperty = true;
54327
+ // headLastProperty = true;
54279
54328
  }
54280
54329
 
54281
54330
  // Head end
@@ -54604,6 +54653,7 @@ Fonts_add ("PT_Sans/PTSans-Italic.woff2", false, true);
54604
54653
 
54605
54654
 
54606
54655
 
54656
+
54607
54657
  const
54608
54658
  _instanceId = Symbol (),
54609
54659
  _element = Symbol (),
@@ -54667,7 +54717,9 @@ function X3DCoreContext (element)
54667
54717
  {
54668
54718
  const link = document .createElement ("link");
54669
54719
 
54670
- link .integrity = "sha384-r+Z33c1QviLoOgodJzYHRhRIxsvRFnZVj3GbeoohZ//iR51ZK8cK/Jq4mcMi8WV6";
54720
+ if (!DEVELOPMENT)
54721
+ link .integrity = "sha384-VPxo0vBo7nOYn5iBj9X6adcmFfaP8csYQCFin8ZxqaXZgqdt2cZzgydvtXxB0JTm";
54722
+
54671
54723
  link .rel = "stylesheet";
54672
54724
  link .crossOrigin = "anonymous";
54673
54725
  link .onload = resolve;
@@ -65662,6 +65714,7 @@ const
65662
65714
  _defaultFramebuffer = Symbol (),
65663
65715
  _textureBuffers = Symbol (),
65664
65716
  _resizer = Symbol (),
65717
+ _traverse = Symbol .for ("X_ITE.X3DBrowserContext.traverse"),
65665
65718
  _localObjects = Symbol (),
65666
65719
  _fullscreenArray = Symbol (),
65667
65720
  _fullscreenBuffer = Symbol (),
@@ -65706,12 +65759,7 @@ Object .assign (X3DRenderingContext .prototype,
65706
65759
 
65707
65760
  helper.on (this, window, "orientationchange", () => this .reshape ());
65708
65761
 
65709
- this [_resizer] = new ResizeObserver (() =>
65710
- {
65711
- this .reshape ();
65712
-
65713
- this [Symbol .for ("X_ITE.X3DBrowserContext.traverse")] (performance .now ());
65714
- });
65762
+ this [_resizer] = new ResizeObserver (() => this .reshape ());
65715
65763
 
65716
65764
  this [_resizer] .observe (this .getSurface ());
65717
65765
 
@@ -65988,6 +66036,9 @@ Object .assign (X3DRenderingContext .prototype,
65988
66036
 
65989
66037
  this .reshapeFramebuffer (0, 0, 0, width, height);
65990
66038
 
66039
+ if (this .getWorld ())
66040
+ this [_traverse] (-1);
66041
+
65991
66042
  this .addBrowserEvent ();
65992
66043
  },
65993
66044
  limitFramebufferSize (width, height)
@@ -72681,14 +72732,14 @@ Object .assign (X3DTimeContext .prototype,
72681
72732
  {
72682
72733
  const lastPosition = new Numbers_Vector3 ();
72683
72734
 
72684
- return function ()
72735
+ return function (checkFrameRate)
72685
72736
  {
72686
72737
  const
72687
72738
  time = Date .now () / 1000,
72688
72739
  interval = time - this [_lastTime],
72689
72740
  viewpointNode = this .getActiveViewpoint ();
72690
72741
 
72691
- if (interval <= 1 / Math .max (this .getBrowserOption ("MaximumFrameRate"), 1))
72742
+ if (checkFrameRate && interval <= 1 / Math .max (this .getBrowserOption ("MaximumFrameRate"), 1))
72692
72743
  return false;
72693
72744
 
72694
72745
  this [_lastTime] = time;
@@ -72930,7 +72981,7 @@ const ConcreteNodes_default_ = new Configuration_ConcreteNodesArray ();
72930
72981
  const
72931
72982
  _world = Symbol (),
72932
72983
  X3DBrowserContext_tainted = Symbol (),
72933
- _traverse = Symbol .for ("X_ITE.X3DBrowserContext.traverse"),
72984
+ X3DBrowserContext_traverse = Symbol .for ("X_ITE.X3DBrowserContext.traverse"),
72934
72985
  _renderCallback = Symbol (),
72935
72986
  _animFrame = Symbol (),
72936
72987
  _previousTime = Symbol (),
@@ -72986,7 +73037,7 @@ function X3DBrowserContext (element)
72986
73037
 
72987
73038
  this [X3DBrowserContext_tainted] = false;
72988
73039
  this [_previousTime] = 0;
72989
- this [_renderCallback] = this [_traverse] .bind (this);
73040
+ this [_renderCallback] = this [X3DBrowserContext_traverse] .bind (this);
72990
73041
  this [_systemTime] = new Time_StopWatch ();
72991
73042
  this [_browserTime] = new Time_StopWatch ();
72992
73043
  this [_cameraTime] = new Time_StopWatch ();
@@ -73097,13 +73148,15 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73097
73148
  this .addBrowserEvent ();
73098
73149
  });
73099
73150
  },
73100
- [_traverse] (now, frame)
73151
+ [X3DBrowserContext_traverse] (now, frame)
73101
73152
  {
73102
73153
  // Limit frame rate.
73103
73154
 
73104
73155
  this [X3DBrowserContext_tainted] = false;
73105
73156
 
73106
- if (!this .advanceTime ())
73157
+ // If now is negative, don't check framerate.
73158
+ // Now can be negative when reshape is called.
73159
+ if (!this .advanceTime (now >= 0))
73107
73160
  {
73108
73161
  this .addBrowserEvent ();
73109
73162
  return;
@@ -74871,7 +74924,7 @@ const CoreComponent_default_ = {
74871
74924
  [
74872
74925
  Core_X3DBindableNode,
74873
74926
  Core_X3DChildNode,
74874
- Core_X3DImportedNodeProxy,
74927
+ Core_X3DImportedNodeInstance,
74875
74928
  Core_X3DInfoNode,
74876
74929
  Core_X3DMetadataObject,
74877
74930
  Core_X3DNode,
@@ -91540,8 +91593,8 @@ const PNGMedia_default_ = PNGMedia;
91540
91593
 
91541
91594
  /* harmony default export */ const Texturing_PNGMedia = (x_ite_Namespace .add ("PNGMedia", PNGMedia_default_));
91542
91595
  ;// ./src/x_ite/Components/Texturing/MovieTexture.js
91543
- /* provided dependency */ var SuperGif = __webpack_require__(802);
91544
- /* provided dependency */ var APNG = __webpack_require__(528);
91596
+ /* provided dependency */ var SuperGif = __webpack_require__(971);
91597
+ /* provided dependency */ var APNG = __webpack_require__(697);
91545
91598
 
91546
91599
 
91547
91600
 
@@ -91614,7 +91667,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91614
91667
 
91615
91668
  try
91616
91669
  {
91617
- if (fileURL .pathname .endsWith (".gif") || fileURL .href .match (/^\s*data:image\/gif[;,]/s))
91670
+ if (fileURL .pathname .endsWith (".gif") || fileURL .href .match (/^\s*data:image\/gif[;,]/))
91618
91671
  {
91619
91672
  const
91620
91673
  data = await this .loadDocument (fileURL),
@@ -91633,7 +91686,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91633
91686
  this .setGif (gif);
91634
91687
  return;
91635
91688
  }
91636
- else if (fileURL .pathname .endsWith (".png") || fileURL .href .match (/^\s*data:image\/png[;,]/s))
91689
+ else if (fileURL .pathname .endsWith (".png") || fileURL .href .match (/^\s*data:image\/png[;,]/))
91637
91690
  {
91638
91691
  const
91639
91692
  data = await this .loadDocument (fileURL),
@@ -92892,7 +92945,7 @@ const Components_default_ = Components;
92892
92945
 
92893
92946
  /* eslint no-undef: "off"
92894
92947
  --------
92895
- no-undef: global variable is used here for use in node projects.
92948
+ no-undef: node `global` variable is used here for use in node projects.
92896
92949
  */
92897
92950
 
92898
92951
  const
@@ -94185,7 +94238,7 @@ const QuickSort_default_ = QuickSort;
94185
94238
 
94186
94239
  /* harmony default export */ const Algorithms_QuickSort = (x_ite_Namespace .add ("QuickSort", QuickSort_default_));
94187
94240
  ;// ./src/lib/libtess.js
94188
- /* provided dependency */ var libtess_libtess = __webpack_require__(628);
94241
+ /* provided dependency */ var libtess_libtess = __webpack_require__(617);
94189
94242
  const libtess_default_ = libtess_libtess;
94190
94243
  ;
94191
94244