@itwin/ecschema-rpcinterface-tests 4.2.0-dev.17 → 4.2.0-dev.18

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":"_0062.bundled-tests.js","mappings":";;;;;;;;AAAA","sources":["file:///ignored|D:\\vsts_a\\17\\s\\common\\temp\\node_modules\\.pnpm\\@loaders.gl+worker-utils@3.4.7\\node_modules\\@loaders.gl\\worker-utils\\dist\\esm\\lib\\library-utils|../node/require-utils.node"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"_0062.bundled-tests.js","mappings":";;;;;;;;AAAA","sources":["file:///ignored|D:\\vsts_a\\15\\s\\common\\temp\\node_modules\\.pnpm\\@loaders.gl+worker-utils@3.4.7\\node_modules\\@loaders.gl\\worker-utils\\dist\\esm\\lib\\library-utils|../node/require-utils.node"],"names":[],"sourceRoot":""}
@@ -89898,10 +89898,11 @@ class ViewState extends _EntityState__WEBPACK_IMPORTED_MODULE_5__.ElementState {
89898
89898
  }
89899
89899
  if (0 === elevation && !modelTransform && !scriptTransform)
89900
89900
  return undefined;
89901
- const transform = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Transform.createIdentity(args.output);
89902
- transform.origin.z = elevation;
89903
- if (modelTransform)
89904
- transform.multiplyTransformTransform(modelTransform, transform);
89901
+ const transform = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Transform.createTranslationXYZ(0, 0, elevation);
89902
+ if (modelTransform?.premultiply)
89903
+ modelTransform.transform.multiplyTransformTransform(transform, transform);
89904
+ if (modelTransform && !modelTransform.premultiply)
89905
+ transform.multiplyTransformTransform(modelTransform.transform, transform);
89905
89906
  if (scriptTransform)
89906
89907
  transform.multiplyTransformTransform(scriptTransform, transform);
89907
89908
  return transform;
@@ -98415,7 +98416,7 @@ function splitMeshParams(args) {
98415
98416
  const result = new Map();
98416
98417
  const mat = args.params.surface.material;
98417
98418
  const atlasOffset = undefined !== mat && mat.isAtlas ? mat.vertexTableOffset : undefined;
98418
- const atlasInfo = atlasOffset ? { offset: atlasOffset, createMaterial: args.createMaterial } : undefined;
98419
+ const atlasInfo = undefined !== atlasOffset ? { offset: atlasOffset, createMaterial: args.createMaterial } : undefined;
98419
98420
  const nodes = VertexTableSplitter.split({
98420
98421
  indices: args.params.surface.indices,
98421
98422
  vertices: args.params.vertices,
@@ -141858,7 +141859,9 @@ class PrimaryTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_6__.TileTr
141858
141859
  computeTransform(tree) {
141859
141860
  const baseTf = this.computeBaseTransform(tree);
141860
141861
  const displayTf = this.view.modelDisplayTransformProvider?.getModelDisplayTransform(this.model.id);
141861
- return displayTf ? baseTf.multiplyTransformTransform(displayTf, displayTf) : baseTf;
141862
+ if (!displayTf)
141863
+ return baseTf;
141864
+ return displayTf.premultiply ? displayTf.transform.multiplyTransformTransform(baseTf) : baseTf.multiplyTransformTransform(displayTf.transform);
141862
141865
  }
141863
141866
  }
141864
141867
  /** @internal */
@@ -145845,7 +145848,7 @@ class TileDrawArgs {
145845
145848
  }
145846
145849
  computePixelSizeScaleFactor() {
145847
145850
  // Check to see if a model display transform with non-uniform scaling is being used.
145848
- const mat = this.context.viewport.view.modelDisplayTransformProvider?.getModelDisplayTransform(this.tree.modelId)?.matrix;
145851
+ const mat = this.context.viewport.view.modelDisplayTransformProvider?.getModelDisplayTransform(this.tree.modelId)?.transform.matrix;
145849
145852
  if (!mat)
145850
145853
  return 1;
145851
145854
  const scale = [0, 1, 2].map((x) => mat.getColumn(x).magnitude());
@@ -181110,7 +181113,7 @@ __webpack_require__.r(__webpack_exports__);
181110
181113
  /* harmony export */ ClusterableArray: () => (/* reexport safe */ _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_52__.ClusterableArray),
181111
181114
  /* harmony export */ Complex: () => (/* reexport safe */ _numerics_Complex__WEBPACK_IMPORTED_MODULE_54__.Complex),
181112
181115
  /* harmony export */ Cone: () => (/* reexport safe */ _solid_Cone__WEBPACK_IMPORTED_MODULE_90__.Cone),
181113
- /* harmony export */ ConsolidateAdjacentCurvePrimitivesOptions: () => (/* reexport safe */ _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_65__.ConsolidateAdjacentCurvePrimitivesOptions),
181116
+ /* harmony export */ ConsolidateAdjacentCurvePrimitivesOptions: () => (/* reexport safe */ _curve_RegionOps__WEBPACK_IMPORTED_MODULE_80__.ConsolidateAdjacentCurvePrimitivesOptions),
181114
181117
  /* harmony export */ Constant: () => (/* reexport safe */ _Constant__WEBPACK_IMPORTED_MODULE_37__.Constant),
181115
181118
  /* harmony export */ ConstructCurveBetweenCurves: () => (/* reexport safe */ _curve_ConstructCurveBetweenCurves__WEBPACK_IMPORTED_MODULE_61__.ConstructCurveBetweenCurves),
181116
181119
  /* harmony export */ ConvexClipPlaneSet: () => (/* reexport safe */ _clipping_ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_40__.ConvexClipPlaneSet),
@@ -182256,10 +182259,10 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
182256
182259
  const uy = this._matrix.at(1, 0);
182257
182260
  const vx = this._matrix.at(0, 1);
182258
182261
  const vy = this._matrix.at(1, 1);
182259
- const axx = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.dotProductXYXY(ux, uy, ux, uy);
182260
- const ayy = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.dotProductXYXY(vx, vy, vx, vy);
182261
- const axy = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.dotProductXYXY(ux, uy, vx, vy);
182262
- if (_geometry3d_Angle__WEBPACK_IMPORTED_MODULE_6__.Angle.isPerpendicularDotSet(axx, ayy, axy) && _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSameCoordinateSquared(axx, ayy))
182262
+ const dotUU = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.dotProductXYXY(ux, uy, ux, uy);
182263
+ const dotVV = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.dotProductXYXY(vx, vy, vx, vy);
182264
+ const dotUV = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.dotProductXYXY(ux, uy, vx, vy);
182265
+ if (_geometry3d_Angle__WEBPACK_IMPORTED_MODULE_6__.Angle.isPerpendicularDotSet(dotUU, dotVV, dotUV) && _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSameCoordinateSquared(dotUU, dotVV))
182263
182266
  return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.hypotenuseXY(ux, uy);
182264
182267
  return undefined;
182265
182268
  }
@@ -183671,7 +183674,6 @@ CurveChainWithDistanceIndex._numCandidate = 0;
183671
183674
  __webpack_require__.r(__webpack_exports__);
183672
183675
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
183673
183676
  /* harmony export */ BagOfCurves: () => (/* binding */ BagOfCurves),
183674
- /* harmony export */ ConsolidateAdjacentCurvePrimitivesOptions: () => (/* binding */ ConsolidateAdjacentCurvePrimitivesOptions),
183675
183677
  /* harmony export */ CurveChain: () => (/* binding */ CurveChain),
183676
183678
  /* harmony export */ CurveCollection: () => (/* binding */ CurveCollection)
183677
183679
  /* harmony export */ });
@@ -184072,22 +184074,6 @@ class BagOfCurves extends CurveCollection {
184072
184074
  return handler.handleBagOfCurves(this);
184073
184075
  }
184074
184076
  }
184075
- /**
184076
- * * Options to control method `RegionOps.consolidateAdjacentPrimitives`
184077
- * @public
184078
- */
184079
- class ConsolidateAdjacentCurvePrimitivesOptions {
184080
- constructor() {
184081
- /** True to consolidated linear geometry (e.g. separate LineSegment3d and LineString3d) into LineString3d */
184082
- this.consolidateLinearGeometry = true;
184083
- /** True to consolidate contiguous arcs */
184084
- this.consolidateCompatibleArcs = true;
184085
- /** Tolerance for collapsing identical points */
184086
- this.duplicatePointTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_10__.Geometry.smallMetricDistance;
184087
- /** Tolerance for removing interior colinear points. */
184088
- this.colinearPointTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_10__.Geometry.smallMetricDistance;
184089
- }
184090
- }
184091
184077
 
184092
184078
 
184093
184079
  /***/ }),
@@ -184198,6 +184184,9 @@ class CurveCurve {
184198
184184
  * * Close approach xy-distances are measured without regard to z. This is equivalent to their separation distance
184199
184185
  * as seen in the top view, or as measured between their projections onto the xy-plane.
184200
184186
  * * If more than one approach is returned, one of them is the closest approach.
184187
+ * * If an input curve is a `CurveCollection`, then close approaches are computed to each `CurvePrimitive` child.
184188
+ * This can lead to many returned pairs, especially when both inputs are `CurveCollection`s. If an input curve is
184189
+ * an `AnyRegion` then close approaches are computed only to the boundary curves, not to the interior.
184201
184190
  * @param curveA first curve
184202
184191
  * @param curveB second curve
184203
184192
  * @param maxDistance maximum xy-distance to consider between the curves.
@@ -189305,10 +189294,10 @@ __webpack_require__.r(__webpack_exports__);
189305
189294
  /* harmony import */ var _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/PolylineCompressionByEdgeOffset */ "../../core/geometry/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js");
189306
189295
  /* harmony import */ var _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/PolylineOps */ "../../core/geometry/lib/esm/geometry3d/PolylineOps.js");
189307
189296
  /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
189308
- /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
189309
189297
  /* harmony import */ var _CurveFactory__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
189310
189298
  /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
189311
189299
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
189300
+ /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
189312
189301
  /*---------------------------------------------------------------------------------------------
189313
189302
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
189314
189303
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -189332,7 +189321,7 @@ __webpack_require__.r(__webpack_exports__);
189332
189321
  class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_0__.NullGeometryHandler {
189333
189322
  constructor(options) {
189334
189323
  super();
189335
- this._options = options ? options : new _CurveCollection__WEBPACK_IMPORTED_MODULE_1__.ConsolidateAdjacentCurvePrimitivesOptions();
189324
+ this._options = options ? options : new _RegionOps__WEBPACK_IMPORTED_MODULE_1__.ConsolidateAdjacentCurvePrimitivesOptions();
189336
189325
  }
189337
189326
  /** look for adjacent compatible primitives in a path or loop. */
189338
189327
  handleCurveChain(g) {
@@ -190892,6 +190881,7 @@ class RegionMomentsXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
190892
190881
  "use strict";
190893
190882
  __webpack_require__.r(__webpack_exports__);
190894
190883
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
190884
+ /* harmony export */ ConsolidateAdjacentCurvePrimitivesOptions: () => (/* binding */ ConsolidateAdjacentCurvePrimitivesOptions),
190895
190885
  /* harmony export */ RegionBinaryOpType: () => (/* binding */ RegionBinaryOpType),
190896
190886
  /* harmony export */ RegionOps: () => (/* binding */ RegionOps)
190897
190887
  /* harmony export */ });
@@ -191614,6 +191604,22 @@ function pushToInOnOutArrays(curve, select, arrayNegative, array0, arrayPositive
191614
191604
  else
191615
191605
  array0.push(curve);
191616
191606
  }
191607
+ /**
191608
+ * * Options to control method `RegionOps.consolidateAdjacentPrimitives`
191609
+ * @public
191610
+ */
191611
+ class ConsolidateAdjacentCurvePrimitivesOptions {
191612
+ constructor() {
191613
+ /** True to consolidated linear geometry (e.g. separate LineSegment3d and LineString3d) into LineString3d */
191614
+ this.consolidateLinearGeometry = true;
191615
+ /** True to consolidate contiguous arcs */
191616
+ this.consolidateCompatibleArcs = true;
191617
+ /** Tolerance for collapsing identical points */
191618
+ this.duplicatePointTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance;
191619
+ /** Tolerance for removing interior colinear points. */
191620
+ this.colinearPointTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance;
191621
+ }
191622
+ }
191617
191623
 
191618
191624
 
191619
191625
  /***/ }),
@@ -193662,7 +193668,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193662
193668
  fractionB = 1;
193663
193669
  this._workPointB = pointB0.interpolate(fractionB, pointB1, this._workPointB);
193664
193670
  const distanceSquared = this._workPointB.distanceSquaredXY(pointA);
193665
- if (distanceSquared < Math.min(maxDistanceSquared, closestApproach.detailA.a)) {
193671
+ if (distanceSquared <= Math.min(maxDistanceSquared, closestApproach.detailA.a)) {
193666
193672
  closestApproach.detailA.setFP(fractionA, pointA, undefined, distanceSquared);
193667
193673
  closestApproach.detailB.setFP(fractionB, this._workPointB, undefined, distanceSquared);
193668
193674
  updated = true;
@@ -193705,23 +193711,23 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193705
193711
  closestApproach.detailA.a = 2 * maxDistanceSquared; // init to an approach that's too far away
193706
193712
  let reversed = false;
193707
193713
  const uu = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.hypotenuseSquaredXY(ux, uy);
193708
- if (hab0 * hab0 < maxDistanceSquared * uu) { // test distance of b0 to u
193714
+ if (hab0 * hab0 <= maxDistanceSquared * uu) { // test distance of b0 to u
193709
193715
  const fractionA = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.dotProductXYXY(ux, uy, e00x, e00y) / uu;
193710
193716
  if (this.updatePointToSegmentDistance(0, b0, a0, a1, fractionA, maxDistanceSquared, closestApproach))
193711
193717
  reversed = true;
193712
193718
  }
193713
- if (hab1 * hab1 < maxDistanceSquared * uu) { // test distance of b1 to u
193719
+ if (hab1 * hab1 <= maxDistanceSquared * uu) { // test distance of b1 to u
193714
193720
  const fractionA = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.dotProductXYXY(ux, uy, e01x, e01y) / uu;
193715
193721
  if (this.updatePointToSegmentDistance(1, b1, a0, a1, fractionA, maxDistanceSquared, closestApproach))
193716
193722
  reversed = true;
193717
193723
  }
193718
193724
  const vv = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.hypotenuseSquaredXY(vx, vy);
193719
- if (hba0 * hba0 < maxDistanceSquared * vv) { // test distance of a0 to v
193725
+ if (hba0 * hba0 <= maxDistanceSquared * vv) { // test distance of a0 to v
193720
193726
  const fractionB = -_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.dotProductXYXY(vx, vy, e00x, e00y) / vv;
193721
193727
  if (this.updatePointToSegmentDistance(0, a0, b0, b1, fractionB, maxDistanceSquared, closestApproach))
193722
193728
  reversed = false;
193723
193729
  }
193724
- if (hba1 * hba1 < maxDistanceSquared * vv) { // test distance of a1 to v
193730
+ if (hba1 * hba1 <= maxDistanceSquared * vv) { // test distance of a1 to v
193725
193731
  const fractionB = -_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.dotProductXYXY(vx, vy, e10x, e10y) / vv;
193726
193732
  if (this.updatePointToSegmentDistance(1, a1, b0, b1, fractionB, maxDistanceSquared, closestApproach))
193727
193733
  reversed = false;
@@ -193799,10 +193805,10 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193799
193805
  * Low level dispatch of segment with arc.
193800
193806
  * Find close approaches within maxDistance between a line segments (pointA0, pointA1) and an arc.
193801
193807
  * To consider:
193802
- * 1) arc endpoints to segment endpoints or arc endpoints projection to the segment.
193803
- * 2) intersection between arc and segment.
193808
+ * 1) intersection between arc and segment.
193809
+ * 2) arc endpoints to segment endpoints or arc endpoints projection to the segment.
193804
193810
  * 3) line parallel to arc tangent.
193805
- * @param cpA the segment
193811
+ * @param cpA curve A (line segment or line string)
193806
193812
  * @param pointA0 start point of the segment
193807
193813
  * @param fractionA0 fraction of the start of the segment
193808
193814
  * @param pointA1 end point of the segment
@@ -193811,9 +193817,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193811
193817
  * @param reversed true to have order reversed in final structures
193812
193818
  */
193813
193819
  dispatchSegmentArc(cpA, pointA0, fractionA0, pointA1, fractionA1, arc, reversed) {
193814
- // 1) arc endpoints to segment endpoints or arc endpoints projection to the segment
193815
- this.testAndRecordFractionalPairApproach(cpA, 0, 1, true, arc, 0, 1, false, reversed);
193816
- // 2) intersection between arc and segment
193820
+ // 1) intersection between arc and segment
193817
193821
  // Suppose:
193818
193822
  // Arc: X = C + cU + sV where c = cos(theta) and s = sin(theta)
193819
193823
  // Line: contains points A0 and A1
@@ -193822,6 +193826,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193822
193826
  // solve for theta.
193823
193827
  // evaluate points.
193824
193828
  // project back to line.
193829
+ let intersectionFound = false;
193825
193830
  const data = arc.toTransformedVectors();
193826
193831
  const pointA0Local = pointA0;
193827
193832
  const pointA1Local = pointA1;
@@ -193840,8 +193845,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193840
193845
  // only add if the point is within the start and end fractions of both line segment and arc
193841
193846
  if (lineFraction !== undefined && this.acceptFraction(lineFraction) && this.acceptFraction(arcFraction)) {
193842
193847
  this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, arcFraction, arc, 0, 1, reversed);
193848
+ intersectionFound = true;
193843
193849
  }
193844
193850
  }
193851
+ if (intersectionFound)
193852
+ return;
193853
+ // 2) endpoints to endpoints or endpoints projection to the other curve
193854
+ this.testAndRecordFractionalPairApproach(cpA, fractionA0, fractionA1, true, arc, 0, 1, false, reversed);
193845
193855
  // 3) line parallel to arc tangent.
193846
193856
  // If line does not intersect the arc, then the closest (and/or the furthest) point on arc to the line is a
193847
193857
  // point where the tangent line on arc at that point is parallel to the line.
@@ -193858,48 +193868,37 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193858
193868
  }
193859
193869
  }
193860
193870
  }
193861
- // Caller accesses data from two arcs, ensures circular, and orders with radiusA >= radiusB
193871
+ /** Low level dispatch of circular arc with circular arc. radiusA must be larger than or equal to radiusB. */
193862
193872
  dispatchCircularCircularOrdered(cpA, radiusA, cpB, radiusB, reversed) {
193863
193873
  const c = cpA.center.distance(cpB.center);
193864
193874
  const e = this._maxDistanceToAccept !== undefined ? this._maxDistanceToAccept : _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance;
193865
- if (c > radiusA + radiusB + e) // widely separated
193875
+ if (c > radiusA + radiusB + e) // distance between circles is more than max distance
193866
193876
  return;
193867
- // To consider:
193868
- // 1) endpoint to endpoint or projection
193869
- // 2) true intersection
193870
- // 3) line parallel to arc tangent.
193877
+ // TODO: 1) intersection between arcs
193878
+ // 2) endpoints to endpoints
193871
193879
  this.testAndRecordFractionalPairApproach(cpA, 0, 1, false, cpB, 0, 1, false, reversed);
193880
+ // 3) line from one arc to another (perpendicular to arc tangents along center-center line)
193872
193881
  if (!_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(c)) {
193873
- // ?? endpoint hits are recorded. Maybe also need overlap?
193874
193882
  const vectorAB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Vector3d.createStartEnd(cpA.center, cpB.center);
193875
193883
  vectorAB.scaleInPlace(1.0 / c);
193876
- if (c - radiusA - radiusB > e) {
193877
- // no approaches possible
193878
- }
193879
- else {
193880
- for (const rA of [-radiusA, radiusA]) {
193881
- for (const rB of [-radiusB, radiusB]) {
193882
- const tangentDistance = c - rA + rB;
193883
- if (tangentDistance < e) {
193884
- const detailA = this.resolveDirectionToArcXYFraction(cpA, vectorAB, rA);
193885
- if (detailA) {
193886
- const detailB = this.resolveDirectionToArcXYFraction(cpB, vectorAB, rB);
193887
- if (detailB) {
193888
- this.captureDetailPair(detailA, detailB, reversed);
193889
- }
193890
- }
193884
+ for (const rA of [-radiusA, radiusA]) {
193885
+ for (const rB of [-radiusB, radiusB]) {
193886
+ const tangentDistance = c - rA + rB;
193887
+ if (tangentDistance < e) {
193888
+ const detailA = this.resolveDirectionToArcXYFraction(cpA, vectorAB, rA);
193889
+ if (detailA) {
193890
+ const detailB = this.resolveDirectionToArcXYFraction(cpB, vectorAB, rB);
193891
+ if (detailB)
193892
+ this.captureDetailPair(detailA, detailB, reversed);
193891
193893
  }
193892
193894
  }
193893
193895
  }
193894
193896
  }
193895
193897
  }
193896
193898
  }
193897
- /**
193898
- * Find the fractional point (if any) on an arc, known to be circular and displayed from the center in the
193899
- * direction of a scaled vector.
193900
- */
193899
+ /** Find the fractional point (if any) on the circular `arc` in the direction of `radialVector`. */
193901
193900
  resolveDirectionToArcXYFraction(arc, radialVector, scale) {
193902
- // The scale ultimately only affects the direction --- easiest way to use it is two multiplies
193901
+ // The scale ultimately only affects the direction --- easiest way to use it is two multiplies.
193903
193902
  const c = scale * arc.matrixRef.columnDotXYZ(0, radialVector.x, radialVector.y, 0);
193904
193903
  const s = scale * arc.matrixRef.columnDotXYZ(1, radialVector.x, radialVector.y, 0);
193905
193904
  const radians = Math.atan2(s, c);
@@ -193908,10 +193907,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193908
193907
  return _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveEvaluatedFraction(arc, fraction);
193909
193908
  return undefined;
193910
193909
  }
193911
- // Caller accesses data from two arcs.
193912
- // Selects the best conditioned arc (in xy parts) as "circle after inversion"
193913
- // Solves the arc-arc equations
193910
+ /** Low level dispatch of arc with arc. Only circular arcs are supported. */
193914
193911
  dispatchArcArc(cpA, cpB, reversed) {
193912
+ const rangeA = cpA.range();
193913
+ const rangeB = cpB.range();
193914
+ rangeA.expandInPlace(this._maxDistanceToAccept);
193915
+ if (!rangeB.intersectsRangeXY(rangeA))
193916
+ return;
193915
193917
  if (this._circularArcB) {
193916
193918
  const radiusB = this._circularRadiusB;
193917
193919
  const radiusA = cpA.circularRadiusXY();
@@ -193924,17 +193926,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193924
193926
  }
193925
193927
  }
193926
193928
  }
193927
- // Caller accesses data from two arcs.
193928
- // Selects the best conditioned arc (in xy parts) as "circle after inversion"
193929
- // Solves the arc-arc equations
193929
+ /** Low level dispatch of arc with (beziers of) a bspline curve */
193930
193930
  dispatchArcBsplineCurve3d(cpA, cpB, reversed) {
193931
193931
  const ls = _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d.create();
193932
193932
  cpB.emitStrokes(ls);
193933
193933
  this.computeArcLineString(cpA, ls, reversed);
193934
193934
  }
193935
- // Caller accesses data from two arcs.
193936
- // Selects the best conditioned arc (in xy parts) as "circle after inversion"
193937
- // Solves the arc-arc equations
193935
+ /** Low level dispatch of (beziers of) a bspline curve with (beziers of) a bspline curve */
193938
193936
  dispatchBSplineCurve3dBSplineCurve3d(bcurveA, bcurveB, reversed) {
193939
193937
  const lsA = _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d.create();
193940
193938
  bcurveA.emitStrokes(lsA);
@@ -193972,6 +193970,11 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193972
193970
  }
193973
193971
  /** Detail computation for arc approaching linestring. */
193974
193972
  computeArcLineString(arcA, lsB, reversed) {
193973
+ const rangeA = arcA.range();
193974
+ const rangeB = lsB.range();
193975
+ rangeA.expandInPlace(this._maxDistanceToAccept);
193976
+ if (!rangeB.intersectsRangeXY(rangeA))
193977
+ return;
193975
193978
  const pointB0 = CurveCurveCloseApproachXY._workPointBB0;
193976
193979
  const pointB1 = CurveCurveCloseApproachXY._workPointBB1;
193977
193980
  const numB = lsB.numPoints();
@@ -193989,10 +193992,10 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193989
193992
  }
193990
193993
  return undefined;
193991
193994
  }
193992
- /** Low level dispatch of curve chain. */
193993
- dispatchCurveChain(geomA, geomAHandler) {
193995
+ /** Low level dispatch of curve collection. */
193996
+ dispatchCurveCollection(geomA, geomAHandler) {
193994
193997
  const geomB = this._geometryB; // save
193995
- if (!geomB || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveChain))
193998
+ if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection))
193996
193999
  return;
193997
194000
  for (const child of geomB.children) {
193998
194001
  this.resetGeometry(child);
@@ -194015,9 +194018,10 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
194015
194018
  else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_10__.BSplineCurve3d) {
194016
194019
  this.dispatchSegmentBsplineCurve(segmentA, this._geometryB, false);
194017
194020
  }
194018
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveChain) {
194019
- this.dispatchCurveChain(segmentA, this.handleLineSegment3d.bind(this));
194021
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection) {
194022
+ this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
194020
194023
  }
194024
+ return undefined;
194021
194025
  }
194022
194026
  /**
194023
194027
  * Set bits for comparison to range xy
@@ -194025,6 +194029,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
194025
194029
  * * bit 0x02 => x larger than range.high.x
194026
194030
  * * bit 0x04 => y smaller than range.low.y
194027
194031
  * * bit 0x08 => y larger than range.high.y
194032
+ * * If we divide XY plane into 9 areas using the range, the function returns 0 for points
194033
+ * inside the range. Below is other binary numbers returned by the function for all 9 areas:
194034
+ * 1001 | 1000 | 1010
194035
+ * ------------------
194036
+ * 1 | 0 | 10
194037
+ * ------------------
194038
+ * 101 | 100 | 110
194028
194039
  * @param xy point to test
194029
194040
  * @param range range for comparison
194030
194041
  */
@@ -194034,12 +194045,14 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
194034
194045
  result = 0x01;
194035
194046
  else if (x > range.high.x)
194036
194047
  result = 0x02;
194048
+ // note the OR operation
194037
194049
  if (y < range.low.y)
194038
194050
  result |= 0x04;
194039
194051
  else if (y > range.high.y)
194040
194052
  result |= 0x08;
194041
194053
  return result;
194042
194054
  }
194055
+ /** Low level dispatch of line string with line string. */
194043
194056
  computeLineStringLineString(lsA, lsB, reversed) {
194044
194057
  const rangeA = lsA.range();
194045
194058
  const rangeB = lsB.range();
@@ -194056,7 +194069,6 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
194056
194069
  const numA = lsA.numPoints();
194057
194070
  const numB = lsB.numPoints();
194058
194071
  if (numA > 1 && numB > 1) {
194059
- lsA.pointAt(0, pointA0);
194060
194072
  const dfA = 1.0 / (numA - 1);
194061
194073
  const dfB = 1.0 / (numB - 1);
194062
194074
  let fA0 = 0.0;
@@ -194066,6 +194078,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
194066
194078
  fA1 = ia * dfA;
194067
194079
  fB0 = 0.0;
194068
194080
  lsA.pointAt(ia, pointA1);
194081
+ // rangeA1 is around line segment [A0,A1] expanded by max distance
194069
194082
  rangeA1.setNull();
194070
194083
  rangeA1.extendPoint(pointA0);
194071
194084
  rangeA1.extendPoint(pointA1);
@@ -194077,10 +194090,10 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
194077
194090
  lsB.pointAt(ib, pointB1);
194078
194091
  bitB1 = this.classifyBitsPointRangeXY(pointB1.x, pointB1.y, rangeA1);
194079
194092
  fB1 = ib * dfB;
194080
- // Do NOT study the segment in detail if both bitB bits are on for any of the 4 planes . ..
194081
- if ((bitB0 & bitB1) === 0) {
194093
+ // DO NOT study the segment in detail if both bitB bits are on for any of the 4 planes
194094
+ // (i.e., no intersection between rangeA1 and the range around line segment [B0,B1])
194095
+ if ((bitB0 & bitB1) === 0)
194082
194096
  this.dispatchSegmentSegment(lsA, pointA0, fA0, pointA1, fA1, lsB, pointB0, fB0, pointB1, fB1, reversed);
194083
- }
194084
194097
  }
194085
194098
  }
194086
194099
  }
@@ -194101,8 +194114,8 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
194101
194114
  else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_10__.BSplineCurve3d) {
194102
194115
  this.dispatchLineStringBSplineCurve(lsA, this._geometryB, false);
194103
194116
  }
194104
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveChain) {
194105
- this.dispatchCurveChain(lsA, this.handleLineString3d.bind(this));
194117
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection) {
194118
+ this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
194106
194119
  }
194107
194120
  return undefined;
194108
194121
  }
@@ -194120,8 +194133,8 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
194120
194133
  else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_10__.BSplineCurve3d) {
194121
194134
  this.dispatchArcBsplineCurve3d(arc0, this._geometryB, false);
194122
194135
  }
194123
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveChain) {
194124
- this.dispatchCurveChain(arc0, this.handleArc3d.bind(this));
194136
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection) {
194137
+ this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
194125
194138
  }
194126
194139
  return undefined;
194127
194140
  }
@@ -194139,8 +194152,8 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
194139
194152
  else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_10__.BSplineCurve3dBase) {
194140
194153
  this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
194141
194154
  }
194142
- else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveChain) {
194143
- this.dispatchCurveChain(curve, this.handleBSplineCurve3d.bind(this));
194155
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_8__.CurveCollection) {
194156
+ this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
194144
194157
  }
194145
194158
  return undefined;
194146
194159
  }
@@ -211609,7 +211622,6 @@ class XYZ {
211609
211622
  }
211610
211623
  /**
211611
211624
  * Set the x,y,z parts from one of these input types
211612
- *
211613
211625
  * * XYZ -- copy the x,y,z parts
211614
211626
  * * Float64Array -- Copy from indices 0,1,2 to x,y,z
211615
211627
  * * XY -- copy the x, y parts and set z=0
@@ -220386,7 +220398,7 @@ class YawPitchRollAngles {
220386
220398
  */
220387
220399
  static createFromMatrix3d(matrix, result) {
220388
220400
  /**
220389
- * The rotation matrix for is
220401
+ * The rotation matrix form is
220390
220402
  *
220391
220403
  * Matrix3d.createRowValues(
220392
220404
  * cz * cy, -(sz * cx + cz * sy * sx), (sz * sx - cz * sy * cx),
@@ -287561,7 +287573,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
287561
287573
  /***/ ((module) => {
287562
287574
 
287563
287575
  "use strict";
287564
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.2.0-dev.17","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 -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -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.2.0-dev.17","@itwin/core-bentley":"workspace:^4.2.0-dev.17","@itwin/core-common":"workspace:^4.2.0-dev.17","@itwin/core-geometry":"workspace:^4.2.0-dev.17","@itwin/core-orbitgt":"workspace:^4.2.0-dev.17","@itwin/core-quantity":"workspace:^4.2.0-dev.17"},"//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.0-dev.44","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"18.16.1","@types/sinon":"^10.0.15","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.44.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^15.0.4","source-map-loader":"^4.0.0","typescript":"~5.0.2","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.1.0","@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","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
287576
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.2.0-dev.18","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 -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -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.2.0-dev.18","@itwin/core-bentley":"workspace:^4.2.0-dev.18","@itwin/core-common":"workspace:^4.2.0-dev.18","@itwin/core-geometry":"workspace:^4.2.0-dev.18","@itwin/core-orbitgt":"workspace:^4.2.0-dev.18","@itwin/core-quantity":"workspace:^4.2.0-dev.18"},"//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.0-dev.44","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"18.16.1","@types/sinon":"^10.0.15","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.44.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^15.0.4","source-map-loader":"^4.0.0","typescript":"~5.0.2","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.1.0","@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","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
287565
287577
 
287566
287578
  /***/ })
287567
287579