@xeokit/xeokit-sdk 2.4.0-alpha-9 → 2.4.0-alpha-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.
@@ -119089,6 +119089,7 @@ class TreeViewPlugin extends Plugin {
119089
119089
  this._muteTreeEvents = false;
119090
119090
  this._rootNodes = [];
119091
119091
  this._objectNodes = {}; // Object ID -> Node
119092
+ this._nodeNodes = {}; // Node ID -> Node
119092
119093
  this._rootName = cfg.rootName;
119093
119094
  this._sortNodes = cfg.sortNodes;
119094
119095
  this._pruneEmptyNodes = cfg.pruneEmptyNodes;
@@ -119159,7 +119160,7 @@ class TreeViewPlugin extends Plugin {
119159
119160
  return;
119160
119161
  }
119161
119162
  node.xrayed = xrayed;
119162
- const listItemElementId = 'node-' + node.nodeId;
119163
+ const listItemElementId = node.nodeId;
119163
119164
  const listItemElement = document.getElementById(listItemElementId);
119164
119165
  if (listItemElement !== null) {
119165
119166
  if (xrayed) {
@@ -119193,8 +119194,7 @@ class TreeViewPlugin extends Plugin {
119193
119194
  const checkbox = event.target;
119194
119195
  const visible = checkbox.checked;
119195
119196
  const nodeId = checkbox.id;
119196
- const checkedObjectId = nodeId;
119197
- const checkedNode = this._objectNodes[checkedObjectId];
119197
+ const checkedNode = this._nodeNodes[nodeId];
119198
119198
  const objects = this._viewer.scene.objects;
119199
119199
  let numUpdated = 0;
119200
119200
  this._withNodeTree(checkedNode, (node) => {
@@ -119395,7 +119395,7 @@ class TreeViewPlugin extends Plugin {
119395
119395
  this._expandSwitchElement(switchElement);
119396
119396
  }
119397
119397
  }
119398
- const listItemElementId = 'node-' + nodeId;
119398
+ const listItemElementId = nodeId;
119399
119399
  const listItemElement = document.getElementById(listItemElementId);
119400
119400
  listItemElement.scrollIntoView({block: "center"});
119401
119401
  listItemElement.classList.add("highlighted-node");
@@ -119507,6 +119507,7 @@ class TreeViewPlugin extends Plugin {
119507
119507
 
119508
119508
  this._rootNodes = [];
119509
119509
  this._objectNodes = {};
119510
+ this._nodeNodes = {};
119510
119511
  this._validate();
119511
119512
  if (this.valid || (this._hierarchy !== "storeys")) {
119512
119513
  this._createEnabledNodes();
@@ -119662,7 +119663,7 @@ class TreeViewPlugin extends Plugin {
119662
119663
  const objectId = metaObject.id;
119663
119664
  if (metaObjectType === "IfcBuilding") {
119664
119665
  buildingNode = {
119665
- nodeId: `${this._id}-objectId`,
119666
+ nodeId: `${this._id}-${objectId}`,
119666
119667
  objectId: objectId,
119667
119668
  title: this._rootName || ((metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType),
119668
119669
  type: metaObjectType,
@@ -119675,13 +119676,14 @@ class TreeViewPlugin extends Plugin {
119675
119676
  };
119676
119677
  this._rootNodes.push(buildingNode);
119677
119678
  this._objectNodes[buildingNode.objectId] = buildingNode;
119679
+ this._nodeNodes[buildingNode.nodeId] = buildingNode;
119678
119680
  } else if (metaObjectType === "IfcBuildingStorey") {
119679
119681
  if (!buildingNode) {
119680
119682
  this.error("Failed to build storeys hierarchy for model '" + this.metaModel.id + "' - model does not have an IfcBuilding object, or is not an IFC model");
119681
119683
  return;
119682
119684
  }
119683
119685
  storeyNode = {
119684
- nodeId: `${this._id}-objectId`,
119686
+ nodeId: `${this._id}-${objectId}`,
119685
119687
  objectId: objectId,
119686
119688
  title: (metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType,
119687
119689
  type: metaObjectType,
@@ -119694,6 +119696,7 @@ class TreeViewPlugin extends Plugin {
119694
119696
  };
119695
119697
  buildingNode.children.push(storeyNode);
119696
119698
  this._objectNodes[storeyNode.objectId] = storeyNode;
119699
+ this._nodeNodes[storeyNode.nodeId] = storeyNode;
119697
119700
  typeNodes = {};
119698
119701
  } else {
119699
119702
  if (storeyNode) {
@@ -119717,10 +119720,11 @@ class TreeViewPlugin extends Plugin {
119717
119720
  };
119718
119721
  storeyNode.children.push(typeNode);
119719
119722
  this._objectNodes[typeNode.objectId] = typeNode;
119723
+ this._nodeNodes[typeNode.nodeId] = typeNode;
119720
119724
  typeNodes[metaObjectType] = typeNode;
119721
119725
  }
119722
119726
  const node = {
119723
- nodeId: `${this._id}-objectId`,
119727
+ nodeId: `${this._id}-${objectId}`,
119724
119728
  objectId: objectId,
119725
119729
  title: (metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType,
119726
119730
  type: metaObjectType,
@@ -119733,6 +119737,7 @@ class TreeViewPlugin extends Plugin {
119733
119737
  };
119734
119738
  typeNode.children.push(node);
119735
119739
  this._objectNodes[node.objectId] = node;
119740
+ this._nodeNodes[node.nodeId] = node;
119736
119741
  }
119737
119742
  }
119738
119743
  }
@@ -119761,7 +119766,7 @@ class TreeViewPlugin extends Plugin {
119761
119766
  const objectId = metaObject.id;
119762
119767
  if (!metaObject.parent) {
119763
119768
  rootNode = {
119764
- nodeId: `${this._id}-objectId`,
119769
+ nodeId: `${this._id}-${objectId}`,
119765
119770
  objectId: objectId,
119766
119771
  title: this._rootName || ((metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType),
119767
119772
  type: metaObjectType,
@@ -119774,6 +119779,7 @@ class TreeViewPlugin extends Plugin {
119774
119779
  };
119775
119780
  this._rootNodes.push(rootNode);
119776
119781
  this._objectNodes[rootNode.objectId] = rootNode;
119782
+ this._nodeNodes[rootNode.nodeId] = rootNode;
119777
119783
  typeNodes = {};
119778
119784
  } else {
119779
119785
  if (rootNode) {
@@ -119796,10 +119802,11 @@ class TreeViewPlugin extends Plugin {
119796
119802
  };
119797
119803
  rootNode.children.push(typeNode);
119798
119804
  this._objectNodes[typeNode.objectId] = typeNode;
119805
+ this._nodeNodes[typeNode.nodeId] = typeNode;
119799
119806
  typeNodes[metaObjectType] = typeNode;
119800
119807
  }
119801
119808
  const node = {
119802
- nodeId: `${this._id}-objectId`,
119809
+ nodeId: `${this._id}-${objectId}`,
119803
119810
  objectId: objectId,
119804
119811
  title: (metaObjectName && metaObjectName !== "" && metaObjectName !== "Default") ? metaObjectName : metaObjectType,
119805
119812
  type: metaObjectType,
@@ -119812,6 +119819,7 @@ class TreeViewPlugin extends Plugin {
119812
119819
  };
119813
119820
  typeNode.children.push(node);
119814
119821
  this._objectNodes[node.objectId] = node;
119822
+ this._nodeNodes[node.nodeId] = node;
119815
119823
  }
119816
119824
  }
119817
119825
  }
@@ -119839,7 +119847,7 @@ class TreeViewPlugin extends Plugin {
119839
119847
  const children = metaObject.children;
119840
119848
  const objectId = metaObject.id;
119841
119849
  const node = {
119842
- nodeId: `${this._id}-objectId`,
119850
+ nodeId: `${this._id}-${objectId}`,
119843
119851
  objectId: objectId,
119844
119852
  title: (!parent) ? (this._rootName || metaObjectName) : (metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType,
119845
119853
  type: metaObjectType,
@@ -119856,7 +119864,7 @@ class TreeViewPlugin extends Plugin {
119856
119864
  this._rootNodes.push(node);
119857
119865
  }
119858
119866
  this._objectNodes[node.objectId] = node;
119859
-
119867
+ this._nodeNodes[node.nodeId] = node;
119860
119868
  if (children) {
119861
119869
  for (let i = 0, len = children.length; i < len; i++) {
119862
119870
  const childMetaObject = children[i];
@@ -120004,7 +120012,7 @@ class TreeViewPlugin extends Plugin {
120004
120012
  if (node.xrayed) {
120005
120013
  nodeElement.classList.add('xrayed-node');
120006
120014
  }
120007
- nodeElement.id = 'node-' + nodeId;
120015
+ nodeElement.id = `${nodeId}`;
120008
120016
  if (node.children.length > 0) {
120009
120017
  const switchElementId = "switch-" + nodeId;
120010
120018
  const switchElement = document.createElement('a');
@@ -120016,7 +120024,7 @@ class TreeViewPlugin extends Plugin {
120016
120024
  nodeElement.appendChild(switchElement);
120017
120025
  }
120018
120026
  const checkbox = document.createElement('input');
120019
- checkbox.id = nodeId;
120027
+ checkbox.id = `${nodeId}`;
120020
120028
  checkbox.type = "checkbox";
120021
120029
  checkbox.checked = node.checked;
120022
120030
  checkbox.style["pointer-events"] = "all";
@@ -120052,9 +120060,8 @@ class TreeViewPlugin extends Plugin {
120052
120060
  if (expanded) {
120053
120061
  return;
120054
120062
  }
120055
- const nodeId = parentElement.id.replace('node-', '');
120056
- const objectId = nodeId;
120057
- const switchNode = this._objectNodes[objectId];
120063
+ const nodeId = parentElement.id;
120064
+ const switchNode = this._nodeNodes[nodeId];
120058
120065
  const childNodes = switchNode.children;
120059
120066
  const nodeElements = childNodes.map((node) => {
120060
120067
  return this._createNodeElement(node);
@@ -119085,6 +119085,7 @@ class TreeViewPlugin extends Plugin {
119085
119085
  this._muteTreeEvents = false;
119086
119086
  this._rootNodes = [];
119087
119087
  this._objectNodes = {}; // Object ID -> Node
119088
+ this._nodeNodes = {}; // Node ID -> Node
119088
119089
  this._rootName = cfg.rootName;
119089
119090
  this._sortNodes = cfg.sortNodes;
119090
119091
  this._pruneEmptyNodes = cfg.pruneEmptyNodes;
@@ -119155,7 +119156,7 @@ class TreeViewPlugin extends Plugin {
119155
119156
  return;
119156
119157
  }
119157
119158
  node.xrayed = xrayed;
119158
- const listItemElementId = 'node-' + node.nodeId;
119159
+ const listItemElementId = node.nodeId;
119159
119160
  const listItemElement = document.getElementById(listItemElementId);
119160
119161
  if (listItemElement !== null) {
119161
119162
  if (xrayed) {
@@ -119189,8 +119190,7 @@ class TreeViewPlugin extends Plugin {
119189
119190
  const checkbox = event.target;
119190
119191
  const visible = checkbox.checked;
119191
119192
  const nodeId = checkbox.id;
119192
- const checkedObjectId = nodeId;
119193
- const checkedNode = this._objectNodes[checkedObjectId];
119193
+ const checkedNode = this._nodeNodes[nodeId];
119194
119194
  const objects = this._viewer.scene.objects;
119195
119195
  let numUpdated = 0;
119196
119196
  this._withNodeTree(checkedNode, (node) => {
@@ -119391,7 +119391,7 @@ class TreeViewPlugin extends Plugin {
119391
119391
  this._expandSwitchElement(switchElement);
119392
119392
  }
119393
119393
  }
119394
- const listItemElementId = 'node-' + nodeId;
119394
+ const listItemElementId = nodeId;
119395
119395
  const listItemElement = document.getElementById(listItemElementId);
119396
119396
  listItemElement.scrollIntoView({block: "center"});
119397
119397
  listItemElement.classList.add("highlighted-node");
@@ -119503,6 +119503,7 @@ class TreeViewPlugin extends Plugin {
119503
119503
 
119504
119504
  this._rootNodes = [];
119505
119505
  this._objectNodes = {};
119506
+ this._nodeNodes = {};
119506
119507
  this._validate();
119507
119508
  if (this.valid || (this._hierarchy !== "storeys")) {
119508
119509
  this._createEnabledNodes();
@@ -119658,7 +119659,7 @@ class TreeViewPlugin extends Plugin {
119658
119659
  const objectId = metaObject.id;
119659
119660
  if (metaObjectType === "IfcBuilding") {
119660
119661
  buildingNode = {
119661
- nodeId: `${this._id}-objectId`,
119662
+ nodeId: `${this._id}-${objectId}`,
119662
119663
  objectId: objectId,
119663
119664
  title: this._rootName || ((metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType),
119664
119665
  type: metaObjectType,
@@ -119671,13 +119672,14 @@ class TreeViewPlugin extends Plugin {
119671
119672
  };
119672
119673
  this._rootNodes.push(buildingNode);
119673
119674
  this._objectNodes[buildingNode.objectId] = buildingNode;
119675
+ this._nodeNodes[buildingNode.nodeId] = buildingNode;
119674
119676
  } else if (metaObjectType === "IfcBuildingStorey") {
119675
119677
  if (!buildingNode) {
119676
119678
  this.error("Failed to build storeys hierarchy for model '" + this.metaModel.id + "' - model does not have an IfcBuilding object, or is not an IFC model");
119677
119679
  return;
119678
119680
  }
119679
119681
  storeyNode = {
119680
- nodeId: `${this._id}-objectId`,
119682
+ nodeId: `${this._id}-${objectId}`,
119681
119683
  objectId: objectId,
119682
119684
  title: (metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType,
119683
119685
  type: metaObjectType,
@@ -119690,6 +119692,7 @@ class TreeViewPlugin extends Plugin {
119690
119692
  };
119691
119693
  buildingNode.children.push(storeyNode);
119692
119694
  this._objectNodes[storeyNode.objectId] = storeyNode;
119695
+ this._nodeNodes[storeyNode.nodeId] = storeyNode;
119693
119696
  typeNodes = {};
119694
119697
  } else {
119695
119698
  if (storeyNode) {
@@ -119713,10 +119716,11 @@ class TreeViewPlugin extends Plugin {
119713
119716
  };
119714
119717
  storeyNode.children.push(typeNode);
119715
119718
  this._objectNodes[typeNode.objectId] = typeNode;
119719
+ this._nodeNodes[typeNode.nodeId] = typeNode;
119716
119720
  typeNodes[metaObjectType] = typeNode;
119717
119721
  }
119718
119722
  const node = {
119719
- nodeId: `${this._id}-objectId`,
119723
+ nodeId: `${this._id}-${objectId}`,
119720
119724
  objectId: objectId,
119721
119725
  title: (metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType,
119722
119726
  type: metaObjectType,
@@ -119729,6 +119733,7 @@ class TreeViewPlugin extends Plugin {
119729
119733
  };
119730
119734
  typeNode.children.push(node);
119731
119735
  this._objectNodes[node.objectId] = node;
119736
+ this._nodeNodes[node.nodeId] = node;
119732
119737
  }
119733
119738
  }
119734
119739
  }
@@ -119757,7 +119762,7 @@ class TreeViewPlugin extends Plugin {
119757
119762
  const objectId = metaObject.id;
119758
119763
  if (!metaObject.parent) {
119759
119764
  rootNode = {
119760
- nodeId: `${this._id}-objectId`,
119765
+ nodeId: `${this._id}-${objectId}`,
119761
119766
  objectId: objectId,
119762
119767
  title: this._rootName || ((metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType),
119763
119768
  type: metaObjectType,
@@ -119770,6 +119775,7 @@ class TreeViewPlugin extends Plugin {
119770
119775
  };
119771
119776
  this._rootNodes.push(rootNode);
119772
119777
  this._objectNodes[rootNode.objectId] = rootNode;
119778
+ this._nodeNodes[rootNode.nodeId] = rootNode;
119773
119779
  typeNodes = {};
119774
119780
  } else {
119775
119781
  if (rootNode) {
@@ -119792,10 +119798,11 @@ class TreeViewPlugin extends Plugin {
119792
119798
  };
119793
119799
  rootNode.children.push(typeNode);
119794
119800
  this._objectNodes[typeNode.objectId] = typeNode;
119801
+ this._nodeNodes[typeNode.nodeId] = typeNode;
119795
119802
  typeNodes[metaObjectType] = typeNode;
119796
119803
  }
119797
119804
  const node = {
119798
- nodeId: `${this._id}-objectId`,
119805
+ nodeId: `${this._id}-${objectId}`,
119799
119806
  objectId: objectId,
119800
119807
  title: (metaObjectName && metaObjectName !== "" && metaObjectName !== "Default") ? metaObjectName : metaObjectType,
119801
119808
  type: metaObjectType,
@@ -119808,6 +119815,7 @@ class TreeViewPlugin extends Plugin {
119808
119815
  };
119809
119816
  typeNode.children.push(node);
119810
119817
  this._objectNodes[node.objectId] = node;
119818
+ this._nodeNodes[node.nodeId] = node;
119811
119819
  }
119812
119820
  }
119813
119821
  }
@@ -119835,7 +119843,7 @@ class TreeViewPlugin extends Plugin {
119835
119843
  const children = metaObject.children;
119836
119844
  const objectId = metaObject.id;
119837
119845
  const node = {
119838
- nodeId: `${this._id}-objectId`,
119846
+ nodeId: `${this._id}-${objectId}`,
119839
119847
  objectId: objectId,
119840
119848
  title: (!parent) ? (this._rootName || metaObjectName) : (metaObjectName && metaObjectName !== "" && metaObjectName !== "Undefined" && metaObjectName !== "Default") ? metaObjectName : metaObjectType,
119841
119849
  type: metaObjectType,
@@ -119852,7 +119860,7 @@ class TreeViewPlugin extends Plugin {
119852
119860
  this._rootNodes.push(node);
119853
119861
  }
119854
119862
  this._objectNodes[node.objectId] = node;
119855
-
119863
+ this._nodeNodes[node.nodeId] = node;
119856
119864
  if (children) {
119857
119865
  for (let i = 0, len = children.length; i < len; i++) {
119858
119866
  const childMetaObject = children[i];
@@ -120000,7 +120008,7 @@ class TreeViewPlugin extends Plugin {
120000
120008
  if (node.xrayed) {
120001
120009
  nodeElement.classList.add('xrayed-node');
120002
120010
  }
120003
- nodeElement.id = 'node-' + nodeId;
120011
+ nodeElement.id = `${nodeId}`;
120004
120012
  if (node.children.length > 0) {
120005
120013
  const switchElementId = "switch-" + nodeId;
120006
120014
  const switchElement = document.createElement('a');
@@ -120012,7 +120020,7 @@ class TreeViewPlugin extends Plugin {
120012
120020
  nodeElement.appendChild(switchElement);
120013
120021
  }
120014
120022
  const checkbox = document.createElement('input');
120015
- checkbox.id = nodeId;
120023
+ checkbox.id = `${nodeId}`;
120016
120024
  checkbox.type = "checkbox";
120017
120025
  checkbox.checked = node.checked;
120018
120026
  checkbox.style["pointer-events"] = "all";
@@ -120048,9 +120056,8 @@ class TreeViewPlugin extends Plugin {
120048
120056
  if (expanded) {
120049
120057
  return;
120050
120058
  }
120051
- const nodeId = parentElement.id.replace('node-', '');
120052
- const objectId = nodeId;
120053
- const switchNode = this._objectNodes[objectId];
120059
+ const nodeId = parentElement.id;
120060
+ const switchNode = this._nodeNodes[nodeId];
120054
120061
  const childNodes = switchNode.children;
120055
120062
  const nodeElements = childNodes.map((node) => {
120056
120063
  return this._createNodeElement(node);
@@ -26265,9 +26265,10 @@ imagePos[0]=Math.floor(storeyMap.width-(worldPos[0]-xmin)*ratioX);imagePos[1]=Ma
26265
26265
  * True if errors were found generating this TreeView.
26266
26266
  * @type {boolean}
26267
26267
  */_this132.valid=true;if(!cfg.containerElement){_this132.error("Config expected: containerElement");return _possibleConstructorReturn(_this132);}for(var _i575=0;;_i575++){if(!treeViews[_i575]){treeViews[_i575]=_assertThisInitialized(_this132);_this132._index=_i575;_this132._id="tree-".concat(_i575,"-");break;}}_this132._containerElement=cfg.containerElement;_this132._metaModels={};_this132._autoAddModels=cfg.autoAddModels!==false;_this132._autoExpandDepth=cfg.autoExpandDepth||0;_this132._sortNodes=cfg.sortNodes!==false;_this132._pruneEmptyNodes=cfg.pruneEmptyNodes!==false;_this132._viewer=viewer;_this132._rootElement=null;_this132._muteSceneEvents=false;_this132._muteTreeEvents=false;_this132._rootNodes=[];_this132._objectNodes={};// Object ID -> Node
26268
+ _this132._nodeNodes={};// Node ID -> Node
26268
26269
  _this132._rootName=cfg.rootName;_this132._sortNodes=cfg.sortNodes;_this132._pruneEmptyNodes=cfg.pruneEmptyNodes;_this132._showListItemElementId=null;_this132._containerElement.oncontextmenu=function(e){e.preventDefault();};_this132._onObjectVisibility=_this132._viewer.scene.on("objectVisibility",function(entity){if(_this132._muteSceneEvents){return;}var objectId=entity.id;var node=_this132._objectNodes[objectId];if(!node){return;// Not in this tree
26269
26270
  }var visible=entity.visible;var updated=visible!==node.checked;if(!updated){return;}_this132._muteTreeEvents=true;node.checked=visible;if(visible){node.numVisibleEntities++;}else{node.numVisibleEntities--;}var checkbox=document.getElementById(node.nodeId);if(checkbox){checkbox.checked=visible;}var parent=node.parent;while(parent){parent.checked=visible;if(visible){parent.numVisibleEntities++;}else{parent.numVisibleEntities--;}var parentCheckbox=document.getElementById(parent.nodeId);if(parentCheckbox){var newChecked=parent.numVisibleEntities>0;if(newChecked!==parentCheckbox.checked){parentCheckbox.checked=newChecked;}}parent=parent.parent;}_this132._muteTreeEvents=false;});_this132._onObjectXrayed=_this132._viewer.scene.on('objectXRayed',function(entity){if(_this132._muteSceneEvents){return;}var objectId=entity.id;var node=_this132._objectNodes[objectId];if(!node){return;// Not in this tree
26270
- }_this132._muteTreeEvents=true;var xrayed=entity.xrayed;var updated=xrayed!==node.xrayed;if(!updated){return;}node.xrayed=xrayed;var listItemElementId='node-'+node.nodeId;var listItemElement=document.getElementById(listItemElementId);if(listItemElement!==null){if(xrayed){listItemElement.classList.add('xrayed-node');}else{listItemElement.classList.remove('xrayed-node');}}_this132._muteTreeEvents=false;});_this132._switchExpandHandler=function(event){event.preventDefault();event.stopPropagation();var switchElement=event.target;_this132._expandSwitchElement(switchElement);};_this132._switchCollapseHandler=function(event){event.preventDefault();event.stopPropagation();var switchElement=event.target;_this132._collapseSwitchElement(switchElement);};_this132._checkboxChangeHandler=function(event){if(_this132._muteTreeEvents){return;}_this132._muteSceneEvents=true;var checkbox=event.target;var visible=checkbox.checked;var nodeId=checkbox.id;var checkedObjectId=nodeId;var checkedNode=_this132._objectNodes[checkedObjectId];var objects=_this132._viewer.scene.objects;var numUpdated=0;_this132._withNodeTree(checkedNode,function(node){var objectId=node.objectId;var checkBoxId=node.nodeId;var entity=objects[objectId];var isLeaf=node.children.length===0;node.numVisibleEntities=visible?node.numEntities:0;if(isLeaf&&visible!==node.checked){numUpdated++;}node.checked=visible;var checkbox2=document.getElementById(checkBoxId);if(checkbox2){checkbox2.checked=visible;}if(entity){entity.visible=visible;}});var parent=checkedNode.parent;while(parent){parent.checked=visible;var checkbox2=document.getElementById(parent.nodeId);// Parent checkboxes are always in DOM
26271
+ }_this132._muteTreeEvents=true;var xrayed=entity.xrayed;var updated=xrayed!==node.xrayed;if(!updated){return;}node.xrayed=xrayed;var listItemElementId=node.nodeId;var listItemElement=document.getElementById(listItemElementId);if(listItemElement!==null){if(xrayed){listItemElement.classList.add('xrayed-node');}else{listItemElement.classList.remove('xrayed-node');}}_this132._muteTreeEvents=false;});_this132._switchExpandHandler=function(event){event.preventDefault();event.stopPropagation();var switchElement=event.target;_this132._expandSwitchElement(switchElement);};_this132._switchCollapseHandler=function(event){event.preventDefault();event.stopPropagation();var switchElement=event.target;_this132._collapseSwitchElement(switchElement);};_this132._checkboxChangeHandler=function(event){if(_this132._muteTreeEvents){return;}_this132._muteSceneEvents=true;var checkbox=event.target;var visible=checkbox.checked;var nodeId=checkbox.id;var checkedNode=_this132._nodeNodes[nodeId];var objects=_this132._viewer.scene.objects;var numUpdated=0;_this132._withNodeTree(checkedNode,function(node){var objectId=node.objectId;var checkBoxId=node.nodeId;var entity=objects[objectId];var isLeaf=node.children.length===0;node.numVisibleEntities=visible?node.numEntities:0;if(isLeaf&&visible!==node.checked){numUpdated++;}node.checked=visible;var checkbox2=document.getElementById(checkBoxId);if(checkbox2){checkbox2.checked=visible;}if(entity){entity.visible=visible;}});var parent=checkedNode.parent;while(parent){parent.checked=visible;var checkbox2=document.getElementById(parent.nodeId);// Parent checkboxes are always in DOM
26271
26272
  if(visible){parent.numVisibleEntities+=numUpdated;}else{parent.numVisibleEntities-=numUpdated;}var newChecked=parent.numVisibleEntities>0;if(newChecked!==checkbox2.checked){checkbox2.checked=newChecked;}parent=parent.parent;}_this132._muteSceneEvents=false;};_this132._hierarchy=cfg.hierarchy||"containment";_this132._autoExpandDepth=cfg.autoExpandDepth||0;if(_this132._autoAddModels){var modelIds=Object.keys(_this132.viewer.metaScene.metaModels);for(var _i576=0,len=modelIds.length;_i576<len;_i576++){var modelId=modelIds[_i576];_this132.addModel(modelId);}_this132.viewer.scene.on("modelLoaded",function(modelId){if(_this132.viewer.metaScene.metaModels[modelId]){_this132.addModel(modelId);}});}_this132.hierarchy=cfg.hierarchy;return _this132;}/**
26272
26273
  * Sets how the nodes are organized within this tree view.
26273
26274
  *
@@ -26322,7 +26323,7 @@ if(visible){parent.numVisibleEntities+=numUpdated;}else{parent.numVisibleEntitie
26322
26323
  *
26323
26324
  * @param {String} objectId ID of the {@link Entity}.
26324
26325
  */},{key:"showNode",value:function showNode(objectId){if(this._showListItemElementId){this.unShowNode();}var node=this._objectNodes[objectId];if(!node){return;// Node may not exist for the given object if (this._pruneEmptyNodes == true)
26325
- }var nodeId=node.nodeId;var switchElementId="switch-"+nodeId;var switchElement=document.getElementById(switchElementId);if(switchElement){this._expandSwitchElement(switchElement);switchElement.scrollIntoView();return;}var path=[];path.unshift(node);var parent=node.parent;while(parent){path.unshift(parent);parent=parent.parent;}for(var _i577=0,len=path.length;_i577<len;_i577++){var _node15=path[_i577];var _nodeId=_node15.nodeId;var _switchElementId="switch-"+_nodeId;var _switchElement=document.getElementById(_switchElementId);if(_switchElement){this._expandSwitchElement(_switchElement);}}var listItemElementId='node-'+nodeId;var listItemElement=document.getElementById(listItemElementId);listItemElement.scrollIntoView({block:"center"});listItemElement.classList.add("highlighted-node");this._showListItemElementId=listItemElementId;}/**
26326
+ }var nodeId=node.nodeId;var switchElementId="switch-"+nodeId;var switchElement=document.getElementById(switchElementId);if(switchElement){this._expandSwitchElement(switchElement);switchElement.scrollIntoView();return;}var path=[];path.unshift(node);var parent=node.parent;while(parent){path.unshift(parent);parent=parent.parent;}for(var _i577=0,len=path.length;_i577<len;_i577++){var _node15=path[_i577];var _nodeId=_node15.nodeId;var _switchElementId="switch-"+_nodeId;var _switchElement=document.getElementById(_switchElementId);if(_switchElement){this._expandSwitchElement(_switchElement);}}var listItemElementId=nodeId;var listItemElement=document.getElementById(listItemElementId);listItemElement.scrollIntoView({block:"center"});listItemElement.classList.add("highlighted-node");this._showListItemElementId=listItemElementId;}/**
26326
26327
  * De-highlights the node previously shown with {@link TreeViewPlugin#showNode}.
26327
26328
  *
26328
26329
  * Does nothing if no node is currently shown.
@@ -26344,7 +26345,7 @@ if(visible){parent.numVisibleEntities+=numUpdated;}else{parent.numVisibleEntitie
26344
26345
  * @param {Function} callback Callback called at each {@link TreeViewNode}, with the TreeViewNode given as the argument.
26345
26346
  */},{key:"withNodeTree",value:function withNodeTree(node,callback){callback(node);var children=node.children;if(!children){return;}for(var _i580=0,len=children.length;_i580<len;_i580++){this.withNodeTree(children[_i580],callback);}}/**
26346
26347
  * Destroys this TreeViewPlugin.
26347
- */},{key:"destroy",value:function destroy(){if(!this._containerElement){return;}this._metaModels={};if(this._rootElement&&!this._destroyed){this._rootElement.parentNode.removeChild(this._rootElement);this._viewer.scene.off(this._onObjectVisibility);this._destroyed=true;}delete treeViews[this._index];_get(_getPrototypeOf(TreeViewPlugin.prototype),"destroy",this).call(this);}},{key:"_createNodes",value:function _createNodes(){if(this._rootElement){this._rootElement.parentNode.removeChild(this._rootElement);this._rootElement=null;}this._rootNodes=[];this._objectNodes={};this._validate();if(this.valid||this._hierarchy!=="storeys"){this._createEnabledNodes();}else{this._createDisabledNodes();}}},{key:"_validate",value:function _validate(){this.errors=[];switch(this._hierarchy){case"storeys":this.valid=this._validateMetaModelForStoreysHierarchy();break;case"types":this.valid=this._rootNodes.length>0;break;case"containment":default:this.valid=this._rootNodes.length>0;break;}return this.valid;}},{key:"_validateMetaModelForStoreysHierarchy",value:function _validateMetaModelForStoreysHierarchy(){var level=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var ctx=arguments.length>1?arguments[1]:undefined;var buildingNode=arguments.length>2?arguments[2]:undefined;// ctx = ctx || {
26348
+ */},{key:"destroy",value:function destroy(){if(!this._containerElement){return;}this._metaModels={};if(this._rootElement&&!this._destroyed){this._rootElement.parentNode.removeChild(this._rootElement);this._viewer.scene.off(this._onObjectVisibility);this._destroyed=true;}delete treeViews[this._index];_get(_getPrototypeOf(TreeViewPlugin.prototype),"destroy",this).call(this);}},{key:"_createNodes",value:function _createNodes(){if(this._rootElement){this._rootElement.parentNode.removeChild(this._rootElement);this._rootElement=null;}this._rootNodes=[];this._objectNodes={};this._nodeNodes={};this._validate();if(this.valid||this._hierarchy!=="storeys"){this._createEnabledNodes();}else{this._createDisabledNodes();}}},{key:"_validate",value:function _validate(){this.errors=[];switch(this._hierarchy){case"storeys":this.valid=this._validateMetaModelForStoreysHierarchy();break;case"types":this.valid=this._rootNodes.length>0;break;case"containment":default:this.valid=this._rootNodes.length>0;break;}return this.valid;}},{key:"_validateMetaModelForStoreysHierarchy",value:function _validateMetaModelForStoreysHierarchy(){var level=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var ctx=arguments.length>1?arguments[1]:undefined;var buildingNode=arguments.length>2?arguments[2]:undefined;// ctx = ctx || {
26348
26349
  // foundIFCBuildingStoreys: false
26349
26350
  // };
26350
26351
  // const metaObjectType = metaObject.type;
@@ -26371,13 +26372,13 @@ if(visible){parent.numVisibleEntities+=numUpdated;}else{parent.numVisibleEntitie
26371
26372
  // // errors.push("Can't build storeys hierarchy: no IfcBuildingStoreys found");
26372
26373
  // }
26373
26374
  // }
26374
- return true;}},{key:"_createEnabledNodes",value:function _createEnabledNodes(){if(this._pruneEmptyNodes){this._findEmptyNodes();}switch(this._hierarchy){case"storeys":this._createStoreysNodes();if(this._rootNodes.length===0){this.error("Failed to build storeys hierarchy");}break;case"types":this._createTypesNodes();break;case"containment":default:this._createContainmentNodes();}if(this._sortNodes){this._doSortNodes();}this._synchNodesToEntities();this._createTrees();this.expandToDepth(this._autoExpandDepth);}},{key:"_createDisabledNodes",value:function _createDisabledNodes(){var ul=document.createElement('ul');this._rootElement=ul;this._containerElement.appendChild(ul);var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var _i581=0,len=rootMetaObjects.length;_i581<len;_i581++){var rootMetaObject=rootMetaObjects[_i581];var metaObjectType=rootMetaObject.type;var metaObjectName=rootMetaObject.name;var rootName=metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType;var li=document.createElement('li');ul.appendChild(li);var switchElement=document.createElement('a');switchElement.href='#';switchElement.textContent='!';switchElement.classList.add('warn');switchElement.classList.add('warning');li.appendChild(switchElement);var span=document.createElement('span');span.textContent=rootName;li.appendChild(span);}}},{key:"_findEmptyNodes",value:function _findEmptyNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var _i582=0,len=rootMetaObjects.length;_i582<len;_i582++){this._findEmptyNodes2(rootMetaObjects[_i582]);}}},{key:"_findEmptyNodes2",value:function _findEmptyNodes2(metaObject){var countEntities=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var viewer=this.viewer;var scene=viewer.scene;var children=metaObject.children;var objectId=metaObject.id;var entity=scene.objects[objectId];metaObject._countEntities=0;if(entity){metaObject._countEntities++;}if(children){for(var _i583=0,len=children.length;_i583<len;_i583++){var childMetaObject=children[_i583];childMetaObject._countEntities=this._findEmptyNodes2(childMetaObject);metaObject._countEntities+=childMetaObject._countEntities;}}return metaObject._countEntities;}},{key:"_createStoreysNodes",value:function _createStoreysNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var id in rootMetaObjects){this._createStoreysNodes2(rootMetaObjects[id],null,null,null);}}},{key:"_createStoreysNodes2",value:function _createStoreysNodes2(metaObject,buildingNode,storeyNode,typeNodes){if(this._pruneEmptyNodes&&metaObject._countEntities===0){return;}var metaObjectType=metaObject.type;var metaObjectName=metaObject.name;var children=metaObject.children;var objectId=metaObject.id;if(metaObjectType==="IfcBuilding"){buildingNode={nodeId:"".concat(this._id,"-objectId"),objectId:objectId,title:this._rootName||(metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType),type:metaObjectType,parent:null,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};this._rootNodes.push(buildingNode);this._objectNodes[buildingNode.objectId]=buildingNode;}else if(metaObjectType==="IfcBuildingStorey"){if(!buildingNode){this.error("Failed to build storeys hierarchy for model '"+this.metaModel.id+"' - model does not have an IfcBuilding object, or is not an IFC model");return;}storeyNode={nodeId:"".concat(this._id,"-objectId"),objectId:objectId,title:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:buildingNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};buildingNode.children.push(storeyNode);this._objectNodes[storeyNode.objectId]=storeyNode;typeNodes={};}else{if(storeyNode){var objects=this._viewer.scene.objects;var object=objects[objectId];if(object){typeNodes=typeNodes||{};var typeNode=typeNodes[metaObjectType];if(!typeNode){typeNode={nodeId:"".concat(this._id,"-").concat(storeyNode.objectId,"-").concat(metaObjectType),objectId:"".concat(storeyNode.objectId,"-").concat(metaObjectType),title:metaObjectType,type:metaObjectType,parent:storeyNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};storeyNode.children.push(typeNode);this._objectNodes[typeNode.objectId]=typeNode;typeNodes[metaObjectType]=typeNode;}var _node16={nodeId:"".concat(this._id,"-objectId"),objectId:objectId,title:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:typeNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};typeNode.children.push(_node16);this._objectNodes[_node16.objectId]=_node16;}}}if(children){for(var _i584=0,len=children.length;_i584<len;_i584++){var childMetaObject=children[_i584];this._createStoreysNodes2(childMetaObject,buildingNode,storeyNode,typeNodes);}}}},{key:"_createTypesNodes",value:function _createTypesNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var id in rootMetaObjects){this._createTypesNodes2(rootMetaObjects[id],null,null);}}},{key:"_createTypesNodes2",value:function _createTypesNodes2(metaObject,rootNode,typeNodes){if(this._pruneEmptyNodes&&metaObject._countEntities===0){return;}var metaObjectType=metaObject.type;var metaObjectName=metaObject.name;var children=metaObject.children;var objectId=metaObject.id;if(!metaObject.parent){rootNode={nodeId:"".concat(this._id,"-objectId"),objectId:objectId,title:this._rootName||(metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType),type:metaObjectType,parent:null,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};this._rootNodes.push(rootNode);this._objectNodes[rootNode.objectId]=rootNode;typeNodes={};}else{if(rootNode){var objects=this._viewer.scene.objects;var object=objects[objectId];if(object){var typeNode=typeNodes[metaObjectType];if(!typeNode){typeNode={nodeId:"".concat(this._id,"-").concat(rootNode.objectId,"-").concat(metaObjectType),objectId:"".concat(rootNode.objectId,"-").concat(metaObjectType),title:metaObjectType,type:metaObjectType,parent:rootNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};rootNode.children.push(typeNode);this._objectNodes[typeNode.objectId]=typeNode;typeNodes[metaObjectType]=typeNode;}var _node17={nodeId:"".concat(this._id,"-objectId"),objectId:objectId,title:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:typeNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};typeNode.children.push(_node17);this._objectNodes[_node17.objectId]=_node17;}}}if(children){for(var _i585=0,len=children.length;_i585<len;_i585++){var childMetaObject=children[_i585];this._createTypesNodes2(childMetaObject,rootNode,typeNodes);}}}},{key:"_createContainmentNodes",value:function _createContainmentNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var id in rootMetaObjects){this._createContainmentNodes2(rootMetaObjects[id],null);}}},{key:"_createContainmentNodes2",value:function _createContainmentNodes2(metaObject,parent){if(this._pruneEmptyNodes&&metaObject._countEntities===0){return;}var metaObjectType=metaObject.type;var metaObjectName=metaObject.name||metaObjectType;var children=metaObject.children;var objectId=metaObject.id;var node={nodeId:"".concat(this._id,"-objectId"),objectId:objectId,title:!parent?this._rootName||metaObjectName:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:parent,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};if(parent){parent.children.push(node);}else{this._rootNodes.push(node);}this._objectNodes[node.objectId]=node;if(children){for(var _i586=0,len=children.length;_i586<len;_i586++){var childMetaObject=children[_i586];this._createContainmentNodes2(childMetaObject,node);}}}},{key:"_doSortNodes",value:function _doSortNodes(){for(var _i587=0,len=this._rootNodes.length;_i587<len;_i587++){var rootNode=this._rootNodes[_i587];this._sortChildren(rootNode);}}},{key:"_sortChildren",value:function _sortChildren(node){var children=node.children;if(!children||children.length===0){return;}if(this._hierarchy==="storeys"&&node.type==="IfcBuilding"){// Assumes that children of an IfcBuilding will always be IfcBuildingStoreys
26375
+ return true;}},{key:"_createEnabledNodes",value:function _createEnabledNodes(){if(this._pruneEmptyNodes){this._findEmptyNodes();}switch(this._hierarchy){case"storeys":this._createStoreysNodes();if(this._rootNodes.length===0){this.error("Failed to build storeys hierarchy");}break;case"types":this._createTypesNodes();break;case"containment":default:this._createContainmentNodes();}if(this._sortNodes){this._doSortNodes();}this._synchNodesToEntities();this._createTrees();this.expandToDepth(this._autoExpandDepth);}},{key:"_createDisabledNodes",value:function _createDisabledNodes(){var ul=document.createElement('ul');this._rootElement=ul;this._containerElement.appendChild(ul);var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var _i581=0,len=rootMetaObjects.length;_i581<len;_i581++){var rootMetaObject=rootMetaObjects[_i581];var metaObjectType=rootMetaObject.type;var metaObjectName=rootMetaObject.name;var rootName=metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType;var li=document.createElement('li');ul.appendChild(li);var switchElement=document.createElement('a');switchElement.href='#';switchElement.textContent='!';switchElement.classList.add('warn');switchElement.classList.add('warning');li.appendChild(switchElement);var span=document.createElement('span');span.textContent=rootName;li.appendChild(span);}}},{key:"_findEmptyNodes",value:function _findEmptyNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var _i582=0,len=rootMetaObjects.length;_i582<len;_i582++){this._findEmptyNodes2(rootMetaObjects[_i582]);}}},{key:"_findEmptyNodes2",value:function _findEmptyNodes2(metaObject){var countEntities=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var viewer=this.viewer;var scene=viewer.scene;var children=metaObject.children;var objectId=metaObject.id;var entity=scene.objects[objectId];metaObject._countEntities=0;if(entity){metaObject._countEntities++;}if(children){for(var _i583=0,len=children.length;_i583<len;_i583++){var childMetaObject=children[_i583];childMetaObject._countEntities=this._findEmptyNodes2(childMetaObject);metaObject._countEntities+=childMetaObject._countEntities;}}return metaObject._countEntities;}},{key:"_createStoreysNodes",value:function _createStoreysNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var id in rootMetaObjects){this._createStoreysNodes2(rootMetaObjects[id],null,null,null);}}},{key:"_createStoreysNodes2",value:function _createStoreysNodes2(metaObject,buildingNode,storeyNode,typeNodes){if(this._pruneEmptyNodes&&metaObject._countEntities===0){return;}var metaObjectType=metaObject.type;var metaObjectName=metaObject.name;var children=metaObject.children;var objectId=metaObject.id;if(metaObjectType==="IfcBuilding"){buildingNode={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:this._rootName||(metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType),type:metaObjectType,parent:null,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};this._rootNodes.push(buildingNode);this._objectNodes[buildingNode.objectId]=buildingNode;this._nodeNodes[buildingNode.nodeId]=buildingNode;}else if(metaObjectType==="IfcBuildingStorey"){if(!buildingNode){this.error("Failed to build storeys hierarchy for model '"+this.metaModel.id+"' - model does not have an IfcBuilding object, or is not an IFC model");return;}storeyNode={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:buildingNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};buildingNode.children.push(storeyNode);this._objectNodes[storeyNode.objectId]=storeyNode;this._nodeNodes[storeyNode.nodeId]=storeyNode;typeNodes={};}else{if(storeyNode){var objects=this._viewer.scene.objects;var object=objects[objectId];if(object){typeNodes=typeNodes||{};var typeNode=typeNodes[metaObjectType];if(!typeNode){typeNode={nodeId:"".concat(this._id,"-").concat(storeyNode.objectId,"-").concat(metaObjectType),objectId:"".concat(storeyNode.objectId,"-").concat(metaObjectType),title:metaObjectType,type:metaObjectType,parent:storeyNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};storeyNode.children.push(typeNode);this._objectNodes[typeNode.objectId]=typeNode;this._nodeNodes[typeNode.nodeId]=typeNode;typeNodes[metaObjectType]=typeNode;}var _node16={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:typeNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};typeNode.children.push(_node16);this._objectNodes[_node16.objectId]=_node16;this._nodeNodes[_node16.nodeId]=_node16;}}}if(children){for(var _i584=0,len=children.length;_i584<len;_i584++){var childMetaObject=children[_i584];this._createStoreysNodes2(childMetaObject,buildingNode,storeyNode,typeNodes);}}}},{key:"_createTypesNodes",value:function _createTypesNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var id in rootMetaObjects){this._createTypesNodes2(rootMetaObjects[id],null,null);}}},{key:"_createTypesNodes2",value:function _createTypesNodes2(metaObject,rootNode,typeNodes){if(this._pruneEmptyNodes&&metaObject._countEntities===0){return;}var metaObjectType=metaObject.type;var metaObjectName=metaObject.name;var children=metaObject.children;var objectId=metaObject.id;if(!metaObject.parent){rootNode={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:this._rootName||(metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType),type:metaObjectType,parent:null,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};this._rootNodes.push(rootNode);this._objectNodes[rootNode.objectId]=rootNode;this._nodeNodes[rootNode.nodeId]=rootNode;typeNodes={};}else{if(rootNode){var objects=this._viewer.scene.objects;var object=objects[objectId];if(object){var typeNode=typeNodes[metaObjectType];if(!typeNode){typeNode={nodeId:"".concat(this._id,"-").concat(rootNode.objectId,"-").concat(metaObjectType),objectId:"".concat(rootNode.objectId,"-").concat(metaObjectType),title:metaObjectType,type:metaObjectType,parent:rootNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};rootNode.children.push(typeNode);this._objectNodes[typeNode.objectId]=typeNode;this._nodeNodes[typeNode.nodeId]=typeNode;typeNodes[metaObjectType]=typeNode;}var _node17={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:typeNode,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};typeNode.children.push(_node17);this._objectNodes[_node17.objectId]=_node17;this._nodeNodes[_node17.nodeId]=_node17;}}}if(children){for(var _i585=0,len=children.length;_i585<len;_i585++){var childMetaObject=children[_i585];this._createTypesNodes2(childMetaObject,rootNode,typeNodes);}}}},{key:"_createContainmentNodes",value:function _createContainmentNodes(){var rootMetaObjects=this._viewer.metaScene.rootMetaObjects;for(var id in rootMetaObjects){this._createContainmentNodes2(rootMetaObjects[id],null);}}},{key:"_createContainmentNodes2",value:function _createContainmentNodes2(metaObject,parent){if(this._pruneEmptyNodes&&metaObject._countEntities===0){return;}var metaObjectType=metaObject.type;var metaObjectName=metaObject.name||metaObjectType;var children=metaObject.children;var objectId=metaObject.id;var node={nodeId:"".concat(this._id,"-").concat(objectId),objectId:objectId,title:!parent?this._rootName||metaObjectName:metaObjectName&&metaObjectName!==""&&metaObjectName!=="Undefined"&&metaObjectName!=="Default"?metaObjectName:metaObjectType,type:metaObjectType,parent:parent,numEntities:0,numVisibleEntities:0,checked:false,xrayed:false,children:[]};if(parent){parent.children.push(node);}else{this._rootNodes.push(node);}this._objectNodes[node.objectId]=node;this._nodeNodes[node.nodeId]=node;if(children){for(var _i586=0,len=children.length;_i586<len;_i586++){var childMetaObject=children[_i586];this._createContainmentNodes2(childMetaObject,node);}}}},{key:"_doSortNodes",value:function _doSortNodes(){for(var _i587=0,len=this._rootNodes.length;_i587<len;_i587++){var rootNode=this._rootNodes[_i587];this._sortChildren(rootNode);}}},{key:"_sortChildren",value:function _sortChildren(node){var children=node.children;if(!children||children.length===0){return;}if(this._hierarchy==="storeys"&&node.type==="IfcBuilding"){// Assumes that children of an IfcBuilding will always be IfcBuildingStoreys
26375
26376
  children.sort(this._getSpatialSortFunc());}else{children.sort(this._alphaSortFunc);}for(var _i588=0,len=children.length;_i588<len;_i588++){var _node18=children[_i588];this._sortChildren(_node18);}}},{key:"_getSpatialSortFunc",value:function _getSpatialSortFunc(){// Creates cached sort func with Viewer in scope
26376
26377
  var viewer=this.viewer;var scene=viewer.scene;var camera=scene.camera;var metaScene=viewer.metaScene;return this._spatialSortFunc||(this._spatialSortFunc=function(node1,node2){if(!node1.aabb||!node2.aabb){// Sorting on lowest point of the AABB is likely more more robust when objects could overlap storeys
26377
26378
  if(!node1.aabb){node1.aabb=scene.getAABB(metaScene.getObjectIDsInSubtree(node1.objectId));}if(!node2.aabb){node2.aabb=scene.getAABB(metaScene.getObjectIDsInSubtree(node2.objectId));}}var idx=0;if(camera.xUp){idx=0;}else if(camera.yUp){idx=1;}else{idx=2;}if(node1.aabb[idx]>node2.aabb[idx]){return-1;}if(node1.aabb[idx]<node2.aabb[idx]){return 1;}return 0;});}},{key:"_alphaSortFunc",value:function _alphaSortFunc(node1,node2){var title1=node1.title.toUpperCase();// FIXME: Should be case sensitive?
26378
26379
  var title2=node2.title.toUpperCase();if(title1<title2){return-1;}if(title1>title2){return 1;}return 0;}},{key:"_synchNodesToEntities",value:function _synchNodesToEntities(){var objectIds=Object.keys(this.viewer.metaScene.metaObjects);var metaObjects=this._viewer.metaScene.metaObjects;var objects=this._viewer.scene.objects;for(var _i589=0,len=objectIds.length;_i589<len;_i589++){var objectId=objectIds[_i589];var metaObject=metaObjects[objectId];if(metaObject){var _node19=this._objectNodes[objectId];if(_node19){var entity=objects[objectId];if(entity){var visible=entity.visible;_node19.numEntities=1;_node19.xrayed=entity.xrayed;if(visible){_node19.numVisibleEntities=1;_node19.checked=true;}else{_node19.numVisibleEntities=0;_node19.checked=false;}var parent=_node19.parent;// Synch parents
26379
26380
  while(parent){parent.numEntities++;if(visible){parent.numVisibleEntities++;parent.checked=true;}parent=parent.parent;}}}}}}},{key:"_withNodeTree",value:function _withNodeTree(node,callback){callback(node);var children=node.children;if(!children){return;}for(var _i590=0,len=children.length;_i590<len;_i590++){this._withNodeTree(children[_i590],callback);}}},{key:"_createTrees",value:function _createTrees(){var _this135=this;if(this._rootNodes.length===0){return;}var rootNodeElements=this._rootNodes.map(function(rootNode){return _this135._createNodeElement(rootNode);});var ul=document.createElement('ul');rootNodeElements.forEach(function(nodeElement){ul.appendChild(nodeElement);});this._containerElement.appendChild(ul);this._rootElement=ul;}},{key:"_createNodeElement",value:function _createNodeElement(node){var _this136=this;var nodeElement=document.createElement('li');//const nodeId = this._objectToNodeID(node.objectId);
26380
- var nodeId=node.nodeId;if(node.xrayed){nodeElement.classList.add('xrayed-node');}nodeElement.id='node-'+nodeId;if(node.children.length>0){var switchElementId="switch-"+nodeId;var switchElement=document.createElement('a');switchElement.href='#';switchElement.id=switchElementId;switchElement.textContent='+';switchElement.classList.add('plus');switchElement.addEventListener('click',this._switchExpandHandler);nodeElement.appendChild(switchElement);}var checkbox=document.createElement('input');checkbox.id=nodeId;checkbox.type="checkbox";checkbox.checked=node.checked;checkbox.style["pointer-events"]="all";checkbox.addEventListener("change",this._checkboxChangeHandler);nodeElement.appendChild(checkbox);var span=document.createElement('span');span.textContent=node.title;nodeElement.appendChild(span);span.oncontextmenu=function(e){_this136.fire("contextmenu",{event:e,viewer:_this136._viewer,treeViewPlugin:_this136,treeViewNode:node});e.preventDefault();};span.onclick=function(e){_this136.fire("nodeTitleClicked",{event:e,viewer:_this136._viewer,treeViewPlugin:_this136,treeViewNode:node});e.preventDefault();};return nodeElement;}},{key:"_expandSwitchElement",value:function _expandSwitchElement(switchElement){var _this137=this;var parentElement=switchElement.parentElement;var expanded=parentElement.getElementsByTagName('li')[0];if(expanded){return;}var nodeId=parentElement.id.replace('node-','');var objectId=nodeId;var switchNode=this._objectNodes[objectId];var childNodes=switchNode.children;var nodeElements=childNodes.map(function(node){return _this137._createNodeElement(node);});var ul=document.createElement('ul');nodeElements.forEach(function(nodeElement){ul.appendChild(nodeElement);});parentElement.appendChild(ul);switchElement.classList.remove('plus');switchElement.classList.add('minus');switchElement.textContent='-';switchElement.removeEventListener('click',this._switchExpandHandler);switchElement.addEventListener('click',this._switchCollapseHandler);}},{key:"_collapseNode",value:function _collapseNode(objectId){var nodeId=objectId;var switchElementId="switch-"+nodeId;var switchElement=document.getElementById(switchElementId);this._collapseSwitchElement(switchElement);}},{key:"_collapseSwitchElement",value:function _collapseSwitchElement(switchElement){if(!switchElement){return;}var parent=switchElement.parentElement;if(!parent){return;}var ul=parent.querySelector('ul');if(!ul){return;}parent.removeChild(ul);switchElement.classList.remove('minus');switchElement.classList.add('plus');switchElement.textContent='+';switchElement.removeEventListener('click',this._switchCollapseHandler);switchElement.addEventListener('click',this._switchExpandHandler);}}]);return TreeViewPlugin;}(Plugin);/**
26381
+ var nodeId=node.nodeId;if(node.xrayed){nodeElement.classList.add('xrayed-node');}nodeElement.id="".concat(nodeId);if(node.children.length>0){var switchElementId="switch-"+nodeId;var switchElement=document.createElement('a');switchElement.href='#';switchElement.id=switchElementId;switchElement.textContent='+';switchElement.classList.add('plus');switchElement.addEventListener('click',this._switchExpandHandler);nodeElement.appendChild(switchElement);}var checkbox=document.createElement('input');checkbox.id="".concat(nodeId);checkbox.type="checkbox";checkbox.checked=node.checked;checkbox.style["pointer-events"]="all";checkbox.addEventListener("change",this._checkboxChangeHandler);nodeElement.appendChild(checkbox);var span=document.createElement('span');span.textContent=node.title;nodeElement.appendChild(span);span.oncontextmenu=function(e){_this136.fire("contextmenu",{event:e,viewer:_this136._viewer,treeViewPlugin:_this136,treeViewNode:node});e.preventDefault();};span.onclick=function(e){_this136.fire("nodeTitleClicked",{event:e,viewer:_this136._viewer,treeViewPlugin:_this136,treeViewNode:node});e.preventDefault();};return nodeElement;}},{key:"_expandSwitchElement",value:function _expandSwitchElement(switchElement){var _this137=this;var parentElement=switchElement.parentElement;var expanded=parentElement.getElementsByTagName('li')[0];if(expanded){return;}var nodeId=parentElement.id;var switchNode=this._nodeNodes[nodeId];var childNodes=switchNode.children;var nodeElements=childNodes.map(function(node){return _this137._createNodeElement(node);});var ul=document.createElement('ul');nodeElements.forEach(function(nodeElement){ul.appendChild(nodeElement);});parentElement.appendChild(ul);switchElement.classList.remove('plus');switchElement.classList.add('minus');switchElement.textContent='-';switchElement.removeEventListener('click',this._switchExpandHandler);switchElement.addEventListener('click',this._switchCollapseHandler);}},{key:"_collapseNode",value:function _collapseNode(objectId){var nodeId=objectId;var switchElementId="switch-"+nodeId;var switchElement=document.getElementById(switchElementId);this._collapseSwitchElement(switchElement);}},{key:"_collapseSwitchElement",value:function _collapseSwitchElement(switchElement){if(!switchElement){return;}var parent=switchElement.parentElement;if(!parent){return;}var ul=parent.querySelector('ul');if(!ul){return;}parent.removeChild(ul);switchElement.classList.remove('minus');switchElement.classList.add('plus');switchElement.textContent='+';switchElement.removeEventListener('click',this._switchCollapseHandler);switchElement.addEventListener('click',this._switchExpandHandler);}}]);return TreeViewPlugin;}(Plugin);/**
26381
26382
  * For each Entity in its Scene, efficiently combines updates from multiple culling systems into a single "culled" state.
26382
26383
  *
26383
26384
  * Two culling systems are supported: