@itwin/ecschema-rpcinterface-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.
@@ -114689,6 +114689,11 @@ class IModelConnection extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.I
114689
114689
  * @beta
114690
114690
  */
114691
114691
  this.onClose = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
114692
+ /** Event called immediately after *this* IModelConnection has its displayed extents expanded.
114693
+ * @note This event is called only for this IModelConnection.
114694
+ * @internal
114695
+ */
114696
+ this.onDisplayedExtentsExpansion = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
114692
114697
  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));
114693
114698
  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));
114694
114699
  /** Event called immediately after map elevation request is completed. This occurs only in the case where background map terrain is displayed
@@ -115009,10 +115014,7 @@ class IModelConnection extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.I
115009
115014
  this._extentsExpansion.extendRange(range);
115010
115015
  this.displayedExtents.setFrom(this.projectExtents);
115011
115016
  this.displayedExtents.extendRange(this._extentsExpansion);
115012
- for (const vp of _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.viewManager) {
115013
- if (vp.view.isSpatialView() && vp.iModel === this)
115014
- vp.invalidateController();
115015
- }
115017
+ this.onDisplayedExtentsExpansion.raiseEvent();
115016
115018
  }
115017
115019
  /** @internal */
115018
115020
  getMapEcefToDb(bimElevationBias) {
@@ -126565,6 +126567,9 @@ class Viewport {
126565
126567
  removals.push(this.iModel.onMapElevationLoaded.addListener((_iModel) => {
126566
126568
  this.synchWithView();
126567
126569
  }));
126570
+ removals.push(this.iModel.onDisplayedExtentsExpansion.addListener(() => {
126571
+ this.invalidateController();
126572
+ }));
126568
126573
  }
126569
126574
  }
126570
126575
  registerDisplayStyleListeners(style) {
@@ -176178,9 +176183,9 @@ class TileAdmin {
176178
176183
  // start dynamically loading default implementation and save the promise to avoid duplicate instances
176179
176184
  this._tileStoragePromise = (async () => {
176180
176185
  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));
176181
- // eslint-disable-next-line @typescript-eslint/no-var-requires
176182
- const azureFrontend = await __webpack_require__(/*! ./object-storage-azure */ "../../core/frontend/lib/esm/tile/object-storage-azure.js")();
176183
- const azureStorage = new azureFrontend.AzureFrontendStorage(new azureFrontend.FrontendBlockBlobClientWrapperFactory());
176186
+ // eslint-disable-next-line @typescript-eslint/naming-convention
176187
+ 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));
176188
+ const azureStorage = new AzureFrontendStorage(new FrontendBlockBlobClientWrapperFactory());
176184
176189
  this._tileStorage = new _internal__WEBPACK_IMPORTED_MODULE_6__.TileStorage(azureStorage);
176185
176190
  return this._tileStorage;
176186
176191
  })();
@@ -185886,21 +185891,6 @@ class WmtsCapabilities {
185886
185891
  WmtsCapabilities._capabilitiesCache = new Map();
185887
185892
 
185888
185893
 
185889
- /***/ }),
185890
-
185891
- /***/ "../../core/frontend/lib/esm/tile/object-storage-azure.js":
185892
- /*!****************************************************************!*\
185893
- !*** ../../core/frontend/lib/esm/tile/object-storage-azure.js ***!
185894
- \****************************************************************/
185895
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
185896
-
185897
- // this wrapper is needed when compiling the package with CJS.
185898
- // In that case, Typescript will convert the dynamic import into a require and Webpack won't parse the magic comment.
185899
- module.exports = async () => {
185900
- 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));
185901
- }
185902
-
185903
-
185904
185894
  /***/ }),
185905
185895
 
185906
185896
  /***/ "../../core/frontend/lib/esm/tools/AccuDrawTool.js":
@@ -200831,24 +200821,25 @@ __webpack_require__.r(__webpack_exports__);
200831
200821
  /* harmony export */ });
200832
200822
  /* harmony import */ var _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../curve/CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
200833
200823
  /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
200834
- /* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
200824
+ /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
200825
+ /* harmony import */ var _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../curve/internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
200826
+ /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
200827
+ /* harmony import */ var _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../curve/Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
200835
200828
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
200836
- /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
200837
- /* harmony import */ var _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../geometry3d/Plane3dByOriginAndVectors */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndVectors.js");
200838
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
200839
- /* harmony import */ var _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../geometry3d/PointHelpers */ "../../core/geometry/lib/esm/geometry3d/PointHelpers.js");
200829
+ /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
200830
+ /* harmony import */ var _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../geometry3d/Plane3dByOriginAndVectors */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndVectors.js");
200831
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
200832
+ /* harmony import */ var _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../geometry3d/PointHelpers */ "../../core/geometry/lib/esm/geometry3d/PointHelpers.js");
200840
200833
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
200841
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
200834
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
200842
200835
  /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
200843
200836
  /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
200844
200837
  /* harmony import */ var _Bezier1dNd__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Bezier1dNd */ "../../core/geometry/lib/esm/bspline/Bezier1dNd.js");
200845
- /* harmony import */ var _BezierCurve3d__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./BezierCurve3d */ "../../core/geometry/lib/esm/bspline/BezierCurve3d.js");
200846
- /* harmony import */ var _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./BezierCurve3dH */ "../../core/geometry/lib/esm/bspline/BezierCurve3dH.js");
200838
+ /* harmony import */ var _BezierCurve3d__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./BezierCurve3d */ "../../core/geometry/lib/esm/bspline/BezierCurve3d.js");
200839
+ /* harmony import */ var _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./BezierCurve3dH */ "../../core/geometry/lib/esm/bspline/BezierCurve3dH.js");
200847
200840
  /* harmony import */ var _BSpline1dNd__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BSpline1dNd */ "../../core/geometry/lib/esm/bspline/BSpline1dNd.js");
200848
- /* harmony import */ var _BSplineCurveOps__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./BSplineCurveOps */ "../../core/geometry/lib/esm/bspline/BSplineCurveOps.js");
200841
+ /* harmony import */ var _BSplineCurveOps__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./BSplineCurveOps */ "../../core/geometry/lib/esm/bspline/BSplineCurveOps.js");
200849
200842
  /* harmony import */ var _KnotVector__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./KnotVector */ "../../core/geometry/lib/esm/bspline/KnotVector.js");
200850
- /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
200851
- /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
200852
200843
  /*---------------------------------------------------------------------------------------------
200853
200844
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
200854
200845
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -200856,14 +200847,12 @@ __webpack_require__.r(__webpack_exports__);
200856
200847
  /** @packageDocumentation
200857
200848
  * @module Bspline
200858
200849
  */
200859
- // import { Point2d } from "../Geometry2d";
200860
200850
 
200861
200851
 
200862
200852
 
200863
200853
 
200864
200854
 
200865
200855
 
200866
- /* eslint-disable @typescript-eslint/naming-convention, no-empty, no-console*/
200867
200856
 
200868
200857
 
200869
200858
 
@@ -200878,6 +200867,8 @@ __webpack_require__.r(__webpack_exports__);
200878
200867
 
200879
200868
 
200880
200869
 
200870
+
200871
+ /* eslint-disable @typescript-eslint/naming-convention, no-empty, no-console*/
200881
200872
  /**
200882
200873
  * Base class for BSplineCurve3d and BSplineCurve3dH.
200883
200874
  * * A bspline curve consists of a set of knots and a set of poles.
@@ -201149,6 +201140,14 @@ class BSplineCurve3dBase extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_
201149
201140
  this.emitStrokableParts(handler, options.strokeOptions);
201150
201141
  return handler.claimResult();
201151
201142
  }
201143
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
201144
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
201145
+ * @param lowHigh optional receiver for output
201146
+ * @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.
201147
+ */
201148
+ projectedParameterRange(ray, lowHigh) {
201149
+ return _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_11__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
201150
+ }
201152
201151
  }
201153
201152
  /**
201154
201153
  * A BSplineCurve3d is a bspline curve whose poles are Point3d.
@@ -201161,19 +201160,19 @@ class BSplineCurve3d extends BSplineCurve3dBase {
201161
201160
  }
201162
201161
  initializeWorkBezier() {
201163
201162
  if (this._workBezier === undefined)
201164
- this._workBezier = _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_11__.BezierCurve3dH.createOrder(this.order);
201163
+ this._workBezier = _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_12__.BezierCurve3dH.createOrder(this.order);
201165
201164
  return this._workBezier;
201166
201165
  }
201167
201166
  /** test of `other` is an instance of BSplineCurve3d */
201168
201167
  isSameGeometryClass(other) { return other instanceof BSplineCurve3d; }
201169
201168
  /** Apply `transform` to the poles. */
201170
- tryTransformInPlace(transform) { _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_12__.Point3dArray.multiplyInPlace(transform, this._bcurve.packedData); return true; }
201169
+ tryTransformInPlace(transform) { _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_13__.Point3dArray.multiplyInPlace(transform, this._bcurve.packedData); return true; }
201171
201170
  /** Get a pole as simple Point3d. */
201172
201171
  getPolePoint3d(poleIndex, result) {
201173
201172
  const k = this.poleIndexToDataIndex(poleIndex);
201174
201173
  if (k !== undefined) {
201175
201174
  const data = this._bcurve.packedData;
201176
- return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__.Point3d.create(data[k], data[k + 1], data[k + 2], result);
201175
+ return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Point3d.create(data[k], data[k + 1], data[k + 2], result);
201177
201176
  }
201178
201177
  return undefined;
201179
201178
  }
@@ -201191,7 +201190,7 @@ class BSplineCurve3d extends BSplineCurve3dBase {
201191
201190
  return this._bcurve.spanFractionToKnot(span, localFraction);
201192
201191
  }
201193
201192
  /** Return a simple array of arrays with the control points as `[[x,y,z],[x,y,z],..]` */
201194
- copyPoints() { return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_12__.Point3dArray.unpackNumbersToNestedArrays(this._bcurve.packedData, 3); }
201193
+ copyPoints() { return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_13__.Point3dArray.unpackNumbersToNestedArrays(this._bcurve.packedData, 3); }
201195
201194
  /** Return a simple array of the control points coordinates */
201196
201195
  copyPointsFloat64Array() { return this._bcurve.packedData.slice(); }
201197
201196
  /**
@@ -201210,7 +201209,7 @@ class BSplineCurve3d extends BSplineCurve3dBase {
201210
201209
  for (let i = 0; i < 3 * numPoles; i++)
201211
201210
  curve._bcurve.packedData[i] = poles[i];
201212
201211
  }
201213
- else if (poles instanceof _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_14__.GrowableXYZArray) {
201212
+ else if (poles instanceof _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__.GrowableXYZArray) {
201214
201213
  curve._bcurve.packedData = poles.float64Data().slice(0, 3 * numPoles);
201215
201214
  }
201216
201215
  else {
@@ -201242,7 +201241,7 @@ class BSplineCurve3d extends BSplineCurve3dBase {
201242
201241
  for (let i = 0; i < 3 * degree; i++)
201243
201242
  curve._bcurve.packedData[3 * numPoles + i] = poles[i];
201244
201243
  }
201245
- else if (poles instanceof _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_14__.GrowableXYZArray) {
201244
+ else if (poles instanceof _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__.GrowableXYZArray) {
201246
201245
  curve._bcurve.packedData = poles.float64Data().slice(0, 3 * numPoles);
201247
201246
  for (let i = 0; i < 3 * degree; i++)
201248
201247
  curve._bcurve.packedData[3 * numPoles + i] = poles.float64Data()[i];
@@ -201267,14 +201266,14 @@ class BSplineCurve3d extends BSplineCurve3dBase {
201267
201266
  * @param options collection of points and end conditions.
201268
201267
  */
201269
201268
  static createFromInterpolationCurve3dOptions(options) {
201270
- return _BSplineCurveOps__WEBPACK_IMPORTED_MODULE_15__.BSplineCurveOps.createThroughPointsC2Cubic(options);
201269
+ return _BSplineCurveOps__WEBPACK_IMPORTED_MODULE_16__.BSplineCurveOps.createThroughPointsC2Cubic(options);
201271
201270
  }
201272
201271
  /**
201273
201272
  *
201274
201273
  * @param options collection of points and end conditions.
201275
201274
  */
201276
201275
  static createFromAkimaCurve3dOptions(options) {
201277
- return _BSplineCurveOps__WEBPACK_IMPORTED_MODULE_15__.BSplineCurveOps.createThroughPoints(options.fitPoints, 4); // temporary
201276
+ return _BSplineCurveOps__WEBPACK_IMPORTED_MODULE_16__.BSplineCurveOps.createThroughPoints(options.fitPoints, 4); // temporary
201278
201277
  }
201279
201278
  /** Create a bspline with given knots.
201280
201279
  *
@@ -201323,25 +201322,25 @@ class BSplineCurve3d extends BSplineCurve3dBase {
201323
201322
  /** Evaluate at a position given by fractional position within a span. */
201324
201323
  evaluatePointInSpan(spanIndex, spanFraction) {
201325
201324
  this._bcurve.evaluateBuffersInSpan(spanIndex, spanFraction);
201326
- return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__.Point3d.createFrom(this._bcurve.poleBuffer);
201325
+ return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Point3d.createFrom(this._bcurve.poleBuffer);
201327
201326
  }
201328
201327
  /** Evaluate point and derivative vector at a position given by fractional position within a span.
201329
201328
  * * The derivative is with respect to the span fraction (NOT scaled to either global fraction or knot)
201330
201329
  */
201331
201330
  evaluatePointAndDerivativeInSpan(spanIndex, spanFraction) {
201332
201331
  this._bcurve.evaluateBuffersInSpan1(spanIndex, spanFraction);
201333
- 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));
201332
+ 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));
201334
201333
  }
201335
201334
  /** Evaluate at a position given by a knot value. */
201336
201335
  knotToPoint(u, result) {
201337
201336
  this._bcurve.evaluateBuffersAtKnot(u);
201338
- return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__.Point3d.createFrom(this._bcurve.poleBuffer, result);
201337
+ return _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_14__.Point3d.createFrom(this._bcurve.poleBuffer, result);
201339
201338
  }
201340
201339
  /** Evaluate at a position given by a knot value. */
201341
201340
  knotToPointAndDerivative(u, result) {
201342
201341
  this._bcurve.evaluateBuffersAtKnot(u, 1);
201343
201342
  if (!result)
201344
- 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));
201343
+ 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));
201345
201344
  result.origin.setFrom(this._bcurve.poleBuffer);
201346
201345
  result.direction.setFrom(this._bcurve.poleBuffer1);
201347
201346
  return result;
@@ -201349,22 +201348,22 @@ class BSplineCurve3d extends BSplineCurve3dBase {
201349
201348
  /** Evaluate at a position given by a knot value. Return point with 2 derivatives. */
201350
201349
  knotToPointAnd2Derivatives(u, result) {
201351
201350
  this._bcurve.evaluateBuffersAtKnot(u, 2);
201352
- 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);
201351
+ 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);
201353
201352
  }
201354
201353
  /** test if almost the same curve as `other` */
201355
201354
  isAlmostEqual(other) {
201356
201355
  if (other instanceof BSplineCurve3d) {
201357
201356
  return this._bcurve.knots.isAlmostEqual(other._bcurve.knots)
201358
- && _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_12__.Point3dArray.isAlmostEqual(this._bcurve.packedData, other._bcurve.packedData);
201357
+ && _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_13__.Point3dArray.isAlmostEqual(this._bcurve.packedData, other._bcurve.packedData);
201359
201358
  }
201360
201359
  return false;
201361
201360
  }
201362
201361
  /** test if this curve is entirely within plane. */
201363
201362
  isInPlane(plane) {
201364
- return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_12__.Point3dArray.isCloseToPlane(this._bcurve.packedData, plane);
201363
+ return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_13__.Point3dArray.isCloseToPlane(this._bcurve.packedData, plane);
201365
201364
  }
201366
201365
  /** Return the control polygon length as approximation (always overestimate) of the curve length. */
201367
- quickLength() { return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_12__.Point3dArray.sumEdgeLengths(this._bcurve.packedData); }
201366
+ quickLength() { return _geometry3d_PointHelpers__WEBPACK_IMPORTED_MODULE_13__.Point3dArray.sumEdgeLengths(this._bcurve.packedData); }
201368
201367
  /** Emit beziers or strokes (selected by the stroke options) to the handler. */
201369
201368
  emitStrokableParts(handler, options) {
201370
201369
  const needBeziers = handler.announceBezierCurve !== undefined;
@@ -201408,7 +201407,7 @@ class BSplineCurve3d extends BSplineCurve3dBase {
201408
201407
  computeAndAttachRecursiveStrokeCounts(options, parentStrokeMap) {
201409
201408
  const workBezier = this.initializeWorkBezier();
201410
201409
  const numSpan = this.numSpan;
201411
- const myData = _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_18__.StrokeCountMap.createWithCurvePrimitiveAndOptionalParent(this, parentStrokeMap, []);
201410
+ const myData = _curve_Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_19__.StrokeCountMap.createWithCurvePrimitiveAndOptionalParent(this, parentStrokeMap, []);
201412
201411
  for (let spanIndex = 0; spanIndex < numSpan; spanIndex++) {
201413
201412
  const bezier = this.getSaturatedBezierSpan3dH(spanIndex, workBezier);
201414
201413
  if (bezier) {
@@ -201463,8 +201462,8 @@ class BSplineCurve3d extends BSplineCurve3dBase {
201463
201462
  if (spanIndex < 0 || spanIndex >= this.numSpan)
201464
201463
  return undefined;
201465
201464
  const order = this.order;
201466
- if (result === undefined || !(result instanceof _BezierCurve3d__WEBPACK_IMPORTED_MODULE_19__.BezierCurve3d) || result.order !== order)
201467
- result = _BezierCurve3d__WEBPACK_IMPORTED_MODULE_19__.BezierCurve3d.createOrder(order);
201465
+ if (result === undefined || !(result instanceof _BezierCurve3d__WEBPACK_IMPORTED_MODULE_20__.BezierCurve3d) || result.order !== order)
201466
+ result = _BezierCurve3d__WEBPACK_IMPORTED_MODULE_20__.BezierCurve3d.createOrder(order);
201468
201467
  const bezier = result;
201469
201468
  bezier.loadSpanPoles(this._bcurve.packedData, spanIndex);
201470
201469
  if (bezier.saturateInPlace(this._bcurve.knots, spanIndex))
@@ -201480,8 +201479,8 @@ class BSplineCurve3d extends BSplineCurve3dBase {
201480
201479
  if (spanIndex < 0 || spanIndex >= this.numSpan)
201481
201480
  return undefined;
201482
201481
  const order = this.order;
201483
- if (result === undefined || !(result instanceof _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_11__.BezierCurve3dH) || result.order !== order)
201484
- result = _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_11__.BezierCurve3dH.createOrder(order);
201482
+ if (result === undefined || !(result instanceof _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_12__.BezierCurve3dH) || result.order !== order)
201483
+ result = _BezierCurve3dH__WEBPACK_IMPORTED_MODULE_12__.BezierCurve3dH.createOrder(order);
201485
201484
  const bezier = result;
201486
201485
  bezier.loadSpan3dPolesWithWeight(this._bcurve.packedData, spanIndex, 1.0);
201487
201486
  if (bezier.saturateInPlace(this._bcurve.knots, spanIndex))
@@ -204634,14 +204633,15 @@ __webpack_require__.r(__webpack_exports__);
204634
204633
  /* harmony export */ "BezierCurveBase": () => (/* binding */ BezierCurveBase)
204635
204634
  /* harmony export */ });
204636
204635
  /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
204636
+ /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
204637
+ /* harmony import */ var _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
204638
+ /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
204637
204639
  /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
204638
204640
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
204639
204641
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
204640
204642
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
204641
204643
  /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
204642
204644
  /* harmony import */ var _Bezier1dNd__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Bezier1dNd */ "../../core/geometry/lib/esm/bspline/Bezier1dNd.js");
204643
- /* harmony import */ var _curve_internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
204644
- /* harmony import */ var _curve_internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
204645
204645
  /*---------------------------------------------------------------------------------------------
204646
204646
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
204647
204647
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -204649,17 +204649,17 @@ __webpack_require__.r(__webpack_exports__);
204649
204649
  /** @packageDocumentation
204650
204650
  * @module Bspline
204651
204651
  */
204652
- // import { Point2d } from "../Geometry2d";
204653
204652
 
204654
204653
 
204655
204654
 
204656
204655
 
204657
- /* eslint-disable @typescript-eslint/naming-convention, no-empty, no-console*/
204658
204656
 
204659
204657
 
204660
204658
 
204661
204659
 
204662
204660
 
204661
+
204662
+ /* eslint-disable @typescript-eslint/naming-convention, no-empty, no-console*/
204663
204663
  /**
204664
204664
  * Base class for CurvePrimitive (necessarily 3D) with _polygon.
204665
204665
  * * This has a Bezier1dNd polygon as a member, and implements dimension-independent methods
@@ -204866,6 +204866,14 @@ class BezierCurveBase extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__
204866
204866
  partialCurve._polygon.subdivideToIntervalInPlace(fractionA, fractionB);
204867
204867
  return partialCurve;
204868
204868
  }
204869
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
204870
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
204871
+ * @param lowHigh optional receiver for output
204872
+ * @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.
204873
+ */
204874
+ projectedParameterRange(ray, lowHigh) {
204875
+ return _curve_internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_9__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
204876
+ }
204869
204877
  }
204870
204878
 
204871
204879
 
@@ -211241,10 +211249,11 @@ __webpack_require__.r(__webpack_exports__);
211241
211249
  /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
211242
211250
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
211243
211251
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
211244
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
211245
- /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
211246
211252
  /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
211253
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
211247
211254
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
211255
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
211256
+ /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
211248
211257
  /*---------------------------------------------------------------------------------------------
211249
211258
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
211250
211259
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -211265,6 +211274,7 @@ __webpack_require__.r(__webpack_exports__);
211265
211274
 
211266
211275
 
211267
211276
 
211277
+
211268
211278
  /**
211269
211279
  * Circular or elliptic arc.
211270
211280
  *
@@ -212185,6 +212195,14 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePrimitive
212185
212195
  this.emitStrokableParts(handler, options.strokeOptions);
212186
212196
  return handler.claimResult();
212187
212197
  }
212198
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
212199
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
212200
+ * @param lowHigh optional receiver for output
212201
+ * @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.
212202
+ */
212203
+ projectedParameterRange(ray, lowHigh) {
212204
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_16__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
212205
+ }
212188
212206
  }
212189
212207
  Arc3d._workPointA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Point3d.create();
212190
212208
  Arc3d._workPointB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_3__.Point3d.create();
@@ -212638,6 +212656,7 @@ __webpack_require__.r(__webpack_exports__);
212638
212656
  /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
212639
212657
  /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
212640
212658
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
212659
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
212641
212660
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
212642
212661
  /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
212643
212662
  /*---------------------------------------------------------------------------------------------
@@ -212657,6 +212676,7 @@ __webpack_require__.r(__webpack_exports__);
212657
212676
 
212658
212677
 
212659
212678
 
212679
+
212660
212680
  /**
212661
212681
  * * Annotation of an interval of a curve.
212662
212682
  * * The interval is marked with two pairs of numbers:
@@ -213322,6 +213342,14 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
213322
213342
  }
213323
213343
  return offsets;
213324
213344
  }
213345
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
213346
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
213347
+ * @param lowHigh optional receiver for output
213348
+ * @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.
213349
+ */
213350
+ projectedParameterRange(ray, lowHigh) {
213351
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
213352
+ }
213325
213353
  }
213326
213354
  CurveChainWithDistanceIndex._numCalls = 0;
213327
213355
  CurveChainWithDistanceIndex._numTested = 0;
@@ -213345,7 +213373,7 @@ __webpack_require__.r(__webpack_exports__);
213345
213373
  /* harmony export */ "CurveChain": () => (/* binding */ CurveChain),
213346
213374
  /* harmony export */ "CurveCollection": () => (/* binding */ CurveCollection)
213347
213375
  /* harmony export */ });
213348
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
213376
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
213349
213377
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
213350
213378
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
213351
213379
  /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
@@ -213353,10 +213381,11 @@ __webpack_require__.r(__webpack_exports__);
213353
213381
  /* harmony import */ var _internalContexts_CloneWithExpandedLineStrings__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internalContexts/CloneWithExpandedLineStrings */ "../../core/geometry/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js");
213354
213382
  /* harmony import */ var _internalContexts_CountLinearPartsSearchContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internalContexts/CountLinearPartsSearchContext */ "../../core/geometry/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js");
213355
213383
  /* harmony import */ var _internalContexts_GapSearchContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internalContexts/GapSearchContext */ "../../core/geometry/lib/esm/curve/internalContexts/GapSearchContext.js");
213384
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
213356
213385
  /* harmony import */ var _internalContexts_SumLengthsContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internalContexts/SumLengthsContext */ "../../core/geometry/lib/esm/curve/internalContexts/SumLengthsContext.js");
213357
213386
  /* harmony import */ var _internalContexts_TransformInPlaceContext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./internalContexts/TransformInPlaceContext */ "../../core/geometry/lib/esm/curve/internalContexts/TransformInPlaceContext.js");
213358
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
213359
- /* harmony import */ var _ProxyCurve__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ProxyCurve */ "../../core/geometry/lib/esm/curve/ProxyCurve.js");
213387
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
213388
+ /* harmony import */ var _ProxyCurve__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ProxyCurve */ "../../core/geometry/lib/esm/curve/ProxyCurve.js");
213360
213389
  /*---------------------------------------------------------------------------------------------
213361
213390
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
213362
213391
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -213376,6 +213405,7 @@ __webpack_require__.r(__webpack_exports__);
213376
213405
 
213377
213406
 
213378
213407
 
213408
+
213379
213409
  /**
213380
213410
  * A `CurveCollection` is an abstract (non-instantiable) class for various sets of curves with particular structures:
213381
213411
  * - `CurveChain` is a (non-instantiable) intermediate class for a sequence of `CurvePrimitive ` joining head-to-tail. The two instantiable forms of `CurveChain` are
@@ -213508,6 +213538,14 @@ class CurveCollection extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geomet
213508
213538
  }
213509
213539
  return undefined;
213510
213540
  }
213541
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
213542
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
213543
+ * @param lowHigh optional receiver for output
213544
+ * @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.
213545
+ */
213546
+ projectedParameterRange(ray, lowHigh) {
213547
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_9__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
213548
+ }
213511
213549
  }
213512
213550
  /** Shared base class for use by both open and closed paths.
213513
213551
  * - A `CurveChain` contains only curvePrimitives. No other paths, loops, or regions allowed.
@@ -213540,7 +213578,7 @@ class CurveChain extends CurveCollection {
213540
213578
  if (index >= 0 && index < n)
213541
213579
  return this.children[index];
213542
213580
  if (cyclic) {
213543
- const index2 = _Geometry__WEBPACK_IMPORTED_MODULE_9__.Geometry.modulo(index, n);
213581
+ const index2 = _Geometry__WEBPACK_IMPORTED_MODULE_10__.Geometry.modulo(index, n);
213544
213582
  return this.children[index2];
213545
213583
  }
213546
213584
  return undefined;
@@ -213554,7 +213592,7 @@ class CurveChain extends CurveCollection {
213554
213592
  const children = tree.children;
213555
213593
  if (children.length === 1) {
213556
213594
  const ls = children[0];
213557
- if (ls instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d)
213595
+ if (ls instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_11__.LineString3d)
213558
213596
  return ls.packedPoints;
213559
213597
  }
213560
213598
  }
@@ -213611,7 +213649,7 @@ class CurveChain extends CurveCollection {
213611
213649
  if (alsoSearchProxies !== null && alsoSearchProxies !== void 0 ? alsoSearchProxies : false) {
213612
213650
  for (let i = 0; i < this._curves.length; i++) {
213613
213651
  const childCurve = this._curves[i];
213614
- if (childCurve instanceof _ProxyCurve__WEBPACK_IMPORTED_MODULE_11__.ProxyCurve) {
213652
+ if (childCurve instanceof _ProxyCurve__WEBPACK_IMPORTED_MODULE_12__.ProxyCurve) {
213615
213653
  if (childCurve.proxyCurve === target)
213616
213654
  return i;
213617
213655
  }
@@ -213666,7 +213704,7 @@ class BagOfCurves extends CurveCollection {
213666
213704
  let child;
213667
213705
  for (child of this.children) {
213668
213706
  if (child instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__.CurvePrimitive) {
213669
- const ls = _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d.create();
213707
+ const ls = _LineString3d__WEBPACK_IMPORTED_MODULE_11__.LineString3d.create();
213670
213708
  child.emitStrokes(ls, options);
213671
213709
  if (ls)
213672
213710
  clone.children.push(ls);
@@ -213709,9 +213747,9 @@ class ConsolidateAdjacentCurvePrimitivesOptions {
213709
213747
  /** True to consolidate contiguous arcs */
213710
213748
  this.consolidateCompatibleArcs = true;
213711
213749
  /** Tolerance for collapsing identical points */
213712
- this.duplicatePointTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_9__.Geometry.smallMetricDistance;
213750
+ this.duplicatePointTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_10__.Geometry.smallMetricDistance;
213713
213751
  /** Tolerance for removing interior colinear points. */
213714
- this.colinearPointTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_9__.Geometry.smallMetricDistance;
213752
+ this.colinearPointTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_10__.Geometry.smallMetricDistance;
213715
213753
  }
213716
213754
  }
213717
213755
 
@@ -214717,7 +214755,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
214717
214755
  return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSmallMetricDistance(fraction * pointA.distanceXY(pointB));
214718
214756
  }
214719
214757
  else if (!extend1 && fraction > 1.0)
214720
- return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSmallMetricDistance(fraction * pointA.distanceXY(pointB));
214758
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isSmallMetricDistance((fraction - 1.0) * pointA.distanceXY(pointB));
214721
214759
  return true;
214722
214760
  }
214723
214761
  /**
@@ -217809,6 +217847,14 @@ class CurvePrimitive extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_1__.Geometr
217809
217847
  this.collectCurvePrimitivesGo(results, smallestPossiblePrimitives, explodeLinestrings);
217810
217848
  return results;
217811
217849
  }
217850
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
217851
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
217852
+ * @param lowHigh optional receiver for output
217853
+ * @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.
217854
+ */
217855
+ projectedParameterRange(_ray, _lowHigh) {
217856
+ return undefined; // common implementation delegated to subclasses to avoid circular dependency
217857
+ }
217812
217858
  }
217813
217859
 
217814
217860
 
@@ -218140,6 +218186,7 @@ __webpack_require__.r(__webpack_exports__);
218140
218186
  /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
218141
218187
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
218142
218188
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
218189
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
218143
218190
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
218144
218191
  /*---------------------------------------------------------------------------------------------
218145
218192
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -218155,6 +218202,7 @@ __webpack_require__.r(__webpack_exports__);
218155
218202
 
218156
218203
 
218157
218204
 
218205
+
218158
218206
  /* eslint-disable @typescript-eslint/naming-convention, no-empty */
218159
218207
  /**
218160
218208
  * A LineSegment3d is:
@@ -218489,6 +218537,14 @@ class LineSegment3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePr
218489
218537
  }
218490
218538
  return undefined;
218491
218539
  }
218540
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
218541
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
218542
+ * @param lowHigh optional receiver for output
218543
+ * @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.
218544
+ */
218545
+ projectedParameterRange(ray, lowHigh) {
218546
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_10__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
218547
+ }
218492
218548
  }
218493
218549
 
218494
218550
 
@@ -218521,6 +218577,7 @@ __webpack_require__.r(__webpack_exports__);
218521
218577
  /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
218522
218578
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
218523
218579
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
218580
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
218524
218581
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
218525
218582
  /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
218526
218583
  /* harmony import */ var _Query_StrokeCountMap__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Query/StrokeCountMap */ "../../core/geometry/lib/esm/curve/Query/StrokeCountMap.js");
@@ -218542,6 +218599,7 @@ __webpack_require__.r(__webpack_exports__);
218542
218599
 
218543
218600
 
218544
218601
 
218602
+
218545
218603
  /* eslint-disable @typescript-eslint/naming-convention, no-empty */
218546
218604
  /* Starting with baseIndex and moving index by stepDirection:
218547
218605
  If the vector from baseIndex to baseIndex +1 crossed with vectorA can be normalized, accumulate it (scaled) to normal.
@@ -219828,6 +219886,14 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
219828
219886
  }
219829
219887
  return offsets;
219830
219888
  }
219889
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
219890
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
219891
+ * @param lowHigh optional receiver for output
219892
+ * @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.
219893
+ */
219894
+ projectedParameterRange(ray, lowHigh) {
219895
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_18__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
219896
+ }
219831
219897
  }
219832
219898
  LineString3d._workPointA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
219833
219899
  LineString3d._workPointB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
@@ -220538,6 +220604,10 @@ class ProxyCurve extends _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.Curv
220538
220604
  constructOffsetXY(offsetDistanceOrOptions) {
220539
220605
  return this._proxyCurve.constructOffsetXY(offsetDistanceOrOptions);
220540
220606
  }
220607
+ /** Implement by proxyCurve */
220608
+ projectedParameterRange(ray, lowHigh) {
220609
+ return this._proxyCurve.projectedParameterRange(ray, lowHigh);
220610
+ }
220541
220611
  }
220542
220612
 
220543
220613
 
@@ -221100,7 +221170,7 @@ __webpack_require__.r(__webpack_exports__);
221100
221170
  /** @packageDocumentation
221101
221171
  * @module Curve
221102
221172
  */
221103
- class MapCurvePrimitiveToCurveLocatioNDetailPairArray {
221173
+ class MapCurvePrimitiveToCurveLocationDetailPairArray {
221104
221174
  constructor() {
221105
221175
  this.primitiveToPair = new Map();
221106
221176
  // index assigned to this primitive for this calculation.
@@ -221153,9 +221223,10 @@ function tagString(name: string, value: number | undefined): string {
221153
221223
  * @internal
221154
221224
  */
221155
221225
  class PlanarSubdivision {
221156
- static assembleHalfEdgeGraph(_primitives, allPairs) {
221157
- const detailByPrimitive = new MapCurvePrimitiveToCurveLocatioNDetailPairArray(); // map from key CurvePrimitive to CurveLocationDetailPair.
221158
- for (const p of _primitives)
221226
+ /** Create a graph from an array of curves, and an array of the curves' precomputed intersections. */
221227
+ static assembleHalfEdgeGraph(primitives, allPairs) {
221228
+ const detailByPrimitive = new MapCurvePrimitiveToCurveLocationDetailPairArray(); // map from key CurvePrimitive to CurveLocationDetailPair.
221229
+ for (const p of primitives)
221159
221230
  detailByPrimitive.assignPrimitiveIndex(p);
221160
221231
  for (const pair of allPairs) {
221161
221232
  detailByPrimitive.insertPair(pair);
@@ -222126,27 +222197,27 @@ __webpack_require__.r(__webpack_exports__);
222126
222197
  /* harmony export */ "RegionBinaryOpType": () => (/* binding */ RegionBinaryOpType),
222127
222198
  /* harmony export */ "RegionOps": () => (/* binding */ RegionOps)
222128
222199
  /* harmony export */ });
222129
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
222200
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
222130
222201
  /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
222131
- /* harmony import */ var _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/IndexedXYZCollection */ "../../core/geometry/lib/esm/geometry3d/IndexedXYZCollection.js");
222202
+ /* harmony import */ var _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../geometry3d/IndexedXYZCollection */ "../../core/geometry/lib/esm/geometry3d/IndexedXYZCollection.js");
222132
222203
  /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
222133
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
222204
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
222134
222205
  /* harmony import */ var _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../geometry3d/PolylineCompressionByEdgeOffset */ "../../core/geometry/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js");
222135
222206
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
222136
222207
  /* harmony import */ var _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../geometry3d/SortablePolygon */ "../../core/geometry/lib/esm/geometry3d/SortablePolygon.js");
222137
222208
  /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
222138
222209
  /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
222139
- /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
222210
+ /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
222140
222211
  /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
222141
- /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
222212
+ /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
222142
222213
  /* harmony import */ var _ChainCollectorContext__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./ChainCollectorContext */ "../../core/geometry/lib/esm/curve/ChainCollectorContext.js");
222143
222214
  /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
222144
222215
  /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
222145
222216
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
222146
- /* harmony import */ var _CurveWireMomentsXYZ__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CurveWireMomentsXYZ */ "../../core/geometry/lib/esm/curve/CurveWireMomentsXYZ.js");
222217
+ /* harmony import */ var _CurveWireMomentsXYZ__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveWireMomentsXYZ */ "../../core/geometry/lib/esm/curve/CurveWireMomentsXYZ.js");
222147
222218
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
222148
222219
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
222149
- /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
222220
+ /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
222150
222221
  /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
222151
222222
  /* harmony import */ var _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./Query/ConsolidateAdjacentPrimitivesContext */ "../../core/geometry/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js");
222152
222223
  /* harmony import */ var _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Query/CurveSplitContext */ "../../core/geometry/lib/esm/curve/Query/CurveSplitContext.js");
@@ -222155,10 +222226,10 @@ __webpack_require__.r(__webpack_exports__);
222155
222226
  /* harmony import */ var _RegionMomentsXY__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RegionMomentsXY */ "../../core/geometry/lib/esm/curve/RegionMomentsXY.js");
222156
222227
  /* harmony import */ var _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
222157
222228
  /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
222158
- /* harmony import */ var _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./RegionOpsClassificationSweeps */ "../../core/geometry/lib/esm/curve/RegionOpsClassificationSweeps.js");
222159
- /* harmony import */ var _UnionRegion__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
222229
+ /* harmony import */ var _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RegionOpsClassificationSweeps */ "../../core/geometry/lib/esm/curve/RegionOpsClassificationSweeps.js");
222230
+ /* harmony import */ var _UnionRegion__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
222160
222231
  /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
222161
- /* harmony import */ var _ParityRegion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
222232
+ /* harmony import */ var _ParityRegion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
222162
222233
  /*---------------------------------------------------------------------------------------------
222163
222234
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
222164
222235
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -222236,6 +222307,14 @@ class RegionOps {
222236
222307
  }
222237
222308
  return undefined;
222238
222309
  }
222310
+ /** Return an area tolerance for a given xy-range and optional distance tolerance.
222311
+ * @param range range of planar region to tolerance
222312
+ * @param distanceTolerance optional absolute distance tolerance
222313
+ */
222314
+ static computeXYAreaTolerance(range, distanceTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
222315
+ // 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).
222316
+ return distanceTolerance * (range.xLength() + range.yLength() + distanceTolerance);
222317
+ }
222239
222318
  /**
222240
222319
  * Return an xy area for a loop, parity region, or union region.
222241
222320
  * * If `rawMomentData` is the MomentData returned by computeXYAreaMoments, convert to principal axes and moments with
@@ -222255,7 +222334,7 @@ class RegionOps {
222255
222334
  * call `principalMomentData = MomentData.inertiaProductsToPrincipalAxes (rawMomentData.origin, rawMomentData.sums);`
222256
222335
  */
222257
222336
  static computeXYZWireMomentSums(root) {
222258
- const handler = new _CurveWireMomentsXYZ__WEBPACK_IMPORTED_MODULE_2__.CurveWireMomentsXYZ();
222337
+ const handler = new _CurveWireMomentsXYZ__WEBPACK_IMPORTED_MODULE_3__.CurveWireMomentsXYZ();
222259
222338
  handler.visitLeaves(root);
222260
222339
  const result = handler.momentData;
222261
222340
  result.shiftOriginAndSumsToCentroidOfSums();
@@ -222266,33 +222345,33 @@ class RegionOps {
222266
222345
  * @internal
222267
222346
  */
222268
222347
  static addLoopsToGraph(graph, data, announceIsolatedLoop) {
222269
- if (data instanceof _Loop__WEBPACK_IMPORTED_MODULE_3__.Loop) {
222348
+ if (data instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop) {
222270
222349
  const points = data.getPackedStrokes();
222271
222350
  if (points)
222272
222351
  this.addLoopsToGraph(graph, points, announceIsolatedLoop);
222273
222352
  }
222274
- else if (data instanceof _ParityRegion__WEBPACK_IMPORTED_MODULE_4__.ParityRegion) {
222353
+ else if (data instanceof _ParityRegion__WEBPACK_IMPORTED_MODULE_5__.ParityRegion) {
222275
222354
  for (const child of data.children) {
222276
222355
  const points = child.getPackedStrokes();
222277
222356
  if (points)
222278
222357
  this.addLoopsToGraph(graph, points, announceIsolatedLoop);
222279
222358
  }
222280
222359
  }
222281
- else if (data instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_5__.IndexedXYZCollection) {
222282
- const loopSeed = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_6__.Triangulator.directCreateFaceLoopFromCoordinates(graph, data);
222360
+ else if (data instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__.IndexedXYZCollection) {
222361
+ const loopSeed = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__.Triangulator.directCreateFaceLoopFromCoordinates(graph, data);
222283
222362
  if (loopSeed !== undefined)
222284
222363
  announceIsolatedLoop(graph, loopSeed);
222285
222364
  }
222286
222365
  else if (Array.isArray(data)) {
222287
222366
  if (data.length > 0) {
222288
- if (_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Point3d.isAnyImmediatePointType(data[0])) {
222289
- const loopSeed = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_6__.Triangulator.directCreateFaceLoopFromCoordinates(graph, data);
222367
+ if (_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_8__.Point3d.isAnyImmediatePointType(data[0])) {
222368
+ const loopSeed = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__.Triangulator.directCreateFaceLoopFromCoordinates(graph, data);
222290
222369
  if (loopSeed !== undefined)
222291
222370
  announceIsolatedLoop(graph, loopSeed);
222292
222371
  }
222293
- else if (data[0] instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_5__.IndexedXYZCollection) {
222372
+ else if (data[0] instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__.IndexedXYZCollection) {
222294
222373
  for (const loop of data) {
222295
- const loopSeed = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_6__.Triangulator.directCreateFaceLoopFromCoordinates(graph, loop);
222374
+ const loopSeed = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__.Triangulator.directCreateFaceLoopFromCoordinates(graph, loop);
222296
222375
  if (loopSeed !== undefined)
222297
222376
  announceIsolatedLoop(graph, loopSeed);
222298
222377
  }
@@ -222332,10 +222411,10 @@ class RegionOps {
222332
222411
  static finishGraphToPolyface(graph, triangulate) {
222333
222412
  if (graph) {
222334
222413
  if (triangulate) {
222335
- _topology_Triangulation__WEBPACK_IMPORTED_MODULE_6__.Triangulator.triangulateAllPositiveAreaFaces(graph);
222336
- _topology_Triangulation__WEBPACK_IMPORTED_MODULE_6__.Triangulator.flipTriangles(graph);
222414
+ _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__.Triangulator.triangulateAllPositiveAreaFaces(graph);
222415
+ _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__.Triangulator.flipTriangles(graph);
222337
222416
  }
222338
- return _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_8__.PolyfaceBuilder.graphToPolyface(graph);
222417
+ return _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_9__.PolyfaceBuilder.graphToPolyface(graph);
222339
222418
  }
222340
222419
  return undefined;
222341
222420
  }
@@ -222348,7 +222427,7 @@ class RegionOps {
222348
222427
  * @param loopsB second set of loops
222349
222428
  */
222350
222429
  static polygonXYAreaIntersectLoopsToPolyface(loopsA, loopsB, triangulate = false) {
222351
- const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionOpsFaceToFaceSearch.doPolygonBoolean(loopsA, loopsB, (inA, inB) => (inA && inB), this._graphCheckPointFunction);
222430
+ const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionOpsFaceToFaceSearch.doPolygonBoolean(loopsA, loopsB, (inA, inB) => (inA && inB), this._graphCheckPointFunction);
222352
222431
  return this.finishGraphToPolyface(graph, triangulate);
222353
222432
  }
222354
222433
  /**
@@ -222360,7 +222439,7 @@ class RegionOps {
222360
222439
  * @param loopsB second set of loops
222361
222440
  */
222362
222441
  static polygonXYAreaUnionLoopsToPolyface(loopsA, loopsB, triangulate = false) {
222363
- const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionOpsFaceToFaceSearch.doPolygonBoolean(loopsA, loopsB, (inA, inB) => (inA || inB), this._graphCheckPointFunction);
222442
+ const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionOpsFaceToFaceSearch.doPolygonBoolean(loopsA, loopsB, (inA, inB) => (inA || inB), this._graphCheckPointFunction);
222364
222443
  return this.finishGraphToPolyface(graph, triangulate);
222365
222444
  }
222366
222445
  /**
@@ -222372,7 +222451,7 @@ class RegionOps {
222372
222451
  * @param loopsB second set of loops
222373
222452
  */
222374
222453
  static polygonXYAreaDifferenceLoopsToPolyface(loopsA, loopsB, triangulate = false) {
222375
- const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionOpsFaceToFaceSearch.doPolygonBoolean(loopsA, loopsB, (inA, inB) => (inA && !inB), this._graphCheckPointFunction);
222454
+ const graph = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionOpsFaceToFaceSearch.doPolygonBoolean(loopsA, loopsB, (inA, inB) => (inA && !inB), this._graphCheckPointFunction);
222376
222455
  return this.finishGraphToPolyface(graph, triangulate);
222377
222456
  }
222378
222457
  /**
@@ -222385,13 +222464,17 @@ class RegionOps {
222385
222464
  * @alpha
222386
222465
  */
222387
222466
  static regionBooleanXY(loopsA, loopsB, operation) {
222388
- // create and load a context . . .
222389
- const result = _UnionRegion__WEBPACK_IMPORTED_MODULE_10__.UnionRegion.create();
222390
- const context = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionBooleanContext.create(_RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionGroupOpType.Union, _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_9__.RegionGroupOpType.Union);
222467
+ const result = _UnionRegion__WEBPACK_IMPORTED_MODULE_11__.UnionRegion.create();
222468
+ const context = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionBooleanContext.create(_RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionGroupOpType.Union, _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__.RegionGroupOpType.Union);
222391
222469
  context.addMembers(loopsA, loopsB);
222392
222470
  context.annotateAndMergeCurvesInGraph();
222471
+ const range = context.groupA.range().union(context.groupB.range());
222472
+ const areaTol = this.computeXYAreaTolerance(range);
222393
222473
  context.runClassificationSweep(operation, (_graph, face, faceType, area) => {
222394
- if (face.countEdgesAroundFace() < 3 && _Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.isSameCoordinate(area, 0)) // NEED BETTER TOLERANCE
222474
+ // ignore danglers and null faces, but not 2-edge "banana" faces with nonzero area
222475
+ if (face.countEdgesAroundFace() < 2)
222476
+ return;
222477
+ if (Math.abs(area) < areaTol)
222395
222478
  return;
222396
222479
  if (faceType === 1) {
222397
222480
  const loop = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.createLoopInFace(face);
@@ -222412,7 +222495,7 @@ class RegionOps {
222412
222495
  * @param loopsB second set of loops
222413
222496
  */
222414
222497
  static polygonBooleanXYToPolyface(inputA, operation, inputB, triangulate = false) {
222415
- 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);
222498
+ 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);
222416
222499
  return this.finishGraphToPolyface(graph, triangulate);
222417
222500
  }
222418
222501
  /**
@@ -222426,7 +222509,7 @@ class RegionOps {
222426
222509
  * @param loopsB second set of loops
222427
222510
  */
222428
222511
  static polygonBooleanXYToLoops(inputA, operation, inputB) {
222429
- 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);
222512
+ 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);
222430
222513
  if (!graph)
222431
222514
  return undefined;
222432
222515
  const loopEdges = _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_13__.HalfEdgeGraphSearch.collectExtendedBoundaryLoopsInGraph(graph, _topology_Graph__WEBPACK_IMPORTED_MODULE_14__.HalfEdgeMask.EXTERIOR);
@@ -222436,7 +222519,7 @@ class RegionOps {
222436
222519
  for (const edge of graphLoop)
222437
222520
  points.pushXYZ(edge.x, edge.y, edge.z);
222438
222521
  points.pushWrap(1);
222439
- const loop = _Loop__WEBPACK_IMPORTED_MODULE_3__.Loop.create();
222522
+ const loop = _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.create();
222440
222523
  loop.tryAddChild(_LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d.createCapture(points));
222441
222524
  allLoops.push(loop);
222442
222525
  }
@@ -222494,12 +222577,12 @@ class RegionOps {
222494
222577
  let maxGap = 0.0;
222495
222578
  let isPath = false;
222496
222579
  if (wrap)
222497
- maxGap = _Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.maxXY(maxGap, curves[0].startPoint().distance(curves[n - 1].endPoint()));
222580
+ maxGap = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.maxXY(maxGap, curves[0].startPoint().distance(curves[n - 1].endPoint()));
222498
222581
  for (let i = 0; i + 1 < n; i++)
222499
- maxGap = _Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.maxXY(maxGap, curves[i].endPoint().distance(curves[i + 1].startPoint()));
222582
+ maxGap = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.maxXY(maxGap, curves[i].endPoint().distance(curves[i + 1].startPoint()));
222500
222583
  let collection;
222501
- if (_Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.isSmallMetricDistance(maxGap)) {
222502
- collection = wrap ? _Loop__WEBPACK_IMPORTED_MODULE_3__.Loop.create() : _Path__WEBPACK_IMPORTED_MODULE_19__.Path.create();
222584
+ if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(maxGap)) {
222585
+ collection = wrap ? _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.create() : _Path__WEBPACK_IMPORTED_MODULE_19__.Path.create();
222503
222586
  isPath = true;
222504
222587
  }
222505
222588
  else {
@@ -222562,7 +222645,7 @@ class RegionOps {
222562
222645
  * @param fragments fragments to be chained
222563
222646
  * @param offsetDistance offset distance.
222564
222647
  */
222565
- static collectChains(fragments, gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.smallMetricDistance) {
222648
+ static collectChains(fragments, gapTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
222566
222649
  return _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__.OffsetHelpers.collectChains(fragments, gapTolerance);
222567
222650
  }
222568
222651
  /**
@@ -222614,10 +222697,10 @@ class RegionOps {
222614
222697
  if (data instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
222615
222698
  return this.rectangleEdgeTransform(data.packedPoints);
222616
222699
  }
222617
- else if (data instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_5__.IndexedXYZCollection) {
222700
+ else if (data instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__.IndexedXYZCollection) {
222618
222701
  let dataToUse;
222619
222702
  if (requireClosurePoint && data.length === 5) {
222620
- if (!_Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.isSmallMetricDistance(data.distanceIndexIndex(0, 4)))
222703
+ if (!_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.isSmallMetricDistance(data.distanceIndexIndex(0, 4)))
222621
222704
  return undefined;
222622
222705
  dataToUse = data;
222623
222706
  }
@@ -222628,7 +222711,7 @@ class RegionOps {
222628
222711
  }
222629
222712
  else {
222630
222713
  dataToUse = _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__.GrowableXYZArray.create(data);
222631
- _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_25__.PolylineCompressionContext.compressInPlaceByShortEdgeLength(dataToUse, _Geometry__WEBPACK_IMPORTED_MODULE_11__.Geometry.smallMetricDistance);
222714
+ _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_25__.PolylineCompressionContext.compressInPlaceByShortEdgeLength(dataToUse, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance);
222632
222715
  }
222633
222716
  const vector01 = dataToUse.vectorIndexIndex(0, 1);
222634
222717
  const vector03 = dataToUse.vectorIndexIndex(0, 3);
@@ -222643,7 +222726,7 @@ class RegionOps {
222643
222726
  else if (Array.isArray(data)) {
222644
222727
  return this.rectangleEdgeTransform(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_27__.Point3dArrayCarrier(data), requireClosurePoint);
222645
222728
  }
222646
- else if (data instanceof _Loop__WEBPACK_IMPORTED_MODULE_3__.Loop && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
222729
+ else if (data instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
222647
222730
  return this.rectangleEdgeTransform(data.children[0].packedPoints, true);
222648
222731
  }
222649
222732
  else if (data instanceof _Path__WEBPACK_IMPORTED_MODULE_19__.Path && data.children.length === 1 && data.children[0] instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_16__.LineString3d) {
@@ -222689,10 +222772,10 @@ class RegionOps {
222689
222772
  static sortOuterAndHoleLoopsXY(loops) {
222690
222773
  const loopAndArea = [];
222691
222774
  for (const candidate of loops) {
222692
- if (candidate instanceof _Loop__WEBPACK_IMPORTED_MODULE_3__.Loop)
222775
+ if (candidate instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop)
222693
222776
  _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__.SortablePolygon.pushLoop(loopAndArea, candidate);
222694
- else if (candidate instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_5__.IndexedXYZCollection) {
222695
- const loop = _Loop__WEBPACK_IMPORTED_MODULE_3__.Loop.createPolygon(candidate);
222777
+ else if (candidate instanceof _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_6__.IndexedXYZCollection) {
222778
+ const loop = _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(candidate);
222696
222779
  _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_29__.SortablePolygon.pushLoop(loopAndArea, loop);
222697
222780
  }
222698
222781
  }
@@ -222718,9 +222801,10 @@ class RegionOps {
222718
222801
  const primitivesA = RegionOps.collectCurvePrimitives(curvesAndRegions, undefined, true);
222719
222802
  const primitivesB = this.expandLineStrings(primitivesA);
222720
222803
  const range = this.curveArrayRange(primitivesB);
222804
+ const areaTol = this.computeXYAreaTolerance(range);
222721
222805
  const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_30__.CurveCurve.allIntersectionsAmongPrimitivesXY(primitivesB);
222722
222806
  const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.assembleHalfEdgeGraph(primitivesB, intersections);
222723
- return _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.collectSignedLoopSetsInHalfEdgeGraph(graph, 1.0e-12 * range.xLength() * range.yLength());
222807
+ return _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.collectSignedLoopSetsInHalfEdgeGraph(graph, areaTol);
222724
222808
  }
222725
222809
  /**
222726
222810
  * collect all `CurvePrimitives` in loosely typed input.
@@ -222779,7 +222863,7 @@ class RegionOps {
222779
222863
  for (const c of data) {
222780
222864
  if (c instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__.GeometryQuery)
222781
222865
  c.extendRange(range, worldToLocal);
222782
- else if (c instanceof _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Point3d)
222866
+ else if (c instanceof _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_8__.Point3d)
222783
222867
  range.extendPoint(c, worldToLocal);
222784
222868
  else if (c instanceof _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_15__.GrowableXYZArray)
222785
222869
  range.extendRange(c.getRange(worldToLocal));
@@ -222825,17 +222909,18 @@ __webpack_require__.r(__webpack_exports__);
222825
222909
  /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
222826
222910
  /* harmony import */ var _ParityRegion__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
222827
222911
  /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
222828
- /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
222829
- /* harmony import */ var _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Query/PlanarSubdivision */ "../../core/geometry/lib/esm/curve/Query/PlanarSubdivision.js");
222912
+ /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
222913
+ /* harmony import */ var _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Query/PlanarSubdivision */ "../../core/geometry/lib/esm/curve/Query/PlanarSubdivision.js");
222830
222914
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
222831
222915
  /* harmony import */ var _UnionRegion__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
222832
- /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
222916
+ /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
222833
222917
  /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
222834
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
222918
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
222835
222919
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
222836
222920
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
222837
222921
  /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
222838
222922
  /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
222923
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
222839
222924
  /*---------------------------------------------------------------------------------------------
222840
222925
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
222841
222926
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -222861,6 +222946,7 @@ __webpack_require__.r(__webpack_exports__);
222861
222946
 
222862
222947
 
222863
222948
 
222949
+
222864
222950
  /**
222865
222951
  * base class for callbacks during region sweeps.
222866
222952
  * * At start of a component, `startComponent(node)` is called announcing a representative node on the outermost face.
@@ -222890,10 +222976,10 @@ class RegionOpsFaceToFaceSearchCallbacks {
222890
222976
  * Implementation of `RegionOpsFaceToFaceSearchCallbacks` for binary boolean sweep with polygonal regions.
222891
222977
  * * For this linear-boundary case the boundary geometry is carried entirely from the coordinates in the half edges.
222892
222978
  * * This assumes the each node in the graph has edgeTag set to:
222893
- * * `edgeTag === undefined` if the edge crossing the edge does not change classification.
222979
+ * * `edgeTag === undefined` if the edge crossing does not change classification.
222894
222980
  * * for example, an edge added by regularization
222895
222981
  * * `edgeTag === 1` if this is a boundary for the first of the boolean input regions
222896
- * * `edgeTag === 2` if this is a boundary for the first of the boolean input regions
222982
+ * * `edgeTag === 2` if this is a boundary for the second of the boolean input regions
222897
222983
  * * constructor
222898
222984
  * * takes caller-supplied function to decide whether to accept a face given its state relative to the two boolean terms.
222899
222985
  * * sets the in/out status of both terms to false.
@@ -223212,7 +223298,7 @@ class RegionGroup {
223212
223298
  }
223213
223299
  /**
223214
223300
  * A `RegionBooleanContext` carries structure and operations for binary operations between two sets of regions.
223215
- * * In the binary operation (union, intersection, parity, difference), the left and right operands
223301
+ * * In the binary operation OP (union, intersection, parity, difference), the left and right operands
223216
223302
  * are each a composite union, difference, or parity among multiple inputs, i.e.
223217
223303
  * * (operationA among Ai) OP (operationB among Bi)
223218
223304
  * * where the Ai are one set of regions, being combined by operationA
@@ -223258,45 +223344,54 @@ class RegionBooleanContext {
223258
223344
  /**
223259
223345
  * The sweep operations require access to all geometry by edge crossings and face walk.
223260
223346
  * If input loops are non-overlapping, there may be disconnected islands not reachable.
223261
- * This method
223347
+ * This method:
223262
223348
  * * finds the total range
223263
- * * for each loop, create a horizontal line from a far-to-the-right point to beyond the overall range.
223264
- * * places those lines in the extraGeometry group.
223349
+ * * creates parallel rays from the extreme point of each loop and extending beyond the overall range
223350
+ * * places those lines in the extraGeometry group
223265
223351
  */
223266
223352
  addConnectives() {
223267
223353
  const rangeA = this.groupA.range();
223268
223354
  const rangeB = this.groupB.range();
223269
223355
  const rangeAB = rangeA.union(rangeB);
223270
- const maxXPoints = [];
223271
- const direction = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_12__.Vector3d.unitX();
223356
+ const areaTol = _RegionOps__WEBPACK_IMPORTED_MODULE_1__.RegionOps.computeXYAreaTolerance(rangeAB);
223357
+ const direction = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_12__.Vector3d.create(1.0, -0.12328974132467);
223358
+ let margin = 0.1;
223359
+ this._workSegment = _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_13__.PlaneAltitudeRangeContext.findExtremePointsInDirection(rangeAB.corners(), direction, this._workSegment);
223360
+ if (this._workSegment)
223361
+ margin *= this._workSegment.point0Ref.distanceXY(this._workSegment.point1Ref); // how much further to extend each bridge ray
223362
+ const maxPoints = [];
223363
+ const findExtremePointsInLoop = (region) => {
223364
+ const area = _RegionOps__WEBPACK_IMPORTED_MODULE_1__.RegionOps.computeXYArea(region);
223365
+ if (area === undefined || Math.abs(area) < areaTol)
223366
+ return; // avoid bridging trivial faces
223367
+ this._workSegment = _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_13__.PlaneAltitudeRangeContext.findExtremePointsInDirection(region, direction, this._workSegment);
223368
+ if (this._workSegment)
223369
+ maxPoints.push(this._workSegment.point1Ref);
223370
+ };
223272
223371
  for (const groupMembers of [this.groupA.members, this.groupB.members]) {
223273
223372
  for (const m of groupMembers) {
223274
223373
  if (m.region instanceof _Loop__WEBPACK_IMPORTED_MODULE_8__.Loop) {
223275
- const lowHigh = _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_13__.PlaneAltitudeRangeContext.findExtremePointsInDirection(m.region, direction);
223276
- if (lowHigh && lowHigh.length === 2)
223277
- maxXPoints.push(lowHigh[1]);
223374
+ findExtremePointsInLoop(m.region);
223278
223375
  }
223279
223376
  else if (m.region instanceof _ParityRegion__WEBPACK_IMPORTED_MODULE_9__.ParityRegion) {
223280
- for (const loop of m.region.children) {
223281
- const lowHigh = _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_13__.PlaneAltitudeRangeContext.findExtremePointsInDirection(loop, direction);
223282
- if (lowHigh && lowHigh.length === 2)
223283
- maxXPoints.push(lowHigh[1]);
223284
- }
223377
+ for (const loop of m.region.children)
223378
+ findExtremePointsInLoop(loop);
223285
223379
  }
223286
223380
  }
223287
223381
  }
223288
- const xOut = _Geometry__WEBPACK_IMPORTED_MODULE_7__.Geometry.interpolate(rangeAB.low.x, 1.5, rangeAB.high.x);
223289
- const xShift = 0;
223290
- const yShift = -0.12328974132467 * rangeAB.yLength();
223291
- for (const p of maxXPoints) {
223292
- // Make a line from . .
223293
- // 1) exactly the max point of the loops to
223294
- // 2) a point clearly outside the big range, with y shifted down a bit.
223295
- // if p came from some inner loop this will . . ..
223296
- // 1 create a bridge from the inner loop through any containing loops (always)
223297
- // 2) avoid crossing any containing loop at a vertex. (with high probability, but not absolutely always)
223298
- const line = _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d.createXYXY(p.x - xShift, p.y, xOut, p.y + yShift);
223299
- this.extraGeometry.addMember(line, true);
223382
+ const ray = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_14__.Ray3d.createZero();
223383
+ direction.normalizeInPlace();
223384
+ for (const p of maxPoints) {
223385
+ // Make a line from...
223386
+ // 1) exactly the max point of the loops to
223387
+ // 2) a point clearly outside the big range
223388
+ // If p came from some inner loop this will...
223389
+ // 1) create a bridge from the inner loop through any containing loops (always)
223390
+ // 2) avoid crossing any containing loop at a vertex. (with high probability, but not absolutely always)
223391
+ const bridgeLength = margin + _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_14__.Ray3d.create(p, direction, ray).intersectionWithRange3d(rangeAB).high;
223392
+ const outside = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_12__.Point3d.createAdd2Scaled(p, 1.0, direction, bridgeLength);
223393
+ const bridgeLine = _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d.createXYXY(p.x, p.y, outside.x, outside.y);
223394
+ this.extraGeometry.addMember(bridgeLine, true);
223300
223395
  }
223301
223396
  }
223302
223397
  /**
@@ -223320,8 +223415,8 @@ class RegionBooleanContext {
223320
223415
  }
223321
223416
  }
223322
223417
  // const range = RegionOps.curveArrayRange(allPrimitives);
223323
- const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_14__.CurveCurve.allIntersectionsAmongPrimitivesXY(allPrimitives);
223324
- const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_15__.PlanarSubdivision.assembleHalfEdgeGraph(allPrimitives, intersections);
223418
+ const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_15__.CurveCurve.allIntersectionsAmongPrimitivesXY(allPrimitives);
223419
+ const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_16__.PlanarSubdivision.assembleHalfEdgeGraph(allPrimitives, intersections);
223325
223420
  this.graph = graph;
223326
223421
  this.faceAreaFunction = faceAreaFromCurvedEdgeData;
223327
223422
  }
@@ -223398,26 +223493,24 @@ class RegionBooleanContext {
223398
223493
  * @param delta
223399
223494
  */
223400
223495
  recordTransitionAcrossEdge(node, delta) {
223401
- const data = node.edgeTag;
223402
- if (data instanceof RegionGroupMember) {
223496
+ const updateRegionGroupMemberState = (member) => {
223497
+ if (member.parentGroup.groupOpType === RegionGroupOpType.NonBounding)
223498
+ return member; // no transition across a bridge edge
223403
223499
  if (delta !== 0) {
223404
- const oldSweepState = data.sweepState;
223405
- data.sweepState += delta;
223406
- data.parentGroup.recordMemberStateChange(oldSweepState, data.sweepState);
223500
+ const oldSweepState = member.sweepState;
223501
+ member.sweepState += delta;
223502
+ member.parentGroup.recordMemberStateChange(oldSweepState, member.sweepState);
223407
223503
  }
223408
- return data;
223409
- }
223410
- else if (data instanceof _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_16__.CurveLocationDetail) {
223504
+ return member;
223505
+ };
223506
+ const data = node.edgeTag;
223507
+ if (data instanceof RegionGroupMember)
223508
+ return updateRegionGroupMemberState(data);
223509
+ if (data instanceof _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_17__.CurveLocationDetail) {
223411
223510
  // We trust that the caller has linked from the graph node to a curve which has a RegionGroupMember as its parent.
223412
223511
  const member = data.curve.parent;
223413
- if (member instanceof RegionGroupMember) {
223414
- if (delta !== 0) {
223415
- const oldSweepState = member.sweepState;
223416
- member.sweepState += delta;
223417
- member.parentGroup.recordMemberStateChange(oldSweepState, member.sweepState);
223418
- }
223419
- return member;
223420
- }
223512
+ if (member instanceof RegionGroupMember)
223513
+ return updateRegionGroupMemberState(member);
223421
223514
  }
223422
223515
  return undefined;
223423
223516
  }
@@ -223435,8 +223528,9 @@ class RegionBooleanContext {
223435
223528
  }
223436
223529
  /** Announce entry to a graph face.
223437
223530
  * * Both both sides of a graph edge are from the same RegionGroupMember.
223438
- * * Hence "crossing that edge" jumps from changes the parity count for the RegionGroupMember that owns that edge by 1.
223531
+ * * Hence "crossing that edge" changes the parity count for the RegionGroupMember that owns that edge by 1.
223439
223532
  * * The parity count for other RegionGroupMembers are never affected by this crossing.
223533
+ * * Crossing a bridge edge does not change the parity count.
223440
223534
  */
223441
223535
  enterFace(_facePathStack, newFaceNode) {
223442
223536
  this.recordTransitionAcrossEdge(newFaceNode, 1);
@@ -223448,8 +223542,8 @@ class RegionBooleanContext {
223448
223542
  return true;
223449
223543
  }
223450
223544
  /** Announce face exit */
223451
- leaveFace(_facePathStack, _oldFaceNode) {
223452
- this.recordTransitionAcrossEdge(_oldFaceNode, -1);
223545
+ leaveFace(_facePathStack, oldFaceNode) {
223546
+ this.recordTransitionAcrossEdge(oldFaceNode, -1);
223453
223547
  return true;
223454
223548
  }
223455
223549
  }
@@ -223470,7 +223564,7 @@ function areaUnderPartialCurveXY(detail, xyStart, xyEnd, referencePoint) {
223470
223564
  if (detail.curve instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
223471
223565
  // ah .. nothing to do for a line segment
223472
223566
  }
223473
- else if (detail.curve instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_17__.Arc3d) {
223567
+ else if (detail.curve instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_18__.Arc3d) {
223474
223568
  areaToChord = detail.curve.areaToChordXY(detail.fraction, detail.fraction1);
223475
223569
  }
223476
223570
  }
@@ -225076,18 +225170,25 @@ __webpack_require__.r(__webpack_exports__);
225076
225170
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
225077
225171
  /* harmony export */ "PlaneAltitudeRangeContext": () => (/* binding */ PlaneAltitudeRangeContext)
225078
225172
  /* harmony export */ });
225173
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
225079
225174
  /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
225080
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
225175
+ /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
225176
+ /* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
225081
225177
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
225178
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
225179
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
225180
+ /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
225181
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
225082
225182
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
225083
- /* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
225084
225183
  /*---------------------------------------------------------------------------------------------
225085
225184
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
225086
225185
  * See LICENSE.md in the project root for license terms and full copyright notice.
225087
225186
  *--------------------------------------------------------------------------------------------*/
225088
- /** @packageDocumentation
225089
- * @module Curve
225090
- */
225187
+
225188
+
225189
+
225190
+
225191
+
225091
225192
 
225092
225193
 
225093
225194
 
@@ -225157,13 +225258,65 @@ class PlaneAltitudeRangeContext extends _geometry3d_GeometryHandler__WEBPACK_IMP
225157
225258
  this.announcePoint((this._workPoint = g.startPoint(this._workPoint)));
225158
225259
  this.announcePoint((this._workPoint = g.endPoint(this._workPoint)));
225159
225260
  }
225160
- static findExtremePointsInDirection(geometry, direction) {
225161
- const plane = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_3__.Plane3dByOriginAndUnitNormal.create(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__.Point3d.create(0, 0, 0), direction);
225261
+ static findExtremesInDirection(geometry, direction) {
225262
+ const origin = direction instanceof _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_3__.Ray3d ? direction.origin : _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__.Point3d.createZero();
225263
+ const vector = direction instanceof _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_3__.Ray3d ? direction.direction : direction;
225264
+ const plane = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(origin, vector); // vector is normalized, so altitudes are distances
225162
225265
  if (plane) {
225163
225266
  const context = new PlaneAltitudeRangeContext(plane);
225164
- geometry.dispatchToGeometryHandler(context);
225165
- if (context.highPoint && context.lowPoint)
225166
- return [context.lowPoint, context.highPoint];
225267
+ if (geometry instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_6__.GeometryQuery) {
225268
+ geometry.dispatchToGeometryHandler(context);
225269
+ }
225270
+ else if (geometry instanceof _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_7__.GrowableXYZArray) {
225271
+ context.announcePoints(geometry);
225272
+ }
225273
+ else {
225274
+ for (const pt of geometry)
225275
+ context.announcePoint(pt);
225276
+ }
225277
+ return context;
225278
+ }
225279
+ return undefined;
225280
+ }
225281
+ /** Compute altitudes for the geometry (via dispatch) over the plane defined by the given direction,
225282
+ * and return points at min and max altitude, packed into a `LineSegment3d`.
225283
+ * @param geometry geometry to project
225284
+ * @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with zero origin.
225285
+ * @param lowHigh optional receiver for output
225286
+ */
225287
+ static findExtremePointsInDirection(geometry, direction, lowHigh) {
225288
+ const context = this.findExtremesInDirection(geometry, direction);
225289
+ if (context && context.highPoint && context.lowPoint)
225290
+ return _LineSegment3d__WEBPACK_IMPORTED_MODULE_8__.LineSegment3d.create(context.lowPoint, context.highPoint, lowHigh);
225291
+ return undefined;
225292
+ }
225293
+ /** Compute altitudes for the geometry (via dispatch) over the plane defined by the given direction,
225294
+ * and return the min and max altitudes, packed into a Range1d.
225295
+ * @param geometry geometry to project
225296
+ * @param direction vector or ray on which to project the instance. A `Vector3d` is treated as a `Ray3d` with zero origin.
225297
+ * @param lowHigh optional receiver for output
225298
+ */
225299
+ static findExtremeAltitudesInDirection(geometry, direction, lowHigh) {
225300
+ const context = this.findExtremesInDirection(geometry, direction);
225301
+ if (context && !context.range.isNull)
225302
+ return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_1__.Range1d.createFrom(context.range, lowHigh);
225303
+ return undefined;
225304
+ }
225305
+ /** Project geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
225306
+ * @param geometry geometry to project
225307
+ * @param direction vector or ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
225308
+ * @param lowHigh optional receiver for output
225309
+ */
225310
+ static findExtremeFractionsAlongDirection(geometry, direction, lowHigh) {
225311
+ const range = this.findExtremeAltitudesInDirection(geometry, direction, lowHigh);
225312
+ if (undefined !== range) {
225313
+ const mag = (direction instanceof _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__.Vector3d) ? direction.magnitude() : direction.direction.magnitude();
225314
+ const scaleToFraction = _Geometry__WEBPACK_IMPORTED_MODULE_9__.Geometry.conditionalDivideCoordinate(1.0, mag);
225315
+ if (undefined !== scaleToFraction) {
225316
+ range.low *= scaleToFraction;
225317
+ range.high *= scaleToFraction;
225318
+ return range;
225319
+ }
225167
225320
  }
225168
225321
  return undefined;
225169
225322
  }
@@ -228205,13 +228358,14 @@ __webpack_require__.r(__webpack_exports__);
228205
228358
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
228206
228359
  /* harmony export */ "TransitionSpiral3d": () => (/* binding */ TransitionSpiral3d)
228207
228360
  /* harmony export */ });
228208
- /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
228361
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
228362
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
228209
228363
  /* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
228210
228364
  /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
228211
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
228365
+ /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
228212
228366
  /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
228367
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
228213
228368
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
228214
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
228215
228369
  /*---------------------------------------------------------------------------------------------
228216
228370
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
228217
228371
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -228226,6 +228380,7 @@ __webpack_require__.r(__webpack_exports__);
228226
228380
 
228227
228381
 
228228
228382
 
228383
+
228229
228384
  /**
228230
228385
  * TransitionSpiral3d is a base class for multiple variants of spirals.
228231
228386
  * * The menagerie of spiral types have 2 broad categories:
@@ -228362,6 +228517,14 @@ class TransitionSpiral3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.Cu
228362
228517
  count = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.clamp(5, count, 30);
228363
228518
  return this.rangeBetweenFractionsByCount(fractionA, fractionB, count, transform, 0.5);
228364
228519
  }
228520
+ /** Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
228521
+ * @param ray ray onto which the instance is projected. A `Vector3d` is treated as a `Ray3d` with zero origin.
228522
+ * @param lowHigh optional receiver for output
228523
+ * @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.
228524
+ */
228525
+ projectedParameterRange(ray, lowHigh) {
228526
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_7__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
228527
+ }
228365
228528
  }
228366
228529
 
228367
228530
 
@@ -243691,7 +243854,7 @@ class Range2d extends RangeBase {
243691
243854
  yLength() { const a = this.high.y - this.low.y; return a > 0.0 ? a : 0.0; }
243692
243855
  /** return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very large negative coordinates. */
243693
243856
  diagonal(result) { return this.low.vectorTo(this.high, result); }
243694
- /** return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very large negative coordinates. */
243857
+ /** 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. */
243695
243858
  diagonalFractionToPoint(fraction, result) { return this.low.interpolate(fraction, this.high, result); }
243696
243859
  /** return a point given by fractional positions on the XY axes. This is done with no check for isNull !!! */
243697
243860
  fractionToPoint(fractionX, fractionY, result) {
@@ -277401,16 +277564,17 @@ __webpack_require__.r(__webpack_exports__);
277401
277564
  /* harmony export */ "HalfEdgeGraphOps": () => (/* binding */ HalfEdgeGraphOps),
277402
277565
  /* harmony export */ "VertexNeighborhoodSortData": () => (/* binding */ VertexNeighborhoodSortData)
277403
277566
  /* harmony export */ });
277567
+ /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
277404
277568
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
277405
277569
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
277406
- /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
277570
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
277407
277571
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
277408
277572
  /* harmony import */ var _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../numerics/ClusterableArray */ "../../core/geometry/lib/esm/numerics/ClusterableArray.js");
277409
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
277573
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
277410
277574
  /* harmony import */ var _Graph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
277411
- /* harmony import */ var _HalfEdgePriorityQueue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./HalfEdgePriorityQueue */ "../../core/geometry/lib/esm/topology/HalfEdgePriorityQueue.js");
277412
- /* harmony import */ var _RegularizeFace__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./RegularizeFace */ "../../core/geometry/lib/esm/topology/RegularizeFace.js");
277413
- /* harmony import */ var _Triangulation__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
277575
+ /* harmony import */ var _HalfEdgePriorityQueue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./HalfEdgePriorityQueue */ "../../core/geometry/lib/esm/topology/HalfEdgePriorityQueue.js");
277576
+ /* harmony import */ var _RegularizeFace__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RegularizeFace */ "../../core/geometry/lib/esm/topology/RegularizeFace.js");
277577
+ /* harmony import */ var _Triangulation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
277414
277578
  /*---------------------------------------------------------------------------------------------
277415
277579
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
277416
277580
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -277425,6 +277589,7 @@ __webpack_require__.r(__webpack_exports__);
277425
277589
 
277426
277590
 
277427
277591
 
277592
+
277428
277593
  class GraphSplitData {
277429
277594
  constructor() {
277430
277595
  this.numUpEdge = 0;
@@ -277758,7 +277923,14 @@ class HalfEdgeGraphMerge {
277758
277923
  if (clusterTableIndex !== _numerics_ClusterableArray__WEBPACK_IMPORTED_MODULE_4__.ClusterableArray.clusterTerminator) {
277759
277924
  const nodeA = allNodes[clusterTableIndex];
277760
277925
  const nodeB = nodeA.faceSuccessor;
277761
- let radians = outboundRadiansFunction ? outboundRadiansFunction(nodeA) : Math.atan2(nodeB.y - nodeA.y, nodeB.x - nodeA.x);
277926
+ let getPrecomputedRadians = outboundRadiansFunction;
277927
+ if (getPrecomputedRadians) {
277928
+ // Recompute theta when edge geometry is completely determined by the vertices, which may have been perturbed by clustering.
277929
+ const detail = nodeA.edgeTag;
277930
+ if (undefined === detail || undefined === detail.curve || detail.curve instanceof _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_5__.LineSegment3d)
277931
+ getPrecomputedRadians = undefined;
277932
+ }
277933
+ let radians = getPrecomputedRadians ? getPrecomputedRadians(nodeA) : Math.atan2(nodeB.y - nodeA.y, nodeB.x - nodeA.x);
277762
277934
  if (_geometry3d_Angle__WEBPACK_IMPORTED_MODULE_3__.Angle.isAlmostEqualRadiansAllowPeriodShift(radians, -Math.PI))
277763
277935
  radians = Math.PI;
277764
277936
  clusters.setExtraData(clusterTableIndex, 0, radians);
@@ -277838,7 +278010,7 @@ class HalfEdgeGraphMerge {
277838
278010
  }
277839
278011
  }
277840
278012
  static buildVerticalSweepPriorityQueue(graph) {
277841
- const sweepHeap = new _HalfEdgePriorityQueue__WEBPACK_IMPORTED_MODULE_5__.HalfEdgePriorityQueueWithPartnerArray();
278013
+ const sweepHeap = new _HalfEdgePriorityQueue__WEBPACK_IMPORTED_MODULE_6__.HalfEdgePriorityQueueWithPartnerArray();
277842
278014
  for (const p of graph.allHalfEdges) {
277843
278015
  if (HalfEdgeGraphOps.compareNodesYXUp(p, p.faceSuccessor) < 0) {
277844
278016
  sweepHeap.priorityQueue.push(p);
@@ -277863,7 +278035,7 @@ class HalfEdgeGraphMerge {
277863
278035
  const vx = nodeB1.x - bx0;
277864
278036
  const vy = nodeB1.y - by0;
277865
278037
  // cspell:word lineSegmentXYUVTransverseIntersectionUnbounded
277866
- if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegmentXYUVTransverseIntersectionUnbounded(ax0, ay0, ux, uy, bx0, by0, vx, vy, fractions)) {
278038
+ if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegmentXYUVTransverseIntersectionUnbounded(ax0, ay0, ux, uy, bx0, by0, vx, vy, fractions)) {
277867
278039
  pointA.x = ax0 + fractions.x * ux;
277868
278040
  pointA.y = ay0 + fractions.x * uy;
277869
278041
  pointB.x = bx0 + fractions.y * vx;
@@ -277888,9 +278060,9 @@ class HalfEdgeGraphMerge {
277888
278060
  const smallFraction = 1.0e-8;
277889
278061
  const largeFraction = 1.0 - smallFraction;
277890
278062
  let i;
277891
- const fractions = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__.Vector2d.create();
277892
- const pointA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__.Point2d.create();
277893
- const pointB = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_7__.Point2d.create();
278063
+ const fractions = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_8__.Vector2d.create();
278064
+ const pointA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_8__.Point2d.create();
278065
+ const pointB = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_8__.Point2d.create();
277894
278066
  let nodeB0;
277895
278067
  const popTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance;
277896
278068
  while (undefined !== (nodeA0 = sweepHeap.priorityQueue.pop())) {
@@ -277955,13 +278127,13 @@ class HalfEdgeGraphMerge {
277955
278127
  if (chains.length < 1)
277956
278128
  return undefined;
277957
278129
  const graph = new _Graph__WEBPACK_IMPORTED_MODULE_2__.HalfEdgeGraph();
277958
- const chainSeeds = _Triangulation__WEBPACK_IMPORTED_MODULE_8__.Triangulator.directCreateChainsFromCoordinates(graph, chains);
278130
+ const chainSeeds = _Triangulation__WEBPACK_IMPORTED_MODULE_9__.Triangulator.directCreateChainsFromCoordinates(graph, chains);
277959
278131
  for (const seed of chainSeeds)
277960
278132
  seed.setMaskAroundFace(mask);
277961
278133
  this.splitIntersectingEdges(graph);
277962
278134
  this.clusterAndMergeXYTheta(graph);
277963
278135
  if (regularize) {
277964
- const context = new _RegularizeFace__WEBPACK_IMPORTED_MODULE_9__.RegularizationContext(graph);
278136
+ const context = new _RegularizeFace__WEBPACK_IMPORTED_MODULE_10__.RegularizationContext(graph);
277965
278137
  context.regularizeGraph(true, true);
277966
278138
  }
277967
278139
  return graph;
@@ -310534,7 +310706,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
310534
310706
  /***/ ((module) => {
310535
310707
 
310536
310708
  "use strict";
310537
- 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"}}]}}');
310709
+ 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"}}]}}');
310538
310710
 
310539
310711
  /***/ })
310540
310712