@itwin/rpcinterface-full-stack-tests 4.3.0-dev.14 → 4.3.0-dev.16

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.
@@ -79170,8 +79170,11 @@ class SectionAttachmentInfo {
79170
79170
  displaySpatialView: this._displaySpatialView,
79171
79171
  };
79172
79172
  }
79173
- clone() {
79174
- return new SectionAttachmentInfo(this._spatialView, this._drawingToSpatialTransform, this._displaySpatialView);
79173
+ clone(iModel) {
79174
+ let spatialView = this._spatialView;
79175
+ if (spatialView instanceof _ViewState__WEBPACK_IMPORTED_MODULE_14__.ViewState3d)
79176
+ spatialView = spatialView.clone(iModel);
79177
+ return new SectionAttachmentInfo(spatialView, this._drawingToSpatialTransform, this._displaySpatialView);
79175
79178
  }
79176
79179
  preload(options) {
79177
79180
  if (!this.wantDisplayed)
@@ -79365,7 +79368,7 @@ class DrawingViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_14__.ViewStat
79365
79368
  if (categories instanceof DrawingViewState) {
79366
79369
  this._viewedExtents = categories._viewedExtents.clone();
79367
79370
  this._modelLimits = { ...categories._modelLimits };
79368
- this._attachmentInfo = categories._attachmentInfo.clone();
79371
+ this._attachmentInfo = categories._attachmentInfo.clone(iModel);
79369
79372
  }
79370
79373
  else {
79371
79374
  this._viewedExtents = extents;
@@ -87851,6 +87854,7 @@ class SheetBorder {
87851
87854
  * SheetViewState.load(). The Attachments object is created in SheetViewState.attachToViewport and disposed of in SheetViewState.detachFromViewport.
87852
87855
  */
87853
87856
  class ViewAttachmentsInfo {
87857
+ get attachments() { return this._attachments; }
87854
87858
  constructor(attachments) {
87855
87859
  this._attachments = attachments;
87856
87860
  }
@@ -87874,9 +87878,19 @@ class ViewAttachmentsInfo {
87874
87878
  toJSON() {
87875
87879
  return this.isLoaded ? this._props.map((x) => x.id) : [...this._ids];
87876
87880
  }
87877
- clone() {
87878
- // No reason to clone the array.
87879
- return new ViewAttachmentsInfo(this._attachments);
87881
+ clone(iModel) {
87882
+ let attachments = this._attachments;
87883
+ if (this.isLoaded) {
87884
+ // Need to clone the attached ViewStates.
87885
+ attachments = attachments.map((attachment) => {
87886
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(typeof attachment !== "string");
87887
+ return {
87888
+ ...attachment,
87889
+ attachedView: attachment.attachedView.clone(iModel),
87890
+ };
87891
+ });
87892
+ }
87893
+ return new ViewAttachmentsInfo(attachments);
87880
87894
  }
87881
87895
  preload(options) {
87882
87896
  if (this.isLoaded)
@@ -88039,7 +88053,16 @@ class SheetViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_13__.ViewState2
88039
88053
  }
88040
88054
  /** Strictly for testing. @internal */
88041
88055
  get viewAttachmentProps() {
88042
- return this._attachmentsInfo.viewAttachmentProps;
88056
+ return this._attachmentsInfo.viewAttachmentProps.map((x) => {
88057
+ return {
88058
+ ...x,
88059
+ attachedView: undefined,
88060
+ };
88061
+ });
88062
+ }
88063
+ /** Strictly for testing. @internal */
88064
+ get viewAttachmentInfos() {
88065
+ return this._attachmentsInfo.attachments;
88043
88066
  }
88044
88067
  /** Strictly for testing. @internal */
88045
88068
  get attachments() {
@@ -88054,7 +88077,7 @@ class SheetViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_13__.ViewState2
88054
88077
  if (categories instanceof SheetViewState) {
88055
88078
  // we are coming from clone...
88056
88079
  this.sheetSize = categories.sheetSize.clone();
88057
- this._attachmentsInfo = categories._attachmentsInfo.clone();
88080
+ this._attachmentsInfo = categories._attachmentsInfo.clone(iModel);
88058
88081
  this._viewedExtents = categories._viewedExtents.clone();
88059
88082
  }
88060
88083
  else {
@@ -88657,6 +88680,7 @@ class SpatialViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_6__.ViewState
88657
88680
  this.registerModelSelectorListeners();
88658
88681
  this.onViewedModelsChanged.raiseEvent();
88659
88682
  }
88683
+ this.markModelSelectorChanged();
88660
88684
  }
88661
88685
  /** Create a new *blank* SpatialViewState. The returned SpatialViewState will nave non-persistent empty [[CategorySelectorState]] and [[ModelSelectorState]],
88662
88686
  * and a non-persistent [[DisplayStyle3dState]] with default values for all of its components. Generally after creating a blank SpatialViewState,
@@ -151029,7 +151053,7 @@ class ArcGisUtilities {
151029
151053
  // and return information needed to initiate the authentification process... the end-user
151030
151054
  // will have to provide his credentials before we can fully validate this source.
151031
151055
  if (json.error.code === ArcGisErrorCode.TokenRequired) {
151032
- return { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.RequireAuth };
151056
+ return (userName || password) ? { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidCredentials } : { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.RequireAuth };
151033
151057
  }
151034
151058
  else if (json.error.code === ArcGisErrorCode.InvalidCredentials)
151035
151059
  return { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidCredentials };
@@ -181300,28 +181324,31 @@ __webpack_require__.r(__webpack_exports__);
181300
181324
  /* harmony export */ ClipStepAction: () => (/* binding */ ClipStepAction),
181301
181325
  /* harmony export */ ClipUtilities: () => (/* binding */ ClipUtilities)
181302
181326
  /* harmony export */ });
181303
- /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
181304
- /* harmony import */ var _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../curve/CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
181305
- /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
181306
- /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
181307
- /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
181308
- /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
181309
- /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
181310
- /* harmony import */ var _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../curve/UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
181311
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
181312
- /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
181313
- /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
181314
- /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
181315
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
181316
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
181317
- /* harmony import */ var _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/ReusableObjectCache */ "../../core/geometry/lib/esm/geometry3d/ReusableObjectCache.js");
181318
- /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
181319
- /* harmony import */ var _ClipPlane__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
181320
- /* harmony import */ var _ClipPrimitive__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./ClipPrimitive */ "../../core/geometry/lib/esm/clipping/ClipPrimitive.js");
181321
- /* harmony import */ var _ClipVector__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ClipVector */ "../../core/geometry/lib/esm/clipping/ClipVector.js");
181322
- /* harmony import */ var _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
181323
- /* harmony import */ var _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./internalContexts/LineStringOffsetClipperContext */ "../../core/geometry/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js");
181324
- /* harmony import */ var _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./UnionOfConvexClipPlaneSets */ "../../core/geometry/lib/esm/clipping/UnionOfConvexClipPlaneSets.js");
181327
+ /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
181328
+ /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
181329
+ /* harmony import */ var _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../curve/CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
181330
+ /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
181331
+ /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
181332
+ /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
181333
+ /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
181334
+ /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
181335
+ /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
181336
+ /* harmony import */ var _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
181337
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
181338
+ /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
181339
+ /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
181340
+ /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
181341
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
181342
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
181343
+ /* harmony import */ var _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/ReusableObjectCache */ "../../core/geometry/lib/esm/geometry3d/ReusableObjectCache.js");
181344
+ /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
181345
+ /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
181346
+ /* harmony import */ var _ClipPlane__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
181347
+ /* harmony import */ var _ClipPrimitive__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ClipPrimitive */ "../../core/geometry/lib/esm/clipping/ClipPrimitive.js");
181348
+ /* harmony import */ var _ClipVector__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./ClipVector */ "../../core/geometry/lib/esm/clipping/ClipVector.js");
181349
+ /* harmony import */ var _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
181350
+ /* harmony import */ var _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./internalContexts/LineStringOffsetClipperContext */ "../../core/geometry/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js");
181351
+ /* harmony import */ var _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./UnionOfConvexClipPlaneSets */ "../../core/geometry/lib/esm/clipping/UnionOfConvexClipPlaneSets.js");
181325
181352
  /*---------------------------------------------------------------------------------------------
181326
181353
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
181327
181354
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -181347,6 +181374,9 @@ __webpack_require__.r(__webpack_exports__);
181347
181374
 
181348
181375
 
181349
181376
 
181377
+
181378
+
181379
+
181350
181380
 
181351
181381
 
181352
181382
 
@@ -181412,7 +181442,7 @@ class ClipUtilities {
181412
181442
  const n = unsortedFractions.length;
181413
181443
  for (let i = 1; i < n; i++) {
181414
181444
  f1 = unsortedFractions.atUncheckedIndex(i);
181415
- if (f1 > f0 + _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallFraction) {
181445
+ if (f1 > f0 + _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallFraction) {
181416
181446
  fMid = 0.5 * (f0 + f1);
181417
181447
  if (fMid >= 0.0 && fMid <= 1.0) {
181418
181448
  curve.fractionToPoint(fMid, testPoint);
@@ -181469,7 +181499,7 @@ class ClipUtilities {
181469
181499
  let result;
181470
181500
  // Create "local region" which is the result of rotating region to make
181471
181501
  // it parallel to the xy-plane and then translating it to the xy-plane.
181472
- const localToWorld = ClipUtilities._workTransform = _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_1__.FrameBuilder.createRightHandedFrame(undefined, region, ClipUtilities._workTransform);
181502
+ const localToWorld = ClipUtilities._workTransform = _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_2__.FrameBuilder.createRightHandedFrame(undefined, region, ClipUtilities._workTransform);
181473
181503
  if (!localToWorld)
181474
181504
  return result;
181475
181505
  const worldToLocal = localToWorld?.inverse();
@@ -181486,24 +181516,24 @@ class ClipUtilities {
181486
181516
  const localRegionRange = ClipUtilities._workRange = localRegion.range();
181487
181517
  const xLength = localRegionRange.xLength();
181488
181518
  const yLength = localRegionRange.yLength();
181489
- const rectangle = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_2__.LineString3d.createRectangleXY(localRegionRange.low, xLength, yLength, true);
181519
+ const rectangle = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__.LineString3d.createRectangleXY(localRegionRange.low, xLength, yLength, true);
181490
181520
  rectangle.tryTransformInPlace(localToWorld);
181491
181521
  // Clip the rectangle to produce fragment(s) which we can Boolean intersect with the input region.
181492
181522
  const insideFragments = [];
181493
181523
  const outsideFragments = [];
181494
- const cache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_3__.GrowableXYZArrayCache();
181524
+ const cache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_4__.GrowableXYZArrayCache();
181495
181525
  clipper.appendPolygonClip?.(rectangle.packedPoints, insideFragments, outsideFragments, cache);
181496
181526
  if (insideFragments.length === 0)
181497
181527
  return result;
181498
181528
  // Create the "clipped region".
181499
181529
  for (const fragment of insideFragments) {
181500
- const loop = _curve_Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(fragment);
181530
+ const loop = _curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop.createPolygon(fragment);
181501
181531
  loop.tryTransformInPlace(worldToLocal);
181502
- const clippedLocalRegion = _curve_RegionOps__WEBPACK_IMPORTED_MODULE_5__.RegionOps.regionBooleanXY(localRegion, loop, _curve_RegionOps__WEBPACK_IMPORTED_MODULE_5__.RegionBinaryOpType.Intersection);
181532
+ const clippedLocalRegion = _curve_RegionOps__WEBPACK_IMPORTED_MODULE_6__.RegionOps.regionBooleanXY(localRegion, loop, _curve_RegionOps__WEBPACK_IMPORTED_MODULE_6__.RegionBinaryOpType.Intersection);
181503
181533
  if (clippedLocalRegion) {
181504
181534
  clippedLocalRegion.tryTransformInPlace(localToWorld);
181505
181535
  if (!result)
181506
- result = (clippedLocalRegion instanceof _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_6__.UnionRegion) ? clippedLocalRegion : _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_6__.UnionRegion.create(clippedLocalRegion);
181536
+ result = (clippedLocalRegion instanceof _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_7__.UnionRegion) ? clippedLocalRegion : _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_7__.UnionRegion.create(clippedLocalRegion);
181507
181537
  else if (!result.tryAddChild(clippedLocalRegion))
181508
181538
  result.children.push(...clippedLocalRegion.children);
181509
181539
  }
@@ -181517,14 +181547,14 @@ class ClipUtilities {
181517
181547
  * @return array of clipped components of the input curve or region that lie inside the clipper
181518
181548
  */
181519
181549
  static clipAnyCurve(curve, clipper) {
181520
- if (curve instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_7__.CurvePrimitive)
181550
+ if (curve instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_8__.CurvePrimitive)
181521
181551
  return ClipUtilities.collectClippedCurves(curve, clipper);
181522
181552
  if (curve.isAnyRegion()) {
181523
181553
  const ret = ClipUtilities.clipAnyRegion(curve, clipper);
181524
181554
  return ret ? [ret] : [];
181525
181555
  }
181526
181556
  const result = [];
181527
- if (curve instanceof _curve_Path__WEBPACK_IMPORTED_MODULE_8__.Path || curve instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_9__.BagOfCurves) {
181557
+ if (curve instanceof _curve_Path__WEBPACK_IMPORTED_MODULE_9__.Path || curve instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_10__.BagOfCurves) {
181528
181558
  for (const child of curve.children) {
181529
181559
  const partialClip = ClipUtilities.clipAnyCurve(child, clipper);
181530
181560
  result.push(...partialClip);
@@ -181570,8 +181600,8 @@ class ClipUtilities {
181570
181600
  for (const plane of convexSet.planes) {
181571
181601
  let numInside = 0, numOutside = 0;
181572
181602
  const planeDistance = plane.distance - tolerance;
181573
- const currPt = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_10__.Point3d.create();
181574
- const currVec = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_10__.Vector3d.create();
181603
+ const currPt = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_11__.Point3d.create();
181604
+ const currVec = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_11__.Vector3d.create();
181575
181605
  for (let i = 0; i < points.length; i++) {
181576
181606
  points.getPoint3dAtUncheckedPointIndex(i, currPt);
181577
181607
  currVec.setFrom(currPt);
@@ -181599,15 +181629,15 @@ class ClipUtilities {
181599
181629
  * @param ignoreInvisiblePlanes if true, do NOT compute a facet for convex set faces marked invisible.
181600
181630
  */
181601
181631
  static announceLoopsOfConvexClipPlaneSetIntersectRange(convexSet, range, loopFunction, includeConvexSetFaces = true, includeRangeFaces = true, ignoreInvisiblePlanes = false) {
181602
- const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
181632
+ const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
181603
181633
  if (includeConvexSetFaces) {
181604
181634
  // Clip convexSet planes to the range and to the rest of the convexSet . .
181605
- if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet) {
181635
+ if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet) {
181606
181636
  for (const plane of convexSet.planes) {
181607
181637
  if (ignoreInvisiblePlanes && plane.invisible)
181608
181638
  continue;
181609
181639
  const pointsClippedToRange = plane.intersectRange(range, true);
181610
- const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
181640
+ const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
181611
181641
  if (pointsClippedToRange) {
181612
181642
  convexSet.polygonClip(pointsClippedToRange, finalPoints, work, plane);
181613
181643
  if (finalPoints.length > 0)
@@ -181630,10 +181660,10 @@ class ClipUtilities {
181630
181660
  // clip range faces to the convex set . . .
181631
181661
  const corners = range.corners();
181632
181662
  for (let i = 0; i < 6; i++) {
181633
- const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range3d.faceCornerIndices(i);
181634
- const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
181635
- const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_2__.LineString3d.createIndexedPoints(corners, indices);
181636
- if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet) {
181663
+ const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.faceCornerIndices(i);
181664
+ const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
181665
+ const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__.LineString3d.createIndexedPoints(corners, indices);
181666
+ if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet) {
181637
181667
  convexSet.polygonClip(lineString.packedPoints, finalPoints, work);
181638
181668
  if (finalPoints.length > 0)
181639
181669
  loopFunction(finalPoints);
@@ -181658,18 +181688,18 @@ class ClipUtilities {
181658
181688
  */
181659
181689
  static loopsOfConvexClipPlaneIntersectionWithRange(allClippers, range, includeConvexSetFaces = true, includeRangeFaces = true, ignoreInvisiblePlanes = false) {
181660
181690
  const result = [];
181661
- if (allClippers instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__.UnionOfConvexClipPlaneSets) {
181691
+ if (allClippers instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__.UnionOfConvexClipPlaneSets) {
181662
181692
  for (const clipper of allClippers.convexSets) {
181663
181693
  this.announceLoopsOfConvexClipPlaneSetIntersectRange(clipper, range, (points) => {
181664
181694
  if (points.length > 0)
181665
- result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(points));
181695
+ result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop.createPolygon(points));
181666
181696
  }, includeConvexSetFaces, includeRangeFaces, ignoreInvisiblePlanes);
181667
181697
  }
181668
181698
  }
181669
- else if (allClippers instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet || allClippers instanceof _ClipPlane__WEBPACK_IMPORTED_MODULE_15__.ClipPlane) {
181699
+ else if (allClippers instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet || allClippers instanceof _ClipPlane__WEBPACK_IMPORTED_MODULE_16__.ClipPlane) {
181670
181700
  this.announceLoopsOfConvexClipPlaneSetIntersectRange(allClippers, range, (points) => {
181671
181701
  if (points.length > 0)
181672
- result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(points));
181702
+ result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop.createPolygon(points));
181673
181703
  }, includeConvexSetFaces, includeRangeFaces, ignoreInvisiblePlanes);
181674
181704
  }
181675
181705
  return result;
@@ -181681,7 +181711,7 @@ class ClipUtilities {
181681
181711
  * @param range range to intersect
181682
181712
  */
181683
181713
  static rangeOfConvexClipPlaneSetIntersectionWithRange(convexSet, range) {
181684
- const result = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range3d.createNull();
181714
+ const result = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.createNull();
181685
181715
  this.announceLoopsOfConvexClipPlaneSetIntersectRange(convexSet, range, (points) => {
181686
181716
  if (points.length > 0)
181687
181717
  result.extendArray(points);
@@ -181704,22 +181734,22 @@ class ClipUtilities {
181704
181734
  static rangeOfClipperIntersectionWithRange(clipper, range, observeInvisibleFlag = true) {
181705
181735
  if (clipper === undefined)
181706
181736
  return range.clone();
181707
- if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet)
181737
+ if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet)
181708
181738
  return this.rangeOfConvexClipPlaneSetIntersectionWithRange(clipper, range);
181709
- if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__.UnionOfConvexClipPlaneSets) {
181710
- const rangeUnion = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range3d.createNull();
181739
+ if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__.UnionOfConvexClipPlaneSets) {
181740
+ const rangeUnion = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.createNull();
181711
181741
  for (const c of clipper.convexSets) {
181712
181742
  const rangeC = this.rangeOfConvexClipPlaneSetIntersectionWithRange(c, range);
181713
181743
  rangeUnion.extendRange(rangeC);
181714
181744
  }
181715
181745
  return rangeUnion;
181716
181746
  }
181717
- if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_16__.ClipPrimitive) {
181747
+ if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_17__.ClipPrimitive) {
181718
181748
  if (observeInvisibleFlag && clipper.invisible)
181719
181749
  return range.clone();
181720
181750
  return this.rangeOfClipperIntersectionWithRange(clipper.fetchClipPlanesRef(), range);
181721
181751
  }
181722
- if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_17__.ClipVector) {
181752
+ if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_18__.ClipVector) {
181723
181753
  const rangeIntersection = range.clone();
181724
181754
  for (const c of clipper.clips) {
181725
181755
  if (observeInvisibleFlag && c.invisible) {
@@ -181751,21 +181781,21 @@ class ClipUtilities {
181751
181781
  static doesClipperIntersectRange(clipper, range, observeInvisibleFlag = true) {
181752
181782
  if (clipper === undefined)
181753
181783
  return true;
181754
- if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet)
181784
+ if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet)
181755
181785
  return this.doesConvexClipPlaneSetIntersectRange(clipper, range);
181756
- if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__.UnionOfConvexClipPlaneSets) {
181786
+ if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__.UnionOfConvexClipPlaneSets) {
181757
181787
  for (const c of clipper.convexSets) {
181758
181788
  if (this.doesConvexClipPlaneSetIntersectRange(c, range))
181759
181789
  return true;
181760
181790
  }
181761
181791
  return false;
181762
181792
  }
181763
- if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_16__.ClipPrimitive) {
181793
+ if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_17__.ClipPrimitive) {
181764
181794
  if (observeInvisibleFlag && clipper.invisible) // um is there an easy way to detect range-completely-inside?
181765
181795
  return true;
181766
181796
  return this.doesClipperIntersectRange(clipper.fetchClipPlanesRef(), range);
181767
181797
  }
181768
- if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_17__.ClipVector) {
181798
+ if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_18__.ClipVector) {
181769
181799
  const rangeIntersection = range.clone();
181770
181800
  for (const c of clipper.clips) {
181771
181801
  if (observeInvisibleFlag && c.invisible) {
@@ -181790,7 +181820,7 @@ class ClipUtilities {
181790
181820
  * @param ignoreInvisiblePlanes if true, do NOT compute a facet for convex set faces marked invisible.
181791
181821
  */
181792
181822
  static doesConvexClipPlaneSetIntersectRange(convexSet, range, includeConvexSetFaces = true, includeRangeFaces = true, ignoreInvisiblePlanes = false) {
181793
- const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
181823
+ const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
181794
181824
  if (includeConvexSetFaces) {
181795
181825
  // Clip convexSet planes to the range and to the rest of the convexSet . .
181796
181826
  for (const plane of convexSet.planes) {
@@ -181798,7 +181828,7 @@ class ClipUtilities {
181798
181828
  continue;
181799
181829
  const pointsClippedToRange = plane.intersectRange(range, true);
181800
181830
  if (pointsClippedToRange) {
181801
- const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
181831
+ const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
181802
181832
  convexSet.polygonClip(pointsClippedToRange, finalPoints, work, plane);
181803
181833
  if (finalPoints.length > 0)
181804
181834
  return true;
@@ -181809,9 +181839,9 @@ class ClipUtilities {
181809
181839
  // clip range faces to the convex set . . .
181810
181840
  const corners = range.corners();
181811
181841
  for (let i = 0; i < 6; i++) {
181812
- const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range3d.faceCornerIndices(i);
181813
- const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
181814
- const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_2__.LineString3d.createIndexedPoints(corners, indices);
181842
+ const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.faceCornerIndices(i);
181843
+ const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
181844
+ const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__.LineString3d.createIndexedPoints(corners, indices);
181815
181845
  convexSet.polygonClip(lineString.packedPoints, finalPoints, work);
181816
181846
  if (finalPoints.length > 0)
181817
181847
  return true;
@@ -181819,32 +181849,110 @@ class ClipUtilities {
181819
181849
  }
181820
181850
  return false;
181821
181851
  }
181852
+ /**
181853
+ * Create a clipper from the transformed range.
181854
+ * @param range input range to create clipper from
181855
+ * @param transform how to transform the range (NOTE: applied to the range faces without swelling the range volume)
181856
+ * @param degeneratePoints optionally populated with the 1 or 2 points defining the transformed range if it is degenerate (all points colinear/coincident); otherwise untouched
181857
+ * @returns newly constructed clipper. If no clip planes could be computed, fill `degeneratePoints` and return undefined.
181858
+ */
181859
+ static createClipperFromTransformedRange3d(range, transform, degeneratePoints) {
181860
+ if (!transform)
181861
+ transform = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_19__.Transform.createIdentity();
181862
+ const builder = _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_20__.PolyfaceBuilder.create();
181863
+ builder.addTransformedRangeMesh(transform, range);
181864
+ const mesh = builder.claimPolyface();
181865
+ const clipper = this._workClipper = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet.createConvexPolyface(mesh, this._workClipper).clipper;
181866
+ if (clipper.planes.length > 0)
181867
+ return clipper;
181868
+ // no faces found in the compressed mesh
181869
+ if (degeneratePoints) {
181870
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(mesh.data.point.length <= 2);
181871
+ for (let i = 0; i < 2; ++i) {
181872
+ const point = mesh.data.point.getPoint3dAtCheckedPointIndex(i);
181873
+ if (point)
181874
+ degeneratePoints.push(point);
181875
+ }
181876
+ }
181877
+ return undefined;
181878
+ }
181879
+ /**
181880
+ * Handle pathological cases of range-range intersection, where one of the ranges defines no area or volume (is a line segment or single point).
181881
+ * @param range local range to intersect with the point/segment
181882
+ * @param points isolated local point, or local segment's start and end
181883
+ * @param localToWorld optional transform for output range
181884
+ * @param intersection optional range of the intersection, in world coordinates, or null range if no intersection.
181885
+ * @returns whether the point/segment intersects the range
181886
+ */
181887
+ static rangeIntersectPointOrSegment(range, points, localToWorld, intersection) {
181888
+ const announceInterval = intersection ?
181889
+ (f0, f1, cp) => {
181890
+ intersection.extendPoint(cp.fractionToPoint(f0), localToWorld);
181891
+ intersection.extendPoint(cp.fractionToPoint(f1), localToWorld);
181892
+ } : undefined;
181893
+ let hasIntersection = false;
181894
+ if (points.length > 1) {
181895
+ const segment = _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_21__.LineSegment3d.createCapture(points[0], points[1]);
181896
+ const clipper = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet.createRange3dPlanes(range);
181897
+ hasIntersection = segment.announceClipIntervals(clipper, announceInterval);
181898
+ }
181899
+ else if (points.length > 0) {
181900
+ hasIntersection = range.containsPoint(points[0]);
181901
+ if (hasIntersection && intersection)
181902
+ intersection.extendPoint(points[0], localToWorld);
181903
+ }
181904
+ return hasIntersection;
181905
+ }
181822
181906
  /**
181823
181907
  * Test for intersection of two ranges in different local coordinates.
181824
181908
  * * Useful for clash detection of elements in iModels, using their stored (tight) local ranges and placement transforms.
181825
- * @param range0 range in local coordinates of first geometry
181826
- * @param local0ToWorld placement transform for first geometry
181827
- * @param range1 range in local coordinates of second geometry
181828
- * @param local1ToWorld placement transform for second geometry. Assumed to be invertible.
181909
+ * @param range0 first range in local coordinates
181910
+ * @param local0ToWorld placement transform for first range
181911
+ * @param range1 second range in local coordinates
181912
+ * @param local1ToWorld placement transform for second range. Assumed to be invertible.
181829
181913
  * @param range1Margin optional signed local distance to expand/contract the second range before intersection. Positive expands.
181830
181914
  * @return whether the local ranges are adjacent or intersect. Also returns false if local1ToWorld is singular.
181831
181915
  */
181832
181916
  static doLocalRangesIntersect(range0, local0ToWorld, range1, local1ToWorld, range1Margin) {
181833
- const worldToLocal1 = ClipUtilities._workTransform = local1ToWorld.inverse(ClipUtilities._workTransform);
181917
+ const worldToLocal1 = this._workTransform = local1ToWorld.inverse(this._workTransform);
181834
181918
  if (!worldToLocal1)
181835
181919
  return false;
181836
181920
  let myRange1 = range1;
181837
181921
  if (range1Margin) {
181838
- myRange1 = ClipUtilities._workRange = range1.clone(ClipUtilities._workRange);
181922
+ myRange1 = this._workRange = range1.clone(this._workRange);
181839
181923
  myRange1.expandInPlace(range1Margin);
181840
181924
  }
181925
+ const degeneratePoints = [];
181926
+ const local0ToLocal1 = worldToLocal1.multiplyTransformTransform(local0ToWorld, worldToLocal1);
181841
181927
  // convert range0 into a clipper in local1 coordinates, then intersect with range1
181928
+ const clipper = this.createClipperFromTransformedRange3d(range0, local0ToLocal1, degeneratePoints);
181929
+ if (clipper)
181930
+ return this.doesClipperIntersectRange(clipper, myRange1);
181931
+ return this.rangeIntersectPointOrSegment(myRange1, degeneratePoints, local1ToWorld);
181932
+ }
181933
+ /**
181934
+ * Compute the range of the intersection between two local (e.g., element-aligned) ranges.
181935
+ * @param range0 first range in local coordinates
181936
+ * @param local0ToWorld placement transform for first range
181937
+ * @param range1 second range in local coordinates
181938
+ * @param local1ToWorld placement transform for second range. Assumed to be invertible.
181939
+ * @param result optional pre-allocated range to fill and return
181940
+ * @return range of the intersection (aligned to world axes). Returns null range if local1ToWorld is singular.
181941
+ */
181942
+ static rangeOfIntersectionOfLocalRanges(range0, local0ToWorld, range1, local1ToWorld, result) {
181943
+ const myResult = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.createNull(result);
181944
+ const worldToLocal1 = this._workTransform = local1ToWorld.inverse(this._workTransform);
181945
+ if (!worldToLocal1)
181946
+ return myResult;
181947
+ const degeneratePoints = [];
181842
181948
  const local0ToLocal1 = worldToLocal1.multiplyTransformTransform(local0ToWorld, worldToLocal1);
181843
- const builder = _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_18__.PolyfaceBuilder.create();
181844
- builder.addTransformedRangeMesh(local0ToLocal1, range0);
181845
- const mesh0 = builder.claimPolyface();
181846
- const clipper = ClipUtilities._workClipper = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet.createConvexPolyface(mesh0, ClipUtilities._workClipper).clipper;
181847
- return ClipUtilities.doesClipperIntersectRange(clipper, myRange1);
181949
+ // convert range0 into a clipper in local1 coordinates, then intersect with range1
181950
+ const clipper = this.createClipperFromTransformedRange3d(range0, local0ToLocal1, degeneratePoints);
181951
+ if (clipper)
181952
+ this.announceLoopsOfConvexClipPlaneSetIntersectRange(clipper, range1, (loopPoints) => { loopPoints.extendRange(myResult, local1ToWorld); });
181953
+ else
181954
+ this.rangeIntersectPointOrSegment(range1, degeneratePoints, local1ToWorld, myResult);
181955
+ return myResult;
181848
181956
  }
181849
181957
  /**
181850
181958
  * Test if `obj` is a `Clipper` object.
@@ -181895,9 +182003,9 @@ class ClipUtilities {
181895
182003
  */
181896
182004
  static createXYOffsetClipFromLineString(points, leftOffset, rightOffset, z0, z1) {
181897
182005
  if (Array.isArray(points)) {
181898
- return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_19__.LineStringOffsetClipperContext.createClipBetweenOffsets(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_20__.Point3dArrayCarrier(points), leftOffset, rightOffset, z0, z1);
182006
+ return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_22__.LineStringOffsetClipperContext.createClipBetweenOffsets(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_23__.Point3dArrayCarrier(points), leftOffset, rightOffset, z0, z1);
181899
182007
  }
181900
- return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_19__.LineStringOffsetClipperContext.createClipBetweenOffsets(points, leftOffset, rightOffset, z0, z1);
182008
+ return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_22__.LineStringOffsetClipperContext.createClipBetweenOffsets(points, leftOffset, rightOffset, z0, z1);
181901
182009
  }
181902
182010
  /** If data.length >= minLength threshold, push it to destination; if smaller drop it back to the cache. */
181903
182011
  static captureOrDrop(data, minLength, destination, cache) {
@@ -182087,7 +182195,7 @@ class ClipUtilities {
182087
182195
  */
182088
182196
  static doPolygonClipSequence(xyz, clippers, acceptedIn, acceptedOut, finalCandidates, inAction, outAction, finalFragmentAction, arrayCache) {
182089
182197
  if (arrayCache === undefined)
182090
- arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_3__.GrowableXYZArrayCache();
182198
+ arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_4__.GrowableXYZArrayCache();
182091
182199
  let candidates = [arrayCache.grabAndFill(xyz)];
182092
182200
  let nextCandidates = [];
182093
182201
  const intermediateIn = [];
@@ -182124,7 +182232,7 @@ class ClipUtilities {
182124
182232
  /** Pass polygon `xyz` through a sequence of PolygonClip steps with "parity" rules */
182125
182233
  static doPolygonClipParitySequence(xyz, clippers, acceptedIn, acceptedOut, arrayCache) {
182126
182234
  if (arrayCache === undefined)
182127
- arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_3__.GrowableXYZArrayCache();
182235
+ arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_4__.GrowableXYZArrayCache();
182128
182236
  let candidatesOut = [arrayCache.grabAndFill(xyz)];
182129
182237
  let candidatesIn = [];
182130
182238
  let nextCandidatesIn = [];
@@ -182176,22 +182284,22 @@ class ClipUtilities {
182176
182284
  */
182177
182285
  static createComplementaryClips(clipper) {
182178
182286
  const planes = clipper.planes;
182179
- const interval = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range1d.createNull();
182287
+ const interval = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range1d.createNull();
182180
182288
  const n = planes.length;
182181
182289
  const newClippers = [];
182182
182290
  for (const p of planes) {
182183
- const outerSet = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet.createEmpty();
182291
+ const outerSet = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet.createEmpty();
182184
182292
  outerSet.addPlaneToConvexSet(p.cloneNegated());
182185
182293
  newClippers.push(outerSet);
182186
182294
  }
182187
182295
  for (let i = 0; i < n; i++) {
182188
182296
  for (let j = i + 1; j < n; j++) {
182189
- const ray = _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_21__.CurveFactory.planePlaneIntersectionRay(planes[i], planes[j]);
182297
+ const ray = _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_24__.CurveFactory.planePlaneIntersectionRay(planes[i], planes[j]);
182190
182298
  if (ray) {
182191
182299
  if (clipper.hasIntersectionWithRay(ray, interval)) {
182192
182300
  // the normal-to-normal vector is bisector (or close to bisector?)
182193
182301
  const newNormal = planes[j].inwardNormalRef.minus(planes[i].inwardNormalRef);
182194
- const plane1 = _ClipPlane__WEBPACK_IMPORTED_MODULE_15__.ClipPlane.createNormalAndPoint(newNormal, ray.origin);
182302
+ const plane1 = _ClipPlane__WEBPACK_IMPORTED_MODULE_16__.ClipPlane.createNormalAndPoint(newNormal, ray.origin);
182195
182303
  if (plane1) {
182196
182304
  const plane2 = plane1.cloneNegated();
182197
182305
  newClippers[i].addPlaneToConvexSet(plane1);
@@ -182201,10 +182309,10 @@ class ClipUtilities {
182201
182309
  }
182202
182310
  }
182203
182311
  }
182204
- return _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__.UnionOfConvexClipPlaneSets.createConvexSets(newClippers);
182312
+ return _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__.UnionOfConvexClipPlaneSets.createConvexSets(newClippers);
182205
182313
  }
182206
182314
  }
182207
- ClipUtilities._selectIntervals01TestPoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_10__.Point3d.create();
182315
+ ClipUtilities._selectIntervals01TestPoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_11__.Point3d.create();
182208
182316
 
182209
182317
  function moveFragments(fragments, destination, arrayCache) {
182210
182318
  if (destination === undefined)
@@ -228762,7 +228870,8 @@ class Newton2dUnboundedWithDerivative extends AbstractNewtonIterator {
228762
228870
  computeStep() {
228763
228871
  if (this._func.evaluate(this._currentUV.x, this._currentUV.y)) {
228764
228872
  const fA = this._func.currentF;
228765
- if (_Polynomials__WEBPACK_IMPORTED_MODULE_3__.SmallSystem.linearSystem2d(fA.vectorU.x, fA.vectorV.x, fA.vectorU.y, fA.vectorV.y, fA.origin.x, fA.origin.y, this._currentStep))
228873
+ if ( // Given X_{n+1} = X_n - dX = X_n - JInv(X_n) F(X_n), we solve J(X_n) dX = F(X_n) for dX:
228874
+ _Polynomials__WEBPACK_IMPORTED_MODULE_3__.SmallSystem.linearSystem2d(fA.vectorU.x, fA.vectorV.x, fA.vectorU.y, fA.vectorV.y, fA.origin.x, fA.origin.y, this._currentStep))
228766
228875
  return true;
228767
228876
  }
228768
228877
  return false;
@@ -234447,6 +234556,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
234447
234556
  this.addTransformedRangeMesh(transform, _geometry3d_Range__WEBPACK_IMPORTED_MODULE_6__.Range3d.createXYZXYZ(0, 0, 0, 1, 1, 1));
234448
234557
  }
234449
234558
  /** Add facets for a transformed range box.
234559
+ * * For best results, the transformed range corners should define a nonzero volume or area.
234450
234560
  * @param transform applied to the range points before adding to the polyface
234451
234561
  * @param range sides become 6 quad polyface facets
234452
234562
  * @param faceSelector for each face in the order of BoxTopology.cornerIndexCCW, faceSelector[i]===false skips that facet.
@@ -281680,7 +281790,7 @@ class TestContext {
281680
281790
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
281681
281791
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
281682
281792
  await core_frontend_1.NoRenderApp.startup({
281683
- applicationVersion: "4.3.0-dev.14",
281793
+ applicationVersion: "4.3.0-dev.16",
281684
281794
  applicationId: this.settings.gprid,
281685
281795
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
281686
281796
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -301088,7 +301198,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
301088
301198
  /***/ ((module) => {
301089
301199
 
301090
301200
  "use strict";
301091
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.3.0-dev.14","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.3.0-dev.14","@itwin/core-bentley":"workspace:^4.3.0-dev.14","@itwin/core-common":"workspace:^4.3.0-dev.14","@itwin/core-geometry":"workspace:^4.3.0-dev.14","@itwin/core-orbitgt":"workspace:^4.3.0-dev.14","@itwin/core-quantity":"workspace:^4.3.0-dev.14"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"4.0.0-dev.44","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"18.16.1","@types/sinon":"^10.0.15","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.3.10","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.44.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^15.0.4","source-map-loader":"^4.0.0","typescript":"~5.0.2","typemoq":"^2.1.0","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.1.0","@itwin/object-storage-core":"^2.1.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
301201
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.3.0-dev.16","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.3.0-dev.16","@itwin/core-bentley":"workspace:^4.3.0-dev.16","@itwin/core-common":"workspace:^4.3.0-dev.16","@itwin/core-geometry":"workspace:^4.3.0-dev.16","@itwin/core-orbitgt":"workspace:^4.3.0-dev.16","@itwin/core-quantity":"workspace:^4.3.0-dev.16"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"4.0.0-dev.44","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"18.16.1","@types/sinon":"^10.0.15","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.3.10","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.44.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^15.0.4","source-map-loader":"^4.0.0","typescript":"~5.0.2","typemoq":"^2.1.0","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.1.0","@itwin/object-storage-core":"^2.1.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
301092
301202
 
301093
301203
  /***/ }),
301094
301204