@itwin/rpcinterface-full-stack-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":""}
@@ -90884,6 +90884,7 @@ __webpack_require__.r(__webpack_exports__);
90884
90884
  /* harmony export */ });
90885
90885
  /* harmony import */ var _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-common */ "../../core/common/lib/esm/core-common.js");
90886
90886
  /* harmony import */ var _render_FeatureSymbology__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./render/FeatureSymbology */ "../../core/frontend/lib/esm/render/FeatureSymbology.js");
90887
+ /* harmony import */ var _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @itwin/core-geometry */ "../../core/geometry/lib/esm/core-geometry.js");
90887
90888
  /*---------------------------------------------------------------------------------------------
90888
90889
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
90889
90890
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -90893,6 +90894,7 @@ __webpack_require__.r(__webpack_exports__);
90893
90894
  */
90894
90895
 
90895
90896
 
90897
+
90896
90898
  /** The State of Planar Clip Mask applied to a reality model or background map.
90897
90899
  * Handles loading models and their associated tiles for models that are used by masks but may not be otherwise loaded or displayed.
90898
90900
  * @beta
@@ -90901,6 +90903,7 @@ class PlanarClipMaskState {
90901
90903
  constructor(settings) {
90902
90904
  this._allLoaded = false;
90903
90905
  this._usingViewportOverrides = false;
90906
+ this._maskRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Range3d.createNull();
90904
90907
  this.settings = settings;
90905
90908
  }
90906
90909
  static create(settings) {
@@ -90915,10 +90918,11 @@ class PlanarClipMaskState {
90915
90918
  if (this._tileTreeRefs)
90916
90919
  this._tileTreeRefs.forEach((treeRef) => treeRef.discloseTileTrees(trees));
90917
90920
  }
90918
- // Returns the TileTreeReferences for the models that need to be drawn to create the planar clip mask.
90919
- getTileTrees(view, classifiedModelId) {
90921
+ // Returns the TileTreeReferences for the models that need to be drawn to create the planar clip mask, and extend the maskRange if needed.
90922
+ getTileTrees(view, classifiedModelId, maskRange) {
90920
90923
  if (this.settings.mode === _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskMode.Priority) {
90921
90924
  // For priority mode we simply want refs for all viewed models if the priority is higher than the mask priority.
90925
+ // For this case, we don't need a maskRange so leave it as null.
90922
90926
  const viewTrees = new Array();
90923
90927
  const thisPriority = this.settings.priority === undefined ? _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.PlanarClipMaskPriority.RealityModel : this.settings.priority;
90924
90928
  view.forEachTileTreeRef((ref) => {
@@ -90930,13 +90934,17 @@ class PlanarClipMaskState {
90930
90934
  }
90931
90935
  // For all other modes we need to let the tree refs in the view state decide which refs need to be drawn
90932
90936
  // since batched tiles cannot turn on/off individual models just by their tile tree refs.
90933
- if (!this._tileTreeRefs) {
90937
+ // Keep calling this until loaded so that the range is valid.
90938
+ if (!this._allLoaded) {
90934
90939
  this._tileTreeRefs = new Array();
90935
- if (this.settings.modelIds)
90936
- view.collectMaskRefs(this.settings.modelIds, this._tileTreeRefs);
90937
- }
90938
- if (!this._allLoaded)
90940
+ if (this.settings.modelIds) {
90941
+ view.collectMaskRefs(this.settings.modelIds, this._tileTreeRefs, maskRange);
90942
+ }
90939
90943
  this._allLoaded = this._tileTreeRefs.every((treeRef) => treeRef.treeOwner.load() !== undefined);
90944
+ maskRange.clone(this._maskRange);
90945
+ }
90946
+ else // If already loaded, just set the maskRange to the saved maskRange.
90947
+ this._maskRange.clone(maskRange);
90940
90948
  return this._allLoaded ? this._tileTreeRefs : undefined;
90941
90949
  }
90942
90950
  // Returns any potential FeatureSymbology overrides for drawing the planar clip mask.
@@ -93231,10 +93239,11 @@ class SpatialViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_6__.ViewState
93231
93239
  /** For getting the [TileTreeReference]s that are in the modelIds, for planar classification.
93232
93240
  * @param modelIds modelIds for which to get the TileTreeReferences
93233
93241
  * @param maskTreeRefs where to store the TileTreeReferences
93242
+ * @param maskRange range to extend for the maskRefs
93234
93243
  * @internal
93235
93244
  */
93236
- collectMaskRefs(modelIds, maskTreeRefs) {
93237
- this._treeRefs.collectMaskRefs(modelIds, maskTreeRefs);
93245
+ collectMaskRefs(modelIds, maskTreeRefs, maskRange) {
93246
+ this._treeRefs.collectMaskRefs(modelIds, maskTreeRefs, maskRange);
93238
93247
  }
93239
93248
  /** For getting a list of modelIds which do not participate in masking for planar classification.
93240
93249
  * @param maskModels models which DO participate in planar clip masking
@@ -109906,6 +109915,10 @@ class GraphicBuilder {
109906
109915
  addFrustum(frustum) {
109907
109916
  this.addRangeBoxFromCorners(frustum.points);
109908
109917
  }
109918
+ /** Add Frustum sides. Useful for debugging. */
109919
+ addFrustumSides(frustum) {
109920
+ this.addRangeBoxSidesFromCorners(frustum.points);
109921
+ }
109909
109922
  /** Add range edges from corner points */
109910
109923
  addRangeBoxFromCorners(p) {
109911
109924
  this.addLineString([
@@ -109924,6 +109937,51 @@ class GraphicBuilder {
109924
109937
  this.addLineString([p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopFront].clone(), p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone()]);
109925
109938
  this.addLineString([p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomRear].clone(), p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomRear].clone()]);
109926
109939
  }
109940
+ /** Add range sides from corner points */
109941
+ addRangeBoxSidesFromCorners(p) {
109942
+ this.addShape([
109943
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomFront].clone(),
109944
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftTopFront].clone(),
109945
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopFront].clone(),
109946
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomFront].clone(),
109947
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomFront].clone()
109948
+ ]);
109949
+ this.addShape([
109950
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone(),
109951
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftTopRear].clone(),
109952
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomRear].clone(),
109953
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomRear].clone(),
109954
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone()
109955
+ ]);
109956
+ this.addShape([
109957
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone(),
109958
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftTopRear].clone(),
109959
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftTopFront].clone(),
109960
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopFront].clone(),
109961
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone()
109962
+ ]);
109963
+ this.addShape([
109964
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone(),
109965
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomRear].clone(),
109966
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomFront].clone(),
109967
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopFront].clone(),
109968
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightTopRear].clone()
109969
+ ]);
109970
+ this.addShape([
109971
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomRear].clone(),
109972
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomRear].clone(),
109973
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.RightBottomFront].clone(),
109974
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomFront].clone(),
109975
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomRear].clone()
109976
+ ]);
109977
+ this.addShape([
109978
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomRear].clone(),
109979
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftTopRear].clone(),
109980
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftTopFront].clone(),
109981
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomFront].clone(),
109982
+ p[_itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Npc.LeftBottomRear].clone()
109983
+ ]);
109984
+ }
109927
109985
  /** Sets the current active symbology for this builder. Any new geometry subsequently added will be drawn using the specified symbology.
109928
109986
  * @param lineColor The color in which to draw lines.
109929
109987
  * @param fillColor The color in which to draw filled regions.
@@ -115990,7 +116048,7 @@ class BackgroundMapDrape extends _TextureDrape__WEBPACK_IMPORTED_MODULE_13__.Tex
115990
116048
  if (!targetTree || !args)
115991
116049
  return;
115992
116050
  const targetTiles = targetTree.selectTiles(args);
115993
- const projection = _PlanarTextureProjection__WEBPACK_IMPORTED_MODULE_9__.PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, { tiles: targetTiles, location: args.location }, [this._mapTree], viewState, this._width, this._height);
116051
+ 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());
115994
116052
  if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)
115995
116053
  return;
115996
116054
  this._frustum = projection.textureFrustum;
@@ -123325,19 +123383,22 @@ class PlanarClassifier extends _RenderPlanarClassifier__WEBPACK_IMPORTED_MODULE_
123325
123383
  const viewState = context.viewingSpace.view;
123326
123384
  if (!viewState.isSpatialView())
123327
123385
  return;
123328
- const requiredHeight = context.target.viewRect.height;
123329
- const requiredWidth = context.target.viewRect.width;
123386
+ this._doDebugFrustum = context.target.debugControl?.displayMaskFrustum ?? false;
123387
+ const maxTextureSize = _System__WEBPACK_IMPORTED_MODULE_15__.System.instance.maxTexSizeAllow;
123388
+ const requiredHeight = maxTextureSize;
123389
+ const requiredWidth = maxTextureSize;
123330
123390
  if (requiredWidth !== this._width || requiredHeight !== this._height)
123331
123391
  this.dispose();
123332
123392
  this._width = requiredWidth;
123333
123393
  this._height = requiredHeight;
123334
- const maskTrees = this._planarClipMask?.getTileTrees(viewState, target.modelId);
123394
+ const maskRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Range3d.createNull();
123395
+ const maskTrees = this._planarClipMask?.getTileTrees(viewState, target.modelId, maskRange);
123335
123396
  if (!maskTrees && !this._classifierTreeRef)
123336
123397
  return;
123337
123398
  const allTrees = maskTrees ? maskTrees.slice() : new Array();
123338
123399
  if (this._classifierTreeRef)
123339
123400
  allTrees.push(this._classifierTreeRef);
123340
- const projection = _PlanarTextureProjection__WEBPACK_IMPORTED_MODULE_11__.PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, target, allTrees, viewState, this._width, this._height);
123401
+ const projection = _PlanarTextureProjection__WEBPACK_IMPORTED_MODULE_11__.PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, target, allTrees, viewState, this._width, this._height, maskRange);
123341
123402
  if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)
123342
123403
  return;
123343
123404
  this._projectionMatrix = projection.projectionMatrix;
@@ -123371,13 +123432,20 @@ class PlanarClassifier extends _RenderPlanarClassifier__WEBPACK_IMPORTED_MODULE_
123371
123432
  if (this._doDebugFrustum) {
123372
123433
  this._debugFrustumGraphic = (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.dispose)(this._debugFrustumGraphic);
123373
123434
  const builder = context.createSceneGraphicBuilder();
123374
- builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.green, _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.green, 1);
123435
+ builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.green, _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.green, 2);
123375
123436
  builder.addFrustum(context.viewingSpace.getFrustum());
123376
- builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.red, _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.red, 1);
123437
+ builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.red, _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.red, 2);
123377
123438
  builder.addFrustum(this._debugFrustum);
123378
- builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.white, _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.white, 1);
123439
+ builder.setSymbology(_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.blue, _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ColorDef.blue, 2);
123379
123440
  builder.addFrustum(this._frustum);
123441
+ 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);
123442
+ builder.addFrustumSides(context.viewingSpace.getFrustum());
123443
+ 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);
123444
+ builder.addFrustumSides(this._debugFrustum);
123445
+ 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);
123446
+ builder.addFrustumSides(this._frustum);
123380
123447
  this._debugFrustumGraphic = builder.finish();
123448
+ context.outputGraphic(this._debugFrustumGraphic);
123381
123449
  }
123382
123450
  }
123383
123451
  draw(target) {
@@ -123428,8 +123496,6 @@ class PlanarClassifier extends _RenderPlanarClassifier__WEBPACK_IMPORTED_MODULE_
123428
123496
  this._contentMode = PlanarClassifierContent.ClassifierAndMask;
123429
123497
  }
123430
123498
  }
123431
- if (undefined !== this._debugFrustumGraphic)
123432
- target.graphics.foreground.push(this._debugFrustumGraphic);
123433
123499
  // Temporarily override the Target's state.
123434
123500
  const system = _System__WEBPACK_IMPORTED_MODULE_15__.System.instance;
123435
123501
  const maskViewFlags = {
@@ -123649,7 +123715,15 @@ const scratchRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range3d.c
123649
123715
  const scratchMap4d = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Map4d.createIdentity();
123650
123716
  const scratchMatrix4d = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Matrix4d.createIdentity();
123651
123717
  class PlanarTextureProjection {
123652
- static computePlanarTextureProjection(texturePlane, sceneContext, target, drapeRefs, viewState, textureWidth, textureHeight, _heightRange) {
123718
+ static isTileRangeInBounds(tileRange, drapeRange) {
123719
+ // return false if tile is outside of drapeRange, ignoring height (x) for this
123720
+ if (tileRange.low.y > drapeRange.high.y || tileRange.high.y < drapeRange.low.y)
123721
+ return false;
123722
+ if (tileRange.low.z > drapeRange.high.z || tileRange.high.z < drapeRange.low.z)
123723
+ return false;
123724
+ return true;
123725
+ }
123726
+ static computePlanarTextureProjection(texturePlane, sceneContext, target, drapeRefs, viewState, textureWidth, textureHeight, maskRange, _heightRange) {
123653
123727
  const textureZ = texturePlane.getNormalRef();
123654
123728
  const viewingSpace = sceneContext.viewingSpace;
123655
123729
  const viewX = viewingSpace.rotation.rowX();
@@ -123673,14 +123747,8 @@ class PlanarTextureProjection {
123673
123747
  const viewFrustum = viewingSpace.getFrustum().transformBy(textureTransform);
123674
123748
  const viewPlanes = _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.FrustumPlanes.fromFrustum(viewFrustum);
123675
123749
  const viewClipPlanes = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.ConvexClipPlaneSet.createPlanes(viewPlanes.planes);
123676
- let textureRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range3d.createNull();
123677
- const tileToTexture = textureTransform.multiplyTransformTransform(target.location);
123678
- for (const tile of target.tiles) {
123679
- textureRange.extendRange(tileToTexture.multiplyRange(tile.range, scratchRange));
123680
- }
123681
- if (textureRange.isNull)
123682
- return {};
123683
- textureRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.ClipUtilities.rangeOfClipperIntersectionWithRange(viewClipPlanes, textureRange);
123750
+ const contentUnBoundedRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range1d.createNull();
123751
+ // calculate drapeRange from drapeRefs (mask references or drape reference).
123684
123752
  const drapeRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range3d.createNull();
123685
123753
  for (const drapeRef of drapeRefs) {
123686
123754
  const drapeTree = drapeRef.treeOwner.tileTree;
@@ -123690,14 +123758,37 @@ class PlanarTextureProjection {
123690
123758
  let heightRange = viewingSpace.getTerrainHeightRange();
123691
123759
  if (!heightRange)
123692
123760
  heightRange = _ApproximateTerrainHeights__WEBPACK_IMPORTED_MODULE_2__.ApproximateTerrainHeights.instance.globalHeightRange;
123693
- textureRange.low.x = Math.min(textureRange.low.x, heightRange.low);
123694
- textureRange.high.x = Math.max(textureRange.high.x, heightRange.high);
123761
+ contentUnBoundedRange.low = Math.min(contentUnBoundedRange.low, heightRange.low);
123762
+ contentUnBoundedRange.high = Math.max(contentUnBoundedRange.high, heightRange.high);
123695
123763
  }
123696
- else {
123697
- const contentRange = textureTransform.multiplyRange(drapeRef.computeWorldContentRange());
123764
+ else if (maskRange.isNull) {
123765
+ const r = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range3d.createNull();
123766
+ drapeRef.unionFitRange(r);
123767
+ const contentRange = textureTransform.multiplyRange(r);
123698
123768
  if (!contentRange.isNull)
123699
123769
  drapeRange.extendRange(contentRange);
123700
123770
  }
123771
+ else {
123772
+ const contentRange = textureTransform.multiplyRange(maskRange);
123773
+ drapeRange.extendRange(contentRange);
123774
+ }
123775
+ }
123776
+ // get range of only the tiles to be masked or draped onto.
123777
+ let textureRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range3d.createNull();
123778
+ const tileToTexture = textureTransform.multiplyTransformTransform(target.location);
123779
+ for (const tile of target.tiles) {
123780
+ tileToTexture.multiplyRange(tile.range, scratchRange);
123781
+ // Skip tile if it is outside of drapeRange because we don't want the extra heights from distant tiles included.
123782
+ if (drapeRange.isNull || PlanarTextureProjection.isTileRangeInBounds(scratchRange, drapeRange))
123783
+ textureRange.extendRange(scratchRange);
123784
+ }
123785
+ if (textureRange.isNull)
123786
+ return {};
123787
+ textureRange = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.ClipUtilities.rangeOfClipperIntersectionWithRange(viewClipPlanes, textureRange);
123788
+ if (!contentUnBoundedRange.isNull) {
123789
+ // Union of height
123790
+ textureRange.low.x = Math.min(textureRange.low.x, contentUnBoundedRange.low);
123791
+ textureRange.high.x = Math.max(textureRange.high.x, contentUnBoundedRange.high);
123701
123792
  }
123702
123793
  if (!drapeRange.isNull) {
123703
123794
  // Union of height
@@ -123713,11 +123804,19 @@ class PlanarTextureProjection {
123713
123804
  textureRange.low.x -= epsilon;
123714
123805
  textureRange.high.x += epsilon;
123715
123806
  const textureFrustum = _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.Frustum.fromRange(textureRange);
123716
- const debugFrustum = textureFrustum.clone();
123807
+ let debugFrustum;
123808
+ if (true) // debugFrustum as textureRange.
123809
+ debugFrustum = textureFrustum.clone();
123810
+ else // debugFrustum as drapeRange.
123811
+ {}
123717
123812
  textureTransform.multiplyInversePoint3dArray(debugFrustum.points, debugFrustum.points);
123718
- if (viewState.isCameraOn) {
123719
- const eyeHeight = (textureRange.low.x + textureRange.high.x) / 2.0;
123720
- 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.
123813
+ const viewZVecZ = viewState.getRotation().rowZ().z;
123814
+ // 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.
123815
+ // 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.
123816
+ // viewZVecZ is negative when looking up, positive when looking down.
123817
+ if (viewState.isCameraOn && viewState.getEyePoint().z > textureRange.low.x && viewZVecZ > 0.09) {
123818
+ // NB moved the eyePlane from the center to the bottom of the textureRange to solve problems when the eye was below the eyePlane.
123819
+ 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.
123721
123820
  const projectionRay = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Ray3d.create(viewState.getEyePoint(), viewZ.crossProduct(textureX).normalize());
123722
123821
  let projectionDistance = projectionRay.intersectionWithPlane(eyePlane);
123723
123822
  const minNearToFarRatio = .01; // Smaller value allows texture projection to conform tightly to view frustum.
@@ -123751,6 +123850,7 @@ class PlanarTextureProjection {
123751
123850
  farRange.high.y = Math.max(farRange.high.y, farY);
123752
123851
  });
123753
123852
  });
123853
+ // Set NPC from results.
123754
123854
  textureFrustum.points[_itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.Npc._000].set(farRange.low.x, farRange.low.y, eyePoint.z - far);
123755
123855
  textureFrustum.points[_itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.Npc._100].set(farRange.high.x, farRange.low.y, eyePoint.z - far);
123756
123856
  textureFrustum.points[_itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.Npc._010].set(farRange.low.x, farRange.high.y, eyePoint.z - far);
@@ -123775,7 +123875,7 @@ class PlanarTextureProjection {
123775
123875
  }
123776
123876
  const worldToNpcMap = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Map4d.createRefs(worldToNpc, npcToWorld);
123777
123877
  const worldToViewMap = npcToView.multiplyMapMap(worldToNpcMap);
123778
- return { textureFrustum, projectionMatrix: worldToNpc, worldToViewMap, debugFrustum };
123878
+ return { textureFrustum, worldToViewMap, projectionMatrix: worldToNpc, debugFrustum };
123779
123879
  }
123780
123880
  static getTextureDrawingParams(target) {
123781
123881
  const state = new _RenderState__WEBPACK_IMPORTED_MODULE_3__.RenderState();
@@ -123798,7 +123898,7 @@ class PlanarTextureProjection {
123798
123898
  return { state, viewFlags };
123799
123899
  }
123800
123900
  }
123801
- 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);
123901
+ 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);
123802
123902
 
123803
123903
 
123804
123904
  /***/ }),
@@ -129954,7 +130054,7 @@ const shadowMapWidth = 4096; // size of original depth buffer map
129954
130054
  const shadowMapHeight = shadowMapWidth; // TBD - Adjust for aspect ratio.
129955
130055
  const evsmWidth = shadowMapWidth / 2; // EVSM buffer is 1/2 size each direction
129956
130056
  const evsmHeight = shadowMapHeight / 2;
129957
- 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);
130057
+ 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);
129958
130058
  // Bundles up the disposable, create-once-and-reuse members of a SolarShadowMap.
129959
130059
  class Bundle {
129960
130060
  constructor(depthTexture, shadowMapTexture, fbo, fboSM, evsmGeom, renderCommands) {
@@ -130150,7 +130250,7 @@ class SolarShadowMap {
130150
130250
  viewTileRange.clone(shadowRange);
130151
130251
  // Expand shadow range to include both the shadowers and shadowed portion of background map.
130152
130252
  scratchFrustum.initFromRange(shadowRange);
130153
- mapToWorld.multiplyPoint3dArrayQuietNormalize(scratchFrustum.points); // This frustum represents the shadwowing geometry. Intersect it with background geometry and expand the range depth to include that intersection.
130253
+ mapToWorld.multiplyPoint3dArrayQuietNormalize(scratchFrustum.points); // This frustum represents the shadowing geometry. Intersect it with background geometry and expand the range depth to include that intersection.
130154
130254
  const backgroundMapGeometry = context.viewport.view.displayStyle.getBackgroundMapGeometry();
130155
130255
  if (undefined !== backgroundMapGeometry) {
130156
130256
  const backgroundDepthRange = backgroundMapGeometry.getFrustumIntersectionDepthRange(this._shadowFrustum, iModel.projectExtents);
@@ -131625,6 +131725,7 @@ class Target extends _RenderTarget__WEBPACK_IMPORTED_MODULE_8__.RenderTarget {
131625
131725
  this.drawingBackgroundForReadPixels = false;
131626
131726
  this.primitiveVisibility = _RenderTarget__WEBPACK_IMPORTED_MODULE_8__.PrimitiveVisibility.All;
131627
131727
  this.displayDrapeFrustum = false;
131728
+ this.displayMaskFrustum = false;
131628
131729
  this.displayRealityTilePreload = false;
131629
131730
  this.displayRealityTileRanges = false;
131630
131731
  this.logRealityTiles = false;
@@ -150026,15 +150127,20 @@ class SpatialRefs {
150026
150127
  /** For getting the [TileTreeReference]s that are in the modelIds, for planar classification.
150027
150128
  * @param modelIds modelIds for which to get the TileTreeReferences
150028
150129
  * @param maskTreeRefs where to store the TileTreeReferences
150130
+ * @param maskRange range to extend for the maskRefs
150029
150131
  * @internal
150030
150132
  */
150031
- collectMaskRefs(modelIds, maskTreeRefs) {
150133
+ collectMaskRefs(modelIds, maskTreeRefs, maskRange) {
150032
150134
  for (const modelId of modelIds) {
150033
150135
  if (!this._excludedModels?.has(modelId)) {
150034
150136
  const model = this._view.iModel.models.getLoaded(modelId);
150035
150137
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(model !== undefined); // Models should be loaded by RealityModelTileTree
150036
- if (model?.asGeometricModel)
150037
- maskTreeRefs.push(createMaskTreeReference(this._view, model.asGeometricModel));
150138
+ if (model?.asGeometricModel) {
150139
+ const treeRef = createMaskTreeReference(this._view, model.asGeometricModel);
150140
+ maskTreeRefs.push(treeRef);
150141
+ const range = treeRef.computeWorldContentRange();
150142
+ maskRange.extendRange(range);
150143
+ }
150038
150144
  }
150039
150145
  }
150040
150146
  }
@@ -156400,6 +156506,7 @@ __webpack_require__.r(__webpack_exports__);
156400
156506
  var ArcGisErrorCode;
156401
156507
  (function (ArcGisErrorCode) {
156402
156508
  ArcGisErrorCode[ArcGisErrorCode["InvalidCredentials"] = 401] = "InvalidCredentials";
156509
+ ArcGisErrorCode[ArcGisErrorCode["MissingPermissions"] = 403] = "MissingPermissions";
156403
156510
  ArcGisErrorCode[ArcGisErrorCode["InvalidToken"] = 498] = "InvalidToken";
156404
156511
  ArcGisErrorCode[ArcGisErrorCode["TokenRequired"] = 499] = "TokenRequired";
156405
156512
  ArcGisErrorCode[ArcGisErrorCode["UnknownError"] = 1000] = "UnknownError";
@@ -156527,7 +156634,9 @@ class ArcGisUtilities {
156527
156634
  // If we got a 'Token Required' error, lets check what authentification methods this ESRI service offers
156528
156635
  // and return information needed to initiate the authentification process... the end-user
156529
156636
  // will have to provide his credentials before we can fully validate this source.
156530
- if (json.error.code === ArcGisErrorCode.TokenRequired) {
156637
+ // Note: Some servers will throw a error 403 (You do not have permissions to access this resource or perform this operation),
156638
+ // instead of 499 (TokenRequired)
156639
+ if (json.error.code === ArcGisErrorCode.TokenRequired || json.error.code === ArcGisErrorCode.MissingPermissions) {
156531
156640
  return (source.userName || source.password) ? { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidCredentials } : { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.RequireAuth };
156532
156641
  }
156533
156642
  else if (json.error.code === ArcGisErrorCode.InvalidCredentials)
@@ -156619,8 +156728,7 @@ class ArcGisUtilities {
156619
156728
  // Append security token when corresponding error code is returned by ArcGIS service
156620
156729
  let errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);
156621
156730
  if (!accessTokenRequired
156622
- && errorCode !== undefined
156623
- && errorCode === ArcGisErrorCode.TokenRequired) {
156731
+ && (errorCode === ArcGisErrorCode.TokenRequired || errorCode === ArcGisErrorCode.MissingPermissions)) {
156624
156732
  accessTokenRequired = true;
156625
156733
  // If token required
156626
156734
  const accessClient = _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.mapLayerFormatRegistry.getAccessClient(formatId);
@@ -157607,7 +157715,9 @@ class ArcGISImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_0__.MapLa
157607
157715
  }
157608
157716
  errorCode = await _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.checkForResponseErrorCode(response);
157609
157717
  if (errorCode !== undefined &&
157610
- (errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.TokenRequired || errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.InvalidToken)) {
157718
+ (errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.TokenRequired
157719
+ || errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.InvalidToken
157720
+ || errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.MissingPermissions)) {
157611
157721
  if (this._settings.userName && this._settings.userName.length > 0 && this._lastAccessToken) {
157612
157722
  // **** Legacy token ONLY ***
157613
157723
  // Token might have expired, make a second attempt by forcing new token.
@@ -157625,7 +157735,10 @@ class ArcGISImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_0__.MapLa
157625
157735
  response = await fetch(urlObj2.toString(), options);
157626
157736
  errorCode = await _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisUtilities.checkForResponseErrorCode(response);
157627
157737
  }
157628
- if (errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.TokenRequired || errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.InvalidToken) {
157738
+ if (errorCode !== undefined &&
157739
+ (errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.TokenRequired
157740
+ || errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.InvalidToken
157741
+ || errorCode === _internal__WEBPACK_IMPORTED_MODULE_0__.ArcGisErrorCode.MissingPermissions)) {
157629
157742
  // Looks like the initially generated token has expired.
157630
157743
  if (this.status === _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerImageryProviderStatus.Valid) {
157631
157744
  // Only report new status change to avoid spamming the UI
@@ -157799,7 +157912,9 @@ class ArcGISMapLayerImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_2
157799
157912
  if (metadata?.content === undefined)
157800
157913
  throw new _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.ServerError(_itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.IModelStatus.ValidationFailed, "");
157801
157914
  const json = metadata.content;
157802
- if (json?.error?.code === _internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.TokenRequired || json?.error?.code === _internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.InvalidToken) {
157915
+ if (json?.error?.code === _internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.TokenRequired
157916
+ || json?.error?.code === _internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.InvalidToken
157917
+ || json?.error?.code === _internal__WEBPACK_IMPORTED_MODULE_2__.ArcGisErrorCode.MissingPermissions) {
157803
157918
  // Check again layer status, it might have change during await.
157804
157919
  if (this.status === _internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.Valid) {
157805
157920
  this.setStatus(_internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerImageryProviderStatus.RequireAuth);
@@ -290391,7 +290506,7 @@ class TestContext {
290391
290506
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
290392
290507
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
290393
290508
  await core_frontend_1.NoRenderApp.startup({
290394
- applicationVersion: "4.7.4",
290509
+ applicationVersion: "4.7.6",
290395
290510
  applicationId: this.settings.gprid,
290396
290511
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
290397
290512
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -314386,7 +314501,7 @@ function __disposeResources(env) {
314386
314501
  /***/ ((module) => {
314387
314502
 
314388
314503
  "use strict";
314389
- 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"}}');
314504
+ 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"}}');
314390
314505
 
314391
314506
  /***/ }),
314392
314507