@xeokit/xeokit-sdk 2.4.0-alpha-41 → 2.4.0-alpha-42

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.
@@ -103482,21 +103482,23 @@ class MetaScene {
103482
103482
 
103483
103483
  // Create global Property Sets
103484
103484
 
103485
- for (let i = 0, len = metaModelData.propertySets.length; i < len; i++) {
103486
- const propertySetData = metaModelData.propertySets[i];
103487
- let propertySet = this.propertySets[propertySetData.id];
103488
- if (!propertySet) {
103489
- propertySet = new PropertySet({
103490
- id: propertySetData.id,
103491
- originalSystemId: propertySetData.originalSystemId,
103492
- type: propertySetData.type,
103493
- name: propertySetData.name,
103494
- properties: propertySetData.properties
103495
- });
103496
- this.propertySets[propertySet.id] = propertySet;
103485
+ if (metaModelData.propertySets) {
103486
+ for (let i = 0, len = metaModelData.propertySets.length; i < len; i++) {
103487
+ const propertySetData = metaModelData.propertySets[i];
103488
+ let propertySet = this.propertySets[propertySetData.id];
103489
+ if (!propertySet) {
103490
+ propertySet = new PropertySet({
103491
+ id: propertySetData.id,
103492
+ originalSystemId: propertySetData.originalSystemId,
103493
+ type: propertySetData.type,
103494
+ name: propertySetData.name,
103495
+ properties: propertySetData.properties
103496
+ });
103497
+ this.propertySets[propertySet.id] = propertySet;
103498
+ }
103499
+ propertySet.metaModels.push(metaModel);
103500
+ metaModel.propertySets.push(propertySet);
103497
103501
  }
103498
- propertySet.metaModels.push(metaModel);
103499
- metaModel.propertySets.push(propertySet);
103500
103502
  }
103501
103503
 
103502
103504
  // Create MetaObjects
@@ -103504,27 +103506,29 @@ class MetaScene {
103504
103506
  // Save root MetaObjects on MetaModel
103505
103507
  // Save root MetaObjects on MetaScene
103506
103508
 
103507
- for (let i = 0, len = metaModelData.metaObjects.length; i < len; i++) {
103508
- const metaObjectData = metaModelData.metaObjects[i];
103509
- const type = metaObjectData.type;
103510
- const id = metaObjectData.id;
103511
- let metaObject = this.metaObjects[id];
103512
- if (!metaObject) {
103513
- metaObject = new MetaObject({
103514
- id,
103515
- parentId: metaObjectData.parent,
103516
- type,
103517
- name: metaObjectData.name,
103518
- propertySetIds: metaObjectData.propertySetIds
103519
- });
103520
- this.metaObjects[id] = metaObject;
103521
- }
103522
- metaObject.metaModels.push(metaModel);
103523
- if (!metaObjectData.parent) {
103524
- metaModel.rootMetaObjects.push(metaObject);
103525
- this.rootMetaObjects[id] = metaObject;
103509
+ if (metaModelData.metaObjects) {
103510
+ for (let i = 0, len = metaModelData.metaObjects.length; i < len; i++) {
103511
+ const metaObjectData = metaModelData.metaObjects[i];
103512
+ const type = metaObjectData.type;
103513
+ const id = metaObjectData.id;
103514
+ let metaObject = this.metaObjects[id];
103515
+ if (!metaObject) {
103516
+ metaObject = new MetaObject({
103517
+ id,
103518
+ parentId: metaObjectData.parent,
103519
+ type,
103520
+ name: metaObjectData.name,
103521
+ propertySetIds: metaObjectData.propertySetIds
103522
+ });
103523
+ this.metaObjects[id] = metaObject;
103524
+ }
103525
+ metaObject.metaModels.push(metaModel);
103526
+ if (!metaObjectData.parent) {
103527
+ metaModel.rootMetaObjects.push(metaObject);
103528
+ this.rootMetaObjects[id] = metaObject;
103529
+ }
103530
+ metaModel.metaObjects.push(metaObject);
103526
103531
  }
103527
- metaModel.metaObjects.push(metaObject);
103528
103532
  }
103529
103533
 
103530
103534
  // Re-link entire MetaObject parent/child hierarchy
@@ -103621,41 +103625,45 @@ class MetaScene {
103621
103625
 
103622
103626
  // Remove global PropertySets
103623
103627
 
103624
- for (let i = 0, len = metaModel.propertySets.length; i < len; i++) {
103625
- const propertySet = metaModel.propertySets[i];
103626
- if (propertySet.metaModels.length === 1) { // Property set owned by one model, delete
103627
- delete this.propertySets[propertySet.id];
103628
- } else {
103629
- const newMetaModels = [];
103630
- for (let j = 0, lenj = propertySet.metaModels.length; j < lenj; j++) {
103631
- if (propertySet.metaModels[i].id !== id) {
103632
- newMetaModels.push(propertySet.metaModels[i]);
103628
+ if (metaModel.propertySets) {
103629
+ for (let i = 0, len = metaModel.propertySets.length; i < len; i++) {
103630
+ const propertySet = metaModel.propertySets[i];
103631
+ if (propertySet.metaModels.length === 1) { // Property set owned by one model, delete
103632
+ delete this.propertySets[propertySet.id];
103633
+ } else {
103634
+ const newMetaModels = [];
103635
+ for (let j = 0, lenj = propertySet.metaModels.length; j < lenj; j++) {
103636
+ if (propertySet.metaModels[i].id !== id) {
103637
+ newMetaModels.push(propertySet.metaModels[i]);
103638
+ }
103633
103639
  }
103640
+ propertySet.metaModels = newMetaModels;
103634
103641
  }
103635
- propertySet.metaModels = newMetaModels;
103636
103642
  }
103637
103643
  }
103638
103644
 
103639
103645
  // Remove MetaObjects
103640
103646
 
103641
- for (let i = 0, len = metaModel.metaObjects.length; i < len; i++) {
103642
- const metaObject = metaModel.metaObjects[i];
103643
- metaObject.type;
103644
- const id = metaObject.id;
103645
- if (metaObject.metaModels.length === 1) { // MetaObject owned by one model, delete
103646
- delete this.metaObjects[id];
103647
- if (!metaObject.parent) {
103648
- delete this.rootMetaObjects[id];
103649
- }
103650
- } else {
103651
- const newMetaModels = [];
103652
- const metaModelId = metaModel.id;
103653
- for (let i = 0, len = metaObject.metaModels.length; i < len; i++) {
103654
- if (metaObject.metaModels[i].id !== metaModelId) {
103655
- newMetaModels.push(metaObject.metaModels[i]);
103647
+ if (metaModel.metaObjects) {
103648
+ for (let i = 0, len = metaModel.metaObjects.length; i < len; i++) {
103649
+ const metaObject = metaModel.metaObjects[i];
103650
+ metaObject.type;
103651
+ const id = metaObject.id;
103652
+ if (metaObject.metaModels.length === 1) { // MetaObject owned by one model, delete
103653
+ delete this.metaObjects[id];
103654
+ if (!metaObject.parent) {
103655
+ delete this.rootMetaObjects[id];
103656
+ }
103657
+ } else {
103658
+ const newMetaModels = [];
103659
+ const metaModelId = metaModel.id;
103660
+ for (let i = 0, len = metaObject.metaModels.length; i < len; i++) {
103661
+ if (metaObject.metaModels[i].id !== metaModelId) {
103662
+ newMetaModels.push(metaObject.metaModels[i]);
103663
+ }
103656
103664
  }
103665
+ metaObject.metaModels = newMetaModels;
103657
103666
  }
103658
- metaObject.metaModels = newMetaModels;
103659
103667
  }
103660
103668
  }
103661
103669
 
@@ -103478,21 +103478,23 @@ class MetaScene {
103478
103478
 
103479
103479
  // Create global Property Sets
103480
103480
 
103481
- for (let i = 0, len = metaModelData.propertySets.length; i < len; i++) {
103482
- const propertySetData = metaModelData.propertySets[i];
103483
- let propertySet = this.propertySets[propertySetData.id];
103484
- if (!propertySet) {
103485
- propertySet = new PropertySet({
103486
- id: propertySetData.id,
103487
- originalSystemId: propertySetData.originalSystemId,
103488
- type: propertySetData.type,
103489
- name: propertySetData.name,
103490
- properties: propertySetData.properties
103491
- });
103492
- this.propertySets[propertySet.id] = propertySet;
103481
+ if (metaModelData.propertySets) {
103482
+ for (let i = 0, len = metaModelData.propertySets.length; i < len; i++) {
103483
+ const propertySetData = metaModelData.propertySets[i];
103484
+ let propertySet = this.propertySets[propertySetData.id];
103485
+ if (!propertySet) {
103486
+ propertySet = new PropertySet({
103487
+ id: propertySetData.id,
103488
+ originalSystemId: propertySetData.originalSystemId,
103489
+ type: propertySetData.type,
103490
+ name: propertySetData.name,
103491
+ properties: propertySetData.properties
103492
+ });
103493
+ this.propertySets[propertySet.id] = propertySet;
103494
+ }
103495
+ propertySet.metaModels.push(metaModel);
103496
+ metaModel.propertySets.push(propertySet);
103493
103497
  }
103494
- propertySet.metaModels.push(metaModel);
103495
- metaModel.propertySets.push(propertySet);
103496
103498
  }
103497
103499
 
103498
103500
  // Create MetaObjects
@@ -103500,27 +103502,29 @@ class MetaScene {
103500
103502
  // Save root MetaObjects on MetaModel
103501
103503
  // Save root MetaObjects on MetaScene
103502
103504
 
103503
- for (let i = 0, len = metaModelData.metaObjects.length; i < len; i++) {
103504
- const metaObjectData = metaModelData.metaObjects[i];
103505
- const type = metaObjectData.type;
103506
- const id = metaObjectData.id;
103507
- let metaObject = this.metaObjects[id];
103508
- if (!metaObject) {
103509
- metaObject = new MetaObject({
103510
- id,
103511
- parentId: metaObjectData.parent,
103512
- type,
103513
- name: metaObjectData.name,
103514
- propertySetIds: metaObjectData.propertySetIds
103515
- });
103516
- this.metaObjects[id] = metaObject;
103517
- }
103518
- metaObject.metaModels.push(metaModel);
103519
- if (!metaObjectData.parent) {
103520
- metaModel.rootMetaObjects.push(metaObject);
103521
- this.rootMetaObjects[id] = metaObject;
103505
+ if (metaModelData.metaObjects) {
103506
+ for (let i = 0, len = metaModelData.metaObjects.length; i < len; i++) {
103507
+ const metaObjectData = metaModelData.metaObjects[i];
103508
+ const type = metaObjectData.type;
103509
+ const id = metaObjectData.id;
103510
+ let metaObject = this.metaObjects[id];
103511
+ if (!metaObject) {
103512
+ metaObject = new MetaObject({
103513
+ id,
103514
+ parentId: metaObjectData.parent,
103515
+ type,
103516
+ name: metaObjectData.name,
103517
+ propertySetIds: metaObjectData.propertySetIds
103518
+ });
103519
+ this.metaObjects[id] = metaObject;
103520
+ }
103521
+ metaObject.metaModels.push(metaModel);
103522
+ if (!metaObjectData.parent) {
103523
+ metaModel.rootMetaObjects.push(metaObject);
103524
+ this.rootMetaObjects[id] = metaObject;
103525
+ }
103526
+ metaModel.metaObjects.push(metaObject);
103522
103527
  }
103523
- metaModel.metaObjects.push(metaObject);
103524
103528
  }
103525
103529
 
103526
103530
  // Re-link entire MetaObject parent/child hierarchy
@@ -103617,41 +103621,45 @@ class MetaScene {
103617
103621
 
103618
103622
  // Remove global PropertySets
103619
103623
 
103620
- for (let i = 0, len = metaModel.propertySets.length; i < len; i++) {
103621
- const propertySet = metaModel.propertySets[i];
103622
- if (propertySet.metaModels.length === 1) { // Property set owned by one model, delete
103623
- delete this.propertySets[propertySet.id];
103624
- } else {
103625
- const newMetaModels = [];
103626
- for (let j = 0, lenj = propertySet.metaModels.length; j < lenj; j++) {
103627
- if (propertySet.metaModels[i].id !== id) {
103628
- newMetaModels.push(propertySet.metaModels[i]);
103624
+ if (metaModel.propertySets) {
103625
+ for (let i = 0, len = metaModel.propertySets.length; i < len; i++) {
103626
+ const propertySet = metaModel.propertySets[i];
103627
+ if (propertySet.metaModels.length === 1) { // Property set owned by one model, delete
103628
+ delete this.propertySets[propertySet.id];
103629
+ } else {
103630
+ const newMetaModels = [];
103631
+ for (let j = 0, lenj = propertySet.metaModels.length; j < lenj; j++) {
103632
+ if (propertySet.metaModels[i].id !== id) {
103633
+ newMetaModels.push(propertySet.metaModels[i]);
103634
+ }
103629
103635
  }
103636
+ propertySet.metaModels = newMetaModels;
103630
103637
  }
103631
- propertySet.metaModels = newMetaModels;
103632
103638
  }
103633
103639
  }
103634
103640
 
103635
103641
  // Remove MetaObjects
103636
103642
 
103637
- for (let i = 0, len = metaModel.metaObjects.length; i < len; i++) {
103638
- const metaObject = metaModel.metaObjects[i];
103639
- metaObject.type;
103640
- const id = metaObject.id;
103641
- if (metaObject.metaModels.length === 1) { // MetaObject owned by one model, delete
103642
- delete this.metaObjects[id];
103643
- if (!metaObject.parent) {
103644
- delete this.rootMetaObjects[id];
103645
- }
103646
- } else {
103647
- const newMetaModels = [];
103648
- const metaModelId = metaModel.id;
103649
- for (let i = 0, len = metaObject.metaModels.length; i < len; i++) {
103650
- if (metaObject.metaModels[i].id !== metaModelId) {
103651
- newMetaModels.push(metaObject.metaModels[i]);
103643
+ if (metaModel.metaObjects) {
103644
+ for (let i = 0, len = metaModel.metaObjects.length; i < len; i++) {
103645
+ const metaObject = metaModel.metaObjects[i];
103646
+ metaObject.type;
103647
+ const id = metaObject.id;
103648
+ if (metaObject.metaModels.length === 1) { // MetaObject owned by one model, delete
103649
+ delete this.metaObjects[id];
103650
+ if (!metaObject.parent) {
103651
+ delete this.rootMetaObjects[id];
103652
+ }
103653
+ } else {
103654
+ const newMetaModels = [];
103655
+ const metaModelId = metaModel.id;
103656
+ for (let i = 0, len = metaObject.metaModels.length; i < len; i++) {
103657
+ if (metaObject.metaModels[i].id !== metaModelId) {
103658
+ newMetaModels.push(metaObject.metaModels[i]);
103659
+ }
103652
103660
  }
103661
+ metaObject.metaModels = newMetaModels;
103653
103662
  }
103654
- metaObject.metaModels = newMetaModels;
103655
103663
  }
103656
103664
  }
103657
103665
 
@@ -23448,11 +23448,11 @@ value=value||"qwerty";if(value!=="qwerty"&&value!=="azerty"){this.error("Unsuppo
23448
23448
  * @returns {MetaModel} The new MetaModel.
23449
23449
  */},{key:"createMetaModel",value:function createMetaModel(modelId,metaModelData){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};this._globalizeIDs(modelId,metaModelData,options);// Create MetaModel
23450
23450
  var metaModel=new MetaModel({metaScene:this,id:modelId,projectId:metaModelData.projectId||"none",revisionId:metaModelData.revisionId||"none",author:metaModelData.author||"none",createdAt:metaModelData.createdAt||"none",creatingApplication:metaModelData.creatingApplication||"none",schema:metaModelData.schema||"none",propertySets:[]});this.metaModels[modelId]=metaModel;// Create global Property Sets
23451
- for(var _i542=0,len=metaModelData.propertySets.length;_i542<len;_i542++){var propertySetData=metaModelData.propertySets[_i542];var propertySet=this.propertySets[propertySetData.id];if(!propertySet){propertySet=new PropertySet({id:propertySetData.id,originalSystemId:propertySetData.originalSystemId,type:propertySetData.type,name:propertySetData.name,properties:propertySetData.properties});this.propertySets[propertySet.id]=propertySet;}propertySet.metaModels.push(metaModel);metaModel.propertySets.push(propertySet);}// Create MetaObjects
23451
+ if(metaModelData.propertySets){for(var _i542=0,len=metaModelData.propertySets.length;_i542<len;_i542++){var propertySetData=metaModelData.propertySets[_i542];var propertySet=this.propertySets[propertySetData.id];if(!propertySet){propertySet=new PropertySet({id:propertySetData.id,originalSystemId:propertySetData.originalSystemId,type:propertySetData.type,name:propertySetData.name,properties:propertySetData.properties});this.propertySets[propertySet.id]=propertySet;}propertySet.metaModels.push(metaModel);metaModel.propertySets.push(propertySet);}}// Create MetaObjects
23452
23452
  // Don't re-create reused MetaObjects
23453
23453
  // Save root MetaObjects on MetaModel
23454
23454
  // Save root MetaObjects on MetaScene
23455
- for(var _i543=0,_len116=metaModelData.metaObjects.length;_i543<_len116;_i543++){var metaObjectData=metaModelData.metaObjects[_i543];var type=metaObjectData.type;var id=metaObjectData.id;var _metaObject4=this.metaObjects[id];if(!_metaObject4){_metaObject4=new MetaObject({id:id,parentId:metaObjectData.parent,type:type,name:metaObjectData.name,propertySetIds:metaObjectData.propertySetIds});this.metaObjects[id]=_metaObject4;}_metaObject4.metaModels.push(metaModel);if(!metaObjectData.parent){metaModel.rootMetaObjects.push(_metaObject4);this.rootMetaObjects[id]=_metaObject4;}metaModel.metaObjects.push(_metaObject4);}// Re-link entire MetaObject parent/child hierarchy
23455
+ if(metaModelData.metaObjects){for(var _i543=0,_len116=metaModelData.metaObjects.length;_i543<_len116;_i543++){var metaObjectData=metaModelData.metaObjects[_i543];var type=metaObjectData.type;var id=metaObjectData.id;var _metaObject4=this.metaObjects[id];if(!_metaObject4){_metaObject4=new MetaObject({id:id,parentId:metaObjectData.parent,type:type,name:metaObjectData.name,propertySetIds:metaObjectData.propertySetIds});this.metaObjects[id]=_metaObject4;}_metaObject4.metaModels.push(metaModel);if(!metaObjectData.parent){metaModel.rootMetaObjects.push(_metaObject4);this.rootMetaObjects[id]=_metaObject4;}metaModel.metaObjects.push(_metaObject4);}}// Re-link entire MetaObject parent/child hierarchy
23456
23456
  for(var objectId in this.metaObjects){var _metaObject5=this.metaObjects[objectId];if(_metaObject5.children){_metaObject5.children=[];}}for(var _objectId in this.metaObjects){var _metaObject6=this.metaObjects[_objectId];if(_metaObject6.parentId){var parentMetaObject=this.metaObjects[_metaObject6.parentId];if(parentMetaObject){_metaObject6.parent=parentMetaObject;(parentMetaObject.children||(parentMetaObject.children=[])).push(_metaObject6);}}}// Create MetaObjects-by-type lookup
23457
23457
  this.metaObjectsByType={};for(var _objectId2 in this.metaObjects){var _metaObject7=this.metaObjects[_objectId2];var _type=_metaObject7.type;(this.metaObjectsByType[_type]||(this.metaObjectsByType[_type]={}))[_objectId2]=_metaObject7;}this.fire("metaModelCreated",modelId);return metaModel;}},{key:"_globalizeIDs",value:function _globalizeIDs(modelId,metaModelData,options){var globalize=!!options.globalizeObjectIds;if(metaModelData.metaObjects){for(var _i544=0,len=metaModelData.metaObjects.length;_i544<len;_i544++){var metaObjectData=metaModelData.metaObjects[_i544];// Globalize MetaObject IDs and parent IDs
23458
23458
  metaObjectData.originalSystemId=metaObjectData.id;metaObjectData.originalParentSystemId=metaObjectData.parent;if(globalize){metaObjectData.id=math.globalizeObjectId(modelId,metaObject.id);metaObjectData.parent=math.globalizeObjectId(modelId,metaObject.parent);}// Globalize MetaObject property set IDs
@@ -23464,10 +23464,10 @@ if(metaModelData.propertySets){for(var _i545=0,_len117=metaModelData.propertySet
23464
23464
  *
23465
23465
  * @param {String} id ID of the target {@link MetaModel}.
23466
23466
  */},{key:"destroyMetaModel",value:function destroyMetaModel(id){var metaModel=this.metaModels[id];if(!metaModel){return;}// Remove global PropertySets
23467
- for(var _i546=0,len=metaModel.propertySets.length;_i546<len;_i546++){var propertySet=metaModel.propertySets[_i546];if(propertySet.metaModels.length===1){// Property set owned by one model, delete
23468
- delete this.propertySets[propertySet.id];}else{var newMetaModels=[];for(var _j6=0,lenj=propertySet.metaModels.length;_j6<lenj;_j6++){if(propertySet.metaModels[_i546].id!==id){newMetaModels.push(propertySet.metaModels[_i546]);}}propertySet.metaModels=newMetaModels;}}// Remove MetaObjects
23469
- for(var _i547=0,_len118=metaModel.metaObjects.length;_i547<_len118;_i547++){var _metaObject8=metaModel.metaObjects[_i547];_metaObject8.type;var _id4=_metaObject8.id;if(_metaObject8.metaModels.length===1){// MetaObject owned by one model, delete
23470
- delete this.metaObjects[_id4];if(!_metaObject8.parent){delete this.rootMetaObjects[_id4];}}else{var _newMetaModels=[];var metaModelId=metaModel.id;for(var _i548=0,_len119=_metaObject8.metaModels.length;_i548<_len119;_i548++){if(_metaObject8.metaModels[_i548].id!==metaModelId){_newMetaModels.push(_metaObject8.metaModels[_i548]);}}_metaObject8.metaModels=_newMetaModels;}}// Re-link entire MetaObject parent/child hierarchy
23467
+ if(metaModel.propertySets){for(var _i546=0,len=metaModel.propertySets.length;_i546<len;_i546++){var propertySet=metaModel.propertySets[_i546];if(propertySet.metaModels.length===1){// Property set owned by one model, delete
23468
+ delete this.propertySets[propertySet.id];}else{var newMetaModels=[];for(var _j6=0,lenj=propertySet.metaModels.length;_j6<lenj;_j6++){if(propertySet.metaModels[_i546].id!==id){newMetaModels.push(propertySet.metaModels[_i546]);}}propertySet.metaModels=newMetaModels;}}}// Remove MetaObjects
23469
+ if(metaModel.metaObjects){for(var _i547=0,_len118=metaModel.metaObjects.length;_i547<_len118;_i547++){var _metaObject8=metaModel.metaObjects[_i547];_metaObject8.type;var _id4=_metaObject8.id;if(_metaObject8.metaModels.length===1){// MetaObject owned by one model, delete
23470
+ delete this.metaObjects[_id4];if(!_metaObject8.parent){delete this.rootMetaObjects[_id4];}}else{var _newMetaModels=[];var metaModelId=metaModel.id;for(var _i548=0,_len119=_metaObject8.metaModels.length;_i548<_len119;_i548++){if(_metaObject8.metaModels[_i548].id!==metaModelId){_newMetaModels.push(_metaObject8.metaModels[_i548]);}}_metaObject8.metaModels=_newMetaModels;}}}// Re-link entire MetaObject parent/child hierarchy
23471
23471
  for(var objectId in this.metaObjects){var _metaObject9=this.metaObjects[objectId];if(_metaObject9.children){_metaObject9.children=[];}}this.metaObjectsByType={};for(var _objectId3 in this.metaObjects){var _metaObject10=this.metaObjects[_objectId3];var type=_metaObject10.type;if(_metaObject10.children){_metaObject10.children=null;}(this.metaObjectsByType[type]||(this.metaObjectsByType[type]={}))[_objectId3]=_metaObject10;}for(var _objectId4 in this.metaObjects){var _metaObject11=this.metaObjects[_objectId4];if(_metaObject11.parentId){var parentMetaObject=this.metaObjects[_metaObject11.parentId];if(parentMetaObject){_metaObject11.parent=parentMetaObject;(parentMetaObject.children||(parentMetaObject.children=[])).push(_metaObject11);}}}delete this.metaModels[id];this.fire("metaModelDestroyed",id);}/**
23472
23472
  * Gets the {@link MetaObject#id}s of the {@link MetaObject}s that have the given {@link MetaObject#type}.
23473
23473
  *