@itwin/ecschema-rpcinterface-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.
@@ -191086,6 +191086,28 @@ class CurveChain extends CurveCollection {
191086
191086
  else
191087
191087
  return undefined;
191088
191088
  }
191089
+ /**
191090
+ * Return the start point and derivative of the first child of the curve chain.
191091
+ * * For queries interior to the chain, use [[CurveChainWithDistanceIndex.fractionToPointAndDerivative]].
191092
+ */
191093
+ startPointAndDerivative(result) {
191094
+ const firstChild = this.getChild(0);
191095
+ if (firstChild)
191096
+ return firstChild.fractionToPointAndDerivative(0.0, result);
191097
+ else
191098
+ return undefined;
191099
+ }
191100
+ /**
191101
+ * Return the end point and derivative of the last child of the curve chain.
191102
+ * * For queries interior to the chain, use [[CurveChainWithDistanceIndex.fractionToPointAndDerivative]].
191103
+ */
191104
+ endPointAndDerivative(result) {
191105
+ const lastChild = this.getChild(this._curves.length - 1);
191106
+ if (lastChild)
191107
+ return lastChild.fractionToPointAndDerivative(1.0, result);
191108
+ else
191109
+ return undefined;
191110
+ }
191089
191111
  /**
191090
191112
  * Return the curve primitive at the given `index`, optionally using `modulo` to map `index` to the cyclic indexing.
191091
191113
  * * In particular, `-1` is the final curve.
@@ -191557,20 +191579,20 @@ __webpack_require__.r(__webpack_exports__);
191557
191579
  /* harmony export */ "MiteredSweepOutputSelect": () => (/* binding */ MiteredSweepOutputSelect)
191558
191580
  /* harmony export */ });
191559
191581
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
191560
- /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
191582
+ /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
191561
191583
  /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
191562
191584
  /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
191563
- /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
191585
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
191564
191586
  /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
191565
191587
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
191566
- /* harmony import */ var _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../geometry3d/PolylineOps */ "../../core/geometry/lib/esm/geometry3d/PolylineOps.js");
191567
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
191568
- /* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
191569
- /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
191570
- /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
191588
+ /* harmony import */ var _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../geometry3d/PolylineOps */ "../../core/geometry/lib/esm/geometry3d/PolylineOps.js");
191589
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
191590
+ /* harmony import */ var _geometry3d_Segment1d__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../geometry3d/Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
191591
+ /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
191592
+ /* harmony import */ var _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../numerics/SmallSystem */ "../../core/geometry/lib/esm/numerics/SmallSystem.js");
191571
191593
  /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
191572
191594
  /* harmony import */ var _solid_Cone__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../solid/Cone */ "../../core/geometry/lib/esm/solid/Cone.js");
191573
- /* harmony import */ var _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../solid/RuledSweep */ "../../core/geometry/lib/esm/solid/RuledSweep.js");
191595
+ /* harmony import */ var _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../solid/RuledSweep */ "../../core/geometry/lib/esm/solid/RuledSweep.js");
191574
191596
  /* harmony import */ var _solid_TorusPipe__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../solid/TorusPipe */ "../../core/geometry/lib/esm/solid/TorusPipe.js");
191575
191597
  /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
191576
191598
  /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
@@ -191580,7 +191602,8 @@ __webpack_require__.r(__webpack_exports__);
191580
191602
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
191581
191603
  /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
191582
191604
  /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
191583
- /* harmony import */ var _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./spiral/IntegratedSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/IntegratedSpiral3d.js");
191605
+ /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
191606
+ /* harmony import */ var _spiral_IntegratedSpiral3d__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./spiral/IntegratedSpiral3d */ "../../core/geometry/lib/esm/curve/spiral/IntegratedSpiral3d.js");
191584
191607
  /*---------------------------------------------------------------------------------------------
191585
191608
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
191586
191609
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -191588,7 +191611,7 @@ __webpack_require__.r(__webpack_exports__);
191588
191611
  /** @packageDocumentation
191589
191612
  * @module Curve
191590
191613
  */
191591
- // import { Geometry, Angle, AngleSweep } from "../Geometry";
191614
+
191592
191615
 
191593
191616
 
191594
191617
 
@@ -191627,6 +191650,7 @@ var MiteredSweepOutputSelect;
191627
191650
  /** Output planes and sections, as well as the assembled ruled sweep and its stroked mesh. */
191628
191651
  MiteredSweepOutputSelect[MiteredSweepOutputSelect["AlsoMesh"] = 2] = "AlsoMesh";
191629
191652
  })(MiteredSweepOutputSelect || (MiteredSweepOutputSelect = {}));
191653
+ ;
191630
191654
  /**
191631
191655
  * The `CurveFactory` class contains methods for specialized curve constructions.
191632
191656
  * @public
@@ -191932,75 +191956,132 @@ class CurveFactory {
191932
191956
  }
191933
191957
  return arcs;
191934
191958
  }
191959
+ /** For a smooth curve, stroke and return unnormalized start/end tangents. */
191960
+ static strokeSmoothCurve(curve, options) {
191961
+ let startTangent, endTangent;
191962
+ if (curve instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_12__.CurvePrimitive) {
191963
+ startTangent = curve.fractionToPointAndDerivative(0.0).direction;
191964
+ endTangent = curve.fractionToPointAndDerivative(1.0).direction;
191965
+ const strokes = _LineString3d__WEBPACK_IMPORTED_MODULE_4__.LineString3d.create();
191966
+ curve.emitStrokes(strokes, options);
191967
+ curve = strokes.packedPoints;
191968
+ }
191969
+ else if (curve instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_14__.CurveChain) {
191970
+ startTangent = curve.startPointAndDerivative()?.direction;
191971
+ endTangent = curve.endPointAndDerivative()?.direction;
191972
+ const strokes = curve.getPackedStrokes(options);
191973
+ if (!strokes)
191974
+ return undefined;
191975
+ curve = strokes;
191976
+ }
191977
+ else if (Array.isArray(curve))
191978
+ curve = new _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_3__.Point3dArrayCarrier(curve);
191979
+ return { strokes: curve, startTangent, endTangent };
191980
+ }
191935
191981
  /**
191936
- * Sweep the initialSection along each segment of the centerLine until it hits the bisector plane at the next vertex.
191937
- * * The caller should place the initialSection on a plane perpendicular to the first edge.
191938
- * * This plane is commonly (but not necessarily) through the start point itself.
191939
- * * If the initialSection is not "on a perpendicular plane", the output geometry will still be flattened onto the
191940
- * various planes.
191941
- * * In the "open path" case (i.e when `wrapIfPhysicallyClosed` is false or the path does not have matched first and
191942
- * last points), the first/last output plane will be at the start/end of the first/last edge and on a perpendicular
191943
- * plane.
191944
- * * In the "closed path" case, if start/edn tangents are not provided in the `options`, then the output plane for the
191945
- * first and last point is the bisector of the start and end planes from the "open path" case, and the first/last
191946
- * section geometry may be different from `initialSection`.
191947
- * * The centerline path does NOT have to be planar, however twisting effects effects will appear in the various bisector
191948
- * planes.
191949
- * @param centerline sweep path, e.g., as stroked from a smooth centerline curve.
191982
+ * Align two bisector plane normals to given smooth rail tangents or optional overrides.
191983
+ * * Optionally average the normals for physically closed rail.
191984
+ */
191985
+ static alignFirstAndLastBisectorPlanes(firstPlane, lastPlane, smoothRailData, options) {
191986
+ const normal0 = options?.startTangent ?? (smoothRailData?.startTangent ?? firstPlane.getNormalRef());
191987
+ const normal1 = options?.endTangent ?? (smoothRailData?.endTangent ?? lastPlane.getNormalRef());
191988
+ if (options?.wrapIfPhysicallyClosed && firstPlane.getOriginRef().isAlmostEqual(lastPlane.getOriginRef())) {
191989
+ const avgNormal = normal0.plus(normal1);
191990
+ if (avgNormal.tryNormalizeInPlace()) { // ignore cusp at seam
191991
+ firstPlane.getNormalRef().setFrom(avgNormal);
191992
+ lastPlane.getNormalRef().setFrom(avgNormal);
191993
+ return;
191994
+ }
191995
+ }
191996
+ if (normal0.tryNormalizeInPlace())
191997
+ firstPlane.getNormalRef().setFrom(normal0);
191998
+ if (normal1.tryNormalizeInPlace())
191999
+ lastPlane.getNormalRef().setFrom(normal1);
192000
+ }
192001
+ /** Reverse a closed curve or region if necessary so that its orientation is CCW with respect to the plane normal. */
192002
+ static alignClosedCurveToPlane(curve, planeNormal) {
192003
+ let closedCurve;
192004
+ if (curve instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_12__.CurvePrimitive) {
192005
+ if (curve.startPoint().isAlmostEqual(curve.endPoint()))
192006
+ closedCurve = _Loop__WEBPACK_IMPORTED_MODULE_6__.Loop.create(curve);
192007
+ }
192008
+ else if (curve.isAnyRegion())
192009
+ closedCurve = curve;
192010
+ if (closedCurve) {
192011
+ // The alignment condition is equivalent to positive projected curve area computed wrt to the plane normal.
192012
+ const toLocal = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_15__.Matrix3d.createRigidHeadsUp(planeNormal).transpose();
192013
+ const projection = closedCurve.cloneTransformed(_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createOriginAndMatrix(undefined, toLocal));
192014
+ if (projection) { // now we can ignore z-coords
192015
+ const areaXY = _RegionOps__WEBPACK_IMPORTED_MODULE_17__.RegionOps.computeXYArea(projection);
192016
+ if (areaXY && areaXY < 0)
192017
+ curve.reverseInPlace();
192018
+ }
192019
+ }
192020
+ }
192021
+ /**
192022
+ * Projection to target plane, constructing sweep direction from two given planes.
192023
+ * * If successful, push the target plane and swept section to the output arrays and return the swept section.
192024
+ * * If unsuccessful, leave the output arrays alone and return the input section.
192025
+ */
192026
+ static doSweepToPlane(output, edgePlane0, edgePlane1, targetPlane, section) {
192027
+ const sweepVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createStartEnd(edgePlane0.getOriginRef(), edgePlane1.getOriginRef());
192028
+ const transform = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createFlattenAlongVectorToPlane(sweepVector, targetPlane.getOriginRef(), targetPlane.getNormalRef());
192029
+ if (transform === undefined)
192030
+ return section;
192031
+ const transformedSection = section.cloneTransformed(transform);
192032
+ if (transformedSection === undefined)
192033
+ return section;
192034
+ output.planes.push(targetPlane);
192035
+ output.sections.push(transformedSection);
192036
+ return transformedSection;
192037
+ }
192038
+ /**
192039
+ * Sweep the `initialSection` along each segment of the (stroked) `centerline` until it hits the bisector plane at
192040
+ * the next vertex.
192041
+ * * For best results, the caller should place `initialSection` in a plane perpendicular to the `centerline`
192042
+ * start tangent.
192043
+ * * This plane is commonly (but not necessarily) through the centerline start point itself.
192044
+ * * To compute the sections, `initialSection` is projected in the direction of the centerline start tangent onto
192045
+ * the first bisector plane at the centerline start. The result of this projection will be likewise projected onto
192046
+ * the second plane, and so on in sequence.
192047
+ * * By default, the first/last bisector plane normals are set to the centerline start/end tangents. The caller can
192048
+ * override these with tangents supplied in `options`. If the centerline is physically closed and
192049
+ * `options.wrapIfPhysicallyClosed` is true, the first and last plane normals are averaged and equated.
192050
+ * * The centerline path does NOT have to be planar, however non-planarity will result in twisting of the sections
192051
+ * in the bisector planes.
192052
+ * @param centerline sweep path. Will be stroked if smooth.
191950
192053
  * @param initialSection profile curve to be swept. As noted above, this should be on a plane perpendicular to the
191951
- * first segment of the centerline.
192054
+ * centerline start tangent.
191952
192055
  * @param options options for computation and output.
191953
- * @return array of sections, starting with `initialSection` projected along the first edge to the first plane.
192056
+ * @return array of sections, formed from projecting `initialSection` successively onto the bisector planes.
191954
192057
  */
191955
192058
  static createMiteredSweepSections(centerline, initialSection, options) {
192059
+ const rail = this.strokeSmoothCurve(centerline, options.strokeOptions);
192060
+ if (!rail)
192061
+ return undefined;
192062
+ const planes = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_18__.PolylineOps.createBisectorPlanesForDistinctPoints(rail.strokes);
192063
+ if (!planes || planes.length < 2)
192064
+ return undefined;
192065
+ this.alignFirstAndLastBisectorPlanes(planes[0], planes[planes.length - 1], rail, options);
192066
+ // RuledSweep facet construction assumes the contours are oriented CCW with respect to the sweep direction so that
192067
+ // facet normals point outward. We only have to align the first contour; the rest will inherit its orientation.
192068
+ this.alignClosedCurveToPlane(initialSection, planes[0].getNormalRef());
191956
192069
  const sectionData = { sections: [], planes: [] };
191957
- const planes = _geometry3d_PolylineOps__WEBPACK_IMPORTED_MODULE_16__.PolylineOps.createBisectorPlanesForDistinctPoints(centerline, options.wrapIfPhysicallyClosed);
191958
- // apply start/end tangent options
191959
- if (planes !== undefined && planes.length > 1) {
191960
- const firstPlane = planes[0];
191961
- const lastPlane = planes[planes.length - 1];
191962
- const startTang = options.startTangent;
191963
- const endTang = options.endTangent;
191964
- if (!firstPlane.getOriginRef().isAlmostEqual(lastPlane.getOriginRef()) ||
191965
- (startTang && endTang && startTang.isAlmostEqual(endTang, 0.0))) {
191966
- if (startTang?.tryNormalizeInPlace())
191967
- firstPlane.getNormalRef().setFrom(startTang);
191968
- if (endTang?.tryNormalizeInPlace())
191969
- lastPlane.getNormalRef().setFrom(endTang);
191970
- }
191971
- // Projection to target plane, constructing sweep direction from two given planes.
191972
- // If successful, push the target plane and swept section to the output arrays and return the swept section.
191973
- // If unsuccessful, leave the output arrays alone and return the input section.
191974
- const doSweepToPlane = function (edgePlane0, edgePlane1, targetPlane, section) {
191975
- const sweepVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createStartEnd(edgePlane0.getOriginRef(), edgePlane1.getOriginRef());
191976
- const transform = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createFlattenAlongVectorToPlane(sweepVector, targetPlane.getOriginRef(), targetPlane.getNormalRef());
191977
- if (transform === undefined)
191978
- return section;
191979
- const transformedSection = section.cloneTransformed(transform);
191980
- if (transformedSection === undefined)
191981
- return section;
191982
- sectionData.planes.push(targetPlane);
191983
- sectionData.sections.push(transformedSection);
191984
- return transformedSection;
191985
- };
191986
- let currentSection = doSweepToPlane(planes[0], planes[1], planes[0], initialSection);
191987
- for (let i = 1; i < planes.length; i++) {
191988
- currentSection = doSweepToPlane(planes[i - 1], planes[i], planes[i], currentSection);
191989
- }
191990
- if (options.outputSelect) {
191991
- const ruledSweep = _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_18__.RuledSweep.create(sectionData.sections, options.capped ?? false);
191992
- if (ruledSweep) {
191993
- sectionData.ruledSweep = ruledSweep;
191994
- if (MiteredSweepOutputSelect.AlsoMesh === options.outputSelect) {
191995
- const builder = _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_13__.PolyfaceBuilder.create(options.strokeOptions);
191996
- builder.addRuledSweep(ruledSweep);
191997
- sectionData.mesh = builder.claimPolyface();
191998
- }
192070
+ let currentSection = this.doSweepToPlane(sectionData, planes[0], planes[1], planes[0], initialSection);
192071
+ for (let i = 1; i < planes.length; i++)
192072
+ currentSection = this.doSweepToPlane(sectionData, planes[i - 1], planes[i], planes[i], currentSection);
192073
+ if (options.outputSelect) {
192074
+ const ruledSweep = _solid_RuledSweep__WEBPACK_IMPORTED_MODULE_19__.RuledSweep.create(sectionData.sections, options.capped ?? false);
192075
+ if (ruledSweep) {
192076
+ sectionData.ruledSweep = ruledSweep;
192077
+ if (MiteredSweepOutputSelect.AlsoMesh === options.outputSelect) {
192078
+ const builder = _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_13__.PolyfaceBuilder.create(options.strokeOptions);
192079
+ builder.addRuledSweep(ruledSweep);
192080
+ sectionData.mesh = builder.claimPolyface();
191999
192081
  }
192000
192082
  }
192001
- return sectionData;
192002
192083
  }
192003
- return undefined;
192084
+ return sectionData;
192004
192085
  }
192005
192086
  /**
192006
192087
  * Create a circular arc from start point, tangent at start, radius, optional plane normal, arc sweep.
@@ -192032,25 +192113,25 @@ class CurveFactory {
192032
192113
  const lineTurnRadians = vectorAB.angleToXY(vectorBC0);
192033
192114
  const spiralTurnRadians = 0.5 * lineTurnRadians.radians;
192034
192115
  const radiansBC = radiansAB + lineTurnRadians.radians;
192035
- 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));
192036
- const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createRefs(startPoint.clone(), axesA);
192116
+ 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));
192117
+ const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createRefs(startPoint.clone(), axesA);
192037
192118
  // We know how much it has to turn, and but not the length or end radius.
192038
192119
  // make a spiral of referenceLength and scale it back to the junction line
192039
- 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);
192120
+ 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);
192040
192121
  if (spiralARefLength) {
192041
192122
  const midPlanePerpendicularRadians = radiansAB + spiralTurnRadians;
192042
- const midPlanePerpendicularVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createPolar(1.0, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_19__.Angle.createRadians(midPlanePerpendicularRadians));
192123
+ const midPlanePerpendicularVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createPolar(1.0, _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_20__.Angle.createRadians(midPlanePerpendicularRadians));
192043
192124
  const altitudeB = midPlanePerpendicularVector.dotProductStartEnd(startPoint, shoulderPoint);
192044
192125
  const altitudeSpiralEnd = midPlanePerpendicularVector.dotProductStartEnd(startPoint, spiralARefLength.endPoint());
192045
192126
  const scaleFactor = altitudeB / altitudeSpiralEnd;
192046
- 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);
192127
+ 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);
192047
192128
  const distanceAB = vectorAB.magnitude();
192048
192129
  const vectorBC = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createStartEnd(shoulderPoint, targetPoint);
192049
192130
  vectorBC.scaleToLength(distanceAB, vectorBC);
192050
192131
  const pointC = shoulderPoint.plus(vectorBC);
192051
- 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));
192052
- const frameC = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createRefs(pointC, axesC);
192053
- 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);
192132
+ 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));
192133
+ const frameC = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createRefs(pointC, axesC);
192134
+ 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);
192054
192135
  return [spiralA, spiralC];
192055
192136
  }
192056
192137
  return undefined;
@@ -192073,7 +192154,7 @@ class CurveFactory {
192073
192154
  const spiralTurnRadians = 0.5 * lineTurnAngle.radians;
192074
192155
  const bisectorRadians = 0.5 * (Math.PI - lineTurnAngle.radians);
192075
192156
  const radiansCB = Math.atan2(-vectorBC.y, -vectorBC.x);
192076
- 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());
192157
+ 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());
192077
192158
  if (spiralAB0) {
192078
192159
  const localEndPoint = spiralAB0.fractionToPoint(1);
192079
192160
  const distanceAB = pointA.distance(pointB);
@@ -192084,14 +192165,14 @@ class CurveFactory {
192084
192165
  const xFractionAB = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(distanceAB - distanceBE - localEndPoint.x, distanceAB);
192085
192166
  const xFractionCB = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.conditionalDivideFraction(distanceCB - distanceBE - localEndPoint.x, distanceCB);
192086
192167
  if (xFractionAB !== undefined && xFractionCB !== undefined) {
192087
- 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));
192168
+ 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));
192088
192169
  const frameAOrigin = pointA.interpolate(xFractionAB, pointB);
192089
- const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createRefs(frameAOrigin, axesA);
192090
- 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);
192091
- 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));
192170
+ const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createRefs(frameAOrigin, axesA);
192171
+ 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);
192172
+ 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));
192092
192173
  const frameBOrigin = pointC.interpolate(xFractionCB, pointB);
192093
- const frameB = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createRefs(frameBOrigin, axesB);
192094
- 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);
192174
+ const frameB = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createRefs(frameBOrigin, axesB);
192175
+ 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);
192095
192176
  return [spiralAB, spiralBC];
192096
192177
  }
192097
192178
  }
@@ -192123,8 +192204,8 @@ class CurveFactory {
192123
192204
  const sideB = -sideA;
192124
192205
  const radiusA = sideA * Math.abs(arcRadius);
192125
192206
  const radiusB = sideB * Math.abs(arcRadius);
192126
- 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());
192127
- 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());
192207
+ 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());
192208
+ 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());
192128
192209
  const spiralEndA = spiralA.fractionToPointAndUnitTangent(1.0);
192129
192210
  const spiralEndB = spiralB.fractionToPointAndUnitTangent(1.0);
192130
192211
  // From the end of spiral, step away to arc center (and this is in local coordinates of each spiral)
@@ -192135,12 +192216,12 @@ class CurveFactory {
192135
192216
  // Those local coordinates are rotated to unitAB and unitBC ...
192136
192217
  const vectorA = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createAdd2Scaled(unitAB, sA, unitPerpAB, tA);
192137
192218
  const vectorB = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.createAdd2Scaled(unitCB, sB, unitPerpCB, tB);
192138
- const uv = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_22__.Vector2d.create();
192139
- 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)) {
192219
+ const uv = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_23__.Vector2d.create();
192220
+ 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)) {
192140
192221
  const tangencyAB = pointB.plusScaled(unitAB, uv.x);
192141
192222
  const tangencyCB = pointB.plusScaled(unitCB, uv.y);
192142
- const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createOriginAndMatrixColumns(tangencyAB, unitAB, unitPerpAB, _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.unitZ());
192143
- const frameB = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_17__.Transform.createOriginAndMatrixColumns(tangencyCB, unitCB, unitPerpCB, _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.unitZ());
192223
+ const frameA = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createOriginAndMatrixColumns(tangencyAB, unitAB, unitPerpAB, _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.unitZ());
192224
+ const frameB = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_16__.Transform.createOriginAndMatrixColumns(tangencyCB, unitCB, unitPerpCB, _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__.Vector3d.unitZ());
192144
192225
  spiralA.tryTransformInPlace(frameA);
192145
192226
  spiralB.tryTransformInPlace(frameB);
192146
192227
  const rayA1 = spiralA.fractionToPointAndUnitTangent(1.0);
@@ -192167,9 +192248,9 @@ class CurveFactory {
192167
192248
  const normalCx = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(normalAy, normalAz, normalBy, normalBz);
192168
192249
  const normalCy = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(normalAz, normalAx, normalBz, normalBx);
192169
192250
  const normalCz = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.crossProductXYXY(normalAx, normalAy, normalBx, normalBy);
192170
- const rayOrigin = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_23__.SmallSystem.linearSystem3d(normalAx, normalAy, normalAz, normalBx, normalBy, normalBz, normalCx, normalCy, normalCz, -altitudeA, -altitudeB, 0.0);
192251
+ const rayOrigin = _numerics_SmallSystem__WEBPACK_IMPORTED_MODULE_24__.SmallSystem.linearSystem3d(normalAx, normalAy, normalAz, normalBx, normalBy, normalBz, normalCx, normalCy, normalCz, -altitudeA, -altitudeB, 0.0);
192171
192252
  if (rayOrigin !== undefined) {
192172
- return _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_24__.Ray3d.createXYZUVW(rayOrigin.x, rayOrigin.y, rayOrigin.z, normalCx, normalCy, normalCz);
192253
+ return _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_25__.Ray3d.createXYZUVW(rayOrigin.x, rayOrigin.y, rayOrigin.z, normalCx, normalCy, normalCz);
192173
192254
  }
192174
192255
  return undefined;
192175
192256
  }
@@ -212361,10 +212442,10 @@ class FrameBuilder {
212361
212442
  this.announcePoint(data.endPoint());
212362
212443
  }
212363
212444
  else if (data instanceof _curve_Arc3d__WEBPACK_IMPORTED_MODULE_6__.Arc3d) {
212364
- const ray = data.fractionToPointAndDerivative(0.0);
212365
- this.announcePoint(ray.origin);
212366
- this.announceVector(ray.direction);
212367
- this.announceVector(data.matrixRef.columnZCrossVector(ray.direction));
212445
+ const plane = data.fractionToPointAnd2Derivatives(0.0);
212446
+ this.announcePoint(plane.origin);
212447
+ this.announceVector(plane.vectorU);
212448
+ this.announceVector(plane.vectorV);
212368
212449
  }
212369
212450
  else if (data instanceof _curve_LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
212370
212451
  for (const point of data.points) {
@@ -222262,8 +222343,8 @@ class Vector3d extends XYZ {
222262
222343
  * * The input tolerances in `options`, if given, are considered to be squared for efficiency's sake,
222263
222344
  * so if you have a distance or angle tolerance t, you should pass in t * t.
222264
222345
  * @param other second vector in comparison
222265
- * @param oppositeIsParallel whether to consider diametrically opposed vectors as parallel
222266
- * @param returnValueIfAnInputIsZeroLength if either vector is near zero length, return this value.
222346
+ * @param oppositeIsParallel whether to consider diametrically opposed vectors as parallel. Default false.
222347
+ * @param returnValueIfAnInputIsZeroLength if either vector is near zero length, return this value. Default false.
222267
222348
  * @param options optional radian and distance tolerances.
222268
222349
  */
222269
222350
  isParallelTo(other, oppositeIsParallel = false, returnValueIfAnInputIsZeroLength = false, options) {
@@ -224159,8 +224240,8 @@ class PolygonOps {
224159
224240
  }
224160
224241
  /**
224161
224242
  * Return a Ray3d with (assuming the polygon is planar and not self-intersecting):
224162
- * * `origin` at the centroid of the (3D) polygon
224163
- * * `direction` is the unit vector perpendicular to the plane
224243
+ * * `origin` at the centroid of the (3D) polygon,
224244
+ * * `direction` is the unit vector perpendicular to the plane,
224164
224245
  * * `a` is the area.
224165
224246
  * @param points
224166
224247
  */
@@ -225909,7 +225990,7 @@ class PolylineOps {
225909
225990
  * * If there are one or fewer distinct input points, the return is undefined.
225910
225991
  * @param centerline points to reside in output planes.
225911
225992
  * @param wrapIfPhysicallyClosed if true and the first and last centerline points are the same, then the first and last
225912
- * output planes are averaged and equated (cloned).
225993
+ * output planes are averaged and equated (cloned). Default false.
225913
225994
  */
225914
225995
  static createBisectorPlanesForDistinctPoints(centerline, wrapIfPhysicallyClosed = false) {
225915
225996
  const packedPoints = PolylineOps.compressShortEdges(centerline, 2.0 * _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallMetricDistance); // double the tolerance to ensure normalized vectors exist.
@@ -231193,8 +231274,8 @@ __webpack_require__.r(__webpack_exports__);
231193
231274
  /** @packageDocumentation
231194
231275
  * @module Numerics
231195
231276
  */
231196
- // import { Point2d } from "./Geometry2d";
231197
231277
  /* eslint-disable @typescript-eslint/naming-convention */
231278
+ // cspell:word ABAT
231198
231279
 
231199
231280
 
231200
231281
 
@@ -231207,58 +231288,55 @@ __webpack_require__.r(__webpack_exports__);
231207
231288
  * * origin = local origin used as moments are summed.
231208
231289
  * * sums = array of summed moments.
231209
231290
  * * The [i,j] entry of the sums is a summed or integrated moment for product of axis i and j.
231210
- * * axes 0,1,2 are x,y,z
231291
+ * * axes 0,1,2 are x,y,z.
231211
231292
  * * e.g. entry [0,1] is summed product xy
231212
231293
  * * axis 3 is "w", which is 1 in sums.
231213
- * * e.g. entry 03 is summed x
231214
- * * In this level,
231294
+ * * e.g. entry 03 is summed x.
231295
+ * * In this level:
231215
231296
  * * the `absoluteQuantity` member is undefined.
231216
231297
  * * the `localToWorldMap` and `radiiOfGyration` are created by have undefined contents.
231217
- * * Second level: after a call to inertiaProductsToPrincipalAxes, the `localToWorldMap`, `absoluteQuantity` and `radiiOfGyration` are filled in.
231298
+ * * Second level: after a call to inertiaProductsToPrincipalAxes, the `localToWorldMap`, `absoluteQuantity` and
231299
+ * `radiiOfGyration` are filled in.
231218
231300
  * @public
231219
231301
  */
231220
231302
  class MomentData {
231221
- /** Return the lower-right (3,3) entry in the sums.
231222
- * * This is the quantity (i.e. length, area, or volume) summed
231303
+ /**
231304
+ * Return the lower-right (3,3) entry in the sums.
231305
+ * * This is the quantity (i.e. length, area, or volume) summed.
231223
231306
  */
231224
- get quantitySum() { return this.sums.atIJ(3, 3); }
231225
- /** Return a scale factor to make these sums match the target orientation sign.
231307
+ get quantitySum() {
231308
+ return this.sums.atIJ(3, 3);
231309
+ }
231310
+ /**
231311
+ * Return a scale factor to make these sums match the target orientation sign.
231226
231312
  * * 1.0 if `this.quantitySum` has the same sign as `targetSign`.
231227
231313
  * * -1.0 if `this.quantitySum` has the opposite sign from `targetSign`
231228
231314
  */
231229
231315
  signFactor(targetSign) {
231230
231316
  return targetSign * this.quantitySum > 0 ? 1.0 : -1.0;
231231
231317
  }
231232
- /**
231233
- * If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag.
231234
- *
231235
- */
231318
+ /** If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag. */
231236
231319
  setOriginIfNeeded(origin) {
231237
231320
  if (this.needOrigin) {
231238
231321
  this.origin.setFromPoint3d(origin);
231239
231322
  this.needOrigin = false;
231240
231323
  }
231241
231324
  }
231242
- /**
231243
- * If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag.
231244
- *
231245
- */
231325
+ /** If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag. */
231246
231326
  setOriginFromGrowableXYZArrayIfNeeded(points) {
231247
231327
  if (this.needOrigin && points.length > 0) {
231248
231328
  points.getPoint3dAtCheckedPointIndex(0, this.origin);
231249
231329
  this.needOrigin = false;
231250
231330
  }
231251
231331
  }
231252
- /**
231253
- * If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag.
231254
- *
231255
- */
231332
+ /** If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag. */
231256
231333
  setOriginXYZIfNeeded(x, y, z) {
231257
231334
  if (this.needOrigin) {
231258
231335
  this.origin.set(x, y, z);
231259
231336
  this.needOrigin = false;
231260
231337
  }
231261
231338
  }
231339
+ /** Constructor. */
231262
231340
  constructor() {
231263
231341
  this._point0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
231264
231342
  this._point1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_0__.Point3d.create();
@@ -231270,12 +231348,13 @@ class MomentData {
231270
231348
  this.absoluteQuantity = 0.1; // so optimizer sees its type
231271
231349
  this.absoluteQuantity = undefined;
231272
231350
  }
231273
- /** Create moments with optional origin.
231274
- * * origin and needOrigin are quirky.
231351
+ /**
231352
+ * Create moments with optional origin.
231353
+ * * Origin and needOrigin are quirky.
231275
231354
  * * (undefined, true) sets up to use first incoming point as origin.
231276
- * * (origin) sets up to use that durable origin, set needsOrigin flag false
231277
- * * (origin, true) the "true" is meaningless
231278
- * * (undefined, false) makes 000 the durable origin
231355
+ * * (origin) sets up to use that durable origin, set needsOrigin flag false.
231356
+ * * (origin, true) the "true" is meaningless.
231357
+ * * (undefined, false) makes 000 the durable origin.
231279
231358
  */
231280
231359
  static create(origin, needOrigin = false) {
231281
231360
  const data = new MomentData();
@@ -231287,8 +231366,8 @@ class MomentData {
231287
231366
  return data;
231288
231367
  }
231289
231368
  /**
231290
- * Return the formal tensor of integrated values `[yy+zz,xy,xz][yx,xx+zz,yz][zx,xy,xx+yy]`
231291
- * @param products matrix of (integrated) `[xx,xy,xz][yx,yy,yz][zx,xy,zz]`
231369
+ * Return the formal tensor of integrated values `[yy+zz,xy,xz][yx,xx+zz,yz][zx,xy,xx+yy]`.
231370
+ * @param products matrix of (integrated) `[xx,xy,xz][yx,yy,yz][zx,xy,zz]`.
231292
231371
  */
231293
231372
  static momentTensorFromInertiaProducts(products) {
231294
231373
  const rr = products.sumDiagonal();
@@ -231321,7 +231400,7 @@ class MomentData {
231321
231400
  }
231322
231401
  /**
231323
231402
  * Return the principal moment data for an array of points.
231324
- * @param points array of points
231403
+ * @param points array of points.
231325
231404
  */
231326
231405
  static pointsToPrincipalAxes(points) {
231327
231406
  const moments = new MomentData();
@@ -231332,12 +231411,12 @@ class MomentData {
231332
231411
  return this.inertiaProductsToPrincipalAxes(moments.origin, moments.sums);
231333
231412
  }
231334
231413
  /**
231335
- * Compute principal axes from inertial products
231336
- * * The radii of gyration are sorted smallest to largest
231337
- * * Hence x axis is long direction
231338
- * * Hence planar data generates large moment as Z
231414
+ * Compute principal axes from inertial products.
231415
+ * * The radii of gyration are sorted smallest to largest.
231416
+ * * Hence x axis is long direction.
231417
+ * * Hence planar data generates large moment as Z.
231339
231418
  * @param origin The origin used for the inertia products.
231340
- * @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]
231419
+ * @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].
231341
231420
  */
231342
231421
  static inertiaProductsToPrincipalAxes(origin, inertiaProducts) {
231343
231422
  const moments = new MomentData();
@@ -231365,18 +231444,19 @@ class MomentData {
231365
231444
  return moments;
231366
231445
  }
231367
231446
  /**
231368
- * Test for match among selected members as they exist after `inertiaProductsToPrincipalAxes`
231369
- * * The members considered are
231370
- * * origin of local to world map (i.e. centroid)
231371
- * * radius of gyration
231447
+ * Test for match among selected members as they exist after `inertiaProductsToPrincipalAxes`.
231448
+ * * The members considered are:
231449
+ * * origin of local to world map (i.e. centroid),
231450
+ * * radius of gyration,
231372
231451
  * * axes of localToWorldMap.
231373
231452
  * * Axis direction tests allow these quirks:
231374
231453
  * * opposite orientation is considered matched.
231375
231454
  * * Full xyz symmetry: If x,y,z radii are matched, axes are not tested.
231376
- * * 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.
231455
+ * * Symmetry in xy plane: If x and y radii are matched, the x and y axes area allowed to spin freely. Only Z direction
231456
+ * is tested.
231377
231457
  * * If either or both are undefined, returns false.
231378
- * @param dataA first set of moments
231379
- * @param dataB second set of moments
231458
+ * @param dataA first set of moments.
231459
+ * @param dataB second set of moments.
231380
231460
  */
231381
231461
  static areEquivalentPrincipalAxes(dataA, dataB) {
231382
231462
  if (dataA && dataB
@@ -231424,7 +231504,7 @@ class MomentData {
231424
231504
  this.sums.addMomentsInPlace(p.x - this.origin.x, p.y - this.origin.y, p.z - this.origin.z, 1.0);
231425
231505
  }
231426
231506
  }
231427
- /** revise the accumulated sums to be "around the centroid" */
231507
+ /** Revise the accumulated sums to be "around the centroid". */
231428
231508
  shiftOriginAndSumsToCentroidOfSums() {
231429
231509
  const xyz = this.sums.columnW().realPoint();
231430
231510
  if (xyz) {
@@ -231433,7 +231513,8 @@ class MomentData {
231433
231513
  }
231434
231514
  return false;
231435
231515
  }
231436
- /** revise the accumulated sums
231516
+ /**
231517
+ * Revise the accumulated sums.
231437
231518
  * * add ax,ay,ax to the origin coordinates.
231438
231519
  * * apply the negative translation to the sums.
231439
231520
  */
@@ -231441,11 +231522,12 @@ class MomentData {
231441
231522
  this.origin.addXYZInPlace(ax, ay, az);
231442
231523
  this.sums.multiplyTranslationSandwichInPlace(-ax, -ay, -az);
231443
231524
  }
231444
- /** revise the accumulated sums so they are based at a specified origin. */
231525
+ /** Revise the accumulated sums so they are based at a specified origin. */
231445
231526
  shiftOriginAndSumsToNewOrigin(newOrigin) {
231446
231527
  this.shiftOriginAndSumsByXYZ(newOrigin.x - this.origin.x, newOrigin.y - this.origin.y, newOrigin.z - this.origin.z);
231447
231528
  }
231448
- /** compute moments of a triangle from the origin to the given line.
231529
+ /**
231530
+ * Compute moments of a triangle from the origin to the given line.
231449
231531
  * Accumulate them to this.sums.
231450
231532
  * * If `pointA` is undefined, use `this.origin` as pointA.
231451
231533
  * * If `this.needOrigin` is set, pointB is used
@@ -231477,7 +231559,7 @@ class MomentData {
231477
231559
  this.sums.addScaledOuterProductInPlace(vectorC, vectorC, r1_12);
231478
231560
  }
231479
231561
  }
231480
- /** add scaled outer product of (4d, unit weight) point to this.sums */
231562
+ /** Add scaled outer product of (4d, unit weight) point to this.sums. */
231481
231563
  accumulateScaledOuterProduct(point, scaleFactor) {
231482
231564
  this.setOriginXYZIfNeeded(point.x, point.y, 0.0);
231483
231565
  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);
@@ -231499,7 +231581,8 @@ class MomentData {
231499
231581
  this.sums.addScaledOuterProductInPlace(vectorB, vectorA, r1_6);
231500
231582
  this.sums.addScaledOuterProductInPlace(vectorB, vectorB, r1_3);
231501
231583
  }
231502
- /** compute moments of triangles from a base point to the given linestring.
231584
+ /**
231585
+ * Compute moments of triangles from a base point to the given linestring.
231503
231586
  * Accumulate them to this.sums.
231504
231587
  * * If `pointA` is undefined, use `this.origin` as pointA.
231505
231588
  * * If `this.needOrigin` is set, the first point of the array is captured as local origin for subsequent sums.
@@ -231516,18 +231599,18 @@ class MomentData {
231516
231599
  }
231517
231600
  }
231518
231601
  }
231519
- // cspell:word ABAT
231520
231602
  /**
231521
231603
  * * 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].
231522
- * * Sandwich this between transforms with columns [vectorU, vectorV, 0000, origin]. (Column weights 0001) (only xy parts of vectors)
231604
+ * * Sandwich this between transforms with columns [vectorU, vectorV, 0000, origin]. (Column weights 0001) (only xy
231605
+ * parts of vectors).
231523
231606
  * * scale by detJ for the xy-only determinant of the vectors.
231524
231607
  * @param productXX
231525
231608
  * @param productXY
231526
231609
  * @param productYY
231527
- * @param area Area in caller's system
231528
- * @param origin Caller's origin
231529
- * @param vectorU Caller's U axis (not necessarily unit)
231530
- * @param vectorV Caller's V axis (not necessarily unit)
231610
+ * @param area Area in caller's system.
231611
+ * @param origin Caller's origin.
231612
+ * @param vectorU Caller's U axis (not necessarily unit).
231613
+ * @param vectorV Caller's V axis (not necessarily unit).
231531
231614
  */
231532
231615
  accumulateXYProductsInCentroidalFrame(productXX, productXY, productYY, area, origin, vectorU, vectorV) {
231533
231616
  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);
@@ -231539,27 +231622,23 @@ class MomentData {
231539
231622
  }
231540
231623
  /**
231541
231624
  * Accumulate sums from other moments.
231542
- * * scale by given scaleFactor (e.g. sign to correct orientation)
231543
- * * pull the origin from `other` if `this` needs an origin.
231544
- * *
231625
+ * * Scale by given scaleFactor (e.g. sign to correct orientation).
231626
+ * * Pull the origin from `other` if `this` needs an origin.
231545
231627
  */
231546
231628
  accumulateProducts(other, scale) {
231547
231629
  this.setOriginIfNeeded(other.origin);
231548
231630
  this.sums.addTranslationSandwichInPlace(other.sums, this.origin.x - other.origin.x, this.origin.y - other.origin.y, this.origin.z - other.origin.z, scale);
231549
231631
  }
231550
231632
  /**
231551
- * Accumulate sums from Matrix4d and origin.
231552
- * * scale by given scaleFactor (e.g. sign to correct orientation)
231553
- * * trap the origin if `this` needs an origin.
231554
- * *
231555
- */
231633
+ * Accumulate sums from Matrix4d and origin.
231634
+ * * Scale by given scaleFactor (e.g. sign to correct orientation).
231635
+ * * Trap the origin if `this` needs an origin.
231636
+ */
231556
231637
  accumulateProductsFromOrigin(origin, products, scale) {
231557
231638
  this.setOriginIfNeeded(origin);
231558
231639
  this.sums.addTranslationSandwichInPlace(products, this.origin.x - origin.x, this.origin.y - origin.y, this.origin.z - origin.z, scale);
231559
231640
  }
231560
- /**
231561
- * Convert to a json data object with:
231562
- */
231641
+ /** Convert to a json data object. */
231563
231642
  toJSON() {
231564
231643
  return {
231565
231644
  origin: this.origin,
@@ -262337,19 +262416,19 @@ __webpack_require__.r(__webpack_exports__);
262337
262416
 
262338
262417
  /**
262339
262418
  * A ruled sweep (surface) is a collection of 2 or more contours.
262340
- * * All contours must have identical number and type of geometry. (paths, loops, parity regions, lines, arcs, other curves)
262419
+ * * All contours must have identical number and type of geometry. (paths, loops, parity regions, lines, arcs, other curves).
262341
262420
  * @public
262342
262421
  */
262343
262422
  class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive {
262344
262423
  constructor(contours, capped) {
262345
262424
  super(capped);
262346
- /** String name for schema properties */
262425
+ /** String name for schema properties. */
262347
262426
  this.solidPrimitiveType = "ruledSweep";
262348
262427
  this._contours = contours;
262349
262428
  }
262350
262429
  /**
262351
262430
  * Create a ruled sweep from an array of contours.
262352
- * * the contours are CAPTURED (not cloned)
262431
+ * * The contours are CAPTURED (not cloned).
262353
262432
  */
262354
262433
  static create(contours, capped) {
262355
262434
  const sweepContours = [];
@@ -262362,9 +262441,12 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
262362
262441
  return new RuledSweep(sweepContours, capped);
262363
262442
  }
262364
262443
  /** Return a reference to the array of SweepContour. */
262365
- sweepContoursRef() { return this._contours; }
262366
- /** Return clones of all the sweep contours
262367
- * * See also cloneContours, which returns the spatial contours without their local coordinate system definitions)
262444
+ sweepContoursRef() {
262445
+ return this._contours;
262446
+ }
262447
+ /**
262448
+ * Return clones of the sweep contours.
262449
+ * * See also [[cloneContours]], which returns the contours without their local coordinate system definitions.
262368
262450
  */
262369
262451
  cloneSweepContours() {
262370
262452
  const result = [];
@@ -262373,8 +262455,9 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
262373
262455
  }
262374
262456
  return result;
262375
262457
  }
262376
- /** Return clones of all the contours
262377
- * * See also cloneContours, which returns the contours in their local coordinate systems
262458
+ /**
262459
+ * Return clones of the sweep contours, each as a [[CurveCollection]].
262460
+ * * See also [[cloneSweepContours]], which returns the contours with their local coordinate system definitions.
262378
262461
  */
262379
262462
  cloneContours() {
262380
262463
  const result = [];
@@ -262383,7 +262466,7 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
262383
262466
  }
262384
262467
  return result;
262385
262468
  }
262386
- /** Return a deep clone */
262469
+ /** Return a deep clone. */
262387
262470
  clone() {
262388
262471
  return new RuledSweep(this.cloneSweepContours(), this.capped);
262389
262472
  }
@@ -262408,19 +262491,22 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
262408
262491
  const result = this.clone();
262409
262492
  return result.tryTransformInPlace(transform) ? result : undefined;
262410
262493
  }
262411
- /** Return a coordinate frame (right handed unit vectors)
262412
- * * origin on base contour
262494
+ /**
262495
+ * Return a coordinate frame (right handed unit vectors)
262496
+ * * origin on base contour.
262413
262497
  * * x, y directions from base contour.
262414
- * * z direction perpendicular
262498
+ * * z direction perpendicular.
262415
262499
  */
262416
262500
  getConstructiveFrame() {
262417
262501
  if (this._contours.length === 0)
262418
262502
  return undefined;
262419
262503
  return this._contours[0].localToWorld.cloneRigid();
262420
262504
  }
262421
- /** Test if `other` is an instance of a `RuledSweep` */
262422
- isSameGeometryClass(other) { return other instanceof RuledSweep; }
262423
- /** test same contour geometry and capping. */
262505
+ /** Test if `other` is an instance of a `RuledSweep`. */
262506
+ isSameGeometryClass(other) {
262507
+ return other instanceof RuledSweep;
262508
+ }
262509
+ /** Test for near equality of two RuledSweeps. */
262424
262510
  isAlmostEqual(other) {
262425
262511
  if (other instanceof RuledSweep) {
262426
262512
  if (this.capped !== other.capped)
@@ -262435,13 +262521,13 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
262435
262521
  }
262436
262522
  return false;
262437
262523
  }
262438
- /** dispatch to strongly typed `handler.handleRuledSweep(this)` */
262524
+ /** Dispatch to strongly typed `handler.handleRuledSweep(this)`. */
262439
262525
  dispatchToGeometryHandler(handler) {
262440
262526
  return handler.handleRuledSweep(this);
262441
262527
  }
262442
262528
  /**
262443
- * Return the section curves at a fraction of the sweep
262444
- * @param vFraction fractional position along the sweep direction
262529
+ * Return the section curves at a fraction of the sweep.
262530
+ * @param vFraction fractional position along the sweep direction.
262445
262531
  */
262446
262532
  constantVSection(vFraction) {
262447
262533
  const numSection = this._contours.length;
@@ -262464,12 +262550,14 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
262464
262550
  return undefined;
262465
262551
  });
262466
262552
  }
262467
- /** Pass each contour to `extendRange` */
262553
+ /** Pass each contour to `extendRange`. */
262468
262554
  extendRange(rangeToExtend, transform) {
262469
262555
  for (const contour of this._contours)
262470
262556
  contour.curves.extendRange(rangeToExtend, transform);
262471
262557
  }
262472
- /** Construct a CurveCollection with the same structure as collectionA and collectionB, with primitives constructed by the caller-supplied primitiveMutator function.
262558
+ /**
262559
+ * Construct a CurveCollection with the same structure as collectionA and collectionB, with primitives constructed
262560
+ * by the caller-supplied primitiveMutator function.
262473
262561
  * @returns Returns undefined if there is any type mismatch between the two collections.
262474
262562
  */
262475
262563
  static mutatePartners(collectionA, collectionB, primitiveMutator) {
@@ -262520,9 +262608,7 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
262520
262608
  return undefined;
262521
262609
  }
262522
262610
  /**
262523
- * Return true if this is a closed volume, as observed by
262524
- * * cap flag
262525
- * identical first and last contours.
262611
+ * @return true if this is a closed volume.
262526
262612
  */
262527
262613
  get isClosedVolume() {
262528
262614
  const n = this._contours.length;
@@ -262552,20 +262638,23 @@ __webpack_require__.r(__webpack_exports__);
262552
262638
 
262553
262639
  /**
262554
262640
  * Base class for SolidPrimitive variants.
262555
- *
262556
262641
  * * The base class holds capped flag for all derived classes.
262557
262642
  * @public
262558
262643
  */
262559
262644
  class SolidPrimitive extends _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.GeometryQuery {
262560
262645
  constructor(capped) {
262561
262646
  super();
262562
- /** String name for schema properties */
262647
+ /** String name for schema properties. */
262563
262648
  this.geometryCategory = "solid";
262564
262649
  this._capped = capped;
262565
262650
  }
262566
- /** Whether this is a capped solid */
262567
- get capped() { return this._capped; }
262568
- set capped(capped) { this._capped = capped; }
262651
+ /** Whether this is a capped solid. */
262652
+ get capped() {
262653
+ return this._capped;
262654
+ }
262655
+ set capped(capped) {
262656
+ this._capped = capped;
262657
+ }
262569
262658
  }
262570
262659
 
262571
262660
 
@@ -305039,7 +305128,7 @@ var loadLanguages = instance.loadLanguages;
305039
305128
  /***/ ((module) => {
305040
305129
 
305041
305130
  "use strict";
305042
- 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"}}');
305131
+ 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"}}');
305043
305132
 
305044
305133
  /***/ })
305045
305134