@itwin/rpcinterface-full-stack-tests 4.8.0-dev.29 → 4.8.0-dev.31
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.
- package/lib/dist/_bea9.bundled-tests.js.map +1 -1
- package/lib/dist/bundled-tests.js +264 -18
- package/lib/dist/bundled-tests.js.map +1 -1
- package/lib/dist/core_frontend_lib_esm_ApproximateTerrainHeightsProps_js.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_loaders_gl_draco_3_1_6_node_modules_loaders_gl_draco_di-0642a6.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_meshoptimizer_0_20_0_node_modules_meshoptimizer_index_m-a5ae61.bundled-tests.js.map +1 -1
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_bea9.bundled-tests.js","mappings":";;;;;;;;AAAA","sources":["file:///ignored|D:\\vsts_a\\
|
|
1
|
+
{"version":3,"file":"_bea9.bundled-tests.js","mappings":";;;;;;;;AAAA","sources":["file:///ignored|D:\\vsts_a\\6\\s\\common\\temp\\node_modules\\.pnpm\\@loaders.gl+worker-utils@3.1.6\\node_modules\\@loaders.gl\\worker-utils\\dist\\esm\\lib\\library-utils|../node/require-utils.node"],"names":[],"sourceRoot":""}
|
|
@@ -35432,7 +35432,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
35432
35432
|
|
|
35433
35433
|
|
|
35434
35434
|
// cspell: ignore ttbbggrr bbggrr rrggbb aabbggrr abgr rrggbb hsla lerp torgb dhue dsaturation dvalue intpart fractpart cyanish
|
|
35435
|
-
// portions adapted from Three.js Copyright © 2010-
|
|
35435
|
+
// portions adapted from Three.js Copyright © 2010-2024 three.js authors
|
|
35436
35436
|
const scratchBytes = new Uint8Array(4);
|
|
35437
35437
|
const scratchUInt32 = new Uint32Array(scratchBytes.buffer);
|
|
35438
35438
|
/** An immutable integer representation of a color.
|
|
@@ -92330,19 +92330,30 @@ class RealityDataSourceTilesetUrlImpl {
|
|
|
92330
92330
|
this.setBaseUrl(url);
|
|
92331
92331
|
return (0,_request_Request__WEBPACK_IMPORTED_MODULE_2__.request)(url, "json");
|
|
92332
92332
|
}
|
|
92333
|
+
isValidURL(url) {
|
|
92334
|
+
try {
|
|
92335
|
+
new URL(url);
|
|
92336
|
+
}
|
|
92337
|
+
catch (_) {
|
|
92338
|
+
return false;
|
|
92339
|
+
}
|
|
92340
|
+
return true;
|
|
92341
|
+
}
|
|
92342
|
+
/** Returns the tile URL. If the tile path is a full URL, it is returned as is. Otherwise, the base URL is prepended to the tile path. */
|
|
92343
|
+
getTileUrl(tilePath) {
|
|
92344
|
+
return this.isValidURL(tilePath) ? tilePath : this._baseUrl + tilePath;
|
|
92345
|
+
}
|
|
92333
92346
|
/**
|
|
92334
92347
|
* Returns the tile content. The path to the tile is relative to the base url of present reality data whatever the type.
|
|
92335
92348
|
*/
|
|
92336
92349
|
async getTileContent(name) {
|
|
92337
|
-
|
|
92338
|
-
return (0,_request_Request__WEBPACK_IMPORTED_MODULE_2__.request)(tileUrl, "arraybuffer");
|
|
92350
|
+
return (0,_request_Request__WEBPACK_IMPORTED_MODULE_2__.request)(this.getTileUrl(name), "arraybuffer");
|
|
92339
92351
|
}
|
|
92340
92352
|
/**
|
|
92341
92353
|
* Returns the tile content in json format. The path to the tile is relative to the base url of present reality data whatever the type.
|
|
92342
92354
|
*/
|
|
92343
92355
|
async getTileJson(name) {
|
|
92344
|
-
|
|
92345
|
-
return (0,_request_Request__WEBPACK_IMPORTED_MODULE_2__.request)(tileUrl, "json");
|
|
92356
|
+
return (0,_request_Request__WEBPACK_IMPORTED_MODULE_2__.request)(this.getTileUrl(name), "json");
|
|
92346
92357
|
}
|
|
92347
92358
|
getTileContentType(url) {
|
|
92348
92359
|
return new URL(url, "https://localhost/").pathname.toLowerCase().endsWith("json") ? "tileset" : "tile";
|
|
@@ -110049,16 +110060,16 @@ var FeatureSymbology;
|
|
|
110049
110060
|
* @internal
|
|
110050
110061
|
*/
|
|
110051
110062
|
initFromViewport(viewport) {
|
|
110052
|
-
|
|
110053
|
-
this._initFromView(view);
|
|
110063
|
+
// Set the initial always/never-drawn sets. Later, initFromView can add more elements to them.
|
|
110054
110064
|
if (undefined !== viewport.neverDrawn)
|
|
110055
110065
|
this.setNeverDrawnSet(viewport.neverDrawn);
|
|
110056
110066
|
if (undefined !== viewport.alwaysDrawn)
|
|
110057
110067
|
this.setAlwaysDrawnSet(viewport.alwaysDrawn, viewport.isAlwaysDrawnExclusive);
|
|
110068
|
+
this._initFromView(viewport.view);
|
|
110058
110069
|
viewport.addFeatureOverrides(this);
|
|
110059
110070
|
viewport.addModelSubCategoryVisibilityOverrides(this, this._modelSubCategoryOverrides);
|
|
110060
110071
|
// This will include any per-model subcategory visibility overrides added above.
|
|
110061
|
-
this._initSubCategoryOverrides(view);
|
|
110072
|
+
this._initSubCategoryOverrides(viewport.view);
|
|
110062
110073
|
}
|
|
110063
110074
|
_initFromView(view) {
|
|
110064
110075
|
const { viewFlags } = view;
|
|
@@ -144776,14 +144787,13 @@ class B3dmReader extends _internal__WEBPACK_IMPORTED_MODULE_4__.GltfReader {
|
|
|
144776
144787
|
constructor(props, iModel, modelId, is3d, system, _range, _isLeaf, _batchTableLength, _transformToRoot, _batchTableJson, shouldAbort, _idMap, _pseudoRtcBias, deduplicateVertices = false) {
|
|
144777
144788
|
super({
|
|
144778
144789
|
props, iModel, system, shouldAbort, deduplicateVertices,
|
|
144779
|
-
is2d: !is3d,
|
|
144790
|
+
is2d: !is3d, idMap: _idMap,
|
|
144780
144791
|
});
|
|
144781
144792
|
this._range = _range;
|
|
144782
144793
|
this._isLeaf = _isLeaf;
|
|
144783
144794
|
this._batchTableLength = _batchTableLength;
|
|
144784
144795
|
this._transformToRoot = _transformToRoot;
|
|
144785
144796
|
this._batchTableJson = _batchTableJson;
|
|
144786
|
-
this._idMap = _idMap;
|
|
144787
144797
|
this._pseudoRtcBias = _pseudoRtcBias;
|
|
144788
144798
|
this._batchIdRemap = new Map();
|
|
144789
144799
|
this._modelId = modelId;
|
|
@@ -146068,6 +146078,8 @@ function compareTextureKeys(lhs, rhs) {
|
|
|
146068
146078
|
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)("number" === typeof lhs.id && "number" === typeof rhs.id);
|
|
146069
146079
|
return (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.compareNumbers)(lhs.id, rhs.id);
|
|
146070
146080
|
}
|
|
146081
|
+
;
|
|
146082
|
+
;
|
|
146071
146083
|
/** Deserializes [glTF](https://www.khronos.org/gltf/).
|
|
146072
146084
|
* @internal
|
|
146073
146085
|
*/
|
|
@@ -146123,6 +146135,12 @@ class GltfReader {
|
|
|
146123
146135
|
this._computedContentRange = contentRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range3d.createNull();
|
|
146124
146136
|
else
|
|
146125
146137
|
this._computedContentRange = undefined;
|
|
146138
|
+
// Save feature table model id in case we need to recreate it after reading instances
|
|
146139
|
+
const featureTableModelId = featureTable?.modelId;
|
|
146140
|
+
// Flush feature table if instance features are used
|
|
146141
|
+
if (this._structuralMetadata && this._glTF.extensionsUsed?.includes("EXT_instance_features") && this._idMap) {
|
|
146142
|
+
featureTable = undefined;
|
|
146143
|
+
}
|
|
146126
146144
|
// ###TODO this looks like a hack? Why does it assume the first node's transform is special, or that the transform will be specified as a matrix instead of translation+rot+scale?
|
|
146127
146145
|
if (this._returnToCenter || this._nodes[0]?.matrix || (pseudoRtcBias && pseudoRtcBias.magnitude() < 1.0E5))
|
|
146128
146146
|
pseudoRtcBias = undefined;
|
|
@@ -146135,6 +146153,14 @@ class GltfReader {
|
|
|
146135
146153
|
if (node && _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.TileReadStatus.Success !== (readStatus = this.readNodeAndCreateGraphics(renderGraphicList, node, featureTable, transformStack, instances, pseudoRtcBias)))
|
|
146136
146154
|
return { readStatus, isLeaf };
|
|
146137
146155
|
}
|
|
146156
|
+
// Creates a feature table based on instance features
|
|
146157
|
+
// The table must be created after reading instances, since the maximum number of features is not known until all instances have been read.
|
|
146158
|
+
if (this._instanceFeatures.length > 0 && this._idMap) {
|
|
146159
|
+
featureTable = new _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.FeatureTable(this._instanceFeatures.length, featureTableModelId);
|
|
146160
|
+
for (let instanceFeatureId = 0; instanceFeatureId < this._instanceFeatures.length; instanceFeatureId++) {
|
|
146161
|
+
featureTable.insertWithIndex(this._instanceFeatures[instanceFeatureId], instanceFeatureId);
|
|
146162
|
+
}
|
|
146163
|
+
}
|
|
146138
146164
|
if (0 === renderGraphicList.length)
|
|
146139
146165
|
return { readStatus: _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.TileReadStatus.InvalidTileData, isLeaf };
|
|
146140
146166
|
let renderGraphic;
|
|
@@ -146265,9 +146291,67 @@ class GltfReader {
|
|
|
146265
146291
|
transforms[idx + 10] = tf.matrix.coffs[8];
|
|
146266
146292
|
transforms[idx + 11] = tf.origin.z;
|
|
146267
146293
|
}
|
|
146268
|
-
|
|
146269
|
-
//
|
|
146270
|
-
const
|
|
146294
|
+
let featureIds = ((featureTable && featureTable.isUniform)) ? new Uint8Array(3 * count) : undefined;
|
|
146295
|
+
// Resolve instance features if the EXT_instance_features if present
|
|
146296
|
+
const instanceFeaturesExt = node.extensions?.EXT_instance_features;
|
|
146297
|
+
if (this._structuralMetadata && instanceFeaturesExt && this._idMap) {
|
|
146298
|
+
if (!featureIds)
|
|
146299
|
+
featureIds = new Uint8Array(3 * count);
|
|
146300
|
+
// Resolve feature buffers before creating instance table
|
|
146301
|
+
const featureBuffers = new Map();
|
|
146302
|
+
for (const featureIdDesc of instanceFeaturesExt.featureIds) {
|
|
146303
|
+
if (featureIdDesc.attribute !== undefined) {
|
|
146304
|
+
const bufferView = this.getBufferView(ext.attributes, `_FEATURE_ID_${featureIdDesc.attribute}`);
|
|
146305
|
+
if (bufferView) {
|
|
146306
|
+
const bufferData = bufferView.toBufferData(bufferView.type)?.buffer;
|
|
146307
|
+
if (bufferData) {
|
|
146308
|
+
featureBuffers.set(featureIdDesc.attribute, bufferData);
|
|
146309
|
+
}
|
|
146310
|
+
}
|
|
146311
|
+
}
|
|
146312
|
+
}
|
|
146313
|
+
for (let localInstanceId = 0; localInstanceId < count; localInstanceId++) {
|
|
146314
|
+
const instanceProps = {};
|
|
146315
|
+
for (const featureIdDesc of instanceFeaturesExt.featureIds) {
|
|
146316
|
+
const table = this._structuralMetadata.tables[featureIdDesc.propertyTable];
|
|
146317
|
+
instanceProps[table.name] = {};
|
|
146318
|
+
// If the attribute is not defined, then the feature id corresponds to the instance id
|
|
146319
|
+
if (featureIdDesc.attribute === undefined) {
|
|
146320
|
+
for (const entries of table.entries) {
|
|
146321
|
+
if (entries.values[localInstanceId] !== undefined) {
|
|
146322
|
+
instanceProps[table.name][entries.name] = entries.values[localInstanceId];
|
|
146323
|
+
}
|
|
146324
|
+
}
|
|
146325
|
+
}
|
|
146326
|
+
else if (featureBuffers.has(featureIdDesc.attribute)) {
|
|
146327
|
+
const featureBuffer = featureBuffers.get(featureIdDesc.attribute);
|
|
146328
|
+
if (!featureBuffer) {
|
|
146329
|
+
continue;
|
|
146330
|
+
}
|
|
146331
|
+
const featureId = featureBuffer[localInstanceId];
|
|
146332
|
+
if (featureIdDesc.nullFeatureId !== undefined && featureId === featureIdDesc.nullFeatureId) {
|
|
146333
|
+
continue;
|
|
146334
|
+
}
|
|
146335
|
+
for (const entries of table.entries) {
|
|
146336
|
+
if (entries.values[featureId] !== undefined) {
|
|
146337
|
+
instanceProps[table.name][entries.name] = entries.values[featureId];
|
|
146338
|
+
}
|
|
146339
|
+
}
|
|
146340
|
+
}
|
|
146341
|
+
}
|
|
146342
|
+
const instanceElementId = this._idMap.getBatchId(instanceProps);
|
|
146343
|
+
// If the element id is already assigned to a previous instance,
|
|
146344
|
+
// reuse the previous feature id to avoid collision in the feature table
|
|
146345
|
+
if (!this._instanceElementIdToFeatureId.has(instanceElementId)) {
|
|
146346
|
+
this._instanceElementIdToFeatureId.set(instanceElementId, this._instanceFeatures.length);
|
|
146347
|
+
this._instanceFeatures.push(new _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Feature(instanceElementId));
|
|
146348
|
+
}
|
|
146349
|
+
const instanceFeatureId = this._instanceElementIdToFeatureId.get(instanceElementId);
|
|
146350
|
+
featureIds[localInstanceId * 3 + 0] = instanceFeatureId & 0xFF;
|
|
146351
|
+
featureIds[localInstanceId * 3 + 1] = (instanceFeatureId >> 8) & 0xFF;
|
|
146352
|
+
featureIds[localInstanceId * 3 + 2] = (instanceFeatureId >> 16) & 0xFF;
|
|
146353
|
+
}
|
|
146354
|
+
}
|
|
146271
146355
|
return { count, transforms, transformCenter, featureIds };
|
|
146272
146356
|
}
|
|
146273
146357
|
readNodeAndCreateGraphics(renderGraphicList, node, featureTable, transformStack, batchInstances, pseudoRtcBias) {
|
|
@@ -146446,6 +146530,8 @@ class GltfReader {
|
|
|
146446
146530
|
this._resolvedTextures = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Dictionary((lhs, rhs) => compareTextureKeys(lhs, rhs));
|
|
146447
146531
|
this._dracoMeshes = new Map();
|
|
146448
146532
|
this._containsPointCloud = false;
|
|
146533
|
+
this._instanceFeatures = [];
|
|
146534
|
+
this._instanceElementIdToFeatureId = new Map();
|
|
146449
146535
|
/** The glTF spec says that if GltfSampler.wrapS/T are omitted, they default to Repeat.
|
|
146450
146536
|
* However, the reality data service serves tiles that lack any wrapS/T property, and we want those clamped to edge, not repeated.
|
|
146451
146537
|
* (We also don't want to produce mip-maps for them, which is determined indirectly from the wrap mode).
|
|
@@ -146483,6 +146569,7 @@ class GltfReader {
|
|
|
146483
146569
|
if (!sceneNodes)
|
|
146484
146570
|
sceneNodes = Object.keys(this._nodes);
|
|
146485
146571
|
this._sceneNodes = sceneNodes;
|
|
146572
|
+
this._idMap = args.idMap;
|
|
146486
146573
|
}
|
|
146487
146574
|
readBufferData(json, accessorName, type) {
|
|
146488
146575
|
const view = this.getBufferView(json, accessorName);
|
|
@@ -147381,6 +147468,7 @@ class GltfGraphicsReader extends GltfReader {
|
|
|
147381
147468
|
props,
|
|
147382
147469
|
iModel: args.iModel,
|
|
147383
147470
|
vertexTableRequired: true,
|
|
147471
|
+
idMap: args.idMap,
|
|
147384
147472
|
});
|
|
147385
147473
|
this._contentRange = args.contentRange;
|
|
147386
147474
|
this._transform = args.transform;
|
|
@@ -147398,10 +147486,168 @@ class GltfGraphicsReader extends GltfReader {
|
|
|
147398
147486
|
renderMode: _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.RenderMode.SmoothShade,
|
|
147399
147487
|
};
|
|
147400
147488
|
}
|
|
147489
|
+
getGltfStructuralMetadataBuffer(id, type) {
|
|
147490
|
+
const bufferView = this._bufferViews[id];
|
|
147491
|
+
if (!bufferView || undefined === bufferView.buffer)
|
|
147492
|
+
return undefined;
|
|
147493
|
+
if (!bufferView.byteLength || bufferView.byteLength === 0) {
|
|
147494
|
+
return undefined;
|
|
147495
|
+
}
|
|
147496
|
+
const bufferData = this._buffers[bufferView.buffer]?.resolvedBuffer;
|
|
147497
|
+
if (!bufferData)
|
|
147498
|
+
return undefined;
|
|
147499
|
+
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(undefined !== bufferView.byteLength); // required by spec; TypeScript interface is wrong.
|
|
147500
|
+
const byteOffset = bufferView.byteOffset ?? 0;
|
|
147501
|
+
const subarray = bufferData.slice(byteOffset, byteOffset + bufferView.byteLength);
|
|
147502
|
+
switch (type) {
|
|
147503
|
+
case "INT8":
|
|
147504
|
+
return new Int8Array(subarray.buffer, 0, bufferView.byteLength);
|
|
147505
|
+
case "UINT8":
|
|
147506
|
+
return new Uint8Array(subarray.buffer, 0, bufferView.byteLength);
|
|
147507
|
+
case "INT16":
|
|
147508
|
+
return new Int16Array(subarray.buffer, 0, bufferView.byteLength / 2);
|
|
147509
|
+
case "UINT16":
|
|
147510
|
+
return new Uint16Array(subarray.buffer, 0, bufferView.byteLength / 2);
|
|
147511
|
+
case "INT32":
|
|
147512
|
+
return new Int32Array(subarray.buffer, 0, bufferView.byteLength / 4);
|
|
147513
|
+
case "UINT32":
|
|
147514
|
+
return new Uint32Array(subarray.buffer, 0, bufferView.byteLength / 4);
|
|
147515
|
+
case "INT64":
|
|
147516
|
+
return new BigInt64Array(subarray.buffer, 0, bufferView.byteLength / 8);
|
|
147517
|
+
case "UINT64":
|
|
147518
|
+
return new BigUint64Array(subarray.buffer, 0, bufferView.byteLength / 8);
|
|
147519
|
+
case "FLOAT32":
|
|
147520
|
+
return new Float32Array(subarray.buffer, 0, bufferView.byteLength / 4);
|
|
147521
|
+
case "FLOAT64":
|
|
147522
|
+
return new Float64Array(subarray.buffer, 0, bufferView.byteLength / 8);
|
|
147523
|
+
}
|
|
147524
|
+
return undefined;
|
|
147525
|
+
}
|
|
147526
|
+
getGltfStructuralMetadataPropertyValues(property, classProperty, count) {
|
|
147527
|
+
// Not supported for now
|
|
147528
|
+
if (classProperty.type === "ENUM" || classProperty.type === "BOOLEAN") {
|
|
147529
|
+
return undefined;
|
|
147530
|
+
}
|
|
147531
|
+
let getPropertyValue;
|
|
147532
|
+
if (classProperty.type === "STRING" && property.stringOffsets) {
|
|
147533
|
+
const stringValues = this.getGltfStructuralMetadataBuffer(property.values, "UINT8");
|
|
147534
|
+
if (!stringValues) {
|
|
147535
|
+
return undefined;
|
|
147536
|
+
}
|
|
147537
|
+
const stringOffsets = this.getGltfStructuralMetadataBuffer(property.stringOffsets, "UINT32");
|
|
147538
|
+
if (!stringOffsets) {
|
|
147539
|
+
return undefined;
|
|
147540
|
+
}
|
|
147541
|
+
getPropertyValue = (index) => {
|
|
147542
|
+
const begin = stringOffsets[index];
|
|
147543
|
+
const end = stringOffsets[index + 1];
|
|
147544
|
+
return (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.utf8ToString)(stringValues.subarray(begin, end));
|
|
147545
|
+
};
|
|
147546
|
+
}
|
|
147547
|
+
else {
|
|
147548
|
+
if (!classProperty.componentType) {
|
|
147549
|
+
return undefined;
|
|
147550
|
+
}
|
|
147551
|
+
let numComponents = -1;
|
|
147552
|
+
switch (classProperty.type) {
|
|
147553
|
+
case "SCALAR":
|
|
147554
|
+
numComponents = 1;
|
|
147555
|
+
break;
|
|
147556
|
+
case "VEC2":
|
|
147557
|
+
numComponents = 2;
|
|
147558
|
+
break;
|
|
147559
|
+
case "VEC3":
|
|
147560
|
+
numComponents = 3;
|
|
147561
|
+
break;
|
|
147562
|
+
case "VEC4":
|
|
147563
|
+
numComponents = 4;
|
|
147564
|
+
break;
|
|
147565
|
+
case "MAT2":
|
|
147566
|
+
numComponents = 4;
|
|
147567
|
+
break;
|
|
147568
|
+
case "MAT3":
|
|
147569
|
+
numComponents = 9;
|
|
147570
|
+
break;
|
|
147571
|
+
case "MAT4":
|
|
147572
|
+
numComponents = 16;
|
|
147573
|
+
break;
|
|
147574
|
+
}
|
|
147575
|
+
if (numComponents === -1) {
|
|
147576
|
+
return undefined;
|
|
147577
|
+
}
|
|
147578
|
+
const values = this.getGltfStructuralMetadataBuffer(property.values, classProperty.componentType);
|
|
147579
|
+
if (!values) {
|
|
147580
|
+
return undefined;
|
|
147581
|
+
}
|
|
147582
|
+
if (numComponents === 1) {
|
|
147583
|
+
getPropertyValue = (index) => {
|
|
147584
|
+
return values[index];
|
|
147585
|
+
};
|
|
147586
|
+
}
|
|
147587
|
+
else {
|
|
147588
|
+
getPropertyValue = (index) => {
|
|
147589
|
+
const result = [];
|
|
147590
|
+
for (let i = 0; i < numComponents; i++) {
|
|
147591
|
+
result.push(values[index * numComponents + i]);
|
|
147592
|
+
}
|
|
147593
|
+
return result;
|
|
147594
|
+
};
|
|
147595
|
+
}
|
|
147596
|
+
}
|
|
147597
|
+
const propertyValues = [];
|
|
147598
|
+
for (let i = 0; i < count; i++) {
|
|
147599
|
+
const value = getPropertyValue(i);
|
|
147600
|
+
const propertyValue = (typeof value === "bigint") ? value.toString() : value;
|
|
147601
|
+
if (!classProperty.noData || propertyValue !== classProperty.noData) {
|
|
147602
|
+
propertyValues.push(propertyValue);
|
|
147603
|
+
}
|
|
147604
|
+
else {
|
|
147605
|
+
propertyValues.push(undefined);
|
|
147606
|
+
}
|
|
147607
|
+
}
|
|
147608
|
+
return propertyValues;
|
|
147609
|
+
}
|
|
147610
|
+
readGltfStructuralMetadata() {
|
|
147611
|
+
const propertyTables = this._glTF.extensions?.EXT_structural_metadata?.propertyTables;
|
|
147612
|
+
const schema = this._glTF.extensions?.EXT_structural_metadata?.schema;
|
|
147613
|
+
if (propertyTables && schema && schema.classes) {
|
|
147614
|
+
this._structuralMetadata = { tables: [] };
|
|
147615
|
+
for (const propertyTable of propertyTables) {
|
|
147616
|
+
if (!propertyTable.properties || !schema.classes) {
|
|
147617
|
+
continue;
|
|
147618
|
+
}
|
|
147619
|
+
const propertyTableSchema = schema.classes[propertyTable.class];
|
|
147620
|
+
if (!propertyTableSchema || !propertyTableSchema.properties) {
|
|
147621
|
+
continue;
|
|
147622
|
+
}
|
|
147623
|
+
const structuralMetadataTable = {
|
|
147624
|
+
name: propertyTableSchema.name ?? propertyTable.class,
|
|
147625
|
+
entries: [],
|
|
147626
|
+
};
|
|
147627
|
+
for (const [propertyName, property] of Object.entries(propertyTable.properties)) {
|
|
147628
|
+
const propertySchema = propertyTableSchema.properties[propertyName];
|
|
147629
|
+
if (!property || !propertySchema) {
|
|
147630
|
+
continue;
|
|
147631
|
+
}
|
|
147632
|
+
const propertyValues = this.getGltfStructuralMetadataPropertyValues(property, propertySchema, propertyTable.count);
|
|
147633
|
+
if (!propertyValues) {
|
|
147634
|
+
continue;
|
|
147635
|
+
}
|
|
147636
|
+
structuralMetadataTable.entries.push({
|
|
147637
|
+
name: propertySchema.name ?? propertyName,
|
|
147638
|
+
values: propertyValues,
|
|
147639
|
+
});
|
|
147640
|
+
}
|
|
147641
|
+
this._structuralMetadata.tables.push(structuralMetadataTable);
|
|
147642
|
+
}
|
|
147643
|
+
}
|
|
147644
|
+
}
|
|
147401
147645
|
async read() {
|
|
147402
147646
|
await this.resolveResources();
|
|
147647
|
+
this.readGltfStructuralMetadata();
|
|
147403
147648
|
return this.readGltfAndCreateGraphics(this._isLeaf, this._featureTable, this._contentRange, this._transform);
|
|
147404
147649
|
}
|
|
147650
|
+
get structuralMetadata() { return this._structuralMetadata; }
|
|
147405
147651
|
get nodes() { return this._nodes; }
|
|
147406
147652
|
get scenes() { return this._glTF.scenes ?? emptyDict; }
|
|
147407
147653
|
get sceneNodes() { return this._sceneNodes; }
|
|
@@ -147532,14 +147778,13 @@ class I3dmReader extends _internal__WEBPACK_IMPORTED_MODULE_3__.GltfReader {
|
|
|
147532
147778
|
constructor(_featureBinary, _featureJson, _batchTableJson, props, iModel, modelId, is3d, system, _range, _isLeaf, shouldAbort, _idMap, deduplicateVertices = false) {
|
|
147533
147779
|
super({
|
|
147534
147780
|
props, iModel, system, shouldAbort, deduplicateVertices,
|
|
147535
|
-
is2d: !is3d,
|
|
147781
|
+
is2d: !is3d, idMap: _idMap,
|
|
147536
147782
|
});
|
|
147537
147783
|
this._featureBinary = _featureBinary;
|
|
147538
147784
|
this._featureJson = _featureJson;
|
|
147539
147785
|
this._batchTableJson = _batchTableJson;
|
|
147540
147786
|
this._range = _range;
|
|
147541
147787
|
this._isLeaf = _isLeaf;
|
|
147542
|
-
this._idMap = _idMap;
|
|
147543
147788
|
this._instanceCount = 0;
|
|
147544
147789
|
this._modelId = modelId;
|
|
147545
147790
|
}
|
|
@@ -151670,7 +151915,7 @@ class RealityTreeReference extends RealityModelTileTree.Reference {
|
|
|
151670
151915
|
if (batch !== undefined)
|
|
151671
151916
|
for (const key of Object.keys(batch))
|
|
151672
151917
|
if (-1 === key.indexOf("#")) // Avoid internal cesium
|
|
151673
|
-
strings.push(`${key}: ${batch[key]}`);
|
|
151918
|
+
strings.push(`${key}: ${JSON.stringify(batch[key])}`);
|
|
151674
151919
|
const div = document.createElement("div");
|
|
151675
151920
|
div.innerHTML = strings.join("<br>");
|
|
151676
151921
|
return div;
|
|
@@ -152418,6 +152663,7 @@ class RealityTileLoader {
|
|
|
152418
152663
|
transform: tile.transformToRoot,
|
|
152419
152664
|
hasChildren: !tile.isLeaf,
|
|
152420
152665
|
pickableOptions: { id: modelId },
|
|
152666
|
+
idMap: this.getBatchIdMap(),
|
|
152421
152667
|
});
|
|
152422
152668
|
}
|
|
152423
152669
|
break;
|
|
@@ -291291,7 +291537,7 @@ class TestContext {
|
|
|
291291
291537
|
this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
|
|
291292
291538
|
const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
|
|
291293
291539
|
await core_frontend_1.NoRenderApp.startup({
|
|
291294
|
-
applicationVersion: "4.8.0-dev.
|
|
291540
|
+
applicationVersion: "4.8.0-dev.31",
|
|
291295
291541
|
applicationId: this.settings.gprid,
|
|
291296
291542
|
authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
|
|
291297
291543
|
hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
|
|
@@ -315287,7 +315533,7 @@ function __disposeResources(env) {
|
|
|
315287
315533
|
/***/ ((module) => {
|
|
315288
315534
|
|
|
315289
315535
|
"use strict";
|
|
315290
|
-
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.8.0-dev.
|
|
315536
|
+
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.8.0-dev.31","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.8.0-dev.31","@itwin/core-bentley":"workspace:^4.8.0-dev.31","@itwin/core-common":"workspace:^4.8.0-dev.31","@itwin/core-geometry":"workspace:^4.8.0-dev.31","@itwin/core-orbitgt":"workspace:^4.8.0-dev.31","@itwin/core-quantity":"workspace:^4.8.0-dev.31"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"^4.0.2","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^10.0.6","@types/sinon":"^17.0.2","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.3.10","chai-as-promised":"^7.1.1","cpx2":"^3.0.0","eslint":"^8.56.0","glob":"^10.3.12","mocha":"^10.2.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^17.0.1","source-map-loader":"^4.0.0","typescript":"~5.3.3","typemoq":"^2.1.0","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.1.0","@itwin/object-storage-core":"^2.2.2","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","meshoptimizer":"~0.20.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
|
|
315291
315537
|
|
|
315292
315538
|
/***/ }),
|
|
315293
315539
|
|