@itwin/ecschema-rpcinterface-tests 5.1.0-dev.10 → 5.1.0-dev.12

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.
@@ -64635,34 +64635,44 @@ class ECClass extends _SchemaItem__WEBPACK_IMPORTED_MODULE_9__.SchemaItem {
64635
64635
  * @param name The name of the property to retrieve.
64636
64636
  * @param excludeInherited If true, excludes inherited properties from the results. Defaults to false.
64637
64637
  */
64638
- async getProperty(name, excludeInherited = false) {
64638
+ async getProperty(name, excludeInherited) {
64639
+ const upperKey = name.toUpperCase();
64640
+ let property;
64639
64641
  if (this._properties) {
64640
- const upperKey = name.toUpperCase();
64641
- const property = this._properties.get(upperKey);
64642
- if (property)
64642
+ property = this._properties.get(upperKey);
64643
+ if (property) {
64643
64644
  return property;
64645
+ }
64644
64646
  }
64645
64647
  if (excludeInherited) {
64646
64648
  return undefined;
64647
64649
  }
64648
- return this.getInheritedProperty(name);
64650
+ if (!this._mergedPropertyCache) {
64651
+ this._mergedPropertyCache = await this.buildPropertyCache();
64652
+ }
64653
+ return this._mergedPropertyCache.get(upperKey);
64649
64654
  }
64650
64655
  /**
64651
64656
  * Searches, case-insensitive, for a local ECProperty with the name provided.
64652
64657
  * @param name The name of the property to retrieve.
64653
64658
  * @param excludeInherited If true, excludes inherited properties from the results. Defaults to false.
64654
64659
  */
64655
- getPropertySync(name, excludeInherited = false) {
64660
+ getPropertySync(name, excludeInherited) {
64661
+ const upperKey = name.toUpperCase();
64662
+ let property;
64656
64663
  if (this._properties) {
64657
- const upperKey = name.toUpperCase();
64658
- const property = this._properties.get(upperKey);
64659
- if (property)
64664
+ property = this._properties.get(upperKey);
64665
+ if (property) {
64660
64666
  return property;
64667
+ }
64661
64668
  }
64662
64669
  if (excludeInherited) {
64663
64670
  return undefined;
64664
64671
  }
64665
- return this.getInheritedPropertySync(name);
64672
+ if (!this._mergedPropertyCache) {
64673
+ this._mergedPropertyCache = this.buildPropertyCacheSync();
64674
+ }
64675
+ return this._mergedPropertyCache.get(upperKey);
64666
64676
  }
64667
64677
  /**
64668
64678
  * Searches the base class, if one exists, for the property with the name provided.
@@ -64994,69 +65004,51 @@ class ECClass extends _SchemaItem__WEBPACK_IMPORTED_MODULE_9__.SchemaItem {
64994
65004
  }
64995
65005
  /**
64996
65006
  *
64997
- * @param target
64998
- * @param existingValues
64999
- * @param propertiesToMerge
65000
- * @param overwriteExisting
65007
+ * @param cache
65008
+ * @returns
65001
65009
  *
65002
65010
  * @internal
65003
65011
  */
65004
- static mergeProperties(target, existingValues, propertiesToMerge, overwriteExisting) {
65005
- for (const property of propertiesToMerge) {
65006
- const upperCaseName = property.name.toUpperCase();
65007
- const existing = existingValues.get(upperCaseName);
65008
- if (existing !== undefined) {
65009
- if (overwriteExisting) {
65010
- target[existing] = property;
65012
+ async buildPropertyCache() {
65013
+ const cache = new Map();
65014
+ const baseClass = await this.baseClass;
65015
+ if (baseClass) {
65016
+ for (const property of await baseClass.getProperties()) {
65017
+ if (!cache.has(property.name.toUpperCase())) {
65018
+ cache.set(property.name.toUpperCase(), property);
65011
65019
  }
65012
65020
  }
65013
- else {
65014
- existingValues.set(upperCaseName, target.length);
65015
- target.push(property);
65016
- }
65017
- }
65018
- }
65019
- /**
65020
- *
65021
- * @param result
65022
- * @param existingValues
65023
- * @returns
65024
- *
65025
- * @internal
65026
- */
65027
- async buildPropertyCache(result, existingValues) {
65028
- if (!existingValues) {
65029
- existingValues = new Map();
65030
65021
  }
65031
- if (this.baseClass) {
65032
- const baseClass = await this.baseClass;
65033
- if (baseClass) {
65034
- ECClass.mergeProperties(result, existingValues, await baseClass.getProperties(), false);
65035
- }
65022
+ if (this._properties) {
65023
+ this._properties.forEach(property => {
65024
+ cache.set(property.name.toUpperCase(), property);
65025
+ });
65036
65026
  }
65037
- if (!this._properties)
65038
- return;
65039
- ECClass.mergeProperties(result, existingValues, [...this._properties.values()], true);
65027
+ return cache;
65040
65028
  }
65041
65029
  /**
65042
65030
  *
65043
- * @param result
65044
- * @param existingValues
65031
+ * @param cache
65045
65032
  * @returns
65046
65033
  *
65047
65034
  * @internal
65048
65035
  */
65049
- buildPropertyCacheSync(result, existingValues) {
65050
- if (!existingValues) {
65051
- existingValues = new Map();
65052
- }
65036
+ buildPropertyCacheSync() {
65037
+ const cache = new Map();
65053
65038
  const baseClass = this.getBaseClassSync();
65054
65039
  if (baseClass) {
65055
- ECClass.mergeProperties(result, existingValues, baseClass.getPropertiesSync(), false);
65040
+ for (const property of baseClass.getPropertiesSync()) {
65041
+ if (!cache.has(property.name.toUpperCase())) {
65042
+ cache.set(property.name.toUpperCase(), property);
65043
+ }
65044
+ }
65056
65045
  }
65057
- if (!this._properties)
65058
- return;
65059
- ECClass.mergeProperties(result, existingValues, [...this._properties.values()], true);
65046
+ if (this._properties) {
65047
+ this._properties.forEach(property => {
65048
+ cache.set(property.name.toUpperCase(), property);
65049
+ });
65050
+ }
65051
+ return cache;
65060
65052
  }
65061
65053
  /**
65062
65054
  * Clears all caches on this object. This is called implicitly for this class,
@@ -65077,10 +65069,9 @@ class ECClass extends _SchemaItem__WEBPACK_IMPORTED_MODULE_9__.SchemaItem {
65077
65069
  return this._properties && this._properties.size > 0 ? this._properties.values() : [];
65078
65070
  }
65079
65071
  if (!this._mergedPropertyCache) {
65080
- this._mergedPropertyCache = [];
65081
- this.buildPropertyCacheSync(this._mergedPropertyCache, undefined);
65072
+ this._mergedPropertyCache = this.buildPropertyCacheSync();
65082
65073
  }
65083
- return this._mergedPropertyCache;
65074
+ return this._mergedPropertyCache.values();
65084
65075
  }
65085
65076
  /**
65086
65077
  * Quick way to check whether this class has any local properties without having to use the iterable
@@ -65701,44 +65692,64 @@ class EntityClass extends _Class__WEBPACK_IMPORTED_MODULE_4__.ECClass {
65701
65692
  }
65702
65693
  /**
65703
65694
  *
65704
- * @param result
65705
- * @param existingValues
65695
+ * @param cache
65696
+ * @returns
65697
+ *
65706
65698
  * @internal
65707
65699
  */
65708
- async buildPropertyCache(result, existingValues) {
65709
- if (!existingValues) {
65710
- existingValues = new Map();
65711
- }
65700
+ async buildPropertyCache() {
65701
+ const cache = new Map();
65712
65702
  const baseClass = await this.baseClass;
65713
65703
  if (baseClass) {
65714
- _Class__WEBPACK_IMPORTED_MODULE_4__.ECClass.mergeProperties(result, existingValues, await baseClass.getProperties(), false);
65704
+ for (const property of await baseClass.getProperties()) {
65705
+ if (!cache.has(property.name.toUpperCase()))
65706
+ cache.set(property.name.toUpperCase(), property);
65707
+ }
65715
65708
  }
65716
65709
  for (const mixin of this.mixins) {
65717
- const resolvedMixin = await mixin;
65718
- _Class__WEBPACK_IMPORTED_MODULE_4__.ECClass.mergeProperties(result, existingValues, await resolvedMixin.getProperties(), false);
65710
+ const mixinObj = await mixin;
65711
+ const mixinProps = mixinObj.getPropertiesSync();
65712
+ for (const property of mixinProps) {
65713
+ if (!cache.has(property.name.toUpperCase()))
65714
+ cache.set(property.name.toUpperCase(), property);
65715
+ }
65716
+ }
65717
+ const localProps = await this.getProperties(true);
65718
+ if (localProps) {
65719
+ for (const property of localProps) {
65720
+ cache.set(property.name.toUpperCase(), property);
65721
+ }
65719
65722
  }
65720
- const localProps = await this.getProperties();
65721
- _Class__WEBPACK_IMPORTED_MODULE_4__.ECClass.mergeProperties(result, existingValues, localProps, true);
65723
+ return cache;
65722
65724
  }
65723
65725
  /**
65724
65726
  *
65725
- * @param result
65726
- * @param existingValues
65727
+ * @param cache
65727
65728
  * @internal
65728
65729
  */
65729
- buildPropertyCacheSync(result, existingValues) {
65730
- if (!existingValues) {
65731
- existingValues = new Map();
65732
- }
65730
+ buildPropertyCacheSync() {
65731
+ const cache = new Map();
65733
65732
  const baseClass = this.getBaseClassSync();
65734
65733
  if (baseClass) {
65735
- _Class__WEBPACK_IMPORTED_MODULE_4__.ECClass.mergeProperties(result, existingValues, baseClass.getPropertiesSync(), false);
65734
+ Array.from(baseClass.getPropertiesSync()).forEach((property) => {
65735
+ if (!cache.has(property.name.toUpperCase()))
65736
+ cache.set(property.name.toUpperCase(), property);
65737
+ });
65736
65738
  }
65737
65739
  for (const mixin of this.getMixinsSync()) {
65738
- _Class__WEBPACK_IMPORTED_MODULE_4__.ECClass.mergeProperties(result, existingValues, mixin.getPropertiesSync(), false);
65740
+ const mixinProps = mixin.getPropertiesSync();
65741
+ for (const property of mixinProps) {
65742
+ if (!cache.has(property.name.toUpperCase()))
65743
+ cache.set(property.name.toUpperCase(), property);
65744
+ }
65739
65745
  }
65740
65746
  const localProps = this.getPropertiesSync(true);
65741
- _Class__WEBPACK_IMPORTED_MODULE_4__.ECClass.mergeProperties(result, existingValues, localProps, true);
65747
+ if (localProps) {
65748
+ Array.from(localProps).forEach(property => {
65749
+ cache.set(property.name.toUpperCase(), property);
65750
+ });
65751
+ }
65752
+ return cache;
65742
65753
  }
65743
65754
  /**
65744
65755
  *
@@ -89385,8 +89396,18 @@ class ViewAttachments {
89385
89396
  get isEmpty() {
89386
89397
  return 0 === this._attachments.length;
89387
89398
  }
89388
- get areAllTileTreesLoaded() {
89389
- return this._attachments.every((x) => x.areAllTileTreesLoaded);
89399
+ areAllTileTreesLoaded(displayedExtents) {
89400
+ return this._attachments.every((x) => {
89401
+ const placement = _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.Placement2d.fromJSON(x.viewAttachmentProps.placement);
89402
+ const attachmentRange = placement.calculateRange();
89403
+ if (!attachmentRange.intersectsRangeXY(displayedExtents))
89404
+ return true;
89405
+ return x.areAllTileTreesLoaded;
89406
+ });
89407
+ }
89408
+ /** Strictly for testing purposes */
89409
+ areAllAttachmentsLoaded() {
89410
+ return this._attachments.every((attachment) => attachment.areAllTileTreesLoaded);
89390
89411
  }
89391
89412
  discloseTileTrees(trees) {
89392
89413
  for (const attachment of this._attachments)
@@ -89565,7 +89586,19 @@ class SheetViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_12__.ViewState2
89565
89586
  this._attachments = (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.dispose)(this._attachments);
89566
89587
  }
89567
89588
  get areAllTileTreesLoaded() {
89568
- return super.areAllTileTreesLoaded && (!this._attachments || this._attachments.areAllTileTreesLoaded);
89589
+ let displayedExtents = this._viewedExtents;
89590
+ const frustum = this.calculateFrustum();
89591
+ if (frustum) {
89592
+ displayedExtents = frustum.toRange();
89593
+ }
89594
+ return super.areAllTileTreesLoaded && (!this._attachments || this._attachments.areAllTileTreesLoaded(displayedExtents));
89595
+ }
89596
+ /** @internal Strictly for testing */
89597
+ areAllAttachmentsLoaded() {
89598
+ if (this._attachments) {
89599
+ return this._attachments.areAllAttachmentsLoaded();
89600
+ }
89601
+ return true;
89569
89602
  }
89570
89603
  /** Create a sheet border decoration graphic. */
89571
89604
  createBorder(width, height, context) {
@@ -184930,7 +184963,8 @@ class BSpline2dNd extends _curve_GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geom
184930
184963
  knots;
184931
184964
  /** flat array of coordinate data, blocked by poleDimension and row */
184932
184965
  coffs;
184933
- /** Number of components per pole.
184966
+ /**
184967
+ * Number of components per pole.
184934
184968
  * * 3 for conventional xyz surface
184935
184969
  * * 4 for weighted (wx, wy, wz, w) surface.
184936
184970
  */
@@ -204061,7 +204095,7 @@ __webpack_require__.r(__webpack_exports__);
204061
204095
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
204062
204096
  /* harmony import */ var _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry4d/MomentData */ "../../core/geometry/lib/esm/geometry4d/MomentData.js");
204063
204097
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
204064
- /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
204098
+ /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
204065
204099
  /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
204066
204100
  /*---------------------------------------------------------------------------------------------
204067
204101
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -204138,49 +204172,31 @@ class RegionMomentsXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
204138
204172
  this._activeMomentData = undefined;
204139
204173
  return momentData;
204140
204174
  }
204141
- /** Accumulate integrals from origin to the components of the parity region. */
204142
- handleParityRegion(region) {
204143
- const allChildMoments = [];
204144
- let maxAbsArea = 0.0;
204145
- let largestChildMoments;
204146
- for (const child of region.children) {
204147
- if (child instanceof _Loop__WEBPACK_IMPORTED_MODULE_4__.Loop) {
204148
- const childMoments = this.handleLoop(child);
204175
+ handleAnyRegion(region) {
204176
+ const summedMoments = _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_3__.MomentData.create();
204177
+ // guarantee there is no overlapping children
204178
+ const merged = _RegionOps__WEBPACK_IMPORTED_MODULE_4__.RegionOps.regionBooleanXY(region, undefined, _RegionOps__WEBPACK_IMPORTED_MODULE_4__.RegionBinaryOpType.Union);
204179
+ if (merged) {
204180
+ for (const child of merged.children) {
204181
+ const childMoments = child.dispatchToGeometryHandler(this);
204149
204182
  if (childMoments) {
204150
- allChildMoments.push(childMoments);
204151
- const q = Math.abs(childMoments.quantitySum);
204152
- if (q > maxAbsArea) {
204153
- maxAbsArea = q;
204154
- largestChildMoments = childMoments;
204155
- }
204183
+ const sign0 = childMoments.signFactor(1.0);
204184
+ summedMoments.accumulateProducts(childMoments, sign0);
204156
204185
  }
204157
204186
  }
204158
204187
  }
204159
- if (largestChildMoments) {
204160
- const summedMoments = _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_3__.MomentData.create();
204161
- const sign0 = largestChildMoments.signFactor(1.0);
204162
- summedMoments.accumulateProducts(largestChildMoments, sign0);
204163
- for (const childMoments of allChildMoments) {
204164
- if (childMoments !== largestChildMoments) {
204165
- const sign1 = childMoments.signFactor(-1.0);
204166
- summedMoments.accumulateProducts(childMoments, sign1);
204167
- }
204168
- }
204169
- return summedMoments;
204188
+ else {
204189
+ return undefined;
204170
204190
  }
204171
- return undefined;
204191
+ return summedMoments;
204192
+ }
204193
+ /** Accumulate integrals from origin to the components of the parity region. */
204194
+ handleParityRegion(region) {
204195
+ return this.handleAnyRegion(region);
204172
204196
  }
204173
204197
  /** Accumulate integrals from origin to the components of the union region. */
204174
204198
  handleUnionRegion(region) {
204175
- const summedMoments = _geometry4d_MomentData__WEBPACK_IMPORTED_MODULE_3__.MomentData.create();
204176
- for (const child of region.children) {
204177
- const childMoments = child.dispatchToGeometryHandler(this);
204178
- if (childMoments) {
204179
- const sign0 = childMoments.signFactor(1.0);
204180
- summedMoments.accumulateProducts(childMoments, sign0);
204181
- }
204182
- }
204183
- return summedMoments;
204199
+ return this.handleAnyRegion(region);
204184
204200
  }
204185
204201
  _strokeOptions;
204186
204202
  getStrokeOptions() {
@@ -204238,9 +204254,9 @@ __webpack_require__.r(__webpack_exports__);
204238
204254
  /* harmony import */ var _geometry3d_IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../geometry3d/IndexedXYZCollection */ "../../core/geometry/lib/esm/geometry3d/IndexedXYZCollection.js");
204239
204255
  /* harmony import */ var _geometry3d_Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../geometry3d/Point3dArrayCarrier */ "../../core/geometry/lib/esm/geometry3d/Point3dArrayCarrier.js");
204240
204256
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
204241
- /* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
204257
+ /* harmony import */ var _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ../geometry3d/PolygonOps */ "../../core/geometry/lib/esm/geometry3d/PolygonOps.js");
204242
204258
  /* harmony import */ var _geometry3d_PolylineCompressionByEdgeOffset__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../geometry3d/PolylineCompressionByEdgeOffset */ "../../core/geometry/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js");
204243
- /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
204259
+ /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
204244
204260
  /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
204245
204261
  /* harmony import */ var _geometry3d_SortablePolygon__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../geometry3d/SortablePolygon */ "../../core/geometry/lib/esm/geometry3d/SortablePolygon.js");
204246
204262
  /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
@@ -204248,16 +204264,17 @@ __webpack_require__.r(__webpack_exports__);
204248
204264
  /* harmony import */ var _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../polyface/PolyfaceBuilder */ "../../core/geometry/lib/esm/polyface/PolyfaceBuilder.js");
204249
204265
  /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
204250
204266
  /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
204251
- /* harmony import */ var _topology_Merging__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ../topology/Merging */ "../../core/geometry/lib/esm/topology/Merging.js");
204267
+ /* harmony import */ var _topology_Merging__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ../topology/Merging */ "../../core/geometry/lib/esm/topology/Merging.js");
204252
204268
  /* harmony import */ var _topology_Triangulation__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../topology/Triangulation */ "../../core/geometry/lib/esm/topology/Triangulation.js");
204253
204269
  /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
204254
- /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
204270
+ /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
204255
204271
  /* harmony import */ var _CurveOps__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./CurveOps */ "../../core/geometry/lib/esm/curve/CurveOps.js");
204256
204272
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
204257
204273
  /* harmony import */ var _CurveWireMomentsXYZ__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveWireMomentsXYZ */ "../../core/geometry/lib/esm/curve/CurveWireMomentsXYZ.js");
204258
- /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
204274
+ /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
204259
204275
  /* harmony import */ var _internalContexts_ChainCollectorContext__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./internalContexts/ChainCollectorContext */ "../../core/geometry/lib/esm/curve/internalContexts/ChainCollectorContext.js");
204260
204276
  /* harmony import */ var _internalContexts_PolygonOffsetContext__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./internalContexts/PolygonOffsetContext */ "../../core/geometry/lib/esm/curve/internalContexts/PolygonOffsetContext.js");
204277
+ /* harmony import */ var _internalContexts_TransferWithSplitArcs__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./internalContexts/TransferWithSplitArcs */ "../../core/geometry/lib/esm/curve/internalContexts/TransferWithSplitArcs.js");
204261
204278
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
204262
204279
  /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
204263
204280
  /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
@@ -204313,6 +204330,7 @@ __webpack_require__.r(__webpack_exports__);
204313
204330
 
204314
204331
 
204315
204332
 
204333
+
204316
204334
 
204317
204335
 
204318
204336
  /**
@@ -204562,8 +204580,8 @@ class RegionOps {
204562
204580
  * to connect interior loops to exterior loops.
204563
204581
  */
204564
204582
  static regionBooleanXY(loopsA, loopsB, operation, mergeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
204565
- // Always return UnionRegion for now. But keep return type as AnyRegion:
204566
- // in the future, we might return the *simplest* region type.
204583
+ // Always return UnionRegion for now, but keep return type as AnyRegion.
204584
+ // In the future, we might return the *simplest* region type.
204567
204585
  const result = _UnionRegion__WEBPACK_IMPORTED_MODULE_13__.UnionRegion.create();
204568
204586
  const context = _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_12__.RegionBooleanContext.create(_RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_12__.RegionGroupOpType.Union, _RegionOpsClassificationSweeps__WEBPACK_IMPORTED_MODULE_12__.RegionGroupOpType.Union);
204569
204587
  context.addMembers(loopsA, loopsB);
@@ -204907,7 +204925,7 @@ class RegionOps {
204907
204925
  * SignedLoops object.
204908
204926
  * @param curvesAndRegions Any collection of curves. Each Loop/ParityRegion/UnionRegion contributes its curve
204909
204927
  * primitives.
204910
- * @param tolerance optional distance tolerance for coincidence
204928
+ * @param tolerance optional distance tolerance for coincidence.
204911
204929
  * @returns array of [[SignedLoops]], each entry of which describes the faces in a single connected component:
204912
204930
  * * `positiveAreaLoops` contains "interior" loops, _including holes in ParityRegion input_. These loops have
204913
204931
  * positive area and counterclockwise orientation.
@@ -204917,10 +204935,11 @@ class RegionOps {
204917
204935
  * to the edge and a constituent curve in each.
204918
204936
  */
204919
204937
  static constructAllXYRegionLoops(curvesAndRegions, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance) {
204920
- const primitives = RegionOps.collectCurvePrimitives(curvesAndRegions, undefined, true, true);
204938
+ let primitives = RegionOps.collectCurvePrimitives(curvesAndRegions, undefined, true, true);
204939
+ primitives = _internalContexts_TransferWithSplitArcs__WEBPACK_IMPORTED_MODULE_33__.TransferWithSplitArcs.clone(_CurveCollection__WEBPACK_IMPORTED_MODULE_24__.BagOfCurves.create(...primitives)).children;
204921
204940
  const range = this.curveArrayRange(primitives);
204922
204941
  const areaTol = this.computeXYAreaTolerance(range, tolerance);
204923
- const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_33__.CurveCurve.allIntersectionsAmongPrimitivesXY(primitives, tolerance);
204942
+ const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_34__.CurveCurve.allIntersectionsAmongPrimitivesXY(primitives, tolerance);
204924
204943
  const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_14__.PlanarSubdivision.assembleHalfEdgeGraph(primitives, intersections, tolerance);
204925
204944
  return _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_14__.PlanarSubdivision.collectSignedLoopSetsInHalfEdgeGraph(graph, areaTol);
204926
204945
  }
@@ -204978,12 +204997,12 @@ class RegionOps {
204978
204997
  * @param worldToLocal transform to apply to data before computing its range
204979
204998
  */
204980
204999
  static curveArrayRange(data, worldToLocal) {
204981
- const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_34__.Range3d.create();
204982
- if (data instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_35__.GeometryQuery)
205000
+ const range = _geometry3d_Range__WEBPACK_IMPORTED_MODULE_35__.Range3d.create();
205001
+ if (data instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_36__.GeometryQuery)
204983
205002
  data.extendRange(range, worldToLocal);
204984
205003
  else if (Array.isArray(data)) {
204985
205004
  for (const c of data) {
204986
- if (c instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_35__.GeometryQuery)
205005
+ if (c instanceof _GeometryQuery__WEBPACK_IMPORTED_MODULE_36__.GeometryQuery)
204987
205006
  c.extendRange(range, worldToLocal);
204988
205007
  else if (c instanceof _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Point3d)
204989
205008
  range.extendPoint(c, worldToLocal);
@@ -205019,7 +205038,7 @@ class RegionOps {
205019
205038
  for (const polygon of polygons)
205020
205039
  writablePolygons.push(_geometry3d_GrowableXYZArray__WEBPACK_IMPORTED_MODULE_17__.GrowableXYZArray.create(polygon));
205021
205040
  }
205022
- const sortedPolygons = _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_36__.PolygonOps.sortOuterAndHoleLoopsXY(writablePolygons);
205041
+ const sortedPolygons = _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_37__.PolygonOps.sortOuterAndHoleLoopsXY(writablePolygons);
205023
205042
  if (sortedPolygons.length === 1) { // below requires exactly one outer loop!
205024
205043
  if (graph = _topology_Triangulation__WEBPACK_IMPORTED_MODULE_10__.Triangulator.createTriangulatedGraphFromLoops(sortedPolygons[0]))
205025
205044
  _topology_Triangulation__WEBPACK_IMPORTED_MODULE_10__.Triangulator.flipTriangles(graph);
@@ -205104,7 +205123,7 @@ class RegionOps {
205104
205123
  if (!graph)
205105
205124
  return undefined;
205106
205125
  if (options?.maximizeConvexFacets)
205107
- _topology_Merging__WEBPACK_IMPORTED_MODULE_37__.HalfEdgeGraphOps.expandConvexFaces(graph);
205126
+ _topology_Merging__WEBPACK_IMPORTED_MODULE_38__.HalfEdgeGraphOps.expandConvexFaces(graph);
205108
205127
  return _polyface_PolyfaceBuilder__WEBPACK_IMPORTED_MODULE_11__.PolyfaceBuilder.graphToPolyface(graph, options);
205109
205128
  }
205110
205129
  /**
@@ -205118,7 +205137,7 @@ class RegionOps {
205118
205137
  if (!graph)
205119
205138
  return undefined;
205120
205139
  if (maximize)
205121
- _topology_Merging__WEBPACK_IMPORTED_MODULE_37__.HalfEdgeGraphOps.expandConvexFaces(graph);
205140
+ _topology_Merging__WEBPACK_IMPORTED_MODULE_38__.HalfEdgeGraphOps.expandConvexFaces(graph);
205122
205141
  const convexPolygons = [];
205123
205142
  graph.announceFaceLoops((_graph, seed) => {
205124
205143
  if (!seed.isMaskSet(_topology_Graph__WEBPACK_IMPORTED_MODULE_16__.HalfEdgeMask.EXTERIOR))
@@ -205172,24 +205191,25 @@ __webpack_require__.r(__webpack_exports__);
205172
205191
  /* harmony export */ RegionOpsFaceToFaceSearch: () => (/* binding */ RegionOpsFaceToFaceSearch)
205173
205192
  /* harmony export */ });
205174
205193
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
205175
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
205194
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
205176
205195
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
205177
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
205196
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
205178
205197
  /* harmony import */ var _topology_Graph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../topology/Graph */ "../../core/geometry/lib/esm/topology/Graph.js");
205179
205198
  /* harmony import */ var _topology_HalfEdgeGraphSearch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../topology/HalfEdgeGraphSearch */ "../../core/geometry/lib/esm/topology/HalfEdgeGraphSearch.js");
205180
205199
  /* harmony import */ var _topology_Merging__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../topology/Merging */ "../../core/geometry/lib/esm/topology/Merging.js");
205181
205200
  /* harmony import */ var _topology_RegularizeFace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../topology/RegularizeFace */ "../../core/geometry/lib/esm/topology/RegularizeFace.js");
205182
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
205183
- /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
205184
- /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
205201
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
205202
+ /* harmony import */ var _CurveCurve__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./CurveCurve */ "../../core/geometry/lib/esm/curve/CurveCurve.js");
205203
+ /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
205185
205204
  /* harmony import */ var _GeometryQuery__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./GeometryQuery */ "../../core/geometry/lib/esm/curve/GeometryQuery.js");
205186
- /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
205187
- /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
205205
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
205206
+ /* harmony import */ var _internalContexts_TransferWithSplitArcs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internalContexts/TransferWithSplitArcs */ "../../core/geometry/lib/esm/curve/internalContexts/TransferWithSplitArcs.js");
205207
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
205188
205208
  /* harmony import */ var _Loop__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
205189
205209
  /* harmony import */ var _ParityRegion__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ParityRegion */ "../../core/geometry/lib/esm/curve/ParityRegion.js");
205190
- /* harmony import */ var _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Query/PlanarSubdivision */ "../../core/geometry/lib/esm/curve/Query/PlanarSubdivision.js");
205210
+ /* harmony import */ var _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./Query/PlanarSubdivision */ "../../core/geometry/lib/esm/curve/Query/PlanarSubdivision.js");
205191
205211
  /* harmony import */ var _RegionOps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RegionOps */ "../../core/geometry/lib/esm/curve/RegionOps.js");
205192
- /* harmony import */ var _UnionRegion__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
205212
+ /* harmony import */ var _UnionRegion__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./UnionRegion */ "../../core/geometry/lib/esm/curve/UnionRegion.js");
205193
205213
  /*---------------------------------------------------------------------------------------------
205194
205214
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
205195
205215
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -205216,6 +205236,7 @@ __webpack_require__.r(__webpack_exports__);
205216
205236
 
205217
205237
 
205218
205238
 
205239
+
205219
205240
  /**
205220
205241
  * base class for callbacks during region sweeps.
205221
205242
  * * At start of a component, `startComponent(node)` is called announcing a representative node on the outermost face.
@@ -205532,8 +205553,7 @@ class RegionGroup {
205532
205553
  }
205533
205554
  return range;
205534
205555
  }
205535
- /** Ask if the current _numIn count qualifies as an "in" for this operation type.
205536
- */
205556
+ /** Ask if the current _numIn count qualifies as an "in" for this operation type. */
205537
205557
  getInOut() {
205538
205558
  // UNION is true if one or more members are IN
205539
205559
  if (this.groupOpType === RegionGroupOpType.Union)
@@ -205549,11 +205569,12 @@ class RegionGroup {
205549
205569
  // push new members into the group.
205550
205570
  addMember(data, allowLineSegment = false) {
205551
205571
  if (data instanceof _Loop__WEBPACK_IMPORTED_MODULE_8__.Loop || data instanceof _ParityRegion__WEBPACK_IMPORTED_MODULE_9__.ParityRegion) {
205552
- const cleanerData = data.clone();
205572
+ let cleanerData = data.clone();
205553
205573
  _RegionOps__WEBPACK_IMPORTED_MODULE_1__.RegionOps.consolidateAdjacentPrimitives(cleanerData);
205574
+ cleanerData = _internalContexts_TransferWithSplitArcs__WEBPACK_IMPORTED_MODULE_10__.TransferWithSplitArcs.clone(cleanerData);
205554
205575
  this.members.push(new RegionGroupMember(cleanerData, this));
205555
205576
  }
205556
- else if (data instanceof _UnionRegion__WEBPACK_IMPORTED_MODULE_10__.UnionRegion) {
205577
+ else if (data instanceof _UnionRegion__WEBPACK_IMPORTED_MODULE_11__.UnionRegion) {
205557
205578
  for (const child of data.children) {
205558
205579
  this.addMember(child);
205559
205580
  }
@@ -205563,7 +205584,7 @@ class RegionGroup {
205563
205584
  this.addMember(item);
205564
205585
  }
205565
205586
  }
205566
- else if (allowLineSegment && data instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
205587
+ else if (allowLineSegment && data instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__.LineSegment3d) {
205567
205588
  this.members.push(new RegionGroupMember(data, this));
205568
205589
  }
205569
205590
  }
@@ -205580,22 +205601,22 @@ class RegionGroup {
205580
205601
  /**
205581
205602
  * A `RegionBooleanContext` carries structure and operations for binary operations between two sets of regions.
205582
205603
  * * In the binary operation OP (union, intersection, parity, difference), the left and right operands
205583
- * are each a composite union, difference, or parity among multiple inputs, i.e.
205604
+ * are each a composite union, difference, or parity among multiple inputs, i.e.,
205584
205605
  * * (operationA among Ai) OP (operationB among Bi)
205585
205606
  * * where the Ai are one set of regions, being combined by operationA
205586
- * * and the Bi are the another set of regions, being combined by operationB
205587
- * * Each group of Ai and Bi is a `RegionGroup`
205607
+ * * and the Bi are the another set of regions, being combined by operationB.
205608
+ * * Each group of Ai and Bi is a `RegionGroup`.
205588
205609
  * * This is an extremely delicate structure.
205589
205610
  * * Members are public because of the unique variety of queries, but should only be used for queries.
205590
205611
  * * The graph and curves in the booleans are connected by an extended pointer chain:
205591
- * * (HalfEdge in Graph).edgeTag points to a CurveLocationDetail
205592
- * * (CurveLocationDetail).curve points to a curve
205593
- * * (Curve).parent points to RegionGroupMember
205594
- * * (RegionGroupMember) points to RegionGroup
205595
- * * (RegionGroup) points to RegionBooleanBinaryContext
205596
- * * So..when a graph sweep crosses an edge,
205597
- * * the chain leads to a parity count in the RegionGroupMember
205598
- * * that can change the number of members active in the RegionGroup
205612
+ * * (HalfEdge in Graph).edgeTag points to a CurveLocationDetail.
205613
+ * * (CurveLocationDetail).curve points to a curve.
205614
+ * * (Curve).parent points to RegionGroupMember.
205615
+ * * (RegionGroupMember) points to RegionGroup.
205616
+ * * (RegionGroup) points to RegionBooleanBinaryContext.
205617
+ * * So when a graph sweep crosses an edge
205618
+ * * the chain leads to a parity count in the RegionGroupMember.
205619
+ * * that can change the number of members active in the RegionGroup.
205599
205620
  * * which can change the state of the context.
205600
205621
  * @internal
205601
205622
  */
@@ -205610,7 +205631,7 @@ class RegionBooleanContext {
205610
205631
  this.groupA = new RegionGroup(this, groupTypeA);
205611
205632
  this.groupB = new RegionGroup(this, groupTypeB);
205612
205633
  this.extraGeometry = new RegionGroup(this, RegionGroupOpType.NonBounding);
205613
- this.binaryOp = _RegionOps__WEBPACK_IMPORTED_MODULE_1__.RegionBinaryOpType.Union; // it will be revised on can calls.
205634
+ this.binaryOp = _RegionOps__WEBPACK_IMPORTED_MODULE_1__.RegionBinaryOpType.Union; // revised in runClassificationSweep
205614
205635
  }
205615
205636
  /**
205616
205637
  * Create a context with both A and B groups empty.
@@ -205629,7 +205650,7 @@ class RegionBooleanContext {
205629
205650
  this.addConnectives();
205630
205651
  }
205631
205652
  _workSegment;
205632
- static _bridgeDirection = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_12__.Vector3d.createNormalized(1.0, -0.12328974132467); // magic unit direction to minimize vertex hits
205653
+ static _bridgeDirection = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__.Vector3d.createNormalized(1.0, -0.12328974132467); // magic unit direction to minimize vertex hits
205633
205654
  /**
205634
205655
  * The sweep operations require access to all geometry by edge crossings and face walk.
205635
205656
  * If input loops are non-overlapping, there may be disconnected islands not reachable.
@@ -205644,7 +205665,7 @@ class RegionBooleanContext {
205644
205665
  const rangeAB = rangeA.union(rangeB);
205645
205666
  const areaTol = _RegionOps__WEBPACK_IMPORTED_MODULE_1__.RegionOps.computeXYAreaTolerance(rangeAB);
205646
205667
  let margin = 0.1;
205647
- this._workSegment = _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_13__.PlaneAltitudeRangeContext.findExtremePointsInDirection(rangeAB.corners(), RegionBooleanContext._bridgeDirection, this._workSegment);
205668
+ this._workSegment = _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_14__.PlaneAltitudeRangeContext.findExtremePointsInDirection(rangeAB.corners(), RegionBooleanContext._bridgeDirection, this._workSegment);
205648
205669
  if (this._workSegment)
205649
205670
  margin *= this._workSegment.point0Ref.distanceXY(this._workSegment.point1Ref); // how much further to extend each bridge ray
205650
205671
  const maxPoints = [];
@@ -205652,7 +205673,7 @@ class RegionBooleanContext {
205652
205673
  const area = _RegionOps__WEBPACK_IMPORTED_MODULE_1__.RegionOps.computeXYArea(region);
205653
205674
  if (area === undefined || Math.abs(area) < areaTol)
205654
205675
  return; // avoid bridging trivial faces
205655
- this._workSegment = _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_13__.PlaneAltitudeRangeContext.findExtremePointsInDirection(region, RegionBooleanContext._bridgeDirection, this._workSegment);
205676
+ this._workSegment = _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_14__.PlaneAltitudeRangeContext.findExtremePointsInDirection(region, RegionBooleanContext._bridgeDirection, this._workSegment);
205656
205677
  if (this._workSegment)
205657
205678
  maxPoints.push(this._workSegment.point1Ref);
205658
205679
  };
@@ -205667,17 +205688,17 @@ class RegionBooleanContext {
205667
205688
  }
205668
205689
  }
205669
205690
  }
205670
- const ray = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_14__.Ray3d.createZero();
205691
+ const ray = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_15__.Ray3d.createZero();
205671
205692
  for (const p of maxPoints) {
205672
- // Make a line from...
205673
- // 1) exactly the max point of the loops to
205674
- // 2) a point clearly outside the big range
205675
- // If p came from some inner loop this will...
205676
- // 1) create a bridge from the inner loop through any containing loops (always)
205677
- // 2) avoid crossing any containing loop at a vertex. (with high probability, but not absolutely always)
205678
- const bridgeLength = margin + _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_14__.Ray3d.create(p, RegionBooleanContext._bridgeDirection, ray).intersectionWithRange3d(rangeAB).high;
205679
- const outside = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_12__.Point3d.createAdd2Scaled(p, 1.0, RegionBooleanContext._bridgeDirection, bridgeLength);
205680
- const bridgeLine = _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d.createXYXY(p.x, p.y, outside.x, outside.y);
205693
+ // Make a line from
205694
+ // 1) exactly the max point of the loops to
205695
+ // 2) a point clearly outside the big range
205696
+ // If p came from some inner loop this will
205697
+ // 1) create a bridge from the inner loop through any containing loops (always)
205698
+ // 2) avoid crossing any containing loop at a vertex. (with high probability, but not absolutely always)
205699
+ const bridgeLength = margin + _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_15__.Ray3d.create(p, RegionBooleanContext._bridgeDirection, ray).intersectionWithRange3d(rangeAB).high;
205700
+ const outside = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_13__.Point3d.createAdd2Scaled(p, 1.0, RegionBooleanContext._bridgeDirection, bridgeLength);
205701
+ const bridgeLine = _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__.LineSegment3d.createXYXY(p.x, p.y, outside.x, outside.y);
205681
205702
  this.extraGeometry.addMember(bridgeLine, true);
205682
205703
  }
205683
205704
  }
@@ -205691,7 +205712,7 @@ class RegionBooleanContext {
205691
205712
  */
205692
205713
  annotateAndMergeCurvesInGraph(mergeTolerance = _Geometry__WEBPACK_IMPORTED_MODULE_7__.Geometry.smallMetricDistance) {
205693
205714
  const allPrimitives = [];
205694
- // ASSUME loops have fine-grained types -- no linestrings !!
205715
+ // ASSUME loops have fine-grained types (no linestrings)
205695
205716
  for (const group of [this.groupA, this.groupB, this.extraGeometry]) {
205696
205717
  for (const member of group.members) {
205697
205718
  let k = allPrimitives.length;
@@ -205702,9 +205723,8 @@ class RegionBooleanContext {
205702
205723
  }
205703
205724
  }
205704
205725
  }
205705
- // const range = RegionOps.curveArrayRange(allPrimitives);
205706
- const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_15__.CurveCurve.allIntersectionsAmongPrimitivesXY(allPrimitives, mergeTolerance);
205707
- const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_16__.PlanarSubdivision.assembleHalfEdgeGraph(allPrimitives, intersections, mergeTolerance);
205726
+ const intersections = _CurveCurve__WEBPACK_IMPORTED_MODULE_16__.CurveCurve.allIntersectionsAmongPrimitivesXY(allPrimitives, mergeTolerance);
205727
+ const graph = _Query_PlanarSubdivision__WEBPACK_IMPORTED_MODULE_17__.PlanarSubdivision.assembleHalfEdgeGraph(allPrimitives, intersections, mergeTolerance);
205708
205728
  this.graph = graph;
205709
205729
  this.faceAreaFunction = faceAreaFromCurvedEdgeData;
205710
205730
  }
@@ -205795,7 +205815,7 @@ class RegionBooleanContext {
205795
205815
  const data = node.edgeTag;
205796
205816
  if (data instanceof RegionGroupMember)
205797
205817
  return updateRegionGroupMemberState(data);
205798
- if (data instanceof _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_17__.CurveLocationDetail) {
205818
+ if (data instanceof _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_18__.CurveLocationDetail) {
205799
205819
  // We trust that the caller has linked from the graph node to a curve which has a RegionGroupMember as its parent.
205800
205820
  const member = data.curve.parent;
205801
205821
  if (member instanceof RegionGroupMember)
@@ -205850,10 +205870,10 @@ function areaUnderPartialCurveXY(detail, xyStart, xyEnd, referencePoint) {
205850
205870
  }
205851
205871
  let areaToChord = 0.0;
205852
205872
  if (detail && detail.curve && detail.hasFraction1) {
205853
- if (detail.curve instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
205873
+ if (detail.curve instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_12__.LineSegment3d) {
205854
205874
  // ah .. nothing to do for a line segment
205855
205875
  }
205856
- else if (detail.curve instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_18__.Arc3d) {
205876
+ else if (detail.curve instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_19__.Arc3d) {
205857
205877
  areaToChord = detail.curve.areaToChordXY(detail.fraction, detail.fraction1);
205858
205878
  }
205859
205879
  }
@@ -212522,6 +212542,52 @@ class SumLengthsContext extends _CurveProcessor__WEBPACK_IMPORTED_MODULE_0__.Rec
212522
212542
  }
212523
212543
 
212524
212544
 
212545
+ /***/ }),
212546
+
212547
+ /***/ "../../core/geometry/lib/esm/curve/internalContexts/TransferWithSplitArcs.js":
212548
+ /*!***********************************************************************************!*\
212549
+ !*** ../../core/geometry/lib/esm/curve/internalContexts/TransferWithSplitArcs.js ***!
212550
+ \***********************************************************************************/
212551
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
212552
+
212553
+ "use strict";
212554
+ __webpack_require__.r(__webpack_exports__);
212555
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
212556
+ /* harmony export */ TransferWithSplitArcs: () => (/* binding */ TransferWithSplitArcs)
212557
+ /* harmony export */ });
212558
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
212559
+ /* harmony import */ var _CloneCurvesContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CloneCurvesContext */ "../../core/geometry/lib/esm/curve/internalContexts/CloneCurvesContext.js");
212560
+ /*---------------------------------------------------------------------------------------------
212561
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
212562
+ * See LICENSE.md in the project root for license terms and full copyright notice.
212563
+ *--------------------------------------------------------------------------------------------*/
212564
+ /** @packageDocumentation
212565
+ * @module Curve
212566
+ */
212567
+
212568
+
212569
+ /**
212570
+ * Algorithmic class for shallow-copying a CurveCollection with each full-sweep arc replaced by two half-sweep arcs.
212571
+ * * Often useful for building graphs from loops.
212572
+ * @internal
212573
+ */
212574
+ class TransferWithSplitArcs extends _CloneCurvesContext__WEBPACK_IMPORTED_MODULE_0__.CloneCurvesContext {
212575
+ constructor() {
212576
+ super(undefined);
212577
+ }
212578
+ doClone(primitive) {
212579
+ if (primitive instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_1__.Arc3d && primitive.sweep.isFullCircle) // replace full arc with two half arcs
212580
+ return [primitive.clonePartialCurve(0.0, 0.5), primitive.clonePartialCurve(0.5, 1)];
212581
+ return primitive;
212582
+ }
212583
+ static clone(target) {
212584
+ const context = new TransferWithSplitArcs();
212585
+ target.announceToCurveProcessor(context);
212586
+ return context._result;
212587
+ }
212588
+ }
212589
+
212590
+
212525
212591
  /***/ }),
212526
212592
 
212527
212593
  /***/ "../../core/geometry/lib/esm/curve/internalContexts/TransformInPlaceContext.js":
@@ -299643,10 +299709,10 @@ class Settings {
299643
299709
  });
299644
299710
  }
299645
299711
  toString() {
299646
- return `Configurations:
299647
- oidc client id: ${this.oidcClientId},
299648
- oidc scopes: ${this.oidcScopes},
299649
- applicationId: ${this.gprid},
299712
+ return `Configurations:
299713
+ oidc client id: ${this.oidcClientId},
299714
+ oidc scopes: ${this.oidcScopes},
299715
+ applicationId: ${this.gprid},
299650
299716
  log level: ${this.logLevel}`;
299651
299717
  }
299652
299718
  }
@@ -312476,7 +312542,7 @@ var loadLanguages = instance.loadLanguages;
312476
312542
  /***/ ((module) => {
312477
312543
 
312478
312544
  "use strict";
312479
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.1.0-dev.10","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g 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","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:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//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/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^6.0.1","source-map-loader":"^5.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//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.3.0","@itwin/core-i18n":"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"}}');
312545
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.1.0-dev.12","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 ES2022 --outDir lib/esm","clean":"rimraf -g 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","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:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//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/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^6.0.1","source-map-loader":"^5.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//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.3.0","@itwin/core-i18n":"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"}}');
312480
312546
 
312481
312547
  /***/ })
312482
312548