@itwin/ecschema-rpcinterface-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.
@@ -76594,8 +76594,11 @@ class SectionAttachmentInfo {
76594
76594
  displaySpatialView: this._displaySpatialView,
76595
76595
  };
76596
76596
  }
76597
- clone() {
76598
- return new SectionAttachmentInfo(this._spatialView, this._drawingToSpatialTransform, this._displaySpatialView);
76597
+ clone(iModel) {
76598
+ let spatialView = this._spatialView;
76599
+ if (spatialView instanceof _ViewState__WEBPACK_IMPORTED_MODULE_14__.ViewState3d)
76600
+ spatialView = spatialView.clone(iModel);
76601
+ return new SectionAttachmentInfo(spatialView, this._drawingToSpatialTransform, this._displaySpatialView);
76599
76602
  }
76600
76603
  preload(options) {
76601
76604
  if (!this.wantDisplayed)
@@ -76789,7 +76792,7 @@ class DrawingViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_14__.ViewStat
76789
76792
  if (categories instanceof DrawingViewState) {
76790
76793
  this._viewedExtents = categories._viewedExtents.clone();
76791
76794
  this._modelLimits = { ...categories._modelLimits };
76792
- this._attachmentInfo = categories._attachmentInfo.clone();
76795
+ this._attachmentInfo = categories._attachmentInfo.clone(iModel);
76793
76796
  }
76794
76797
  else {
76795
76798
  this._viewedExtents = extents;
@@ -85275,6 +85278,7 @@ class SheetBorder {
85275
85278
  * SheetViewState.load(). The Attachments object is created in SheetViewState.attachToViewport and disposed of in SheetViewState.detachFromViewport.
85276
85279
  */
85277
85280
  class ViewAttachmentsInfo {
85281
+ get attachments() { return this._attachments; }
85278
85282
  constructor(attachments) {
85279
85283
  this._attachments = attachments;
85280
85284
  }
@@ -85298,9 +85302,19 @@ class ViewAttachmentsInfo {
85298
85302
  toJSON() {
85299
85303
  return this.isLoaded ? this._props.map((x) => x.id) : [...this._ids];
85300
85304
  }
85301
- clone() {
85302
- // No reason to clone the array.
85303
- return new ViewAttachmentsInfo(this._attachments);
85305
+ clone(iModel) {
85306
+ let attachments = this._attachments;
85307
+ if (this.isLoaded) {
85308
+ // Need to clone the attached ViewStates.
85309
+ attachments = attachments.map((attachment) => {
85310
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(typeof attachment !== "string");
85311
+ return {
85312
+ ...attachment,
85313
+ attachedView: attachment.attachedView.clone(iModel),
85314
+ };
85315
+ });
85316
+ }
85317
+ return new ViewAttachmentsInfo(attachments);
85304
85318
  }
85305
85319
  preload(options) {
85306
85320
  if (this.isLoaded)
@@ -85463,7 +85477,16 @@ class SheetViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_13__.ViewState2
85463
85477
  }
85464
85478
  /** Strictly for testing. @internal */
85465
85479
  get viewAttachmentProps() {
85466
- return this._attachmentsInfo.viewAttachmentProps;
85480
+ return this._attachmentsInfo.viewAttachmentProps.map((x) => {
85481
+ return {
85482
+ ...x,
85483
+ attachedView: undefined,
85484
+ };
85485
+ });
85486
+ }
85487
+ /** Strictly for testing. @internal */
85488
+ get viewAttachmentInfos() {
85489
+ return this._attachmentsInfo.attachments;
85467
85490
  }
85468
85491
  /** Strictly for testing. @internal */
85469
85492
  get attachments() {
@@ -85478,7 +85501,7 @@ class SheetViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_13__.ViewState2
85478
85501
  if (categories instanceof SheetViewState) {
85479
85502
  // we are coming from clone...
85480
85503
  this.sheetSize = categories.sheetSize.clone();
85481
- this._attachmentsInfo = categories._attachmentsInfo.clone();
85504
+ this._attachmentsInfo = categories._attachmentsInfo.clone(iModel);
85482
85505
  this._viewedExtents = categories._viewedExtents.clone();
85483
85506
  }
85484
85507
  else {
@@ -86081,6 +86104,7 @@ class SpatialViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_6__.ViewState
86081
86104
  this.registerModelSelectorListeners();
86082
86105
  this.onViewedModelsChanged.raiseEvent();
86083
86106
  }
86107
+ this.markModelSelectorChanged();
86084
86108
  }
86085
86109
  /** Create a new *blank* SpatialViewState. The returned SpatialViewState will nave non-persistent empty [[CategorySelectorState]] and [[ModelSelectorState]],
86086
86110
  * and a non-persistent [[DisplayStyle3dState]] with default values for all of its components. Generally after creating a blank SpatialViewState,
@@ -148453,7 +148477,7 @@ class ArcGisUtilities {
148453
148477
  // and return information needed to initiate the authentification process... the end-user
148454
148478
  // will have to provide his credentials before we can fully validate this source.
148455
148479
  if (json.error.code === ArcGisErrorCode.TokenRequired) {
148456
- return { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.RequireAuth };
148480
+ return (userName || password) ? { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidCredentials } : { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.RequireAuth };
148457
148481
  }
148458
148482
  else if (json.error.code === ArcGisErrorCode.InvalidCredentials)
148459
148483
  return { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.InvalidCredentials };
@@ -178724,28 +178748,31 @@ __webpack_require__.r(__webpack_exports__);
178724
178748
  /* harmony export */ ClipStepAction: () => (/* binding */ ClipStepAction),
178725
178749
  /* harmony export */ ClipUtilities: () => (/* binding */ ClipUtilities)
178726
178750
  /* harmony export */ });
178727
- /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
178728
- /* harmony import */ var _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../curve/CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
178729
- /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
178730
- /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
178731
- /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
178732
- /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
178733
- /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
178734
- /* harmony import */ var _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../curve/UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
178735
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
178736
- /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
178737
- /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
178738
- /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
178739
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
178740
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
178741
- /* harmony import */ var _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/ReusableObjectCache */ "../../core/geometry/lib/esm/geometry3d/ReusableObjectCache.js");
178742
- /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
178743
- /* harmony import */ var _ClipPlane__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
178744
- /* harmony import */ var _ClipPrimitive__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./ClipPrimitive */ "../../core/geometry/lib/esm/clipping/ClipPrimitive.js");
178745
- /* harmony import */ var _ClipVector__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ClipVector */ "../../core/geometry/lib/esm/clipping/ClipVector.js");
178746
- /* harmony import */ var _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
178747
- /* harmony import */ var _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./internalContexts/LineStringOffsetClipperContext */ "../../core/geometry/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js");
178748
- /* harmony import */ var _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./UnionOfConvexClipPlaneSets */ "../../core/geometry/lib/esm/clipping/UnionOfConvexClipPlaneSets.js");
178751
+ /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
178752
+ /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
178753
+ /* harmony import */ var _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../curve/CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
178754
+ /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
178755
+ /* harmony import */ var _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../curve/LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
178756
+ /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
178757
+ /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
178758
+ /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
178759
+ /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
178760
+ /* harmony import */ var _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
178761
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
178762
+ /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
178763
+ /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
178764
+ /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
178765
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
178766
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
178767
+ /* harmony import */ var _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/ReusableObjectCache */ "../../core/geometry/lib/esm/geometry3d/ReusableObjectCache.js");
178768
+ /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
178769
+ /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
178770
+ /* harmony import */ var _ClipPlane__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
178771
+ /* harmony import */ var _ClipPrimitive__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ClipPrimitive */ "../../core/geometry/lib/esm/clipping/ClipPrimitive.js");
178772
+ /* harmony import */ var _ClipVector__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./ClipVector */ "../../core/geometry/lib/esm/clipping/ClipVector.js");
178773
+ /* harmony import */ var _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
178774
+ /* harmony import */ var _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./internalContexts/LineStringOffsetClipperContext */ "../../core/geometry/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js");
178775
+ /* harmony import */ var _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./UnionOfConvexClipPlaneSets */ "../../core/geometry/lib/esm/clipping/UnionOfConvexClipPlaneSets.js");
178749
178776
  /*---------------------------------------------------------------------------------------------
178750
178777
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
178751
178778
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -178771,6 +178798,9 @@ __webpack_require__.r(__webpack_exports__);
178771
178798
 
178772
178799
 
178773
178800
 
178801
+
178802
+
178803
+
178774
178804
 
178775
178805
 
178776
178806
 
@@ -178836,7 +178866,7 @@ class ClipUtilities {
178836
178866
  const n = unsortedFractions.length;
178837
178867
  for (let i = 1; i < n; i++) {
178838
178868
  f1 = unsortedFractions.atUncheckedIndex(i);
178839
- if (f1 > f0 + _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallFraction) {
178869
+ if (f1 > f0 + _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallFraction) {
178840
178870
  fMid = 0.5 * (f0 + f1);
178841
178871
  if (fMid >= 0.0 && fMid <= 1.0) {
178842
178872
  curve.fractionToPoint(fMid, testPoint);
@@ -178893,7 +178923,7 @@ class ClipUtilities {
178893
178923
  let result;
178894
178924
  // Create "local region" which is the result of rotating region to make
178895
178925
  // it parallel to the xy-plane and then translating it to the xy-plane.
178896
- const localToWorld = ClipUtilities._workTransform = _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_1__.FrameBuilder.createRightHandedFrame(undefined, region, ClipUtilities._workTransform);
178926
+ const localToWorld = ClipUtilities._workTransform = _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_2__.FrameBuilder.createRightHandedFrame(undefined, region, ClipUtilities._workTransform);
178897
178927
  if (!localToWorld)
178898
178928
  return result;
178899
178929
  const worldToLocal = localToWorld?.inverse();
@@ -178910,24 +178940,24 @@ class ClipUtilities {
178910
178940
  const localRegionRange = ClipUtilities._workRange = localRegion.range();
178911
178941
  const xLength = localRegionRange.xLength();
178912
178942
  const yLength = localRegionRange.yLength();
178913
- const rectangle = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_2__.LineString3d.createRectangleXY(localRegionRange.low, xLength, yLength, true);
178943
+ const rectangle = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__.LineString3d.createRectangleXY(localRegionRange.low, xLength, yLength, true);
178914
178944
  rectangle.tryTransformInPlace(localToWorld);
178915
178945
  // Clip the rectangle to produce fragment(s) which we can Boolean intersect with the input region.
178916
178946
  const insideFragments = [];
178917
178947
  const outsideFragments = [];
178918
- const cache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_3__.GrowableXYZArrayCache();
178948
+ const cache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_4__.GrowableXYZArrayCache();
178919
178949
  clipper.appendPolygonClip?.(rectangle.packedPoints, insideFragments, outsideFragments, cache);
178920
178950
  if (insideFragments.length === 0)
178921
178951
  return result;
178922
178952
  // Create the "clipped region".
178923
178953
  for (const fragment of insideFragments) {
178924
- const loop = _curve_Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(fragment);
178954
+ const loop = _curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop.createPolygon(fragment);
178925
178955
  loop.tryTransformInPlace(worldToLocal);
178926
- const clippedLocalRegion = _curve_RegionOps__WEBPACK_IMPORTED_MODULE_5__.RegionOps.regionBooleanXY(localRegion, loop, _curve_RegionOps__WEBPACK_IMPORTED_MODULE_5__.RegionBinaryOpType.Intersection);
178956
+ const clippedLocalRegion = _curve_RegionOps__WEBPACK_IMPORTED_MODULE_6__.RegionOps.regionBooleanXY(localRegion, loop, _curve_RegionOps__WEBPACK_IMPORTED_MODULE_6__.RegionBinaryOpType.Intersection);
178927
178957
  if (clippedLocalRegion) {
178928
178958
  clippedLocalRegion.tryTransformInPlace(localToWorld);
178929
178959
  if (!result)
178930
- result = (clippedLocalRegion instanceof _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_6__.UnionRegion) ? clippedLocalRegion : _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_6__.UnionRegion.create(clippedLocalRegion);
178960
+ result = (clippedLocalRegion instanceof _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_7__.UnionRegion) ? clippedLocalRegion : _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_7__.UnionRegion.create(clippedLocalRegion);
178931
178961
  else if (!result.tryAddChild(clippedLocalRegion))
178932
178962
  result.children.push(...clippedLocalRegion.children);
178933
178963
  }
@@ -178941,14 +178971,14 @@ class ClipUtilities {
178941
178971
  * @return array of clipped components of the input curve or region that lie inside the clipper
178942
178972
  */
178943
178973
  static clipAnyCurve(curve, clipper) {
178944
- if (curve instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_7__.CurvePrimitive)
178974
+ if (curve instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_8__.CurvePrimitive)
178945
178975
  return ClipUtilities.collectClippedCurves(curve, clipper);
178946
178976
  if (curve.isAnyRegion()) {
178947
178977
  const ret = ClipUtilities.clipAnyRegion(curve, clipper);
178948
178978
  return ret ? [ret] : [];
178949
178979
  }
178950
178980
  const result = [];
178951
- if (curve instanceof _curve_Path__WEBPACK_IMPORTED_MODULE_8__.Path || curve instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_9__.BagOfCurves) {
178981
+ if (curve instanceof _curve_Path__WEBPACK_IMPORTED_MODULE_9__.Path || curve instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_10__.BagOfCurves) {
178952
178982
  for (const child of curve.children) {
178953
178983
  const partialClip = ClipUtilities.clipAnyCurve(child, clipper);
178954
178984
  result.push(...partialClip);
@@ -178994,8 +179024,8 @@ class ClipUtilities {
178994
179024
  for (const plane of convexSet.planes) {
178995
179025
  let numInside = 0, numOutside = 0;
178996
179026
  const planeDistance = plane.distance - tolerance;
178997
- const currPt = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_10__.Point3d.create();
178998
- const currVec = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_10__.Vector3d.create();
179027
+ const currPt = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_11__.Point3d.create();
179028
+ const currVec = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_11__.Vector3d.create();
178999
179029
  for (let i = 0; i < points.length; i++) {
179000
179030
  points.getPoint3dAtUncheckedPointIndex(i, currPt);
179001
179031
  currVec.setFrom(currPt);
@@ -179023,15 +179053,15 @@ class ClipUtilities {
179023
179053
  * @param ignoreInvisiblePlanes if true, do NOT compute a facet for convex set faces marked invisible.
179024
179054
  */
179025
179055
  static announceLoopsOfConvexClipPlaneSetIntersectRange(convexSet, range, loopFunction, includeConvexSetFaces = true, includeRangeFaces = true, ignoreInvisiblePlanes = false) {
179026
- const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
179056
+ const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
179027
179057
  if (includeConvexSetFaces) {
179028
179058
  // Clip convexSet planes to the range and to the rest of the convexSet . .
179029
- if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet) {
179059
+ if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet) {
179030
179060
  for (const plane of convexSet.planes) {
179031
179061
  if (ignoreInvisiblePlanes && plane.invisible)
179032
179062
  continue;
179033
179063
  const pointsClippedToRange = plane.intersectRange(range, true);
179034
- const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
179064
+ const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
179035
179065
  if (pointsClippedToRange) {
179036
179066
  convexSet.polygonClip(pointsClippedToRange, finalPoints, work, plane);
179037
179067
  if (finalPoints.length > 0)
@@ -179054,10 +179084,10 @@ class ClipUtilities {
179054
179084
  // clip range faces to the convex set . . .
179055
179085
  const corners = range.corners();
179056
179086
  for (let i = 0; i < 6; i++) {
179057
- const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range3d.faceCornerIndices(i);
179058
- const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
179059
- const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_2__.LineString3d.createIndexedPoints(corners, indices);
179060
- if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet) {
179087
+ const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.faceCornerIndices(i);
179088
+ const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
179089
+ const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__.LineString3d.createIndexedPoints(corners, indices);
179090
+ if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet) {
179061
179091
  convexSet.polygonClip(lineString.packedPoints, finalPoints, work);
179062
179092
  if (finalPoints.length > 0)
179063
179093
  loopFunction(finalPoints);
@@ -179082,18 +179112,18 @@ class ClipUtilities {
179082
179112
  */
179083
179113
  static loopsOfConvexClipPlaneIntersectionWithRange(allClippers, range, includeConvexSetFaces = true, includeRangeFaces = true, ignoreInvisiblePlanes = false) {
179084
179114
  const result = [];
179085
- if (allClippers instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__.UnionOfConvexClipPlaneSets) {
179115
+ if (allClippers instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__.UnionOfConvexClipPlaneSets) {
179086
179116
  for (const clipper of allClippers.convexSets) {
179087
179117
  this.announceLoopsOfConvexClipPlaneSetIntersectRange(clipper, range, (points) => {
179088
179118
  if (points.length > 0)
179089
- result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(points));
179119
+ result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop.createPolygon(points));
179090
179120
  }, includeConvexSetFaces, includeRangeFaces, ignoreInvisiblePlanes);
179091
179121
  }
179092
179122
  }
179093
- else if (allClippers instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet || allClippers instanceof _ClipPlane__WEBPACK_IMPORTED_MODULE_15__.ClipPlane) {
179123
+ else if (allClippers instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet || allClippers instanceof _ClipPlane__WEBPACK_IMPORTED_MODULE_16__.ClipPlane) {
179094
179124
  this.announceLoopsOfConvexClipPlaneSetIntersectRange(allClippers, range, (points) => {
179095
179125
  if (points.length > 0)
179096
- result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(points));
179126
+ result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_5__.Loop.createPolygon(points));
179097
179127
  }, includeConvexSetFaces, includeRangeFaces, ignoreInvisiblePlanes);
179098
179128
  }
179099
179129
  return result;
@@ -179105,7 +179135,7 @@ class ClipUtilities {
179105
179135
  * @param range range to intersect
179106
179136
  */
179107
179137
  static rangeOfConvexClipPlaneSetIntersectionWithRange(convexSet, range) {
179108
- const result = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range3d.createNull();
179138
+ const result = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.createNull();
179109
179139
  this.announceLoopsOfConvexClipPlaneSetIntersectRange(convexSet, range, (points) => {
179110
179140
  if (points.length > 0)
179111
179141
  result.extendArray(points);
@@ -179128,22 +179158,22 @@ class ClipUtilities {
179128
179158
  static rangeOfClipperIntersectionWithRange(clipper, range, observeInvisibleFlag = true) {
179129
179159
  if (clipper === undefined)
179130
179160
  return range.clone();
179131
- if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet)
179161
+ if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet)
179132
179162
  return this.rangeOfConvexClipPlaneSetIntersectionWithRange(clipper, range);
179133
- if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__.UnionOfConvexClipPlaneSets) {
179134
- const rangeUnion = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range3d.createNull();
179163
+ if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__.UnionOfConvexClipPlaneSets) {
179164
+ const rangeUnion = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.createNull();
179135
179165
  for (const c of clipper.convexSets) {
179136
179166
  const rangeC = this.rangeOfConvexClipPlaneSetIntersectionWithRange(c, range);
179137
179167
  rangeUnion.extendRange(rangeC);
179138
179168
  }
179139
179169
  return rangeUnion;
179140
179170
  }
179141
- if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_16__.ClipPrimitive) {
179171
+ if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_17__.ClipPrimitive) {
179142
179172
  if (observeInvisibleFlag && clipper.invisible)
179143
179173
  return range.clone();
179144
179174
  return this.rangeOfClipperIntersectionWithRange(clipper.fetchClipPlanesRef(), range);
179145
179175
  }
179146
- if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_17__.ClipVector) {
179176
+ if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_18__.ClipVector) {
179147
179177
  const rangeIntersection = range.clone();
179148
179178
  for (const c of clipper.clips) {
179149
179179
  if (observeInvisibleFlag && c.invisible) {
@@ -179175,21 +179205,21 @@ class ClipUtilities {
179175
179205
  static doesClipperIntersectRange(clipper, range, observeInvisibleFlag = true) {
179176
179206
  if (clipper === undefined)
179177
179207
  return true;
179178
- if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet)
179208
+ if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet)
179179
179209
  return this.doesConvexClipPlaneSetIntersectRange(clipper, range);
179180
- if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__.UnionOfConvexClipPlaneSets) {
179210
+ if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__.UnionOfConvexClipPlaneSets) {
179181
179211
  for (const c of clipper.convexSets) {
179182
179212
  if (this.doesConvexClipPlaneSetIntersectRange(c, range))
179183
179213
  return true;
179184
179214
  }
179185
179215
  return false;
179186
179216
  }
179187
- if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_16__.ClipPrimitive) {
179217
+ if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_17__.ClipPrimitive) {
179188
179218
  if (observeInvisibleFlag && clipper.invisible) // um is there an easy way to detect range-completely-inside?
179189
179219
  return true;
179190
179220
  return this.doesClipperIntersectRange(clipper.fetchClipPlanesRef(), range);
179191
179221
  }
179192
- if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_17__.ClipVector) {
179222
+ if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_18__.ClipVector) {
179193
179223
  const rangeIntersection = range.clone();
179194
179224
  for (const c of clipper.clips) {
179195
179225
  if (observeInvisibleFlag && c.invisible) {
@@ -179214,7 +179244,7 @@ class ClipUtilities {
179214
179244
  * @param ignoreInvisiblePlanes if true, do NOT compute a facet for convex set faces marked invisible.
179215
179245
  */
179216
179246
  static doesConvexClipPlaneSetIntersectRange(convexSet, range, includeConvexSetFaces = true, includeRangeFaces = true, ignoreInvisiblePlanes = false) {
179217
- const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
179247
+ const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
179218
179248
  if (includeConvexSetFaces) {
179219
179249
  // Clip convexSet planes to the range and to the rest of the convexSet . .
179220
179250
  for (const plane of convexSet.planes) {
@@ -179222,7 +179252,7 @@ class ClipUtilities {
179222
179252
  continue;
179223
179253
  const pointsClippedToRange = plane.intersectRange(range, true);
179224
179254
  if (pointsClippedToRange) {
179225
- const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
179255
+ const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
179226
179256
  convexSet.polygonClip(pointsClippedToRange, finalPoints, work, plane);
179227
179257
  if (finalPoints.length > 0)
179228
179258
  return true;
@@ -179233,9 +179263,9 @@ class ClipUtilities {
179233
179263
  // clip range faces to the convex set . . .
179234
179264
  const corners = range.corners();
179235
179265
  for (let i = 0; i < 6; i++) {
179236
- const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range3d.faceCornerIndices(i);
179237
- const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
179238
- const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_2__.LineString3d.createIndexedPoints(corners, indices);
179266
+ const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.faceCornerIndices(i);
179267
+ const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_12__.GrowableXYZArray();
179268
+ const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_3__.LineString3d.createIndexedPoints(corners, indices);
179239
179269
  convexSet.polygonClip(lineString.packedPoints, finalPoints, work);
179240
179270
  if (finalPoints.length > 0)
179241
179271
  return true;
@@ -179243,32 +179273,110 @@ class ClipUtilities {
179243
179273
  }
179244
179274
  return false;
179245
179275
  }
179276
+ /**
179277
+ * Create a clipper from the transformed range.
179278
+ * @param range input range to create clipper from
179279
+ * @param transform how to transform the range (NOTE: applied to the range faces without swelling the range volume)
179280
+ * @param degeneratePoints optionally populated with the 1 or 2 points defining the transformed range if it is degenerate (all points colinear/coincident); otherwise untouched
179281
+ * @returns newly constructed clipper. If no clip planes could be computed, fill `degeneratePoints` and return undefined.
179282
+ */
179283
+ static createClipperFromTransformedRange3d(range, transform, degeneratePoints) {
179284
+ if (!transform)
179285
+ transform = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_19__.Transform.createIdentity();
179286
+ const builder = _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_20__.PolyfaceBuilder.create();
179287
+ builder.addTransformedRangeMesh(transform, range);
179288
+ const mesh = builder.claimPolyface();
179289
+ const clipper = this._workClipper = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet.createConvexPolyface(mesh, this._workClipper).clipper;
179290
+ if (clipper.planes.length > 0)
179291
+ return clipper;
179292
+ // no faces found in the compressed mesh
179293
+ if (degeneratePoints) {
179294
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(mesh.data.point.length <= 2);
179295
+ for (let i = 0; i < 2; ++i) {
179296
+ const point = mesh.data.point.getPoint3dAtCheckedPointIndex(i);
179297
+ if (point)
179298
+ degeneratePoints.push(point);
179299
+ }
179300
+ }
179301
+ return undefined;
179302
+ }
179303
+ /**
179304
+ * Handle pathological cases of range-range intersection, where one of the ranges defines no area or volume (is a line segment or single point).
179305
+ * @param range local range to intersect with the point/segment
179306
+ * @param points isolated local point, or local segment's start and end
179307
+ * @param localToWorld optional transform for output range
179308
+ * @param intersection optional range of the intersection, in world coordinates, or null range if no intersection.
179309
+ * @returns whether the point/segment intersects the range
179310
+ */
179311
+ static rangeIntersectPointOrSegment(range, points, localToWorld, intersection) {
179312
+ const announceInterval = intersection ?
179313
+ (f0, f1, cp) => {
179314
+ intersection.extendPoint(cp.fractionToPoint(f0), localToWorld);
179315
+ intersection.extendPoint(cp.fractionToPoint(f1), localToWorld);
179316
+ } : undefined;
179317
+ let hasIntersection = false;
179318
+ if (points.length > 1) {
179319
+ const segment = _curve_LineSegment3d__WEBPACK_IMPORTED_MODULE_21__.LineSegment3d.createCapture(points[0], points[1]);
179320
+ const clipper = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet.createRange3dPlanes(range);
179321
+ hasIntersection = segment.announceClipIntervals(clipper, announceInterval);
179322
+ }
179323
+ else if (points.length > 0) {
179324
+ hasIntersection = range.containsPoint(points[0]);
179325
+ if (hasIntersection && intersection)
179326
+ intersection.extendPoint(points[0], localToWorld);
179327
+ }
179328
+ return hasIntersection;
179329
+ }
179246
179330
  /**
179247
179331
  * Test for intersection of two ranges in different local coordinates.
179248
179332
  * * Useful for clash detection of elements in iModels, using their stored (tight) local ranges and placement transforms.
179249
- * @param range0 range in local coordinates of first geometry
179250
- * @param local0ToWorld placement transform for first geometry
179251
- * @param range1 range in local coordinates of second geometry
179252
- * @param local1ToWorld placement transform for second geometry. Assumed to be invertible.
179333
+ * @param range0 first range in local coordinates
179334
+ * @param local0ToWorld placement transform for first range
179335
+ * @param range1 second range in local coordinates
179336
+ * @param local1ToWorld placement transform for second range. Assumed to be invertible.
179253
179337
  * @param range1Margin optional signed local distance to expand/contract the second range before intersection. Positive expands.
179254
179338
  * @return whether the local ranges are adjacent or intersect. Also returns false if local1ToWorld is singular.
179255
179339
  */
179256
179340
  static doLocalRangesIntersect(range0, local0ToWorld, range1, local1ToWorld, range1Margin) {
179257
- const worldToLocal1 = ClipUtilities._workTransform = local1ToWorld.inverse(ClipUtilities._workTransform);
179341
+ const worldToLocal1 = this._workTransform = local1ToWorld.inverse(this._workTransform);
179258
179342
  if (!worldToLocal1)
179259
179343
  return false;
179260
179344
  let myRange1 = range1;
179261
179345
  if (range1Margin) {
179262
- myRange1 = ClipUtilities._workRange = range1.clone(ClipUtilities._workRange);
179346
+ myRange1 = this._workRange = range1.clone(this._workRange);
179263
179347
  myRange1.expandInPlace(range1Margin);
179264
179348
  }
179349
+ const degeneratePoints = [];
179350
+ const local0ToLocal1 = worldToLocal1.multiplyTransformTransform(local0ToWorld, worldToLocal1);
179265
179351
  // convert range0 into a clipper in local1 coordinates, then intersect with range1
179352
+ const clipper = this.createClipperFromTransformedRange3d(range0, local0ToLocal1, degeneratePoints);
179353
+ if (clipper)
179354
+ return this.doesClipperIntersectRange(clipper, myRange1);
179355
+ return this.rangeIntersectPointOrSegment(myRange1, degeneratePoints, local1ToWorld);
179356
+ }
179357
+ /**
179358
+ * Compute the range of the intersection between two local (e.g., element-aligned) ranges.
179359
+ * @param range0 first range in local coordinates
179360
+ * @param local0ToWorld placement transform for first range
179361
+ * @param range1 second range in local coordinates
179362
+ * @param local1ToWorld placement transform for second range. Assumed to be invertible.
179363
+ * @param result optional pre-allocated range to fill and return
179364
+ * @return range of the intersection (aligned to world axes). Returns null range if local1ToWorld is singular.
179365
+ */
179366
+ static rangeOfIntersectionOfLocalRanges(range0, local0ToWorld, range1, local1ToWorld, result) {
179367
+ const myResult = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range3d.createNull(result);
179368
+ const worldToLocal1 = this._workTransform = local1ToWorld.inverse(this._workTransform);
179369
+ if (!worldToLocal1)
179370
+ return myResult;
179371
+ const degeneratePoints = [];
179266
179372
  const local0ToLocal1 = worldToLocal1.multiplyTransformTransform(local0ToWorld, worldToLocal1);
179267
- const builder = _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_18__.PolyfaceBuilder.create();
179268
- builder.addTransformedRangeMesh(local0ToLocal1, range0);
179269
- const mesh0 = builder.claimPolyface();
179270
- const clipper = ClipUtilities._workClipper = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet.createConvexPolyface(mesh0, ClipUtilities._workClipper).clipper;
179271
- return ClipUtilities.doesClipperIntersectRange(clipper, myRange1);
179373
+ // convert range0 into a clipper in local1 coordinates, then intersect with range1
179374
+ const clipper = this.createClipperFromTransformedRange3d(range0, local0ToLocal1, degeneratePoints);
179375
+ if (clipper)
179376
+ this.announceLoopsOfConvexClipPlaneSetIntersectRange(clipper, range1, (loopPoints) => { loopPoints.extendRange(myResult, local1ToWorld); });
179377
+ else
179378
+ this.rangeIntersectPointOrSegment(range1, degeneratePoints, local1ToWorld, myResult);
179379
+ return myResult;
179272
179380
  }
179273
179381
  /**
179274
179382
  * Test if `obj` is a `Clipper` object.
@@ -179319,9 +179427,9 @@ class ClipUtilities {
179319
179427
  */
179320
179428
  static createXYOffsetClipFromLineString(points, leftOffset, rightOffset, z0, z1) {
179321
179429
  if (Array.isArray(points)) {
179322
- return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_19__.LineStringOffsetClipperContext.createClipBetweenOffsets(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_20__.Point3dArrayCarrier(points), leftOffset, rightOffset, z0, z1);
179430
+ return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_22__.LineStringOffsetClipperContext.createClipBetweenOffsets(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_23__.Point3dArrayCarrier(points), leftOffset, rightOffset, z0, z1);
179323
179431
  }
179324
- return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_19__.LineStringOffsetClipperContext.createClipBetweenOffsets(points, leftOffset, rightOffset, z0, z1);
179432
+ return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_22__.LineStringOffsetClipperContext.createClipBetweenOffsets(points, leftOffset, rightOffset, z0, z1);
179325
179433
  }
179326
179434
  /** If data.length >= minLength threshold, push it to destination; if smaller drop it back to the cache. */
179327
179435
  static captureOrDrop(data, minLength, destination, cache) {
@@ -179511,7 +179619,7 @@ class ClipUtilities {
179511
179619
  */
179512
179620
  static doPolygonClipSequence(xyz, clippers, acceptedIn, acceptedOut, finalCandidates, inAction, outAction, finalFragmentAction, arrayCache) {
179513
179621
  if (arrayCache === undefined)
179514
- arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_3__.GrowableXYZArrayCache();
179622
+ arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_4__.GrowableXYZArrayCache();
179515
179623
  let candidates = [arrayCache.grabAndFill(xyz)];
179516
179624
  let nextCandidates = [];
179517
179625
  const intermediateIn = [];
@@ -179548,7 +179656,7 @@ class ClipUtilities {
179548
179656
  /** Pass polygon `xyz` through a sequence of PolygonClip steps with "parity" rules */
179549
179657
  static doPolygonClipParitySequence(xyz, clippers, acceptedIn, acceptedOut, arrayCache) {
179550
179658
  if (arrayCache === undefined)
179551
- arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_3__.GrowableXYZArrayCache();
179659
+ arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_4__.GrowableXYZArrayCache();
179552
179660
  let candidatesOut = [arrayCache.grabAndFill(xyz)];
179553
179661
  let candidatesIn = [];
179554
179662
  let nextCandidatesIn = [];
@@ -179600,22 +179708,22 @@ class ClipUtilities {
179600
179708
  */
179601
179709
  static createComplementaryClips(clipper) {
179602
179710
  const planes = clipper.planes;
179603
- const interval = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range1d.createNull();
179711
+ const interval = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_14__.Range1d.createNull();
179604
179712
  const n = planes.length;
179605
179713
  const newClippers = [];
179606
179714
  for (const p of planes) {
179607
- const outerSet = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet.createEmpty();
179715
+ const outerSet = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_13__.ConvexClipPlaneSet.createEmpty();
179608
179716
  outerSet.addPlaneToConvexSet(p.cloneNegated());
179609
179717
  newClippers.push(outerSet);
179610
179718
  }
179611
179719
  for (let i = 0; i < n; i++) {
179612
179720
  for (let j = i + 1; j < n; j++) {
179613
- const ray = _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_21__.CurveFactory.planePlaneIntersectionRay(planes[i], planes[j]);
179721
+ const ray = _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_24__.CurveFactory.planePlaneIntersectionRay(planes[i], planes[j]);
179614
179722
  if (ray) {
179615
179723
  if (clipper.hasIntersectionWithRay(ray, interval)) {
179616
179724
  // the normal-to-normal vector is bisector (or close to bisector?)
179617
179725
  const newNormal = planes[j].inwardNormalRef.minus(planes[i].inwardNormalRef);
179618
- const plane1 = _ClipPlane__WEBPACK_IMPORTED_MODULE_15__.ClipPlane.createNormalAndPoint(newNormal, ray.origin);
179726
+ const plane1 = _ClipPlane__WEBPACK_IMPORTED_MODULE_16__.ClipPlane.createNormalAndPoint(newNormal, ray.origin);
179619
179727
  if (plane1) {
179620
179728
  const plane2 = plane1.cloneNegated();
179621
179729
  newClippers[i].addPlaneToConvexSet(plane1);
@@ -179625,10 +179733,10 @@ class ClipUtilities {
179625
179733
  }
179626
179734
  }
179627
179735
  }
179628
- return _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__.UnionOfConvexClipPlaneSets.createConvexSets(newClippers);
179736
+ return _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_15__.UnionOfConvexClipPlaneSets.createConvexSets(newClippers);
179629
179737
  }
179630
179738
  }
179631
- ClipUtilities._selectIntervals01TestPoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_10__.Point3d.create();
179739
+ ClipUtilities._selectIntervals01TestPoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_11__.Point3d.create();
179632
179740
 
179633
179741
  function moveFragments(fragments, destination, arrayCache) {
179634
179742
  if (destination === undefined)
@@ -226186,7 +226294,8 @@ class Newton2dUnboundedWithDerivative extends AbstractNewtonIterator {
226186
226294
  computeStep() {
226187
226295
  if (this._func.evaluate(this._currentUV.x, this._currentUV.y)) {
226188
226296
  const fA = this._func.currentF;
226189
- 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))
226297
+ 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:
226298
+ _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))
226190
226299
  return true;
226191
226300
  }
226192
226301
  return false;
@@ -231871,6 +231980,7 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
231871
231980
  this.addTransformedRangeMesh(transform, _geometry3d_Range__WEBPACK_IMPORTED_MODULE_6__.Range3d.createXYZXYZ(0, 0, 0, 1, 1, 1));
231872
231981
  }
231873
231982
  /** Add facets for a transformed range box.
231983
+ * * For best results, the transformed range corners should define a nonzero volume or area.
231874
231984
  * @param transform applied to the range points before adding to the polyface
231875
231985
  * @param range sides become 6 quad polyface facets
231876
231986
  * @param faceSelector for each face in the order of BoxTopology.cornerIndexCCW, faceSelector[i]===false skips that facet.
@@ -289384,7 +289494,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
289384
289494
  /***/ ((module) => {
289385
289495
 
289386
289496
  "use strict";
289387
- 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"}}');
289497
+ 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"}}');
289388
289498
 
289389
289499
  /***/ })
289390
289500