@itwin/rpcinterface-full-stack-tests 5.1.4 → 5.1.6

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.
@@ -120462,6 +120462,7 @@ class PlanarClipMaskState {
120462
120462
  _tileTreeRefs;
120463
120463
  _allLoaded = false;
120464
120464
  _usingViewportOverrides = false;
120465
+ _overridesModelVisibility = false;
120465
120466
  _maskRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Range3d.createNull();
120466
120467
  constructor(settings) {
120467
120468
  this.settings = settings;
@@ -120474,6 +120475,8 @@ class PlanarClipMaskState {
120474
120475
  }
120475
120476
  get usingViewportOverrides() { return this._usingViewportOverrides; }
120476
120477
  ;
120478
+ /** @internal */
120479
+ get overridesModelVisibility() { return this._overridesModelVisibility; }
120477
120480
  discloseTileTrees(trees) {
120478
120481
  if (this._tileTreeRefs)
120479
120482
  this._tileTreeRefs.forEach((treeRef) => treeRef.discloseTileTrees(trees));
@@ -120509,7 +120512,7 @@ class PlanarClipMaskState {
120509
120512
  }
120510
120513
  // Returns any potential FeatureSymbology overrides for drawing the planar clip mask.
120511
120514
  getPlanarClipMaskSymbologyOverrides(context, featureSymbologySource) {
120512
- this._usingViewportOverrides = false;
120515
+ this._usingViewportOverrides = this._overridesModelVisibility = false;
120513
120516
  // First obtain a list of models that will need to be turned off for drawing the planar clip mask (only used for batched tile trees).
120514
120517
  const overrideModels = context.viewport.view.isSpatialView() ? context.viewport.view.getModelsNotInMask(this.settings.modelIds, _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskMode.Priority === this.settings.mode) : undefined;
120515
120518
  const noSubCategoryOrElementIds = !this.settings.subCategoryOrElementIds;
@@ -120519,6 +120522,7 @@ class PlanarClipMaskState {
120519
120522
  const viewport = overrideModels && ovrBasedOnContext ? context.viewport : undefined;
120520
120523
  const overrides = _render_FeatureSymbology__WEBPACK_IMPORTED_MODULE_1__.FeatureSymbology.Overrides.withSource(featureSymbologySource, viewport);
120521
120524
  if (overrideModels) {
120525
+ this._overridesModelVisibility = true;
120522
120526
  // overrideModels is used for batched models. For those, we need to create model overrides to turn off models that are
120523
120527
  // not wanted in the mask (using transparency) no matter what mask mode is being used.
120524
120528
  const appOff = _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.FeatureAppearance.fromTransparency(1.0);
@@ -124559,10 +124563,21 @@ class RenderContext {
124559
124563
  class DynamicsContext extends RenderContext {
124560
124564
  _foreground;
124561
124565
  _overlay;
124562
- /** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]]. */
124566
+ /** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]].
124567
+ * These graphics are drawn as [[GraphicType.Scene]].
124568
+ * @see [[addOverlay]] to add a graphic to be drawn as an overlay instead.
124569
+ */
124563
124570
  addGraphic(graphic) {
124564
124571
  this.add(graphic, false);
124565
124572
  }
124573
+ /** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]].
124574
+ * These graphics are drawn as part of the viewport's scene as described by [[GraphicType.Scene]], except
124575
+ * that they always draw on top of other graphics as with [[GraphicType.WorldOverlay]].
124576
+ * @see [[addGraphic]] to add an ordinary scene graphic instead.
124577
+ */
124578
+ addOverlay(graphic) {
124579
+ this.add(graphic, true);
124580
+ }
124566
124581
  /** @internal */
124567
124582
  add(graphic, isOverlay) {
124568
124583
  const key = isOverlay ? "_overlay" : "_foreground";
@@ -144175,6 +144190,7 @@ __webpack_require__.r(__webpack_exports__);
144175
144190
  /* harmony export */ BatchUniforms: () => (/* binding */ BatchUniforms)
144176
144191
  /* harmony export */ });
144177
144192
  /* harmony import */ var _Sync__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Sync */ "../../core/frontend/lib/esm/internal/render/webgl/Sync.js");
144193
+ /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
144178
144194
  /*---------------------------------------------------------------------------------------------
144179
144195
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
144180
144196
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -144183,6 +144199,7 @@ __webpack_require__.r(__webpack_exports__);
144183
144199
  * @module WebGL
144184
144200
  */
144185
144201
 
144202
+
144186
144203
  const scratchRgb = new Float32Array(3);
144187
144204
  const noOverrideRgb = new Float32Array([-1.0, -1.0, -1.0]);
144188
144205
  /** Maintains uniform variable state associated with the Batch currently being drawn by a Target.
@@ -144203,19 +144220,29 @@ class BatchUniforms {
144203
144220
  this.state = batchState;
144204
144221
  this._target = target;
144205
144222
  }
144206
- setCurrentBatch(batch) {
144223
+ clearCurrentBatch() {
144224
+ this._setCurrentBatch(undefined, undefined);
144225
+ }
144226
+ setCurrentBatch(batch, provider) {
144227
+ this._setCurrentBatch(batch, provider);
144228
+ }
144229
+ _setCurrentBatch(batch, provider) {
144207
144230
  (0,_Sync__WEBPACK_IMPORTED_MODULE_0__.desync)(this);
144208
- if (undefined !== batch)
144231
+ let overrides;
144232
+ if (undefined !== batch) {
144233
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_1__.assert)(undefined !== provider);
144234
+ overrides = batch.getOverrides(this._target, provider);
144209
144235
  this.state.push(batch, false);
144210
- else
144236
+ }
144237
+ else {
144211
144238
  this.state.pop();
144239
+ }
144212
144240
  const batchId = this.state.currentBatchId;
144213
144241
  this._scratchUint32[0] = batchId;
144214
144242
  this._batchId[0] = this._scratchBytes[0];
144215
144243
  this._batchId[1] = this._scratchBytes[1];
144216
144244
  this._batchId[2] = this._scratchBytes[2];
144217
144245
  this._batchId[3] = this._scratchBytes[3];
144218
- const overrides = undefined !== batch ? batch.getOverrides(this._target) : undefined;
144219
144246
  this._overrides = (undefined !== overrides && overrides.anyOverridden) ? overrides : undefined;
144220
144247
  let sensors;
144221
144248
  if (undefined !== batch && this._target.wantThematicSensors) {
@@ -147672,7 +147699,7 @@ class FeatureOverrides {
147672
147699
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(undefined !== this._lut.dataBytes);
147673
147700
  return this._lut.dataBytes;
147674
147701
  }
147675
- _initialize(map, ovrs, pickExcludes, hilite, flashed) {
147702
+ _initialize(provider, map, ovrs, pickExcludes, hilite, flashed) {
147676
147703
  const nFeatures = map.numFeatures;
147677
147704
  const dims = (0,_common_internal_render_VertexTable__WEBPACK_IMPORTED_MODULE_9__.computeDimensions)(nFeatures, 3, 0, _System__WEBPACK_IMPORTED_MODULE_6__.System.instance.maxTextureSize);
147678
147705
  const width = dims.width;
@@ -147682,17 +147709,17 @@ class FeatureOverrides {
147682
147709
  this._lutParams[1] = height;
147683
147710
  const data = new Uint8Array(width * height * 4);
147684
147711
  const creator = new _Texture__WEBPACK_IMPORTED_MODULE_7__.Texture2DDataUpdater(data);
147685
- this.buildLookupTable(creator, map, ovrs, pickExcludes, flashed, hilite);
147712
+ this.buildLookupTable(provider, creator, map, ovrs, pickExcludes, flashed, hilite);
147686
147713
  return _Texture__WEBPACK_IMPORTED_MODULE_7__.TextureHandle.createForData(width, height, data, true, _GL__WEBPACK_IMPORTED_MODULE_3__.GL.Texture.WrapMode.ClampToEdge);
147687
147714
  }
147688
- _update(map, lut, pickExcludes, flashed, hilites, ovrs) {
147715
+ _update(provider, map, lut, pickExcludes, flashed, hilites, ovrs) {
147689
147716
  const updater = new _Texture__WEBPACK_IMPORTED_MODULE_7__.Texture2DDataUpdater(lut.dataBytes);
147690
147717
  if (undefined === ovrs) {
147691
147718
  this.updateFlashedAndHilited(updater, map, pickExcludes, flashed, hilites);
147692
147719
  }
147693
147720
  else {
147694
147721
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(undefined !== hilites);
147695
- this.buildLookupTable(updater, map, ovrs, pickExcludes, flashed, hilites);
147722
+ this.buildLookupTable(provider, updater, map, ovrs, pickExcludes, flashed, hilites);
147696
147723
  }
147697
147724
  lut.update(updater);
147698
147725
  }
@@ -147715,7 +147742,7 @@ class FeatureOverrides {
147715
147742
  }
147716
147743
  return curFlags;
147717
147744
  }
147718
- buildLookupTable(data, map, ovr, pickExclude, flashedIdParts, hilites) {
147745
+ buildLookupTable(provider, data, map, ovr, pickExclude, flashedIdParts, hilites) {
147719
147746
  const allowHilite = true !== this._options.noHilite;
147720
147747
  const allowFlash = true !== this._options.noFlash;
147721
147748
  const allowEmphasis = true !== this._options.noEmphasis;
@@ -147743,7 +147770,7 @@ class FeatureOverrides {
147743
147770
  prevModelId.upper = feature.modelId.upper;
147744
147771
  isModelHilited = allowHilite && hilites.models.hasPair(feature.modelId);
147745
147772
  }
147746
- const app = this.target.currentBranch.getFeatureAppearance(ovr, feature.elementId.lower, feature.elementId.upper, feature.subCategoryId.lower, feature.subCategoryId.upper, feature.geometryClass, feature.modelId.lower, feature.modelId.upper, map.type, feature.animationNodeId);
147773
+ const app = provider.getFeatureAppearance(ovr, feature.elementId.lower, feature.elementId.upper, feature.subCategoryId.lower, feature.subCategoryId.upper, feature.geometryClass, feature.modelId.lower, feature.modelId.upper, map.type, feature.animationNodeId);
147747
147774
  // NB: If the appearance is fully transparent, then:
147748
147775
  // - For normal ("primary") models, getAppearance() returns undefined.
147749
147776
  // - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.
@@ -147903,19 +147930,19 @@ class FeatureOverrides {
147903
147930
  this._cleanup = undefined;
147904
147931
  }
147905
147932
  }
147906
- initFromMap(map) {
147933
+ initFromMap(map, provider) {
147907
147934
  const nFeatures = map.numFeatures;
147908
147935
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(0 < nFeatures);
147909
147936
  this._lut = (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.dispose)(this._lut);
147910
147937
  const ovrs = this.target.currentFeatureSymbologyOverrides;
147911
147938
  this._mostRecentSymbologyOverrides = ovrs;
147912
147939
  const hilite = this.target.hilites;
147913
- this._lut = this._initialize(map, ovrs, this.target.pickExclusions, hilite, this.target.flashed);
147940
+ this._lut = this._initialize(provider, map, ovrs, this.target.pickExclusions, hilite, this.target.flashed);
147914
147941
  this._lastFlashId = _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Id64.invalid;
147915
147942
  this._hiliteSyncObserver = {};
147916
147943
  this._pickExclusionsSyncObserver = {};
147917
147944
  }
147918
- update(features) {
147945
+ update(features, provider) {
147919
147946
  let ovrs = this.target.currentFeatureSymbologyOverrides;
147920
147947
  const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;
147921
147948
  if (ovrsUpdated)
@@ -147929,7 +147956,7 @@ class FeatureOverrides {
147929
147956
  if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId || pickExcludesUpdated) {
147930
147957
  // _lut can be undefined if context was lost, (gl.createTexture returns null)
147931
147958
  if (this._lut) {
147932
- this._update(features, this._lut, undefined !== ovrs || pickExcludesUpdated ? this.target.pickExclusions : undefined, this.target.flashed, undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs);
147959
+ this._update(provider, features, this._lut, undefined !== ovrs || pickExcludesUpdated ? this.target.pickExclusions : undefined, this.target.flashed, undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs);
147933
147960
  }
147934
147961
  this._lastFlashId = flashedId;
147935
147962
  }
@@ -149201,15 +149228,15 @@ class PerTargetBatchData {
149201
149228
  this._thematicSensors.update(this.target.uniforms.frustum.viewMatrix);
149202
149229
  return this._thematicSensors;
149203
149230
  }
149204
- getFeatureOverrides(batch) {
149231
+ getFeatureOverrides(batch, provider) {
149205
149232
  const source = this.target.currentFeatureSymbologyOverrides?.source;
149206
149233
  let ovrs = this._featureOverrides.get(source);
149207
149234
  if (!ovrs) {
149208
149235
  const cleanup = source ? source.onSourceDisposed.addOnce(() => this.onSourceDisposed(source)) : undefined;
149209
149236
  this._featureOverrides.set(source, ovrs = _FeatureOverrides__WEBPACK_IMPORTED_MODULE_7__.FeatureOverrides.createFromTarget(this.target, batch.options, cleanup));
149210
- ovrs.initFromMap(batch.featureTable);
149237
+ ovrs.initFromMap(batch.featureTable, provider);
149211
149238
  }
149212
- ovrs.update(batch.featureTable);
149239
+ ovrs.update(batch.featureTable, provider);
149213
149240
  return ovrs;
149214
149241
  }
149215
149242
  getContours(batch) {
@@ -149276,8 +149303,8 @@ class PerTargetData {
149276
149303
  getThematicSensors(target) {
149277
149304
  return this.getBatchData(target).getThematicSensors(this._batch);
149278
149305
  }
149279
- getFeatureOverrides(target) {
149280
- return this.getBatchData(target).getFeatureOverrides(this._batch);
149306
+ getFeatureOverrides(target, provider) {
149307
+ return this.getBatchData(target).getFeatureOverrides(this._batch, provider);
149281
149308
  }
149282
149309
  getContours(target) {
149283
149310
  return this.getBatchData(target).getContours(this._batch);
@@ -149364,8 +149391,8 @@ class Batch extends Graphic {
149364
149391
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(target.plan.thematic.sensorSettings.sensors.length > 0, "must have at least one sensor to process");
149365
149392
  return this.perTargetData.getThematicSensors(target);
149366
149393
  }
149367
- getOverrides(target) {
149368
- return this.perTargetData.getFeatureOverrides(target);
149394
+ getOverrides(target, provider) {
149395
+ return this.perTargetData.getFeatureOverrides(target, provider);
149369
149396
  }
149370
149397
  getContours(target) {
149371
149398
  return this.perTargetData.getContours(target);
@@ -152110,6 +152137,7 @@ class PlanarClassifier extends _RenderPlanarClassifier__WEBPACK_IMPORTED_MODULE_
152110
152137
  _planarClipMask;
152111
152138
  _classifierTreeRef;
152112
152139
  _planarClipMaskOverrides;
152140
+ _overridesDirty = true;
152113
152141
  _contentMode = PlanarClassifierContent.None;
152114
152142
  _removeMe;
152115
152143
  _featureSymbologySource = {
@@ -152248,14 +152276,17 @@ class PlanarClassifier extends _RenderPlanarClassifier__WEBPACK_IMPORTED_MODULE_
152248
152276
  this._projectionMatrix = projection.projectionMatrix;
152249
152277
  this._frustum = projection.textureFrustum;
152250
152278
  this._debugFrustum = projection.debugFrustum;
152251
- this._planarClipMaskOverrides = this._planarClipMask?.getPlanarClipMaskSymbologyOverrides(context, this._featureSymbologySource);
152279
+ if (this._overridesDirty) {
152280
+ this._overridesDirty = false;
152281
+ this._planarClipMaskOverrides = this._planarClipMask?.getPlanarClipMaskSymbologyOverrides(context, this._featureSymbologySource);
152282
+ }
152252
152283
  if (!this._planarClipMask?.usingViewportOverrides && this._removeMe) {
152253
152284
  this._removeMe();
152254
152285
  this._removeMe = undefined;
152255
152286
  }
152256
152287
  else if (this._planarClipMask?.usingViewportOverrides && !this._removeMe) {
152257
152288
  this._removeMe = context.viewport.onFeatureOverridesChanged.addListener(() => {
152258
- this._planarClipMaskOverrides = this._planarClipMask?.getPlanarClipMaskSymbologyOverrides(context, this._featureSymbologySource);
152289
+ this._overridesDirty = true;
152259
152290
  context.viewport.requestRedraw();
152260
152291
  });
152261
152292
  }
@@ -152384,6 +152415,16 @@ class PlanarClassifier extends _RenderPlanarClassifier__WEBPACK_IMPORTED_MODULE_
152384
152415
  const getDrawCommands = (graphics) => {
152385
152416
  this._batchState.reset();
152386
152417
  renderCommands.reset(target, this._branchStack, this._batchState);
152418
+ if (this._planarClipMask?.overridesModelVisibility) {
152419
+ // We're using batched tiles and the mask is overriding which models are visible versus those visible in the view.
152420
+ // We don't want the BatchedTileTreeReference to hide models that belong in the mask.
152421
+ // The target's root branch's symbology overrides are set up correctly for the mask, and we never push branches to the target
152422
+ // (we have a separate branch stack), so just use the root branch as the appearance provider instead of the branch stack.
152423
+ // NOTE: this doesn't work if we're inside a GraphicalEditingScope displaying temporary graphics for some elements, because those
152424
+ // elements are hidden in the tiles by a FeatureAppearanceProvider. But we'll never use a GraphicalEditingScope with batched tiles,
152425
+ // and non-batched tiles never hide models using symbology overrides.
152426
+ renderCommands.appearanceProvider = target.currentBranch;
152427
+ }
152387
152428
  renderCommands.collectGraphicsForPlanarProjection(graphics);
152388
152429
  // Draw the classifiers into our attachments.
152389
152430
  // When using Display.ElementColor, the color and transparency come from the classifier geometry. Therefore we may need to draw the classified geometry
@@ -152410,8 +152451,10 @@ class PlanarClassifier extends _RenderPlanarClassifier__WEBPACK_IMPORTED_MODULE_
152410
152451
  this._classifierBuffers.drawHilite(hiliteCommands, target);
152411
152452
  }
152412
152453
  if (this._maskGraphics.length > 0 && this._maskBuffer) {
152413
- if (this._planarClipMaskOverrides)
152454
+ if (this._planarClipMaskOverrides) {
152414
152455
  target.overrideFeatureSymbology(this._planarClipMaskOverrides);
152456
+ this._branchStack.setSymbologyOverrides(this._planarClipMaskOverrides);
152457
+ }
152415
152458
  if (this._planarClipMask && this._planarClipMask.settings.transparency !== undefined && this._planarClipMask.settings.transparency > 0.0)
152416
152459
  this._anyTranslucent = true;
152417
152460
  this._maskBuffer.draw(getDrawCommands(this._maskGraphics), target);
@@ -153862,6 +153905,7 @@ class RenderCommands {
153862
153905
  _translucentOverrides = false;
153863
153906
  _addTranslucentAsOpaque = false; // true when rendering for _ReadPixels to force translucent items to be drawn in opaque pass.
153864
153907
  _layers;
153908
+ appearanceProvider;
153865
153909
  get target() { return this._target; }
153866
153910
  [Symbol.iterator]() {
153867
153911
  return this._commands[Symbol.iterator]();
@@ -153908,6 +153952,7 @@ class RenderCommands {
153908
153952
  this._target = target;
153909
153953
  this._stack = stack;
153910
153954
  this._batchState = batchState;
153955
+ this.appearanceProvider = undefined;
153911
153956
  this.clear();
153912
153957
  }
153913
153958
  collectGraphicsForPlanarProjection(scene) {
@@ -154348,7 +154393,7 @@ class RenderCommands {
154348
154393
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!this._opaqueOverrides && !this._translucentOverrides);
154349
154394
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(undefined === this._curBatch);
154350
154395
  // If all features are overridden to be invisible, draw no graphics in this batch
154351
- const overrides = batch.getOverrides(this.target);
154396
+ const overrides = batch.getOverrides(this.target, this.appearanceProvider ?? this._stack.top);
154352
154397
  if (overrides.allHidden)
154353
154398
  return;
154354
154399
  if (!batch.range.isNull) {
@@ -161151,10 +161196,10 @@ class Target extends _render_RenderTarget__WEBPACK_IMPORTED_MODULE_7__.RenderTar
161151
161196
  return this.isRangeOutsideActiveVolume(range);
161152
161197
  }
161153
161198
  pushBatch(batch) {
161154
- this.uniforms.batch.setCurrentBatch(batch);
161199
+ this.uniforms.batch.setCurrentBatch(batch, this.currentBranch);
161155
161200
  }
161156
161201
  popBatch() {
161157
- this.uniforms.batch.setCurrentBatch(undefined);
161202
+ this.uniforms.batch.clearCurrentBatch();
161158
161203
  }
161159
161204
  addBatch(batch) {
161160
161205
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(this._batches.indexOf(batch) < 0);
@@ -165081,7 +165126,7 @@ function* commandIterator(features, pass) {
165081
165126
  command.execute(executor);
165082
165127
  if (command.opcode !== "pushBatch")
165083
165128
  continue;
165084
- const ovrs = command.batch.getOverrides(features.target);
165129
+ const ovrs = command.batch.getOverrides(features.target, features.target.currentBranch);
165085
165130
  if (ovrs.allHidden)
165086
165131
  continue;
165087
165132
  const scratchFeature = _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.PackedFeature.createWithIndex();
@@ -335401,7 +335446,7 @@ class TestContext {
335401
335446
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
335402
335447
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
335403
335448
  await core_frontend_1.NoRenderApp.startup({
335404
- applicationVersion: "5.1.4",
335449
+ applicationVersion: "5.1.6",
335405
335450
  applicationId: this.settings.gprid,
335406
335451
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.serviceAuthToken),
335407
335452
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -345309,7 +345354,12 @@ class ContentFormatter {
345309
345354
  async formatStructMembers(memberValues, field) {
345310
345355
  const displayValues = {};
345311
345356
  await Promise.all(field.memberFields.map(async (memberField) => {
345312
- displayValues[memberField.name] = await this.formatPropertyValue(memberValues[memberField.name], memberField);
345357
+ const memberValue = memberValues[memberField.name];
345358
+ // do not add undefined value to display values
345359
+ if (memberValue === undefined) {
345360
+ return;
345361
+ }
345362
+ displayValues[memberField.name] = await this.formatPropertyValue(memberValue, memberField);
345313
345363
  }));
345314
345364
  return displayValues;
345315
345365
  }
@@ -360490,7 +360540,7 @@ var loadLanguages = instance.loadLanguages;
360490
360540
  /***/ ((module) => {
360491
360541
 
360492
360542
  "use strict";
360493
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.1.4","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 ES2022 --outDir lib/esm","clean":"rimraf -g 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 --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 \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-deprecation":"eslint --fix -f visualstudio --no-inline-config -c ../../common/config/eslint/eslint.config.deprecation-policy.js \\"./src/**/*.ts\\"","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","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:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//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/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/eslint-plugin":"5.2.2-dev.2","@types/chai-as-promised":"^7","@types/sinon":"^17.0.2","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.31.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^6.0.1","sinon":"^17.0.2","source-map-loader":"^5.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//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.2.4","@itwin/object-storage-core":"^2.3.0","@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
360543
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.1.6","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 ES2022 --outDir lib/esm","clean":"rimraf -g 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 --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 \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-deprecation":"eslint --fix -f visualstudio --no-inline-config -c ../../common/config/eslint/eslint.config.deprecation-policy.js \\"./src/**/*.ts\\"","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","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:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//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/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/eslint-plugin":"5.2.2-dev.2","@types/chai-as-promised":"^7","@types/sinon":"^17.0.2","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.31.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^6.0.1","sinon":"^17.0.2","source-map-loader":"^5.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//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.2.4","@itwin/object-storage-core":"^2.3.0","@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
360494
360544
 
360495
360545
  /***/ }),
360496
360546