@itwin/rpcinterface-full-stack-tests 3.5.0-dev.49 → 3.5.0-dev.51

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.
@@ -105342,6 +105342,11 @@ class IModelConnection extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.I
105342
105342
  * @beta
105343
105343
  */
105344
105344
  this.onClose = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
105345
+ /** Event called immediately after *this* IModelConnection has its displayed extents expanded.
105346
+ * @note This event is called only for this IModelConnection.
105347
+ * @internal
105348
+ */
105349
+ this.onDisplayedExtentsExpansion = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
105345
105350
  this._snapRpc = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.OneAtATimeAction(async (props) => _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.IModelReadRpcInterface.getClientForRouting(this.routingContext.token).requestSnap(this.getRpcProps(), _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.sessionId, props));
105346
105351
  this._toolTipRpc = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.OneAtATimeAction(async (id) => _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.IModelReadRpcInterface.getClientForRouting(this.routingContext.token).getToolTipMessage(this.getRpcProps(), id));
105347
105352
  /** Event called immediately after map elevation request is completed. This occurs only in the case where background map terrain is displayed
@@ -105662,10 +105667,7 @@ class IModelConnection extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.I
105662
105667
  this._extentsExpansion.extendRange(range);
105663
105668
  this.displayedExtents.setFrom(this.projectExtents);
105664
105669
  this.displayedExtents.extendRange(this._extentsExpansion);
105665
- for (const vp of _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.viewManager) {
105666
- if (vp.view.isSpatialView() && vp.iModel === this)
105667
- vp.invalidateController();
105668
- }
105670
+ this.onDisplayedExtentsExpansion.raiseEvent();
105669
105671
  }
105670
105672
  /** @internal */
105671
105673
  getMapEcefToDb(bimElevationBias) {
@@ -117218,6 +117220,9 @@ class Viewport {
117218
117220
  removals.push(this.iModel.onMapElevationLoaded.addListener((_iModel) => {
117219
117221
  this.synchWithView();
117220
117222
  }));
117223
+ removals.push(this.iModel.onDisplayedExtentsExpansion.addListener(() => {
117224
+ this.invalidateController();
117225
+ }));
117221
117226
  }
117222
117227
  }
117223
117228
  registerDisplayStyleListeners(style) {
@@ -166831,9 +166836,9 @@ class TileAdmin {
166831
166836
  // start dynamically loading default implementation and save the promise to avoid duplicate instances
166832
166837
  this._tileStoragePromise = (async () => {
166833
166838
  await __webpack_require__.e(/*! import() */ "vendors-common_temp_node_modules_pnpm_reflect-metadata_0_1_13_node_modules_reflect-metadata_R-610cb3").then(__webpack_require__.t.bind(__webpack_require__, /*! reflect-metadata */ "../../common/temp/node_modules/.pnpm/reflect-metadata@0.1.13/node_modules/reflect-metadata/Reflect.js", 23));
166834
- // eslint-disable-next-line @typescript-eslint/no-var-requires
166835
- const azureFrontend = await __webpack_require__(/*! ./object-storage-azure */ "../../core/frontend/lib/esm/tile/object-storage-azure.js")();
166836
- const azureStorage = new azureFrontend.AzureFrontendStorage(new azureFrontend.FrontendBlockBlobClientWrapperFactory());
166839
+ // eslint-disable-next-line @typescript-eslint/naming-convention
166840
+ const { AzureFrontendStorage, FrontendBlockBlobClientWrapperFactory } = await Promise.all(/*! import() | object-storage */[__webpack_require__.e("vendors-common_temp_node_modules_pnpm_reflect-metadata_0_1_13_node_modules_reflect-metadata_R-610cb3"), __webpack_require__.e("vendors-common_temp_node_modules_pnpm_itwin_object-storage-azure_1_4_0_node_modules_itwin_obj-3576c6"), __webpack_require__.e("object-storage")]).then(__webpack_require__.t.bind(__webpack_require__, /*! @itwin/object-storage-azure/lib/frontend */ "../../common/temp/node_modules/.pnpm/@itwin+object-storage-azure@1.4.0/node_modules/@itwin/object-storage-azure/lib/frontend/index.js", 23));
166841
+ const azureStorage = new AzureFrontendStorage(new FrontendBlockBlobClientWrapperFactory());
166837
166842
  this._tileStorage = new _internal__WEBPACK_IMPORTED_MODULE_6__.TileStorage(azureStorage);
166838
166843
  return this._tileStorage;
166839
166844
  })();
@@ -176539,21 +176544,6 @@ class WmtsCapabilities {
176539
176544
  WmtsCapabilities._capabilitiesCache = new Map();
176540
176545
 
176541
176546
 
176542
- /***/ }),
176543
-
176544
- /***/ "../../core/frontend/lib/esm/tile/object-storage-azure.js":
176545
- /*!****************************************************************!*\
176546
- !*** ../../core/frontend/lib/esm/tile/object-storage-azure.js ***!
176547
- \****************************************************************/
176548
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
176549
-
176550
- // this wrapper is needed when compiling the package with CJS.
176551
- // In that case, Typescript will convert the dynamic import into a require and Webpack won't parse the magic comment.
176552
- module.exports = async () => {
176553
- return Promise.all(/*! import() | object-storage */[__webpack_require__.e("vendors-common_temp_node_modules_pnpm_reflect-metadata_0_1_13_node_modules_reflect-metadata_R-610cb3"), __webpack_require__.e("vendors-common_temp_node_modules_pnpm_itwin_object-storage-azure_1_4_0_node_modules_itwin_obj-3576c6"), __webpack_require__.e("object-storage")]).then(__webpack_require__.t.bind(__webpack_require__, /*! @itwin/object-storage-azure/lib/frontend */ "../../common/temp/node_modules/.pnpm/@itwin+object-storage-azure@1.4.0/node_modules/@itwin/object-storage-azure/lib/frontend/index.js", 23));
176554
- }
176555
-
176556
-
176557
176547
  /***/ }),
176558
176548
 
176559
176549
  /***/ "../../core/frontend/lib/esm/tools/AccuDrawTool.js":
@@ -191484,24 +191474,25 @@ __webpack_require__.r(__webpack_exports__);
191484
191474
  /* harmony export */ });
191485
191475
  /* harmony import */ var _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../curve/CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
191486
191476
  /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
191487
- /* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
191477
+ /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
191478
+ /* harmony import */ var _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../curve/internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
191479
+ /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
191480
+ /* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
191488
191481
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
191489
- /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
191490
- /* harmony import */ var _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../geometry3d/Plane3dByOriginAndVectors */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndVectors.js");
191491
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
191492
- /* harmony import */ var _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../geometry3d/PointHelpers */ "../../core/geometry/lib/esm/geometry3d/PointHelpers.js");
191482
+ /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
191483
+ /* harmony import */ var _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../geometry3d/Plane3dByOriginAndVectors */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndVectors.js");
191484
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
191485
+ /* harmony import */ var _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../geometry3d/PointHelpers */ "../../core/geometry/lib/esm/geometry3d/PointHelpers.js");
191493
191486
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
191494
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
191487
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
191495
191488
  /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
191496
191489
  /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
191497
191490
  /* harmony import */ var _Bezier1dNd__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Bezier1dNd */ "../../core/geometry/lib/esm/bspline/Bezier1dNd.js");
191498
- /* harmony import */ var _BezierCurve3d__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./BezierCurve3d */ "../../core/geometry/lib/esm/bspline/BezierCurve3d.js");
191499
- /* harmony import */ var _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./BezierCurve3dH */ "../../core/geometry/lib/esm/bspline/BezierCurve3dH.js");
191491
+ /* harmony import */ var _BezierCurve3d__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./BezierCurve3d */ "../../core/geometry/lib/esm/bspline/BezierCurve3d.js");
191492
+ /* harmony import */ var _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./BezierCurve3dH */ "../../core/geometry/lib/esm/bspline/BezierCurve3dH.js");
191500
191493
  /* harmony import */ var _BSpline1dNd__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BSpline1dNd */ "../../core/geometry/lib/esm/bspline/BSpline1dNd.js");
191501
- /* harmony import */ var _BSplineCurveOps__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./BSplineCurveOps */ "../../core/geometry/lib/esm/bspline/BSplineCurveOps.js");
191494
+ /* harmony import */ var _BSplineCurveOps__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./BSplineCurveOps */ "../../core/geometry/lib/esm/bspline/BSplineCurveOps.js");
191502
191495
  /* harmony import */ var _KnotVector__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./KnotVector */ "../../core/geometry/lib/esm/bspline/KnotVector.js");
191503
- /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
191504
- /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
191505
191496
  /*---------------------------------------------------------------------------------------------
191506
191497
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
191507
191498
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -191509,14 +191500,12 @@ __webpack_require__.r(__webpack_exports__);
191509
191500
  /** @packageDocumentation
191510
191501
  * @module Bspline
191511
191502
  */
191512
- // import { Point2d } from "../Geometry2d";
191513
191503
 
191514
191504
 
191515
191505
 
191516
191506
 
191517
191507
 
191518
191508
 
191519
- /* eslint-disable @typescript-eslint/naming-convention, no-empty, no-console*/
191520
191509
 
191521
191510
 
191522
191511
 
@@ -191531,6 +191520,8 @@ __webpack_require__.r(__webpack_exports__);
191531
191520
 
191532
191521
 
191533
191522
 
191523
+
191524
+ /* eslint-disable @typescript-eslint/naming-convention, no-empty, no-console*/
191534
191525
  /**
191535
191526
  * Base class for BSplineCurve3d and BSplineCurve3dH.
191536
191527
  * * A bspline curve consists of a set of knots and a set of poles.
@@ -191802,6 +191793,14 @@ class BSplineCurve3dBase extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_
191802
191793
  this.emitStrokableParts(handler, options.strokeOptions);
191803
191794
  return handler.claimResult();
191804
191795
  }
191796
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
191797
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
191798
+ * @param lowHigh optional receiver for output
191799
+ * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.
191800
+ */
191801
+ projectedParameterRange(ray, lowHigh) {
191802
+ return _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_11__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
191803
+ }
191805
191804
  }
191806
191805
  /**
191807
191806
  * A BSplineCurve3d is a bspline curve whose poles are Point3d.
@@ -191814,19 +191813,19 @@ class BSplineCurve3d extends BSplineCurve3dBase {
191814
191813
  }
191815
191814
  initializeWorkBezier() {
191816
191815
  if (this._workBezier === undefined)
191817
- this._workBezier = _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_11__.BezierCurve3dH.createOrder(this.order);
191816
+ this._workBezier = _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_12__.BezierCurve3dH.createOrder(this.order);
191818
191817
  return this._workBezier;
191819
191818
  }
191820
191819
  /** test of `other` is an instance of BSplineCurve3d */
191821
191820
  isSameGeometryClass(other) { return other instanceof BSplineCurve3d; }
191822
191821
  /** Apply `transform` to the poles. */
191823
- tryTransformInPlace(transform) { _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_12__.Point3dArray.multiplyInPlace(transform, this._bcurve.packedData); return true; }
191822
+ tryTransformInPlace(transform) { _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_13__.Point3dArray.multiplyInPlace(transform, this._bcurve.packedData); return true; }
191824
191823
  /** Get a pole as simple Point3d. */
191825
191824
  getPolePoint3d(poleIndex, result) {
191826
191825
  const k = this.poleIndexToDataIndex(poleIndex);
191827
191826
  if (k !== undefined) {
191828
191827
  const data = this._bcurve.packedData;
191829
- return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__.Point3d.create(data[k], data[k + 1], data[k + 2], result);
191828
+ return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Point3d.create(data[k], data[k + 1], data[k + 2], result);
191830
191829
  }
191831
191830
  return undefined;
191832
191831
  }
@@ -191844,7 +191843,7 @@ class BSplineCurve3d extends BSplineCurve3dBase {
191844
191843
  return this._bcurve.spanFractionToKnot(span, localFraction);
191845
191844
  }
191846
191845
  /** Return a simple array of arrays with the control points as `[[x,y,z],[x,y,z],..]` */
191847
- copyPoints() { return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_12__.Point3dArray.unpackNumbersToNestedArrays(this._bcurve.packedData, 3); }
191846
+ copyPoints() { return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_13__.Point3dArray.unpackNumbersToNestedArrays(this._bcurve.packedData, 3); }
191848
191847
  /** Return a simple array of the control points coordinates */
191849
191848
  copyPointsFloat64Array() { return this._bcurve.packedData.slice(); }
191850
191849
  /**
@@ -191863,7 +191862,7 @@ class BSplineCurve3d extends BSplineCurve3dBase {
191863
191862
  for (let i = 0; i < 3 * numPoles; i++)
191864
191863
  curve._bcurve.packedData[i] = poles[i];
191865
191864
  }
191866
- else if (poles instanceof _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_14__.GrowableXYZArray) {
191865
+ else if (poles instanceof _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__.GrowableXYZArray) {
191867
191866
  curve._bcurve.packedData = poles.float64Data().slice(0, 3 * numPoles);
191868
191867
  }
191869
191868
  else {
@@ -191895,7 +191894,7 @@ class BSplineCurve3d extends BSplineCurve3dBase {
191895
191894
  for (let i = 0; i < 3 * degree; i++)
191896
191895
  curve._bcurve.packedData[3 * numPoles + i] = poles[i];
191897
191896
  }
191898
- else if (poles instanceof _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_14__.GrowableXYZArray) {
191897
+ else if (poles instanceof _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__.GrowableXYZArray) {
191899
191898
  curve._bcurve.packedData = poles.float64Data().slice(0, 3 * numPoles);
191900
191899
  for (let i = 0; i < 3 * degree; i++)
191901
191900
  curve._bcurve.packedData[3 * numPoles + i] = poles.float64Data()[i];
@@ -191920,14 +191919,14 @@ class BSplineCurve3d extends BSplineCurve3dBase {
191920
191919
  * @param options collection of points and end conditions.
191921
191920
  */
191922
191921
  static createFromInterpolationCurve3dOptions(options) {
191923
- return _BSplineCurveOps__WEBPACK_IMPORTED_MODULE_15__.BSplineCurveOps.createThroughPointsC2Cubic(options);
191922
+ return _BSplineCurveOps__WEBPACK_IMPORTED_MODULE_16__.BSplineCurveOps.createThroughPointsC2Cubic(options);
191924
191923
  }
191925
191924
  /**
191926
191925
  *
191927
191926
  * @param options collection of points and end conditions.
191928
191927
  */
191929
191928
  static createFromAkimaCurve3dOptions(options) {
191930
- return _BSplineCurveOps__WEBPACK_IMPORTED_MODULE_15__.BSplineCurveOps.createThroughPoints(options.fitPoints, 4); // temporary
191929
+ return _BSplineCurveOps__WEBPACK_IMPORTED_MODULE_16__.BSplineCurveOps.createThroughPoints(options.fitPoints, 4); // temporary
191931
191930
  }
191932
191931
  /** Create a bspline with given knots.
191933
191932
  *
@@ -191976,25 +191975,25 @@ class BSplineCurve3d extends BSplineCurve3dBase {
191976
191975
  /** Evaluate at a position given by fractional position within a span. */
191977
191976
  evaluatePointInSpan(spanIndex, spanFraction) {
191978
191977
  this._bcurve.evaluateBuffersInSpan(spanIndex, spanFraction);
191979
- return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__.Point3d.createFrom(this._bcurve.poleBuffer);
191978
+ return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Point3d.createFrom(this._bcurve.poleBuffer);
191980
191979
  }
191981
191980
  /** Evaluate point and derivative vector at a position given by fractional position within a span.
191982
191981
  * * The derivative is with respect to the span fraction (NOT scaled to either global fraction or knot)
191983
191982
  */
191984
191983
  evaluatePointAndDerivativeInSpan(spanIndex, spanFraction) {
191985
191984
  this._bcurve.evaluateBuffersInSpan1(spanIndex, spanFraction);
191986
- return _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_16__.Ray3d.createCapture(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__.Point3d.createFrom(this._bcurve.poleBuffer), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__.Vector3d.createFrom(this._bcurve.poleBuffer1));
191985
+ return _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_17__.Ray3d.createCapture(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Point3d.createFrom(this._bcurve.poleBuffer), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Vector3d.createFrom(this._bcurve.poleBuffer1));
191987
191986
  }
191988
191987
  /** Evaluate at a position given by a knot value. */
191989
191988
  knotToPoint(u, result) {
191990
191989
  this._bcurve.evaluateBuffersAtKnot(u);
191991
- return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__.Point3d.createFrom(this._bcurve.poleBuffer, result);
191990
+ return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Point3d.createFrom(this._bcurve.poleBuffer, result);
191992
191991
  }
191993
191992
  /** Evaluate at a position given by a knot value. */
191994
191993
  knotToPointAndDerivative(u, result) {
191995
191994
  this._bcurve.evaluateBuffersAtKnot(u, 1);
191996
191995
  if (!result)
191997
- return _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_16__.Ray3d.createCapture(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__.Point3d.createFrom(this._bcurve.poleBuffer), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__.Vector3d.createFrom(this._bcurve.poleBuffer1));
191996
+ return _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_17__.Ray3d.createCapture(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Point3d.createFrom(this._bcurve.poleBuffer), _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Vector3d.createFrom(this._bcurve.poleBuffer1));
191998
191997
  result.origin.setFrom(this._bcurve.poleBuffer);
191999
191998
  result.direction.setFrom(this._bcurve.poleBuffer1);
192000
191999
  return result;
@@ -192002,22 +192001,22 @@ class BSplineCurve3d extends BSplineCurve3dBase {
192002
192001
  /** Evaluate at a position given by a knot value. Return point with 2 derivatives. */
192003
192002
  knotToPointAnd2Derivatives(u, result) {
192004
192003
  this._bcurve.evaluateBuffersAtKnot(u, 2);
192005
- return _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_17__.Plane3dByOriginAndVectors.createOriginAndVectorsXYZ(this._bcurve.poleBuffer[0], this._bcurve.poleBuffer[1], this._bcurve.poleBuffer[2], this._bcurve.poleBuffer1[0], this._bcurve.poleBuffer1[1], this._bcurve.poleBuffer1[2], this._bcurve.poleBuffer2[0], this._bcurve.poleBuffer2[1], this._bcurve.poleBuffer2[2], result);
192004
+ return _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_18__.Plane3dByOriginAndVectors.createOriginAndVectorsXYZ(this._bcurve.poleBuffer[0], this._bcurve.poleBuffer[1], this._bcurve.poleBuffer[2], this._bcurve.poleBuffer1[0], this._bcurve.poleBuffer1[1], this._bcurve.poleBuffer1[2], this._bcurve.poleBuffer2[0], this._bcurve.poleBuffer2[1], this._bcurve.poleBuffer2[2], result);
192006
192005
  }
192007
192006
  /** test if almost the same curve as `other` */
192008
192007
  isAlmostEqual(other) {
192009
192008
  if (other instanceof BSplineCurve3d) {
192010
192009
  return this._bcurve.knots.isAlmostEqual(other._bcurve.knots)
192011
- && _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_12__.Point3dArray.isAlmostEqual(this._bcurve.packedData, other._bcurve.packedData);
192010
+ && _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_13__.Point3dArray.isAlmostEqual(this._bcurve.packedData, other._bcurve.packedData);
192012
192011
  }
192013
192012
  return false;
192014
192013
  }
192015
192014
  /** test if this curve is entirely within plane. */
192016
192015
  isInPlane(plane) {
192017
- return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_12__.Point3dArray.isCloseToPlane(this._bcurve.packedData, plane);
192016
+ return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_13__.Point3dArray.isCloseToPlane(this._bcurve.packedData, plane);
192018
192017
  }
192019
192018
  /** Return the control polygon length as approximation (always overestimate) of the curve length. */
192020
- quickLength() { return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_12__.Point3dArray.sumEdgeLengths(this._bcurve.packedData); }
192019
+ quickLength() { return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_13__.Point3dArray.sumEdgeLengths(this._bcurve.packedData); }
192021
192020
  /** Emit beziers or strokes (selected by the stroke options) to the handler. */
192022
192021
  emitStrokableParts(handler, options) {
192023
192022
  const needBeziers = handler.announceBezierCurve !== undefined;
@@ -192061,7 +192060,7 @@ class BSplineCurve3d extends BSplineCurve3dBase {
192061
192060
  computeAndAttachRecursiveStrokeCounts(options, parentStrokeMap) {
192062
192061
  const workBezier = this.initializeWorkBezier();
192063
192062
  const numSpan = this.numSpan;
192064
- const myData = _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_18__.StrokeCountMap.createWithCurvePrimitiveAndOptionalParent(this, parentStrokeMap, []);
192063
+ const myData = _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_19__.StrokeCountMap.createWithCurvePrimitiveAndOptionalParent(this, parentStrokeMap, []);
192065
192064
  for (let spanIndex = 0; spanIndex < numSpan; spanIndex++) {
192066
192065
  const bezier = this.getSaturatedBezierSpan3dH(spanIndex, workBezier);
192067
192066
  if (bezier) {
@@ -192116,8 +192115,8 @@ class BSplineCurve3d extends BSplineCurve3dBase {
192116
192115
  if (spanIndex < 0 || spanIndex >= this.numSpan)
192117
192116
  return undefined;
192118
192117
  const order = this.order;
192119
- if (result === undefined || !(result instanceof _BezierCurve3d__WEBPACK_IMPORTED_MODULE_19__.BezierCurve3d) || result.order !== order)
192120
- result = _BezierCurve3d__WEBPACK_IMPORTED_MODULE_19__.BezierCurve3d.createOrder(order);
192118
+ if (result === undefined || !(result instanceof _BezierCurve3d__WEBPACK_IMPORTED_MODULE_20__.BezierCurve3d) || result.order !== order)
192119
+ result = _BezierCurve3d__WEBPACK_IMPORTED_MODULE_20__.BezierCurve3d.createOrder(order);
192121
192120
  const bezier = result;
192122
192121
  bezier.loadSpanPoles(this._bcurve.packedData, spanIndex);
192123
192122
  if (bezier.saturateInPlace(this._bcurve.knots, spanIndex))
@@ -192133,8 +192132,8 @@ class BSplineCurve3d extends BSplineCurve3dBase {
192133
192132
  if (spanIndex < 0 || spanIndex >= this.numSpan)
192134
192133
  return undefined;
192135
192134
  const order = this.order;
192136
- if (result === undefined || !(result instanceof _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_11__.BezierCurve3dH) || result.order !== order)
192137
- result = _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_11__.BezierCurve3dH.createOrder(order);
192135
+ if (result === undefined || !(result instanceof _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_12__.BezierCurve3dH) || result.order !== order)
192136
+ result = _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_12__.BezierCurve3dH.createOrder(order);
192138
192137
  const bezier = result;
192139
192138
  bezier.loadSpan3dPolesWithWeight(this._bcurve.packedData, spanIndex, 1.0);
192140
192139
  if (bezier.saturateInPlace(this._bcurve.knots, spanIndex))
@@ -195287,14 +195286,15 @@ __webpack_require__.r(__webpack_exports__);
195287
195286
  /* harmony export */ "BezierCurveBase": () => (/* binding */ BezierCurveBase)
195288
195287
  /* harmony export */ });
195289
195288
  /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
195289
+ /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
195290
+ /* harmony import */ var _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
195291
+ /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
195290
195292
  /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
195291
195293
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
195292
195294
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
195293
195295
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
195294
195296
  /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
195295
195297
  /* harmony import */ var _Bezier1dNd__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Bezier1dNd */ "../../core/geometry/lib/esm/bspline/Bezier1dNd.js");
195296
- /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
195297
- /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
195298
195298
  /*---------------------------------------------------------------------------------------------
195299
195299
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
195300
195300
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -195302,17 +195302,17 @@ __webpack_require__.r(__webpack_exports__);
195302
195302
  /** @packageDocumentation
195303
195303
  * @module Bspline
195304
195304
  */
195305
- // import { Point2d } from "../Geometry2d";
195306
195305
 
195307
195306
 
195308
195307
 
195309
195308
 
195310
- /* eslint-disable @typescript-eslint/naming-convention, no-empty, no-console*/
195311
195309
 
195312
195310
 
195313
195311
 
195314
195312
 
195315
195313
 
195314
+
195315
+ /* eslint-disable @typescript-eslint/naming-convention, no-empty, no-console*/
195316
195316
  /**
195317
195317
  * Base class for CurvePrimitive (necessarily 3D) with _polygon.
195318
195318
  * * This has a Bezier1dNd polygon as a member, and implements dimension-independent methods
@@ -195519,6 +195519,14 @@ class BezierCurveBase extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__
195519
195519
  partialCurve._polygon.subdivideToIntervalInPlace(fractionA, fractionB);
195520
195520
  return partialCurve;
195521
195521
  }
195522
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
195523
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
195524
+ * @param lowHigh optional receiver for output
195525
+ * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.
195526
+ */
195527
+ projectedParameterRange(ray, lowHigh) {
195528
+ return _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_9__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
195529
+ }
195522
195530
  }
195523
195531
 
195524
195532
 
@@ -201894,10 +201902,11 @@ __webpack_require__.r(__webpack_exports__);
201894
201902
  /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
201895
201903
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
201896
201904
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
201897
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
201898
- /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
201899
201905
  /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
201906
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
201900
201907
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
201908
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
201909
+ /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
201901
201910
  /*---------------------------------------------------------------------------------------------
201902
201911
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
201903
201912
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -201918,6 +201927,7 @@ __webpack_require__.r(__webpack_exports__);
201918
201927
 
201919
201928
 
201920
201929
 
201930
+
201921
201931
  /**
201922
201932
  * Circular or elliptic arc.
201923
201933
  *
@@ -202838,6 +202848,14 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
202838
202848
  this.emitStrokableParts(handler, options.strokeOptions);
202839
202849
  return handler.claimResult();
202840
202850
  }
202851
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
202852
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
202853
+ * @param lowHigh optional receiver for output
202854
+ * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.
202855
+ */
202856
+ projectedParameterRange(ray, lowHigh) {
202857
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_16__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
202858
+ }
202841
202859
  }
202842
202860
  Arc3d._workPointA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Point3d.create();
202843
202861
  Arc3d._workPointB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Point3d.create();
@@ -203291,6 +203309,7 @@ __webpack_require__.r(__webpack_exports__);
203291
203309
  /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
203292
203310
  /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
203293
203311
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
203312
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
203294
203313
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
203295
203314
  /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
203296
203315
  /*---------------------------------------------------------------------------------------------
@@ -203310,6 +203329,7 @@ __webpack_require__.r(__webpack_exports__);
203310
203329
 
203311
203330
 
203312
203331
 
203332
+
203313
203333
  /**
203314
203334
  * * Annotation of an interval of a curve.
203315
203335
  * * The interval is marked with two pairs of numbers:
@@ -203975,6 +203995,14 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
203975
203995
  }
203976
203996
  return offsets;
203977
203997
  }
203998
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
203999
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
204000
+ * @param lowHigh optional receiver for output
204001
+ * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.
204002
+ */
204003
+ projectedParameterRange(ray, lowHigh) {
204004
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
204005
+ }
203978
204006
  }
203979
204007
  CurveChainWithDistanceIndex._numCalls = 0;
203980
204008
  CurveChainWithDistanceIndex._numTested = 0;
@@ -203998,7 +204026,7 @@ __webpack_require__.r(__webpack_exports__);
203998
204026
  /* harmony export */ "CurveChain": () => (/* binding */ CurveChain),
203999
204027
  /* harmony export */ "CurveCollection": () => (/* binding */ CurveCollection)
204000
204028
  /* harmony export */ });
204001
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
204029
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
204002
204030
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
204003
204031
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
204004
204032
  /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
@@ -204006,10 +204034,11 @@ __webpack_require__.r(__webpack_exports__);
204006
204034
  /* harmony import */ var _internalContexts_CloneWithExpandedLineStrings__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internalContexts/CloneWithExpandedLineStrings */ "../../core/geometry/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js");
204007
204035
  /* harmony import */ var _internalContexts_CountLinearPartsSearchContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internalContexts/CountLinearPartsSearchContext */ "../../core/geometry/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js");
204008
204036
  /* harmony import */ var _internalContexts_GapSearchContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internalContexts/GapSearchContext */ "../../core/geometry/lib/esm/curve/internalContexts/GapSearchContext.js");
204037
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
204009
204038
  /* harmony import */ var _internalContexts_SumLengthsContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internalContexts/SumLengthsContext */ "../../core/geometry/lib/esm/curve/internalContexts/SumLengthsContext.js");
204010
204039
  /* harmony import */ var _internalContexts_TransformInPlaceContext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./internalContexts/TransformInPlaceContext */ "../../core/geometry/lib/esm/curve/internalContexts/TransformInPlaceContext.js");
204011
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
204012
- /* harmony import */ var _ProxyCurve__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ProxyCurve */ "../../core/geometry/lib/esm/curve/ProxyCurve.js");
204040
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
204041
+ /* harmony import */ var _ProxyCurve__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ProxyCurve */ "../../core/geometry/lib/esm/curve/ProxyCurve.js");
204013
204042
  /*---------------------------------------------------------------------------------------------
204014
204043
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
204015
204044
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -204029,6 +204058,7 @@ __webpack_require__.r(__webpack_exports__);
204029
204058
 
204030
204059
 
204031
204060
 
204061
+
204032
204062
  /**
204033
204063
  * A `CurveCollection` is an abstract (non-instantiable) class for various sets of curves with particular structures:
204034
204064
  * - `CurveChain` is a (non-instantiable) intermediate class for a sequence of `CurvePrimitive ` joining head-to-tail. The two instantiable forms of `CurveChain` are
@@ -204161,6 +204191,14 @@ class CurveCollection extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geomet
204161
204191
  }
204162
204192
  return undefined;
204163
204193
  }
204194
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
204195
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
204196
+ * @param lowHigh optional receiver for output
204197
+ * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.
204198
+ */
204199
+ projectedParameterRange(ray, lowHigh) {
204200
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_9__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
204201
+ }
204164
204202
  }
204165
204203
  /** Shared base class for use by both open and closed paths.
204166
204204
  * - A `CurveChain` contains only curvePrimitives. No other paths, loops, or regions allowed.
@@ -204193,7 +204231,7 @@ class CurveChain extends CurveCollection {
204193
204231
  if (index >= 0 && index < n)
204194
204232
  return this.children[index];
204195
204233
  if (cyclic) {
204196
- const index2 = _Geometry__WEBPACK_IMPORTED_MODULE_9__.Geometry.modulo(index, n);
204234
+ const index2 = _Geometry__WEBPACK_IMPORTED_MODULE_10__.Geometry.modulo(index, n);
204197
204235
  return this.children[index2];
204198
204236
  }
204199
204237
  return undefined;
@@ -204207,7 +204245,7 @@ class CurveChain extends CurveCollection {
204207
204245
  const children = tree.children;
204208
204246
  if (children.length === 1) {
204209
204247
  const ls = children[0];
204210
- if (ls instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d)
204248
+ if (ls instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_11__.LineString3d)
204211
204249
  return ls.packedPoints;
204212
204250
  }
204213
204251
  }
@@ -204264,7 +204302,7 @@ class CurveChain extends CurveCollection {
204264
204302
  if (alsoSearchProxies !== null && alsoSearchProxies !== void 0 ? alsoSearchProxies : false) {
204265
204303
  for (let i = 0; i < this._curves.length; i++) {
204266
204304
  const childCurve = this._curves[i];
204267
- if (childCurve instanceof _ProxyCurve__WEBPACK_IMPORTED_MODULE_11__.ProxyCurve) {
204305
+ if (childCurve instanceof _ProxyCurve__WEBPACK_IMPORTED_MODULE_12__.ProxyCurve) {
204268
204306
  if (childCurve.proxyCurve === target)
204269
204307
  return i;
204270
204308
  }
@@ -204319,7 +204357,7 @@ class BagOfCurves extends CurveCollection {
204319
204357
  let child;
204320
204358
  for (child of this.children) {
204321
204359
  if (child instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__.CurvePrimitive) {
204322
- const ls = _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d.create();
204360
+ const ls = _LineString3d__WEBPACK_IMPORTED_MODULE_11__.LineString3d.create();
204323
204361
  child.emitStrokes(ls, options);
204324
204362
  if (ls)
204325
204363
  clone.children.push(ls);
@@ -204362,9 +204400,9 @@ class ConsolidateAdjacentCurvePrimitivesOptions {
204362
204400
  /** True to consolidate contiguous arcs */
204363
204401
  this.consolidateCompatibleArcs = true;
204364
204402
  /** Tolerance for collapsing identical points */
204365
- this.duplicatePointTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_9__.Geometry.smallMetricDistance;
204403
+ this.duplicatePointTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_10__.Geometry.smallMetricDistance;
204366
204404
  /** Tolerance for removing interior colinear points. */
204367
- this.colinearPointTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_9__.Geometry.smallMetricDistance;
204405
+ this.colinearPointTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_10__.Geometry.smallMetricDistance;
204368
204406
  }
204369
204407
  }
204370
204408
 
@@ -205370,7 +205408,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
205370
205408
  return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSmallMetricDistance(fraction * pointA.distanceXY(pointB));
205371
205409
  }
205372
205410
  else if (!extend1 && fraction > 1.0)
205373
- return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSmallMetricDistance(fraction * pointA.distanceXY(pointB));
205411
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSmallMetricDistance((fraction - 1.0) * pointA.distanceXY(pointB));
205374
205412
  return true;
205375
205413
  }
205376
205414
  /**
@@ -208462,6 +208500,14 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
208462
208500
  this.collectCurvePrimitivesGo(results, smallestPossiblePrimitives, explodeLinestrings);
208463
208501
  return results;
208464
208502
  }
208503
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
208504
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
208505
+ * @param lowHigh optional receiver for output
208506
+ * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.
208507
+ */
208508
+ projectedParameterRange(_ray, _lowHigh) {
208509
+ return undefined; // common implementation delegated to subclasses to avoid circular dependency
208510
+ }
208465
208511
  }
208466
208512
 
208467
208513
 
@@ -208793,6 +208839,7 @@ __webpack_require__.r(__webpack_exports__);
208793
208839
  /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
208794
208840
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
208795
208841
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
208842
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
208796
208843
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
208797
208844
  /*---------------------------------------------------------------------------------------------
208798
208845
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -208808,6 +208855,7 @@ __webpack_require__.r(__webpack_exports__);
208808
208855
 
208809
208856
 
208810
208857
 
208858
+
208811
208859
  /* eslint-disable @typescript-eslint/naming-convention, no-empty */
208812
208860
  /**
208813
208861
  * A LineSegment3d is:
@@ -209142,6 +209190,14 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
209142
209190
  }
209143
209191
  return undefined;
209144
209192
  }
209193
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
209194
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
209195
+ * @param lowHigh optional receiver for output
209196
+ * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.
209197
+ */
209198
+ projectedParameterRange(ray, lowHigh) {
209199
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
209200
+ }
209145
209201
  }
209146
209202
 
209147
209203
 
@@ -209174,6 +209230,7 @@ __webpack_require__.r(__webpack_exports__);
209174
209230
  /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
209175
209231
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
209176
209232
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
209233
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
209177
209234
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
209178
209235
  /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
209179
209236
  /* harmony import */ var _Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
@@ -209195,6 +209252,7 @@ __webpack_require__.r(__webpack_exports__);
209195
209252
 
209196
209253
 
209197
209254
 
209255
+
209198
209256
  /* eslint-disable @typescript-eslint/naming-convention, no-empty */
209199
209257
  /* Starting with baseIndex and moving index by stepDirection:
209200
209258
  If the vector from baseIndex to baseIndex +1 crossed with vectorA can be normalized, accumulate it (scaled) to normal.
@@ -210481,6 +210539,14 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
210481
210539
  }
210482
210540
  return offsets;
210483
210541
  }
210542
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
210543
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
210544
+ * @param lowHigh optional receiver for output
210545
+ * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.
210546
+ */
210547
+ projectedParameterRange(ray, lowHigh) {
210548
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_18__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
210549
+ }
210484
210550
  }
210485
210551
  LineString3d._workPointA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
210486
210552
  LineString3d._workPointB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
@@ -211191,6 +211257,10 @@ class ProxyCurve extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.Curv
211191
211257
  constructOffsetXY(offsetDistanceOrOptions) {
211192
211258
  return this._proxyCurve.constructOffsetXY(offsetDistanceOrOptions);
211193
211259
  }
211260
+ /** Implement by proxyCurve */
211261
+ projectedParameterRange(ray, lowHigh) {
211262
+ return this._proxyCurve.projectedParameterRange(ray, lowHigh);
211263
+ }
211194
211264
  }
211195
211265
 
211196
211266
 
@@ -211753,7 +211823,7 @@ __webpack_require__.r(__webpack_exports__);
211753
211823
  /** @packageDocumentation
211754
211824
  * @module Curve
211755
211825
  */
211756
- class MapCurvePrimitiveToCurveLocatioNDetailPairArray {
211826
+ class MapCurvePrimitiveToCurveLocationDetailPairArray {
211757
211827
  constructor() {
211758
211828
  this.primitiveToPair = new Map();
211759
211829
  // index assigned to this primitive for this calculation.
@@ -211806,9 +211876,10 @@ function tagString(name: string, value: number | undefined): string {
211806
211876
  * @internal
211807
211877
  */
211808
211878
  class PlanarSubdivision {
211809
- static assembleHalfEdgeGraph(_primitives, allPairs) {
211810
- const detailByPrimitive = new MapCurvePrimitiveToCurveLocatioNDetailPairArray(); // map from key CurvePrimitive to CurveLocationDetailPair.
211811
- for (const p of _primitives)
211879
+ /** Create a graph from an array of curves, and an array of the curves' precomputed intersections. */
211880
+ static assembleHalfEdgeGraph(primitives, allPairs) {
211881
+ const detailByPrimitive = new MapCurvePrimitiveToCurveLocationDetailPairArray(); // map from key CurvePrimitive to CurveLocationDetailPair.
211882
+ for (const p of primitives)
211812
211883
  detailByPrimitive.assignPrimitiveIndex(p);
211813
211884
  for (const pair of allPairs) {
211814
211885
  detailByPrimitive.insertPair(pair);
@@ -212779,27 +212850,27 @@ __webpack_require__.r(__webpack_exports__);
212779
212850
  /* harmony export */ "RegionBinaryOpType": () => (/* binding */ RegionBinaryOpType),
212780
212851
  /* harmony export */ "RegionOps": () => (/* binding */ RegionOps)
212781
212852
  /* harmony export */ });
212782
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
212853
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
212783
212854
  /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
212784
- /* harmony import */ var _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/IndexedXYZCollection */ "../../core/geometry/lib/esm/geometry3d/IndexedXYZCollection.js");
212855
+ /* harmony import */ var _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../geometry3d/IndexedXYZCollection */ "../../core/geometry/lib/esm/geometry3d/IndexedXYZCollection.js");
212785
212856
  /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
212786
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
212857
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
212787
212858
  /* harmony import */ var _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../geometry3d/PolylineCompressionByEdgeOffset */ "../../core/geometry/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js");
212788
212859
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
212789
212860
  /* harmony import */ var _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../geometry3d/SortablePolygon */ "../../core/geometry/lib/esm/geometry3d/SortablePolygon.js");
212790
212861
  /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
212791
212862
  /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
212792
- /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
212863
+ /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
212793
212864
  /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
212794
- /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
212865
+ /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
212795
212866
  /* harmony import */ var _ChainCollectorContext__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./ChainCollectorContext */ "../../core/geometry/lib/esm/curve/ChainCollectorContext.js");
212796
212867
  /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
212797
212868
  /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
212798
212869
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
212799
- /* harmony import */ var _CurveWireMomentsXYZ__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CurveWireMomentsXYZ */ "../../core/geometry/lib/esm/curve/CurveWireMomentsXYZ.js");
212870
+ /* harmony import */ var _CurveWireMomentsXYZ__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveWireMomentsXYZ */ "../../core/geometry/lib/esm/curve/CurveWireMomentsXYZ.js");
212800
212871
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
212801
212872
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
212802
- /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
212873
+ /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
212803
212874
  /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
212804
212875
  /* harmony import */ var _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./Query/ConsolidateAdjacentPrimitivesContext */ "../../core/geometry/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js");
212805
212876
  /* harmony import */ var _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Query/CurveSplitContext */ "../../core/geometry/lib/esm/curve/Query/CurveSplitContext.js");
@@ -212808,10 +212879,10 @@ __webpack_require__.r(__webpack_exports__);
212808
212879
  /* harmony import */ var _RegionMomentsXY__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RegionMomentsXY */ "../../core/geometry/lib/esm/curve/RegionMomentsXY.js");
212809
212880
  /* harmony import */ var _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
212810
212881
  /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
212811
- /* harmony import */ var _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./RegionOpsClassificationSweeps */ "../../core/geometry/lib/esm/curve/RegionOpsClassificationSweeps.js");
212812
- /* harmony import */ var _UnionRegion__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
212882
+ /* harmony import */ var _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RegionOpsClassificationSweeps */ "../../core/geometry/lib/esm/curve/RegionOpsClassificationSweeps.js");
212883
+ /* harmony import */ var _UnionRegion__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
212813
212884
  /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
212814
- /* harmony import */ var _ParityRegion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
212885
+ /* harmony import */ var _ParityRegion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
212815
212886
  /*---------------------------------------------------------------------------------------------
212816
212887
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
212817
212888
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -212889,6 +212960,14 @@ class RegionOps {
212889
212960
  }
212890
212961
  return undefined;
212891
212962
  }
212963
+ /** Return an area tolerance for a given xy-range and optional distance tolerance.
212964
+ * @param range range of planar region to tolerance
212965
+ * @param distanceTolerance optional absolute distance tolerance
212966
+ */
212967
+ static computeXYAreaTolerance(range, distanceTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
212968
+ // if A = bh and e is distance tolerance, then A' := (b+e)(h+e) = A + e(b+h+e), so A'-A = e(b+h+e).
212969
+ return distanceTolerance * (range.xLength() + range.yLength() + distanceTolerance);
212970
+ }
212892
212971
  /**
212893
212972
  * Return an xy area for a loop, parity region, or union region.
212894
212973
  * * If `rawMomentData` is the MomentData returned by computeXYAreaMoments, convert to principal axes and moments with
@@ -212908,7 +212987,7 @@ class RegionOps {
212908
212987
  * call `principalMomentData = MomentData.inertiaProductsToPrincipalAxes (rawMomentData.origin, rawMomentData.sums);`
212909
212988
  */
212910
212989
  static computeXYZWireMomentSums(root) {
212911
- const handler = new _CurveWireMomentsXYZ__WEBPACK_IMPORTED_MODULE_2__.CurveWireMomentsXYZ();
212990
+ const handler = new _CurveWireMomentsXYZ__WEBPACK_IMPORTED_MODULE_3__.CurveWireMomentsXYZ();
212912
212991
  handler.visitLeaves(root);
212913
212992
  const result = handler.momentData;
212914
212993
  result.shiftOriginAndSumsToCentroidOfSums();
@@ -212919,33 +212998,33 @@ class RegionOps {
212919
212998
  * @internal
212920
212999
  */
212921
213000
  static addLoopsToGraph(graph, data, announceIsolatedLoop) {
212922
- if (data instanceof _Loop__WEBPACK_IMPORTED_MODULE_3__.Loop) {
213001
+ if (data instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop) {
212923
213002
  const points = data.getPackedStrokes();
212924
213003
  if (points)
212925
213004
  this.addLoopsToGraph(graph, points, announceIsolatedLoop);
212926
213005
  }
212927
- else if (data instanceof _ParityRegion__WEBPACK_IMPORTED_MODULE_4__.ParityRegion) {
213006
+ else if (data instanceof _ParityRegion__WEBPACK_IMPORTED_MODULE_5__.ParityRegion) {
212928
213007
  for (const child of data.children) {
212929
213008
  const points = child.getPackedStrokes();
212930
213009
  if (points)
212931
213010
  this.addLoopsToGraph(graph, points, announceIsolatedLoop);
212932
213011
  }
212933
213012
  }
212934
- else if (data instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_5__.IndexedXYZCollection) {
212935
- const loopSeed = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_6__.Triangulator.directCreateFaceLoopFromCoordinates(graph, data);
213013
+ else if (data instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__.IndexedXYZCollection) {
213014
+ const loopSeed = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__.Triangulator.directCreateFaceLoopFromCoordinates(graph, data);
212936
213015
  if (loopSeed !== undefined)
212937
213016
  announceIsolatedLoop(graph, loopSeed);
212938
213017
  }
212939
213018
  else if (Array.isArray(data)) {
212940
213019
  if (data.length > 0) {
212941
- if (_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Point3d.isAnyImmediatePointType(data[0])) {
212942
- const loopSeed = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_6__.Triangulator.directCreateFaceLoopFromCoordinates(graph, data);
213020
+ if (_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_8__.Point3d.isAnyImmediatePointType(data[0])) {
213021
+ const loopSeed = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__.Triangulator.directCreateFaceLoopFromCoordinates(graph, data);
212943
213022
  if (loopSeed !== undefined)
212944
213023
  announceIsolatedLoop(graph, loopSeed);
212945
213024
  }
212946
- else if (data[0] instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_5__.IndexedXYZCollection) {
213025
+ else if (data[0] instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__.IndexedXYZCollection) {
212947
213026
  for (const loop of data) {
212948
- const loopSeed = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_6__.Triangulator.directCreateFaceLoopFromCoordinates(graph, loop);
213027
+ const loopSeed = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__.Triangulator.directCreateFaceLoopFromCoordinates(graph, loop);
212949
213028
  if (loopSeed !== undefined)
212950
213029
  announceIsolatedLoop(graph, loopSeed);
212951
213030
  }
@@ -212985,10 +213064,10 @@ class RegionOps {
212985
213064
  static finishGraphToPolyface(graph, triangulate) {
212986
213065
  if (graph) {
212987
213066
  if (triangulate) {
212988
- _topology_Triangulation__WEBPACK_IMPORTED_MODULE_6__.Triangulator.triangulateAllPositiveAreaFaces(graph);
212989
- _topology_Triangulation__WEBPACK_IMPORTED_MODULE_6__.Triangulator.flipTriangles(graph);
213067
+ _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__.Triangulator.triangulateAllPositiveAreaFaces(graph);
213068
+ _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__.Triangulator.flipTriangles(graph);
212990
213069
  }
212991
- return _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_8__.PolyfaceBuilder.graphToPolyface(graph);
213070
+ return _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_9__.PolyfaceBuilder.graphToPolyface(graph);
212992
213071
  }
212993
213072
  return undefined;
212994
213073
  }
@@ -213001,7 +213080,7 @@ class RegionOps {
213001
213080
  * @param loopsB second set of loops
213002
213081
  */
213003
213082
  static polygonXYAreaIntersectLoopsToPolyface(loopsA, loopsB, triangulate = false) {
213004
- const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionOpsFaceToFaceSearch.doPolygonBoolean(loopsA, loopsB, (inA, inB) => (inA && inB), this._graphCheckPointFunction);
213083
+ const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionOpsFaceToFaceSearch.doPolygonBoolean(loopsA, loopsB, (inA, inB) => (inA && inB), this._graphCheckPointFunction);
213005
213084
  return this.finishGraphToPolyface(graph, triangulate);
213006
213085
  }
213007
213086
  /**
@@ -213013,7 +213092,7 @@ class RegionOps {
213013
213092
  * @param loopsB second set of loops
213014
213093
  */
213015
213094
  static polygonXYAreaUnionLoopsToPolyface(loopsA, loopsB, triangulate = false) {
213016
- const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionOpsFaceToFaceSearch.doPolygonBoolean(loopsA, loopsB, (inA, inB) => (inA || inB), this._graphCheckPointFunction);
213095
+ const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionOpsFaceToFaceSearch.doPolygonBoolean(loopsA, loopsB, (inA, inB) => (inA || inB), this._graphCheckPointFunction);
213017
213096
  return this.finishGraphToPolyface(graph, triangulate);
213018
213097
  }
213019
213098
  /**
@@ -213025,7 +213104,7 @@ class RegionOps {
213025
213104
  * @param loopsB second set of loops
213026
213105
  */
213027
213106
  static polygonXYAreaDifferenceLoopsToPolyface(loopsA, loopsB, triangulate = false) {
213028
- const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionOpsFaceToFaceSearch.doPolygonBoolean(loopsA, loopsB, (inA, inB) => (inA && !inB), this._graphCheckPointFunction);
213107
+ const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionOpsFaceToFaceSearch.doPolygonBoolean(loopsA, loopsB, (inA, inB) => (inA && !inB), this._graphCheckPointFunction);
213029
213108
  return this.finishGraphToPolyface(graph, triangulate);
213030
213109
  }
213031
213110
  /**
@@ -213038,13 +213117,17 @@ class RegionOps {
213038
213117
  * @alpha
213039
213118
  */
213040
213119
  static regionBooleanXY(loopsA, loopsB, operation) {
213041
- // create and load a context . . .
213042
- const result = _UnionRegion__WEBPACK_IMPORTED_MODULE_10__.UnionRegion.create();
213043
- const context = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionBooleanContext.create(_RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionGroupOpType.Union, _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionGroupOpType.Union);
213120
+ const result = _UnionRegion__WEBPACK_IMPORTED_MODULE_11__.UnionRegion.create();
213121
+ const context = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionBooleanContext.create(_RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionGroupOpType.Union, _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionGroupOpType.Union);
213044
213122
  context.addMembers(loopsA, loopsB);
213045
213123
  context.annotateAndMergeCurvesInGraph();
213124
+ const range = context.groupA.range().union(context.groupB.range());
213125
+ const areaTol = this.computeXYAreaTolerance(range);
213046
213126
  context.runClassificationSweep(operation, (_graph, face, faceType, area) => {
213047
- if (face.countEdgesAroundFace() < 3 && _Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.isSameCoordinate(area, 0)) // NEED BETTER TOLERANCE
213127
+ // ignore danglers and null faces, but not 2-edge "banana" faces with nonzero area
213128
+ if (face.countEdgesAroundFace() < 2)
213129
+ return;
213130
+ if (Math.abs(area) < areaTol)
213048
213131
  return;
213049
213132
  if (faceType === 1) {
213050
213133
  const loop = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.createLoopInFace(face);
@@ -213065,7 +213148,7 @@ class RegionOps {
213065
213148
  * @param loopsB second set of loops
213066
213149
  */
213067
213150
  static polygonBooleanXYToPolyface(inputA, operation, inputB, triangulate = false) {
213068
- const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionOpsFaceToFaceSearch.doBinaryBooleanBetweenMultiLoopInputs(inputA, _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionGroupOpType.Union, operation, inputB, _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionGroupOpType.Union, true);
213151
+ const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionOpsFaceToFaceSearch.doBinaryBooleanBetweenMultiLoopInputs(inputA, _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionGroupOpType.Union, operation, inputB, _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionGroupOpType.Union, true);
213069
213152
  return this.finishGraphToPolyface(graph, triangulate);
213070
213153
  }
213071
213154
  /**
@@ -213079,7 +213162,7 @@ class RegionOps {
213079
213162
  * @param loopsB second set of loops
213080
213163
  */
213081
213164
  static polygonBooleanXYToLoops(inputA, operation, inputB) {
213082
- const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionOpsFaceToFaceSearch.doBinaryBooleanBetweenMultiLoopInputs(inputA, _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionGroupOpType.Union, operation, inputB, _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionGroupOpType.Union, true);
213165
+ const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionOpsFaceToFaceSearch.doBinaryBooleanBetweenMultiLoopInputs(inputA, _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionGroupOpType.Union, operation, inputB, _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionGroupOpType.Union, true);
213083
213166
  if (!graph)
213084
213167
  return undefined;
213085
213168
  const loopEdges = _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_13__.HalfEdgeGraphSearch.collectExtendedBoundaryLoopsInGraph(graph, _topology_Graph__WEBPACK_IMPORTED_MODULE_14__.HalfEdgeMask.EXTERIOR);
@@ -213089,7 +213172,7 @@ class RegionOps {
213089
213172
  for (const edge of graphLoop)
213090
213173
  points.pushXYZ(edge.x, edge.y, edge.z);
213091
213174
  points.pushWrap(1);
213092
- const loop = _Loop__WEBPACK_IMPORTED_MODULE_3__.Loop.create();
213175
+ const loop = _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.create();
213093
213176
  loop.tryAddChild(_LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d.createCapture(points));
213094
213177
  allLoops.push(loop);
213095
213178
  }
@@ -213147,12 +213230,12 @@ class RegionOps {
213147
213230
  let maxGap = 0.0;
213148
213231
  let isPath = false;
213149
213232
  if (wrap)
213150
- maxGap = _Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.maxXY(maxGap, curves[0].startPoint().distance(curves[n - 1].endPoint()));
213233
+ maxGap = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.maxXY(maxGap, curves[0].startPoint().distance(curves[n - 1].endPoint()));
213151
213234
  for (let i = 0; i + 1 < n; i++)
213152
- maxGap = _Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.maxXY(maxGap, curves[i].endPoint().distance(curves[i + 1].startPoint()));
213235
+ maxGap = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.maxXY(maxGap, curves[i].endPoint().distance(curves[i + 1].startPoint()));
213153
213236
  let collection;
213154
- if (_Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.isSmallMetricDistance(maxGap)) {
213155
- collection = wrap ? _Loop__WEBPACK_IMPORTED_MODULE_3__.Loop.create() : _Path__WEBPACK_IMPORTED_MODULE_19__.Path.create();
213237
+ if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(maxGap)) {
213238
+ collection = wrap ? _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.create() : _Path__WEBPACK_IMPORTED_MODULE_19__.Path.create();
213156
213239
  isPath = true;
213157
213240
  }
213158
213241
  else {
@@ -213215,7 +213298,7 @@ class RegionOps {
213215
213298
  * @param fragments fragments to be chained
213216
213299
  * @param offsetDistance offset distance.
213217
213300
  */
213218
- static collectChains(fragments, gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.smallMetricDistance) {
213301
+ static collectChains(fragments, gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
213219
213302
  return _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__.OffsetHelpers.collectChains(fragments, gapTolerance);
213220
213303
  }
213221
213304
  /**
@@ -213267,10 +213350,10 @@ class RegionOps {
213267
213350
  if (data instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
213268
213351
  return this.rectangleEdgeTransform(data.packedPoints);
213269
213352
  }
213270
- else if (data instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_5__.IndexedXYZCollection) {
213353
+ else if (data instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__.IndexedXYZCollection) {
213271
213354
  let dataToUse;
213272
213355
  if (requireClosurePoint && data.length === 5) {
213273
- if (!_Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.isSmallMetricDistance(data.distanceIndexIndex(0, 4)))
213356
+ if (!_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(data.distanceIndexIndex(0, 4)))
213274
213357
  return undefined;
213275
213358
  dataToUse = data;
213276
213359
  }
@@ -213281,7 +213364,7 @@ class RegionOps {
213281
213364
  }
213282
213365
  else {
213283
213366
  dataToUse = _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__.GrowableXYZArray.create(data);
213284
- _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_25__.PolylineCompressionContext.compressInPlaceByShortEdgeLength(dataToUse, _Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.smallMetricDistance);
213367
+ _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_25__.PolylineCompressionContext.compressInPlaceByShortEdgeLength(dataToUse, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance);
213285
213368
  }
213286
213369
  const vector01 = dataToUse.vectorIndexIndex(0, 1);
213287
213370
  const vector03 = dataToUse.vectorIndexIndex(0, 3);
@@ -213296,7 +213379,7 @@ class RegionOps {
213296
213379
  else if (Array.isArray(data)) {
213297
213380
  return this.rectangleEdgeTransform(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_27__.Point3dArrayCarrier(data), requireClosurePoint);
213298
213381
  }
213299
- else if (data instanceof _Loop__WEBPACK_IMPORTED_MODULE_3__.Loop && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
213382
+ else if (data instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
213300
213383
  return this.rectangleEdgeTransform(data.children[0].packedPoints, true);
213301
213384
  }
213302
213385
  else if (data instanceof _Path__WEBPACK_IMPORTED_MODULE_19__.Path && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
@@ -213342,10 +213425,10 @@ class RegionOps {
213342
213425
  static sortOuterAndHoleLoopsXY(loops) {
213343
213426
  const loopAndArea = [];
213344
213427
  for (const candidate of loops) {
213345
- if (candidate instanceof _Loop__WEBPACK_IMPORTED_MODULE_3__.Loop)
213428
+ if (candidate instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop)
213346
213429
  _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__.SortablePolygon.pushLoop(loopAndArea, candidate);
213347
- else if (candidate instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_5__.IndexedXYZCollection) {
213348
- const loop = _Loop__WEBPACK_IMPORTED_MODULE_3__.Loop.createPolygon(candidate);
213430
+ else if (candidate instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__.IndexedXYZCollection) {
213431
+ const loop = _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(candidate);
213349
213432
  _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__.SortablePolygon.pushLoop(loopAndArea, loop);
213350
213433
  }
213351
213434
  }
@@ -213371,9 +213454,10 @@ class RegionOps {
213371
213454
  const primitivesA = RegionOps.collectCurvePrimitives(curvesAndRegions, undefined, true);
213372
213455
  const primitivesB = this.expandLineStrings(primitivesA);
213373
213456
  const range = this.curveArrayRange(primitivesB);
213457
+ const areaTol = this.computeXYAreaTolerance(range);
213374
213458
  const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_30__.CurveCurve.allIntersectionsAmongPrimitivesXY(primitivesB);
213375
213459
  const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.assembleHalfEdgeGraph(primitivesB, intersections);
213376
- return _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.collectSignedLoopSetsInHalfEdgeGraph(graph, 1.0e-12 * range.xLength() * range.yLength());
213460
+ return _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.collectSignedLoopSetsInHalfEdgeGraph(graph, areaTol);
213377
213461
  }
213378
213462
  /**
213379
213463
  * collect all `CurvePrimitives` in loosely typed input.
@@ -213432,7 +213516,7 @@ class RegionOps {
213432
213516
  for (const c of data) {
213433
213517
  if (c instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__.GeometryQuery)
213434
213518
  c.extendRange(range, worldToLocal);
213435
- else if (c instanceof _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Point3d)
213519
+ else if (c instanceof _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_8__.Point3d)
213436
213520
  range.extendPoint(c, worldToLocal);
213437
213521
  else if (c instanceof _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__.GrowableXYZArray)
213438
213522
  range.extendRange(c.getRange(worldToLocal));
@@ -213478,17 +213562,18 @@ __webpack_require__.r(__webpack_exports__);
213478
213562
  /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
213479
213563
  /* harmony import */ var _ParityRegion__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
213480
213564
  /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
213481
- /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
213482
- /* harmony import */ var _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Query/PlanarSubdivision */ "../../core/geometry/lib/esm/curve/Query/PlanarSubdivision.js");
213565
+ /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
213566
+ /* harmony import */ var _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Query/PlanarSubdivision */ "../../core/geometry/lib/esm/curve/Query/PlanarSubdivision.js");
213483
213567
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
213484
213568
  /* harmony import */ var _UnionRegion__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
213485
- /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
213569
+ /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
213486
213570
  /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
213487
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
213571
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
213488
213572
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
213489
213573
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
213490
213574
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
213491
213575
  /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
213576
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
213492
213577
  /*---------------------------------------------------------------------------------------------
213493
213578
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
213494
213579
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -213514,6 +213599,7 @@ __webpack_require__.r(__webpack_exports__);
213514
213599
 
213515
213600
 
213516
213601
 
213602
+
213517
213603
  /**
213518
213604
  * base class for callbacks during region sweeps.
213519
213605
  * * At start of a component, `startComponent(node)` is called announcing a representative node on the outermost face.
@@ -213543,10 +213629,10 @@ class RegionOpsFaceToFaceSearchCallbacks {
213543
213629
  * Implementation of `RegionOpsFaceToFaceSearchCallbacks` for binary boolean sweep with polygonal regions.
213544
213630
  * * For this linear-boundary case the boundary geometry is carried entirely from the coordinates in the half edges.
213545
213631
  * * This assumes the each node in the graph has edgeTag set to:
213546
- * * `edgeTag === undefined` if the edge crossing the edge does not change classification.
213632
+ * * `edgeTag === undefined` if the edge crossing does not change classification.
213547
213633
  * * for example, an edge added by regularization
213548
213634
  * * `edgeTag === 1` if this is a boundary for the first of the boolean input regions
213549
- * * `edgeTag === 2` if this is a boundary for the first of the boolean input regions
213635
+ * * `edgeTag === 2` if this is a boundary for the second of the boolean input regions
213550
213636
  * * constructor
213551
213637
  * * takes caller-supplied function to decide whether to accept a face given its state relative to the two boolean terms.
213552
213638
  * * sets the in/out status of both terms to false.
@@ -213865,7 +213951,7 @@ class RegionGroup {
213865
213951
  }
213866
213952
  /**
213867
213953
  * A `RegionBooleanContext` carries structure and operations for binary operations between two sets of regions.
213868
- * * In the binary operation (union, intersection, parity, difference), the left and right operands
213954
+ * * In the binary operation OP (union, intersection, parity, difference), the left and right operands
213869
213955
  * are each a composite union, difference, or parity among multiple inputs, i.e.
213870
213956
  * * (operationA among Ai) OP (operationB among Bi)
213871
213957
  * * where the Ai are one set of regions, being combined by operationA
@@ -213911,45 +213997,54 @@ class RegionBooleanContext {
213911
213997
  /**
213912
213998
  * The sweep operations require access to all geometry by edge crossings and face walk.
213913
213999
  * If input loops are non-overlapping, there may be disconnected islands not reachable.
213914
- * This method
214000
+ * This method:
213915
214001
  * * finds the total range
213916
- * * for each loop, create a horizontal line from a far-to-the-right point to beyond the overall range.
213917
- * * places those lines in the extraGeometry group.
214002
+ * * creates parallel rays from the extreme point of each loop and extending beyond the overall range
214003
+ * * places those lines in the extraGeometry group
213918
214004
  */
213919
214005
  addConnectives() {
213920
214006
  const rangeA = this.groupA.range();
213921
214007
  const rangeB = this.groupB.range();
213922
214008
  const rangeAB = rangeA.union(rangeB);
213923
- const maxXPoints = [];
213924
- const direction = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_12__.Vector3d.unitX();
214009
+ const areaTol = _RegionOps__WEBPACK_IMPORTED_MODULE_1__.RegionOps.computeXYAreaTolerance(rangeAB);
214010
+ const direction = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_12__.Vector3d.create(1.0, -0.12328974132467);
214011
+ let margin = 0.1;
214012
+ this._workSegment = _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_13__.PlaneAltitudeRangeContext.findExtremePointsInDirection(rangeAB.corners(), direction, this._workSegment);
214013
+ if (this._workSegment)
214014
+ margin *= this._workSegment.point0Ref.distanceXY(this._workSegment.point1Ref); // how much further to extend each bridge ray
214015
+ const maxPoints = [];
214016
+ const findExtremePointsInLoop = (region) => {
214017
+ const area = _RegionOps__WEBPACK_IMPORTED_MODULE_1__.RegionOps.computeXYArea(region);
214018
+ if (area === undefined || Math.abs(area) < areaTol)
214019
+ return; // avoid bridging trivial faces
214020
+ this._workSegment = _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_13__.PlaneAltitudeRangeContext.findExtremePointsInDirection(region, direction, this._workSegment);
214021
+ if (this._workSegment)
214022
+ maxPoints.push(this._workSegment.point1Ref);
214023
+ };
213925
214024
  for (const groupMembers of [this.groupA.members, this.groupB.members]) {
213926
214025
  for (const m of groupMembers) {
213927
214026
  if (m.region instanceof _Loop__WEBPACK_IMPORTED_MODULE_8__.Loop) {
213928
- const lowHigh = _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_13__.PlaneAltitudeRangeContext.findExtremePointsInDirection(m.region, direction);
213929
- if (lowHigh && lowHigh.length === 2)
213930
- maxXPoints.push(lowHigh[1]);
214027
+ findExtremePointsInLoop(m.region);
213931
214028
  }
213932
214029
  else if (m.region instanceof _ParityRegion__WEBPACK_IMPORTED_MODULE_9__.ParityRegion) {
213933
- for (const loop of m.region.children) {
213934
- const lowHigh = _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_13__.PlaneAltitudeRangeContext.findExtremePointsInDirection(loop, direction);
213935
- if (lowHigh && lowHigh.length === 2)
213936
- maxXPoints.push(lowHigh[1]);
213937
- }
214030
+ for (const loop of m.region.children)
214031
+ findExtremePointsInLoop(loop);
213938
214032
  }
213939
214033
  }
213940
214034
  }
213941
- const xOut = _Geometry__WEBPACK_IMPORTED_MODULE_7__.Geometry.interpolate(rangeAB.low.x, 1.5, rangeAB.high.x);
213942
- const xShift = 0;
213943
- const yShift = -0.12328974132467 * rangeAB.yLength();
213944
- for (const p of maxXPoints) {
213945
- // Make a line from . .
213946
- // 1) exactly the max point of the loops to
213947
- // 2) a point clearly outside the big range, with y shifted down a bit.
213948
- // if p came from some inner loop this will . . ..
213949
- // 1 create a bridge from the inner loop through any containing loops (always)
213950
- // 2) avoid crossing any containing loop at a vertex. (with high probability, but not absolutely always)
213951
- const line = _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d.createXYXY(p.x - xShift, p.y, xOut, p.y + yShift);
213952
- this.extraGeometry.addMember(line, true);
214035
+ const ray = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_14__.Ray3d.createZero();
214036
+ direction.normalizeInPlace();
214037
+ for (const p of maxPoints) {
214038
+ // Make a line from...
214039
+ // 1) exactly the max point of the loops to
214040
+ // 2) a point clearly outside the big range
214041
+ // If p came from some inner loop this will...
214042
+ // 1) create a bridge from the inner loop through any containing loops (always)
214043
+ // 2) avoid crossing any containing loop at a vertex. (with high probability, but not absolutely always)
214044
+ const bridgeLength = margin + _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_14__.Ray3d.create(p, direction, ray).intersectionWithRange3d(rangeAB).high;
214045
+ const outside = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_12__.Point3d.createAdd2Scaled(p, 1.0, direction, bridgeLength);
214046
+ const bridgeLine = _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d.createXYXY(p.x, p.y, outside.x, outside.y);
214047
+ this.extraGeometry.addMember(bridgeLine, true);
213953
214048
  }
213954
214049
  }
213955
214050
  /**
@@ -213973,8 +214068,8 @@ class RegionBooleanContext {
213973
214068
  }
213974
214069
  }
213975
214070
  // const range = RegionOps.curveArrayRange(allPrimitives);
213976
- const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_14__.CurveCurve.allIntersectionsAmongPrimitivesXY(allPrimitives);
213977
- const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_15__.PlanarSubdivision.assembleHalfEdgeGraph(allPrimitives, intersections);
214071
+ const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_15__.CurveCurve.allIntersectionsAmongPrimitivesXY(allPrimitives);
214072
+ const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_16__.PlanarSubdivision.assembleHalfEdgeGraph(allPrimitives, intersections);
213978
214073
  this.graph = graph;
213979
214074
  this.faceAreaFunction = faceAreaFromCurvedEdgeData;
213980
214075
  }
@@ -214051,26 +214146,24 @@ class RegionBooleanContext {
214051
214146
  * @param delta
214052
214147
  */
214053
214148
  recordTransitionAcrossEdge(node, delta) {
214054
- const data = node.edgeTag;
214055
- if (data instanceof RegionGroupMember) {
214149
+ const updateRegionGroupMemberState = (member) => {
214150
+ if (member.parentGroup.groupOpType === RegionGroupOpType.NonBounding)
214151
+ return member; // no transition across a bridge edge
214056
214152
  if (delta !== 0) {
214057
- const oldSweepState = data.sweepState;
214058
- data.sweepState += delta;
214059
- data.parentGroup.recordMemberStateChange(oldSweepState, data.sweepState);
214153
+ const oldSweepState = member.sweepState;
214154
+ member.sweepState += delta;
214155
+ member.parentGroup.recordMemberStateChange(oldSweepState, member.sweepState);
214060
214156
  }
214061
- return data;
214062
- }
214063
- else if (data instanceof _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_16__.CurveLocationDetail) {
214157
+ return member;
214158
+ };
214159
+ const data = node.edgeTag;
214160
+ if (data instanceof RegionGroupMember)
214161
+ return updateRegionGroupMemberState(data);
214162
+ if (data instanceof _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_17__.CurveLocationDetail) {
214064
214163
  // We trust that the caller has linked from the graph node to a curve which has a RegionGroupMember as its parent.
214065
214164
  const member = data.curve.parent;
214066
- if (member instanceof RegionGroupMember) {
214067
- if (delta !== 0) {
214068
- const oldSweepState = member.sweepState;
214069
- member.sweepState += delta;
214070
- member.parentGroup.recordMemberStateChange(oldSweepState, member.sweepState);
214071
- }
214072
- return member;
214073
- }
214165
+ if (member instanceof RegionGroupMember)
214166
+ return updateRegionGroupMemberState(member);
214074
214167
  }
214075
214168
  return undefined;
214076
214169
  }
@@ -214088,8 +214181,9 @@ class RegionBooleanContext {
214088
214181
  }
214089
214182
  /** Announce entry to a graph face.
214090
214183
  * * Both both sides of a graph edge are from the same RegionGroupMember.
214091
- * * Hence "crossing that edge" jumps from changes the parity count for the RegionGroupMember that owns that edge by 1.
214184
+ * * Hence "crossing that edge" changes the parity count for the RegionGroupMember that owns that edge by 1.
214092
214185
  * * The parity count for other RegionGroupMembers are never affected by this crossing.
214186
+ * * Crossing a bridge edge does not change the parity count.
214093
214187
  */
214094
214188
  enterFace(_facePathStack, newFaceNode) {
214095
214189
  this.recordTransitionAcrossEdge(newFaceNode, 1);
@@ -214101,8 +214195,8 @@ class RegionBooleanContext {
214101
214195
  return true;
214102
214196
  }
214103
214197
  /** Announce face exit */
214104
- leaveFace(_facePathStack, _oldFaceNode) {
214105
- this.recordTransitionAcrossEdge(_oldFaceNode, -1);
214198
+ leaveFace(_facePathStack, oldFaceNode) {
214199
+ this.recordTransitionAcrossEdge(oldFaceNode, -1);
214106
214200
  return true;
214107
214201
  }
214108
214202
  }
@@ -214123,7 +214217,7 @@ function areaUnderPartialCurveXY(detail, xyStart, xyEnd, referencePoint) {
214123
214217
  if (detail.curve instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
214124
214218
  // ah .. nothing to do for a line segment
214125
214219
  }
214126
- else if (detail.curve instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_17__.Arc3d) {
214220
+ else if (detail.curve instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_18__.Arc3d) {
214127
214221
  areaToChord = detail.curve.areaToChordXY(detail.fraction, detail.fraction1);
214128
214222
  }
214129
214223
  }
@@ -215729,18 +215823,25 @@ __webpack_require__.r(__webpack_exports__);
215729
215823
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
215730
215824
  /* harmony export */ "PlaneAltitudeRangeContext": () => (/* binding */ PlaneAltitudeRangeContext)
215731
215825
  /* harmony export */ });
215826
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
215732
215827
  /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
215733
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
215828
+ /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
215829
+ /* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
215734
215830
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
215831
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
215832
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
215833
+ /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
215834
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
215735
215835
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
215736
- /* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
215737
215836
  /*---------------------------------------------------------------------------------------------
215738
215837
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
215739
215838
  * See LICENSE.md in the project root for license terms and full copyright notice.
215740
215839
  *--------------------------------------------------------------------------------------------*/
215741
- /** @packageDocumentation
215742
- * @module Curve
215743
- */
215840
+
215841
+
215842
+
215843
+
215844
+
215744
215845
 
215745
215846
 
215746
215847
 
@@ -215810,13 +215911,65 @@ class PlaneAltitudeRangeContext extends _geometry3d_GeometryHandler__WEBPACK_IMP
215810
215911
  this.announcePoint((this._workPoint = g.startPoint(this._workPoint)));
215811
215912
  this.announcePoint((this._workPoint = g.endPoint(this._workPoint)));
215812
215913
  }
215813
- static findExtremePointsInDirection(geometry, direction) {
215814
- const plane = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_3__.Plane3dByOriginAndUnitNormal.create(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__.Point3d.create(0, 0, 0), direction);
215914
+ static findExtremesInDirection(geometry, direction) {
215915
+ const origin = direction instanceof _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_3__.Ray3d ? direction.origin : _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__.Point3d.createZero();
215916
+ const vector = direction instanceof _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_3__.Ray3d ? direction.direction : direction;
215917
+ const plane = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(origin, vector); // vector is normalized, so altitudes are distances
215815
215918
  if (plane) {
215816
215919
  const context = new PlaneAltitudeRangeContext(plane);
215817
- geometry.dispatchToGeometryHandler(context);
215818
- if (context.highPoint && context.lowPoint)
215819
- return [context.lowPoint, context.highPoint];
215920
+ if (geometry instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_6__.GeometryQuery) {
215921
+ geometry.dispatchToGeometryHandler(context);
215922
+ }
215923
+ else if (geometry instanceof _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_7__.GrowableXYZArray) {
215924
+ context.announcePoints(geometry);
215925
+ }
215926
+ else {
215927
+ for (const pt of geometry)
215928
+ context.announcePoint(pt);
215929
+ }
215930
+ return context;
215931
+ }
215932
+ return undefined;
215933
+ }
215934
+ /** Compute altitudes for the geometry (via dispatch) over the plane defined by the given direction,
215935
+ * and return points at min and max altitude, packed into a `LineSegment3d`.
215936
+ * @param geometry geometry to project
215937
+ * @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with zero origin.
215938
+ * @param lowHigh optional receiver for output
215939
+ */
215940
+ static findExtremePointsInDirection(geometry, direction, lowHigh) {
215941
+ const context = this.findExtremesInDirection(geometry, direction);
215942
+ if (context && context.highPoint && context.lowPoint)
215943
+ return _LineSegment3d__WEBPACK_IMPORTED_MODULE_8__.LineSegment3d.create(context.lowPoint, context.highPoint, lowHigh);
215944
+ return undefined;
215945
+ }
215946
+ /** Compute altitudes for the geometry (via dispatch) over the plane defined by the given direction,
215947
+ * and return the min and max altitudes, packed into a Range1d.
215948
+ * @param geometry geometry to project
215949
+ * @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with zero origin.
215950
+ * @param lowHigh optional receiver for output
215951
+ */
215952
+ static findExtremeAltitudesInDirection(geometry, direction, lowHigh) {
215953
+ const context = this.findExtremesInDirection(geometry, direction);
215954
+ if (context && !context.range.isNull)
215955
+ return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_1__.Range1d.createFrom(context.range, lowHigh);
215956
+ return undefined;
215957
+ }
215958
+ /** Project geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
215959
+ * @param geometry geometry to project
215960
+ * @param direction vector or ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
215961
+ * @param lowHigh optional receiver for output
215962
+ */
215963
+ static findExtremeFractionsAlongDirection(geometry, direction, lowHigh) {
215964
+ const range = this.findExtremeAltitudesInDirection(geometry, direction, lowHigh);
215965
+ if (undefined !== range) {
215966
+ const mag = (direction instanceof _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__.Vector3d) ? direction.magnitude() : direction.direction.magnitude();
215967
+ const scaleToFraction = _Geometry__WEBPACK_IMPORTED_MODULE_9__.Geometry.conditionalDivideCoordinate(1.0, mag);
215968
+ if (undefined !== scaleToFraction) {
215969
+ range.low *= scaleToFraction;
215970
+ range.high *= scaleToFraction;
215971
+ return range;
215972
+ }
215820
215973
  }
215821
215974
  return undefined;
215822
215975
  }
@@ -218858,13 +219011,14 @@ __webpack_require__.r(__webpack_exports__);
218858
219011
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
218859
219012
  /* harmony export */ "TransitionSpiral3d": () => (/* binding */ TransitionSpiral3d)
218860
219013
  /* harmony export */ });
218861
- /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
219014
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
219015
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
218862
219016
  /* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
218863
219017
  /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
218864
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
219018
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
218865
219019
  /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
219020
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
218866
219021
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
218867
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
218868
219022
  /*---------------------------------------------------------------------------------------------
218869
219023
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
218870
219024
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -218879,6 +219033,7 @@ __webpack_require__.r(__webpack_exports__);
218879
219033
 
218880
219034
 
218881
219035
 
219036
+
218882
219037
  /**
218883
219038
  * TransitionSpiral3d is a base class for multiple variants of spirals.
218884
219039
  * * The menagerie of spiral types have 2 broad categories:
@@ -219015,6 +219170,14 @@ class TransitionSpiral3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.Cu
219015
219170
  count = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.clamp(5, count, 30);
219016
219171
  return this.rangeBetweenFractionsByCount(fractionA, fractionB, count, transform, 0.5);
219017
219172
  }
219173
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
219174
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
219175
+ * @param lowHigh optional receiver for output
219176
+ * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.
219177
+ */
219178
+ projectedParameterRange(ray, lowHigh) {
219179
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_7__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
219180
+ }
219018
219181
  }
219019
219182
 
219020
219183
 
@@ -234344,7 +234507,7 @@ class Range2d extends RangeBase {
234344
234507
  yLength() { const a = this.high.y - this.low.y; return a > 0.0 ? a : 0.0; }
234345
234508
  /** return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very large negative coordinates. */
234346
234509
  diagonal(result) { return this.low.vectorTo(this.high, result); }
234347
- /** return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very large negative coordinates. */
234510
+ /** return the point at the specified fraction along the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very large negative coordinates. */
234348
234511
  diagonalFractionToPoint(fraction, result) { return this.low.interpolate(fraction, this.high, result); }
234349
234512
  /** return a point given by fractional positions on the XY axes. This is done with no check for isNull !!! */
234350
234513
  fractionToPoint(fractionX, fractionY, result) {
@@ -268054,16 +268217,17 @@ __webpack_require__.r(__webpack_exports__);
268054
268217
  /* harmony export */ "HalfEdgeGraphOps": () => (/* binding */ HalfEdgeGraphOps),
268055
268218
  /* harmony export */ "VertexNeighborhoodSortData": () => (/* binding */ VertexNeighborhoodSortData)
268056
268219
  /* harmony export */ });
268220
+ /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
268057
268221
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
268058
268222
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
268059
- /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
268223
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
268060
268224
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
268061
268225
  /* harmony import */ var _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../numerics/ClusterableArray */ "../../core/geometry/lib/esm/numerics/ClusterableArray.js");
268062
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
268226
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
268063
268227
  /* harmony import */ var _Graph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
268064
- /* harmony import */ var _HalfEdgePriorityQueue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./HalfEdgePriorityQueue */ "../../core/geometry/lib/esm/topology/HalfEdgePriorityQueue.js");
268065
- /* harmony import */ var _RegularizeFace__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./RegularizeFace */ "../../core/geometry/lib/esm/topology/RegularizeFace.js");
268066
- /* harmony import */ var _Triangulation__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
268228
+ /* harmony import */ var _HalfEdgePriorityQueue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./HalfEdgePriorityQueue */ "../../core/geometry/lib/esm/topology/HalfEdgePriorityQueue.js");
268229
+ /* harmony import */ var _RegularizeFace__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RegularizeFace */ "../../core/geometry/lib/esm/topology/RegularizeFace.js");
268230
+ /* harmony import */ var _Triangulation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
268067
268231
  /*---------------------------------------------------------------------------------------------
268068
268232
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
268069
268233
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -268078,6 +268242,7 @@ __webpack_require__.r(__webpack_exports__);
268078
268242
 
268079
268243
 
268080
268244
 
268245
+
268081
268246
  class GraphSplitData {
268082
268247
  constructor() {
268083
268248
  this.numUpEdge = 0;
@@ -268411,7 +268576,14 @@ class HalfEdgeGraphMerge {
268411
268576
  if (clusterTableIndex !== _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_4__.ClusterableArray.clusterTerminator) {
268412
268577
  const nodeA = allNodes[clusterTableIndex];
268413
268578
  const nodeB = nodeA.faceSuccessor;
268414
- let radians = outboundRadiansFunction ? outboundRadiansFunction(nodeA) : Math.atan2(nodeB.y - nodeA.y, nodeB.x - nodeA.x);
268579
+ let getPrecomputedRadians = outboundRadiansFunction;
268580
+ if (getPrecomputedRadians) {
268581
+ // Recompute theta when edge geometry is completely determined by the vertices, which may have been perturbed by clustering.
268582
+ const detail = nodeA.edgeTag;
268583
+ if (undefined === detail || undefined === detail.curve || detail.curve instanceof _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d)
268584
+ getPrecomputedRadians = undefined;
268585
+ }
268586
+ let radians = getPrecomputedRadians ? getPrecomputedRadians(nodeA) : Math.atan2(nodeB.y - nodeA.y, nodeB.x - nodeA.x);
268415
268587
  if (_geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.isAlmostEqualRadiansAllowPeriodShift(radians, -Math.PI))
268416
268588
  radians = Math.PI;
268417
268589
  clusters.setExtraData(clusterTableIndex, 0, radians);
@@ -268491,7 +268663,7 @@ class HalfEdgeGraphMerge {
268491
268663
  }
268492
268664
  }
268493
268665
  static buildVerticalSweepPriorityQueue(graph) {
268494
- const sweepHeap = new _HalfEdgePriorityQueue__WEBPACK_IMPORTED_MODULE_5__.HalfEdgePriorityQueueWithPartnerArray();
268666
+ const sweepHeap = new _HalfEdgePriorityQueue__WEBPACK_IMPORTED_MODULE_6__.HalfEdgePriorityQueueWithPartnerArray();
268495
268667
  for (const p of graph.allHalfEdges) {
268496
268668
  if (HalfEdgeGraphOps.compareNodesYXUp(p, p.faceSuccessor) < 0) {
268497
268669
  sweepHeap.priorityQueue.push(p);
@@ -268516,7 +268688,7 @@ class HalfEdgeGraphMerge {
268516
268688
  const vx = nodeB1.x - bx0;
268517
268689
  const vy = nodeB1.y - by0;
268518
268690
  // cspell:word lineSegmentXYUVTransverseIntersectionUnbounded
268519
- if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegmentXYUVTransverseIntersectionUnbounded(ax0, ay0, ux, uy, bx0, by0, vx, vy, fractions)) {
268691
+ if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegmentXYUVTransverseIntersectionUnbounded(ax0, ay0, ux, uy, bx0, by0, vx, vy, fractions)) {
268520
268692
  pointA.x = ax0 + fractions.x * ux;
268521
268693
  pointA.y = ay0 + fractions.x * uy;
268522
268694
  pointB.x = bx0 + fractions.y * vx;
@@ -268541,9 +268713,9 @@ class HalfEdgeGraphMerge {
268541
268713
  const smallFraction = 1.0e-8;
268542
268714
  const largeFraction = 1.0 - smallFraction;
268543
268715
  let i;
268544
- const fractions = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__.Vector2d.create();
268545
- const pointA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__.Point2d.create();
268546
- const pointB = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__.Point2d.create();
268716
+ const fractions = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_8__.Vector2d.create();
268717
+ const pointA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_8__.Point2d.create();
268718
+ const pointB = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_8__.Point2d.create();
268547
268719
  let nodeB0;
268548
268720
  const popTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
268549
268721
  while (undefined !== (nodeA0 = sweepHeap.priorityQueue.pop())) {
@@ -268608,13 +268780,13 @@ class HalfEdgeGraphMerge {
268608
268780
  if (chains.length < 1)
268609
268781
  return undefined;
268610
268782
  const graph = new _Graph__WEBPACK_IMPORTED_MODULE_2__.HalfEdgeGraph();
268611
- const chainSeeds = _Triangulation__WEBPACK_IMPORTED_MODULE_8__.Triangulator.directCreateChainsFromCoordinates(graph, chains);
268783
+ const chainSeeds = _Triangulation__WEBPACK_IMPORTED_MODULE_9__.Triangulator.directCreateChainsFromCoordinates(graph, chains);
268612
268784
  for (const seed of chainSeeds)
268613
268785
  seed.setMaskAroundFace(mask);
268614
268786
  this.splitIntersectingEdges(graph);
268615
268787
  this.clusterAndMergeXYTheta(graph);
268616
268788
  if (regularize) {
268617
- const context = new _RegularizeFace__WEBPACK_IMPORTED_MODULE_9__.RegularizationContext(graph);
268789
+ const context = new _RegularizeFace__WEBPACK_IMPORTED_MODULE_10__.RegularizationContext(graph);
268618
268790
  context.regularizeGraph(true, true);
268619
268791
  }
268620
268792
  return graph;
@@ -291787,7 +291959,7 @@ class TestContext {
291787
291959
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
291788
291960
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${(_a = process.env.IMJS_URL_PREFIX) !== null && _a !== void 0 ? _a : ""}api.bentley.com/imodels` } });
291789
291961
  await core_frontend_1.NoRenderApp.startup({
291790
- applicationVersion: "3.5.0-dev.49",
291962
+ applicationVersion: "3.5.0-dev.51",
291791
291963
  applicationId: this.settings.gprid,
291792
291964
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
291793
291965
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -310856,7 +311028,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
310856
311028
  /***/ ((module) => {
310857
311029
 
310858
311030
  "use strict";
310859
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"3.5.0-dev.49","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","build:ci":"npm run -s build && npm run -s build:esm","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","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/primitives,**/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-eslintrc -c \\"../../tools/eslint-plugin/dist/configs/extension-exports-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"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core/tree/master/core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^3.5.0-dev.49","@itwin/core-bentley":"workspace:^3.5.0-dev.49","@itwin/core-common":"workspace:^3.5.0-dev.49","@itwin/core-geometry":"workspace:^3.5.0-dev.49","@itwin/core-orbitgt":"workspace:^3.5.0-dev.49","@itwin/core-quantity":"workspace:^3.5.0-dev.49","@itwin/webgl-compatibility":"workspace:^3.5.0-dev.49"},"//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":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/deep-assign":"^0.1.0","@types/lodash":"^4.14.0","@types/mocha":"^8.2.2","@types/node":"18.11.5","@types/qs":"^6.5.0","@types/semver":"7.3.10","@types/superagent":"^4.1.14","@types/sinon":"^9.0.0","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^7.11.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^9.0.2","source-map-loader":"^4.0.0","typescript":"~4.4.0","webpack":"^5.64.4"},"//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/object-storage-azure":"~1.4.0","@itwin/cloud-agnostic-core":"~1.4.0","@itwin/object-storage-core":"~1.4.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","deep-assign":"^2.0.0","fuse.js":"^3.3.0","lodash":"^4.17.10","qs":"^6.5.1","semver":"^7.3.5","superagent":"7.1.3","wms-capabilities":"0.4.0","xml-js":"~1.6.11","reflect-metadata":"0.1.13"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"},"eslintConfig":{"plugins":["@itwin"],"extends":"plugin:@itwin/itwinjs-recommended","rules":{"@itwin/no-internal-barrel-imports":["error",{"required-barrel-modules":["./src/tile/internal.ts"]}],"@itwin/public-extension-exports":["error",{"releaseTags":["public","preview"],"outputApiFile":false}]},"overrides":[{"files":["*.test.ts","*.test.tsx","**/test/**/*.ts"],"rules":{"@itwin/no-internal-barrel-imports":"off"}}]}}');
311031
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"3.5.0-dev.51","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","build:ci":"npm run -s build && npm run -s build:esm","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","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/primitives,**/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-eslintrc -c \\"../../tools/eslint-plugin/dist/configs/extension-exports-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"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core/tree/master/core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^3.5.0-dev.51","@itwin/core-bentley":"workspace:^3.5.0-dev.51","@itwin/core-common":"workspace:^3.5.0-dev.51","@itwin/core-geometry":"workspace:^3.5.0-dev.51","@itwin/core-orbitgt":"workspace:^3.5.0-dev.51","@itwin/core-quantity":"workspace:^3.5.0-dev.51","@itwin/webgl-compatibility":"workspace:^3.5.0-dev.51"},"//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":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/deep-assign":"^0.1.0","@types/lodash":"^4.14.0","@types/mocha":"^8.2.2","@types/node":"18.11.5","@types/qs":"^6.5.0","@types/semver":"7.3.10","@types/superagent":"^4.1.14","@types/sinon":"^9.0.0","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^7.11.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^9.0.2","source-map-loader":"^4.0.0","typescript":"~4.4.0","webpack":"^5.64.4"},"//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/object-storage-azure":"~1.4.0","@itwin/cloud-agnostic-core":"~1.4.0","@itwin/object-storage-core":"~1.4.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","deep-assign":"^2.0.0","fuse.js":"^3.3.0","lodash":"^4.17.10","qs":"^6.5.1","semver":"^7.3.5","superagent":"7.1.3","wms-capabilities":"0.4.0","xml-js":"~1.6.11","reflect-metadata":"0.1.13"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"},"eslintConfig":{"plugins":["@itwin"],"extends":"plugin:@itwin/itwinjs-recommended","rules":{"@itwin/no-internal-barrel-imports":["error",{"required-barrel-modules":["./src/tile/internal.ts"]}],"@itwin/public-extension-exports":["error",{"releaseTags":["public","preview"],"outputApiFile":false}]},"overrides":[{"files":["*.test.ts","*.test.tsx","**/test/**/*.ts"],"rules":{"@itwin/no-internal-barrel-imports":"off"}}]}}');
310860
311032
 
310861
311033
  /***/ }),
310862
311034