@xeokit/xeokit-sdk 2.4.0-alpha-10 → 2.4.0-alpha-12

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.
@@ -119071,7 +119071,7 @@ class TreeViewPlugin extends Plugin {
119071
119071
  if (!treeViews[i]) {
119072
119072
  treeViews[i] = this;
119073
119073
  this._index = i;
119074
- this._id = `tree-${i}-`;
119074
+ this._id = `tree-${i}`;
119075
119075
  break;
119076
119076
  }
119077
119077
  }
@@ -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;
@@ -119119,7 +119120,7 @@ class TreeViewPlugin extends Plugin {
119119
119120
  } else {
119120
119121
  node.numVisibleEntities--;
119121
119122
  }
119122
- const checkbox = document.getElementById(node.nodeId);
119123
+ const checkbox = document.getElementById(`checkbox-${node.nodeId}`);
119123
119124
  if (checkbox) {
119124
119125
  checkbox.checked = visible;
119125
119126
  }
@@ -119131,7 +119132,7 @@ class TreeViewPlugin extends Plugin {
119131
119132
  } else {
119132
119133
  parent.numVisibleEntities--;
119133
119134
  }
119134
- const parentCheckbox = document.getElementById(parent.nodeId);
119135
+ const parentCheckbox = document.getElementById(`checkbox-${parent.nodeId}`);
119135
119136
  if (parentCheckbox) {
119136
119137
  const newChecked = (parent.numVisibleEntities > 0);
119137
119138
  if (newChecked !== parentCheckbox.checked) {
@@ -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) {
@@ -119192,14 +119193,13 @@ class TreeViewPlugin extends Plugin {
119192
119193
  this._muteSceneEvents = true;
119193
119194
  const checkbox = event.target;
119194
119195
  const visible = checkbox.checked;
119195
- const nodeId = checkbox.id;
119196
- const checkedObjectId = nodeId;
119197
- const checkedNode = this._objectNodes[checkedObjectId];
119196
+ const nodeId = checkbox.id.replace('checkbox-', '');
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) => {
119201
119201
  const objectId = node.objectId;
119202
- const checkBoxId = node.nodeId;
119202
+ const checkBoxId = `checkbox-${node.nodeId}`;
119203
119203
  const entity = objects[objectId];
119204
119204
  const isLeaf = (node.children.length === 0);
119205
119205
  node.numVisibleEntities = visible ? node.numEntities : 0;
@@ -119218,7 +119218,7 @@ class TreeViewPlugin extends Plugin {
119218
119218
  let parent = checkedNode.parent;
119219
119219
  while (parent) {
119220
119220
  parent.checked = visible;
119221
- const checkbox2 = document.getElementById(parent.nodeId); // Parent checkboxes are always in DOM
119221
+ const checkbox2 = document.getElementById(`checkbox-${parent.nodeId}`); // Parent checkboxes are always in DOM
119222
119222
  if (visible) {
119223
119223
  parent.numVisibleEntities += numUpdated;
119224
119224
  } else {
@@ -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();
@@ -119675,6 +119676,7 @@ 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");
@@ -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,6 +119720,7 @@ 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 = {
@@ -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
  }
@@ -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,6 +119802,7 @@ 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 = {
@@ -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
  }
@@ -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 = `checkbox-${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);
@@ -119067,7 +119067,7 @@ class TreeViewPlugin extends Plugin {
119067
119067
  if (!treeViews[i]) {
119068
119068
  treeViews[i] = this;
119069
119069
  this._index = i;
119070
- this._id = `tree-${i}-`;
119070
+ this._id = `tree-${i}`;
119071
119071
  break;
119072
119072
  }
119073
119073
  }
@@ -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;
@@ -119115,7 +119116,7 @@ class TreeViewPlugin extends Plugin {
119115
119116
  } else {
119116
119117
  node.numVisibleEntities--;
119117
119118
  }
119118
- const checkbox = document.getElementById(node.nodeId);
119119
+ const checkbox = document.getElementById(`checkbox-${node.nodeId}`);
119119
119120
  if (checkbox) {
119120
119121
  checkbox.checked = visible;
119121
119122
  }
@@ -119127,7 +119128,7 @@ class TreeViewPlugin extends Plugin {
119127
119128
  } else {
119128
119129
  parent.numVisibleEntities--;
119129
119130
  }
119130
- const parentCheckbox = document.getElementById(parent.nodeId);
119131
+ const parentCheckbox = document.getElementById(`checkbox-${parent.nodeId}`);
119131
119132
  if (parentCheckbox) {
119132
119133
  const newChecked = (parent.numVisibleEntities > 0);
119133
119134
  if (newChecked !== parentCheckbox.checked) {
@@ -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) {
@@ -119188,14 +119189,13 @@ class TreeViewPlugin extends Plugin {
119188
119189
  this._muteSceneEvents = true;
119189
119190
  const checkbox = event.target;
119190
119191
  const visible = checkbox.checked;
119191
- const nodeId = checkbox.id;
119192
- const checkedObjectId = nodeId;
119193
- const checkedNode = this._objectNodes[checkedObjectId];
119192
+ const nodeId = checkbox.id.replace('checkbox-', '');
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) => {
119197
119197
  const objectId = node.objectId;
119198
- const checkBoxId = node.nodeId;
119198
+ const checkBoxId = `checkbox-${node.nodeId}`;
119199
119199
  const entity = objects[objectId];
119200
119200
  const isLeaf = (node.children.length === 0);
119201
119201
  node.numVisibleEntities = visible ? node.numEntities : 0;
@@ -119214,7 +119214,7 @@ class TreeViewPlugin extends Plugin {
119214
119214
  let parent = checkedNode.parent;
119215
119215
  while (parent) {
119216
119216
  parent.checked = visible;
119217
- const checkbox2 = document.getElementById(parent.nodeId); // Parent checkboxes are always in DOM
119217
+ const checkbox2 = document.getElementById(`checkbox-${parent.nodeId}`); // Parent checkboxes are always in DOM
119218
119218
  if (visible) {
119219
119219
  parent.numVisibleEntities += numUpdated;
119220
119220
  } else {
@@ -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();
@@ -119671,6 +119672,7 @@ 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");
@@ -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,6 +119716,7 @@ 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 = {
@@ -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
  }
@@ -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,6 +119798,7 @@ 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 = {
@@ -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
  }
@@ -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 = `checkbox-${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);
@@ -26264,10 +26264,11 @@ imagePos[0]=Math.floor(storeyMap.width-(worldPos[0]-xmin)*ratioX);imagePos[1]=Ma
26264
26264
  */_this132.errors=[];/**
26265
26265
  * True if errors were found generating this TreeView.
26266
26266
  * @type {boolean}
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
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
- }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
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("checkbox-".concat(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("checkbox-".concat(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
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.replace('checkbox-','');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="checkbox-".concat(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("checkbox-".concat(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,"-").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;}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;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,"-").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;}}}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;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,"-").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;}}}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;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=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="checkbox-".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: