@itwin/rpcinterface-full-stack-tests 5.13.0-dev.3 → 5.13.0-dev.5

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.
@@ -227374,7 +227374,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_14__.CurvePrimitive
227374
227374
  }
227375
227375
  /**
227376
227376
  * Returns a (high accuracy) range of the curve between fractional positions.
227377
- * * Default implementation returns teh range of the curve from clonePartialCurve.
227377
+ * * Default implementation returns the range of the curve from clonePartialCurve.
227378
227378
  */
227379
227379
  rangeBetweenFractions(fraction0, fraction1, transform) {
227380
227380
  const sweep = _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.createStartEndRadians(this.sweep.fractionToRadians(fraction0), this.sweep.fractionToRadians(fraction1));
@@ -230289,6 +230289,7 @@ class CurveFactory {
230289
230289
  const closureTolerance = haveBoolean ? _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance : allowCuspOrOptions.closureTolerance ?? _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance;
230290
230290
  const cuspTolerance = haveBoolean ? _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance : allowCuspOrOptions.cuspTolerance ?? _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance;
230291
230291
  const cuspSegments = haveBoolean ? true : allowCuspOrOptions.cuspSegments ?? true;
230292
+ const simplifyPath = haveBoolean ? false : allowCuspOrOptions.simplifyPath ?? false;
230292
230293
  let n = points.length;
230293
230294
  if (filletClosure && points.almostEqualIndexIndex(0, n - 1, closureTolerance))
230294
230295
  n--; // ignore closure point
@@ -230362,7 +230363,16 @@ class CurveFactory {
230362
230363
  this.addPartialSegment(path, cuspSegments, b0.point, b1.point, b0.fraction12, 1 - b1.fraction10);
230363
230364
  }
230364
230365
  }
230365
- return path;
230366
+ if (!simplifyPath)
230367
+ return path;
230368
+ // remove tiny children, merge adjacent arcs
230369
+ const distTol2 = closureTolerance * closureTolerance;
230370
+ const sufficientlyLargeChildren = path.children.filter((c) => c.range().diagonalLengthSquared(true) >= distTol2);
230371
+ if (sufficientlyLargeChildren.length === 0)
230372
+ return undefined;
230373
+ const simplerPath = _Path__WEBPACK_IMPORTED_MODULE_24__.Path.create(...sufficientlyLargeChildren);
230374
+ _RegionOps__WEBPACK_IMPORTED_MODULE_25__.RegionOps.consolidateAdjacentPrimitives(simplerPath, { consolidateLoopSeam: true, duplicatePointTolerance: closureTolerance, colinearPointTolerance: closureTolerance });
230375
+ return simplerPath;
230366
230376
  }
230367
230377
  /** If an open filletedLineString starts/ends with an arc, add a zero-length line segment to its start/end. */
230368
230378
  static validateOpenPathStartEnd(filletedLineString) {
@@ -233186,6 +233196,13 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_11__.CurveP
233186
233196
  }
233187
233197
  return this._point1.clone();
233188
233198
  }
233199
+ /**
233200
+ * Whether the start and end points are defined and within tolerance.
233201
+ * * Always `false` for `LineSegment3d`.
233202
+ */
233203
+ isPhysicallyClosedCurve(_tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance, _xyOnly = false) {
233204
+ return false;
233205
+ }
233189
233206
  /** Return the point and derivative vector at fractional position along the line segment. */
233190
233207
  fractionToPointAndDerivative(fraction, result) {
233191
233208
  result = result ? result : _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_6__.Ray3d.createZero();
@@ -233542,7 +233559,7 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_11__.CurveP
233542
233559
  }
233543
233560
  /**
233544
233561
  * Returns a (high accuracy) range of the curve between fractional positions
233545
- * * Default implementation returns teh range of the curve from clonePartialCurve
233562
+ * * Default implementation returns the range of the curve from clonePartialCurve
233546
233563
  */
233547
233564
  rangeBetweenFractions(fraction0, fraction1, transform) {
233548
233565
  // (This is cheap -- don't bother testing for fraction0===fraction1)
@@ -236085,7 +236102,6 @@ __webpack_require__.r(__webpack_exports__);
236085
236102
  /* harmony import */ var _CurveFactory__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
236086
236103
  /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
236087
236104
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
236088
- /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
236089
236105
  /*---------------------------------------------------------------------------------------------
236090
236106
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
236091
236107
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -236101,17 +236117,26 @@ __webpack_require__.r(__webpack_exports__);
236101
236117
 
236102
236118
 
236103
236119
 
236104
-
236105
236120
  /**
236106
- * * Implementation class for ConsolidateAdjacentCurvePrimitives.
236121
+ * Implementation class for ConsolidateAdjacentCurvePrimitives.
236107
236122
  *
236108
236123
  * @internal
236109
236124
  */
236110
236125
  class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__.NullGeometryHandler {
236111
- _options;
236126
+ _consolidateLinearGeometry;
236127
+ _consolidateCompatibleArcs;
236128
+ _consolidateLoopSeam;
236129
+ _disableLinearCompression;
236130
+ _duplicatePointTolerance;
236131
+ _colinearPointTolerance;
236112
236132
  constructor(options) {
236113
236133
  super();
236114
- this._options = options ? options : new _RegionOps__WEBPACK_IMPORTED_MODULE_8__.ConsolidateAdjacentCurvePrimitivesOptions();
236134
+ this._consolidateLinearGeometry = options?.consolidateLinearGeometry ?? true;
236135
+ this._consolidateCompatibleArcs = options?.consolidateCompatibleArcs ?? true;
236136
+ this._consolidateLoopSeam = options?.consolidateLoopSeam ?? false;
236137
+ this._disableLinearCompression = options?.disableLinearCompression ?? false;
236138
+ this._duplicatePointTolerance = options?.duplicatePointTolerance ?? _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
236139
+ this._colinearPointTolerance = options?.colinearPointTolerance ?? _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
236115
236140
  }
236116
236141
  /** look for adjacent compatible primitives in a path or loop. */
236117
236142
  handleCurveChain(g) {
@@ -236123,7 +236148,7 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
236123
236148
  // numAccept is the number of children accepted (contiguously at front of children)
236124
236149
  for (let i0 = 0; i0 < numOriginal;) {
236125
236150
  const basePrimitive = g.children[i0];
236126
- if (this._options.consolidateLinearGeometry && (basePrimitive instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d || basePrimitive instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d)) {
236151
+ if (this._consolidateLinearGeometry && (basePrimitive instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d || basePrimitive instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d)) {
236127
236152
  points.length = 0;
236128
236153
  let i1 = i0;
236129
236154
  // on exit, i1 is beyond the block of linear primitives . ..
@@ -236146,16 +236171,16 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
236146
236171
  if (points.length <= 1) {
236147
236172
  g.children[numAccept++] = basePrimitive;
236148
236173
  }
236149
- else if (this._options.disableLinearCompression) {
236174
+ else if (this._disableLinearCompression) {
236150
236175
  const pointsDeduped = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressShortEdges(points, _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallFloatingPoint); // remove only exact duplicate interior points
236151
236176
  g.children[numAccept++] = _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d.createPoints(pointsDeduped);
236152
236177
  }
236153
236178
  else { // compress points
236154
- const compressedPointsA = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressShortEdges(points, this._options.duplicatePointTolerance);
236155
- const compressedPointsB = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressByChordError(compressedPointsA, this._options.colinearPointTolerance, true);
236156
- if (i0 === 0 && i1 === numOriginal && this._options.consolidateLoopSeam) {
236179
+ const compressedPointsA = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressShortEdges(points, this._duplicatePointTolerance);
236180
+ const compressedPointsB = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_3__.PolylineOps.compressByChordError(compressedPointsA, this._colinearPointTolerance, true);
236181
+ if (i0 === 0 && i1 === numOriginal && this._consolidateLoopSeam) {
236157
236182
  // points is the entire curve: if the curve is physically closed and end segments are colinear, re/move the seam
236158
- _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_2__.PolylineCompressionContext.compressColinearWrapInPlace(compressedPointsB, this._options.duplicatePointTolerance, this._options.colinearPointTolerance);
236183
+ _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_2__.PolylineCompressionContext.compressColinearWrapInPlace(compressedPointsB, this._duplicatePointTolerance, this._colinearPointTolerance);
236159
236184
  }
236160
236185
  if (compressedPointsB.length < 2) {
236161
236186
  // Collapsed to a point? Make a single point linestring
@@ -236170,14 +236195,14 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
236170
236195
  }
236171
236196
  i0 = i1;
236172
236197
  }
236173
- else if (this._options.consolidateCompatibleArcs && basePrimitive instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
236198
+ else if (this._consolidateCompatibleArcs && basePrimitive instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
236174
236199
  // subsume subsequent arcs into basePrimitive.
236175
236200
  // always accept base primitive.
236176
236201
  for (; ++i0 < g.children.length;) {
236177
236202
  const nextPrimitive = g.children[i0];
236178
236203
  if (!(nextPrimitive instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d))
236179
236204
  break;
236180
- if (!_CurveFactory__WEBPACK_IMPORTED_MODULE_5__.CurveFactory.appendToArcInPlace(basePrimitive, nextPrimitive, false, this._options.duplicatePointTolerance))
236205
+ if (!_CurveFactory__WEBPACK_IMPORTED_MODULE_5__.CurveFactory.appendToArcInPlace(basePrimitive, nextPrimitive, false, this._duplicatePointTolerance))
236181
236206
  break;
236182
236207
  }
236183
236208
  // i0 has already advanced
@@ -236195,11 +236220,11 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
236195
236220
  }
236196
236221
  handleLoop(g) {
236197
236222
  this.handleCurveChain(g);
236198
- if (g.children.length > 1 && this._options.consolidateLoopSeam) {
236223
+ if (g.children.length > 1 && this._consolidateLoopSeam) {
236199
236224
  const lastChild = g.children[g.children.length - 1];
236200
236225
  const firstChild = g.children[0];
236201
236226
  if ((lastChild instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d || lastChild instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) && (firstChild instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d || firstChild instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d)) {
236202
- if (this._options.consolidateLinearGeometry && !this._options.disableLinearCompression) {
236227
+ if (this._consolidateLinearGeometry && !this._disableLinearCompression) {
236203
236228
  const lastPoints = lastChild.points;
236204
236229
  lastPoints.pop(); // the original start point survives as an interior point in the new first primitive
236205
236230
  g.children[0] = _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d.createPoints([...lastPoints, ...firstChild.points]);
@@ -236207,8 +236232,8 @@ class ConsolidateAdjacentCurvePrimitivesContext extends _geometry3d_GeometryHand
236207
236232
  }
236208
236233
  }
236209
236234
  else if (lastChild instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d && firstChild instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_4__.Arc3d) {
236210
- if (this._options.consolidateCompatibleArcs) {
236211
- if (_CurveFactory__WEBPACK_IMPORTED_MODULE_5__.CurveFactory.appendToArcInPlace(lastChild, firstChild, false, this._options.duplicatePointTolerance)) {
236235
+ if (this._consolidateCompatibleArcs) {
236236
+ if (_CurveFactory__WEBPACK_IMPORTED_MODULE_5__.CurveFactory.appendToArcInPlace(lastChild, firstChild, false, this._duplicatePointTolerance)) {
236212
236237
  g.children[0] = lastChild;
236213
236238
  g.children.pop();
236214
236239
  }
@@ -236911,9 +236936,7 @@ class PlanarSubdivision {
236911
236936
  else
236912
236937
  face.announceEdgesInFace(addEdgeCurve);
236913
236938
  if (consolidate) {
236914
- const consolidateOptions = new _RegionOps__WEBPACK_IMPORTED_MODULE_12__.ConsolidateAdjacentCurvePrimitivesOptions();
236915
- consolidateOptions.consolidateLoopSeam = true;
236916
- _RegionOps__WEBPACK_IMPORTED_MODULE_12__.RegionOps.consolidateAdjacentPrimitives(loop, consolidateOptions);
236939
+ _RegionOps__WEBPACK_IMPORTED_MODULE_12__.RegionOps.consolidateAdjacentPrimitives(loop, { consolidateLoopSeam: true });
236917
236940
  }
236918
236941
  if (loop.isPhysicallyClosedCurve(options?.closureTol, true))
236919
236942
  return loop;
@@ -237939,7 +237962,8 @@ __webpack_require__.r(__webpack_exports__);
237939
237962
 
237940
237963
 
237941
237964
  /**
237942
- * * Options to control method [[RegionOps.consolidateAdjacentPrimitives]].
237965
+ * Options to control method [[RegionOps.consolidateAdjacentPrimitives]].
237966
+ * @deprecated in 5.11.13 - might be removed in next major version. Use [[ConsolidateAdjacentPrimitivesOptions]], which is more convenient as an interface, and has better name.
237943
237967
  * @public
237944
237968
  */
237945
237969
  class ConsolidateAdjacentCurvePrimitivesOptions {
@@ -242430,14 +242454,136 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
242430
242454
  this.computeSegmentSegment3D(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, cpB, extendB0, pointB0, fractionB0, pointB1, fractionB1, extendB1, reversed);
242431
242455
  }
242432
242456
  }
242433
- // Caller accesses data from a linestring or segment and passes it here.
242434
- // The line segment in question might be (a) a full line segment or (b) a fragment within a linestring.
242435
- // The fraction and extend parameters allow all combinations to be passed in.
242436
- dispatchSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
242457
+ /** Implementation of dispatchSegmentArc under affine transform. KEEP IN SYNC WITH computeSegmentArcHomogeneous. */
242458
+ computeSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
242437
242459
  const tol2 = this._coincidentGeometryContext.tolerance * this._coincidentGeometryContext.tolerance;
242438
242460
  const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
242439
242461
  const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
242440
242462
  const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
242463
+ const recordIfNearIntersection = (fA, fB, d2) => {
242464
+ if (!_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(d2, tol2))
242465
+ return false;
242466
+ this.recordPointWithLocalFractions(fA, cpA, fractionA0, fractionA1, fB, arc, 0, 1, reversed);
242467
+ return true;
242468
+ };
242469
+ const data = arc.toTransformedVectors(this._worldToLocalAffine);
242470
+ let pointA0Local = pointA0;
242471
+ let pointA1Local = pointA1;
242472
+ const pointB0Local = arc.startPoint();
242473
+ const pointB1Local = arc.endPoint();
242474
+ if (this._worldToLocalAffine) {
242475
+ pointA0Local = this._worldToLocalAffine.multiplyPoint3d(pointA0);
242476
+ pointA1Local = this._worldToLocalAffine.multiplyPoint3d(pointA1);
242477
+ this._worldToLocalAffine.multiplyXYAndZInPlace(pointB0Local);
242478
+ this._worldToLocalAffine.multiplyXYAndZInPlace(pointB1Local);
242479
+ }
242480
+ const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.center, 1);
242481
+ const beta = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector0, 0);
242482
+ const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector90, 0);
242483
+ // note really tight tol for tangency since below we check closest approach also
242484
+ let numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_11__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians, tol2);
242485
+ const closeApproach = (0 === numRoots);
242486
+ if (closeApproach)
242487
+ numRoots = 1; // we returned the closest approach instead: first entry is the arc point, which is all we need
242488
+ const roots = [];
242489
+ for (let i = 0; i < numRoots; i++) {
242490
+ const arcPt = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
242491
+ const fArc = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0); // exterior fraction sign based on extend flags
242492
+ const fArcNearest01 = data.sweep.fractionToSignedPeriodicFraction(fArc, undefined); // exterior fraction sign based on proximity to 0/1
242493
+ const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_12__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPt);
242494
+ if (fLine !== undefined) {
242495
+ const linePt = pointA0Local.interpolate(fLine, pointA1Local);
242496
+ roots.push({ fArc, fArcNearest01, fLine, arcPt, linePt });
242497
+ }
242498
+ }
242499
+ // range-test and record roots
242500
+ for (const root of roots) {
242501
+ const { fArc, fArcNearest01, fLine, arcPt, linePt } = root;
242502
+ if (closeApproach && !_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(arcPt.distanceSquaredXY(linePt), tol2)) {
242503
+ continue;
242504
+ }
242505
+ if (this.acceptFraction(extendA0, fLine, extendA1) && this.acceptFraction(extendB0, fArc, extendB1)) {
242506
+ this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
242507
+ continue;
242508
+ }
242509
+ // since line-arc chains are so common, look for near-endpoint intersections using distance tol, which is often relatively looser than fraction tol
242510
+ const inArcRange = extendB0 || extendB1 || _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01(fArc);
242511
+ const inLineRange = (extendA0 && fLine < 0) || (extendA1 && fLine > 1) || _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01(fLine);
242512
+ let accepted = false;
242513
+ if (inArcRange && !inLineRange) // check tangency near line endpoint
242514
+ accepted = recordIfNearIntersection(fLine < 0 ? 0 : 1, fArc, (fLine < 0 ? pointA0Local : pointA1Local).distanceSquaredXY(arcPt));
242515
+ else if (!inArcRange && inLineRange) // check tangency near arc endpoint
242516
+ accepted = recordIfNearIntersection(fLine, fArcNearest01 < 0 ? 0 : 1, linePt.distanceSquaredXY(fArcNearest01 < 0 ? pointB0Local : pointB1Local));
242517
+ if (!accepted) // check intersection between nearest endpoints
242518
+ recordIfNearIntersection(fLine < 0.5 ? 0 : 1, fArcNearest01 < 0.5 ? 0 : 1, (fLine < 0.5 ? pointA0Local : pointA1Local).distanceSquaredXY(fArcNearest01 < 0.5 ? pointB0Local : pointB1Local));
242519
+ }
242520
+ }
242521
+ /** Implementation of dispatchSegmentArc under perspective transform. KEEP IN SYNC WITH computeSegmentArc. */
242522
+ computeSegmentArcHomogeneous(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
242523
+ if (!this._worldToLocalPerspective)
242524
+ return;
242525
+ const tol2 = this._coincidentGeometryContext.tolerance * this._coincidentGeometryContext.tolerance;
242526
+ const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
242527
+ const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
242528
+ const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array(2);
242529
+ const recordIfNearIntersection = (fA, fB, d2) => {
242530
+ if (d2 === undefined || !_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(d2, tol2))
242531
+ return false;
242532
+ this.recordPointWithLocalFractions(fA, cpA, fractionA0, fractionA1, fB, arc, 0, 1, reversed);
242533
+ return true;
242534
+ };
242535
+ const data = arc.toTransformedPoint4d(this._worldToLocalPerspective);
242536
+ const pointA0H = this._worldToLocalPerspective.multiplyPoint3d(pointA0, 1);
242537
+ const pointA1H = this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1);
242538
+ const pointB0H = this._worldToLocalPerspective.multiplyPoint3d(arc.startPoint(), 1);
242539
+ const pointB1H = this._worldToLocalPerspective.multiplyPoint3d(arc.endPoint(), 1);
242540
+ const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.center);
242541
+ const beta = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector0);
242542
+ const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector90);
242543
+ // note really tight tol for tangency since below we check closest approach also
242544
+ let numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_11__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians, tol2);
242545
+ const closeApproach = (0 === numRoots);
242546
+ if (closeApproach)
242547
+ numRoots = 1; // we returned the closest approach instead: first entry is the arc point, which is all we need
242548
+ const roots = [];
242549
+ for (let i = 0; i < numRoots; i++) {
242550
+ const arcPt = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
242551
+ const fArc = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0); // exterior fraction sign based on extend flags
242552
+ const fArcNearest01 = data.sweep.fractionToSignedPeriodicFraction(fArc, undefined); // exterior fraction sign based on proximity to 0/1
242553
+ const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_12__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPt);
242554
+ if (fLine !== undefined) {
242555
+ const linePt = pointA0H.interpolate(fLine, pointA1H);
242556
+ roots.push({ fArc, fArcNearest01, fLine, arcPt, linePt });
242557
+ }
242558
+ }
242559
+ // range-test and record roots
242560
+ for (const root of roots) {
242561
+ const { fArc, fArcNearest01, fLine, arcPt, linePt } = root;
242562
+ if (closeApproach) {
242563
+ const dist2 = arcPt.realDistanceSquaredXY(linePt);
242564
+ if (dist2 === undefined || !_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(dist2, tol2))
242565
+ continue;
242566
+ }
242567
+ if (this.acceptFraction(extendA0, fLine, extendA1) && this.acceptFraction(extendB0, fArc, extendB1)) {
242568
+ this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
242569
+ continue;
242570
+ }
242571
+ // since line-arc chains are so common, look for near-endpoint intersections using distance tol, which is often relatively looser than fraction tol
242572
+ const inArcRange = extendB0 || extendB1 || _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01(fArc);
242573
+ const inLineRange = (extendA0 && fLine < 0) || (extendA1 && fLine > 1) || _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isIn01(fLine);
242574
+ let accepted = false;
242575
+ if (inArcRange && !inLineRange) // check tangency near line endpoint
242576
+ accepted = recordIfNearIntersection(fLine < 0 ? 0 : 1, fArc, (fLine < 0 ? pointA0H : pointA1H).realDistanceSquaredXY(arcPt));
242577
+ else if (!inArcRange && inLineRange) // check tangency near arc endpoint
242578
+ accepted = recordIfNearIntersection(fLine, fArcNearest01 < 0 ? 0 : 1, linePt.realDistanceSquaredXY(fArcNearest01 < 0 ? pointB0H : pointB1H));
242579
+ if (!accepted) // check intersection between nearest endpoints
242580
+ recordIfNearIntersection(fLine < 0.5 ? 0 : 1, fArcNearest01 < 0.5 ? 0 : 1, (fLine < 0.5 ? pointA0H : pointA1H).realDistanceSquaredXY(fArcNearest01 < 0.5 ? pointB0H : pointB1H));
242581
+ }
242582
+ }
242583
+ // Caller accesses data from a linestring or segment and passes it here.
242584
+ // The line segment in question might be (a) a full line segment or (b) a fragment within a linestring.
242585
+ // The fraction and extend parameters allow all combinations to be passed in.
242586
+ dispatchSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
242441
242587
  // Arc: X(theta) = C + cos(theta)·U + sin(theta)·V
242442
242588
  // Line: contains points A0,A1
242443
242589
  // Arc point X is colinear (intersects) with line if det(A0, A1, X) = 0 with homogeneous xyw points and vectors
@@ -242446,107 +242592,10 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
242446
242592
  // or
242447
242593
  // alpha + beta cos(theta) + gamma sin(theta) = 0
242448
242594
  // solve for theta; evaluate points; project back to line
242449
- if (this._worldToLocalPerspective) {
242450
- const data = arc.toTransformedPoint4d(this._worldToLocalPerspective);
242451
- const pointA0H = this._worldToLocalPerspective.multiplyPoint3d(pointA0, 1);
242452
- const pointA1H = this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1);
242453
- const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.center);
242454
- const beta = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector0);
242455
- const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector90);
242456
- let numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_11__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians, tol2);
242457
- const closeApproach = (0 === numRoots);
242458
- if (closeApproach)
242459
- numRoots = 1; // arc closest approach is the first entry
242460
- let numAccepted = 0;
242461
- for (let i = 0; i < numRoots; i++) {
242462
- const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
242463
- const fArc = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0);
242464
- const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_12__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
242465
- if (fLine === undefined)
242466
- continue;
242467
- if (closeApproach) {
242468
- const linePoint = pointA0H.interpolate(fLine, pointA1H);
242469
- const dist2 = arcPoint.realDistanceSquaredXY(linePoint);
242470
- if (dist2 === undefined || !_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(dist2, tol2))
242471
- continue;
242472
- }
242473
- if (this.acceptFraction(extendA0, fLine, extendA1) && this.acceptFraction(extendB0, fArc, extendB1)) {
242474
- this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
242475
- numAccepted++;
242476
- }
242477
- }
242478
- if (numAccepted === 0 && !arc.sweep.isFullCircle) {
242479
- // check for endpoint intersection beyond parametric tolerance but within point tolerance
242480
- const pointB0H = this._worldToLocalPerspective.multiplyPoint3d(arc.startPoint(), 1);
242481
- const pointB1H = this._worldToLocalPerspective.multiplyPoint3d(arc.endPoint(), 1);
242482
- const dist2 = [];
242483
- let d2 = pointA0H.realDistanceSquaredXY(pointB0H);
242484
- if (d2 !== undefined)
242485
- dist2.push({ d2, fA: 0, fB: 0 });
242486
- d2 = pointA0H.realDistanceSquaredXY(pointB1H);
242487
- if (d2 !== undefined)
242488
- dist2.push({ d2, fA: 0, fB: 1 });
242489
- d2 = pointA1H.realDistanceSquaredXY(pointB0H);
242490
- if (d2 !== undefined)
242491
- dist2.push({ d2, fA: 1, fB: 0 });
242492
- d2 = pointA1H.realDistanceSquaredXY(pointB1H);
242493
- if (d2 !== undefined)
242494
- dist2.push({ d2, fA: 1, fB: 1 });
242495
- dist2.sort((a, b) => a.d2 - b.d2);
242496
- if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(dist2[0].d2, tol2))
242497
- this.recordPointWithLocalFractions(dist2[0].fA, cpA, fractionA0, fractionA1, dist2[0].fB, arc, 0, 1, reversed);
242498
- }
242499
- }
242500
- else {
242501
- const data = arc.toTransformedVectors(this._worldToLocalAffine);
242502
- let pointA0Local = pointA0;
242503
- let pointA1Local = pointA1;
242504
- if (this._worldToLocalAffine) {
242505
- pointA0Local = this._worldToLocalAffine.multiplyPoint3d(pointA0);
242506
- pointA1Local = this._worldToLocalAffine.multiplyPoint3d(pointA1);
242507
- }
242508
- const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.center, 1);
242509
- const beta = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector0, 0);
242510
- const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector90, 0);
242511
- let numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_11__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians, tol2);
242512
- const closeApproach = (0 === numRoots);
242513
- if (closeApproach)
242514
- numRoots = 1; // arc closest approach is the first entry
242515
- let numAccepted = 0;
242516
- for (let i = 0; i < numRoots; i++) {
242517
- const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
242518
- const fArc = data.sweep.radiansToSignedFraction(radians.atUncheckedIndex(i), extendB0);
242519
- const fLine = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_12__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
242520
- if (fLine === undefined)
242521
- continue;
242522
- if (closeApproach) {
242523
- const linePoint = pointA0Local.interpolate(fLine, pointA1Local);
242524
- if (!_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(arcPoint.distanceSquaredXY(linePoint), tol2))
242525
- continue;
242526
- }
242527
- if (this.acceptFraction(extendA0, fLine, extendA1) && this.acceptFraction(extendB0, fArc, extendB1)) {
242528
- this.recordPointWithLocalFractions(fLine, cpA, fractionA0, fractionA1, fArc, arc, 0, 1, reversed);
242529
- numAccepted++;
242530
- }
242531
- }
242532
- if (numAccepted === 0 && !arc.sweep.isFullCircle) {
242533
- // check for endpoint intersection beyond parametric tolerance but within point tolerance
242534
- const pointB0Local = arc.startPoint();
242535
- const pointB1Local = arc.endPoint();
242536
- if (this._worldToLocalAffine) {
242537
- this._worldToLocalAffine.multiplyXYAndZInPlace(pointB0Local);
242538
- this._worldToLocalAffine.multiplyXYAndZInPlace(pointB1Local);
242539
- }
242540
- const dist2 = [];
242541
- dist2.push({ d2: pointA0Local.distanceSquaredXY(pointB0Local), fA: 0, fB: 0 });
242542
- dist2.push({ d2: pointA0Local.distanceSquaredXY(pointB1Local), fA: 0, fB: 1 });
242543
- dist2.push({ d2: pointA1Local.distanceSquaredXY(pointB0Local), fA: 1, fB: 0 });
242544
- dist2.push({ d2: pointA1Local.distanceSquaredXY(pointB1Local), fA: 1, fB: 1 });
242545
- dist2.sort((a, b) => a.d2 - b.d2);
242546
- if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isDistanceWithinTol(dist2[0].d2, tol2))
242547
- this.recordPointWithLocalFractions(dist2[0].fA, cpA, fractionA0, fractionA1, dist2[0].fB, arc, 0, 1, reversed);
242548
- }
242549
- }
242595
+ if (this._worldToLocalPerspective)
242596
+ this.computeSegmentArcHomogeneous(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed);
242597
+ else
242598
+ this.computeSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed);
242550
242599
  }
242551
242600
  /**
242552
242601
  * Compute the intersection of two xy-arcs.
@@ -243042,7 +243091,8 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
243042
243091
  let converged = newtonSearcher.runIterations();
243043
243092
  const fractionA = newtonSearcher.getU();
243044
243093
  const fractionB = newtonSearcher.getV();
243045
- if (this.acceptFraction(extendA0, fractionA, extendA1) && this.acceptFraction(false, fractionB, false)) {
243094
+ // note looser tol for spiral, which can have high order tangency at start/end
243095
+ if (this.acceptFraction(extendA0, fractionA, extendA1) && this.acceptFraction(false, fractionB, false, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallFraction)) {
243046
243096
  const pointA = curveA.fractionToPoint(fractionA, CurveCurveIntersectXY._workPointA0);
243047
243097
  const pointB = spiralB.fractionToPoint(fractionB, CurveCurveIntersectXY._workPointB0);
243048
243098
  if (!converged) // Newton may have found close points even if it didn't converge parametrically
@@ -251560,6 +251610,13 @@ class TransitionSpiral3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_4__.Cu
251560
251610
  get spiralType() {
251561
251611
  return this._spiralType;
251562
251612
  }
251613
+ /**
251614
+ * Whether the start and end points are defined and within tolerance.
251615
+ * * Always `false` for `TransitionSpiral3d`.
251616
+ */
251617
+ isPhysicallyClosedCurve(_tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance, _xyOnly = false) {
251618
+ return false;
251619
+ }
251563
251620
  /** Return 1/r with convention that exact zero input returns 0 (straight line, zero curvature, infinite radius). */
251564
251621
  static radiusToCurvature(radius) {
251565
251622
  return (radius === 0.0) ? 0.0 : 1.0 / radius;
@@ -252679,7 +252736,7 @@ class AngleSweep {
252679
252736
  * @param toNegativeFraction exterior fraction handling:
252680
252737
  * * if true, return `fraction` period-shifted to within one period of the start
252681
252738
  * * if false, return `fraction` period-shifted to within one period of the end
252682
- * * if undefined, return the period-shift of `fraction` closest to [0,1].
252739
+ * * if undefined, return the period-shift of `fraction` closest in fraction space to [0,1].
252683
252740
  * @returns period-shifted fraction. If `fraction` is already in [0,1], or the sweep is empty, then `fraction` is
252684
252741
  * returned unchanged.
252685
252742
  */
@@ -252711,7 +252768,7 @@ class AngleSweep {
252711
252768
  * @param toNegativeFraction exterior fraction handling:
252712
252769
  * * if true, return `fraction` period-shifted to within one period of the start
252713
252770
  * * if false, return `fraction` period-shifted to within one period of the end
252714
- * * if undefined, return the period-shift of `fraction` closest to [0,1].
252771
+ * * if undefined, return the period-shift of `fraction` closest in fraction space to [0,1].
252715
252772
  * @returns period-shifted fraction. If `fraction` is already in [0,1], or the sweep is empty, then `fraction` is
252716
252773
  * returned unchanged.
252717
252774
  */
@@ -270504,6 +270561,14 @@ class Range3d extends RangeBase {
270504
270561
  diagonal(result) {
270505
270562
  return this.low.vectorTo(this.high, result);
270506
270563
  }
270564
+ /** Return the length of the range diagonal, optionally ignoring z extent. */
270565
+ diagonalLength(ignoreZ = false) {
270566
+ return ignoreZ ? this.low.distanceXY(this.high) : this.low.distance(this.high);
270567
+ }
270568
+ /** Return the squared length of the range diagonal, optionally ignoring z extent. */
270569
+ diagonalLengthSquared(ignoreZ = false) {
270570
+ return ignoreZ ? this.low.distanceSquaredXY(this.high) : this.low.distanceSquared(this.high);
270571
+ }
270507
270572
  /**
270508
270573
  * Return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very
270509
270574
  * large negative coordinates.
@@ -271557,6 +271622,14 @@ class Range2d extends RangeBase {
271557
271622
  diagonal(result) {
271558
271623
  return this.low.vectorTo(this.high, result);
271559
271624
  }
271625
+ /** Return the length of the range diagonal. */
271626
+ diagonalLength() {
271627
+ return this.low.distance(this.high);
271628
+ }
271629
+ /** Return the squared length of the range diagonal. */
271630
+ diagonalLengthSquared() {
271631
+ return this.low.distanceSquared(this.high);
271632
+ }
271560
271633
  /**
271561
271634
  * Return the point at the specified fraction along the diagonal vector. There is no check for isNull -- if the
271562
271635
  * range isNull(), the vector will have very large negative coordinates.
@@ -342228,7 +342301,7 @@ class TestContext {
342228
342301
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
342229
342302
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
342230
342303
  await core_frontend_1.NoRenderApp.startup({
342231
- applicationVersion: "5.13.0-dev.3",
342304
+ applicationVersion: "5.13.0-dev.5",
342232
342305
  applicationId: this.settings.gprid,
342233
342306
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.serviceAuthToken),
342234
342307
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -367065,7 +367138,7 @@ var loadLanguages = instance.loadLanguages;
367065
367138
  (module) {
367066
367139
 
367067
367140
  "use strict";
367068
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.13.0-dev.3","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 && npm run -s copy:draco","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","copy:draco":"cpx \\"./node_modules/@loaders.gl/draco/dist/libs/*\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts && npm run -s extract","extract":"betools extract --fileExt=ts --extractFrom=./src/test/example-code --recursive --out=../../generated-docs/extract","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-deprecation":"eslint --fix -f visualstudio --no-inline-config -c ../../common/config/eslint/eslint.config.deprecation-policy.js \\"./src/**/*.ts\\"","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@bentley/aec-units-schema":"^1.0.3","@bentley/formats-schema":"^1.0.0","@bentley/units-schema":"^1.0.10","@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/object-storage-core":"^3.0.4","@itwin/eslint-plugin":"^6.0.0","@types/chai-as-promised":"^7","@types/draco3d":"^1.4.10","@types/node":"~20.17.0","@types/sinon":"^17.0.2","@vitest/browser-playwright":"^4.1.10","@vitest/coverage-v8":"^4.1.10","cpx2":"^8.0.0","eslint":"^9.31.0","glob":"^13.0.6","playwright":"~1.56.1","rimraf":"^6.0.1","sinon":"^17.0.2","source-map-loader":"^5.0.0","typescript":"~5.6.2","vitest":"^4.1.10","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"~4.3.4","@loaders.gl/draco":"~4.3.4","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
367141
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.13.0-dev.5","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 build:workers && npm run -s copy:draco","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:draco":"cpx \\"./node_modules/@loaders.gl/draco/dist/libs/*\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts && npm run -s extract","extract":"betools extract --fileExt=ts --extractFrom=./src/test/example-code --recursive --out=../../generated-docs/extract","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-deprecation":"eslint --fix -f visualstudio --no-inline-config -c ../../common/config/eslint/eslint.config.deprecation-policy.js \\"./src/**/*.ts\\"","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run build:test-worker && vitest --run","cover":"npm run build:test-worker && vitest --run","build:test-worker":"vite build --config ./src/test/worker/vite.config.mts 1>&2","build:workers":"rimraf lib/workers/webpack && vite build --config ./src/workers/ImdlParser/vite.config.mts 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@bentley/aec-units-schema":"^1.0.3","@bentley/formats-schema":"^1.0.0","@bentley/units-schema":"^1.0.10","@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/object-storage-core":"^3.0.4","@itwin/eslint-plugin":"^6.0.0","@types/chai-as-promised":"^7","@types/draco3d":"^1.4.10","@types/node":"~20.17.0","@types/sinon":"^17.0.2","@vitest/browser-playwright":"^4.1.10","@vitest/coverage-v8":"^4.1.10","cpx2":"^8.0.0","eslint":"^9.31.0","playwright":"~1.56.1","rimraf":"^6.0.1","sinon":"^17.0.2","typescript":"~5.6.2","vite":"^6.4.3","vitest":"^4.1.10","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.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/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"~4.3.4","@loaders.gl/draco":"~4.3.4","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
367069
367142
 
367070
367143
  /***/ },
367071
367144