sunrize 2.1.9 → 2.1.11

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 (58) hide show
  1. package/package.json +13 -5
  2. package/src/Application/ActionKeys.js +1 -1
  3. package/src/Application/DataStorage.js +1 -1
  4. package/src/Application/Document.js +1 -1
  5. package/src/Application/Footer.js +15 -15
  6. package/src/Application/Hierarchy.js +1 -1
  7. package/src/Application/Registry.js +1 -1
  8. package/src/Application/Selection.js +1 -1
  9. package/src/Application/Sidebar.js +16 -16
  10. package/src/Application/Tabs.js +2 -2
  11. package/src/Bits/MimeTypes.js +1 -1
  12. package/src/Controls/AnimationPropertiesPopover.js +3 -3
  13. package/src/Controls/Dialog.js +2 -2
  14. package/src/Controls/EditNodePopover.js +1 -1
  15. package/src/Controls/EditUserDefinedFieldPopover.js +1 -1
  16. package/src/Controls/ExportNodePopover.js +1 -1
  17. package/src/Controls/ImportNodePopover.js +1 -1
  18. package/src/Controls/RenameNodeInput.js +1 -1
  19. package/src/Controls/Splitter.js +2 -2
  20. package/src/Controls/Tabs.js +25 -25
  21. package/src/Controls/TexturePreviewPopover.js +3 -3
  22. package/src/Controls/VideoPreviewPopover.js +3 -3
  23. package/src/Editors/AnimationEditor.js +10 -10
  24. package/src/Editors/AnimationMemberList.js +1 -1
  25. package/src/Editors/FileManager.js +7 -7
  26. package/src/Editors/Library.js +2 -2
  27. package/src/Editors/OutlineEditor.js +37 -37
  28. package/src/Editors/OutlineRouteGraph.js +2 -2
  29. package/src/Editors/OutlineView.js +97 -97
  30. package/src/Editors/Panel.js +10 -10
  31. package/src/Editors/SceneProperties.js +8 -8
  32. package/src/Editors/ScriptEditor.js +7 -7
  33. package/src/Editors/Units.js +1 -1
  34. package/src/Parser/AudioParser.js +1 -1
  35. package/src/Parser/ImageParser.js +1 -1
  36. package/src/Parser/VideoParser.js +1 -1
  37. package/src/Tools/CADGeometry/CADAssemblyTool.js +4 -4
  38. package/src/Tools/CADGeometry/CADFaceTool.js +4 -4
  39. package/src/Tools/CADGeometry/CADLayerTool.js +4 -4
  40. package/src/Tools/CADGeometry/CADPartTool.js +4 -4
  41. package/src/Tools/Core/X3DBaseTool.js +1 -1
  42. package/src/Tools/Core/X3DNodeTool.js +1 -1
  43. package/src/Tools/Core/X3DPrototypeInstanceTool.js +1 -1
  44. package/src/Tools/Grouping/GroupTool.js +1 -1
  45. package/src/Tools/Grouping/StaticGroupTool.js +4 -4
  46. package/src/Tools/Grouping/SwitchTool.js +4 -4
  47. package/src/Tools/Grouping/TransformTool.js +4 -4
  48. package/src/Tools/HAnim/HAnimHumanoidTool.js +4 -4
  49. package/src/Tools/HAnim/HAnimJointTool.js +4 -4
  50. package/src/Tools/HAnim/HAnimSegmentTool.js +4 -4
  51. package/src/Tools/HAnim/HAnimSiteTool.js +4 -4
  52. package/src/Tools/Layering/LayerTool.js +3 -3
  53. package/src/Tools/Layering/ViewportTool.js +1 -1
  54. package/src/Tools/Networking/AnchorTool.js +4 -4
  55. package/src/Tools/Networking/InlineGeometryTool.js +1 -1
  56. package/src/Tools/Networking/InlineTool.js +4 -4
  57. package/src/Undo/Editor.js +68 -68
  58. package/src/Undo/UndoManager.js +1 -1
@@ -566,82 +566,82 @@ module .exports = class OutlineView extends Interface
566
566
  expandSceneExportedNodes (parent, scene)
567
567
  {
568
568
  if (!(scene instanceof X3D .X3DScene))
569
- return $("<div></div>")
569
+ return $("<div></div>");
570
570
 
571
571
  const child = $("<div></div>")
572
- .addClass (["exported-nodes", "subtree"])
572
+ .addClass (["exported-nodes", "subtree"]);
573
573
 
574
- scene .exportedNodes .addInterest ("updateSceneSubtree", this, parent, scene, "exported-nodes", "expandSceneExportedNodes")
574
+ scene .exportedNodes .addInterest ("updateSceneSubtree", this, parent, scene, "exported-nodes", "expandSceneExportedNodes");
575
575
 
576
576
  if (!scene .exportedNodes .length)
577
- return child .appendTo (parent)
577
+ return child .appendTo (parent);
578
578
 
579
579
  const exportedNodes = Array .from (scene .exportedNodes) .sort ((a, b) =>
580
580
  {
581
- return this .naturalCompare (a .getExportedName (), b .getExportedName ())
581
+ return this .naturalCompare (a .getExportedName (), b .getExportedName ());
582
582
  })
583
583
  .sort ((a, b) =>
584
584
  {
585
- return this .naturalCompare (a .getLocalNode () .getTypeName (), b .getLocalNode () .getTypeName ())
586
- })
585
+ return this .naturalCompare (a .getLocalNode () .getTypeName (), b .getLocalNode () .getTypeName ());
586
+ });
587
587
 
588
588
  const ul = $("<ul></ul>")
589
- .appendTo (child)
589
+ .appendTo (child);
590
590
 
591
591
  $("<li></li>")
592
592
  .addClass (["exported-nodes", "description", "no-select"])
593
593
  .text ("Exported Nodes")
594
- .appendTo (ul)
594
+ .appendTo (ul);
595
595
 
596
596
  for (const exportedNode of exportedNodes)
597
597
  {
598
- ul .append (this .createExportedNodeElement ("exported-node", parent, exportedNode) .prop ("outerHTML"))
598
+ ul .append (this .createExportedNodeElement ("exported-node", parent, exportedNode) .prop ("outerHTML"));
599
599
  }
600
600
 
601
601
  // Added to prevent bug, that last route is not drawn right.
602
602
  $("<li></li>")
603
603
  .addClass (["last", "no-select"])
604
- .appendTo (ul)
604
+ .appendTo (ul);
605
605
 
606
- this .connectSceneSubtree (parent, child)
606
+ this .connectSceneSubtree (parent, child);
607
607
 
608
- return child
608
+ return child;
609
609
  }
610
610
 
611
611
  createSceneElement (scene, typeName, classes)
612
612
  {
613
- this .objects .set (scene .getId (), scene)
613
+ this .objects .set (scene .getId (), scene);
614
614
 
615
615
  // Scene
616
616
 
617
617
  const child = $("<li></li>")
618
618
  .addClass ("scene")
619
619
  .addClass (classes)
620
- .attr ("node-id", scene .getId ())
620
+ .attr ("node-id", scene .getId ());
621
621
 
622
622
  // Icon
623
623
 
624
624
  const icon = $("<img></img>")
625
625
  .addClass ("icon")
626
626
  .attr ("src", "../images/OutlineEditor/Node/X3DExecutionContext.svg")
627
- .appendTo (child)
627
+ .appendTo (child);
628
628
 
629
629
  // Name
630
630
 
631
631
  const name = $("<div></div>")
632
632
  .addClass ("name")
633
- .appendTo (child)
633
+ .appendTo (child);
634
634
 
635
635
  $("<span></span>")
636
636
  .addClass ("field-name")
637
637
  .text (typeName)
638
- .appendTo (name)
638
+ .appendTo (name);
639
639
 
640
640
  // Append empty tree to enable expander.
641
641
 
642
- $("<ul><li></li></ul>") .appendTo (child)
642
+ $("<ul><li></li></ul>") .appendTo (child);
643
643
 
644
- return child
644
+ return child;
645
645
  }
646
646
 
647
647
  updateNode (parent, node, full)
@@ -765,7 +765,7 @@ module .exports = class OutlineView extends Interface
765
765
 
766
766
  if (node .checkLoadState () === X3D .X3DConstants .COMPLETE_STATE && this .expandInlineNodes && node .getType () .includes (X3D .X3DConstants .Inline))
767
767
  {
768
- ul .append (this .createSceneElement (node .getInternalScene (), "Scene", "internal-scene"))
768
+ ul .append (this .createSceneElement (node .getInternalScene (), "Scene", "internal-scene"));
769
769
  }
770
770
  else
771
771
  {
@@ -804,7 +804,7 @@ module .exports = class OutlineView extends Interface
804
804
  .find (".item") .append ("<div class=\"route-curves-wrapper\"><canvas class=\"route-curves\"></canvas></div>");
805
805
 
806
806
  child .find (".field .name, .field .icon, .special .name, .special .icon")
807
- .on ("click", this .selectField .bind (this))
807
+ .on ("click", this .selectField .bind (this));
808
808
 
809
809
  child .find (".field .name, .special .name")
810
810
  .on ("mouseenter", this .updateFieldTitle .bind (this));
@@ -1059,7 +1059,7 @@ module .exports = class OutlineView extends Interface
1059
1059
 
1060
1060
  name .append (document .createTextNode (" "));
1061
1061
 
1062
- const cloneCount = node .getCloneCount ?.() ?? 0
1062
+ const cloneCount = node .getCloneCount ?.() ?? 0;
1063
1063
 
1064
1064
  $("<span></span>")
1065
1065
  .addClass ("clone-count")
@@ -1265,7 +1265,7 @@ module .exports = class OutlineView extends Interface
1265
1265
  }
1266
1266
  }
1267
1267
 
1268
- buttons .sort ((a, b) => a .attr ("order") - b .attr ("order"))
1268
+ buttons .sort ((a, b) => a .attr ("order") - b .attr ("order"));
1269
1269
 
1270
1270
  for (const button of buttons)
1271
1271
  {
@@ -1279,7 +1279,7 @@ module .exports = class OutlineView extends Interface
1279
1279
  this .sceneGraph
1280
1280
  .find (`.node[node-id=${node .getId ()}], .exported-node[node-id=${node .getId ()}]`)
1281
1281
  .find ("> .item .node-type-name")
1282
- .text (node .getTypeName ())
1282
+ .text (node .getTypeName ());
1283
1283
  }
1284
1284
 
1285
1285
  updateNodeName (node)
@@ -1287,7 +1287,7 @@ module .exports = class OutlineView extends Interface
1287
1287
  this .sceneGraph
1288
1288
  .find (`.node[node-id=${node .getId ()}], .exported-node[node-id=${node .getId ()}]`)
1289
1289
  .find ("> .item .node-name")
1290
- .text (node .getDisplayName ())
1290
+ .text (node .getDisplayName ());
1291
1291
  }
1292
1292
 
1293
1293
  updateExportedNodeName (exportedNode)
@@ -1495,7 +1495,7 @@ module .exports = class OutlineView extends Interface
1495
1495
 
1496
1496
  name .append (document .createTextNode (" "));
1497
1497
 
1498
- const cloneCount = node .getCloneCount ?.() ?? 0
1498
+ const cloneCount = node .getCloneCount ?.() ?? 0;
1499
1499
 
1500
1500
  $("<span></span>")
1501
1501
  .addClass ("clone-count")
@@ -1946,14 +1946,14 @@ module .exports = class OutlineView extends Interface
1946
1946
  {
1947
1947
  case 0:
1948
1948
  title += `Number of Points: ${(numVertices) .toLocaleString (_.locale)}`;
1949
- break
1949
+ break;
1950
1950
  case 1:
1951
1951
  title += `Number of Lines: ${(numVertices / 2) .toLocaleString (_.locale)}`;
1952
- break
1952
+ break;
1953
1953
  case 2:
1954
1954
  case 3:
1955
1955
  title += `Number of Triangles: ${(numVertices / 3) .toLocaleString (_.locale)}`;
1956
- break
1956
+ break;
1957
1957
  }
1958
1958
 
1959
1959
  continue;
@@ -1999,12 +1999,12 @@ module .exports = class OutlineView extends Interface
1999
1999
 
2000
2000
  updateReferences (parent, node, field)
2001
2001
  {
2002
- const element = parent .find (`.field[field-id=${field .getId ()}]`)
2002
+ const element = parent .find (`.field[field-id=${field .getId ()}]`);
2003
2003
 
2004
2004
  if (field .getReferences () .size)
2005
- element .addClass ("references")
2005
+ element .addClass ("references");
2006
2006
  else
2007
- element .removeClass ("references")
2007
+ element .removeClass ("references");
2008
2008
  }
2009
2009
 
2010
2010
  updateBoolean (parent, node, field)
@@ -2012,19 +2012,19 @@ module .exports = class OutlineView extends Interface
2012
2012
  if (field .isInitializable ())
2013
2013
  {
2014
2014
  parent .find (`.field[field-id=${field .getId ()}] > .item .boolean-button`)
2015
- .attr ("src", `../images/OutlineEditor/Values/${field .getValue () ? "TRUE" : "FALSE"}.svg`)
2015
+ .attr ("src", `../images/OutlineEditor/Values/${field .getValue () ? "TRUE" : "FALSE"}.svg`);
2016
2016
  }
2017
2017
  else if (field .isOutput ())
2018
2018
  {
2019
2019
  parent .find (`.field[field-id=${field .getId ()}] > .item .boolean-out-button`)
2020
- .attr ("src", `../images/OutlineEditor/Values/${field .getValue () ? "TRUE" : "FALSE"}-out.svg`)
2020
+ .attr ("src", `../images/OutlineEditor/Values/${field .getValue () ? "TRUE" : "FALSE"}-out.svg`);
2021
2021
  }
2022
2022
  }
2023
2023
 
2024
2024
  updateColor (parent, node, field)
2025
2025
  {
2026
2026
  parent .find (`.field[field-id=${field .getId ()}] > .item .color-button`)
2027
- .css ("background-color", this .getColorFromField (node, field))
2027
+ .css ("background-color", this .getColorFromField (node, field));
2028
2028
  }
2029
2029
 
2030
2030
  getColorFromField (node, field, colorSpace = this .browser .getBrowserOption ("ColorSpace"))
@@ -2059,31 +2059,31 @@ module .exports = class OutlineView extends Interface
2059
2059
  {
2060
2060
  case "input":
2061
2061
  {
2062
- return "../images/OutlineEditor/AccessTypes/inputOnly.active.png"
2062
+ return "../images/OutlineEditor/AccessTypes/inputOnly.active.png";
2063
2063
  }
2064
2064
  case "output":
2065
2065
  {
2066
- return "../images/OutlineEditor/AccessTypes/outputOnly.active.png"
2066
+ return "../images/OutlineEditor/AccessTypes/outputOnly.active.png";
2067
2067
  }
2068
2068
  }
2069
2069
  }
2070
2070
  else
2071
2071
  {
2072
- let accessTypeImage = this .accessTypes [field .getAccessType ()]
2072
+ let accessTypeImage = this .accessTypes [field .getAccessType ()];
2073
2073
 
2074
2074
  if (field .isInput ())
2075
2075
  {
2076
2076
  switch (field .getInputRoutes () .size)
2077
2077
  {
2078
2078
  case 0:
2079
- accessTypeImage += ".0"
2080
- break
2079
+ accessTypeImage += ".0";
2080
+ break;
2081
2081
  case 1:
2082
- accessTypeImage += ".1"
2083
- break
2082
+ accessTypeImage += ".1";
2083
+ break;
2084
2084
  default:
2085
- accessTypeImage += ".2"
2086
- break
2085
+ accessTypeImage += ".2";
2086
+ break;
2087
2087
  }
2088
2088
  }
2089
2089
 
@@ -2092,20 +2092,20 @@ module .exports = class OutlineView extends Interface
2092
2092
  switch (field .getOutputRoutes () .size)
2093
2093
  {
2094
2094
  case 0:
2095
- accessTypeImage += ".0"
2096
- break
2095
+ accessTypeImage += ".0";
2096
+ break;
2097
2097
  case 1:
2098
- accessTypeImage += ".1"
2099
- break
2098
+ accessTypeImage += ".1";
2099
+ break;
2100
2100
  default:
2101
- accessTypeImage += ".2"
2102
- break
2101
+ accessTypeImage += ".2";
2102
+ break;
2103
2103
  }
2104
2104
  }
2105
2105
 
2106
- accessTypeImage = "../images/OutlineEditor/AccessTypes/" + accessTypeImage + ".png"
2106
+ accessTypeImage = "../images/OutlineEditor/AccessTypes/" + accessTypeImage + ".png";
2107
2107
 
2108
- return accessTypeImage
2108
+ return accessTypeImage;
2109
2109
  }
2110
2110
  }
2111
2111
 
@@ -2478,12 +2478,12 @@ module .exports = class OutlineView extends Interface
2478
2478
  onkeydownField (input, event)
2479
2479
  {
2480
2480
  if (event .key === "Enter")
2481
- input .blur ()
2481
+ input .blur ();
2482
2482
  }
2483
2483
 
2484
2484
  disconnectField (field)
2485
2485
  {
2486
- field .removeFieldCallback (this .#fieldSymbol)
2486
+ field .removeFieldCallback (this .#fieldSymbol);
2487
2487
  }
2488
2488
 
2489
2489
  #fieldValueSymbol = Symbol ();
@@ -2493,9 +2493,9 @@ module .exports = class OutlineView extends Interface
2493
2493
  field .addFieldCallback (this .#fieldValueSymbol, () =>
2494
2494
  {
2495
2495
  if (field .getType () === X3D .X3DConstants .SFString)
2496
- input .val (field .getValue ())
2496
+ input .val (field .getValue ());
2497
2497
  else
2498
- input .val (field .toString ({ scene: node .getExecutionContext () }))
2498
+ input .val (field .toString ({ scene: node .getExecutionContext () }));
2499
2499
  });
2500
2500
 
2501
2501
  if (assign)
@@ -2509,24 +2509,24 @@ module .exports = class OutlineView extends Interface
2509
2509
  // Generate tree.
2510
2510
 
2511
2511
  const child = $("<div></div>")
2512
- .addClass ("subtree")
2512
+ .addClass ("subtree");
2513
2513
 
2514
2514
  const ul = $("<ul></ul>")
2515
- .appendTo (child)
2515
+ .appendTo (child);
2516
2516
 
2517
2517
  if (full)
2518
- ul .append (this .createRouteElements (node, field))
2518
+ ul .append (this .createRouteElements (node, field));
2519
2519
 
2520
2520
  const li = $("<li></li>")
2521
2521
  .addClass (type + "-value no-expand")
2522
2522
  .attr ("node-id", node .getId ())
2523
2523
  .attr ("field-id", field .getId ())
2524
- .appendTo (ul)
2524
+ .appendTo (ul);
2525
2525
 
2526
2526
  $("<div></div>")
2527
2527
  .addClass (type + "-value-container")
2528
2528
  .append ($("<textarea></textarea>"))
2529
- .appendTo (li)
2529
+ .appendTo (li);
2530
2530
 
2531
2531
  // Make jsTree.
2532
2532
 
@@ -2534,46 +2534,46 @@ module .exports = class OutlineView extends Interface
2534
2534
  .jstree ()
2535
2535
  .off ("keypress.jstree dblclick.jstree")
2536
2536
  .appendTo (parent)
2537
- .hide ()
2537
+ .hide ();
2538
2538
 
2539
2539
  child
2540
2540
  .removeAttr ("tabindex")
2541
2541
  .find (".jstree-anchor > *")
2542
- .unwrap ()
2542
+ .unwrap ();
2543
2543
 
2544
2544
  child .find (".jstree-ocl")
2545
2545
  .addClass ("material-icons")
2546
2546
  .text ("arrow_right")
2547
2547
  .on ("click", this .selectExpander .bind (this))
2548
- .on ("dblclick", this .activateExpander .bind (this))
2548
+ .on ("dblclick", this .activateExpander .bind (this));
2549
2549
 
2550
2550
  child .find (".jstree-node")
2551
2551
  .wrapInner ("<div class=\"item no-select\"/>")
2552
- .find (".item") .append ("<div class=\"route-curves-wrapper\"><canvas class=\"route-curves\"></canvas></div>")
2552
+ .find (".item") .append ("<div class=\"route-curves-wrapper\"><canvas class=\"route-curves\"></canvas></div>");
2553
2553
 
2554
2554
  this .connectFieldActions (child);
2555
2555
 
2556
2556
  // Textarea
2557
2557
 
2558
- const textarea = child .find ("textarea")
2558
+ const textarea = child .find ("textarea");
2559
2559
 
2560
- this .setTextAreaTabs (textarea)
2561
- this .setTextArea (textarea, node, field)
2560
+ this .setTextAreaTabs (textarea);
2561
+ this .setTextArea (textarea, node, field);
2562
2562
 
2563
- textarea .on ("mouseenter", this .updateFieldTitle .bind (this))
2563
+ textarea .on ("mouseenter", this .updateFieldTitle .bind (this));
2564
2564
 
2565
2565
  if ((field .isInput () || field .isInitializable ()) && this .isEditable (parent))
2566
2566
  {
2567
- textarea .on ("keydown", this .onkeydownArrayField .bind (this, textarea))
2568
- textarea .on ("focusin", this .disconnectField .bind (this, field))
2569
- textarea .on ("focusout", this .connectArrayField .bind (this, textarea, node, field, true))
2567
+ textarea .on ("keydown", this .onkeydownArrayField .bind (this, textarea));
2568
+ textarea .on ("focusin", this .disconnectField .bind (this, field));
2569
+ textarea .on ("focusout", this .connectArrayField .bind (this, textarea, node, field, true));
2570
2570
  }
2571
2571
  else
2572
2572
  {
2573
- textarea .attr ("disabled", "disabled")
2573
+ textarea .attr ("disabled", "disabled");
2574
2574
  }
2575
2575
 
2576
- this .connectArrayField (textarea, node, field, false)
2576
+ this .connectArrayField (textarea, node, field, false);
2577
2577
 
2578
2578
  // Expand children.
2579
2579
 
@@ -2586,34 +2586,34 @@ module .exports = class OutlineView extends Interface
2586
2586
  onkeydownArrayField (textarea, event)
2587
2587
  {
2588
2588
  if ((event .ctrlKey || event .metaKey) && event .key === "Enter")
2589
- textarea .blur ()
2589
+ textarea .blur ();
2590
2590
  }
2591
2591
 
2592
2592
  connectArrayField (textarea, node, field, assign)
2593
2593
  {
2594
- field .addFieldCallback (this .#fieldValueSymbol, this .setTextArea .bind (this, textarea, node, field))
2594
+ field .addFieldCallback (this .#fieldValueSymbol, this .setTextArea .bind (this, textarea, node, field));
2595
2595
 
2596
2596
  if (assign)
2597
- this .onArrayFieldEdited (textarea, node, field)
2597
+ this .onArrayFieldEdited (textarea, node, field);
2598
2598
  }
2599
2599
 
2600
2600
  onArrayFieldEdited (textarea, node, field) { }
2601
2601
 
2602
2602
  createRouteElements (node, field)
2603
2603
  {
2604
- const elements = [ ]
2604
+ const elements = [ ];
2605
2605
 
2606
2606
  field .getInputRoutes () .forEach ((route) =>
2607
2607
  {
2608
- elements .push (this .createRouteElement ("input", node, field, route) .get (0))
2609
- })
2608
+ elements .push (this .createRouteElement ("input", node, field, route) .get (0));
2609
+ });
2610
2610
 
2611
2611
  field .getOutputRoutes () .forEach ((route) =>
2612
2612
  {
2613
- elements .push (this .createRouteElement ("output", node, field, route) .get (0))
2614
- })
2613
+ elements .push (this .createRouteElement ("output", node, field, route) .get (0));
2614
+ });
2615
2615
 
2616
- return $(elements)
2616
+ return $(elements);
2617
2617
  }
2618
2618
 
2619
2619
  createRouteElement (type, node, field, route)
@@ -2763,23 +2763,23 @@ module .exports = class OutlineView extends Interface
2763
2763
  textarea .on ("keydown", (event) =>
2764
2764
  {
2765
2765
  if (event .key !== "Tab")
2766
- return
2766
+ return;
2767
2767
 
2768
2768
  // Tab was pressed, get caret position/selection.
2769
2769
  const
2770
2770
  start = textarea .prop ("selectionStart"),
2771
- end = textarea .prop ("selectionEnd")
2771
+ end = textarea .prop ("selectionEnd");
2772
2772
 
2773
2773
  // Set textarea value to: text before caret + tab + text after caret.
2774
- textarea .val (textarea .val () .substring (0, start) + "\t" + textarea .val () .substring (end))
2774
+ textarea .val (textarea .val () .substring (0, start) + "\t" + textarea .val () .substring (end));
2775
2775
 
2776
2776
  // Put caret at right position again.
2777
- textarea .prop ("selectionStart", start + 1)
2778
- textarea .prop ("selectionEnd", start + 1)
2777
+ textarea .prop ("selectionStart", start + 1);
2778
+ textarea .prop ("selectionEnd", start + 1);
2779
2779
 
2780
2780
  // Prevent the focus lose.
2781
- return false
2782
- })
2781
+ return false;
2782
+ });
2783
2783
  }
2784
2784
 
2785
2785
  setTextArea (textarea, node, field)
@@ -2814,7 +2814,7 @@ module .exports = class OutlineView extends Interface
2814
2814
  case X3D .X3DConstants .MFString:
2815
2815
  {
2816
2816
  textarea .val (field .getValue () .map (value => value .toString ()) .join (",\n"));
2817
- break
2817
+ break;
2818
2818
  }
2819
2819
  default:
2820
2820
  {
@@ -3404,7 +3404,7 @@ module .exports = class OutlineView extends Interface
3404
3404
  .addClass (parent .getEditChild () !== node ? "on" : "off");
3405
3405
 
3406
3406
  if (parent .getEditChild () === node)
3407
- parent .setEditChild (null)
3407
+ parent .setEditChild (null);
3408
3408
  else
3409
3409
  parent .setEditChild (node);
3410
3410
  }
@@ -3449,7 +3449,7 @@ module .exports = class OutlineView extends Interface
3449
3449
 
3450
3450
  showSelectedObjects ()
3451
3451
  {
3452
- const selection = require ("../Application/Selection")
3452
+ const selection = require ("../Application/Selection");
3453
3453
 
3454
3454
  for (const object of Traverse .traverse (selection .nodes .length ? selection .nodes : this .executionContext, Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES))
3455
3455
  {
@@ -4063,7 +4063,7 @@ module .exports = class OutlineView extends Interface
4063
4063
  this .saveExpandedNodes (element .find ("> div > ul > li"), path, expanded);
4064
4064
 
4065
4065
  path .pop ();
4066
- })
4066
+ });
4067
4067
 
4068
4068
  return expanded;
4069
4069
  }
@@ -4106,6 +4106,6 @@ module .exports = class OutlineView extends Interface
4106
4106
  }
4107
4107
 
4108
4108
  path .pop ();
4109
- })
4109
+ });
4110
4110
  }
4111
- }
4111
+ };
@@ -338,7 +338,7 @@ module .exports = new class Panel extends Interface
338
338
 
339
339
  // Update expanded state of folder.
340
340
 
341
- folder .on ("fold", () => this .config .global [`${title}.expanded`] = folder .expanded)
341
+ folder .on ("fold", () => this .config .global [`${title}.expanded`] = folder .expanded);
342
342
 
343
343
  // Add fields.
344
344
 
@@ -380,14 +380,14 @@ module .exports = new class Panel extends Interface
380
380
  {
381
381
  case 0:
382
382
  this .numPrimitives .monitor = folder .addBinding (this .numPrimitives, "numberOfPoints", { readonly: true });
383
- break
383
+ break;
384
384
  case 1:
385
385
  this .numPrimitives .monitor = folder .addBinding (this .numPrimitives, "numberOfLines", { readonly: true });
386
- break
386
+ break;
387
387
  case 2:
388
388
  case 3:
389
389
  this .numPrimitives .monitor = folder .addBinding (this .numPrimitives, "numberOfTriangles", { readonly: true });
390
- break
390
+ break;
391
391
  }
392
392
 
393
393
  break;
@@ -925,13 +925,13 @@ module .exports = new class Panel extends Interface
925
925
  this .#vector .setName ("calculatedSize");
926
926
  this .#vector .setUnit ("length");
927
927
 
928
- this .refresh (this .bbox, this .node, this .#vector)
928
+ this .refresh (this .bbox, this .node, this .#vector);
929
929
 
930
930
  this .#vector .setValue (bbox .center);
931
931
  this .#vector .setName ("calculatedCenter");
932
932
  this .#vector .setUnit ("length");
933
933
 
934
- this .refresh (this .bbox, this .node, this .#vector)
934
+ this .refresh (this .bbox, this .node, this .#vector);
935
935
 
936
936
  this .bbox .bboxSizeInput ?.refresh ();
937
937
  this .bbox .bboxCenterInput ?.refresh ();
@@ -942,7 +942,7 @@ module .exports = new class Panel extends Interface
942
942
  numberOfLines: "0",
943
943
  numberOfTriangles: "0",
944
944
  monitor: null,
945
- }
945
+ };
946
946
 
947
947
  refreshGeometry ()
948
948
  {
@@ -954,14 +954,14 @@ module .exports = new class Panel extends Interface
954
954
  {
955
955
  case 0:
956
956
  this .numPrimitives .numberOfPoints = (numVertices) .toLocaleString (_.locale);
957
- break
957
+ break;
958
958
  case 1:
959
959
  this .numPrimitives .numberOfLines = (numVertices / 2) .toLocaleString (_.locale);
960
- break
960
+ break;
961
961
  case 2:
962
962
  case 3:
963
963
  this .numPrimitives .numberOfTriangles = (numVertices / 3) .toLocaleString (_.locale);
964
- break
964
+ break;
965
965
  }
966
966
 
967
967
  this .numPrimitives .monitor ?.refresh ();
@@ -154,17 +154,17 @@ module .exports = new class SceneProperties extends Dialog
154
154
  .on ("click", function ()
155
155
  {
156
156
  if (!$(this) .val ())
157
- return
157
+ return;
158
158
 
159
- $(this) .attr ("placeholder", $(this) .val ())
160
- $(this) .val ("")
159
+ $(this) .attr ("placeholder", $(this) .val ());
160
+ $(this) .val ("");
161
161
  })
162
162
  .on ("mouseleave", function ()
163
163
  {
164
164
  if ($(this) .val ())
165
- return
165
+ return;
166
166
 
167
- $(this) .val ($(this) .attr ("placeholder"))
167
+ $(this) .val ($(this) .attr ("placeholder"));
168
168
  })
169
169
  .on ("change", event => this .changeUnitName (event));
170
170
 
@@ -263,7 +263,7 @@ module .exports = new class SceneProperties extends Dialog
263
263
  sortMetaData: false,
264
264
  });
265
265
 
266
- this .updateMetaDataSort ()
266
+ this .updateMetaDataSort ();
267
267
 
268
268
  if (this .executionContext)
269
269
  this .onclose ();
@@ -433,7 +433,7 @@ module .exports = new class SceneProperties extends Dialog
433
433
  {
434
434
  this .metaData .table .head .find (".sort-key")
435
435
  .removeClass ("active")
436
- .addClass (this .config .file .sortMetaData ? ["active"] : [ ])
436
+ .addClass (this .config .file .sortMetaData ? ["active"] : [ ]);
437
437
 
438
438
  if (this .config .file .sortMetaData)
439
439
  this .metaData .table .body .sortable ("disable");
@@ -489,7 +489,7 @@ module .exports = new class SceneProperties extends Dialog
489
489
  // Add Open Link in Browser button if it matches a link somewhere in value.
490
490
  {
491
491
  const
492
- http = /(https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*))/,
492
+ http = /(https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=]*))/,
493
493
  match = value .match (http);
494
494
 
495
495
  if (match)