@itwin/rpcinterface-full-stack-tests 4.0.0-dev.100 → 4.0.0-dev.101
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.
- package/lib/dist/_a8a9.bundled-tests.js.map +1 -1
- package/lib/dist/bundled-tests.js +229 -179
- package/lib/dist/bundled-tests.js.map +1 -1
- package/lib/dist/core_frontend_lib_esm_ApproximateTerrainHeightsProps_js.bundled-tests.js.map +1 -1
- package/lib/dist/object-storage.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_itwin_object-storage-azure_1_6_0_node_modules_itwin_obj-0f69b1.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_loaders_gl_draco_3_3_3_node_modules_loaders_gl_draco_di-28f62e.bundled-tests.js.map +1 -1
- package/lib/dist/vendors-common_temp_node_modules_pnpm_reflect-metadata_0_1_13_node_modules_reflect-metadata_R-610cb3.bundled-tests.js.map +1 -1
- package/package.json +14 -14
|
@@ -152084,7 +152084,8 @@ class MapTile extends _internal__WEBPACK_IMPORTED_MODULE_7__.RealityTile {
|
|
|
152084
152084
|
}
|
|
152085
152085
|
/** @internal */
|
|
152086
152086
|
minimumVisibleFactor() {
|
|
152087
|
-
|
|
152087
|
+
// if minimumVisibleFactor is more than 0, it stops parents from loading when children are not ready, to fill in gaps
|
|
152088
|
+
return 0.0;
|
|
152088
152089
|
}
|
|
152089
152090
|
/** @internal */
|
|
152090
152091
|
getDrapeTextures() {
|
|
@@ -169368,17 +169369,20 @@ class Geometry {
|
|
|
169368
169369
|
if (a2b2 > 0.0) {
|
|
169369
169370
|
const a2b2r = 1.0 / a2b2; // 1/(a^2+b^2)
|
|
169370
169371
|
const d2a2b2 = d2 * a2b2r; // d^2/(a^2+b^2)
|
|
169371
|
-
const
|
|
169372
|
-
if (
|
|
169372
|
+
const criterion = 1.0 - d2a2b2; // 1 - d^2/(a^2+b^2);
|
|
169373
|
+
if (criterion < -Geometry.smallMetricDistanceSquared) // nSolution = 0
|
|
169373
169374
|
return result;
|
|
169374
169375
|
const da2b2 = -constCoff * a2b2r; // -d/(a^2+b^2)
|
|
169376
|
+
// (c0,s0) is the closest approach of the line to the circle center (origin)
|
|
169375
169377
|
const c0 = da2b2 * cosCoff; // -ad/(a^2+b^2)
|
|
169376
169378
|
const s0 = da2b2 * sinCoff; // -bd/(a^2+b^2)
|
|
169377
|
-
if (
|
|
169379
|
+
if (criterion <= 0.0) { // nSolution = 1
|
|
169380
|
+
// We observed criterion = -2.22e-16 in a rotated tangent system, therefore for negative criteria near
|
|
169381
|
+
// zero, return the near-tangency; for tiny positive criteria, fall through to return both solutions.
|
|
169378
169382
|
result = [_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_1__.Vector2d.create(c0, s0)];
|
|
169379
169383
|
}
|
|
169380
|
-
else
|
|
169381
|
-
const s = Math.sqrt(
|
|
169384
|
+
else { // nSolution = 2
|
|
169385
|
+
const s = Math.sqrt(criterion * a2b2r); // sqrt(a^2+b^2-d^2)) / (a^2+b^2)
|
|
169382
169386
|
result = [
|
|
169383
169387
|
_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_1__.Vector2d.create(c0 - s * sinCoff, s0 + s * cosCoff),
|
|
169384
169388
|
_geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_1__.Vector2d.create(c0 + s * sinCoff, s0 - s * cosCoff),
|
|
@@ -184322,12 +184326,12 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
|
|
|
184322
184326
|
extendB, reversed) {
|
|
184323
184327
|
const inverseA = matrixA.inverse();
|
|
184324
184328
|
if (inverseA) {
|
|
184325
|
-
const localB = inverseA.multiplyMatrixMatrix(matrixB);
|
|
184329
|
+
const localB = inverseA.multiplyMatrixMatrix(matrixB); // localB->localA transform
|
|
184326
184330
|
const ellipseRadians = [];
|
|
184327
184331
|
const circleRadians = [];
|
|
184328
184332
|
_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(localB.coffs[2], localB.coffs[5], localB.coffs[8], // center xyw
|
|
184329
|
-
localB.coffs[0], localB.coffs[3], localB.coffs[6], //
|
|
184330
|
-
localB.coffs[1], localB.coffs[4], localB.coffs[7], //
|
|
184333
|
+
localB.coffs[0], localB.coffs[3], localB.coffs[6], // vector0 xyw
|
|
184334
|
+
localB.coffs[1], localB.coffs[4], localB.coffs[7], // vector90 xyw
|
|
184331
184335
|
ellipseRadians, circleRadians);
|
|
184332
184336
|
for (let i = 0; i < ellipseRadians.length; i++) {
|
|
184333
184337
|
const fractionA = cpA.sweep.radiansToSignedPeriodicFraction(circleRadians[i]);
|
|
@@ -186274,7 +186278,7 @@ function optionalVectorUpdate(source, result) {
|
|
|
186274
186278
|
return undefined;
|
|
186275
186279
|
}
|
|
186276
186280
|
/**
|
|
186277
|
-
* CurveLocationDetail carries point and
|
|
186281
|
+
* CurveLocationDetail carries point and parameter data about a point evaluated on a curve.
|
|
186278
186282
|
* * These are returned by a variety of queries.
|
|
186279
186283
|
* * Particular contents can vary among the queries.
|
|
186280
186284
|
* @public
|
|
@@ -190518,13 +190522,16 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
190518
190522
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
190519
190523
|
/* harmony export */ "PlanarSubdivision": () => (/* binding */ PlanarSubdivision)
|
|
190520
190524
|
/* harmony export */ });
|
|
190521
|
-
/* harmony import */ var
|
|
190522
|
-
/* harmony import */ var
|
|
190523
|
-
/* harmony import */ var
|
|
190524
|
-
/* harmony import */ var
|
|
190525
|
-
/* harmony import */ var
|
|
190526
|
-
/* harmony import */ var
|
|
190527
|
-
/* harmony import */ var
|
|
190525
|
+
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
190526
|
+
/* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
|
|
190527
|
+
/* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
|
|
190528
|
+
/* harmony import */ var _topology_Merging__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../topology/Merging */ "../../core/geometry/lib/esm/topology/Merging.js");
|
|
190529
|
+
/* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
|
|
190530
|
+
/* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
190531
|
+
/* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
|
|
190532
|
+
/* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
|
|
190533
|
+
/* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
|
|
190534
|
+
/* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
|
|
190528
190535
|
/*---------------------------------------------------------------------------------------------
|
|
190529
190536
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
190530
190537
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -190536,13 +190543,16 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
190536
190543
|
|
|
190537
190544
|
|
|
190538
190545
|
|
|
190546
|
+
|
|
190547
|
+
|
|
190548
|
+
|
|
190539
190549
|
/** @packageDocumentation
|
|
190540
190550
|
* @module Curve
|
|
190541
190551
|
*/
|
|
190542
190552
|
class MapCurvePrimitiveToCurveLocationDetailPairArray {
|
|
190543
190553
|
constructor() {
|
|
190544
190554
|
this.primitiveToPair = new Map();
|
|
190545
|
-
// index assigned to this primitive for
|
|
190555
|
+
// index assigned to this primitive (for debugging)
|
|
190546
190556
|
this.primitiveToIndex = new Map();
|
|
190547
190557
|
this._numIndexedPrimitives = 0;
|
|
190548
190558
|
}
|
|
@@ -190574,54 +190584,63 @@ class MapCurvePrimitiveToCurveLocationDetailPairArray {
|
|
|
190574
190584
|
if (primitiveB)
|
|
190575
190585
|
this.insertPrimitiveToPair(primitiveB, pair);
|
|
190576
190586
|
}
|
|
190587
|
+
/** Split closed missing primitives in half and add new intersection pairs */
|
|
190588
|
+
splitAndAppendMissingClosedPrimitives(primitives, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
|
|
190589
|
+
for (const p of primitives) {
|
|
190590
|
+
let closedCurveSplitCandidate = false;
|
|
190591
|
+
if (p instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_1__.Arc3d)
|
|
190592
|
+
closedCurveSplitCandidate = p.sweep.isFullCircle;
|
|
190593
|
+
else if (!(p instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_2__.LineSegment3d) && !(p instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_3__.LineString3d))
|
|
190594
|
+
closedCurveSplitCandidate = p.startPoint().isAlmostEqualXY(p.endPoint(), tolerance);
|
|
190595
|
+
if (closedCurveSplitCandidate && !this.primitiveToPair.has(p)) {
|
|
190596
|
+
const p0 = p.clonePartialCurve(0.0, 0.5);
|
|
190597
|
+
const p1 = p.clonePartialCurve(0.5, 1.0);
|
|
190598
|
+
if (p0 && p1) {
|
|
190599
|
+
this.insertPair(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__.CurveLocationDetailPair.createCapture(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__.CurveLocationDetail.createCurveEvaluatedFraction(p0, 0.0), _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__.CurveLocationDetail.createCurveEvaluatedFraction(p1, 1.0)));
|
|
190600
|
+
this.insertPair(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__.CurveLocationDetailPair.createCapture(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__.CurveLocationDetail.createCurveEvaluatedFraction(p0, 1.0), _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__.CurveLocationDetail.createCurveEvaluatedFraction(p1, 0.0)));
|
|
190601
|
+
}
|
|
190602
|
+
}
|
|
190603
|
+
}
|
|
190604
|
+
}
|
|
190577
190605
|
}
|
|
190578
|
-
/*
|
|
190579
|
-
function getDetailString(detail: CurveLocationDetail | undefined): string {
|
|
190580
|
-
if (!detail)
|
|
190581
|
-
return "{}";
|
|
190582
|
-
else return tagString("primitive", this.primitiveToIndex.get(detail.curve!)) + tagString("f0", detail.fraction) + tagString("f1", detail.fraction1);
|
|
190583
|
-
}
|
|
190584
|
-
}
|
|
190585
|
-
function tagString(name: string, value: number | undefined): string {
|
|
190586
|
-
if (value !== undefined)
|
|
190587
|
-
return "(" + name + " " + value + ")";
|
|
190588
|
-
return "";
|
|
190589
|
-
}
|
|
190590
|
-
*/
|
|
190591
190606
|
/**
|
|
190592
190607
|
* @internal
|
|
190593
190608
|
*/
|
|
190594
190609
|
class PlanarSubdivision {
|
|
190595
|
-
/** Create a graph from an array of curves, and an array of the curves' precomputed intersections. */
|
|
190596
|
-
static assembleHalfEdgeGraph(primitives, allPairs) {
|
|
190610
|
+
/** Create a graph from an array of curves, and an array of the curves' precomputed intersections. Z-coordinates are ignored. */
|
|
190611
|
+
static assembleHalfEdgeGraph(primitives, allPairs, mergeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
|
|
190597
190612
|
const detailByPrimitive = new MapCurvePrimitiveToCurveLocationDetailPairArray(); // map from key CurvePrimitive to CurveLocationDetailPair.
|
|
190598
|
-
for (const
|
|
190599
|
-
detailByPrimitive.assignPrimitiveIndex(p);
|
|
190600
|
-
for (const pair of allPairs) {
|
|
190613
|
+
for (const pair of allPairs)
|
|
190601
190614
|
detailByPrimitive.insertPair(pair);
|
|
190602
|
-
|
|
190603
|
-
|
|
190615
|
+
if (primitives.length > detailByPrimitive.primitiveToPair.size)
|
|
190616
|
+
detailByPrimitive.splitAndAppendMissingClosedPrimitives(primitives, mergeTolerance); // otherwise, these single-primitive loops are missing from the graph
|
|
190617
|
+
const graph = new _topology_Graph__WEBPACK_IMPORTED_MODULE_5__.HalfEdgeGraph();
|
|
190604
190618
|
for (const entry of detailByPrimitive.primitiveToPair.entries()) {
|
|
190605
190619
|
const p = entry[0];
|
|
190606
|
-
|
|
190620
|
+
// convert each interval intersection into two isolated intersections
|
|
190621
|
+
const details = entry[1].reduce((accumulator, detailPair) => {
|
|
190622
|
+
if (!detailPair.detailA.hasFraction1)
|
|
190623
|
+
return [...accumulator, detailPair];
|
|
190624
|
+
const detail = getDetailOnCurve(detailPair, p);
|
|
190625
|
+
const detail0 = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__.CurveLocationDetail.createCurveFractionPoint(p, detail.fraction, detail.point);
|
|
190626
|
+
const detail1 = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__.CurveLocationDetail.createCurveFractionPoint(p, detail.fraction1, detail.point1);
|
|
190627
|
+
return [...accumulator, _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__.CurveLocationDetailPair.createCapture(detail0, detail0), _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__.CurveLocationDetailPair.createCapture(detail1, detail1)];
|
|
190628
|
+
}, []);
|
|
190629
|
+
// lexical sort on p intersection fraction
|
|
190607
190630
|
details.sort((pairA, pairB) => {
|
|
190608
190631
|
const fractionA = getFractionOnCurve(pairA, p);
|
|
190609
190632
|
const fractionB = getFractionOnCurve(pairB, p);
|
|
190610
|
-
if (fractionA === undefined || fractionB === undefined)
|
|
190611
|
-
return -1000.0;
|
|
190612
190633
|
return fractionA - fractionB;
|
|
190613
190634
|
});
|
|
190614
|
-
let
|
|
190615
|
-
|
|
190616
|
-
|
|
190617
|
-
|
|
190618
|
-
|
|
190619
|
-
this.addHalfEdge(graph, p, detail0.point, detail0.fraction, detail1.point, detail1.fraction);
|
|
190620
|
-
detail0 = detail1;
|
|
190635
|
+
let last = { point: p.startPoint(), fraction: 0.0 };
|
|
190636
|
+
for (const detailPair of details) {
|
|
190637
|
+
const detail = getDetailOnCurve(detailPair, p);
|
|
190638
|
+
const detailFraction = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.restrictToInterval(detail.fraction, 0, 1); // truncate fraction, but don't snap point; clustering happens later
|
|
190639
|
+
last = this.addHalfEdge(graph, p, last.point, last.fraction, detail.point, detailFraction, mergeTolerance);
|
|
190621
190640
|
}
|
|
190622
|
-
this.addHalfEdge(graph, p,
|
|
190641
|
+
this.addHalfEdge(graph, p, last.point, last.fraction, p.endPoint(), 1.0, mergeTolerance);
|
|
190623
190642
|
}
|
|
190624
|
-
|
|
190643
|
+
_topology_Merging__WEBPACK_IMPORTED_MODULE_6__.HalfEdgeGraphMerge.clusterAndMergeXYTheta(graph, (he) => he.sortAngle);
|
|
190625
190644
|
return graph;
|
|
190626
190645
|
}
|
|
190627
190646
|
/**
|
|
@@ -190633,19 +190652,21 @@ class PlanarSubdivision {
|
|
|
190633
190652
|
* @param point0 start point
|
|
190634
190653
|
* @param fraction1 end fraction
|
|
190635
190654
|
* @param point1 end point
|
|
190636
|
-
|
|
190637
|
-
|
|
190638
|
-
|
|
190639
|
-
|
|
190640
|
-
|
|
190641
|
-
|
|
190642
|
-
|
|
190643
|
-
|
|
190644
|
-
|
|
190645
|
-
|
|
190646
|
-
|
|
190647
|
-
|
|
190648
|
-
|
|
190655
|
+
* @returns end point and fraction, or start point and fraction if no action
|
|
190656
|
+
*/
|
|
190657
|
+
static addHalfEdge(graph, p, point0, fraction0, point1, fraction1, mergeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
|
|
190658
|
+
if (point0.isAlmostEqualXY(point1, mergeTolerance))
|
|
190659
|
+
return { point: point0, fraction: fraction0 };
|
|
190660
|
+
const halfEdge = graph.createEdgeXYAndZ(point0, 0, point1, 0);
|
|
190661
|
+
const detail01 = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_4__.CurveLocationDetail.createCurveEvaluatedFractionFraction(p, fraction0, fraction1);
|
|
190662
|
+
const mate = halfEdge.edgeMate;
|
|
190663
|
+
halfEdge.edgeTag = detail01;
|
|
190664
|
+
halfEdge.sortData = 1.0;
|
|
190665
|
+
mate.edgeTag = detail01;
|
|
190666
|
+
mate.sortData = -1.0;
|
|
190667
|
+
halfEdge.sortAngle = sortAngle(p, fraction0, false);
|
|
190668
|
+
mate.sortAngle = sortAngle(p, fraction1, true);
|
|
190669
|
+
return { point: point1, fraction: fraction1 };
|
|
190649
190670
|
}
|
|
190650
190671
|
/**
|
|
190651
190672
|
* Based on computed (and toleranced) area, push the loop (pointer) onto the appropriate array of positive, negative, or sliver loops.
|
|
@@ -190654,7 +190675,7 @@ class PlanarSubdivision {
|
|
|
190654
190675
|
* @returns the area (forced to zero if within tolerance)
|
|
190655
190676
|
*/
|
|
190656
190677
|
static collectSignedLoop(loop, outLoops, zeroAreaTolerance = 1.0e-10, isSliverFace) {
|
|
190657
|
-
let area = isSliverFace ? 0.0 :
|
|
190678
|
+
let area = isSliverFace ? 0.0 : _RegionOps__WEBPACK_IMPORTED_MODULE_7__.RegionOps.computeXYArea(loop);
|
|
190658
190679
|
if (area === undefined)
|
|
190659
190680
|
area = 0;
|
|
190660
190681
|
if (Math.abs(area) < zeroAreaTolerance)
|
|
@@ -190670,7 +190691,7 @@ class PlanarSubdivision {
|
|
|
190670
190691
|
}
|
|
190671
190692
|
static createLoopInFace(faceSeed, announce) {
|
|
190672
190693
|
let he = faceSeed;
|
|
190673
|
-
const loop =
|
|
190694
|
+
const loop = _Loop__WEBPACK_IMPORTED_MODULE_8__.Loop.create();
|
|
190674
190695
|
do {
|
|
190675
190696
|
const detail = he.edgeTag;
|
|
190676
190697
|
if (detail) {
|
|
@@ -190694,9 +190715,9 @@ class PlanarSubdivision {
|
|
|
190694
190715
|
const faceHasTwoEdges = (he.faceSuccessor.faceSuccessor === he);
|
|
190695
190716
|
let faceIsBanana = false;
|
|
190696
190717
|
if (faceHasTwoEdges) {
|
|
190697
|
-
const c0 =
|
|
190698
|
-
const c1 =
|
|
190699
|
-
if (!
|
|
190718
|
+
const c0 = _topology_Merging__WEBPACK_IMPORTED_MODULE_6__.HalfEdgeGraphMerge.curvatureSortKey(he);
|
|
190719
|
+
const c1 = _topology_Merging__WEBPACK_IMPORTED_MODULE_6__.HalfEdgeGraphMerge.curvatureSortKey(he.faceSuccessor.edgeMate);
|
|
190720
|
+
if (!_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSameCoordinate(c0, c1)) // default tol!
|
|
190700
190721
|
faceIsBanana = true; // heuristic: we could also check end curvatures, and/or higher derivatives...
|
|
190701
190722
|
}
|
|
190702
190723
|
return faceHasTwoEdges && !faceIsBanana;
|
|
@@ -190714,7 +190735,7 @@ class PlanarSubdivision {
|
|
|
190714
190735
|
return e1;
|
|
190715
190736
|
}
|
|
190716
190737
|
static collectSignedLoopSetsInHalfEdgeGraph(graph, zeroAreaTolerance = 1.0e-10) {
|
|
190717
|
-
const q =
|
|
190738
|
+
const q = _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_9__.HalfEdgeGraphSearch.collectConnectedComponentsWithExteriorParityMasks(graph, undefined);
|
|
190718
190739
|
const result = [];
|
|
190719
190740
|
const edgeMap = new Map();
|
|
190720
190741
|
for (const faceSeeds of q) {
|
|
@@ -190729,10 +190750,10 @@ class PlanarSubdivision {
|
|
|
190729
190750
|
const e = edgeMap.get(mate);
|
|
190730
190751
|
if (e === undefined) {
|
|
190731
190752
|
// Record this as loopA,edgeA of a shared edge to be completed later from the other side of the edge
|
|
190732
|
-
const e1 = new
|
|
190753
|
+
const e1 = new _Loop__WEBPACK_IMPORTED_MODULE_8__.LoopCurveLoopCurve(loopC, curveC, undefined, undefined);
|
|
190733
190754
|
edgeMap.set(he, e1);
|
|
190734
190755
|
}
|
|
190735
|
-
else if (e instanceof
|
|
190756
|
+
else if (e instanceof _Loop__WEBPACK_IMPORTED_MODULE_8__.LoopCurveLoopCurve) {
|
|
190736
190757
|
e.setB(loopC, curveC);
|
|
190737
190758
|
edges.push(e);
|
|
190738
190759
|
edgeMap.delete(mate);
|
|
@@ -191580,27 +191601,27 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
191580
191601
|
/* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
|
|
191581
191602
|
/* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
|
|
191582
191603
|
/* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
|
|
191604
|
+
/* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
|
|
191583
191605
|
/* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
|
|
191584
191606
|
/* harmony import */ var _ChainCollectorContext__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./ChainCollectorContext */ "../../core/geometry/lib/esm/curve/ChainCollectorContext.js");
|
|
191585
191607
|
/* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
|
|
191586
191608
|
/* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
|
|
191587
191609
|
/* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
|
|
191588
191610
|
/* harmony import */ var _CurveWireMomentsXYZ__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveWireMomentsXYZ */ "../../core/geometry/lib/esm/curve/CurveWireMomentsXYZ.js");
|
|
191611
|
+
/* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
|
|
191612
|
+
/* harmony import */ var _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
|
|
191589
191613
|
/* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
|
|
191590
191614
|
/* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
|
|
191591
191615
|
/* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
|
|
191616
|
+
/* harmony import */ var _ParityRegion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
|
|
191592
191617
|
/* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
|
|
191593
191618
|
/* harmony import */ var _Query_ConsolidateAdjacentPrimitivesContext__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./Query/ConsolidateAdjacentPrimitivesContext */ "../../core/geometry/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js");
|
|
191594
191619
|
/* harmony import */ var _Query_CurveSplitContext__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Query/CurveSplitContext */ "../../core/geometry/lib/esm/curve/Query/CurveSplitContext.js");
|
|
191595
191620
|
/* harmony import */ var _Query_InOutTests__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Query/InOutTests */ "../../core/geometry/lib/esm/curve/Query/InOutTests.js");
|
|
191596
191621
|
/* harmony import */ var _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Query/PlanarSubdivision */ "../../core/geometry/lib/esm/curve/Query/PlanarSubdivision.js");
|
|
191597
191622
|
/* harmony import */ var _RegionMomentsXY__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RegionMomentsXY */ "../../core/geometry/lib/esm/curve/RegionMomentsXY.js");
|
|
191598
|
-
/* harmony import */ var _internalContexts_MultiChainCollector__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./internalContexts/MultiChainCollector */ "../../core/geometry/lib/esm/curve/internalContexts/MultiChainCollector.js");
|
|
191599
|
-
/* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
|
|
191600
191623
|
/* harmony import */ var _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RegionOpsClassificationSweeps */ "../../core/geometry/lib/esm/curve/RegionOpsClassificationSweeps.js");
|
|
191601
191624
|
/* harmony import */ var _UnionRegion__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
|
|
191602
|
-
/* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
|
|
191603
|
-
/* harmony import */ var _ParityRegion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
|
|
191604
191625
|
/*---------------------------------------------------------------------------------------------
|
|
191605
191626
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
191606
191627
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -191839,7 +191860,7 @@ class RegionOps {
|
|
|
191839
191860
|
* @param loopsB second set of loops
|
|
191840
191861
|
* @param operation indicates Union, Intersection, Parity, AMinusB, or BMinusA
|
|
191841
191862
|
* @param mergeTolerance absolute distance tolerance for merging loops
|
|
191842
|
-
* @returns a region resulting from merging input loops and the boolean operation. May contain bridge edges
|
|
191863
|
+
* @returns a region resulting from merging input loops and the boolean operation. May contain bridge edges added to connect interior loops to exterior loops.
|
|
191843
191864
|
*/
|
|
191844
191865
|
static regionBooleanXY(loopsA, loopsB, operation, mergeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
|
|
191845
191866
|
const result = _UnionRegion__WEBPACK_IMPORTED_MODULE_11__.UnionRegion.create();
|
|
@@ -191847,7 +191868,7 @@ class RegionOps {
|
|
|
191847
191868
|
context.addMembers(loopsA, loopsB);
|
|
191848
191869
|
context.annotateAndMergeCurvesInGraph(mergeTolerance);
|
|
191849
191870
|
const range = context.groupA.range().union(context.groupB.range());
|
|
191850
|
-
const areaTol = this.computeXYAreaTolerance(range);
|
|
191871
|
+
const areaTol = this.computeXYAreaTolerance(range, mergeTolerance);
|
|
191851
191872
|
context.runClassificationSweep(operation, (_graph, face, faceType, area) => {
|
|
191852
191873
|
// ignore danglers and null faces, but not 2-edge "banana" faces with nonzero area
|
|
191853
191874
|
if (face.countEdgesAroundFace() < 2)
|
|
@@ -192165,23 +192186,24 @@ class RegionOps {
|
|
|
192165
192186
|
}
|
|
192166
192187
|
/**
|
|
192167
192188
|
* Find all areas bounded by the unstructured, possibly intersecting curves.
|
|
192168
|
-
* *
|
|
192169
|
-
*
|
|
192170
|
-
* [[regionBooleanXY]]
|
|
192189
|
+
* * A common use case of this method is to assemble the bounding "exterior" loop (or loops) containing the input curves.
|
|
192190
|
+
* * This method does not add bridge edges to connect outer loops to inner loops. Each disconnected loop, regardless
|
|
192191
|
+
* of its containment, is returned as its own SignedLoops object. Pre-process with [[regionBooleanXY]] to add bridge edges so that
|
|
192192
|
+
* [[constructAllXYRegionLoops]] will return outer and inner loops in the same SignedLoops object.
|
|
192171
192193
|
* @param curvesAndRegions Any collection of curves. Each Loop/ParityRegion/UnionRegion contributes its curve primitives.
|
|
192194
|
+
* @param tolerance optional distance tolerance for coincidence
|
|
192172
192195
|
* @returns array of [[SignedLoops]], each entry of which describes the faces in a single connected component:
|
|
192173
192196
|
* * `positiveAreaLoops` contains "interior" loops, _including holes in ParityRegion input_. These loops have positive area and counterclockwise orientation.
|
|
192174
192197
|
* * `negativeAreaLoops` contains (probably just one) "exterior" loop which is ordered clockwise.
|
|
192175
192198
|
* * `slivers` contains sliver loops that have zero area, such as appear between coincident curves.
|
|
192176
192199
|
* * `edges` contains a [[LoopCurveLoopCurve]] object for each component edge, collecting both loops adjacent to the edge and a constituent curve in each.
|
|
192177
192200
|
*/
|
|
192178
|
-
static constructAllXYRegionLoops(curvesAndRegions) {
|
|
192179
|
-
const
|
|
192180
|
-
const
|
|
192181
|
-
const
|
|
192182
|
-
const
|
|
192183
|
-
const
|
|
192184
|
-
const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.assembleHalfEdgeGraph(primitivesB, intersections);
|
|
192201
|
+
static constructAllXYRegionLoops(curvesAndRegions, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
|
|
192202
|
+
const primitives = RegionOps.collectCurvePrimitives(curvesAndRegions, undefined, true, true);
|
|
192203
|
+
const range = this.curveArrayRange(primitives);
|
|
192204
|
+
const areaTol = this.computeXYAreaTolerance(range, tolerance);
|
|
192205
|
+
const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_30__.CurveCurve.allIntersectionsAmongPrimitivesXY(primitives, tolerance);
|
|
192206
|
+
const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.assembleHalfEdgeGraph(primitives, intersections, tolerance);
|
|
192185
192207
|
return _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_12__.PlanarSubdivision.collectSignedLoopSetsInHalfEdgeGraph(graph, areaTol);
|
|
192186
192208
|
}
|
|
192187
192209
|
/**
|
|
@@ -192797,7 +192819,7 @@ class RegionBooleanContext {
|
|
|
192797
192819
|
}
|
|
192798
192820
|
// const range = RegionOps.curveArrayRange(allPrimitives);
|
|
192799
192821
|
const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_15__.CurveCurve.allIntersectionsAmongPrimitivesXY(allPrimitives, mergeTolerance);
|
|
192800
|
-
const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_16__.PlanarSubdivision.assembleHalfEdgeGraph(allPrimitives, intersections);
|
|
192822
|
+
const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_16__.PlanarSubdivision.assembleHalfEdgeGraph(allPrimitives, intersections, mergeTolerance);
|
|
192801
192823
|
this.graph = graph;
|
|
192802
192824
|
this.faceAreaFunction = faceAreaFromCurvedEdgeData;
|
|
192803
192825
|
}
|
|
@@ -199896,15 +199918,20 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
199896
199918
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
199897
199919
|
/* harmony export */ "CoincidentGeometryQuery": () => (/* binding */ CoincidentGeometryQuery)
|
|
199898
199920
|
/* harmony export */ });
|
|
199899
|
-
/* harmony import */ var
|
|
199900
|
-
/* harmony import */ var
|
|
199901
|
-
/* harmony import */ var
|
|
199902
|
-
/* harmony import */ var
|
|
199903
|
-
/* harmony import */ var
|
|
199921
|
+
/* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
|
|
199922
|
+
/* harmony import */ var _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../curve/CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
|
|
199923
|
+
/* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
|
|
199924
|
+
/* harmony import */ var _AngleSweep__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
|
|
199925
|
+
/* harmony import */ var _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
|
|
199926
|
+
/* harmony import */ var _Segment1d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Segment1d */ "../../core/geometry/lib/esm/geometry3d/Segment1d.js");
|
|
199904
199927
|
/*---------------------------------------------------------------------------------------------
|
|
199905
199928
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
199906
199929
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
199907
199930
|
*--------------------------------------------------------------------------------------------*/
|
|
199931
|
+
/** @packageDocumentation
|
|
199932
|
+
* @module CartesianGeometry
|
|
199933
|
+
*/
|
|
199934
|
+
|
|
199908
199935
|
|
|
199909
199936
|
|
|
199910
199937
|
|
|
@@ -199920,10 +199947,10 @@ class CoincidentGeometryQuery {
|
|
|
199920
199947
|
get tolerance() {
|
|
199921
199948
|
return this._tolerance;
|
|
199922
199949
|
}
|
|
199923
|
-
constructor(tolerance =
|
|
199950
|
+
constructor(tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance) {
|
|
199924
199951
|
this._tolerance = tolerance;
|
|
199925
199952
|
}
|
|
199926
|
-
static create(tolerance =
|
|
199953
|
+
static create(tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallMetricDistance) {
|
|
199927
199954
|
return new CoincidentGeometryQuery(tolerance);
|
|
199928
199955
|
}
|
|
199929
199956
|
/**
|
|
@@ -199946,12 +199973,12 @@ class CoincidentGeometryQuery {
|
|
|
199946
199973
|
*
|
|
199947
199974
|
*/
|
|
199948
199975
|
projectPointToSegmentXY(spacePoint, pointA, pointB) {
|
|
199949
|
-
this._vectorU =
|
|
199950
|
-
this._vectorV =
|
|
199976
|
+
this._vectorU = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createStartEnd(pointA, pointB, this._vectorU);
|
|
199977
|
+
this._vectorV = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createStartEnd(pointA, spacePoint, this._vectorV);
|
|
199951
199978
|
const uDotU = this._vectorU.dotProductXY(this._vectorU);
|
|
199952
199979
|
const uDotV = this._vectorU.dotProductXY(this._vectorV);
|
|
199953
|
-
const fraction =
|
|
199954
|
-
return
|
|
199980
|
+
const fraction = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.safeDivideFraction(uDotV, uDotU, 0.0);
|
|
199981
|
+
return _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveFractionPoint(undefined, fraction, pointA.interpolate(fraction, pointB));
|
|
199955
199982
|
}
|
|
199956
199983
|
/**
|
|
199957
199984
|
* * project `pointA0` and `pointA1` onto the segment with `pointB0` and `pointB1`
|
|
@@ -199962,84 +199989,82 @@ class CoincidentGeometryQuery {
|
|
|
199962
199989
|
* @param pointB1 end point of segment B
|
|
199963
199990
|
*/
|
|
199964
199991
|
coincidentSegmentRangeXY(pointA0, pointA1, pointB0, pointB1, restrictToBounds = true) {
|
|
199965
|
-
const
|
|
199966
|
-
if (pointA0.distanceXY(
|
|
199992
|
+
const detailA0OnB = this.projectPointToSegmentXY(pointA0, pointB0, pointB1);
|
|
199993
|
+
if (pointA0.distanceXY(detailA0OnB.point) > this._tolerance)
|
|
199967
199994
|
return undefined;
|
|
199968
199995
|
const detailA1OnB = this.projectPointToSegmentXY(pointA1, pointB0, pointB1);
|
|
199969
199996
|
if (pointA1.distanceXY(detailA1OnB.point) > this._tolerance)
|
|
199970
199997
|
return undefined;
|
|
199971
|
-
const
|
|
199972
|
-
if (pointB0.distanceXY(
|
|
199998
|
+
const detailB0OnA = this.projectPointToSegmentXY(pointB0, pointA0, pointA1);
|
|
199999
|
+
if (pointB0.distanceXY(detailB0OnA.point) > this._tolerance)
|
|
199973
200000
|
return undefined;
|
|
199974
200001
|
const detailB1OnA = this.projectPointToSegmentXY(pointB1, pointA0, pointA1);
|
|
199975
200002
|
if (pointB1.distanceXY(detailB1OnA.point) > this._tolerance)
|
|
199976
200003
|
return undefined;
|
|
199977
|
-
|
|
199978
|
-
|
|
199979
|
-
|
|
199980
|
-
|
|
200004
|
+
detailA0OnB.fraction1 = detailA1OnB.fraction;
|
|
200005
|
+
detailA0OnB.point1 = detailA1OnB.point; // capture -- detailA1OnB is not reused.
|
|
200006
|
+
detailB0OnA.fraction1 = detailB1OnA.fraction;
|
|
200007
|
+
detailB0OnA.point1 = detailB1OnA.point;
|
|
199981
200008
|
if (!restrictToBounds)
|
|
199982
|
-
return
|
|
199983
|
-
const segment =
|
|
200009
|
+
return _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair.createCapture(detailB0OnA, detailA0OnB);
|
|
200010
|
+
const segment = _Segment1d__WEBPACK_IMPORTED_MODULE_4__.Segment1d.create(detailB0OnA.fraction, detailB0OnA.fraction1);
|
|
199984
200011
|
if (segment.clampDirectedTo01()) {
|
|
199985
|
-
segment.reverseIfNeededForDeltaSign(1.0);
|
|
199986
200012
|
const f0 = segment.x0;
|
|
199987
200013
|
const f1 = segment.x1;
|
|
199988
|
-
const h0 =
|
|
199989
|
-
const h1 =
|
|
200014
|
+
const h0 = detailB0OnA.inverseInterpolateFraction(f0);
|
|
200015
|
+
const h1 = detailB0OnA.inverseInterpolateFraction(f1);
|
|
199990
200016
|
// recompute fractions and points..
|
|
199991
|
-
CoincidentGeometryQuery.assignDetailInterpolatedFractionsAndPoints(
|
|
199992
|
-
CoincidentGeometryQuery.assignDetailInterpolatedFractionsAndPoints(
|
|
199993
|
-
return
|
|
200017
|
+
CoincidentGeometryQuery.assignDetailInterpolatedFractionsAndPoints(detailB0OnA, f0, f1, pointA0, pointA1, f0 > f1);
|
|
200018
|
+
CoincidentGeometryQuery.assignDetailInterpolatedFractionsAndPoints(detailA0OnB, h0, h1, pointB0, pointB1, h0 > h1);
|
|
200019
|
+
return _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair.createCapture(detailB0OnA, detailA0OnB);
|
|
199994
200020
|
}
|
|
199995
200021
|
else {
|
|
199996
200022
|
if (segment.signedDelta() < 0.0) {
|
|
199997
|
-
if (
|
|
199998
|
-
|
|
199999
|
-
|
|
200000
|
-
return
|
|
200023
|
+
if (detailB0OnA.point.isAlmostEqual(pointA0, this.tolerance)) {
|
|
200024
|
+
detailB0OnA.collapseToStart();
|
|
200025
|
+
detailA0OnB.collapseToStart();
|
|
200026
|
+
return _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair.createCapture(detailB0OnA, detailA0OnB);
|
|
200001
200027
|
}
|
|
200002
|
-
if (
|
|
200003
|
-
|
|
200004
|
-
|
|
200005
|
-
return
|
|
200028
|
+
if (detailB0OnA.point1.isAlmostEqual(pointA1, this.tolerance)) {
|
|
200029
|
+
detailB0OnA.collapseToEnd();
|
|
200030
|
+
detailA0OnB.collapseToEnd();
|
|
200031
|
+
return _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair.createCapture(detailB0OnA, detailA0OnB);
|
|
200006
200032
|
}
|
|
200007
200033
|
}
|
|
200008
200034
|
else {
|
|
200009
|
-
if (
|
|
200010
|
-
|
|
200011
|
-
|
|
200012
|
-
return
|
|
200035
|
+
if (detailB0OnA.point.isAlmostEqual(pointA1, this.tolerance)) {
|
|
200036
|
+
detailB0OnA.collapseToStart();
|
|
200037
|
+
detailA0OnB.collapseToEnd();
|
|
200038
|
+
return _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair.createCapture(detailB0OnA, detailA0OnB);
|
|
200013
200039
|
}
|
|
200014
|
-
if (
|
|
200015
|
-
|
|
200016
|
-
|
|
200017
|
-
return
|
|
200040
|
+
if (detailB0OnA.point1.isAlmostEqual(pointA0, this.tolerance)) {
|
|
200041
|
+
detailB0OnA.collapseToEnd();
|
|
200042
|
+
detailA0OnB.collapseToStart();
|
|
200043
|
+
return _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair.createCapture(detailB0OnA, detailA0OnB);
|
|
200018
200044
|
}
|
|
200019
200045
|
}
|
|
200020
200046
|
}
|
|
200021
200047
|
return undefined;
|
|
200022
200048
|
}
|
|
200023
200049
|
/**
|
|
200024
|
-
* Create a CurveLocationDetailPair
|
|
200050
|
+
* Create a CurveLocationDetailPair for a coincident interval of two overlapping curves
|
|
200025
200051
|
* @param cpA curveA
|
|
200026
|
-
* @param cpB
|
|
200027
|
-
* @param fractionsOnA
|
|
200028
|
-
* @param fractionB0
|
|
200029
|
-
* @param fractionB1 end fraction of
|
|
200052
|
+
* @param cpB curveB
|
|
200053
|
+
* @param fractionsOnA coincident interval of curveB in fraction space of curveA
|
|
200054
|
+
* @param fractionB0 curveB start in fraction space of curveA
|
|
200055
|
+
* @param fractionB1 curveB end in fraction space of curveA
|
|
200056
|
+
* @param reverse whether curveB and curveA have opposite direction
|
|
200030
200057
|
*/
|
|
200031
200058
|
createDetailPair(cpA, cpB, fractionsOnA, fractionB0, fractionB1, reverse) {
|
|
200032
200059
|
const deltaB = fractionB1 - fractionB0;
|
|
200033
|
-
const g0 =
|
|
200034
|
-
const g1 =
|
|
200060
|
+
const g0 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(fractionsOnA.x0 - fractionB0, deltaB);
|
|
200061
|
+
const g1 = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.conditionalDivideFraction(fractionsOnA.x1 - fractionB0, deltaB);
|
|
200035
200062
|
if (g0 !== undefined && g1 !== undefined) {
|
|
200036
|
-
const detailA =
|
|
200037
|
-
const detailB =
|
|
200038
|
-
if (reverse)
|
|
200063
|
+
const detailA = _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveEvaluatedFractionFraction(cpA, fractionsOnA.x0, fractionsOnA.x1);
|
|
200064
|
+
const detailB = _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveEvaluatedFractionFraction(cpB, g0, g1);
|
|
200065
|
+
if (reverse)
|
|
200039
200066
|
detailA.swapFractionsAndPoints();
|
|
200040
|
-
|
|
200041
|
-
}
|
|
200042
|
-
return _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveLocationDetailPair.createCapture(detailA, detailB);
|
|
200067
|
+
return _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair.createCapture(detailA, detailB);
|
|
200043
200068
|
}
|
|
200044
200069
|
return undefined;
|
|
200045
200070
|
}
|
|
@@ -200056,43 +200081,67 @@ class CoincidentGeometryQuery {
|
|
|
200056
200081
|
* @param arcA
|
|
200057
200082
|
* @param arcB
|
|
200058
200083
|
* @param _restrictToBounds
|
|
200059
|
-
* @return 0, 1, or 2 overlap intervals
|
|
200084
|
+
* @return 0, 1, or 2 overlap points/intervals
|
|
200060
200085
|
*/
|
|
200061
200086
|
coincidentArcIntersectionXY(arcA, arcB, _restrictToBounds = true) {
|
|
200062
200087
|
let result;
|
|
200063
|
-
if (arcA.center.isAlmostEqual(arcB.center)) {
|
|
200088
|
+
if (arcA.center.isAlmostEqual(arcB.center, this.tolerance)) {
|
|
200064
200089
|
const matrixBToA = arcA.matrixRef.multiplyMatrixInverseMatrix(arcB.matrixRef);
|
|
200065
200090
|
if (matrixBToA) {
|
|
200066
200091
|
const ux = matrixBToA.at(0, 0);
|
|
200067
200092
|
const uy = matrixBToA.at(1, 0);
|
|
200068
200093
|
const vx = matrixBToA.at(0, 1);
|
|
200069
200094
|
const vy = matrixBToA.at(1, 1);
|
|
200070
|
-
const ru =
|
|
200071
|
-
const rv =
|
|
200072
|
-
const dot =
|
|
200073
|
-
const cross =
|
|
200074
|
-
if (
|
|
200075
|
-
&&
|
|
200076
|
-
&&
|
|
200077
|
-
const alphaB0Radians = Math.atan2(uy, ux); // angular position of arcB 0 point in
|
|
200078
|
-
const sweepDirection = cross > 0 ? 1.0 : -1.0; // 1 if arcB
|
|
200079
|
-
const betaStartRadians = alphaB0Radians + sweepDirection * arcB.sweep.startRadians;
|
|
200080
|
-
const betaEndRadians = alphaB0Radians + sweepDirection * arcB.sweep.endRadians;
|
|
200095
|
+
const ru = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.hypotenuseXY(ux, uy);
|
|
200096
|
+
const rv = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.hypotenuseXY(vx, vy);
|
|
200097
|
+
const dot = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.dotProductXYXY(ux, uy, vx, vy);
|
|
200098
|
+
const cross = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.crossProductXYXY(ux, uy, vx, vy);
|
|
200099
|
+
if (_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(ru, 1.0)
|
|
200100
|
+
&& _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(rv, 1.0)
|
|
200101
|
+
&& _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(0, dot)) {
|
|
200102
|
+
const alphaB0Radians = Math.atan2(uy, ux); // angular position of arcB 0 point in arcA sweep
|
|
200103
|
+
const sweepDirection = cross > 0 ? 1.0 : -1.0; // 1 if arcB parameter space sweeps in same direction as arcA, -1 if opposite
|
|
200104
|
+
const betaStartRadians = alphaB0Radians + sweepDirection * arcB.sweep.startRadians; // arcB start in arcA parameter space
|
|
200105
|
+
const betaEndRadians = alphaB0Radians + sweepDirection * arcB.sweep.endRadians; // arcB end in arcA parameter space
|
|
200081
200106
|
const fractionSpacesReversed = (sweepDirection * arcA.sweep.sweepRadians * arcB.sweep.sweepRadians) < 0;
|
|
200082
|
-
const sweepB =
|
|
200107
|
+
const sweepB = _AngleSweep__WEBPACK_IMPORTED_MODULE_5__.AngleSweep.createStartEndRadians(betaStartRadians, betaEndRadians);
|
|
200083
200108
|
const sweepA = arcA.sweep;
|
|
200084
200109
|
const fractionPeriodA = sweepA.fractionPeriod();
|
|
200085
|
-
const fractionB0 = sweepA.radiansToPositivePeriodicFraction(sweepB.startRadians);
|
|
200086
|
-
|
|
200087
|
-
const
|
|
200088
|
-
const
|
|
200089
|
-
|
|
200090
|
-
|
|
200091
|
-
|
|
200092
|
-
|
|
200093
|
-
|
|
200094
|
-
|
|
200095
|
-
|
|
200110
|
+
const fractionB0 = sweepA.radiansToPositivePeriodicFraction(sweepB.startRadians); // arcB start in arcA fraction space
|
|
200111
|
+
(0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(fractionB0 >= 0.0);
|
|
200112
|
+
const fractionSweep = sweepB.sweepRadians / sweepA.sweepRadians; // arcB sweep in arcA fraction space
|
|
200113
|
+
const fractionB1 = fractionB0 + fractionSweep; // arcB end in arcA fraction space
|
|
200114
|
+
const fractionSweepB = _Segment1d__WEBPACK_IMPORTED_MODULE_4__.Segment1d.create(fractionB0, fractionB1);
|
|
200115
|
+
/** lambda to add a coincident interval or isolated intersection, given inputs in arcA fraction space
|
|
200116
|
+
* @param arcBInArcAFractionSpace span of arcB in arcA fraction space. On return, clamped to [0,1] if nontrivial.
|
|
200117
|
+
* @param testStartOfArcA if no nontrivial coincident interval was found, look for an isolated intersection at the start (true) or end (false) of arcA
|
|
200118
|
+
* @returns whether a detail pair was appended to result
|
|
200119
|
+
*/
|
|
200120
|
+
const appendCoincidentIntersection = (arcBInArcAFractionSpace, testStartOfArcA) => {
|
|
200121
|
+
const size = result ? result.length : 0;
|
|
200122
|
+
const arcBStart = arcBInArcAFractionSpace.x0;
|
|
200123
|
+
const arcBEnd = arcBInArcAFractionSpace.x1;
|
|
200124
|
+
if (arcBInArcAFractionSpace.clampDirectedTo01() && !_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isSmallRelative(arcBInArcAFractionSpace.absoluteDelta())) {
|
|
200125
|
+
result = this.appendDetailPair(result, this.createDetailPair(arcA, arcB, arcBInArcAFractionSpace, arcBStart, arcBEnd, fractionSpacesReversed));
|
|
200126
|
+
}
|
|
200127
|
+
else { // test isolated intersection
|
|
200128
|
+
const testStartOfArcB = fractionSpacesReversed ? testStartOfArcA : !testStartOfArcA;
|
|
200129
|
+
const arcAPt = this._point0 = testStartOfArcA ? arcA.startPoint(this._point0) : arcA.endPoint(this._point0);
|
|
200130
|
+
const arcBPt = this._point1 = testStartOfArcB ? arcB.startPoint(this._point1) : arcB.endPoint(this._point1);
|
|
200131
|
+
if (arcAPt.isAlmostEqual(arcBPt, this.tolerance)) {
|
|
200132
|
+
const detailA = _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveFractionPoint(arcA, testStartOfArcA ? 0 : 1, arcAPt);
|
|
200133
|
+
const detailB = _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveFractionPoint(arcB, testStartOfArcB ? 0 : 1, arcBPt);
|
|
200134
|
+
result = this.appendDetailPair(result, _curve_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair.createCapture(detailA, detailB));
|
|
200135
|
+
}
|
|
200136
|
+
}
|
|
200137
|
+
return result !== undefined && result.length > size;
|
|
200138
|
+
};
|
|
200139
|
+
appendCoincidentIntersection(fractionSweepB, false); // compute overlap in strict interior, or at end of arcA
|
|
200140
|
+
// check overlap at start of arcA with a periodic shift of fractionSweepB
|
|
200141
|
+
if (fractionB1 >= fractionPeriodA)
|
|
200142
|
+
appendCoincidentIntersection(_Segment1d__WEBPACK_IMPORTED_MODULE_4__.Segment1d.create(fractionB0 - fractionPeriodA, fractionB1 - fractionPeriodA), true);
|
|
200143
|
+
else if (fractionB0 === 0.0)
|
|
200144
|
+
appendCoincidentIntersection(_Segment1d__WEBPACK_IMPORTED_MODULE_4__.Segment1d.create(fractionB0 + fractionPeriodA, fractionB1 + fractionPeriodA), true);
|
|
200096
200145
|
}
|
|
200097
200146
|
}
|
|
200098
200147
|
}
|
|
@@ -206978,7 +207027,7 @@ class Matrix3d {
|
|
|
206978
207027
|
* almost independent and matrix is invertible).
|
|
206979
207028
|
*/
|
|
206980
207029
|
conditionNumber() {
|
|
206981
|
-
const determinant = this.determinant();
|
|
207030
|
+
const determinant = Math.abs(this.determinant());
|
|
206982
207031
|
const columnMagnitudeSum = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(this.coffs[0], this.coffs[3], this.coffs[6])
|
|
206983
207032
|
+ _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(this.coffs[1], this.coffs[4], this.coffs[7])
|
|
206984
207033
|
+ _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(this.coffs[2], this.coffs[5], this.coffs[8]);
|
|
@@ -251940,6 +251989,7 @@ class HalfEdgeGraphOps {
|
|
|
251940
251989
|
}
|
|
251941
251990
|
}
|
|
251942
251991
|
/**
|
|
251992
|
+
* Note: this class uses hardcoded micrometer coordinate/cluster tolerance throughout.
|
|
251943
251993
|
* @internal
|
|
251944
251994
|
*/
|
|
251945
251995
|
class HalfEdgeGraphMerge {
|
|
@@ -274591,7 +274641,7 @@ class TestContext {
|
|
|
274591
274641
|
this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
|
|
274592
274642
|
const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
|
|
274593
274643
|
await core_frontend_1.NoRenderApp.startup({
|
|
274594
|
-
applicationVersion: "4.0.0-dev.
|
|
274644
|
+
applicationVersion: "4.0.0-dev.101",
|
|
274595
274645
|
applicationId: this.settings.gprid,
|
|
274596
274646
|
authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
|
|
274597
274647
|
hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
|
|
@@ -282002,13 +282052,13 @@ class FavoritePropertiesManager {
|
|
|
282002
282052
|
});
|
|
282003
282053
|
if (missingClasses.size === 0)
|
|
282004
282054
|
return baseClasses;
|
|
282005
|
-
const query = `
|
|
282006
|
-
SELECT (derivedSchema.Name || ':' || derivedClass.Name) AS "ClassFullName", (baseSchema.Name || ':' || baseClass.Name) AS "BaseClassFullName"
|
|
282007
|
-
FROM ECDbMeta.ClassHasAllBaseClasses baseClassRels
|
|
282008
|
-
INNER JOIN ECDbMeta.ECClassDef derivedClass ON derivedClass.ECInstanceId = baseClassRels.SourceECInstanceId
|
|
282009
|
-
INNER JOIN ECDbMeta.ECSchemaDef derivedSchema ON derivedSchema.ECInstanceId = derivedClass.Schema.Id
|
|
282010
|
-
INNER JOIN ECDbMeta.ECClassDef baseClass ON baseClass.ECInstanceId = baseClassRels.TargetECInstanceId
|
|
282011
|
-
INNER JOIN ECDbMeta.ECSchemaDef baseSchema ON baseSchema.ECInstanceId = baseClass.Schema.Id
|
|
282055
|
+
const query = `
|
|
282056
|
+
SELECT (derivedSchema.Name || ':' || derivedClass.Name) AS "ClassFullName", (baseSchema.Name || ':' || baseClass.Name) AS "BaseClassFullName"
|
|
282057
|
+
FROM ECDbMeta.ClassHasAllBaseClasses baseClassRels
|
|
282058
|
+
INNER JOIN ECDbMeta.ECClassDef derivedClass ON derivedClass.ECInstanceId = baseClassRels.SourceECInstanceId
|
|
282059
|
+
INNER JOIN ECDbMeta.ECSchemaDef derivedSchema ON derivedSchema.ECInstanceId = derivedClass.Schema.Id
|
|
282060
|
+
INNER JOIN ECDbMeta.ECClassDef baseClass ON baseClass.ECInstanceId = baseClassRels.TargetECInstanceId
|
|
282061
|
+
INNER JOIN ECDbMeta.ECSchemaDef baseSchema ON baseSchema.ECInstanceId = baseClass.Schema.Id
|
|
282012
282062
|
WHERE (derivedSchema.Name || ':' || derivedClass.Name) IN (${[...missingClasses].map((className) => `'${className}'`).join(",")})`;
|
|
282013
282063
|
const reader = imodel.createQueryReader(query, undefined, { rowFormat: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryRowFormat.UseJsPropertyNames });
|
|
282014
282064
|
while (await reader.step()) {
|
|
@@ -293966,7 +294016,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
|
|
|
293966
294016
|
/***/ ((module) => {
|
|
293967
294017
|
|
|
293968
294018
|
"use strict";
|
|
293969
|
-
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.0.0-dev.
|
|
294019
|
+
module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.0.0-dev.101","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","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","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/primitives,**/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-eslintrc -c \\"./node_modules/@itwin/eslint-plugin/dist/configs/extension-exports-config.js\\" \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.0.0-dev.101","@itwin/core-bentley":"workspace:^4.0.0-dev.101","@itwin/core-common":"workspace:^4.0.0-dev.101","@itwin/core-geometry":"workspace:^4.0.0-dev.101","@itwin/core-orbitgt":"workspace:^4.0.0-dev.101","@itwin/core-quantity":"workspace:^4.0.0-dev.101"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"^4.0.0-dev.33","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"^18.11.5","@types/sinon":"^9.0.0","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.36.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^9.0.2","source-map-loader":"^4.0.0","typescript":"~5.0.2","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/object-storage-azure":"^1.5.0","@itwin/cloud-agnostic-core":"^1.5.0","@itwin/object-storage-core":"^1.5.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0","reflect-metadata":"0.1.13"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"},"eslintConfig":{"plugins":["@itwin"],"extends":"plugin:@itwin/itwinjs-recommended","rules":{"@itwin/no-internal-barrel-imports":["error",{"required-barrel-modules":["./src/tile/internal.ts"]}],"@itwin/public-extension-exports":["error",{"releaseTags":["public","preview"],"outputApiFile":false}]},"overrides":[{"files":["*.test.ts","*.test.tsx","**/test/**/*.ts"],"rules":{"@itwin/no-internal-barrel-imports":"off"}}]}}');
|
|
293970
294020
|
|
|
293971
294021
|
/***/ }),
|
|
293972
294022
|
|