@itwin/ecschema-rpcinterface-tests 4.7.4 → 4.7.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.
@@ -1 +1 @@
1
- {"version":3,"file":"_bea9.bundled-tests.js","mappings":";;;;;;;;AAAA","sources":["file:///ignored|D:\\vsts_a\\8\\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":""}
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":""}
@@ -84788,6 +84788,7 @@ __webpack_require__.r(__webpack_exports__);
84788
84788
  /* harmony export */ });
84789
84789
  /* harmony import */ var _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-common */ "../../core/common/lib/esm/core-common.js");
84790
84790
  /* harmony import */ var _render_FeatureSymbology__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./render/FeatureSymbology */ "../../core/frontend/lib/esm/render/FeatureSymbology.js");
84791
+ /* harmony import */ var _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @itwin/core-geometry */ "../../core/geometry/lib/esm/core-geometry.js");
84791
84792
  /*---------------------------------------------------------------------------------------------
84792
84793
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
84793
84794
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -84797,6 +84798,7 @@ __webpack_require__.r(__webpack_exports__);
84797
84798
  */
84798
84799
 
84799
84800
 
84801
+
84800
84802
  /** The State of Planar Clip Mask applied to a reality model or background map.
84801
84803
  * Handles loading models and their associated tiles for models that are used by masks but may not be otherwise loaded or displayed.
84802
84804
  * @beta
@@ -84805,6 +84807,7 @@ class PlanarClipMaskState {
84805
84807
  constructor(settings) {
84806
84808
  this._allLoaded = false;
84807
84809
  this._usingViewportOverrides = false;
84810
+ this._maskRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Range3d.createNull();
84808
84811
  this.settings = settings;
84809
84812
  }
84810
84813
  static create(settings) {
@@ -84819,10 +84822,11 @@ class PlanarClipMaskState {
84819
84822
  if (this._tileTreeRefs)
84820
84823
  this._tileTreeRefs.forEach((treeRef) => treeRef.discloseTileTrees(trees));
84821
84824
  }
84822
- // Returns the TileTreeReferences for the models that need to be drawn to create the planar clip mask.
84823
- getTileTrees(view, classifiedModelId) {
84825
+ // Returns the TileTreeReferences for the models that need to be drawn to create the planar clip mask, and extend the maskRange if needed.
84826
+ getTileTrees(view, classifiedModelId, maskRange) {
84824
84827
  if (this.settings.mode === _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskMode.Priority) {
84825
84828
  // For priority mode we simply want refs for all viewed models if the priority is higher than the mask priority.
84829
+ // For this case, we don't need a maskRange so leave it as null.
84826
84830
  const viewTrees = new Array();
84827
84831
  const thisPriority = this.settings.priority === undefined ? _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskPriority.RealityModel : this.settings.priority;
84828
84832
  view.forEachTileTreeRef((ref) => {
@@ -84834,13 +84838,17 @@ class PlanarClipMaskState {
84834
84838
  }
84835
84839
  // For all other modes we need to let the tree refs in the view state decide which refs need to be drawn
84836
84840
  // since batched tiles cannot turn on/off individual models just by their tile tree refs.
84837
- if (!this._tileTreeRefs) {
84841
+ // Keep calling this until loaded so that the range is valid.
84842
+ if (!this._allLoaded) {
84838
84843
  this._tileTreeRefs = new Array();
84839
- if (this.settings.modelIds)
84840
- view.collectMaskRefs(this.settings.modelIds, this._tileTreeRefs);
84841
- }
84842
- if (!this._allLoaded)
84844
+ if (this.settings.modelIds) {
84845
+ view.collectMaskRefs(this.settings.modelIds, this._tileTreeRefs, maskRange);
84846
+ }
84843
84847
  this._allLoaded = this._tileTreeRefs.every((treeRef) => treeRef.treeOwner.load() !== undefined);
84848
+ maskRange.clone(this._maskRange);
84849
+ }
84850
+ else // If already loaded, just set the maskRange to the saved maskRange.
84851
+ this._maskRange.clone(maskRange);
84844
84852
  return this._allLoaded ? this._tileTreeRefs : undefined;
84845
84853
  }
84846
84854
  // Returns any potential FeatureSymbology overrides for drawing the planar clip mask.
@@ -87135,10 +87143,11 @@ class SpatialViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_6__.ViewState
87135
87143
  /** For getting the [TileTreeReference]s that are in the modelIds, for planar classification.
87136
87144
  * @param modelIds modelIds for which to get the TileTreeReferences
87137
87145
  * @param maskTreeRefs where to store the TileTreeReferences
87146
+ * @param maskRange range to extend for the maskRefs
87138
87147
  * @internal
87139
87148
  */
87140
- collectMaskRefs(modelIds, maskTreeRefs) {
87141
- this._treeRefs.collectMaskRefs(modelIds, maskTreeRefs);
87149
+ collectMaskRefs(modelIds, maskTreeRefs, maskRange) {
87150
+ this._treeRefs.collectMaskRefs(modelIds, maskTreeRefs, maskRange);
87142
87151
  }
87143
87152
  /** For getting a list of modelIds which do not participate in masking for planar classification.
87144
87153
  * @param maskModels models which DO participate in planar clip masking
@@ -103810,6 +103819,10 @@ class GraphicBuilder {
103810
103819
  addFrustum(frustum) {
103811
103820
  this.addRangeBoxFromCorners(frustum.points);
103812
103821
  }
103822
+ /** Add Frustum sides. Useful for debugging. */
103823
+ addFrustumSides(frustum) {
103824
+ this.addRangeBoxSidesFromCorners(frustum.points);
103825
+ }
103813
103826
  /** Add range edges from corner points */
103814
103827
  addRangeBoxFromCorners(p) {
103815
103828
  this.addLineString([
@@ -103828,6 +103841,51 @@ class GraphicBuilder {
103828
103841
  this.addLineString([p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopFront].clone(), p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone()]);
103829
103842
  this.addLineString([p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomRear].clone(), p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomRear].clone()]);
103830
103843
  }
103844
+ /** Add range sides from corner points */
103845
+ addRangeBoxSidesFromCorners(p) {
103846
+ this.addShape([
103847
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomFront].clone(),
103848
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftTopFront].clone(),
103849
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopFront].clone(),
103850
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomFront].clone(),
103851
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomFront].clone()
103852
+ ]);
103853
+ this.addShape([
103854
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone(),
103855
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftTopRear].clone(),
103856
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomRear].clone(),
103857
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomRear].clone(),
103858
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone()
103859
+ ]);
103860
+ this.addShape([
103861
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone(),
103862
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftTopRear].clone(),
103863
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftTopFront].clone(),
103864
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopFront].clone(),
103865
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone()
103866
+ ]);
103867
+ this.addShape([
103868
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone(),
103869
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomRear].clone(),
103870
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomFront].clone(),
103871
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopFront].clone(),
103872
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone()
103873
+ ]);
103874
+ this.addShape([
103875
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomRear].clone(),
103876
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomRear].clone(),
103877
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomFront].clone(),
103878
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomFront].clone(),
103879
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomRear].clone()
103880
+ ]);
103881
+ this.addShape([
103882
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomRear].clone(),
103883
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftTopRear].clone(),
103884
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftTopFront].clone(),
103885
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomFront].clone(),
103886
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomRear].clone()
103887
+ ]);
103888
+ }
103831
103889
  /** Sets the current active symbology for this builder. Any new geometry subsequently added will be drawn using the specified symbology.
103832
103890
  * @param lineColor The color in which to draw lines.
103833
103891
  * @param fillColor The color in which to draw filled regions.
@@ -109894,7 +109952,7 @@ class BackgroundMapDrape extends _TextureDrape__WEBPACK_IMPORTED_MODULE_13__.Tex
109894
109952
  if (!targetTree || !args)
109895
109953
  return;
109896
109954
  const targetTiles = targetTree.selectTiles(args);
109897
- const projection = _PlanarTextureProjection__WEBPACK_IMPORTED_MODULE_9__.PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, { tiles: targetTiles, location: args.location }, [this._mapTree], viewState, this._width, this._height);
109955
+ const projection = _PlanarTextureProjection__WEBPACK_IMPORTED_MODULE_9__.PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, { tiles: targetTiles, location: args.location }, [this._mapTree], viewState, this._width, this._height, _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range3d.createNull());
109898
109956
  if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)
109899
109957
  return;
109900
109958
  this._frustum = projection.textureFrustum;
@@ -117229,19 +117287,22 @@ class PlanarClassifier extends _RenderPlanarClassifier__WEBPACK_IMPORTED_MODULE_
117229
117287
  const viewState = context.viewingSpace.view;
117230
117288
  if (!viewState.isSpatialView())
117231
117289
  return;
117232
- const requiredHeight = context.target.viewRect.height;
117233
- const requiredWidth = context.target.viewRect.width;
117290
+ this._doDebugFrustum = context.target.debugControl?.displayMaskFrustum ?? false;
117291
+ const maxTextureSize = _System__WEBPACK_IMPORTED_MODULE_15__.System.instance.maxTexSizeAllow;
117292
+ const requiredHeight = maxTextureSize;
117293
+ const requiredWidth = maxTextureSize;
117234
117294
  if (requiredWidth !== this._width || requiredHeight !== this._height)
117235
117295
  this.dispose();
117236
117296
  this._width = requiredWidth;
117237
117297
  this._height = requiredHeight;
117238
- const maskTrees = this._planarClipMask?.getTileTrees(viewState, target.modelId);
117298
+ const maskRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Range3d.createNull();
117299
+ const maskTrees = this._planarClipMask?.getTileTrees(viewState, target.modelId, maskRange);
117239
117300
  if (!maskTrees && !this._classifierTreeRef)
117240
117301
  return;
117241
117302
  const allTrees = maskTrees ? maskTrees.slice() : new Array();
117242
117303
  if (this._classifierTreeRef)
117243
117304
  allTrees.push(this._classifierTreeRef);
117244
- const projection = _PlanarTextureProjection__WEBPACK_IMPORTED_MODULE_11__.PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, target, allTrees, viewState, this._width, this._height);
117305
+ const projection = _PlanarTextureProjection__WEBPACK_IMPORTED_MODULE_11__.PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, target, allTrees, viewState, this._width, this._height, maskRange);
117245
117306
  if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)
117246
117307
  return;
117247
117308
  this._projectionMatrix = projection.projectionMatrix;
@@ -117275,13 +117336,20 @@ class PlanarClassifier extends _RenderPlanarClassifier__WEBPACK_IMPORTED_MODULE_
117275
117336
  if (this._doDebugFrustum) {
117276
117337
  this._debugFrustumGraphic = (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.dispose)(this._debugFrustumGraphic);
117277
117338
  const builder = context.createSceneGraphicBuilder();
117278
- builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.green, _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.green, 1);
117339
+ builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.green, _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.green, 2);
117279
117340
  builder.addFrustum(context.viewingSpace.getFrustum());
117280
- builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.red, _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.red, 1);
117341
+ builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.red, _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.red, 2);
117281
117342
  builder.addFrustum(this._debugFrustum);
117282
- builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.white, _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.white, 1);
117343
+ builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.blue, _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.blue, 2);
117283
117344
  builder.addFrustum(this._frustum);
117345
+ builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.from(0, 200, 0, 222), _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.from(0, 200, 0, 222), 2);
117346
+ builder.addFrustumSides(context.viewingSpace.getFrustum());
117347
+ builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.from(200, 0, 0, 222), _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.from(200, 0, 0, 222), 2);
117348
+ builder.addFrustumSides(this._debugFrustum);
117349
+ builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.from(0, 0, 200, 222), _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.from(0, 0, 200, 222), 2);
117350
+ builder.addFrustumSides(this._frustum);
117284
117351
  this._debugFrustumGraphic = builder.finish();
117352
+ context.outputGraphic(this._debugFrustumGraphic);
117285
117353
  }
117286
117354
  }
117287
117355
  draw(target) {
@@ -117332,8 +117400,6 @@ class PlanarClassifier extends _RenderPlanarClassifier__WEBPACK_IMPORTED_MODULE_
117332
117400
  this._contentMode = PlanarClassifierContent.ClassifierAndMask;
117333
117401
  }
117334
117402
  }
117335
- if (undefined !== this._debugFrustumGraphic)
117336
- target.graphics.foreground.push(this._debugFrustumGraphic);
117337
117403
  // Temporarily override the Target's state.
117338
117404
  const system = _System__WEBPACK_IMPORTED_MODULE_15__.System.instance;
117339
117405
  const maskViewFlags = {
@@ -117553,7 +117619,15 @@ const scratchRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range3d.c
117553
117619
  const scratchMap4d = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Map4d.createIdentity();
117554
117620
  const scratchMatrix4d = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Matrix4d.createIdentity();
117555
117621
  class PlanarTextureProjection {
117556
- static computePlanarTextureProjection(texturePlane, sceneContext, target, drapeRefs, viewState, textureWidth, textureHeight, _heightRange) {
117622
+ static isTileRangeInBounds(tileRange, drapeRange) {
117623
+ // return false if tile is outside of drapeRange, ignoring height (x) for this
117624
+ if (tileRange.low.y > drapeRange.high.y || tileRange.high.y < drapeRange.low.y)
117625
+ return false;
117626
+ if (tileRange.low.z > drapeRange.high.z || tileRange.high.z < drapeRange.low.z)
117627
+ return false;
117628
+ return true;
117629
+ }
117630
+ static computePlanarTextureProjection(texturePlane, sceneContext, target, drapeRefs, viewState, textureWidth, textureHeight, maskRange, _heightRange) {
117557
117631
  const textureZ = texturePlane.getNormalRef();
117558
117632
  const viewingSpace = sceneContext.viewingSpace;
117559
117633
  const viewX = viewingSpace.rotation.rowX();
@@ -117577,14 +117651,8 @@ class PlanarTextureProjection {
117577
117651
  const viewFrustum = viewingSpace.getFrustum().transformBy(textureTransform);
117578
117652
  const viewPlanes = _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.FrustumPlanes.fromFrustum(viewFrustum);
117579
117653
  const viewClipPlanes = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.ConvexClipPlaneSet.createPlanes(viewPlanes.planes);
117580
- let textureRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range3d.createNull();
117581
- const tileToTexture = textureTransform.multiplyTransformTransform(target.location);
117582
- for (const tile of target.tiles) {
117583
- textureRange.extendRange(tileToTexture.multiplyRange(tile.range, scratchRange));
117584
- }
117585
- if (textureRange.isNull)
117586
- return {};
117587
- textureRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.ClipUtilities.rangeOfClipperIntersectionWithRange(viewClipPlanes, textureRange);
117654
+ const contentUnBoundedRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range1d.createNull();
117655
+ // calculate drapeRange from drapeRefs (mask references or drape reference).
117588
117656
  const drapeRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range3d.createNull();
117589
117657
  for (const drapeRef of drapeRefs) {
117590
117658
  const drapeTree = drapeRef.treeOwner.tileTree;
@@ -117594,14 +117662,37 @@ class PlanarTextureProjection {
117594
117662
  let heightRange = viewingSpace.getTerrainHeightRange();
117595
117663
  if (!heightRange)
117596
117664
  heightRange = _ApproximateTerrainHeights__WEBPACK_IMPORTED_MODULE_2__.ApproximateTerrainHeights.instance.globalHeightRange;
117597
- textureRange.low.x = Math.min(textureRange.low.x, heightRange.low);
117598
- textureRange.high.x = Math.max(textureRange.high.x, heightRange.high);
117665
+ contentUnBoundedRange.low = Math.min(contentUnBoundedRange.low, heightRange.low);
117666
+ contentUnBoundedRange.high = Math.max(contentUnBoundedRange.high, heightRange.high);
117599
117667
  }
117600
- else {
117601
- const contentRange = textureTransform.multiplyRange(drapeRef.computeWorldContentRange());
117668
+ else if (maskRange.isNull) {
117669
+ const r = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range3d.createNull();
117670
+ drapeRef.unionFitRange(r);
117671
+ const contentRange = textureTransform.multiplyRange(r);
117602
117672
  if (!contentRange.isNull)
117603
117673
  drapeRange.extendRange(contentRange);
117604
117674
  }
117675
+ else {
117676
+ const contentRange = textureTransform.multiplyRange(maskRange);
117677
+ drapeRange.extendRange(contentRange);
117678
+ }
117679
+ }
117680
+ // get range of only the tiles to be masked or draped onto.
117681
+ let textureRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range3d.createNull();
117682
+ const tileToTexture = textureTransform.multiplyTransformTransform(target.location);
117683
+ for (const tile of target.tiles) {
117684
+ tileToTexture.multiplyRange(tile.range, scratchRange);
117685
+ // Skip tile if it is outside of drapeRange because we don't want the extra heights from distant tiles included.
117686
+ if (drapeRange.isNull || PlanarTextureProjection.isTileRangeInBounds(scratchRange, drapeRange))
117687
+ textureRange.extendRange(scratchRange);
117688
+ }
117689
+ if (textureRange.isNull)
117690
+ return {};
117691
+ textureRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.ClipUtilities.rangeOfClipperIntersectionWithRange(viewClipPlanes, textureRange);
117692
+ if (!contentUnBoundedRange.isNull) {
117693
+ // Union of height
117694
+ textureRange.low.x = Math.min(textureRange.low.x, contentUnBoundedRange.low);
117695
+ textureRange.high.x = Math.max(textureRange.high.x, contentUnBoundedRange.high);
117605
117696
  }
117606
117697
  if (!drapeRange.isNull) {
117607
117698
  // Union of height
@@ -117617,11 +117708,19 @@ class PlanarTextureProjection {
117617
117708
  textureRange.low.x -= epsilon;
117618
117709
  textureRange.high.x += epsilon;
117619
117710
  const textureFrustum = _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.Frustum.fromRange(textureRange);
117620
- const debugFrustum = textureFrustum.clone();
117711
+ let debugFrustum;
117712
+ if (true) // debugFrustum as textureRange.
117713
+ debugFrustum = textureFrustum.clone();
117714
+ else // debugFrustum as drapeRange.
117715
+ {}
117621
117716
  textureTransform.multiplyInversePoint3dArray(debugFrustum.points, debugFrustum.points);
117622
- if (viewState.isCameraOn) {
117623
- const eyeHeight = (textureRange.low.x + textureRange.high.x) / 2.0;
117624
- const eyePlane = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Plane3dByOriginAndUnitNormal.create(_itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.createScale(textureZ, eyeHeight), textureZ); // Centered in range - parallel to texture.
117717
+ const viewZVecZ = viewState.getRotation().rowZ().z;
117718
+ // This code attempts to use a projection frustum that aligns to the camera frustum in order to get higher mask resolution closer to the eye.
117719
+ // Limit its use to views that have an eyepoint above the bottom of the frustum and are looking down at a view angle > 5 degrees, otherwise it causes issues.
117720
+ // viewZVecZ is negative when looking up, positive when looking down.
117721
+ if (viewState.isCameraOn && viewState.getEyePoint().z > textureRange.low.x && viewZVecZ > 0.09) {
117722
+ // NB moved the eyePlane from the center to the bottom of the textureRange to solve problems when the eye was below the eyePlane.
117723
+ const eyePlane = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Plane3dByOriginAndUnitNormal.create(_itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.createScale(textureZ, textureRange.low.x), textureZ); // at bottom of range - parallel to texture.
117625
117724
  const projectionRay = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Ray3d.create(viewState.getEyePoint(), viewZ.crossProduct(textureX).normalize());
117626
117725
  let projectionDistance = projectionRay.intersectionWithPlane(eyePlane);
117627
117726
  const minNearToFarRatio = .01; // Smaller value allows texture projection to conform tightly to view frustum.
@@ -117655,6 +117754,7 @@ class PlanarTextureProjection {
117655
117754
  farRange.high.y = Math.max(farRange.high.y, farY);
117656
117755
  });
117657
117756
  });
117757
+ // Set NPC from results.
117658
117758
  textureFrustum.points[_itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.Npc._000].set(farRange.low.x, farRange.low.y, eyePoint.z - far);
117659
117759
  textureFrustum.points[_itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.Npc._100].set(farRange.high.x, farRange.low.y, eyePoint.z - far);
117660
117760
  textureFrustum.points[_itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.Npc._010].set(farRange.low.x, farRange.high.y, eyePoint.z - far);
@@ -117679,7 +117779,7 @@ class PlanarTextureProjection {
117679
117779
  }
117680
117780
  const worldToNpcMap = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Map4d.createRefs(worldToNpc, npcToWorld);
117681
117781
  const worldToViewMap = npcToView.multiplyMapMap(worldToNpcMap);
117682
- return { textureFrustum, projectionMatrix: worldToNpc, worldToViewMap, debugFrustum };
117782
+ return { textureFrustum, worldToViewMap, projectionMatrix: worldToNpc, debugFrustum };
117683
117783
  }
117684
117784
  static getTextureDrawingParams(target) {
117685
117785
  const state = new _RenderState__WEBPACK_IMPORTED_MODULE_3__.RenderState();
@@ -117702,7 +117802,7 @@ class PlanarTextureProjection {
117702
117802
  return { state, viewFlags };
117703
117803
  }
117704
117804
  }
117705
- PlanarTextureProjection._postProjectionMatrixNpc = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Matrix4d.createRowValues(/* Row 1 */ 0, 1, 0, 0, /* Row 1 */ 0, 0, 1, 0, /* Row 3 */ 1, 0, 0, 0, /* Row 4 */ 0, 0, 0, 1);
117805
+ PlanarTextureProjection._postProjectionMatrixNpc = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Matrix4d.createRowValues(/* Row 1 */ 0, 1, 0, 0, /* Row 2 */ 0, 0, 1, 0, /* Row 3 */ 1, 0, 0, 0, /* Row 4 */ 0, 0, 0, 1);
117706
117806
 
117707
117807
 
117708
117808
  /***/ }),
@@ -123858,7 +123958,7 @@ const shadowMapWidth = 4096; // size of original depth buffer map
123858
123958
  const shadowMapHeight = shadowMapWidth; // TBD - Adjust for aspect ratio.
123859
123959
  const evsmWidth = shadowMapWidth / 2; // EVSM buffer is 1/2 size each direction
123860
123960
  const evsmHeight = shadowMapHeight / 2;
123861
- const postProjectionMatrixNpc = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Matrix4d.createRowValues(/* Row 1 */ 0, 1, 0, 0, /* Row 1 */ 0, 0, 1, 0, /* Row 3 */ 1, 0, 0, 0, /* Row 4 */ 0, 0, 0, 1);
123961
+ const postProjectionMatrixNpc = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Matrix4d.createRowValues(/* Row 1 */ 0, 1, 0, 0, /* Row 2 */ 0, 0, 1, 0, /* Row 3 */ 1, 0, 0, 0, /* Row 4 */ 0, 0, 0, 1);
123862
123962
  // Bundles up the disposable, create-once-and-reuse members of a SolarShadowMap.
123863
123963
  class Bundle {
123864
123964
  constructor(depthTexture, shadowMapTexture, fbo, fboSM, evsmGeom, renderCommands) {
@@ -124054,7 +124154,7 @@ class SolarShadowMap {
124054
124154
  viewTileRange.clone(shadowRange);
124055
124155
  // Expand shadow range to include both the shadowers and shadowed portion of background map.
124056
124156
  scratchFrustum.initFromRange(shadowRange);
124057
- mapToWorld.multiplyPoint3dArrayQuietNormalize(scratchFrustum.points); // This frustum represents the shadwowing geometry. Intersect it with background geometry and expand the range depth to include that intersection.
124157
+ mapToWorld.multiplyPoint3dArrayQuietNormalize(scratchFrustum.points); // This frustum represents the shadowing geometry. Intersect it with background geometry and expand the range depth to include that intersection.
124058
124158
  const backgroundMapGeometry = context.viewport.view.displayStyle.getBackgroundMapGeometry();
124059
124159
  if (undefined !== backgroundMapGeometry) {
124060
124160
  const backgroundDepthRange = backgroundMapGeometry.getFrustumIntersectionDepthRange(this._shadowFrustum, iModel.projectExtents);
@@ -125529,6 +125629,7 @@ class Target extends _RenderTarget__WEBPACK_IMPORTED_MODULE_8__.RenderTarget {
125529
125629
  this.drawingBackgroundForReadPixels = false;
125530
125630
  this.primitiveVisibility = _RenderTarget__WEBPACK_IMPORTED_MODULE_8__.PrimitiveVisibility.All;
125531
125631
  this.displayDrapeFrustum = false;
125632
+ this.displayMaskFrustum = false;
125532
125633
  this.displayRealityTilePreload = false;
125533
125634
  this.displayRealityTileRanges = false;
125534
125635
  this.logRealityTiles = false;
@@ -143930,15 +144031,20 @@ class SpatialRefs {
143930
144031
  /** For getting the [TileTreeReference]s that are in the modelIds, for planar classification.
143931
144032
  * @param modelIds modelIds for which to get the TileTreeReferences
143932
144033
  * @param maskTreeRefs where to store the TileTreeReferences
144034
+ * @param maskRange range to extend for the maskRefs
143933
144035
  * @internal
143934
144036
  */
143935
- collectMaskRefs(modelIds, maskTreeRefs) {
144037
+ collectMaskRefs(modelIds, maskTreeRefs, maskRange) {
143936
144038
  for (const modelId of modelIds) {
143937
144039
  if (!this._excludedModels?.has(modelId)) {
143938
144040
  const model = this._view.iModel.models.getLoaded(modelId);
143939
144041
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(model !== undefined); // Models should be loaded by RealityModelTileTree
143940
- if (model?.asGeometricModel)
143941
- maskTreeRefs.push(createMaskTreeReference(this._view, model.asGeometricModel));
144042
+ if (model?.asGeometricModel) {
144043
+ const treeRef = createMaskTreeReference(this._view, model.asGeometricModel);
144044
+ maskTreeRefs.push(treeRef);
144045
+ const range = treeRef.computeWorldContentRange();
144046
+ maskRange.extendRange(range);
144047
+ }
143942
144048
  }
143943
144049
  }
143944
144050
  }
@@ -150304,6 +150410,7 @@ __webpack_require__.r(__webpack_exports__);
150304
150410
  var ArcGisErrorCode;
150305
150411
  (function (ArcGisErrorCode) {
150306
150412
  ArcGisErrorCode[ArcGisErrorCode["InvalidCredentials"] = 401] = "InvalidCredentials";
150413
+ ArcGisErrorCode[ArcGisErrorCode["MissingPermissions"] = 403] = "MissingPermissions";
150307
150414
  ArcGisErrorCode[ArcGisErrorCode["InvalidToken"] = 498] = "InvalidToken";
150308
150415
  ArcGisErrorCode[ArcGisErrorCode["TokenRequired"] = 499] = "TokenRequired";
150309
150416
  ArcGisErrorCode[ArcGisErrorCode["UnknownError"] = 1000] = "UnknownError";
@@ -150431,7 +150538,9 @@ class ArcGisUtilities {
150431
150538
  // If we got a 'Token Required' error, lets check what authentification methods this ESRI service offers
150432
150539
  // and return information needed to initiate the authentification process... the end-user
150433
150540
  // will have to provide his credentials before we can fully validate this source.
150434
- if (json.error.code === ArcGisErrorCode.TokenRequired) {
150541
+ // Note: Some servers will throw a error 403 (You do not have permissions to access this resource or perform this operation),
150542
+ // instead of 499 (TokenRequired)
150543
+ if (json.error.code === ArcGisErrorCode.TokenRequired || json.error.code === ArcGisErrorCode.MissingPermissions) {
150435
150544
  return (source.userName || source.password) ? { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidCredentials } : { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.RequireAuth };
150436
150545
  }
150437
150546
  else if (json.error.code === ArcGisErrorCode.InvalidCredentials)
@@ -150523,8 +150632,7 @@ class ArcGisUtilities {
150523
150632
  // Append security token when corresponding error code is returned by ArcGIS service
150524
150633
  let errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);
150525
150634
  if (!accessTokenRequired
150526
- && errorCode !== undefined
150527
- && errorCode === ArcGisErrorCode.TokenRequired) {
150635
+ && (errorCode === ArcGisErrorCode.TokenRequired || errorCode === ArcGisErrorCode.MissingPermissions)) {
150528
150636
  accessTokenRequired = true;
150529
150637
  // If token required
150530
150638
  const accessClient = _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.getAccessClient(formatId);
@@ -151511,7 +151619,9 @@ class ArcGISImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_0__.MapLa
151511
151619
  }
151512
151620
  errorCode = await _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.checkForResponseErrorCode(response);
151513
151621
  if (errorCode !== undefined &&
151514
- (errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.TokenRequired || errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.InvalidToken)) {
151622
+ (errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.TokenRequired
151623
+ || errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.InvalidToken
151624
+ || errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.MissingPermissions)) {
151515
151625
  if (this._settings.userName && this._settings.userName.length > 0 && this._lastAccessToken) {
151516
151626
  // **** Legacy token ONLY ***
151517
151627
  // Token might have expired, make a second attempt by forcing new token.
@@ -151529,7 +151639,10 @@ class ArcGISImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_0__.MapLa
151529
151639
  response = await fetch(urlObj2.toString(), options);
151530
151640
  errorCode = await _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.checkForResponseErrorCode(response);
151531
151641
  }
151532
- if (errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.TokenRequired || errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.InvalidToken) {
151642
+ if (errorCode !== undefined &&
151643
+ (errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.TokenRequired
151644
+ || errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.InvalidToken
151645
+ || errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.MissingPermissions)) {
151533
151646
  // Looks like the initially generated token has expired.
151534
151647
  if (this.status === _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerImageryProviderStatus.Valid) {
151535
151648
  // Only report new status change to avoid spamming the UI
@@ -151703,7 +151816,9 @@ class ArcGISMapLayerImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_2
151703
151816
  if (metadata?.content === undefined)
151704
151817
  throw new _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.ServerError(_itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.IModelStatus.ValidationFailed, "");
151705
151818
  const json = metadata.content;
151706
- if (json?.error?.code === _internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.TokenRequired || json?.error?.code === _internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.InvalidToken) {
151819
+ if (json?.error?.code === _internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.TokenRequired
151820
+ || json?.error?.code === _internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.InvalidToken
151821
+ || json?.error?.code === _internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.MissingPermissions) {
151707
151822
  // Check again layer status, it might have change during await.
151708
151823
  if (this.status === _internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.Valid) {
151709
151824
  this.setStatus(_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.RequireAuth);
@@ -297541,7 +297656,7 @@ var loadLanguages = instance.loadLanguages;
297541
297656
  /***/ ((module) => {
297542
297657
 
297543
297658
  "use strict";
297544
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.7.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 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.7.4","@itwin/core-bentley":"workspace:^4.7.4","@itwin/core-common":"workspace:^4.7.4","@itwin/core-geometry":"workspace:^4.7.4","@itwin/core-orbitgt":"workspace:^4.7.4","@itwin/core-quantity":"workspace:^4.7.4"},"//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"}}');
297659
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.7.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 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.7.6","@itwin/core-bentley":"workspace:^4.7.6","@itwin/core-common":"workspace:^4.7.6","@itwin/core-geometry":"workspace:^4.7.6","@itwin/core-orbitgt":"workspace:^4.7.6","@itwin/core-quantity":"workspace:^4.7.6"},"//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"}}');
297545
297660
 
297546
297661
  /***/ })
297547
297662