@itwin/rpcinterface-full-stack-tests 5.0.0-dev.16 → 5.0.0-dev.20

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.
@@ -204395,6 +204395,28 @@ class CurveChain extends CurveCollection {
204395
204395
  else
204396
204396
  return undefined;
204397
204397
  }
204398
+ /**
204399
+ * Return the start point and derivative of the first child of the curve chain.
204400
+ * * For queries interior to the chain, use [[CurveChainWithDistanceIndex.fractionToPointAndDerivative]].
204401
+ */
204402
+ startPointAndDerivative(result) {
204403
+ const firstChild = this.getChild(0);
204404
+ if (firstChild)
204405
+ return firstChild.fractionToPointAndDerivative(0.0, result);
204406
+ else
204407
+ return undefined;
204408
+ }
204409
+ /**
204410
+ * Return the end point and derivative of the last child of the curve chain.
204411
+ * * For queries interior to the chain, use [[CurveChainWithDistanceIndex.fractionToPointAndDerivative]].
204412
+ */
204413
+ endPointAndDerivative(result) {
204414
+ const lastChild = this.getChild(this._curves.length - 1);
204415
+ if (lastChild)
204416
+ return lastChild.fractionToPointAndDerivative(1.0, result);
204417
+ else
204418
+ return undefined;
204419
+ }
204398
204420
  /**
204399
204421
  * Return the curve primitive at the given `index`, optionally using `modulo` to map `index` to the cyclic indexing.
204400
204422
  * * In particular, `-1` is the final curve.
@@ -204866,20 +204888,20 @@ __webpack_require__.r(__webpack_exports__);
204866
204888
  /* harmony export */ "MiteredSweepOutputSelect": () => (/* binding */ MiteredSweepOutputSelect)
204867
204889
  /* harmony export */ });
204868
204890
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
204869
- /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
204891
+ /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
204870
204892
  /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
204871
204893
  /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
204872
- /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
204894
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
204873
204895
  /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
204874
204896
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
204875
- /* harmony import */ var _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../geometry3d/PolylineOps */ "../../core/geometry/lib/esm/geometry3d/PolylineOps.js");
204876
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
204877
- /* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
204878
- /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
204879
- /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
204897
+ /* harmony import */ var _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../geometry3d/PolylineOps */ "../../core/geometry/lib/esm/geometry3d/PolylineOps.js");
204898
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
204899
+ /* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
204900
+ /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
204901
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
204880
204902
  /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
204881
204903
  /* harmony import */ var _solid_Cone__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../solid/Cone */ "../../core/geometry/lib/esm/solid/Cone.js");
204882
- /* harmony import */ var _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../solid/RuledSweep */ "../../core/geometry/lib/esm/solid/RuledSweep.js");
204904
+ /* harmony import */ var _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../solid/RuledSweep */ "../../core/geometry/lib/esm/solid/RuledSweep.js");
204883
204905
  /* harmony import */ var _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../solid/TorusPipe */ "../../core/geometry/lib/esm/solid/TorusPipe.js");
204884
204906
  /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
204885
204907
  /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
@@ -204889,7 +204911,8 @@ __webpack_require__.r(__webpack_exports__);
204889
204911
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
204890
204912
  /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
204891
204913
  /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
204892
- /* harmony import */ var _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./spiral/IntegratedSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/IntegratedSpiral3d.js");
204914
+ /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
204915
+ /* harmony import */ var _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./spiral/IntegratedSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/IntegratedSpiral3d.js");
204893
204916
  /*---------------------------------------------------------------------------------------------
204894
204917
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
204895
204918
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -204897,7 +204920,7 @@ __webpack_require__.r(__webpack_exports__);
204897
204920
  /** @packageDocumentation
204898
204921
  * @module Curve
204899
204922
  */
204900
- // import { Geometry, Angle, AngleSweep } from "../Geometry";
204923
+
204901
204924
 
204902
204925
 
204903
204926
 
@@ -204936,6 +204959,7 @@ var MiteredSweepOutputSelect;
204936
204959
  /** Output planes and sections, as well as the assembled ruled sweep and its stroked mesh. */
204937
204960
  MiteredSweepOutputSelect[MiteredSweepOutputSelect["AlsoMesh"] = 2] = "AlsoMesh";
204938
204961
  })(MiteredSweepOutputSelect || (MiteredSweepOutputSelect = {}));
204962
+ ;
204939
204963
  /**
204940
204964
  * The `CurveFactory` class contains methods for specialized curve constructions.
204941
204965
  * @public
@@ -205241,75 +205265,132 @@ class CurveFactory {
205241
205265
  }
205242
205266
  return arcs;
205243
205267
  }
205268
+ /** For a smooth curve, stroke and return unnormalized start/end tangents. */
205269
+ static strokeSmoothCurve(curve, options) {
205270
+ let startTangent, endTangent;
205271
+ if (curve instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_12__.CurvePrimitive) {
205272
+ startTangent = curve.fractionToPointAndDerivative(0.0).direction;
205273
+ endTangent = curve.fractionToPointAndDerivative(1.0).direction;
205274
+ const strokes = _LineString3d__WEBPACK_IMPORTED_MODULE_4__.LineString3d.create();
205275
+ curve.emitStrokes(strokes, options);
205276
+ curve = strokes.packedPoints;
205277
+ }
205278
+ else if (curve instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_14__.CurveChain) {
205279
+ startTangent = curve.startPointAndDerivative()?.direction;
205280
+ endTangent = curve.endPointAndDerivative()?.direction;
205281
+ const strokes = curve.getPackedStrokes(options);
205282
+ if (!strokes)
205283
+ return undefined;
205284
+ curve = strokes;
205285
+ }
205286
+ else if (Array.isArray(curve))
205287
+ curve = new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_3__.Point3dArrayCarrier(curve);
205288
+ return { strokes: curve, startTangent, endTangent };
205289
+ }
205244
205290
  /**
205245
- * Sweep the initialSection along each segment of the centerLine until it hits the bisector plane at the next vertex.
205246
- * * The caller should place the initialSection on a plane perpendicular to the first edge.
205247
- * * This plane is commonly (but not necessarily) through the start point itself.
205248
- * * If the initialSection is not "on a perpendicular plane", the output geometry will still be flattened onto the
205249
- * various planes.
205250
- * * In the "open path" case (i.e when `wrapIfPhysicallyClosed` is false or the path does not have matched first and
205251
- * last points), the first/last output plane will be at the start/end of the first/last edge and on a perpendicular
205252
- * plane.
205253
- * * In the "closed path" case, if start/edn tangents are not provided in the `options`, then the output plane for the
205254
- * first and last point is the bisector of the start and end planes from the "open path" case, and the first/last
205255
- * section geometry may be different from `initialSection`.
205256
- * * The centerline path does NOT have to be planar, however twisting effects effects will appear in the various bisector
205257
- * planes.
205258
- * @param centerline sweep path, e.g., as stroked from a smooth centerline curve.
205291
+ * Align two bisector plane normals to given smooth rail tangents or optional overrides.
205292
+ * * Optionally average the normals for physically closed rail.
205293
+ */
205294
+ static alignFirstAndLastBisectorPlanes(firstPlane, lastPlane, smoothRailData, options) {
205295
+ const normal0 = options?.startTangent ?? (smoothRailData?.startTangent ?? firstPlane.getNormalRef());
205296
+ const normal1 = options?.endTangent ?? (smoothRailData?.endTangent ?? lastPlane.getNormalRef());
205297
+ if (options?.wrapIfPhysicallyClosed && firstPlane.getOriginRef().isAlmostEqual(lastPlane.getOriginRef())) {
205298
+ const avgNormal = normal0.plus(normal1);
205299
+ if (avgNormal.tryNormalizeInPlace()) { // ignore cusp at seam
205300
+ firstPlane.getNormalRef().setFrom(avgNormal);
205301
+ lastPlane.getNormalRef().setFrom(avgNormal);
205302
+ return;
205303
+ }
205304
+ }
205305
+ if (normal0.tryNormalizeInPlace())
205306
+ firstPlane.getNormalRef().setFrom(normal0);
205307
+ if (normal1.tryNormalizeInPlace())
205308
+ lastPlane.getNormalRef().setFrom(normal1);
205309
+ }
205310
+ /** Reverse a closed curve or region if necessary so that its orientation is CCW with respect to the plane normal. */
205311
+ static alignClosedCurveToPlane(curve, planeNormal) {
205312
+ let closedCurve;
205313
+ if (curve instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_12__.CurvePrimitive) {
205314
+ if (curve.startPoint().isAlmostEqual(curve.endPoint()))
205315
+ closedCurve = _Loop__WEBPACK_IMPORTED_MODULE_6__.Loop.create(curve);
205316
+ }
205317
+ else if (curve.isAnyRegion())
205318
+ closedCurve = curve;
205319
+ if (closedCurve) {
205320
+ // The alignment condition is equivalent to positive projected curve area computed wrt to the plane normal.
205321
+ const toLocal = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_15__.Matrix3d.createRigidHeadsUp(planeNormal).transpose();
205322
+ const projection = closedCurve.cloneTransformed(_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createOriginAndMatrix(undefined, toLocal));
205323
+ if (projection) { // now we can ignore z-coords
205324
+ const areaXY = _RegionOps__WEBPACK_IMPORTED_MODULE_17__.RegionOps.computeXYArea(projection);
205325
+ if (areaXY && areaXY < 0)
205326
+ curve.reverseInPlace();
205327
+ }
205328
+ }
205329
+ }
205330
+ /**
205331
+ * Projection to target plane, constructing sweep direction from two given planes.
205332
+ * * If successful, push the target plane and swept section to the output arrays and return the swept section.
205333
+ * * If unsuccessful, leave the output arrays alone and return the input section.
205334
+ */
205335
+ static doSweepToPlane(output, edgePlane0, edgePlane1, targetPlane, section) {
205336
+ const sweepVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createStartEnd(edgePlane0.getOriginRef(), edgePlane1.getOriginRef());
205337
+ const transform = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createFlattenAlongVectorToPlane(sweepVector, targetPlane.getOriginRef(), targetPlane.getNormalRef());
205338
+ if (transform === undefined)
205339
+ return section;
205340
+ const transformedSection = section.cloneTransformed(transform);
205341
+ if (transformedSection === undefined)
205342
+ return section;
205343
+ output.planes.push(targetPlane);
205344
+ output.sections.push(transformedSection);
205345
+ return transformedSection;
205346
+ }
205347
+ /**
205348
+ * Sweep the `initialSection` along each segment of the (stroked) `centerline` until it hits the bisector plane at
205349
+ * the next vertex.
205350
+ * * For best results, the caller should place `initialSection` in a plane perpendicular to the `centerline`
205351
+ * start tangent.
205352
+ * * This plane is commonly (but not necessarily) through the centerline start point itself.
205353
+ * * To compute the sections, `initialSection` is projected in the direction of the centerline start tangent onto
205354
+ * the first bisector plane at the centerline start. The result of this projection will be likewise projected onto
205355
+ * the second plane, and so on in sequence.
205356
+ * * By default, the first/last bisector plane normals are set to the centerline start/end tangents. The caller can
205357
+ * override these with tangents supplied in `options`. If the centerline is physically closed and
205358
+ * `options.wrapIfPhysicallyClosed` is true, the first and last plane normals are averaged and equated.
205359
+ * * The centerline path does NOT have to be planar, however non-planarity will result in twisting of the sections
205360
+ * in the bisector planes.
205361
+ * @param centerline sweep path. Will be stroked if smooth.
205259
205362
  * @param initialSection profile curve to be swept. As noted above, this should be on a plane perpendicular to the
205260
- * first segment of the centerline.
205363
+ * centerline start tangent.
205261
205364
  * @param options options for computation and output.
205262
- * @return array of sections, starting with `initialSection` projected along the first edge to the first plane.
205365
+ * @return array of sections, formed from projecting `initialSection` successively onto the bisector planes.
205263
205366
  */
205264
205367
  static createMiteredSweepSections(centerline, initialSection, options) {
205368
+ const rail = this.strokeSmoothCurve(centerline, options.strokeOptions);
205369
+ if (!rail)
205370
+ return undefined;
205371
+ const planes = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_18__.PolylineOps.createBisectorPlanesForDistinctPoints(rail.strokes);
205372
+ if (!planes || planes.length < 2)
205373
+ return undefined;
205374
+ this.alignFirstAndLastBisectorPlanes(planes[0], planes[planes.length - 1], rail, options);
205375
+ // RuledSweep facet construction assumes the contours are oriented CCW with respect to the sweep direction so that
205376
+ // facet normals point outward. We only have to align the first contour; the rest will inherit its orientation.
205377
+ this.alignClosedCurveToPlane(initialSection, planes[0].getNormalRef());
205265
205378
  const sectionData = { sections: [], planes: [] };
205266
- const planes = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_16__.PolylineOps.createBisectorPlanesForDistinctPoints(centerline, options.wrapIfPhysicallyClosed);
205267
- // apply start/end tangent options
205268
- if (planes !== undefined && planes.length > 1) {
205269
- const firstPlane = planes[0];
205270
- const lastPlane = planes[planes.length - 1];
205271
- const startTang = options.startTangent;
205272
- const endTang = options.endTangent;
205273
- if (!firstPlane.getOriginRef().isAlmostEqual(lastPlane.getOriginRef()) ||
205274
- (startTang && endTang && startTang.isAlmostEqual(endTang, 0.0))) {
205275
- if (startTang?.tryNormalizeInPlace())
205276
- firstPlane.getNormalRef().setFrom(startTang);
205277
- if (endTang?.tryNormalizeInPlace())
205278
- lastPlane.getNormalRef().setFrom(endTang);
205279
- }
205280
- // Projection to target plane, constructing sweep direction from two given planes.
205281
- // If successful, push the target plane and swept section to the output arrays and return the swept section.
205282
- // If unsuccessful, leave the output arrays alone and return the input section.
205283
- const doSweepToPlane = function (edgePlane0, edgePlane1, targetPlane, section) {
205284
- const sweepVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createStartEnd(edgePlane0.getOriginRef(), edgePlane1.getOriginRef());
205285
- const transform = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createFlattenAlongVectorToPlane(sweepVector, targetPlane.getOriginRef(), targetPlane.getNormalRef());
205286
- if (transform === undefined)
205287
- return section;
205288
- const transformedSection = section.cloneTransformed(transform);
205289
- if (transformedSection === undefined)
205290
- return section;
205291
- sectionData.planes.push(targetPlane);
205292
- sectionData.sections.push(transformedSection);
205293
- return transformedSection;
205294
- };
205295
- let currentSection = doSweepToPlane(planes[0], planes[1], planes[0], initialSection);
205296
- for (let i = 1; i < planes.length; i++) {
205297
- currentSection = doSweepToPlane(planes[i - 1], planes[i], planes[i], currentSection);
205298
- }
205299
- if (options.outputSelect) {
205300
- const ruledSweep = _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_18__.RuledSweep.create(sectionData.sections, options.capped ?? false);
205301
- if (ruledSweep) {
205302
- sectionData.ruledSweep = ruledSweep;
205303
- if (MiteredSweepOutputSelect.AlsoMesh === options.outputSelect) {
205304
- const builder = _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_13__.PolyfaceBuilder.create(options.strokeOptions);
205305
- builder.addRuledSweep(ruledSweep);
205306
- sectionData.mesh = builder.claimPolyface();
205307
- }
205379
+ let currentSection = this.doSweepToPlane(sectionData, planes[0], planes[1], planes[0], initialSection);
205380
+ for (let i = 1; i < planes.length; i++)
205381
+ currentSection = this.doSweepToPlane(sectionData, planes[i - 1], planes[i], planes[i], currentSection);
205382
+ if (options.outputSelect) {
205383
+ const ruledSweep = _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_19__.RuledSweep.create(sectionData.sections, options.capped ?? false);
205384
+ if (ruledSweep) {
205385
+ sectionData.ruledSweep = ruledSweep;
205386
+ if (MiteredSweepOutputSelect.AlsoMesh === options.outputSelect) {
205387
+ const builder = _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_13__.PolyfaceBuilder.create(options.strokeOptions);
205388
+ builder.addRuledSweep(ruledSweep);
205389
+ sectionData.mesh = builder.claimPolyface();
205308
205390
  }
205309
205391
  }
205310
- return sectionData;
205311
205392
  }
205312
- return undefined;
205393
+ return sectionData;
205313
205394
  }
205314
205395
  /**
205315
205396
  * Create a circular arc from start point, tangent at start, radius, optional plane normal, arc sweep.
@@ -205341,25 +205422,25 @@ class CurveFactory {
205341
205422
  const lineTurnRadians = vectorAB.angleToXY(vectorBC0);
205342
205423
  const spiralTurnRadians = 0.5 * lineTurnRadians.radians;
205343
205424
  const radiansBC = radiansAB + lineTurnRadians.radians;
205344
- const axesA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_15__.Matrix3d.createRotationAroundAxisIndex(_Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisIndex.Z, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.createRadians(radiansAB));
205345
- const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createRefs(startPoint.clone(), axesA);
205425
+ const axesA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_15__.Matrix3d.createRotationAroundAxisIndex(_Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisIndex.Z, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.createRadians(radiansAB));
205426
+ const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createRefs(startPoint.clone(), axesA);
205346
205427
  // We know how much it has to turn, and but not the length or end radius.
205347
205428
  // make a spiral of referenceLength and scale it back to the junction line
205348
- const spiralARefLength = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_20__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0.0, undefined, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.createRadians(0), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.createRadians(spiralTurnRadians), referenceLength, undefined, frameA);
205429
+ const spiralARefLength = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_21__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0.0, undefined, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.createRadians(0), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.createRadians(spiralTurnRadians), referenceLength, undefined, frameA);
205349
205430
  if (spiralARefLength) {
205350
205431
  const midPlanePerpendicularRadians = radiansAB + spiralTurnRadians;
205351
- const midPlanePerpendicularVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createPolar(1.0, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.createRadians(midPlanePerpendicularRadians));
205432
+ const midPlanePerpendicularVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createPolar(1.0, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.createRadians(midPlanePerpendicularRadians));
205352
205433
  const altitudeB = midPlanePerpendicularVector.dotProductStartEnd(startPoint, shoulderPoint);
205353
205434
  const altitudeSpiralEnd = midPlanePerpendicularVector.dotProductStartEnd(startPoint, spiralARefLength.endPoint());
205354
205435
  const scaleFactor = altitudeB / altitudeSpiralEnd;
205355
- const spiralA = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_20__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0.0, undefined, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.createRadians(0), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.createRadians(spiralTurnRadians), referenceLength * scaleFactor, undefined, frameA);
205436
+ const spiralA = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_21__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0.0, undefined, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.createRadians(0), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.createRadians(spiralTurnRadians), referenceLength * scaleFactor, undefined, frameA);
205356
205437
  const distanceAB = vectorAB.magnitude();
205357
205438
  const vectorBC = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createStartEnd(shoulderPoint, targetPoint);
205358
205439
  vectorBC.scaleToLength(distanceAB, vectorBC);
205359
205440
  const pointC = shoulderPoint.plus(vectorBC);
205360
- const axesC = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_15__.Matrix3d.createRotationAroundAxisIndex(_Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisIndex.Z, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.createRadians(radiansBC + Math.PI));
205361
- const frameC = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createRefs(pointC, axesC);
205362
- const spiralC = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_20__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0, -spiralA.radius01.x1, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.zero(), undefined, spiralA.curveLength(), _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_21__.Segment1d.create(1, 0), frameC);
205441
+ const axesC = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_15__.Matrix3d.createRotationAroundAxisIndex(_Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisIndex.Z, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.createRadians(radiansBC + Math.PI));
205442
+ const frameC = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createRefs(pointC, axesC);
205443
+ const spiralC = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_21__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0, -spiralA.radius01.x1, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.zero(), undefined, spiralA.curveLength(), _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_22__.Segment1d.create(1, 0), frameC);
205363
205444
  return [spiralA, spiralC];
205364
205445
  }
205365
205446
  return undefined;
@@ -205382,7 +205463,7 @@ class CurveFactory {
205382
205463
  const spiralTurnRadians = 0.5 * lineTurnAngle.radians;
205383
205464
  const bisectorRadians = 0.5 * (Math.PI - lineTurnAngle.radians);
205384
205465
  const radiansCB = Math.atan2(-vectorBC.y, -vectorBC.x);
205385
- const spiralAB0 = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_20__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0, undefined, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.zero(), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.createRadians(spiralTurnRadians), spiralLength, undefined, _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createIdentity());
205466
+ const spiralAB0 = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_21__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0, undefined, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.zero(), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.createRadians(spiralTurnRadians), spiralLength, undefined, _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createIdentity());
205386
205467
  if (spiralAB0) {
205387
205468
  const localEndPoint = spiralAB0.fractionToPoint(1);
205388
205469
  const distanceAB = pointA.distance(pointB);
@@ -205393,14 +205474,14 @@ class CurveFactory {
205393
205474
  const xFractionAB = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(distanceAB - distanceBE - localEndPoint.x, distanceAB);
205394
205475
  const xFractionCB = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(distanceCB - distanceBE - localEndPoint.x, distanceCB);
205395
205476
  if (xFractionAB !== undefined && xFractionCB !== undefined) {
205396
- const axesA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_15__.Matrix3d.createRotationAroundAxisIndex(_Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisIndex.Z, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.createRadians(radiansAB));
205477
+ const axesA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_15__.Matrix3d.createRotationAroundAxisIndex(_Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisIndex.Z, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.createRadians(radiansAB));
205397
205478
  const frameAOrigin = pointA.interpolate(xFractionAB, pointB);
205398
- const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createRefs(frameAOrigin, axesA);
205399
- const spiralAB = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_20__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0, undefined, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.zero(), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.createRadians(spiralTurnRadians), spiralLength, undefined, frameA);
205400
- const axesB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_15__.Matrix3d.createRotationAroundAxisIndex(_Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisIndex.Z, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.createRadians(radiansCB));
205479
+ const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createRefs(frameAOrigin, axesA);
205480
+ const spiralAB = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_21__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0, undefined, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.zero(), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.createRadians(spiralTurnRadians), spiralLength, undefined, frameA);
205481
+ const axesB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_15__.Matrix3d.createRotationAroundAxisIndex(_Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisIndex.Z, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.createRadians(radiansCB));
205401
205482
  const frameBOrigin = pointC.interpolate(xFractionCB, pointB);
205402
- const frameB = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createRefs(frameBOrigin, axesB);
205403
- const spiralBC = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_20__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0, undefined, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.zero(), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.createRadians(-spiralTurnRadians), spiralLength, undefined, frameB);
205483
+ const frameB = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createRefs(frameBOrigin, axesB);
205484
+ const spiralBC = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_21__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0, undefined, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.zero(), _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.createRadians(-spiralTurnRadians), spiralLength, undefined, frameB);
205404
205485
  return [spiralAB, spiralBC];
205405
205486
  }
205406
205487
  }
@@ -205432,8 +205513,8 @@ class CurveFactory {
205432
205513
  const sideB = -sideA;
205433
205514
  const radiusA = sideA * Math.abs(arcRadius);
205434
205515
  const radiusB = sideB * Math.abs(arcRadius);
205435
- const spiralA = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_20__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0, radiusA, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.zero(), undefined, lengthA, undefined, _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createIdentity());
205436
- const spiralB = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_20__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0, radiusB, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.zero(), undefined, lengthB, undefined, _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createIdentity());
205516
+ const spiralA = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_21__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0, radiusA, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.zero(), undefined, lengthA, undefined, _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createIdentity());
205517
+ const spiralB = _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_21__.IntegratedSpiral3d.createFrom4OutOf5(spiralType, 0, radiusB, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.zero(), undefined, lengthB, undefined, _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createIdentity());
205437
205518
  const spiralEndA = spiralA.fractionToPointAndUnitTangent(1.0);
205438
205519
  const spiralEndB = spiralB.fractionToPointAndUnitTangent(1.0);
205439
205520
  // From the end of spiral, step away to arc center (and this is in local coordinates of each spiral)
@@ -205444,12 +205525,12 @@ class CurveFactory {
205444
205525
  // Those local coordinates are rotated to unitAB and unitBC ...
205445
205526
  const vectorA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createAdd2Scaled(unitAB, sA, unitPerpAB, tA);
205446
205527
  const vectorB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createAdd2Scaled(unitCB, sB, unitPerpCB, tB);
205447
- const uv = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__.Vector2d.create();
205448
- if (_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_23__.SmallSystem.linearSystem2d(unitAB.x, -unitCB.x, unitAB.y, -unitCB.y, vectorB.x - vectorA.x, vectorB.y - vectorA.y, uv)) {
205528
+ const uv = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_23__.Vector2d.create();
205529
+ if (_numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_24__.SmallSystem.linearSystem2d(unitAB.x, -unitCB.x, unitAB.y, -unitCB.y, vectorB.x - vectorA.x, vectorB.y - vectorA.y, uv)) {
205449
205530
  const tangencyAB = pointB.plusScaled(unitAB, uv.x);
205450
205531
  const tangencyCB = pointB.plusScaled(unitCB, uv.y);
205451
- const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createOriginAndMatrixColumns(tangencyAB, unitAB, unitPerpAB, _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.unitZ());
205452
- const frameB = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createOriginAndMatrixColumns(tangencyCB, unitCB, unitPerpCB, _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.unitZ());
205532
+ const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createOriginAndMatrixColumns(tangencyAB, unitAB, unitPerpAB, _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.unitZ());
205533
+ const frameB = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createOriginAndMatrixColumns(tangencyCB, unitCB, unitPerpCB, _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.unitZ());
205453
205534
  spiralA.tryTransformInPlace(frameA);
205454
205535
  spiralB.tryTransformInPlace(frameB);
205455
205536
  const rayA1 = spiralA.fractionToPointAndUnitTangent(1.0);
@@ -205476,9 +205557,9 @@ class CurveFactory {
205476
205557
  const normalCx = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(normalAy, normalAz, normalBy, normalBz);
205477
205558
  const normalCy = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(normalAz, normalAx, normalBz, normalBx);
205478
205559
  const normalCz = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(normalAx, normalAy, normalBx, normalBy);
205479
- const rayOrigin = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_23__.SmallSystem.linearSystem3d(normalAx, normalAy, normalAz, normalBx, normalBy, normalBz, normalCx, normalCy, normalCz, -altitudeA, -altitudeB, 0.0);
205560
+ const rayOrigin = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_24__.SmallSystem.linearSystem3d(normalAx, normalAy, normalAz, normalBx, normalBy, normalBz, normalCx, normalCy, normalCz, -altitudeA, -altitudeB, 0.0);
205480
205561
  if (rayOrigin !== undefined) {
205481
- return _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_24__.Ray3d.createXYZUVW(rayOrigin.x, rayOrigin.y, rayOrigin.z, normalCx, normalCy, normalCz);
205562
+ return _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_25__.Ray3d.createXYZUVW(rayOrigin.x, rayOrigin.y, rayOrigin.z, normalCx, normalCy, normalCz);
205482
205563
  }
205483
205564
  return undefined;
205484
205565
  }
@@ -225670,10 +225751,10 @@ class FrameBuilder {
225670
225751
  this.announcePoint(data.endPoint());
225671
225752
  }
225672
225753
  else if (data instanceof _curve_Arc3d__WEBPACK_IMPORTED_MODULE_6__.Arc3d) {
225673
- const ray = data.fractionToPointAndDerivative(0.0);
225674
- this.announcePoint(ray.origin);
225675
- this.announceVector(ray.direction);
225676
- this.announceVector(data.matrixRef.columnZCrossVector(ray.direction));
225754
+ const plane = data.fractionToPointAnd2Derivatives(0.0);
225755
+ this.announcePoint(plane.origin);
225756
+ this.announceVector(plane.vectorU);
225757
+ this.announceVector(plane.vectorV);
225677
225758
  }
225678
225759
  else if (data instanceof _curve_LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
225679
225760
  for (const point of data.points) {
@@ -235571,8 +235652,8 @@ class Vector3d extends XYZ {
235571
235652
  * * The input tolerances in `options`, if given, are considered to be squared for efficiency's sake,
235572
235653
  * so if you have a distance or angle tolerance t, you should pass in t * t.
235573
235654
  * @param other second vector in comparison
235574
- * @param oppositeIsParallel whether to consider diametrically opposed vectors as parallel
235575
- * @param returnValueIfAnInputIsZeroLength if either vector is near zero length, return this value.
235655
+ * @param oppositeIsParallel whether to consider diametrically opposed vectors as parallel. Default false.
235656
+ * @param returnValueIfAnInputIsZeroLength if either vector is near zero length, return this value. Default false.
235576
235657
  * @param options optional radian and distance tolerances.
235577
235658
  */
235578
235659
  isParallelTo(other, oppositeIsParallel = false, returnValueIfAnInputIsZeroLength = false, options) {
@@ -237468,8 +237549,8 @@ class PolygonOps {
237468
237549
  }
237469
237550
  /**
237470
237551
  * Return a Ray3d with (assuming the polygon is planar and not self-intersecting):
237471
- * * `origin` at the centroid of the (3D) polygon
237472
- * * `direction` is the unit vector perpendicular to the plane
237552
+ * * `origin` at the centroid of the (3D) polygon,
237553
+ * * `direction` is the unit vector perpendicular to the plane,
237473
237554
  * * `a` is the area.
237474
237555
  * @param points
237475
237556
  */
@@ -239218,7 +239299,7 @@ class PolylineOps {
239218
239299
  * * If there are one or fewer distinct input points, the return is undefined.
239219
239300
  * @param centerline points to reside in output planes.
239220
239301
  * @param wrapIfPhysicallyClosed if true and the first and last centerline points are the same, then the first and last
239221
- * output planes are averaged and equated (cloned).
239302
+ * output planes are averaged and equated (cloned). Default false.
239222
239303
  */
239223
239304
  static createBisectorPlanesForDistinctPoints(centerline, wrapIfPhysicallyClosed = false) {
239224
239305
  const packedPoints = PolylineOps.compressShortEdges(centerline, 2.0 * _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallMetricDistance); // double the tolerance to ensure normalized vectors exist.
@@ -244502,8 +244583,8 @@ __webpack_require__.r(__webpack_exports__);
244502
244583
  /** @packageDocumentation
244503
244584
  * @module Numerics
244504
244585
  */
244505
- // import { Point2d } from "./Geometry2d";
244506
244586
  /* eslint-disable @typescript-eslint/naming-convention */
244587
+ // cspell:word ABAT
244507
244588
 
244508
244589
 
244509
244590
 
@@ -244516,58 +244597,55 @@ __webpack_require__.r(__webpack_exports__);
244516
244597
  * * origin = local origin used as moments are summed.
244517
244598
  * * sums = array of summed moments.
244518
244599
  * * The [i,j] entry of the sums is a summed or integrated moment for product of axis i and j.
244519
- * * axes 0,1,2 are x,y,z
244600
+ * * axes 0,1,2 are x,y,z.
244520
244601
  * * e.g. entry [0,1] is summed product xy
244521
244602
  * * axis 3 is "w", which is 1 in sums.
244522
- * * e.g. entry 03 is summed x
244523
- * * In this level,
244603
+ * * e.g. entry 03 is summed x.
244604
+ * * In this level:
244524
244605
  * * the `absoluteQuantity` member is undefined.
244525
244606
  * * the `localToWorldMap` and `radiiOfGyration` are created by have undefined contents.
244526
- * * Second level: after a call to inertiaProductsToPrincipalAxes, the `localToWorldMap`, `absoluteQuantity` and `radiiOfGyration` are filled in.
244607
+ * * Second level: after a call to inertiaProductsToPrincipalAxes, the `localToWorldMap`, `absoluteQuantity` and
244608
+ * `radiiOfGyration` are filled in.
244527
244609
  * @public
244528
244610
  */
244529
244611
  class MomentData {
244530
- /** Return the lower-right (3,3) entry in the sums.
244531
- * * This is the quantity (i.e. length, area, or volume) summed
244612
+ /**
244613
+ * Return the lower-right (3,3) entry in the sums.
244614
+ * * This is the quantity (i.e. length, area, or volume) summed.
244532
244615
  */
244533
- get quantitySum() { return this.sums.atIJ(3, 3); }
244534
- /** Return a scale factor to make these sums match the target orientation sign.
244616
+ get quantitySum() {
244617
+ return this.sums.atIJ(3, 3);
244618
+ }
244619
+ /**
244620
+ * Return a scale factor to make these sums match the target orientation sign.
244535
244621
  * * 1.0 if `this.quantitySum` has the same sign as `targetSign`.
244536
244622
  * * -1.0 if `this.quantitySum` has the opposite sign from `targetSign`
244537
244623
  */
244538
244624
  signFactor(targetSign) {
244539
244625
  return targetSign * this.quantitySum > 0 ? 1.0 : -1.0;
244540
244626
  }
244541
- /**
244542
- * If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag.
244543
- *
244544
- */
244627
+ /** If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag. */
244545
244628
  setOriginIfNeeded(origin) {
244546
244629
  if (this.needOrigin) {
244547
244630
  this.origin.setFromPoint3d(origin);
244548
244631
  this.needOrigin = false;
244549
244632
  }
244550
244633
  }
244551
- /**
244552
- * If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag.
244553
- *
244554
- */
244634
+ /** If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag. */
244555
244635
  setOriginFromGrowableXYZArrayIfNeeded(points) {
244556
244636
  if (this.needOrigin && points.length > 0) {
244557
244637
  points.getPoint3dAtCheckedPointIndex(0, this.origin);
244558
244638
  this.needOrigin = false;
244559
244639
  }
244560
244640
  }
244561
- /**
244562
- * If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag.
244563
- *
244564
- */
244641
+ /** If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag. */
244565
244642
  setOriginXYZIfNeeded(x, y, z) {
244566
244643
  if (this.needOrigin) {
244567
244644
  this.origin.set(x, y, z);
244568
244645
  this.needOrigin = false;
244569
244646
  }
244570
244647
  }
244648
+ /** Constructor. */
244571
244649
  constructor() {
244572
244650
  this._point0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
244573
244651
  this._point1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
@@ -244579,12 +244657,13 @@ class MomentData {
244579
244657
  this.absoluteQuantity = 0.1; // so optimizer sees its type
244580
244658
  this.absoluteQuantity = undefined;
244581
244659
  }
244582
- /** Create moments with optional origin.
244583
- * * origin and needOrigin are quirky.
244660
+ /**
244661
+ * Create moments with optional origin.
244662
+ * * Origin and needOrigin are quirky.
244584
244663
  * * (undefined, true) sets up to use first incoming point as origin.
244585
- * * (origin) sets up to use that durable origin, set needsOrigin flag false
244586
- * * (origin, true) the "true" is meaningless
244587
- * * (undefined, false) makes 000 the durable origin
244664
+ * * (origin) sets up to use that durable origin, set needsOrigin flag false.
244665
+ * * (origin, true) the "true" is meaningless.
244666
+ * * (undefined, false) makes 000 the durable origin.
244588
244667
  */
244589
244668
  static create(origin, needOrigin = false) {
244590
244669
  const data = new MomentData();
@@ -244596,8 +244675,8 @@ class MomentData {
244596
244675
  return data;
244597
244676
  }
244598
244677
  /**
244599
- * Return the formal tensor of integrated values `[yy+zz,xy,xz][yx,xx+zz,yz][zx,xy,xx+yy]`
244600
- * @param products matrix of (integrated) `[xx,xy,xz][yx,yy,yz][zx,xy,zz]`
244678
+ * Return the formal tensor of integrated values `[yy+zz,xy,xz][yx,xx+zz,yz][zx,xy,xx+yy]`.
244679
+ * @param products matrix of (integrated) `[xx,xy,xz][yx,yy,yz][zx,xy,zz]`.
244601
244680
  */
244602
244681
  static momentTensorFromInertiaProducts(products) {
244603
244682
  const rr = products.sumDiagonal();
@@ -244630,7 +244709,7 @@ class MomentData {
244630
244709
  }
244631
244710
  /**
244632
244711
  * Return the principal moment data for an array of points.
244633
- * @param points array of points
244712
+ * @param points array of points.
244634
244713
  */
244635
244714
  static pointsToPrincipalAxes(points) {
244636
244715
  const moments = new MomentData();
@@ -244641,12 +244720,12 @@ class MomentData {
244641
244720
  return this.inertiaProductsToPrincipalAxes(moments.origin, moments.sums);
244642
244721
  }
244643
244722
  /**
244644
- * Compute principal axes from inertial products
244645
- * * The radii of gyration are sorted smallest to largest
244646
- * * Hence x axis is long direction
244647
- * * Hence planar data generates large moment as Z
244723
+ * Compute principal axes from inertial products.
244724
+ * * The radii of gyration are sorted smallest to largest.
244725
+ * * Hence x axis is long direction.
244726
+ * * Hence planar data generates large moment as Z.
244648
244727
  * @param origin The origin used for the inertia products.
244649
- * @param inertiaProducts The inertia products -- sums or integrals of [xx,xy,xz,xw; yx,yy, yz,yw; zx,zy,zz,zw; wx,wy,wz,w]
244728
+ * @param inertiaProducts The inertia products: sums or integrals of [xx,xy,xz,xw; yx,yy, yz,yw; zx,zy,zz,zw; wx,wy,wz,w].
244650
244729
  */
244651
244730
  static inertiaProductsToPrincipalAxes(origin, inertiaProducts) {
244652
244731
  const moments = new MomentData();
@@ -244674,18 +244753,19 @@ class MomentData {
244674
244753
  return moments;
244675
244754
  }
244676
244755
  /**
244677
- * Test for match among selected members as they exist after `inertiaProductsToPrincipalAxes`
244678
- * * The members considered are
244679
- * * origin of local to world map (i.e. centroid)
244680
- * * radius of gyration
244756
+ * Test for match among selected members as they exist after `inertiaProductsToPrincipalAxes`.
244757
+ * * The members considered are:
244758
+ * * origin of local to world map (i.e. centroid),
244759
+ * * radius of gyration,
244681
244760
  * * axes of localToWorldMap.
244682
244761
  * * Axis direction tests allow these quirks:
244683
244762
  * * opposite orientation is considered matched.
244684
244763
  * * Full xyz symmetry: If x,y,z radii are matched, axes are not tested.
244685
- * * Symmetry in xy plane: If x and y radii are matched, the x and y axes area allowed to spin freely. Only Z direction is tested.
244764
+ * * Symmetry in xy plane: If x and y radii are matched, the x and y axes area allowed to spin freely. Only Z direction
244765
+ * is tested.
244686
244766
  * * If either or both are undefined, returns false.
244687
- * @param dataA first set of moments
244688
- * @param dataB second set of moments
244767
+ * @param dataA first set of moments.
244768
+ * @param dataB second set of moments.
244689
244769
  */
244690
244770
  static areEquivalentPrincipalAxes(dataA, dataB) {
244691
244771
  if (dataA && dataB
@@ -244733,7 +244813,7 @@ class MomentData {
244733
244813
  this.sums.addMomentsInPlace(p.x - this.origin.x, p.y - this.origin.y, p.z - this.origin.z, 1.0);
244734
244814
  }
244735
244815
  }
244736
- /** revise the accumulated sums to be "around the centroid" */
244816
+ /** Revise the accumulated sums to be "around the centroid". */
244737
244817
  shiftOriginAndSumsToCentroidOfSums() {
244738
244818
  const xyz = this.sums.columnW().realPoint();
244739
244819
  if (xyz) {
@@ -244742,7 +244822,8 @@ class MomentData {
244742
244822
  }
244743
244823
  return false;
244744
244824
  }
244745
- /** revise the accumulated sums
244825
+ /**
244826
+ * Revise the accumulated sums.
244746
244827
  * * add ax,ay,ax to the origin coordinates.
244747
244828
  * * apply the negative translation to the sums.
244748
244829
  */
@@ -244750,11 +244831,12 @@ class MomentData {
244750
244831
  this.origin.addXYZInPlace(ax, ay, az);
244751
244832
  this.sums.multiplyTranslationSandwichInPlace(-ax, -ay, -az);
244752
244833
  }
244753
- /** revise the accumulated sums so they are based at a specified origin. */
244834
+ /** Revise the accumulated sums so they are based at a specified origin. */
244754
244835
  shiftOriginAndSumsToNewOrigin(newOrigin) {
244755
244836
  this.shiftOriginAndSumsByXYZ(newOrigin.x - this.origin.x, newOrigin.y - this.origin.y, newOrigin.z - this.origin.z);
244756
244837
  }
244757
- /** compute moments of a triangle from the origin to the given line.
244838
+ /**
244839
+ * Compute moments of a triangle from the origin to the given line.
244758
244840
  * Accumulate them to this.sums.
244759
244841
  * * If `pointA` is undefined, use `this.origin` as pointA.
244760
244842
  * * If `this.needOrigin` is set, pointB is used
@@ -244786,7 +244868,7 @@ class MomentData {
244786
244868
  this.sums.addScaledOuterProductInPlace(vectorC, vectorC, r1_12);
244787
244869
  }
244788
244870
  }
244789
- /** add scaled outer product of (4d, unit weight) point to this.sums */
244871
+ /** Add scaled outer product of (4d, unit weight) point to this.sums. */
244790
244872
  accumulateScaledOuterProduct(point, scaleFactor) {
244791
244873
  this.setOriginXYZIfNeeded(point.x, point.y, 0.0);
244792
244874
  const vectorA = MomentData._vectorA = _Point4d__WEBPACK_IMPORTED_MODULE_5__.Point4d.create(point.x - this.origin.x, point.y - this.origin.y, point.z - this.origin.z, 1.0, MomentData._vectorA);
@@ -244808,7 +244890,8 @@ class MomentData {
244808
244890
  this.sums.addScaledOuterProductInPlace(vectorB, vectorA, r1_6);
244809
244891
  this.sums.addScaledOuterProductInPlace(vectorB, vectorB, r1_3);
244810
244892
  }
244811
- /** compute moments of triangles from a base point to the given linestring.
244893
+ /**
244894
+ * Compute moments of triangles from a base point to the given linestring.
244812
244895
  * Accumulate them to this.sums.
244813
244896
  * * If `pointA` is undefined, use `this.origin` as pointA.
244814
244897
  * * If `this.needOrigin` is set, the first point of the array is captured as local origin for subsequent sums.
@@ -244825,18 +244908,18 @@ class MomentData {
244825
244908
  }
244826
244909
  }
244827
244910
  }
244828
- // cspell:word ABAT
244829
244911
  /**
244830
244912
  * * Assemble XX, YY, XY products into a full matrix form [xx,xy,0,0; xy,yy,0,0;0,0,0,0;0,0,0,1].
244831
- * * Sandwich this between transforms with columns [vectorU, vectorV, 0000, origin]. (Column weights 0001) (only xy parts of vectors)
244913
+ * * Sandwich this between transforms with columns [vectorU, vectorV, 0000, origin]. (Column weights 0001) (only xy
244914
+ * parts of vectors).
244832
244915
  * * scale by detJ for the xy-only determinant of the vectors.
244833
244916
  * @param productXX
244834
244917
  * @param productXY
244835
244918
  * @param productYY
244836
- * @param area Area in caller's system
244837
- * @param origin Caller's origin
244838
- * @param vectorU Caller's U axis (not necessarily unit)
244839
- * @param vectorV Caller's V axis (not necessarily unit)
244919
+ * @param area Area in caller's system.
244920
+ * @param origin Caller's origin.
244921
+ * @param vectorU Caller's U axis (not necessarily unit).
244922
+ * @param vectorV Caller's V axis (not necessarily unit).
244840
244923
  */
244841
244924
  accumulateXYProductsInCentroidalFrame(productXX, productXY, productYY, area, origin, vectorU, vectorV) {
244842
244925
  const centroidalProducts = _Matrix4d__WEBPACK_IMPORTED_MODULE_1__.Matrix4d.createRowValues(productXX, productXY, 0, 0, productXY, productYY, 0, 0, 0, 0, 0, 0, 0, 0, 0, area);
@@ -244848,27 +244931,23 @@ class MomentData {
244848
244931
  }
244849
244932
  /**
244850
244933
  * Accumulate sums from other moments.
244851
- * * scale by given scaleFactor (e.g. sign to correct orientation)
244852
- * * pull the origin from `other` if `this` needs an origin.
244853
- * *
244934
+ * * Scale by given scaleFactor (e.g. sign to correct orientation).
244935
+ * * Pull the origin from `other` if `this` needs an origin.
244854
244936
  */
244855
244937
  accumulateProducts(other, scale) {
244856
244938
  this.setOriginIfNeeded(other.origin);
244857
244939
  this.sums.addTranslationSandwichInPlace(other.sums, this.origin.x - other.origin.x, this.origin.y - other.origin.y, this.origin.z - other.origin.z, scale);
244858
244940
  }
244859
244941
  /**
244860
- * Accumulate sums from Matrix4d and origin.
244861
- * * scale by given scaleFactor (e.g. sign to correct orientation)
244862
- * * trap the origin if `this` needs an origin.
244863
- * *
244864
- */
244942
+ * Accumulate sums from Matrix4d and origin.
244943
+ * * Scale by given scaleFactor (e.g. sign to correct orientation).
244944
+ * * Trap the origin if `this` needs an origin.
244945
+ */
244865
244946
  accumulateProductsFromOrigin(origin, products, scale) {
244866
244947
  this.setOriginIfNeeded(origin);
244867
244948
  this.sums.addTranslationSandwichInPlace(products, this.origin.x - origin.x, this.origin.y - origin.y, this.origin.z - origin.z, scale);
244868
244949
  }
244869
- /**
244870
- * Convert to a json data object with:
244871
- */
244950
+ /** Convert to a json data object. */
244872
244951
  toJSON() {
244873
244952
  return {
244874
244953
  origin: this.origin,
@@ -275646,19 +275725,19 @@ __webpack_require__.r(__webpack_exports__);
275646
275725
 
275647
275726
  /**
275648
275727
  * A ruled sweep (surface) is a collection of 2 or more contours.
275649
- * * All contours must have identical number and type of geometry. (paths, loops, parity regions, lines, arcs, other curves)
275728
+ * * All contours must have identical number and type of geometry. (paths, loops, parity regions, lines, arcs, other curves).
275650
275729
  * @public
275651
275730
  */
275652
275731
  class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive {
275653
275732
  constructor(contours, capped) {
275654
275733
  super(capped);
275655
- /** String name for schema properties */
275734
+ /** String name for schema properties. */
275656
275735
  this.solidPrimitiveType = "ruledSweep";
275657
275736
  this._contours = contours;
275658
275737
  }
275659
275738
  /**
275660
275739
  * Create a ruled sweep from an array of contours.
275661
- * * the contours are CAPTURED (not cloned)
275740
+ * * The contours are CAPTURED (not cloned).
275662
275741
  */
275663
275742
  static create(contours, capped) {
275664
275743
  const sweepContours = [];
@@ -275671,9 +275750,12 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
275671
275750
  return new RuledSweep(sweepContours, capped);
275672
275751
  }
275673
275752
  /** Return a reference to the array of SweepContour. */
275674
- sweepContoursRef() { return this._contours; }
275675
- /** Return clones of all the sweep contours
275676
- * * See also cloneContours, which returns the spatial contours without their local coordinate system definitions)
275753
+ sweepContoursRef() {
275754
+ return this._contours;
275755
+ }
275756
+ /**
275757
+ * Return clones of the sweep contours.
275758
+ * * See also [[cloneContours]], which returns the contours without their local coordinate system definitions.
275677
275759
  */
275678
275760
  cloneSweepContours() {
275679
275761
  const result = [];
@@ -275682,8 +275764,9 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
275682
275764
  }
275683
275765
  return result;
275684
275766
  }
275685
- /** Return clones of all the contours
275686
- * * See also cloneContours, which returns the contours in their local coordinate systems
275767
+ /**
275768
+ * Return clones of the sweep contours, each as a [[CurveCollection]].
275769
+ * * See also [[cloneSweepContours]], which returns the contours with their local coordinate system definitions.
275687
275770
  */
275688
275771
  cloneContours() {
275689
275772
  const result = [];
@@ -275692,7 +275775,7 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
275692
275775
  }
275693
275776
  return result;
275694
275777
  }
275695
- /** Return a deep clone */
275778
+ /** Return a deep clone. */
275696
275779
  clone() {
275697
275780
  return new RuledSweep(this.cloneSweepContours(), this.capped);
275698
275781
  }
@@ -275717,19 +275800,22 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
275717
275800
  const result = this.clone();
275718
275801
  return result.tryTransformInPlace(transform) ? result : undefined;
275719
275802
  }
275720
- /** Return a coordinate frame (right handed unit vectors)
275721
- * * origin on base contour
275803
+ /**
275804
+ * Return a coordinate frame (right handed unit vectors)
275805
+ * * origin on base contour.
275722
275806
  * * x, y directions from base contour.
275723
- * * z direction perpendicular
275807
+ * * z direction perpendicular.
275724
275808
  */
275725
275809
  getConstructiveFrame() {
275726
275810
  if (this._contours.length === 0)
275727
275811
  return undefined;
275728
275812
  return this._contours[0].localToWorld.cloneRigid();
275729
275813
  }
275730
- /** Test if `other` is an instance of a `RuledSweep` */
275731
- isSameGeometryClass(other) { return other instanceof RuledSweep; }
275732
- /** test same contour geometry and capping. */
275814
+ /** Test if `other` is an instance of a `RuledSweep`. */
275815
+ isSameGeometryClass(other) {
275816
+ return other instanceof RuledSweep;
275817
+ }
275818
+ /** Test for near equality of two RuledSweeps. */
275733
275819
  isAlmostEqual(other) {
275734
275820
  if (other instanceof RuledSweep) {
275735
275821
  if (this.capped !== other.capped)
@@ -275744,13 +275830,13 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
275744
275830
  }
275745
275831
  return false;
275746
275832
  }
275747
- /** dispatch to strongly typed `handler.handleRuledSweep(this)` */
275833
+ /** Dispatch to strongly typed `handler.handleRuledSweep(this)`. */
275748
275834
  dispatchToGeometryHandler(handler) {
275749
275835
  return handler.handleRuledSweep(this);
275750
275836
  }
275751
275837
  /**
275752
- * Return the section curves at a fraction of the sweep
275753
- * @param vFraction fractional position along the sweep direction
275838
+ * Return the section curves at a fraction of the sweep.
275839
+ * @param vFraction fractional position along the sweep direction.
275754
275840
  */
275755
275841
  constantVSection(vFraction) {
275756
275842
  const numSection = this._contours.length;
@@ -275773,12 +275859,14 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
275773
275859
  return undefined;
275774
275860
  });
275775
275861
  }
275776
- /** Pass each contour to `extendRange` */
275862
+ /** Pass each contour to `extendRange`. */
275777
275863
  extendRange(rangeToExtend, transform) {
275778
275864
  for (const contour of this._contours)
275779
275865
  contour.curves.extendRange(rangeToExtend, transform);
275780
275866
  }
275781
- /** Construct a CurveCollection with the same structure as collectionA and collectionB, with primitives constructed by the caller-supplied primitiveMutator function.
275867
+ /**
275868
+ * Construct a CurveCollection with the same structure as collectionA and collectionB, with primitives constructed
275869
+ * by the caller-supplied primitiveMutator function.
275782
275870
  * @returns Returns undefined if there is any type mismatch between the two collections.
275783
275871
  */
275784
275872
  static mutatePartners(collectionA, collectionB, primitiveMutator) {
@@ -275829,9 +275917,7 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
275829
275917
  return undefined;
275830
275918
  }
275831
275919
  /**
275832
- * Return true if this is a closed volume, as observed by
275833
- * * cap flag
275834
- * identical first and last contours.
275920
+ * @return true if this is a closed volume.
275835
275921
  */
275836
275922
  get isClosedVolume() {
275837
275923
  const n = this._contours.length;
@@ -275861,20 +275947,23 @@ __webpack_require__.r(__webpack_exports__);
275861
275947
 
275862
275948
  /**
275863
275949
  * Base class for SolidPrimitive variants.
275864
- *
275865
275950
  * * The base class holds capped flag for all derived classes.
275866
275951
  * @public
275867
275952
  */
275868
275953
  class SolidPrimitive extends _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.GeometryQuery {
275869
275954
  constructor(capped) {
275870
275955
  super();
275871
- /** String name for schema properties */
275956
+ /** String name for schema properties. */
275872
275957
  this.geometryCategory = "solid";
275873
275958
  this._capped = capped;
275874
275959
  }
275875
- /** Whether this is a capped solid */
275876
- get capped() { return this._capped; }
275877
- set capped(capped) { this._capped = capped; }
275960
+ /** Whether this is a capped solid. */
275961
+ get capped() {
275962
+ return this._capped;
275963
+ }
275964
+ set capped(capped) {
275965
+ this._capped = capped;
275966
+ }
275878
275967
  }
275879
275968
 
275880
275969
 
@@ -304398,7 +304487,7 @@ class TestContext {
304398
304487
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
304399
304488
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
304400
304489
  await core_frontend_1.NoRenderApp.startup({
304401
- applicationVersion: "5.0.0-dev.16",
304490
+ applicationVersion: "5.0.0-dev.20",
304402
304491
  applicationId: this.settings.gprid,
304403
304492
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
304404
304493
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -332044,7 +332133,7 @@ function __rewriteRelativeImportExtension(path, preserveJsx) {
332044
332133
  /***/ ((module) => {
332045
332134
 
332046
332135
  "use strict";
332047
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"5.0.0-dev.16","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --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 --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run --coverage","test:debug":"vitest --run","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:^5.0.0-dev.16","@itwin/core-bentley":"workspace:^5.0.0-dev.16","@itwin/core-common":"workspace:^5.0.0-dev.16","@itwin/core-geometry":"workspace:^5.0.0-dev.16","@itwin/core-orbitgt":"workspace:^5.0.0-dev.16","@itwin/core-quantity":"workspace:^5.0.0-dev.16"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@vitest/browser":"^2.1.0","@vitest/coverage-v8":"^2.1.0","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","cpx2":"^3.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^3.0.2","source-map-loader":"^4.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^2.1.0","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"1.0.6","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.2.4","@itwin/object-storage-core":"^2.2.5","@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","meshoptimizer":"~0.20.0","wms-capabilities":"0.4.0"}}');
332136
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"5.0.0-dev.20","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 --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 --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run --coverage","test:debug":"vitest --run","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:^5.0.0-dev.20","@itwin/core-bentley":"workspace:^5.0.0-dev.20","@itwin/core-common":"workspace:^5.0.0-dev.20","@itwin/core-geometry":"workspace:^5.0.0-dev.20","@itwin/core-orbitgt":"workspace:^5.0.0-dev.20","@itwin/core-quantity":"workspace:^5.0.0-dev.20"},"//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/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@vitest/browser":"^2.1.0","@vitest/coverage-v8":"^2.1.0","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","cpx2":"^3.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^3.0.2","source-map-loader":"^4.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^2.1.0","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"1.0.6","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.2.4","@itwin/object-storage-core":"^2.2.5","@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","meshoptimizer":"~0.20.0","wms-capabilities":"0.4.0"}}');
332048
332137
 
332049
332138
  /***/ }),
332050
332139