@itwin/ecschema-rpcinterface-tests 4.2.0-dev.0 → 4.2.0-dev.10

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.
@@ -31848,7 +31848,7 @@ __webpack_require__.r(__webpack_exports__);
31848
31848
  */
31849
31849
 
31850
31850
 
31851
- /** @beta */
31851
+ /** @public */
31852
31852
  class PropertyMetaDataMap {
31853
31853
  constructor(properties) {
31854
31854
  this.properties = properties;
@@ -31910,8 +31910,7 @@ class PropertyMetaDataMap {
31910
31910
  *
31911
31911
  * @note When iterating over the results, the current row will be a [[QueryRowProxy]] object. To get the row as a basic
31912
31912
  * JavaScript object, call [[QueryRowProxy.toRow]] on it.
31913
- *
31914
- * @beta
31913
+ * @public
31915
31914
  */
31916
31915
  class ECSqlReader {
31917
31916
  /**
@@ -32059,7 +32058,7 @@ class ECSqlReader {
32059
32058
  return this._done;
32060
32059
  }
32061
32060
  /**
32062
- *
32061
+ * @internal
32063
32062
  */
32064
32063
  getRowInternal() {
32065
32064
  if (this._localRows.length <= this._localOffset)
@@ -32139,7 +32138,7 @@ class ECSqlReader {
32139
32138
  return resp;
32140
32139
  }
32141
32140
  /**
32142
- *
32141
+ * @internal
32143
32142
  */
32144
32143
  formatCurrentRow(onlyReturnObject = false) {
32145
32144
  if (!onlyReturnObject && this._options.rowFormat === _ConcurrentQuery__WEBPACK_IMPORTED_MODULE_1__.QueryRowFormat.UseECSqlPropertyIndexes) {
@@ -65746,6 +65745,9 @@ class Property {
65746
65745
  this._customAttributes = new Map();
65747
65746
  this._customAttributes.set(customAttribute.className, customAttribute);
65748
65747
  }
65748
+ setName(name) {
65749
+ this._name = name;
65750
+ }
65749
65751
  /**
65750
65752
  * Retrieve all custom attributes in the current property and its base
65751
65753
  * This is the async version of getCustomAttributesSync()
@@ -74467,6 +74469,7 @@ class ModelChangeMonitor {
74467
74469
  this.processBuffered();
74468
74470
  };
74469
74471
  this._removals.push(briefcase.txns.onCommitted.addListener(maybeProcess));
74472
+ this._removals.push(briefcase.txns.onReplayedExternalTxns.addListener(maybeProcess));
74470
74473
  this._removals.push(briefcase.txns.onAfterUndoRedo.addListener(maybeProcess));
74471
74474
  this._removals.push(briefcase.txns.onChangesPulled.addListener(maybeProcess));
74472
74475
  }
@@ -74798,6 +74801,14 @@ class BriefcaseTxns extends BriefcaseNotificationHandler {
74798
74801
  * @see [[onCommit]] for the event raised before the operation.
74799
74802
  */
74800
74803
  this.onCommitted = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
74804
+ /** Event raised for a read-only briefcase that was opened with the `watchForChanges` flag enabled when changes made by another connection are applied to the briefcase.
74805
+ * @see [[onReplayedExternalTxns]] for the event raised after all such changes have been applied.
74806
+ */
74807
+ this.onReplayExternalTxns = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
74808
+ /** Event raised for a read-only briefcase that was opened with the `watchForChanges` flag enabled when changes made by another connection are applied to the briefcase.
74809
+ * @see [[onReplayExternalTxns]] for the event raised before the changes are applied.
74810
+ */
74811
+ this.onReplayedExternalTxns = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
74801
74812
  /** Event raised after a changeset has been applied to the briefcase.
74802
74813
  * Changesets may be applied as a result of [[BriefcaseConnection.pullChanges]], or by undo/redo operations.
74803
74814
  */
@@ -74933,6 +74944,14 @@ class BriefcaseTxns extends BriefcaseNotificationHandler {
74933
74944
  this.onCommitted.raiseEvent(hasPendingTxns, time);
74934
74945
  }
74935
74946
  /** @internal */
74947
+ notifyReplayExternalTxns() {
74948
+ this.onReplayExternalTxns.raiseEvent();
74949
+ }
74950
+ /** @internal */
74951
+ notifyReplayedExternalTxns() {
74952
+ this.onReplayedExternalTxns.raiseEvent();
74953
+ }
74954
+ /** @internal */
74936
74955
  notifyChangesApplied() {
74937
74956
  this.onChangesApplied.raiseEvent();
74938
74957
  }
@@ -80698,7 +80717,7 @@ class IModelConnection extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.I
80698
80717
  * @param params The values to bind to the parameters (if the ECSQL has any).
80699
80718
  * @param config Allow to specify certain flags which control how query is executed.
80700
80719
  * @returns Returns an [ECSqlReader]($common) which helps iterate over the result set and also give access to metadata.
80701
- * @beta
80720
+ * @public
80702
80721
  * */
80703
80722
  createQueryReader(ecsql, params, config) {
80704
80723
  const executor = {
@@ -176954,6 +176973,7 @@ __webpack_require__.r(__webpack_exports__);
176954
176973
  /* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
176955
176974
  /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
176956
176975
  /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
176976
+ /* harmony import */ var _geometry3d_Plane3d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry3d/Plane3d */ "../../core/geometry/lib/esm/geometry3d/Plane3d.js");
176957
176977
  /* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
176958
176978
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
176959
176979
  /* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
@@ -176962,7 +176982,6 @@ __webpack_require__.r(__webpack_exports__);
176962
176982
  /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
176963
176983
  /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
176964
176984
  /* harmony import */ var _ClipUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ClipUtils */ "../../core/geometry/lib/esm/clipping/ClipUtils.js");
176965
- /* harmony import */ var _geometry3d_Plane3d__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry3d/Plane3d */ "../../core/geometry/lib/esm/geometry3d/Plane3d.js");
176966
176985
  /*---------------------------------------------------------------------------------------------
176967
176986
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
176968
176987
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -176984,6 +177003,7 @@ __webpack_require__.r(__webpack_exports__);
176984
177003
  * A ClipPlane is a single plane represented as
176985
177004
  * * An inward unit normal (u,v,w)
176986
177005
  * * A signedDistance
177006
+ * More details can be found at docs/learning/geometry/Clipping.md
176987
177007
  *
176988
177008
  * Hence
176989
177009
  * * The halfspace function evaluation for "point" (x,y,z) is `(x,y,z) DOT (u,v,w) - signedDistance`.
@@ -177496,8 +177516,9 @@ class ClipPlane extends _geometry3d_Plane3d__WEBPACK_IMPORTED_MODULE_0__.Plane3d
177496
177516
  xyzOut.pushWrap(1);
177497
177517
  return xyzOut;
177498
177518
  }
177499
- /** Implement appendPolygonClip, as defined in interface PolygonClipper.
177500
- * @param xyz input polygon. This is not changed.
177519
+ /**
177520
+ * Implement appendPolygonClip, as defined in interface PolygonClipper.
177521
+ * @param xyz convex polygon. This is not changed.
177501
177522
  * @param insideFragments Array to receive "inside" fragments. Each fragment is a GrowableXYZArray grabbed
177502
177523
  * from the cache. This is NOT cleared.
177503
177524
  * @param outsideFragments Array to receive "outside" fragments. Each fragment is a GrowableXYZArray grabbed
@@ -178275,22 +178296,28 @@ __webpack_require__.r(__webpack_exports__);
178275
178296
  /* harmony export */ ClipStepAction: () => (/* binding */ ClipStepAction),
178276
178297
  /* harmony export */ ClipUtilities: () => (/* binding */ ClipUtilities)
178277
178298
  /* harmony export */ });
178278
- /* harmony import */ var _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../curve/CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
178279
- /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
178280
- /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
178299
+ /* harmony import */ var _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../curve/CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
178300
+ /* harmony import */ var _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../curve/CurveFactory */ "../../core/geometry/lib/esm/curve/CurveFactory.js");
178301
+ /* harmony import */ var _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../curve/CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
178302
+ /* harmony import */ var _curve_LineString3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../curve/LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
178303
+ /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
178304
+ /* harmony import */ var _curve_Path__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/Path */ "../../core/geometry/lib/esm/curve/Path.js");
178305
+ /* harmony import */ var _curve_RegionOps__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../curve/RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
178306
+ /* harmony import */ var _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../curve/UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
178281
178307
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
178282
- /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
178283
- /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
178284
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
178285
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
178286
- /* harmony import */ var _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../geometry3d/ReusableObjectCache */ "../../core/geometry/lib/esm/geometry3d/ReusableObjectCache.js");
178287
- /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
178288
- /* harmony import */ var _ClipPlane__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
178289
- /* harmony import */ var _ClipPrimitive__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ClipPrimitive */ "../../core/geometry/lib/esm/clipping/ClipPrimitive.js");
178290
- /* harmony import */ var _ClipVector__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ClipVector */ "../../core/geometry/lib/esm/clipping/ClipVector.js");
178291
- /* harmony import */ var _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
178292
- /* harmony import */ var _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./internalContexts/LineStringOffsetClipperContext */ "../../core/geometry/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js");
178293
- /* harmony import */ var _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./UnionOfConvexClipPlaneSets */ "../../core/geometry/lib/esm/clipping/UnionOfConvexClipPlaneSets.js");
178308
+ /* harmony import */ var _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/FrameBuilder */ "../../core/geometry/lib/esm/geometry3d/FrameBuilder.js");
178309
+ /* harmony import */ var _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../geometry3d/GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
178310
+ /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
178311
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
178312
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
178313
+ /* harmony import */ var _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/ReusableObjectCache */ "../../core/geometry/lib/esm/geometry3d/ReusableObjectCache.js");
178314
+ /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
178315
+ /* harmony import */ var _ClipPlane__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ClipPlane */ "../../core/geometry/lib/esm/clipping/ClipPlane.js");
178316
+ /* harmony import */ var _ClipPrimitive__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./ClipPrimitive */ "../../core/geometry/lib/esm/clipping/ClipPrimitive.js");
178317
+ /* harmony import */ var _ClipVector__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ClipVector */ "../../core/geometry/lib/esm/clipping/ClipVector.js");
178318
+ /* harmony import */ var _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ConvexClipPlaneSet */ "../../core/geometry/lib/esm/clipping/ConvexClipPlaneSet.js");
178319
+ /* harmony import */ var _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./internalContexts/LineStringOffsetClipperContext */ "../../core/geometry/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js");
178320
+ /* harmony import */ var _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./UnionOfConvexClipPlaneSets */ "../../core/geometry/lib/esm/clipping/UnionOfConvexClipPlaneSets.js");
178294
178321
  /*---------------------------------------------------------------------------------------------
178295
178322
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
178296
178323
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -178312,6 +178339,12 @@ __webpack_require__.r(__webpack_exports__);
178312
178339
 
178313
178340
 
178314
178341
 
178342
+
178343
+
178344
+
178345
+
178346
+
178347
+
178315
178348
 
178316
178349
 
178317
178350
  /**
@@ -178359,7 +178392,7 @@ var ClipStatus;
178359
178392
  */
178360
178393
  class ClipUtilities {
178361
178394
  /**
178362
- * * Augment the unsortedFractionsArray with 0 and 1
178395
+ * Augment the unsortedFractionsArray with 0 and 1
178363
178396
  * * sort
178364
178397
  * * test the midpoint of each interval with `clipper.isPointOnOrInside`
178365
178398
  * * pass accepted intervals to `announce(f0,f1,curve)`
@@ -178406,7 +178439,7 @@ class ClipUtilities {
178406
178439
  return intervals.length > 0;
178407
178440
  }
178408
178441
  /**
178409
- * Find portions of the curve that are within the clipper.
178442
+ * Find portions of the curve primitive that are within the clipper.
178410
178443
  * Collect them into an array of curve primitives.
178411
178444
  */
178412
178445
  static collectClippedCurves(curve, clipper) {
@@ -178420,6 +178453,75 @@ class ClipUtilities {
178420
178453
  });
178421
178454
  return result;
178422
178455
  }
178456
+ /**
178457
+ * Find portions of the planar region that are within the clipper.
178458
+ * Collect them into a single region to return.
178459
+ */
178460
+ static clipAnyRegion(region, clipper) {
178461
+ let result;
178462
+ // Create "local region" which is the result of rotating region to make
178463
+ // it parallel to the xy-plane and then translating it to the xy-plane.
178464
+ const localToWorld = _geometry3d_FrameBuilder__WEBPACK_IMPORTED_MODULE_1__.FrameBuilder.createRightHandedFrame(undefined, region);
178465
+ if (!localToWorld)
178466
+ return result;
178467
+ const worldToLocal = localToWorld?.inverse();
178468
+ if (!worldToLocal)
178469
+ return result;
178470
+ const localRegion = region.cloneTransformed(worldToLocal);
178471
+ if (!localRegion)
178472
+ return result;
178473
+ // We can only clip convex polygons with our clipper machinery, but the input region doesn't have to be
178474
+ // convex or even a polygon. We get around this limitation by using a Boolean operation, which admits
178475
+ // *any* planar regions, albeit in local coordinates. First, we clip a rectangle that covers the input region
178476
+ // (in world coordinates), then we intersect the resulting fragments with the input region in local coordinates.
178477
+ // Finally, we assemble the results into a UnionRegion back in world coordinates.
178478
+ const localRegionRange = ClipUtilities._workRange = localRegion.range();
178479
+ const xLength = localRegionRange.xLength();
178480
+ const yLength = localRegionRange.yLength();
178481
+ const rectangle = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_2__.LineString3d.createRectangleXY(localRegionRange.low, xLength, yLength, true);
178482
+ rectangle.tryTransformInPlace(localToWorld);
178483
+ // Clip the rectangle to produce fragment(s) which we can Boolean intersect with the input region.
178484
+ const insideFragments = [];
178485
+ const outsideFragments = [];
178486
+ const cache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_3__.GrowableXYZArrayCache();
178487
+ clipper.appendPolygonClip?.(rectangle.packedPoints, insideFragments, outsideFragments, cache);
178488
+ if (insideFragments.length === 0)
178489
+ return result;
178490
+ // Create the "clipped region".
178491
+ for (const fragment of insideFragments) {
178492
+ const loop = _curve_Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(fragment);
178493
+ loop.tryTransformInPlace(worldToLocal);
178494
+ const clippedLocalRegion = _curve_RegionOps__WEBPACK_IMPORTED_MODULE_5__.RegionOps.regionBooleanXY(localRegion, loop, _curve_RegionOps__WEBPACK_IMPORTED_MODULE_5__.RegionBinaryOpType.Intersection);
178495
+ if (clippedLocalRegion) {
178496
+ clippedLocalRegion.tryTransformInPlace(localToWorld);
178497
+ if (!result)
178498
+ result = (clippedLocalRegion instanceof _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_6__.UnionRegion) ? clippedLocalRegion : _curve_UnionRegion__WEBPACK_IMPORTED_MODULE_6__.UnionRegion.create(clippedLocalRegion);
178499
+ else if (!result.tryAddChild(clippedLocalRegion))
178500
+ result.children.push(...clippedLocalRegion.children);
178501
+ }
178502
+ }
178503
+ return result;
178504
+ }
178505
+ /**
178506
+ * Find portions of any curve that are within the clipper.
178507
+ * Collect them into an array of any curves.
178508
+ */
178509
+ static clipAnyCurve(curve, clipper) {
178510
+ if (curve instanceof _curve_CurvePrimitive__WEBPACK_IMPORTED_MODULE_7__.CurvePrimitive)
178511
+ return ClipUtilities.collectClippedCurves(curve, clipper);
178512
+ if (curve.isAnyRegionType) {
178513
+ const ret = ClipUtilities.clipAnyRegion(curve, clipper);
178514
+ return ret ? [ret] : [];
178515
+ }
178516
+ const result = [];
178517
+ if (curve instanceof _curve_Path__WEBPACK_IMPORTED_MODULE_8__.Path || curve instanceof _curve_CurveCollection__WEBPACK_IMPORTED_MODULE_9__.BagOfCurves) {
178518
+ for (const child of curve.children) {
178519
+ const partialClip = ClipUtilities.clipAnyCurve(child, clipper);
178520
+ result.push(...partialClip);
178521
+ }
178522
+ }
178523
+ return result;
178524
+ }
178423
178525
  /**
178424
178526
  * Clip a polygon down to regions defined by each shape of a ClipShape.
178425
178527
  * @return An multidimensional array of points, where each array is the boundary of part of the remaining polygon.
@@ -178458,8 +178560,8 @@ class ClipUtilities {
178458
178560
  for (const plane of convexSet.planes) {
178459
178561
  let numInside = 0, numOutside = 0;
178460
178562
  const planeDistance = plane.distance - tolerance;
178461
- const currPt = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create();
178462
- const currVec = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create();
178563
+ const currPt = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_10__.Point3d.create();
178564
+ const currVec = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_10__.Vector3d.create();
178463
178565
  for (let i = 0; i < points.length; i++) {
178464
178566
  points.getPoint3dAtUncheckedPointIndex(i, currPt);
178465
178567
  currVec.setFrom(currPt);
@@ -178487,15 +178589,15 @@ class ClipUtilities {
178487
178589
  * @param ignoreInvisiblePlanes if true, do NOT compute a facet for convex set faces marked invisible.
178488
178590
  */
178489
178591
  static announceLoopsOfConvexClipPlaneSetIntersectRange(convexSet, range, loopFunction, includeConvexSetFaces = true, includeRangeFaces = true, ignoreInvisiblePlanes = false) {
178490
- const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray();
178592
+ const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
178491
178593
  if (includeConvexSetFaces) {
178492
178594
  // Clip convexSet planes to the range and to the rest of the convexSet . .
178493
- if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_3__.ConvexClipPlaneSet) {
178595
+ if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet) {
178494
178596
  for (const plane of convexSet.planes) {
178495
178597
  if (ignoreInvisiblePlanes && plane.invisible)
178496
178598
  continue;
178497
178599
  const pointsClippedToRange = plane.intersectRange(range, true);
178498
- const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray();
178600
+ const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
178499
178601
  if (pointsClippedToRange) {
178500
178602
  convexSet.polygonClip(pointsClippedToRange, finalPoints, work, plane);
178501
178603
  if (finalPoints.length > 0)
@@ -178518,10 +178620,10 @@ class ClipUtilities {
178518
178620
  // clip range faces to the convex set . . .
178519
178621
  const corners = range.corners();
178520
178622
  for (let i = 0; i < 6; i++) {
178521
- const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range3d.faceCornerIndices(i);
178522
- const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray();
178523
- const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d.createIndexedPoints(corners, indices);
178524
- if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_3__.ConvexClipPlaneSet) {
178623
+ const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range3d.faceCornerIndices(i);
178624
+ const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
178625
+ const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_2__.LineString3d.createIndexedPoints(corners, indices);
178626
+ if (convexSet instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet) {
178525
178627
  convexSet.polygonClip(lineString.packedPoints, finalPoints, work);
178526
178628
  if (finalPoints.length > 0)
178527
178629
  loopFunction(finalPoints);
@@ -178546,18 +178648,18 @@ class ClipUtilities {
178546
178648
  */
178547
178649
  static loopsOfConvexClipPlaneIntersectionWithRange(allClippers, range, includeConvexSetFaces = true, includeRangeFaces = true, ignoreInvisiblePlanes = false) {
178548
178650
  const result = [];
178549
- if (allClippers instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_6__.UnionOfConvexClipPlaneSets) {
178651
+ if (allClippers instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__.UnionOfConvexClipPlaneSets) {
178550
178652
  for (const clipper of allClippers.convexSets) {
178551
178653
  this.announceLoopsOfConvexClipPlaneSetIntersectRange(clipper, range, (points) => {
178552
178654
  if (points.length > 0)
178553
- result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_7__.Loop.createPolygon(points));
178655
+ result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(points));
178554
178656
  }, includeConvexSetFaces, includeRangeFaces, ignoreInvisiblePlanes);
178555
178657
  }
178556
178658
  }
178557
- else if (allClippers instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_3__.ConvexClipPlaneSet || allClippers instanceof _ClipPlane__WEBPACK_IMPORTED_MODULE_8__.ClipPlane) {
178659
+ else if (allClippers instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet || allClippers instanceof _ClipPlane__WEBPACK_IMPORTED_MODULE_15__.ClipPlane) {
178558
178660
  this.announceLoopsOfConvexClipPlaneSetIntersectRange(allClippers, range, (points) => {
178559
178661
  if (points.length > 0)
178560
- result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_7__.Loop.createPolygon(points));
178662
+ result.push(_curve_Loop__WEBPACK_IMPORTED_MODULE_4__.Loop.createPolygon(points));
178561
178663
  }, includeConvexSetFaces, includeRangeFaces, ignoreInvisiblePlanes);
178562
178664
  }
178563
178665
  return result;
@@ -178569,7 +178671,7 @@ class ClipUtilities {
178569
178671
  * @param range range to intersect
178570
178672
  */
178571
178673
  static rangeOfConvexClipPlaneSetIntersectionWithRange(convexSet, range) {
178572
- const result = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range3d.createNull();
178674
+ const result = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range3d.createNull();
178573
178675
  this.announceLoopsOfConvexClipPlaneSetIntersectRange(convexSet, range, (points) => {
178574
178676
  if (points.length > 0)
178575
178677
  result.extendArray(points);
@@ -178592,22 +178694,22 @@ class ClipUtilities {
178592
178694
  static rangeOfClipperIntersectionWithRange(clipper, range, observeInvisibleFlag = true) {
178593
178695
  if (clipper === undefined)
178594
178696
  return range.clone();
178595
- if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_3__.ConvexClipPlaneSet)
178697
+ if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet)
178596
178698
  return this.rangeOfConvexClipPlaneSetIntersectionWithRange(clipper, range);
178597
- if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_6__.UnionOfConvexClipPlaneSets) {
178598
- const rangeUnion = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range3d.createNull();
178699
+ if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__.UnionOfConvexClipPlaneSets) {
178700
+ const rangeUnion = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range3d.createNull();
178599
178701
  for (const c of clipper.convexSets) {
178600
178702
  const rangeC = this.rangeOfConvexClipPlaneSetIntersectionWithRange(c, range);
178601
178703
  rangeUnion.extendRange(rangeC);
178602
178704
  }
178603
178705
  return rangeUnion;
178604
178706
  }
178605
- if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_9__.ClipPrimitive) {
178707
+ if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_16__.ClipPrimitive) {
178606
178708
  if (observeInvisibleFlag && clipper.invisible)
178607
178709
  return range.clone();
178608
178710
  return this.rangeOfClipperIntersectionWithRange(clipper.fetchClipPlanesRef(), range);
178609
178711
  }
178610
- if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_10__.ClipVector) {
178712
+ if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_17__.ClipVector) {
178611
178713
  const rangeIntersection = range.clone();
178612
178714
  for (const c of clipper.clips) {
178613
178715
  if (observeInvisibleFlag && c.invisible) {
@@ -178639,21 +178741,21 @@ class ClipUtilities {
178639
178741
  static doesClipperIntersectRange(clipper, range, observeInvisibleFlag = true) {
178640
178742
  if (clipper === undefined)
178641
178743
  return true;
178642
- if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_3__.ConvexClipPlaneSet)
178744
+ if (clipper instanceof _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet)
178643
178745
  return this.doesConvexClipPlaneSetIntersectRange(clipper, range);
178644
- if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_6__.UnionOfConvexClipPlaneSets) {
178746
+ if (clipper instanceof _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__.UnionOfConvexClipPlaneSets) {
178645
178747
  for (const c of clipper.convexSets) {
178646
178748
  if (this.doesConvexClipPlaneSetIntersectRange(c, range))
178647
178749
  return true;
178648
178750
  }
178649
178751
  return false;
178650
178752
  }
178651
- if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_9__.ClipPrimitive) {
178753
+ if (clipper instanceof _ClipPrimitive__WEBPACK_IMPORTED_MODULE_16__.ClipPrimitive) {
178652
178754
  if (observeInvisibleFlag && clipper.invisible) // um is there an easy way to detect range-completely-inside?
178653
178755
  return true;
178654
178756
  return this.doesClipperIntersectRange(clipper.fetchClipPlanesRef(), range);
178655
178757
  }
178656
- if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_10__.ClipVector) {
178758
+ if (clipper instanceof _ClipVector__WEBPACK_IMPORTED_MODULE_17__.ClipVector) {
178657
178759
  const rangeIntersection = range.clone();
178658
178760
  for (const c of clipper.clips) {
178659
178761
  if (observeInvisibleFlag && c.invisible) {
@@ -178678,7 +178780,7 @@ class ClipUtilities {
178678
178780
  * @param ignoreInvisiblePlanes if true, do NOT compute a facet for convex set faces marked invisible.
178679
178781
  */
178680
178782
  static doesConvexClipPlaneSetIntersectRange(convexSet, range, includeConvexSetFaces = true, includeRangeFaces = true, ignoreInvisiblePlanes = false) {
178681
- const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray();
178783
+ const work = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
178682
178784
  if (includeConvexSetFaces) {
178683
178785
  // Clip convexSet planes to the range and to the rest of the convexSet . .
178684
178786
  for (const plane of convexSet.planes) {
@@ -178686,7 +178788,7 @@ class ClipUtilities {
178686
178788
  continue;
178687
178789
  const pointsClippedToRange = plane.intersectRange(range, true);
178688
178790
  if (pointsClippedToRange) {
178689
- const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray();
178791
+ const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
178690
178792
  convexSet.polygonClip(pointsClippedToRange, finalPoints, work, plane);
178691
178793
  if (finalPoints.length > 0)
178692
178794
  return true;
@@ -178697,9 +178799,9 @@ class ClipUtilities {
178697
178799
  // clip range faces to the convex set . . .
178698
178800
  const corners = range.corners();
178699
178801
  for (let i = 0; i < 6; i++) {
178700
- const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range3d.faceCornerIndices(i);
178701
- const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_2__.GrowableXYZArray();
178702
- const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_5__.LineString3d.createIndexedPoints(corners, indices);
178802
+ const indices = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range3d.faceCornerIndices(i);
178803
+ const finalPoints = new _geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_11__.GrowableXYZArray();
178804
+ const lineString = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_2__.LineString3d.createIndexedPoints(corners, indices);
178703
178805
  convexSet.polygonClip(lineString.packedPoints, finalPoints, work);
178704
178806
  if (finalPoints.length > 0)
178705
178807
  return true;
@@ -178728,10 +178830,10 @@ class ClipUtilities {
178728
178830
  }
178729
178831
  // convert range0 into a clipper in local1 coordinates, then intersect with range1
178730
178832
  const local0ToLocal1 = worldToLocal1.multiplyTransformTransform(local0ToWorld, worldToLocal1);
178731
- const builder = _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_11__.PolyfaceBuilder.create();
178833
+ const builder = _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_18__.PolyfaceBuilder.create();
178732
178834
  builder.addTransformedRangeMesh(local0ToLocal1, range0);
178733
178835
  const mesh0 = builder.claimPolyface();
178734
- const clipper = ClipUtilities._workClipper = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_3__.ConvexClipPlaneSet.createConvexPolyface(mesh0, ClipUtilities._workClipper).clipper;
178836
+ const clipper = ClipUtilities._workClipper = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet.createConvexPolyface(mesh0, ClipUtilities._workClipper).clipper;
178735
178837
  return ClipUtilities.doesClipperIntersectRange(clipper, myRange1);
178736
178838
  }
178737
178839
  /**
@@ -178783,9 +178885,9 @@ class ClipUtilities {
178783
178885
  */
178784
178886
  static createXYOffsetClipFromLineString(points, leftOffset, rightOffset, z0, z1) {
178785
178887
  if (Array.isArray(points)) {
178786
- return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_12__.LineStringOffsetClipperContext.createClipBetweenOffsets(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_13__.Point3dArrayCarrier(points), leftOffset, rightOffset, z0, z1);
178888
+ return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_19__.LineStringOffsetClipperContext.createClipBetweenOffsets(new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_20__.Point3dArrayCarrier(points), leftOffset, rightOffset, z0, z1);
178787
178889
  }
178788
- return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_12__.LineStringOffsetClipperContext.createClipBetweenOffsets(points, leftOffset, rightOffset, z0, z1);
178890
+ return _internalContexts_LineStringOffsetClipperContext__WEBPACK_IMPORTED_MODULE_19__.LineStringOffsetClipperContext.createClipBetweenOffsets(points, leftOffset, rightOffset, z0, z1);
178789
178891
  }
178790
178892
  /** If data.length >= minLength threshold, push it to destination; if smaller drop it back to the cache. */
178791
178893
  static captureOrDrop(data, minLength, destination, cache) {
@@ -178975,7 +179077,7 @@ class ClipUtilities {
178975
179077
  */
178976
179078
  static doPolygonClipSequence(xyz, clippers, acceptedIn, acceptedOut, finalCandidates, inAction, outAction, finalFragmentAction, arrayCache) {
178977
179079
  if (arrayCache === undefined)
178978
- arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_14__.GrowableXYZArrayCache();
179080
+ arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_3__.GrowableXYZArrayCache();
178979
179081
  let candidates = [arrayCache.grabAndFill(xyz)];
178980
179082
  let nextCandidates = [];
178981
179083
  const intermediateIn = [];
@@ -179012,7 +179114,7 @@ class ClipUtilities {
179012
179114
  /** Pass polygon `xyz` through a sequence of PolygonClip steps with "parity" rules */
179013
179115
  static doPolygonClipParitySequence(xyz, clippers, acceptedIn, acceptedOut, arrayCache) {
179014
179116
  if (arrayCache === undefined)
179015
- arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_14__.GrowableXYZArrayCache();
179117
+ arrayCache = new _geometry3d_ReusableObjectCache__WEBPACK_IMPORTED_MODULE_3__.GrowableXYZArrayCache();
179016
179118
  let candidatesOut = [arrayCache.grabAndFill(xyz)];
179017
179119
  let candidatesIn = [];
179018
179120
  let nextCandidatesIn = [];
@@ -179064,22 +179166,22 @@ class ClipUtilities {
179064
179166
  */
179065
179167
  static createComplementaryClips(clipper) {
179066
179168
  const planes = clipper.planes;
179067
- const interval = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_4__.Range1d.createNull();
179169
+ const interval = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_13__.Range1d.createNull();
179068
179170
  const n = planes.length;
179069
179171
  const newClippers = [];
179070
179172
  for (const p of planes) {
179071
- const outerSet = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_3__.ConvexClipPlaneSet.createEmpty();
179173
+ const outerSet = _ConvexClipPlaneSet__WEBPACK_IMPORTED_MODULE_12__.ConvexClipPlaneSet.createEmpty();
179072
179174
  outerSet.addPlaneToConvexSet(p.cloneNegated());
179073
179175
  newClippers.push(outerSet);
179074
179176
  }
179075
179177
  for (let i = 0; i < n; i++) {
179076
179178
  for (let j = i + 1; j < n; j++) {
179077
- const ray = _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_15__.CurveFactory.planePlaneIntersectionRay(planes[i], planes[j]);
179179
+ const ray = _curve_CurveFactory__WEBPACK_IMPORTED_MODULE_21__.CurveFactory.planePlaneIntersectionRay(planes[i], planes[j]);
179078
179180
  if (ray) {
179079
179181
  if (clipper.hasIntersectionWithRay(ray, interval)) {
179080
179182
  // the normal-to-normal vector is bisector (or close to bisector?)
179081
179183
  const newNormal = planes[j].inwardNormalRef.minus(planes[i].inwardNormalRef);
179082
- const plane1 = _ClipPlane__WEBPACK_IMPORTED_MODULE_8__.ClipPlane.createNormalAndPoint(newNormal, ray.origin);
179184
+ const plane1 = _ClipPlane__WEBPACK_IMPORTED_MODULE_15__.ClipPlane.createNormalAndPoint(newNormal, ray.origin);
179083
179185
  if (plane1) {
179084
179186
  const plane2 = plane1.cloneNegated();
179085
179187
  newClippers[i].addPlaneToConvexSet(plane1);
@@ -179089,10 +179191,10 @@ class ClipUtilities {
179089
179191
  }
179090
179192
  }
179091
179193
  }
179092
- return _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_6__.UnionOfConvexClipPlaneSets.createConvexSets(newClippers);
179194
+ return _UnionOfConvexClipPlaneSets__WEBPACK_IMPORTED_MODULE_14__.UnionOfConvexClipPlaneSets.createConvexSets(newClippers);
179093
179195
  }
179094
179196
  }
179095
- ClipUtilities._selectIntervals01TestPoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create();
179197
+ ClipUtilities._selectIntervals01TestPoint = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_10__.Point3d.create();
179096
179198
 
179097
179199
  function moveFragments(fragments, destination, arrayCache) {
179098
179200
  if (destination === undefined)
@@ -179752,6 +179854,7 @@ class ConvexClipPlaneSet {
179752
179854
  * Create a convex clip plane set that clips to `x0 <= x <= x1` and `y0 <= y <= y1`.
179753
179855
  * * Note that there is no test for the usual ordering `x0 <= x1` or `y0 <= y1`.
179754
179856
  * * if the usual ordering is violated, the convex set is an empty set.
179857
+ * * More details can be found at docs/learning/geometry/Clipping.md
179755
179858
  */
179756
179859
  static createXYBox(x0, y0, x1, y1, result) {
179757
179860
  result = result ? result : new ConvexClipPlaneSet();
@@ -180197,7 +180300,7 @@ class ConvexClipPlaneSet {
180197
180300
  * valid clip in a parity sense.
180198
180301
  * * The containingPlane parameter allows callers within ConvexClipPlane set to bypass planes known to contain
180199
180302
  * the polygon.
180200
- * @param input input polygon, usually convex.
180303
+ * @param input polygon, usually convex.
180201
180304
  * @param output output polygon
180202
180305
  * @param work work array.
180203
180306
  * @param containingPlane if this plane is found in the convex set, it is NOT applied.
@@ -180330,7 +180433,7 @@ class ConvexClipPlaneSet {
180330
180433
  }
180331
180434
  /**
180332
180435
  * Implement appendPolygonClip, as defined in interface PolygonClipper.
180333
- * @param xyz input polygon. This is not changed.
180436
+ * @param xyz convex polygon. This is not changed.
180334
180437
  * @param insideFragments Array to receive "inside" fragments. Each fragment is a GrowableXYZArray grabbed from
180335
180438
  * the cache. This is NOT cleared.
180336
180439
  * @param outsideFragments Array to receive "outside" fragments. Each fragment is a GrowableXYZArray grabbed from
@@ -180707,8 +180810,8 @@ class UnionOfConvexClipPlaneSets {
180707
180810
  }
180708
180811
  }
180709
180812
  /**
180710
- *
180711
- * @param xyz input polygon. This is not changed.
180813
+ * Implement appendPolygonClip, as defined in interface PolygonClipper.
180814
+ * @param xyz convex polygon. This is not changed.
180712
180815
  * @param insideFragments Array to receive "inside" fragments. Each fragment is a GrowableXYZArray grabbed from
180713
180816
  * the cache. This is NOT cleared.
180714
180817
  * @param outsideFragments Array to receive "outside" fragments. Each fragment is a GrowableXYZArray grabbed from
@@ -182740,7 +182843,8 @@ __webpack_require__.r(__webpack_exports__);
182740
182843
 
182741
182844
 
182742
182845
 
182743
- /** A Coordinate is a Point3d with supporting methods from the GeometryQuery abstraction.
182846
+ /**
182847
+ * A Coordinate is a Point3d with supporting methods from the GeometryQuery abstraction.
182744
182848
  * @public
182745
182849
  */
182746
182850
  class CoordinateXYZ extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.GeometryQuery {
@@ -182763,9 +182867,9 @@ class CoordinateXYZ extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geometry
182763
182867
  static createXYZ(x = 0, y = 0, z = 0) {
182764
182868
  return new CoordinateXYZ(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(x, y, z));
182765
182869
  }
182766
- /** return the range of the point */
182870
+ /** Return the range of the point */
182767
182871
  range() { return _geometry3d_Range__WEBPACK_IMPORTED_MODULE_2__.Range3d.create(this._xyz); }
182768
- /** extend `rangeToExtend` to include this point (optionally transformed) */
182872
+ /** Extend `rangeToExtend` to include this point (optionally transformed) */
182769
182873
  extendRange(rangeToExtend, transform) {
182770
182874
  if (transform)
182771
182875
  rangeToExtend.extendTransformedXYZ(transform, this._xyz.x, this._xyz.y, this._xyz.z);
@@ -182777,31 +182881,30 @@ class CoordinateXYZ extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geometry
182777
182881
  transform.multiplyPoint3d(this._xyz, this._xyz);
182778
182882
  return true;
182779
182883
  }
182780
- /** return a transformed clone.
182781
- */
182884
+ /** Return a transformed clone */
182782
182885
  cloneTransformed(transform) {
182783
182886
  const result = new CoordinateXYZ(this._xyz.clone());
182784
182887
  result.tryTransformInPlace(transform);
182785
182888
  return result;
182786
182889
  }
182787
- /** return a clone */
182890
+ /** Return a clone */
182788
182891
  clone() {
182789
182892
  return new CoordinateXYZ(this._xyz.clone());
182790
182893
  }
182791
- /** return GeometryQuery children for recursive queries.
182792
- *
182793
- * * leaf classes do not need to implement.
182894
+ /**
182895
+ * Return GeometryQuery children for recursive queries.
182896
+ * * Leaf classes do not need to implement.
182794
182897
  */
182795
- /** test if (other instanceof Coordinate). */
182898
+ /** Test if (other instanceof Coordinate). */
182796
182899
  isSameGeometryClass(other) {
182797
182900
  return other instanceof CoordinateXYZ;
182798
182901
  }
182799
- /** test for exact structure and nearly identical geometry.
182800
- *
182902
+ /**
182903
+ * Test for exact structure and nearly identical geometry.
182801
182904
  * * Leaf classes must implement !!!
182802
- * * base class implementation recurses through children.
182803
- * * base implementation is complete for classes with children and no properties.
182804
- * * classes with both children and properties must implement for properties, call super for children.
182905
+ * * Base class implementation recurses through children.
182906
+ * * Base implementation is complete for classes with children and no properties.
182907
+ * * Classes with both children and properties must implement for properties, call super for children.
182805
182908
  */
182806
182909
  isAlmostEqual(other) {
182807
182910
  return (other instanceof CoordinateXYZ) && this._xyz.isAlmostEqual(other._xyz);
@@ -183869,7 +183972,7 @@ class CurveChain extends CurveCollection {
183869
183972
  /**
183870
183973
  * Return the index where target is found in the array of children.
183871
183974
  * @param alsoSearchProxies whether to also check proxy curves of the children
183872
- */
183975
+ */
183873
183976
  childIndex(target, alsoSearchProxies) {
183874
183977
  for (let i = 0; i < this._curves.length; i++) {
183875
183978
  if (this._curves[i] === target)
@@ -184211,7 +184314,7 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
184211
184314
  resetGeometry(geometryB) {
184212
184315
  this.setGeometryB(geometryB);
184213
184316
  }
184214
- /** @returns whether the `fraction` is in [0,1] within tolerance */
184317
+ /** returns true if `fraction` is in [0,1] within tolerance */
184215
184318
  acceptFraction(fraction, fractionTol = 1.0e-12) {
184216
184319
  if (fraction < -fractionTol)
184217
184320
  return false;
@@ -184253,8 +184356,9 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
184253
184356
  cpB, fractionB0, fractionB1, reversed, intervalDetails) {
184254
184357
  let globalFractionA, globalFractionB;
184255
184358
  let globalFractionA1, globalFractionB1;
184256
- const isInterval = (intervalDetails !== undefined) &&
184257
- intervalDetails.detailA.hasFraction1 && intervalDetails.detailB.hasFraction1;
184359
+ const isInterval = intervalDetails !== undefined &&
184360
+ intervalDetails.detailA.hasFraction1 &&
184361
+ intervalDetails.detailB.hasFraction1;
184258
184362
  if (isInterval) {
184259
184363
  globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction, fractionA1);
184260
184364
  globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction, fractionB1);
@@ -184388,8 +184492,8 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
184388
184492
  * @param a1 end point of line a
184389
184493
  * @param b0 start point of line b
184390
184494
  * @param b1 end point of line b
184391
- * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a.
184392
- * result.y is fraction on line b.
184495
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y
184496
+ * is fraction on line b.
184393
184497
  */
184394
184498
  static segmentSegmentBoundedApproach(a0, a1, b0, b1, minDistanceSquared) {
184395
184499
  const ux = a1.x - a0.x;
@@ -184427,6 +184531,17 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
184427
184531
  closestApproach = this.updatePointToSegmentDistance(1, a1, b0, b1, -_Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.dotProductXYXY(vx, vy, e10x, e10y) / vv, minDistanceSquared, closestApproach);
184428
184532
  return closestApproach;
184429
184533
  }
184534
+ /**
184535
+ * Return fractions of close approach within minDistance between two line segments( a0,a1) and (b0, b1)
184536
+ * * minDistance is assumed positive
184537
+ * Return the fractional (not xy) coordinates in result.x, result.y
184538
+ * @param a0 start point of line a
184539
+ * @param a1 end point of line a
184540
+ * @param b0 start point of line b
184541
+ * @param b1 end point of line b
184542
+ * @param result point to receive fractional coordinates of intersection. result.x is fraction on line a. result.y
184543
+ * is fraction on line b.
184544
+ */
184430
184545
  testAndRecordFractionalPairApproach(cpA, fA0, fA1, testProjectionOnA, cpB, fB0, fB1, testProjectionOnB, reversed) {
184431
184546
  const pointA0 = cpA.fractionToPoint(fA0);
184432
184547
  const pointA1 = cpA.fractionToPoint(fA1);
@@ -185015,7 +185130,8 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
185015
185130
  let globalFractionA, globalFractionB;
185016
185131
  let globalFractionA1, globalFractionB1;
185017
185132
  const isInterval = intervalDetails !== undefined &&
185018
- intervalDetails.detailA.hasFraction1 && intervalDetails.detailB.hasFraction1;
185133
+ intervalDetails.detailA.hasFraction1 &&
185134
+ intervalDetails.detailB.hasFraction1;
185019
185135
  if (isInterval) {
185020
185136
  globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction, fractionA1);
185021
185137
  globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction, fractionB1);
@@ -185089,8 +185205,8 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
185089
185205
  this.recordPointWithLocalFractions(overlap.detailA.fraction, cpA, fractionA0, fractionA1, overlap.detailB.fraction, cpB, fractionB0, fractionB1, reversed, overlap);
185090
185206
  }
185091
185207
  else if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dXYTransverseIntersectionUnbounded(pointA0, pointA1, pointB0, pointB1, uv)) {
185092
- if (this.acceptFractionOnLine(extendA0, uv.x, extendA1, pointA0, pointA1, this._coincidentGeometryContext.tolerance)
185093
- && this.acceptFractionOnLine(extendB0, uv.y, extendB1, pointB0, pointB1, this._coincidentGeometryContext.tolerance)) {
185208
+ if (this.acceptFractionOnLine(extendA0, uv.x, extendA1, pointA0, pointA1, this._coincidentGeometryContext.tolerance) &&
185209
+ this.acceptFractionOnLine(extendB0, uv.y, extendB1, pointB0, pointB1, this._coincidentGeometryContext.tolerance)) {
185094
185210
  this.recordPointWithLocalFractions(uv.x, cpA, fractionA0, fractionA1, uv.y, cpB, fractionB0, fractionB1, reversed);
185095
185211
  }
185096
185212
  }
@@ -185133,8 +185249,8 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
185133
185249
  }
185134
185250
  }
185135
185251
  // Caller accesses data from a linestring or segment and passes it here.
185136
- // (The line segment in question might be (a) a full line segment or (b) a fragment within a linestring. The fraction and extend parameters
185137
- // allow all combinations to be passed in)
185252
+ // (The line segment in question might be (a) a full line segment or (b) a fragment within a linestring.
185253
+ // The fraction and extend parameters allow all combinations to be passed in)
185138
185254
  dispatchSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
185139
185255
  // Arc: X = C + cU + sV
185140
185256
  // Line: contains points A0,A1
@@ -185159,7 +185275,8 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
185159
185275
  const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
185160
185276
  const arcFraction = data.sweep.radiansToSignedPeriodicFraction(radians.atUncheckedIndex(i));
185161
185277
  const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
185162
- if (lineFraction !== undefined && this.acceptFraction(extendA0, lineFraction, extendA1) &&
185278
+ if (lineFraction !== undefined &&
185279
+ this.acceptFraction(extendA0, lineFraction, extendA1) &&
185163
185280
  this.acceptFraction(extendB0, arcFraction, extendB1)) {
185164
185281
  this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, arcFraction, arc, 0, 1, reversed);
185165
185282
  }
@@ -185186,8 +185303,9 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
185186
185303
  const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
185187
185304
  const arcFraction = data.sweep.radiansToSignedPeriodicFraction(radians.atUncheckedIndex(i));
185188
185305
  const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
185189
- if (lineFraction !== undefined && this.acceptFraction(extendA0, lineFraction, extendA1, lineFractionTol)
185190
- && this.acceptFraction(extendB0, arcFraction, extendB1, arcFractionTol)) {
185306
+ if (lineFraction !== undefined &&
185307
+ this.acceptFraction(extendA0, lineFraction, extendA1, lineFractionTol) &&
185308
+ this.acceptFraction(extendB0, arcFraction, extendB1, arcFractionTol)) {
185191
185309
  this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, arcFraction, arc, 0, 1, reversed);
185192
185310
  }
185193
185311
  }
@@ -185512,8 +185630,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
185512
185630
  const curvePoint = detail.point;
185513
185631
  const curvePointH = this.projectPoint(curvePoint);
185514
185632
  const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, curvePointH);
185515
- if (lineFraction !== undefined &&
185516
- this.acceptFraction(extendA0, lineFraction, extendA1) &&
185633
+ if (lineFraction !== undefined && this.acceptFraction(extendA0, lineFraction, extendA1) &&
185517
185634
  this.acceptFraction(extendB, fractionB, extendB)) {
185518
185635
  this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, fractionB, bcurve, 0, 1, reversed);
185519
185636
  }
@@ -191116,7 +191233,7 @@ class Path extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
191116
191233
  curve.emitStrokes(strokes, options);
191117
191234
  return Path.create(strokes);
191118
191235
  }
191119
- /** Return the boundary type (1) of a corresponding MicroStation CurveVector */
191236
+ /** Return the boundary type (1) of a corresponding MicroStation CurveVector */
191120
191237
  dgnBoundaryType() {
191121
191238
  return 1;
191122
191239
  }
@@ -194810,7 +194927,7 @@ class UnionRegion extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveCol
194810
194927
  * * Returns false if the `AnyCurve` child is not a region type.
194811
194928
  */
194812
194929
  tryAddChild(child) {
194813
- if (child && child instanceof _ParityRegion__WEBPACK_IMPORTED_MODULE_1__.ParityRegion || child instanceof _Loop__WEBPACK_IMPORTED_MODULE_2__.Loop) {
194930
+ if (child && (child instanceof _ParityRegion__WEBPACK_IMPORTED_MODULE_1__.ParityRegion || child instanceof _Loop__WEBPACK_IMPORTED_MODULE_2__.Loop)) {
194814
194931
  this._children.push(child);
194815
194932
  return true;
194816
194933
  }
@@ -202842,7 +202959,6 @@ __webpack_require__.r(__webpack_exports__);
202842
202959
 
202843
202960
 
202844
202961
 
202845
- /* eslint-disable @typescript-eslint/naming-convention, no-empty */
202846
202962
 
202847
202963
 
202848
202964
 
@@ -202850,6 +202966,7 @@ __webpack_require__.r(__webpack_exports__);
202850
202966
 
202851
202967
 
202852
202968
 
202969
+ /* eslint-disable @typescript-eslint/naming-convention, no-empty */
202853
202970
  /**
202854
202971
  * Helper class to accumulate points and vectors until there is enough data to define a coordinate system.
202855
202972
  *
@@ -202857,10 +202974,10 @@ __webpack_require__.r(__webpack_exports__);
202857
202974
  * * create the FrameBuilder and make calls to announcePoint and announceVector.
202858
202975
  * * the frame will be fully determined by an origin and two vectors.
202859
202976
  * * the first call to announcePoint will set the origin.
202860
- * * additional calls to announcePoint will produce announceVector call with the vector from the origin.
202861
- * * After each announcement, call getValidatedFrame(false)
202977
+ * * additional calls to announcePoint will produce announceVector call with the vector from the origin.
202978
+ * * after each announcement, call getValidatedFrame(false)
202862
202979
  * * getValidatedFrame will succeed when it has two independent vectors.
202863
- * * to build a left handed frame,
202980
+ * * To build a left handed frame,
202864
202981
  * * an origin and 3 independent vectors are required.
202865
202982
  * * announce as above, but query with getValidatedFrame (true).
202866
202983
  * * this will use the third vector to select right or left handed frame.
@@ -202875,11 +202992,18 @@ class FrameBuilder {
202875
202992
  }
202876
202993
  return false;
202877
202994
  }
202878
- /** clear all accumulated point and vector data */
202879
- clear() { this._origin = undefined; this._vector0 = undefined; this._vector1 = undefined; this._vector2 = undefined; }
202880
- constructor() { this.clear(); }
202881
- /** Try to assemble the data into a non-singular transform.
202882
- *
202995
+ /** Clear all accumulated point and vector data */
202996
+ clear() {
202997
+ this._origin = undefined;
202998
+ this._vector0 = undefined;
202999
+ this._vector1 = undefined;
203000
+ this._vector2 = undefined;
203001
+ }
203002
+ constructor() {
203003
+ this.clear();
203004
+ }
203005
+ /**
203006
+ * Try to assemble the data into a non-singular transform.
202883
203007
  * * If allowLeftHanded is false, vector0 and vector1 determine a right handed coordinate system.
202884
203008
  * * if allowLeftHanded is true, the z vector of the right handed system can be flipped to agree with vector2 direction.
202885
203009
  */
@@ -202914,8 +203038,11 @@ class FrameBuilder {
202914
203038
  }
202915
203039
  }
202916
203040
  /** Ask if there is a defined origin for the evolving frame */
202917
- get hasOrigin() { return this._origin !== undefined; }
202918
- /** Return the number of vectors saved. Because the save process checks numerics, this should be the rank of the system.
203041
+ get hasOrigin() {
203042
+ return this._origin !== undefined;
203043
+ }
203044
+ /**
203045
+ * Return the number of vectors saved. Because the save process checks numerics, this should be the rank of the system.
202919
203046
  */
202920
203047
  savedVectorCount() {
202921
203048
  if (!this._vector0)
@@ -202926,7 +203053,9 @@ class FrameBuilder {
202926
203053
  return 2;
202927
203054
  return 3;
202928
203055
  }
202929
- /** announce a new point. If this point is different from the origin, also compute and announce the vector from the origin.*/
203056
+ /**
203057
+ * Announce a new point. If this point is different from the origin, also compute and announce the vector from the origin.
203058
+ */
202930
203059
  announcePoint(point) {
202931
203060
  if (!this._origin) {
202932
203061
  this._origin = point.clone();
@@ -202937,7 +203066,7 @@ class FrameBuilder {
202937
203066
  return this.savedVectorCount();
202938
203067
  return this.announceVector(this._origin.vectorTo(point));
202939
203068
  }
202940
- /** announce a new vector. */
203069
+ /** Announce a new vector. */
202941
203070
  announceVector(vector) {
202942
203071
  if (vector.isAlmostZero)
202943
203072
  return this.savedVectorCount();
@@ -202964,8 +203093,9 @@ class FrameBuilder {
202964
203093
  // fall through if prior vectors are all there -- no need for the new one.
202965
203094
  return 3;
202966
203095
  }
202967
- /** Inspect the content of the data. Announce points and vectors. Return when savedVectorCount becomes
202968
- * sufficient for a coordinate system.
203096
+ /**
203097
+ * Inspect the content of the data. Announce points and vectors. Return when savedVectorCount becomes sufficient
203098
+ * for a coordinate system.
202969
203099
  */
202970
203100
  announce(data) {
202971
203101
  if (this.savedVectorCount() > 1)
@@ -203046,11 +203176,11 @@ class FrameBuilder {
203046
203176
  }
203047
203177
  }
203048
203178
  }
203049
- /** create a localToWorld frame for the given data.
203050
- *
203051
- * * origin is at first point
203052
- * * x axis in direction of first nonzero vector present or implied by the input.
203053
- * * y axis is perpendicular to x and contains (in positive side) the next vector present or implied by the input.
203179
+ /**
203180
+ * Create a localToWorld frame for the given data.
203181
+ * * origin is at first point.
203182
+ * * x axis in direction of first nonzero vector present or implied by the input.
203183
+ * * y axis is perpendicular to x and contains (in positive side) the next vector present or implied by the input.
203054
203184
  */
203055
203185
  static createRightHandedFrame(defaultUpVector, ...params) {
203056
203186
  const builder = new FrameBuilder();
@@ -203085,10 +203215,11 @@ class FrameBuilder {
203085
203215
  }
203086
203216
  return undefined;
203087
203217
  }
203088
- /** create a transform containing points or vectors in the given data.
203218
+ /**
203219
+ * Create a transform containing points or vectors in the given data.
203089
203220
  * * The xy columns of the transform contain the first points or vectors of the data.
203090
203221
  * * The z column is perpendicular to that xy plane.
203091
- * * The calculation favors the first points found. It does not try to get a "best" plane.
203222
+ * * The calculation favors the first points found. It does not try to get a "best" plane.
203092
203223
  */
203093
203224
  static createRightHandedLocalToWorld(...params) {
203094
203225
  const builder = new FrameBuilder();
@@ -203101,10 +203232,9 @@ class FrameBuilder {
203101
203232
  return undefined;
203102
203233
  }
203103
203234
  /**
203104
- * try to create a frame whose xy plane is through points.
203105
- *
203106
- * * if 3 or more distinct points are present, the x axis is from the first point to the most distance, and y direction is toward the
203107
- * point most distant from that line.
203235
+ * Try to create a frame whose xy plane is through points.
203236
+ * * If 3 or more distinct points are present, the x axis is from the first point to the most distant, and y
203237
+ * direction is toward the point most distant from that line.
203108
203238
  * @param points array of points
203109
203239
  */
203110
203240
  static createFrameToDistantPoints(points) {
@@ -203121,10 +203251,10 @@ class FrameBuilder {
203121
203251
  return undefined;
203122
203252
  }
203123
203253
  /**
203124
- * try to create a frame whose xy plane is through points, with the points appearing CCW in the local frame.
203254
+ * Try to create a frame whose xy plane is through points, with the points appearing CCW in the local frame.
203125
203255
  *
203126
- * * if 3 or more distinct points are present, the x axis is from the first point to the most distance, and y direction is toward the
203127
- * point most distant from that line.
203256
+ * * If 3 or more distinct points are present, the x axis is from the first point to the most distant, and y
203257
+ * direction is toward the point most distant from that line.
203128
203258
  * @param points array of points
203129
203259
  */
203130
203260
  static createFrameWithCCWPolygon(points) {
@@ -204125,12 +204255,11 @@ __webpack_require__.r(__webpack_exports__);
204125
204255
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
204126
204256
  /* harmony export */ GrowableXYArray: () => (/* binding */ GrowableXYArray)
204127
204257
  /* harmony export */ });
204128
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
204258
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
204129
204259
  /* harmony import */ var _GrowableXYZArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./GrowableXYZArray */ "../../core/geometry/lib/esm/geometry3d/GrowableXYZArray.js");
204130
204260
  /* harmony import */ var _IndexedXYCollection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IndexedXYCollection */ "../../core/geometry/lib/esm/geometry3d/IndexedXYCollection.js");
204131
204261
  /* harmony import */ var _Point2dVector2d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
204132
- /* harmony import */ var _Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
204133
- /* harmony import */ var _PointStreaming__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PointStreaming */ "../../core/geometry/lib/esm/geometry3d/PointStreaming.js");
204262
+ /* harmony import */ var _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
204134
204263
  /*---------------------------------------------------------------------------------------------
204135
204264
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
204136
204265
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -204143,7 +204272,6 @@ __webpack_require__.r(__webpack_exports__);
204143
204272
 
204144
204273
 
204145
204274
 
204146
-
204147
204275
  /** `GrowableXYArray` manages a (possibly growing) Float64Array to pack xy coordinates.
204148
204276
  * @public
204149
204277
  */
@@ -204238,26 +204366,33 @@ class GrowableXYArray extends _IndexedXYCollection__WEBPACK_IMPORTED_MODULE_0__.
204238
204366
  return newPoints;
204239
204367
  }
204240
204368
  /** Create an array populated from
204241
- * * An array of Point2d
204242
- * * An array of Point3d (hidden as XAndY)
204243
- * * An array of objects with keyed values, et `{x:1, y:1}`
204244
- * * A `GrowableXYZArray`
204369
+ * Valid inputs are:
204370
+ * * Point2d
204371
+ * * Point3d
204372
+ * * An array of 2 doubles
204373
+ * * An array of 3 doubles
204374
+ * * A GrowableXYZArray
204375
+ * * A GrowableXYArray
204376
+ * * Any json object satisfying Point3d.isXAndY
204377
+ * * A Float64Array of doubles, interpreted as xyxy
204378
+ * * An array of any of the above
204245
204379
  */
204246
- static create(data) {
204247
- const newPoints = new GrowableXYArray(data.length);
204248
- if (data instanceof _GrowableXYZArray__WEBPACK_IMPORTED_MODULE_1__.GrowableXYZArray) {
204249
- newPoints.pushAllXYAndZ(data);
204380
+ static create(data, result) {
204381
+ if (result) {
204382
+ result.clear();
204250
204383
  }
204251
204384
  else {
204252
- newPoints.pushAll(data);
204385
+ const pointCount = typeof data[0] === "number" ? data.length / 2 : data.length;
204386
+ result = new GrowableXYArray(pointCount);
204253
204387
  }
204254
- return newPoints;
204388
+ result.pushFrom(data);
204389
+ return result;
204255
204390
  }
204256
- /** Restructure MultiLineStringDataVariant as array of GrowableXYZArray */
204391
+ /** Restructure MultiLineStringDataVariant as array of GrowableXYZArray
204392
+ * @deprecated in 4.x. Moved to GrowableXYZArray class.
204393
+ */
204257
204394
  static createArrayOfGrowableXYZArray(data) {
204258
- const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_2__.PointStreamGrowableXYZArrayCollector();
204259
- _PointStreaming__WEBPACK_IMPORTED_MODULE_2__.VariantPointDataStream.streamXYZ(data, collector);
204260
- return collector.claimArrayOfGrowableXYZArray();
204395
+ return _GrowableXYZArray__WEBPACK_IMPORTED_MODULE_1__.GrowableXYZArray.createArrayOfGrowableXYZArray(data);
204261
204396
  }
204262
204397
  /** push a point to the end of the array */
204263
204398
  push(toPush) {
@@ -204283,6 +204418,51 @@ class GrowableXYArray extends _IndexedXYCollection__WEBPACK_IMPORTED_MODULE_0__.
204283
204418
  this.pushXY(p.x, p.y);
204284
204419
  }
204285
204420
  }
204421
+ /** Push points from variant sources.
204422
+ * Valid inputs are:
204423
+ * * Point2d
204424
+ * * Point3d
204425
+ * * An array of 2 doubles
204426
+ * * A GrowableXYArray
204427
+ * * A GrowableXYZArray
204428
+ * * Any json object satisfying Point3d.isXAndY
204429
+ * * A Float64Array of doubles, interpreted as xyxy
204430
+ * * An array of any of the above
204431
+ */
204432
+ pushFrom(p) {
204433
+ if (p instanceof _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d) {
204434
+ this.pushXY(p.x, p.y);
204435
+ }
204436
+ else if (p instanceof _GrowableXYZArray__WEBPACK_IMPORTED_MODULE_1__.GrowableXYZArray) {
204437
+ this.pushAllXYAndZ(p);
204438
+ }
204439
+ else if (p instanceof _Point2dVector2d__WEBPACK_IMPORTED_MODULE_3__.Point2d) {
204440
+ this.pushXY(p.x, p.y);
204441
+ }
204442
+ else if (_Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isNumberArray(p, 3) || p instanceof Float64Array) {
204443
+ const xyToAdd = Math.trunc(p.length / 2);
204444
+ this.ensureCapacity(this._xyInUse + xyToAdd, false);
204445
+ this.copyData(p, xyToAdd, this._xyInUse);
204446
+ this._xyInUse += xyToAdd;
204447
+ }
204448
+ else if (_Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isNumberArray(p, 2)) {
204449
+ this.pushXY(p[0], p[1]);
204450
+ }
204451
+ else if (Array.isArray(p)) {
204452
+ // direct recursion re-wraps p and goes infinite. Unroll here.
204453
+ for (const q of p)
204454
+ this.pushFrom(q);
204455
+ }
204456
+ else if (_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.isXAndY(p)) {
204457
+ this.pushXY(p.x, p.y);
204458
+ }
204459
+ else if (p instanceof _IndexedXYCollection__WEBPACK_IMPORTED_MODULE_0__.IndexedXYCollection) {
204460
+ const n = p.length;
204461
+ this.ensureCapacity(this._xyInUse + n, false);
204462
+ for (let i = 0; i < n; i++)
204463
+ this.pushXY(p.getXAtUncheckedPointIndex(i), p.getYAtUncheckedPointIndex(i));
204464
+ }
204465
+ }
204286
204466
  /**
204287
204467
  * Replicate numWrap xy values from the front of the array as new values at the end.
204288
204468
  * @param numWrap number of xy values to replicate
@@ -204518,7 +204698,7 @@ class GrowableXYArray extends _IndexedXYCollection__WEBPACK_IMPORTED_MODULE_0__.
204518
204698
  const result = [];
204519
204699
  const data = this._data;
204520
204700
  for (let i = 0; i < n; i += 2)
204521
- result.push(_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__.Point3d.create(data[i], data[i + 1], z));
204701
+ result.push(_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(data[i], data[i + 1], z));
204522
204702
  return result;
204523
204703
  }
204524
204704
  /** reverse the order of points. */
@@ -204612,7 +204792,7 @@ class GrowableXYArray extends _IndexedXYCollection__WEBPACK_IMPORTED_MODULE_0__.
204612
204792
  const n = 2 * (this._xyInUse - 1); // Length already takes into account what specifically is in use
204613
204793
  const data = this._data;
204614
204794
  for (let i = 0; i < n; i += 2)
204615
- sum += _Geometry__WEBPACK_IMPORTED_MODULE_5__.Geometry.hypotenuseXY(data[i + 2] - data[i], data[i + 3] - data[i + 1]);
204795
+ sum += _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.hypotenuseXY(data[i + 2] - data[i], data[i + 3] - data[i + 1]);
204616
204796
  return sum;
204617
204797
  }
204618
204798
  /**
@@ -204651,7 +204831,7 @@ class GrowableXYArray extends _IndexedXYCollection__WEBPACK_IMPORTED_MODULE_0__.
204651
204831
  for (let i = 2; i < n; i += 2, dx1 = dx2, dy1 = dy2) {
204652
204832
  dx2 = this._data[i] - x0;
204653
204833
  dy2 = this._data[i + 1] - y0;
204654
- area += _Geometry__WEBPACK_IMPORTED_MODULE_5__.Geometry.crossProductXYXY(dx1, dy1, dx2, dy2);
204834
+ area += _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.crossProductXYXY(dx1, dy1, dx2, dy2);
204655
204835
  }
204656
204836
  }
204657
204837
  return 0.5 * area;
@@ -204681,7 +204861,7 @@ class GrowableXYArray extends _IndexedXYCollection__WEBPACK_IMPORTED_MODULE_0__.
204681
204861
  const j = targetAIndex * 2;
204682
204862
  const k = targetBIndex * 2;
204683
204863
  const data = this._data;
204684
- return _Geometry__WEBPACK_IMPORTED_MODULE_5__.Geometry.crossProductXYXY(data[j] - data[i], data[j + 1] - data[i + 1], data[k] - data[i], data[k + 1] - data[i + 1]);
204864
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.crossProductXYXY(data[j] - data[i], data[j + 1] - data[i + 1], data[k] - data[i], data[k + 1] - data[i + 1]);
204685
204865
  }
204686
204866
  return undefined;
204687
204867
  }
@@ -204691,7 +204871,7 @@ class GrowableXYArray extends _IndexedXYCollection__WEBPACK_IMPORTED_MODULE_0__.
204691
204871
  const j = targetAIndex * 2;
204692
204872
  const k = targetBIndex * 2;
204693
204873
  const data = this._data;
204694
- return _Geometry__WEBPACK_IMPORTED_MODULE_5__.Geometry.crossProductXYXY(data[j] - origin.x, data[j + 1] - origin.y, data[k] - origin.x, data[k + 1] - origin.y);
204874
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.crossProductXYXY(data[j] - origin.x, data[j + 1] - origin.y, data[k] - origin.x, data[k + 1] - origin.y);
204695
204875
  }
204696
204876
  return undefined;
204697
204877
  }
@@ -204700,7 +204880,7 @@ class GrowableXYArray extends _IndexedXYCollection__WEBPACK_IMPORTED_MODULE_0__.
204700
204880
  if (this.isIndexValid(i) && this.isIndexValid(j)) {
204701
204881
  const i0 = 2 * i;
204702
204882
  const j0 = 2 * j;
204703
- return _Geometry__WEBPACK_IMPORTED_MODULE_5__.Geometry.hypotenuseXY(this._data[j0] - this._data[i0], this._data[j0 + 1] - this._data[i0 + 1]);
204883
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.hypotenuseXY(this._data[j0] - this._data[i0], this._data[j0 + 1] - this._data[i0 + 1]);
204704
204884
  }
204705
204885
  return undefined;
204706
204886
  }
@@ -204708,7 +204888,7 @@ class GrowableXYArray extends _IndexedXYCollection__WEBPACK_IMPORTED_MODULE_0__.
204708
204888
  distanceIndexToPoint(i, spacePoint) {
204709
204889
  if (this.isIndexValid(i)) {
204710
204890
  const i0 = 2 * i;
204711
- return _Geometry__WEBPACK_IMPORTED_MODULE_5__.Geometry.hypotenuseXY(spacePoint.x - this._data[i0], spacePoint.y - this._data[i0 + 1]);
204891
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.hypotenuseXY(spacePoint.x - this._data[i0], spacePoint.y - this._data[i0 + 1]);
204712
204892
  }
204713
204893
  return undefined;
204714
204894
  }
@@ -204758,7 +204938,7 @@ class GrowableXYArray extends _IndexedXYCollection__WEBPACK_IMPORTED_MODULE_0__.
204758
204938
  return this._data[2 * pointIndex + componentIndex];
204759
204939
  }
204760
204940
  /** Toleranced equality test */
204761
- isAlmostEqual(other, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_5__.Geometry.smallMetricDistance) {
204941
+ isAlmostEqual(other, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallMetricDistance) {
204762
204942
  const numXY = this._xyInUse;
204763
204943
  if (other._xyInUse !== numXY)
204764
204944
  return false;
@@ -204786,12 +204966,13 @@ __webpack_require__.r(__webpack_exports__);
204786
204966
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
204787
204967
  /* harmony export */ GrowableXYZArray: () => (/* binding */ GrowableXYZArray)
204788
204968
  /* harmony export */ });
204789
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
204969
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
204790
204970
  /* harmony import */ var _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IndexedXYZCollection */ "../../core/geometry/lib/esm/geometry3d/IndexedXYZCollection.js");
204791
- /* harmony import */ var _Point2dVector2d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
204792
- /* harmony import */ var _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
204793
- /* harmony import */ var _Range__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
204794
- /* harmony import */ var _Transform__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
204971
+ /* harmony import */ var _Point2dVector2d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
204972
+ /* harmony import */ var _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
204973
+ /* harmony import */ var _PointStreaming__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PointStreaming */ "../../core/geometry/lib/esm/geometry3d/PointStreaming.js");
204974
+ /* harmony import */ var _Range__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
204975
+ /* harmony import */ var _Transform__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
204795
204976
  /*---------------------------------------------------------------------------------------------
204796
204977
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
204797
204978
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -204805,6 +204986,7 @@ __webpack_require__.r(__webpack_exports__);
204805
204986
 
204806
204987
 
204807
204988
 
204989
+
204808
204990
  /** `GrowableXYArray` manages a (possibly growing) Float64Array to pack xy coordinates.
204809
204991
  * @public
204810
204992
  */
@@ -204907,7 +205089,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
204907
205089
  /** Create an array from various point data formats.
204908
205090
  * Valid inputs are:
204909
205091
  * * Point2d
204910
- * * point3d
205092
+ * * Point3d
204911
205093
  * * An array of 2 doubles
204912
205094
  * * An array of 3 doubles
204913
205095
  * * A GrowableXYZArray
@@ -204929,6 +205111,12 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
204929
205111
  result.pushFrom(data);
204930
205112
  return result;
204931
205113
  }
205114
+ /** Restructure MultiLineStringDataVariant as array of GrowableXYZArray */
205115
+ static createArrayOfGrowableXYZArray(data) {
205116
+ const collector = new _PointStreaming__WEBPACK_IMPORTED_MODULE_1__.PointStreamGrowableXYZArrayCollector();
205117
+ _PointStreaming__WEBPACK_IMPORTED_MODULE_1__.VariantPointDataStream.streamXYZ(data, collector);
205118
+ return collector.claimArrayOfGrowableXYZArray();
205119
+ }
204932
205120
  /** push a point to the end of the array */
204933
205121
  push(toPush) {
204934
205122
  this.pushXYZ(toPush.x, toPush.y, toPush.z);
@@ -204942,7 +205130,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
204942
205130
  /** Push points from variant sources.
204943
205131
  * Valid inputs are:
204944
205132
  * * Point2d
204945
- * * point3d
205133
+ * * Point3d
204946
205134
  * * An array of 2 doubles
204947
205135
  * * An array of 3 doubles
204948
205136
  * * A GrowableXYZArray
@@ -204952,30 +205140,30 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
204952
205140
  * * An array of any of the above
204953
205141
  */
204954
205142
  pushFrom(p) {
204955
- if (p instanceof _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d)
205143
+ if (p instanceof _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d)
204956
205144
  this.pushXYZ(p.x, p.y, p.z);
204957
205145
  else if (p instanceof GrowableXYZArray)
204958
205146
  this.pushFromGrowableXYZArray(p);
204959
- else if (p instanceof _Point2dVector2d__WEBPACK_IMPORTED_MODULE_2__.Point2d)
205147
+ else if (p instanceof _Point2dVector2d__WEBPACK_IMPORTED_MODULE_3__.Point2d)
204960
205148
  this.pushXYZ(p.x, p.y, 0.0);
204961
- else if (_Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isNumberArray(p, 4) || p instanceof Float64Array) {
205149
+ else if (_Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isNumberArray(p, 4) || p instanceof Float64Array) {
204962
205150
  const xyzToAdd = Math.trunc(p.length / 3);
204963
205151
  this.ensureCapacity(this._xyzInUse + xyzToAdd, false);
204964
205152
  this.copyData(p, xyzToAdd, this._xyzInUse);
204965
205153
  this._xyzInUse += xyzToAdd;
204966
205154
  }
204967
- else if (_Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isNumberArray(p, 3))
205155
+ else if (_Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isNumberArray(p, 3))
204968
205156
  this.pushXYZ(p[0], p[1], p[2]);
204969
- else if (_Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isNumberArray(p, 2))
205157
+ else if (_Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isNumberArray(p, 2))
204970
205158
  this.pushXYZ(p[0], p[1], 0.0);
204971
205159
  else if (Array.isArray(p)) {
204972
- // direct recursion re-wraps p and goes infinite. unroll here .
205160
+ // direct recursion re-wraps p and goes infinite. Unroll here.
204973
205161
  for (const q of p)
204974
205162
  this.pushFrom(q);
204975
205163
  }
204976
- else if (_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.isXYAndZ(p))
205164
+ else if (_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.isXYAndZ(p))
204977
205165
  this.pushXYZ(p.x, p.y, p.z);
204978
- else if (_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.isXAndY(p))
205166
+ else if (_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.isXAndY(p))
204979
205167
  this.pushXYZ(p.x, p.y, 0.0);
204980
205168
  else if (p instanceof _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0__.IndexedXYZCollection) {
204981
205169
  const n = p.length;
@@ -205076,7 +205264,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205076
205264
  */
205077
205265
  getPoint3dAtUncheckedPointIndex(pointIndex, result) {
205078
205266
  const index = 3 * pointIndex;
205079
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(this._data[index], this._data[index + 1], this._data[index + 2], result);
205267
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(this._data[index], this._data[index + 1], this._data[index + 2], result);
205080
205268
  }
205081
205269
  /**
205082
205270
  * Get a point by index, strongly typed as a Point2d. This is unchecked. Use getPoint2dAtCheckedPointIndex to have validity test.
@@ -205085,13 +205273,13 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205085
205273
  */
205086
205274
  getPoint2dAtUncheckedPointIndex(pointIndex, result) {
205087
205275
  const index = 3 * pointIndex;
205088
- return _Point2dVector2d__WEBPACK_IMPORTED_MODULE_2__.Point2d.create(this._data[index], this._data[index + 1], result);
205276
+ return _Point2dVector2d__WEBPACK_IMPORTED_MODULE_3__.Point2d.create(this._data[index], this._data[index + 1], result);
205089
205277
  }
205090
205278
  /** copy xyz into strongly typed Point3d */
205091
205279
  getPoint3dAtCheckedPointIndex(pointIndex, result) {
205092
205280
  if (this.isIndexValid(pointIndex)) {
205093
205281
  const index = 3 * pointIndex;
205094
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(this._data[index], this._data[index + 1], this._data[index + 2], result);
205282
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(this._data[index], this._data[index + 1], this._data[index + 2], result);
205095
205283
  }
205096
205284
  return undefined;
205097
205285
  }
@@ -205114,7 +205302,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205114
205302
  getPoint2dAtCheckedPointIndex(pointIndex, result) {
205115
205303
  if (this.isIndexValid(pointIndex)) {
205116
205304
  const index = 3 * pointIndex;
205117
- return _Point2dVector2d__WEBPACK_IMPORTED_MODULE_2__.Point2d.create(this._data[index], this._data[index + 1], result);
205305
+ return _Point2dVector2d__WEBPACK_IMPORTED_MODULE_3__.Point2d.create(this._data[index], this._data[index + 1], result);
205118
205306
  }
205119
205307
  return undefined;
205120
205308
  }
@@ -205122,7 +205310,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205122
205310
  getVector3dAtCheckedVectorIndex(vectorIndex, result) {
205123
205311
  if (this.isIndexValid(vectorIndex)) {
205124
205312
  const index = 3 * vectorIndex;
205125
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(this._data[index], this._data[index + 1], this._data[index + 2], result);
205313
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(this._data[index], this._data[index + 1], this._data[index + 2], result);
205126
205314
  }
205127
205315
  return undefined;
205128
205316
  }
@@ -205221,7 +205409,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205221
205409
  const result = [];
205222
205410
  const data = this._data;
205223
205411
  for (let i = 0; i < n; i += 3)
205224
- result.push(_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(data[i], data[i + 1], data[i + 2]));
205412
+ result.push(_Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(data[i], data[i + 1], data[i + 2]));
205225
205413
  return result;
205226
205414
  }
205227
205415
  /** multiply each point by the transform, replace values. */
@@ -205307,7 +205495,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205307
205495
  if (!matrix.computeCachedInverse(true))
205308
205496
  return false;
205309
205497
  const coffs = matrix.inverseCoffs;
205310
- const tol = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallFloatingPoint;
205498
+ const tol = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallFloatingPoint;
205311
205499
  let x = 0;
205312
205500
  let y = 0;
205313
205501
  let z = 0;
@@ -205350,7 +205538,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205350
205538
  multiplyMatrix4dAndQuietRenormalizeMatrix4d(matrix) {
205351
205539
  const data = this._data;
205352
205540
  const nDouble = this.float64Length;
205353
- const xyz1 = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create();
205541
+ const xyz1 = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create();
205354
205542
  for (let i = 0; i + 2 <= nDouble; i += 3) {
205355
205543
  matrix.multiplyXYZWQuietRenormalize(data[i], data[i + 1], data[i + 2], 1.0, xyz1);
205356
205544
  data[i] = xyz1.x;
@@ -205399,7 +205587,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205399
205587
  }
205400
205588
  /** get range of points. */
205401
205589
  getRange(transform) {
205402
- const range = _Range__WEBPACK_IMPORTED_MODULE_4__.Range3d.createNull();
205590
+ const range = _Range__WEBPACK_IMPORTED_MODULE_5__.Range3d.createNull();
205403
205591
  this.extendRange(range, transform);
205404
205592
  return range;
205405
205593
  }
@@ -205414,7 +205602,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205414
205602
  const n = 3 * (this._xyzInUse - 1); // Length already takes into account what specifically is in use
205415
205603
  const data = this._data;
205416
205604
  for (let i = 0; i < n; i += 3)
205417
- sum += _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.hypotenuseXYZ(data[i + 3] - data[i], data[i + 4] - data[i + 1], data[i + 5] - data[i + 2]);
205605
+ sum += _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.hypotenuseXYZ(data[i + 3] - data[i], data[i + 4] - data[i + 1], data[i + 5] - data[i + 2]);
205418
205606
  return sum;
205419
205607
  }
205420
205608
  /**
@@ -205429,7 +205617,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205429
205617
  }
205430
205618
  }
205431
205619
  /** test if all points are within tolerance of a plane. */
205432
- isCloseToPlane(plane, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallMetricDistance) {
205620
+ isCloseToPlane(plane, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallMetricDistance) {
205433
205621
  const numCoordinate = 3 * this._xyzInUse;
205434
205622
  const data = this._data;
205435
205623
  for (let i = 0; i < numCoordinate; i += 3)
@@ -205442,7 +205630,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205442
205630
  * * If already closed within tolerance, force exact copy
205443
205631
  * * otherwise leave unchanged.
205444
205632
  */
205445
- forceClosure(tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallMetricDistance) {
205633
+ forceClosure(tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallMetricDistance) {
205446
205634
  const d = this.distanceIndexIndex(0, this.length - 1);
205447
205635
  // leave the empty array alone.
205448
205636
  // Note that singleton will generate 0 distance and do nothing.
@@ -205464,7 +205652,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205464
205652
  const data = this._data;
205465
205653
  i = 3 * i;
205466
205654
  j = 3 * j;
205467
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(fraction0 * data[i] + fraction * data[j], fraction0 * data[i + 1] + fraction * data[j + 1], fraction0 * data[i + 2] + fraction * data[j + 2], result);
205655
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(fraction0 * data[i] + fraction * data[j], fraction0 * data[i + 1] + fraction * data[j + 1], fraction0 * data[i + 2] + fraction * data[j + 2], result);
205468
205656
  }
205469
205657
  return undefined;
205470
205658
  }
@@ -205495,7 +205683,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205495
205683
  for (let i = 3; i < n; i += 3, dx1 = dx2, dy1 = dy2) {
205496
205684
  dx2 = this._data[i] - x0;
205497
205685
  dy2 = this._data[i + 1] - y0;
205498
- area += _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.crossProductXYXY(dx1, dy1, dx2, dy2);
205686
+ area += _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.crossProductXYXY(dx1, dy1, dx2, dy2);
205499
205687
  }
205500
205688
  }
205501
205689
  return 0.5 * area;
@@ -205507,14 +205695,14 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205507
205695
  const data = this._data;
205508
205696
  i = 3 * i;
205509
205697
  j = 3 * j;
205510
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(data[j] - data[i], data[j + 1] - data[i + 1], data[j + 2] - data[i + 2], result);
205698
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(data[j] - data[i], data[j + 1] - data[i + 1], data[j + 2] - data[i + 2], result);
205511
205699
  }
205512
205700
  /** Compute a vector from origin to indexed target j */
205513
205701
  vectorXYAndZIndex(origin, j, result) {
205514
205702
  if (this.isIndexValid(j)) {
205515
205703
  const data = this._data;
205516
205704
  j = 3 * j;
205517
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(data[j] - origin.x, data[j + 1] - origin.y, data[j + 2] - origin.z, result);
205705
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(data[j] - origin.x, data[j + 1] - origin.y, data[j + 2] - origin.z, result);
205518
205706
  }
205519
205707
  return undefined;
205520
205708
  }
@@ -205525,7 +205713,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205525
205713
  const j = targetAIndex * 3;
205526
205714
  const k = targetBIndex * 3;
205527
205715
  const data = this._data;
205528
- return _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.crossProductXYZXYZ(data[j] - data[i], data[j + 1] - data[i + 1], data[j + 2] - data[i + 2], data[k] - data[i], data[k + 1] - data[i + 1], data[k + 2] - data[i + 2], result);
205716
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.crossProductXYZXYZ(data[j] - data[i], data[j + 1] - data[i + 1], data[j + 2] - data[i + 2], data[k] - data[i], data[k + 1] - data[i + 1], data[k + 2] - data[i + 2], result);
205529
205717
  }
205530
205718
  return undefined;
205531
205719
  }
@@ -205573,7 +205761,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205573
205761
  const j = targetAIndex * 3;
205574
205762
  const k = targetBIndex * 3;
205575
205763
  const data = this._data;
205576
- return _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.crossProductXYZXYZ(data[j] - origin.x, data[j + 1] - origin.y, data[j + 2] - origin.z, data[k] - origin.x, data[k + 1] - origin.y, data[k + 2] - origin.z, result);
205764
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.crossProductXYZXYZ(data[j] - origin.x, data[j + 1] - origin.y, data[j + 2] - origin.z, data[k] - origin.x, data[k + 1] - origin.y, data[k + 2] - origin.z, result);
205577
205765
  }
205578
205766
  return undefined;
205579
205767
  }
@@ -205581,7 +205769,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205581
205769
  distanceIndexToPoint(i, spacePoint) {
205582
205770
  if (this.isIndexValid(i)) {
205583
205771
  const i0 = 3 * i;
205584
- return _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.hypotenuseXYZ(spacePoint.x - this._data[i0], spacePoint.y - this._data[i0 + 1], spacePoint.z - this._data[i0 + 2]);
205772
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.hypotenuseXYZ(spacePoint.x - this._data[i0], spacePoint.y - this._data[i0 + 1], spacePoint.z - this._data[i0 + 2]);
205585
205773
  }
205586
205774
  return undefined;
205587
205775
  }
@@ -205594,7 +205782,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205594
205782
  if (this.isIndexValid(i) && this.isIndexValid(j)) {
205595
205783
  const i0 = 3 * i;
205596
205784
  const j0 = 3 * j;
205597
- return _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.hypotenuseSquaredXYZ(this._data[j0] - this._data[i0], this._data[j0 + 1] - this._data[i0 + 1], this._data[j0 + 2] - this._data[i0 + 2]);
205785
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.hypotenuseSquaredXYZ(this._data[j0] - this._data[i0], this._data[j0 + 1] - this._data[i0 + 1], this._data[j0 + 2] - this._data[i0 + 2]);
205598
205786
  }
205599
205787
  return undefined;
205600
205788
  }
@@ -205607,7 +205795,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205607
205795
  if (this.isIndexValid(i) && this.isIndexValid(j)) {
205608
205796
  const i0 = 3 * i;
205609
205797
  const j0 = 3 * j;
205610
- return _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.hypotenuseXYZ(this._data[j0] - this._data[i0], this._data[j0 + 1] - this._data[i0 + 1], this._data[j0 + 2] - this._data[i0 + 2]);
205798
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.hypotenuseXYZ(this._data[j0] - this._data[i0], this._data[j0 + 1] - this._data[i0 + 1], this._data[j0 + 2] - this._data[i0 + 2]);
205611
205799
  }
205612
205800
  return undefined;
205613
205801
  }
@@ -205616,7 +205804,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205616
205804
  if (arrayA.isIndexValid(i) && arrayB.isIndexValid(j)) {
205617
205805
  const i0 = 3 * i;
205618
205806
  const j0 = 3 * j;
205619
- return _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.hypotenuseXYZ(arrayB._data[j0] - arrayA._data[i0], arrayB._data[j0 + 1] - arrayA._data[i0 + 1], arrayB._data[j0 + 2] - arrayA._data[i0 + 2]);
205807
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.hypotenuseXYZ(arrayB._data[j0] - arrayA._data[i0], arrayB._data[j0 + 1] - arrayA._data[i0 + 1], arrayB._data[j0 + 2] - arrayA._data[i0 + 2]);
205620
205808
  }
205621
205809
  return undefined;
205622
205810
  }
@@ -205695,10 +205883,10 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205695
205883
  const n = Math.min(arrayA.length, arrayB.length);
205696
205884
  let i = 0;
205697
205885
  let k0;
205698
- const range = _Range__WEBPACK_IMPORTED_MODULE_4__.Range1d.createNull();
205886
+ const range = _Range__WEBPACK_IMPORTED_MODULE_5__.Range1d.createNull();
205699
205887
  while (i < n) {
205700
205888
  k0 = 3 * i;
205701
- range.extendX(_Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.hypotenuseXYZ(dataA[k0] - dataB[k0], dataA[k0 + 1] - dataB[k0 + 1], dataA[k0 + 2] - dataB[k0 + 2]));
205889
+ range.extendX(_Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.hypotenuseXYZ(dataA[k0] - dataB[k0], dataA[k0 + 1] - dataB[k0 + 1], dataA[k0 + 2] - dataB[k0 + 2]));
205702
205890
  i++;
205703
205891
  }
205704
205892
  return range;
@@ -205708,7 +205896,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205708
205896
  * @param points
205709
205897
  * @param tolerance
205710
205898
  */
205711
- static removeClosure(points, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallMetricDistance) {
205899
+ static removeClosure(points, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallMetricDistance) {
205712
205900
  while (points.length > 1 && points.distanceIndexIndex(0, points.length - 1) < tolerance)
205713
205901
  points.pop();
205714
205902
  }
@@ -205734,7 +205922,7 @@ class GrowableXYZArray extends _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_0_
205734
205922
  const vx = data[i0++] - ax;
205735
205923
  const vy = data[i0++] - ay;
205736
205924
  const vz = data[i0++] - az;
205737
- result = _Transform__WEBPACK_IMPORTED_MODULE_5__.Transform.createRowValues(ux, vx, 0, ax, uy, vy, 0, ay, uz, vz, 1, az, result);
205925
+ result = _Transform__WEBPACK_IMPORTED_MODULE_6__.Transform.createRowValues(ux, vx, 0, ax, uy, vy, 0, ay, uz, vz, 1, az, result);
205738
205926
  return result.computeCachedInverse() ? result : undefined;
205739
205927
  }
205740
205928
  return undefined;
@@ -231623,11 +231811,15 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
231623
231811
  }
231624
231812
  }
231625
231813
  /** Add a polygon to the evolving facets.
231626
- *
231627
- * * Add points to the polyface
231628
- * * indices are added (in reverse order if indicated by the builder state)
231629
- * @param normals array of points. This may contain extra points not to be used in the polygon
231630
- * @param numPointsToUse number of points to use.
231814
+ * * add points to the polyface
231815
+ * * compute each point index as the point is added
231816
+ * * all data arrays are parallel to the point array
231817
+ * * point indices are added in reverse order if indicated by the builder state
231818
+ * @param points array of vertices in order around the facet
231819
+ * @param normals optional array of normals, one per vertex
231820
+ * @param params optional array of uv-parameters, one per vertex
231821
+ * @param colors optional array of colors, one per vertex
231822
+ * @param edgeVisible optional array of flags, one per vertex, true iff edge starting at corresponding vertex is visible
231631
231823
  */
231632
231824
  addFacetFromGrowableArrays(points, normals, params, colors, edgeVisible) {
231633
231825
  // don't use trailing points that match start point.
@@ -287295,7 +287487,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
287295
287487
  /***/ ((module) => {
287296
287488
 
287297
287489
  "use strict";
287298
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.2.0-dev.0","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.2.0-dev.0","@itwin/core-bentley":"workspace:^4.2.0-dev.0","@itwin/core-common":"workspace:^4.2.0-dev.0","@itwin/core-geometry":"workspace:^4.2.0-dev.0","@itwin/core-orbitgt":"workspace:^4.2.0-dev.0","@itwin/core-quantity":"workspace:^4.2.0-dev.0"},"//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.1.2","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","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.0.0","@itwin/object-storage-core":"^2.0.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"}}');
287490
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.2.0-dev.10","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.2.0-dev.10","@itwin/core-bentley":"workspace:^4.2.0-dev.10","@itwin/core-common":"workspace:^4.2.0-dev.10","@itwin/core-geometry":"workspace:^4.2.0-dev.10","@itwin/core-orbitgt":"workspace:^4.2.0-dev.10","@itwin/core-quantity":"workspace:^4.2.0-dev.10"},"//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.1.2","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","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"}}');
287299
287491
 
287300
287492
  /***/ })
287301
287493