@itwin/ecschema-rpcinterface-tests 4.3.0-dev.2 → 4.3.0-dev.5

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.
@@ -100657,6 +100657,7 @@ const UNIT_DATA = [
100657
100657
  { name: "Units.SQ_FT", phenomenon: "Units.AREA", system: "Units.USCUSTOM", conversion: { numerator: 1.0, denominator: .09290304, offset: 0.0 }, displayLabel: "ft²" },
100658
100658
  { name: "Units.SQ_US_SURVEY_FT", phenomenon: "Units.AREA", system: "Units.USCUSTOM", conversion: { numerator: 15499969.0, denominator: 1440000, offset: 0.0 }, displayLabel: "ft² (US Survey)" },
100659
100659
  { name: "Units.SQ_M", phenomenon: "Units.AREA", system: "Units.SI", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: "m²" },
100660
+ { name: "Units.SQ_KM", phenomenon: "Units.AREA", system: "Units.SI", conversion: { numerator: 1.0, denominator: 1000000.0, offset: 0.0 }, displayLabel: "km²" },
100660
100661
  // conversion => specified unit to base unit m³
100661
100662
  { name: "Units.CUB_FT", phenomenon: "Units.VOLUME", system: "Units.USCUSTOM", conversion: { numerator: 1.0, denominator: 0.028316847, offset: 0.0 }, displayLabel: "ft³" },
100662
100663
  { name: "Units.CUB_US_SURVEY_FT", phenomenon: "Units.VOLUME", system: "Units.USSURVEY", conversion: { numerator: 1, denominator: 0.0283170164937591, offset: 0.0 }, displayLabel: "ft³" },
@@ -136885,8 +136886,8 @@ class ContextShareProvider {
136885
136886
  // Not a valid URL for Context share
136886
136887
  return false;
136887
136888
  }
136888
- // If api.bentley.com/realitydata is used, it is context share
136889
- if (tilesetUrl.toLowerCase().includes("api.bentley.com/realitydata"))
136889
+ // If api.bentley.com/realitydata or api.bentley.com/reality-management is used, it is context share
136890
+ if (tilesetUrl.toLowerCase().includes("api.bentley.com/realitydata") || tilesetUrl.toLowerCase().includes("api.bentley.com/reality-management/reality-data"))
136890
136891
  return true;
136891
136892
  // detect if it is a RDS url
136892
136893
  const formattedUrl1 = attUrl.pathname.replace(/~2F/g, "/").replace(/\\/g, "/");
@@ -136916,16 +136917,24 @@ class ContextShareProvider {
136916
136917
  // Not a valid URL and not equal, probably $cesiumAsset
136917
136918
  return invalidUrlInfo;
136918
136919
  }
136919
- // If api.bentley.com/realitydata is used, it is context share
136920
- if (tilesetUrl.toLowerCase().includes("api.bentley.com/realitydata")) {
136920
+ // If api.bentley.com/realitydata or api.bentley.com/reality-management is used, it is context share
136921
+ if (tilesetUrl.toLowerCase().includes("api.bentley.com/realitydata") || tilesetUrl.toLowerCase().includes("api.bentley.com/reality-management/reality-data")) {
136921
136922
  const lcTilesetUrl = tilesetUrl.toLowerCase();
136922
136923
  // NOTICE: We assume it is a ThreeDTile BUT this could technically be a point cloud (OPC).
136923
136924
  // This method was used in typical workflow where format was always ThreeDTile and is here for legacy support.
136924
136925
  // We don't want to make a call to RDS to resolve format since this method must not be async (it is used in workflow that are not async)
136925
136926
  const format = _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.RealityDataFormat.ThreeDTile;
136926
- const indexId = lcTilesetUrl.indexOf("realitydata/") + 12; // lenght of "realitydata/" = 12;
136927
+ let indexId = -1;
136928
+ let indexProjectId = -1;
136929
+ if (tilesetUrl.toLowerCase().includes("reality-management/reality-data")) {
136930
+ indexId = lcTilesetUrl.indexOf("reality-management/reality-data/") + 32; // length of "reality-management/reality-data/" = 32;
136931
+ indexProjectId = lcTilesetUrl.indexOf("itwinid=") + 8; // length of "itwinid=" = 8;
136932
+ }
136933
+ else if (tilesetUrl.toLowerCase().includes("realitydata")) {
136934
+ indexId = lcTilesetUrl.indexOf("realitydata/") + 12; // length of "realitydata/" = 12;
136935
+ indexProjectId = lcTilesetUrl.indexOf("projectid=") + 10; // length of "projectid=" = 10;
136936
+ }
136927
136937
  const id = lcTilesetUrl.substring(indexId, _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Guid.empty.length + indexId);
136928
- const indexProjectId = lcTilesetUrl.indexOf("projectid=") + 10; // lenght of "projectid=" = 10;
136929
136938
  let projectId;
136930
136939
  if (indexProjectId && indexProjectId > 0)
136931
136940
  projectId = lcTilesetUrl.substring(indexProjectId, _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Guid.empty.length + indexProjectId);
@@ -147134,7 +147143,8 @@ var TileGraphicType;
147134
147143
  */
147135
147144
  class TileTreeReference /* implements RenderMemory.Consumer */ {
147136
147145
  /** Force a new tree owner / tile tree to be created for the current tile tree reference
147137
- /* @internal */
147146
+ * @internal
147147
+ */
147138
147148
  resetTreeOwner() { }
147139
147149
  /** Disclose *all* TileTrees use by this reference. This may include things like map tiles used for draping on terrain.
147140
147150
  * Override this and call super if you have such auxiliary trees.
@@ -148260,7 +148270,10 @@ __webpack_require__.r(__webpack_exports__);
148260
148270
  /** @packageDocumentation
148261
148271
  * @module Tiles
148262
148272
  */
148263
- /** @internal */
148273
+ /**
148274
+ * Class representing an ArcGIS error code.
148275
+ * @internal
148276
+ */
148264
148277
  var ArcGisErrorCode;
148265
148278
  (function (ArcGisErrorCode) {
148266
148279
  ArcGisErrorCode[ArcGisErrorCode["InvalidCredentials"] = 401] = "InvalidCredentials";
@@ -148269,7 +148282,10 @@ var ArcGisErrorCode;
148269
148282
  ArcGisErrorCode[ArcGisErrorCode["UnknownError"] = 1000] = "UnknownError";
148270
148283
  ArcGisErrorCode[ArcGisErrorCode["NoTokenService"] = 1001] = "NoTokenService";
148271
148284
  })(ArcGisErrorCode || (ArcGisErrorCode = {}));
148272
- /** @internal */
148285
+ /**
148286
+ * Class containing utilities relating to ArcGIS services and coordinate systems.
148287
+ * @internal
148288
+ */
148273
148289
  class ArcGisUtilities {
148274
148290
  static getBBoxString(range) {
148275
148291
  if (!range)
@@ -148327,6 +148343,12 @@ class ArcGisUtilities {
148327
148343
  }
148328
148344
  return sources;
148329
148345
  }
148346
+ /**
148347
+ * Get map layer sources from an ArcGIS query.
148348
+ * @param range Range for the query.
148349
+ * @param url URL for the query.
148350
+ * @returns List of map layer sources.
148351
+ */
148330
148352
  static async getSourcesFromQuery(range, url = "https://usgs.maps.arcgis.com/sharing/rest/search") {
148331
148353
  const sources = new Array();
148332
148354
  for (let start = 1; start > 0;) {
@@ -148346,11 +148368,11 @@ class ArcGisUtilities {
148346
148368
  return sources;
148347
148369
  }
148348
148370
  /**
148349
- * Parse the URL to check if it represent a valid ArcGIS service
148371
+ * Parse the URL to check if it represents a valid ArcGIS service
148350
148372
  * @param url URL to validate.
148351
148373
  * @param serviceType Service type to validate (i.e FeatureServer, MapServer)
148352
148374
  * @return Validation Status.
148353
- */
148375
+ */
148354
148376
  static validateUrl(url, serviceType) {
148355
148377
  const urlObj = new URL(url.toLowerCase());
148356
148378
  if (urlObj.pathname.includes("/rest/services/")) {
@@ -148373,10 +148395,10 @@ class ArcGisUtilities {
148373
148395
  * @param capabilitiesFilter List of capabilities 'keyword' that needs to be advertised in the service's metadata
148374
148396
  * in order to be valid. For example: 'Map', 'Query', etc
148375
148397
  * @param userName Username to use for legacy token based security.
148376
- * @param password Username to use for legacy token based security.
148398
+ * @param password Password to use for legacy token based security.
148377
148399
  * @param ignoreCache Flag to skip cache lookup (i.e. force a new server request)
148378
148400
  * @return Validation Status. If successful, a list of available sub-layers will also be returned.
148379
- */
148401
+ */
148380
148402
  static async validateSource(url, formatId, capabilitiesFilter, userName, password, ignoreCache) {
148381
148403
  const metadata = await this.getServiceJson(url, formatId, userName, password, ignoreCache);
148382
148404
  const json = metadata?.content;
@@ -148420,9 +148442,7 @@ class ArcGisUtilities {
148420
148442
  }
148421
148443
  return { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.Valid, subLayers };
148422
148444
  }
148423
- /**
148424
- * Validate MapService tiling metadata and checks if the tile tree is 'Google Maps' compatible.
148425
- */
148445
+ /** Validate MapService tiling metadata and checks if the tile tree is 'Google Maps' compatible. */
148426
148446
  static isEpsg3857Compatible(tileInfo) {
148427
148447
  if (tileInfo.spatialReference?.latestWkid !== 3857 || !Array.isArray(tileInfo.lods))
148428
148448
  return false;
@@ -148430,11 +148450,17 @@ class ArcGisUtilities {
148430
148450
  return zeroLod.level === 0 && Math.abs(zeroLod.resolution - 156543.03392800014) < .001;
148431
148451
  }
148432
148452
  /**
148433
- * Fetch an ArcGIS service metadata, and returns its JSON representation.
148453
+ * Fetches an ArcGIS service metadata, and returns its JSON representation.
148434
148454
  * If an access client has been configured for the specified formatId,
148435
148455
  * it will be used to apply required security token.
148436
148456
  * By default, response for each URL are cached.
148437
- */
148457
+ * @param url URL of the ArcGIS service
148458
+ * @param formatId Format ID of the service
148459
+ * @param userName Username to use for legacy token based security
148460
+ * @param password Password to use for legacy token based security
148461
+ * @param ignoreCache Flag to skip cache lookup (i.e. force a new server request)
148462
+ * @param requireToken Flag to indicate if a token is required
148463
+ */
148438
148464
  static async getServiceJson(url, formatId, userName, password, ignoreCache, requireToken) {
148439
148465
  if (!ignoreCache) {
148440
148466
  const cached = ArcGisUtilities._serviceCache.get(url);
@@ -148481,8 +148507,7 @@ class ArcGisUtilities {
148481
148507
  return undefined;
148482
148508
  }
148483
148509
  }
148484
- /** Read a response from ArcGIS server and check for error code in the response.
148485
- */
148510
+ /** Read a response from ArcGIS server and check for error code in the response. */
148486
148511
  static async checkForResponseErrorCode(response) {
148487
148512
  const tmpResponse = response;
148488
148513
  if (response.headers && tmpResponse.headers.get("content-type")?.toLowerCase().includes("json")) {
@@ -148523,8 +148548,7 @@ class ArcGisUtilities {
148523
148548
  * @param latitude Latitude in degrees to use to compute scales (i.e 0 for Equator)
148524
148549
  * @param tileSize Size of a tile in pixels (i.e 256)
148525
148550
  * @param screenDpi Monitor resolution in dots per inch (i.e. typically 96dpi is used by Google Maps)
148526
- *
148527
- * @returns An array containing resolution and scale values for each requested zoom level
148551
+ * @returns An array containing resolution and scale values for each requested zoom level
148528
148552
  */
148529
148553
  static computeZoomLevelsScales(startZoom = 0, endZoom = 20, latitude = 0, tileSize = 256, screenDpi = 96) {
148530
148554
  // Note: There is probably a more direct way to compute this, but I prefer to go for a simple and well documented approach.
@@ -148543,12 +148567,12 @@ class ArcGisUtilities {
148543
148567
  return results;
148544
148568
  }
148545
148569
  /**
148546
- * Match the provided minScale,maxScale values to corresponding wgs84 zoom levels
148570
+ * Match the provided minScale, maxScale values to corresponding wgs84 zoom levels
148547
148571
  * @param defaultMaxLod Value of the last LOD (i.e 22)
148548
148572
  * @param tileSize Size of a tile in pixels (i.e 256)
148549
148573
  * @param minScale Minimum scale value that needs to be matched to a LOD level
148550
148574
  * @param maxScale Maximum scale value that needs to be matched to a LOD level
148551
- * @returns minLod: LOD value matching minScale, maxLod: LOD value matching maxScale
148575
+ * @returns minLod: LOD value matching minScale, maxLod: LOD value matching maxScale
148552
148576
  */
148553
148577
  static getZoomLevelsScales(defaultMaxLod, tileSize, minScale, maxScale, tolerance = 0) {
148554
148578
  let minLod, maxLod;
@@ -149565,9 +149589,9 @@ class ArcGISMapLayerImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_2
149565
149589
  return undefined;
149566
149590
  }
149567
149591
  }
149568
- _generateChildIds(tile, resolveChildren) {
149569
- const childIds = this.getPotentialChildIds(tile);
149570
- if (tile.quadId.level < Math.max(1, this.minimumZoomLevel - 1)) {
149592
+ _generateChildIds(quadId, resolveChildren) {
149593
+ const childIds = this.getPotentialChildIds(quadId);
149594
+ if (quadId.level < Math.max(1, this.minimumZoomLevel - 1)) {
149571
149595
  resolveChildren(childIds);
149572
149596
  return;
149573
149597
  }
@@ -150866,14 +150890,14 @@ class WmtsMapLayerImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_2__
150866
150890
  getDisplayedTileMatrixSetAndLimits() {
150867
150891
  return this._preferredLayerTileMatrixSet.get(this.displayedLayerName);
150868
150892
  }
150869
- _generateChildIds(tile, resolveChildren) {
150870
- const childIds = this.getPotentialChildIds(tile);
150893
+ _generateChildIds(quadId, resolveChildren) {
150894
+ const childIds = this.getPotentialChildIds(quadId);
150871
150895
  const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();
150872
150896
  if (!matrixSetAndLimits) {
150873
150897
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false); // Must always hava a matrix set.
150874
150898
  return;
150875
150899
  }
150876
- const limits = matrixSetAndLimits.limits?.[tile.quadId.level + 1]?.limits;
150900
+ const limits = matrixSetAndLimits.limits?.[quadId.level + 1]?.limits;
150877
150901
  if (!limits) {
150878
150902
  resolveChildren(childIds);
150879
150903
  return;
@@ -151253,17 +151277,24 @@ class ImageryMapLayerTreeSupplier {
151253
151277
  }
151254
151278
  const imageryTreeSupplier = new ImageryMapLayerTreeSupplier();
151255
151279
  /** A reference to one of our tile trees. The specific TileTree drawn may change when the desired imagery type or target iModel changes.
151256
- * @internal
151280
+ * @beta
151257
151281
  */
151258
151282
  class ImageryMapLayerTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_4__.MapLayerTileTreeReference {
151259
- constructor(layerSettings, layerIndex, iModel) {
151260
- super(layerSettings, layerIndex, iModel);
151283
+ /**
151284
+ * Constructor for an ImageryMapLayerTreeReference.
151285
+ * @param layerSettings Map layer settings that are applied to the ImageryMapLayerTreeReference.
151286
+ * @param layerIndex The index of the associated map layer. Usually passed in through [[createMapLayerTreeReference]] in [[MapTileTree]]'s constructor.
151287
+ * @param iModel The iModel containing the ImageryMapLayerTreeReference.
151288
+ */
151289
+ constructor(args) {
151290
+ super(args.layerSettings, args.layerIndex, args.iModel);
151261
151291
  }
151262
151292
  get castsShadows() { return false; }
151263
151293
  /** Return the owner of the TileTree to draw. */
151264
151294
  get treeOwner() {
151265
151295
  return this.iModel.tiles.getTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);
151266
151296
  }
151297
+ /* @internal */
151267
151298
  resetTreeOwner() {
151268
151299
  return this.iModel.tiles.resetTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);
151269
151300
  }
@@ -151530,32 +151561,52 @@ __webpack_require__.r(__webpack_exports__);
151530
151561
 
151531
151562
 
151532
151563
  const loggerCategory = "ArcGISFeatureProvider";
151533
- /** Class representing a map-layer format.
151564
+ /**
151565
+ * Class representing a map-layer format.
151534
151566
  * Each format has it's unique 'formatId' string, used to uniquely identify a format in the [[MapLayerFormatRegistry]].
151535
151567
  * When creating an [[ImageMapLayerSettings]] object, a format needs to be specified this 'formatId'.
151536
151568
  * The MapLayerFormat object can later be used to validate a source, or create a provider.
151537
151569
  *
151538
- * Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].
151570
+ * Subclasses should override formatId, [[MapLayerFormat.createImageryProvider]], and [[MapLayerFormat.createMapLayerTree]].
151539
151571
  * @public
151540
151572
  */
151541
151573
  class MapLayerFormat {
151542
- /** Register the current format in the [[MapLayerFormatRegistry]].
151543
- */
151574
+ /** Register the current format in the [[MapLayerFormatRegistry]]. */
151544
151575
  static register() { _IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.mapLayerFormatRegistry.register(this); }
151545
- /** Allow a source of a specific to be validated before being attached as a map-layer.
151546
- */
151576
+ /**
151577
+ * Allow a source of a specific format to be validated before being attached as a map-layer.
151578
+ * @param _url The URL of the source.
151579
+ * @param _userName The username to access the source if needed.
151580
+ * @param _password The password to access the source if needed.
151581
+ * @param _ignoreCache Flag to skip cache lookup (i.e. force a new server request).
151582
+ * @returns Validation Status. If successful, a list of available sub-layers may also be returned.
151583
+ */
151547
151584
  static async validateSource(_url, _userName, _password, _ignoreCache) { return { status: _internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerSourceStatus.Valid }; }
151548
- /** Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile Tree.
151549
- * @internal
151550
- */
151551
- static createImageryProvider(_settings) { (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false); }
151552
- /** @internal */
151585
+ /**
151586
+ * Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile tree.
151587
+ * @param _settings The map layer settings to be applied to the imagery provider.
151588
+ * @returns Returns the new imagery provider.
151589
+ * @beta
151590
+ */
151591
+ static createImageryProvider(_settings) {
151592
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Subclasses must override this method.");
151593
+ return undefined;
151594
+ }
151595
+ /**
151596
+ * Creates a MapLayerTileTreeReference for this map layer format.
151597
+ * @param _layerSettings Map layer settings that are applied to the MapLayerTileTreeReference.
151598
+ * @param _layerIndex The index of the associated map layer.
151599
+ * @param _iModel The iModel containing the MapLayerTileTreeReference.
151600
+ * @returns Returns the new tile tree reference.
151601
+ * @beta
151602
+ */
151553
151603
  static createMapLayerTree(_layerSettings, _layerIndex, _iModel) {
151554
- (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false);
151604
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Subclasses must override this method.");
151555
151605
  return undefined;
151556
151606
  }
151557
151607
  }
151558
- /** A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].
151608
+ /**
151609
+ * A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].
151559
151610
  * @public
151560
151611
  */
151561
151612
  class MapLayerFormatRegistry {
@@ -151598,7 +151649,8 @@ class MapLayerFormatRegistry {
151598
151649
  }
151599
151650
  return format.createMapLayerTree(layerSettings, layerIndex, iModel);
151600
151651
  }
151601
- /** Returns a [[MapLayerImageryProvider]] based on the provided [[ImageMapLayerSettings]] object.
151652
+ /**
151653
+ * Returns a [[MapLayerImageryProvider]] based on the provided [[ImageMapLayerSettings]] object.
151602
151654
  * @internal
151603
151655
  */
151604
151656
  createImageryProvider(layerSettings) {
@@ -151643,7 +151695,7 @@ __webpack_require__.r(__webpack_exports__);
151643
151695
  class ImageryMapLayerFormat extends _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerFormat {
151644
151696
  /** @internal */
151645
151697
  static createMapLayerTree(layerSettings, layerIndex, iModel) {
151646
- return new _internal__WEBPACK_IMPORTED_MODULE_0__.ImageryMapLayerTreeReference(layerSettings, layerIndex, iModel);
151698
+ return new _internal__WEBPACK_IMPORTED_MODULE_0__.ImageryMapLayerTreeReference({ layerSettings, layerIndex, iModel });
151647
151699
  }
151648
151700
  }
151649
151701
  class WmsMapLayerFormat extends ImageryMapLayerFormat {
@@ -151875,15 +151927,23 @@ class MapLayerImageryProvider {
151875
151927
  this._geographicTilingScheme = new _internal__WEBPACK_IMPORTED_MODULE_5__.GeographicTilingScheme();
151876
151928
  /** @internal */
151877
151929
  this._status = MapLayerImageryProviderStatus.Valid;
151878
- // Those values are used internally for various computation, this should not get overriden.
151879
- /** @internal */
151930
+ /**
151931
+ * This value is used internally for various computations, this should not get overriden.
151932
+ * @internal
151933
+ */
151880
151934
  this.defaultMinimumZoomLevel = 0;
151881
- /** @internal */
151935
+ /**
151936
+ * This value is used internally for various computations, this should not get overriden.
151937
+ * @internal
151938
+ */
151882
151939
  this.defaultMaximumZoomLevel = 22;
151883
151940
  this._mercatorTilingScheme = new _internal__WEBPACK_IMPORTED_MODULE_5__.WebMercatorTilingScheme();
151884
151941
  this._geographicTilingScheme = new _internal__WEBPACK_IMPORTED_MODULE_5__.GeographicTilingScheme(2, 1, true);
151885
151942
  }
151886
- /** @internal */
151943
+ /**
151944
+ * Initialize the provider by loading the first tile at its default maximum zoom level.
151945
+ * @beta
151946
+ */
151887
151947
  async initialize() {
151888
151948
  this.loadTile(0, 0, this.defaultMaximumZoomLevel).then((tileData) => {
151889
151949
  if (tileData !== undefined)
@@ -151891,20 +151951,31 @@ class MapLayerImageryProvider {
151891
151951
  });
151892
151952
  }
151893
151953
  get tilingScheme() { return this.useGeographicTilingScheme ? this._geographicTilingScheme : this._mercatorTilingScheme; }
151894
- /** @internal */
151954
+ /**
151955
+ * Add attribution logo cards for the data supplied by this provider to the [[Viewport]]'s logo div.
151956
+ * @param _cards Logo cards HTML element that may contain custom data attributes.
151957
+ * @param _viewport Viewport to add logo cards to.
151958
+ * @beta
151959
+ */
151895
151960
  addLogoCards(_cards, _viewport) { }
151896
151961
  /** @internal */
151897
151962
  get transparentBackgroundString() { return this._settings.transparentBackground ? "true" : "false"; }
151898
151963
  /** @internal */
151899
151964
  async _areChildrenAvailable(_tile) { return true; }
151900
151965
  /** @internal */
151901
- getPotentialChildIds(tile) {
151902
- const childLevel = tile.quadId.level + 1;
151903
- return tile.quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));
151966
+ getPotentialChildIds(quadId) {
151967
+ const childLevel = quadId.level + 1;
151968
+ return quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));
151904
151969
  }
151905
- /** @internal */
151906
- _generateChildIds(tile, resolveChildren) {
151907
- resolveChildren(this.getPotentialChildIds(tile));
151970
+ /**
151971
+ * Get child IDs of a quad and generate tiles based on these child IDs.
151972
+ * See [[ImageryTileTree._loadChildren]] for the definition of `resolveChildren` where this function is commonly called.
151973
+ * @param quadId quad to generate child IDs for.
151974
+ * @param resolveChildren Function that creates tiles from child IDs.
151975
+ * @beta
151976
+ */
151977
+ _generateChildIds(quadId, resolveChildren) {
151978
+ resolveChildren(this.getPotentialChildIds(quadId));
151908
151979
  }
151909
151980
  /** @internal */
151910
151981
  generateChildIds(tile, resolveChildren) {
@@ -151912,9 +151983,16 @@ class MapLayerImageryProvider {
151912
151983
  tile.setLeaf();
151913
151984
  return;
151914
151985
  }
151915
- this._generateChildIds(tile, resolveChildren);
151986
+ this._generateChildIds(tile.quadId, resolveChildren);
151916
151987
  }
151917
- /** @internal */
151988
+ /**
151989
+ * Get tooltip text for a specific quad and cartographic position.
151990
+ * @param strings List of strings to contain tooltip text.
151991
+ * @param quadId Quad ID to get tooltip for.
151992
+ * @param _carto Cartographic that may be used to retrieve and/or format tooltip text.
151993
+ * @param tree Tree associated with the quad to get the tooltip for.
151994
+ * @internal
151995
+ */
151918
151996
  async getToolTip(strings, quadId, _carto, tree) {
151919
151997
  if (doDebugToolTips) {
151920
151998
  const range = quadId.getLatLongRangeDegrees(tree.tilingScheme);
@@ -151949,7 +152027,8 @@ class MapLayerImageryProvider {
151949
152027
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Invalid tile content type");
151950
152028
  return undefined;
151951
152029
  }
151952
- /** Change the status of this provider.
152030
+ /**
152031
+ * Change the status of this provider.
151953
152032
  * Sub-classes should override 'onStatusUpdated' instead of this method.
151954
152033
  * @internal
151955
152034
  */
@@ -152032,31 +152111,49 @@ class MapLayerImageryProvider {
152032
152111
  }
152033
152112
  return true;
152034
152113
  }
152035
- /** @internal */
152036
- // calculates the projected x cartesian coordinate in EPSG:3857from the longitude in EPSG:4326 (WGS84)
152114
+ /**
152115
+ * Calculates the projected x cartesian coordinate in EPSG:3857 from the longitude in EPSG:4326 (WGS84)
152116
+ * @param longitude Longitude in EPSG:4326 (WGS84)
152117
+ * @internal
152118
+ */
152037
152119
  getEPSG3857X(longitude) {
152038
152120
  return longitude * 20037508.34 / 180.0;
152039
152121
  }
152040
- /** @internal */
152041
- // calculates the projected y cartesian coordinate in EPSG:3857from the latitude in EPSG:4326 (WGS84)
152122
+ /**
152123
+ * Calculates the projected y cartesian coordinate in EPSG:3857 from the latitude in EPSG:4326 (WGS84)
152124
+ * @param latitude Latitude in EPSG:4326 (WGS84)
152125
+ * @internal
152126
+ */
152042
152127
  getEPSG3857Y(latitude) {
152043
152128
  const y = Math.log(Math.tan((90.0 + latitude) * Math.PI / 360.0)) / (Math.PI / 180.0);
152044
152129
  return y * 20037508.34 / 180.0;
152045
152130
  }
152046
- /** @internal */
152047
- // calculates the longitude in EPSG:4326 (WGS84) from the projected x cartesian coordinate in EPSG:3857
152131
+ /**
152132
+ * Calculates the longitude in EPSG:4326 (WGS84) from the projected x cartesian coordinate in EPSG:3857
152133
+ * @param x3857 Projected x cartesian coordinate in EPSG:3857
152134
+ * @internal
152135
+ */
152048
152136
  getEPSG4326Lon(x3857) {
152049
152137
  return _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Angle.radiansToDegrees(x3857 / earthRadius);
152050
152138
  }
152051
- /** @internal */
152052
- // calculates the latitude in EPSG:4326 (WGS84) from the projected y cartesian coordinate in EPSG:3857
152139
+ /**
152140
+ * Calculates the latitude in EPSG:4326 (WGS84) from the projected y cartesian coordinate in EPSG:3857
152141
+ * @param y3857 Projected y cartesian coordinate in EPSG:3857
152142
+ * @internal
152143
+ */
152053
152144
  getEPSG4326Lat(y3857) {
152054
152145
  const y = 2 * Math.atan(Math.exp(y3857 / earthRadius)) - (Math.PI / 2);
152055
152146
  return _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Angle.radiansToDegrees(y);
152056
152147
  }
152057
- /** @internal */
152058
- // Map tile providers like Bing and Mapbox allow the URL to be constructed directory from the zoom level and tile coordinates.
152059
- // However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.
152148
+ /**
152149
+ * Get the bounding box/extents of a tile in EPSG:4326 (WGS84) format.
152150
+ * Map tile providers like Bing and Mapbox allow the URL to be constructed directly from the zoom level and tile coordinates.
152151
+ * However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.
152152
+ * @param row Row of the tile
152153
+ * @param column Column of the tile
152154
+ * @param zoomLevel Desired zoom level of the tile
152155
+ * @internal
152156
+ */
152060
152157
  getEPSG4326Extent(row, column, zoomLevel) {
152061
152158
  // Shift left (this.tileSize << zoomLevel) overflow when using 512 pixels tile at higher resolution,
152062
152159
  // so use Math.pow instead (I assume the performance lost to be minimal)
@@ -152071,7 +152168,13 @@ class MapLayerImageryProvider {
152071
152168
  const latitudeTop = 90.0 - 360.0 * Math.atan(Math.exp(-y1 * 2 * Math.PI)) / Math.PI;
152072
152169
  return { longitudeLeft, longitudeRight, latitudeTop, latitudeBottom };
152073
152170
  }
152074
- /** @internal */
152171
+ /**
152172
+ * Get the bounding box/extents of a tile in EPSG:3857 format.
152173
+ * @param row Row of the tile
152174
+ * @param column Column of the tile
152175
+ * @param zoomLevel Desired zoom level of the tile
152176
+ * @internal
152177
+ */
152075
152178
  getEPSG3857Extent(row, column, zoomLevel) {
152076
152179
  const epsg4326Extent = this.getEPSG4326Extent(row, column, zoomLevel);
152077
152180
  const left = this.getEPSG3857X(epsg4326Extent.longitudeLeft);
@@ -152348,24 +152451,45 @@ __webpack_require__.r(__webpack_exports__);
152348
152451
 
152349
152452
 
152350
152453
 
152351
- /** @internal */
152454
+ /**
152455
+ * A [[TileTreeReference]] to be used specifically for [[MapTileTree]]s.
152456
+ * The reference refers to its MapTileTree by way of the tree's [[TileTreeOwner]].
152457
+ * Multiple MapLayerTileTreeReferences can refer to the same TileTree if the map layer settings are equivalent, meaning
152458
+ * they have identical format IDs, URLs, credentials, etc.
152459
+ * @beta
152460
+ */
152352
152461
  class MapLayerTileTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_3__.TileTreeReference {
152462
+ /**
152463
+ * Constructor for a MapLayerTileTreeReference.
152464
+ * @param _layerSettings Map layer settings that are applied to the MapLayerTileTreeReference.
152465
+ * @param _layerIndex The index of the associated map layer.
152466
+ * @param iModel The iModel containing the MapLayerTileTreeReference.
152467
+ * @internal
152468
+ */
152353
152469
  constructor(_layerSettings, _layerIndex, iModel) {
152354
152470
  super();
152355
152471
  this._layerSettings = _layerSettings;
152356
152472
  this._layerIndex = _layerIndex;
152357
152473
  this.iModel = iModel;
152358
152474
  }
152475
+ /* @internal */
152359
152476
  get _transparency() { return this._layerSettings.transparency ? this._layerSettings.transparency : undefined; }
152477
+ /** Returns true if the associated map layer, including its sublayers, is opaque. */
152360
152478
  get isOpaque() {
152361
152479
  return this._layerSettings.visible && (!this._layerSettings.allSubLayersInvisible) && !this._layerSettings.transparentBackground && 0 === this._layerSettings.transparency;
152362
152480
  }
152481
+ /* Returns the map layer name. */
152363
152482
  get layerName() { return this._layerSettings.name; }
152483
+ /** Returns the imagery provider for the tile tree. */
152364
152484
  get imageryProvider() { return undefined; }
152365
152485
  set layerSettings(layerSettings) { this._layerSettings = layerSettings; }
152486
+ /** Returns the layer settings for the map layer. */
152366
152487
  get layerSettings() { return this._layerSettings; }
152488
+ /** Returns the index of the map layer associated with the tile tree. */
152367
152489
  get layerIndex() { return this._layerIndex; }
152490
+ /** Returns the transparency value of the map layer. */
152368
152491
  get transparency() { return this._transparency; }
152492
+ /* Returns a tooltip describing the hit with the map layer name. */
152369
152493
  async getToolTip(hit) {
152370
152494
  const tree = this.treeOwner.tileTree;
152371
152495
  if (undefined === tree || hit.iModel !== tree.iModel || tree.modelId !== hit.sourceId)
@@ -152377,7 +152501,14 @@ class MapLayerTileTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_3__.T
152377
152501
  return div;
152378
152502
  }
152379
152503
  }
152380
- /** @internal */
152504
+ /**
152505
+ * Creates a MapLayerTileTreeReference.
152506
+ * @param layerSettings Model or image map layer settings that are applied to the MapLayerTileTreeReference.
152507
+ * @param layerIndex The index of the associated map layer.
152508
+ * @param iModel The iModel containing the new MapLayerTileTreeReference.
152509
+ * @returns Returns the new tile tree reference, either a ModelMapLayerTileTreeReference or an ImageryMapLayerTreeReference.
152510
+ * @internal
152511
+ */
152381
152512
  function createMapLayerTreeReference(layerSettings, layerIndex, iModel) {
152382
152513
  if (layerSettings instanceof _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ModelMapLayerSettings) {
152383
152514
  return (0,_internal__WEBPACK_IMPORTED_MODULE_3__.createModelMapLayerTileTreeReference)(layerSettings, layerIndex, iModel);
@@ -183380,11 +183511,28 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
183380
183511
  curveLengthBetweenFractions(fraction0, fraction1) {
183381
183512
  return Math.abs(fraction1 - fraction0) * this._totalLength;
183382
183513
  }
183514
+ /** Flatten CurveChainWithDistanceIndex children in the input chain.
183515
+ * @return cloned flattened CurveChain, or reference to the input chain if no nesting
183516
+ */
183517
+ static flattenNestedChains(chain) {
183518
+ if (-1 === chain.children.findIndex((child) => { return child instanceof CurveChainWithDistanceIndex; }))
183519
+ return chain;
183520
+ const flatChain = chain.clone();
183521
+ const flatChildren = flatChain.children.flatMap((child) => {
183522
+ if (child instanceof CurveChainWithDistanceIndex)
183523
+ return child.path.children;
183524
+ else
183525
+ return [child];
183526
+ });
183527
+ flatChain.children.splice(0, Infinity, ...flatChildren);
183528
+ return flatChain;
183529
+ }
183383
183530
  /**
183384
183531
  * Capture (not clone) a path into a new `CurveChainWithDistanceIndex`
183385
183532
  * @param path primitive array to be CAPTURED (not cloned)
183386
183533
  */
183387
183534
  static createCapture(path, options) {
183535
+ path = this.flattenNestedChains(path); // nested chains not allowed
183388
183536
  const fragments = DistanceIndexConstructionContext.createPathFragmentIndex(path, options);
183389
183537
  const result = new CurveChainWithDistanceIndex(path, fragments);
183390
183538
  return result;
@@ -183720,6 +183868,36 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
183720
183868
  }
183721
183869
  return undefined;
183722
183870
  }
183871
+ /**
183872
+ * Given a parent chain, convert the corresponding child details in the specified pairs.
183873
+ * * Converted details refer to the chain's global parameterization instead of the child's.
183874
+ * * It is assumed that for all i >= index0, `pairs[i].detailA.curve` is a child of chainA (similarly for chainB).
183875
+ * @param pairs array to mutate
183876
+ * @param index0 convert details of pairs in the tail of the array, starting at index0
183877
+ * @param chainA convert each specified detailA to the global parameterization of chainA
183878
+ * @param chainB convert each specified detailB to the global parameterization of chainB
183879
+ * @param compressAdjacent whether to remove adjacent duplicate pairs after conversion
183880
+ * @return the converted array
183881
+ * @internal
183882
+ */
183883
+ static convertChildDetailToChainDetail(pairs, index0, chainA, chainB, compressAdjacent) {
183884
+ for (let i = index0; i < pairs.length; ++i) {
183885
+ const childDetailPair = pairs[i];
183886
+ if (chainA) {
183887
+ const chainDetail = chainA.computeChainDetail(childDetailPair.detailA);
183888
+ if (chainDetail)
183889
+ childDetailPair.detailA = chainDetail;
183890
+ }
183891
+ if (chainB) {
183892
+ const chainDetail = chainB.computeChainDetail(childDetailPair.detailB);
183893
+ if (chainDetail)
183894
+ childDetailPair.detailB = chainDetail;
183895
+ }
183896
+ }
183897
+ if (compressAdjacent)
183898
+ pairs = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__.CurveLocationDetailPair.removeAdjacentDuplicates(pairs, index0);
183899
+ return pairs;
183900
+ }
183723
183901
  }
183724
183902
  CurveChainWithDistanceIndex._numCalls = 0;
183725
183903
  CurveChainWithDistanceIndex._numTested = 0;
@@ -183778,15 +183956,13 @@ __webpack_require__.r(__webpack_exports__);
183778
183956
 
183779
183957
  /**
183780
183958
  * A `CurveCollection` is an abstract (non-instantiable) class for various sets of curves with particular structures:
183781
- * - `CurveChain` is a (non-instantiable) intermediate class for a sequence of `CurvePrimitive` joining head-to-tail.
183782
- * The two instantiable forms of `CurveChain` are
183783
- * - `Path` - A chain not required to close and not enclosing a planar area (so curves do not have to be on the
183784
- * same plane).
183785
- * - `Loop` - A chain required to close from last to first so that a planar area is enclosed (so curves have to
183786
- * be on the same plane).
183787
- * - `ParityRegion` -- a collection of coplanar `Loop`, with "in/out" classification by parity rules.
183788
- * - `UnionRegion` -- a collection of coplanar `Loop` and/or `ParityRegion`, with "in/out" classification by union rules.
183789
- * - `BagOfCurves` -- a collection of `AnyCurve` with no implied structure.
183959
+ * - [[CurveChain]] - a non-instantiable intermediate class for a sequence of [[CurvePrimitive]] joining head-to-tail.
183960
+ * The two instantiable forms of `CurveChain` are:
183961
+ * - [[Path]] - a chain of curves. Does not have to be closed or planar. A closed `Path` is not treated as bounding a surface.
183962
+ * - [[Loop]] - a closed and planar chain of curves. A `Loop` is treated as bounding a planar area.
183963
+ * - [[ParityRegion]] - a collection of coplanar `Loop`, with "in/out" classification by parity rules.
183964
+ * - [[UnionRegion]] - a collection of coplanar `Loop` and/or `ParityRegion`, with "in/out" classification by union rules.
183965
+ * - [[BagOfCurves]] - a collection of [[AnyCurve]] with no implied structure.
183790
183966
  *
183791
183967
  * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.
183792
183968
  * @public
@@ -183796,7 +183972,6 @@ class CurveCollection extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geomet
183796
183972
  super(...arguments);
183797
183973
  /** String name for schema properties */
183798
183974
  this.geometryCategory = "curveCollection";
183799
- /* eslint-disable @typescript-eslint/naming-convention, no-empty */
183800
183975
  /** Flag for inner loop status. Only used by `Loop`. */
183801
183976
  this.isInner = false;
183802
183977
  }
@@ -184173,11 +184348,9 @@ __webpack_require__.r(__webpack_exports__);
184173
184348
  /* harmony export */ CurveCurve: () => (/* binding */ CurveCurve)
184174
184349
  /* harmony export */ });
184175
184350
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
184176
- /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
184177
- /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
184178
- /* harmony import */ var _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internalContexts/CurveCurveCloseApproachXY */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js");
184351
+ /* harmony import */ var _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internalContexts/CurveCurveCloseApproachXY */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js");
184179
184352
  /* harmony import */ var _internalContexts_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internalContexts/CurveCurveIntersectXY */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js");
184180
- /* harmony import */ var _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internalContexts/CurveCurveIntersectXYZ */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js");
184353
+ /* harmony import */ var _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internalContexts/CurveCurveIntersectXYZ */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js");
184181
184354
  /*---------------------------------------------------------------------------------------------
184182
184355
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
184183
184356
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -184189,8 +184362,6 @@ __webpack_require__.r(__webpack_exports__);
184189
184362
 
184190
184363
 
184191
184364
 
184192
-
184193
-
184194
184365
  /**
184195
184366
  * `CurveCurve` has static method for various computations that work on a pair of curves or curve collections.
184196
184367
  * @public
@@ -184205,22 +184376,11 @@ class CurveCurve {
184205
184376
  * @param tolerance optional distance tolerance for coincidence
184206
184377
  */
184207
184378
  static intersectionXYPairs(curveA, extendA, curveB, extendB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
184208
- const handler = new _internalContexts_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_1__.CurveCurveIntersectXY(undefined, extendA, curveB, extendB, tolerance);
184209
- if (curveB instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__.CurvePrimitive) {
184210
- curveA.dispatchToGeometryHandler(handler);
184211
- }
184212
- else if (curveB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_3__.CurveCollection) {
184213
- const allCurves = curveB.collectCurvePrimitives();
184214
- for (const child of allCurves) {
184215
- handler.resetGeometry(false, child, false);
184216
- curveA.dispatchToGeometryHandler(handler);
184217
- }
184218
- }
184219
- return handler.grabPairedResults();
184379
+ return CurveCurve.intersectionProjectedXYPairs(undefined, curveA, extendA, curveB, extendB, tolerance);
184220
184380
  }
184221
184381
  /**
184222
184382
  * Return xy intersections of 2 projected curves.
184223
- * @param worldToLocal transform (possibly perspective) defining the local coordinates in which to compute xy intersections.
184383
+ * @param worldToLocal transform (possibly perspective) defining the local coordinates in which to compute xy intersections
184224
184384
  * @param curveA first curve
184225
184385
  * @param extendA true to allow curveA to extend
184226
184386
  * @param curveB second curve
@@ -184244,7 +184404,7 @@ class CurveCurve {
184244
184404
  * @returns array of intersections structured as CurveLocationDetailPair[]
184245
184405
  */
184246
184406
  static intersectionXYZPairs(curveA, extendA, curveB, extendB) {
184247
- const handler = new _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_4__.CurveCurveIntersectXYZ(extendA, curveB, extendB);
184407
+ const handler = new _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_2__.CurveCurveIntersectXYZ(extendA, curveB, extendB);
184248
184408
  curveA.dispatchToGeometryHandler(handler);
184249
184409
  return handler.grabPairedResults();
184250
184410
  }
@@ -184258,7 +184418,7 @@ class CurveCurve {
184258
184418
  for (let i = 0; i < primitives.length; i++) {
184259
184419
  const curveA = primitives[i];
184260
184420
  for (let j = i + 1; j < primitives.length; j++) {
184261
- handler.resetGeometry(false, primitives[j], false);
184421
+ handler.resetGeometry(primitives[j]);
184262
184422
  curveA.dispatchToGeometryHandler(handler);
184263
184423
  }
184264
184424
  }
@@ -184278,7 +184438,7 @@ class CurveCurve {
184278
184438
  * Close approaches further than this xy-distance are not returned.
184279
184439
  */
184280
184440
  static closeApproachProjectedXYPairs(curveA, curveB, maxDistance) {
184281
- const handler = new _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_5__.CurveCurveCloseApproachXY(curveB);
184441
+ const handler = new _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_3__.CurveCurveCloseApproachXY(curveB);
184282
184442
  handler.maxDistanceToAccept = maxDistance;
184283
184443
  curveA.dispatchToGeometryHandler(handler);
184284
184444
  return handler.grabPairedResults();
@@ -185412,6 +185572,10 @@ class CurveLocationDetail {
185412
185572
  }
185413
185573
  return detailB;
185414
185574
  }
185575
+ /** Compare only the curve and fraction of this detail with `other`. */
185576
+ isSameCurveAndFraction(other) {
185577
+ return this.curve === other.curve && _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(this.fraction, other.fraction);
185578
+ }
185415
185579
  }
185416
185580
  /**
185417
185581
  * Enumeration of configurations for intersections and min/max distance-between-curve
@@ -185474,6 +185638,30 @@ class CurveLocationDetailPair {
185474
185638
  this.detailA = this.detailB;
185475
185639
  this.detailB = q;
185476
185640
  }
185641
+ /**
185642
+ * Mutate the input array by removing the second of two adjacent duplicate pairs.
185643
+ * * Ignores details representing coincident intervals (e.g., for which `fraction1` is defined).
185644
+ * * Comparison is performed by [[CurveLocationDetail.isSameCurveAndFraction]].
185645
+ * * No sorting is performed.
185646
+ * @param pairs array to de-duplicate in place
185647
+ * @param index0 look for duplicates in the tail of the array starting at index0
185648
+ * @return reference to input array
185649
+ * @internal
185650
+ */
185651
+ static removeAdjacentDuplicates(pairs, index0 = 0) {
185652
+ return pairs.flatMap((pair, i, arr) => {
185653
+ if (i >= index0 && i > 0) {
185654
+ if (!pair.detailA.hasFraction1 && !pair.detailB.hasFraction1) {
185655
+ if (pair.detailA.isSameCurveAndFraction(arr[i - 1].detailA)) {
185656
+ if (pair.detailB.isSameCurveAndFraction(arr[i - 1].detailB)) {
185657
+ return []; // remove the i_th pair
185658
+ }
185659
+ }
185660
+ }
185661
+ }
185662
+ return [pair]; // preserve the i_th pair
185663
+ });
185664
+ }
185477
185665
  }
185478
185666
  /**
185479
185667
  * Data bundle for a pair of arrays of CurveLocationDetail structures.
@@ -186524,10 +186712,8 @@ class CurveWireMomentsXYZ {
186524
186712
  if (root instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_3__.CurvePrimitive)
186525
186713
  root.emitStrokableParts(this);
186526
186714
  else if (root instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_4__.CurveCollection) {
186527
- if (root.children !== undefined)
186528
- for (const child of root.children) {
186529
- this.visitLeaves(child);
186530
- }
186715
+ for (const child of root.children)
186716
+ this.visitLeaves(child);
186531
186717
  }
186532
186718
  }
186533
186719
  }
@@ -187916,10 +188102,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
187916
188102
  isInPlane(plane) {
187917
188103
  return this._points.isCloseToPlane(plane, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance);
187918
188104
  }
187919
- /**
187920
- * Push a hit, fixing up the prior entry if needed.
187921
- * Return the incremented counter.
187922
- */
188105
+ /** Push a hit, fixing up the prior entry if needed. */
187923
188106
  static pushVertexHit(result, counter, cp, fraction, point) {
187924
188107
  const detail = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__.CurveLocationDetail.createCurveFractionPoint(cp, fraction, point);
187925
188108
  result.push(detail);
@@ -193739,10 +193922,6 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193739
193922
  this._results = [];
193740
193923
  return result;
193741
193924
  }
193742
- /** Returns `true` if `detail` has same curve and fraction. */
193743
- sameCurveAndFraction(cp, fraction, detail) {
193744
- return cp === detail.curve && _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isAlmostEqualNumber(fraction, detail.fraction);
193745
- }
193746
193925
  /**
193747
193926
  * If distance between pointA and pointB is less than maxDistance, record CurveLocationDetailPair which is
193748
193927
  * the approach from pointA to pointB.
@@ -193793,13 +193972,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193793
193972
  const oldDetailA = this._results[numPrevious - 1].detailA;
193794
193973
  const oldDetailB = this._results[numPrevious - 1].detailB;
193795
193974
  if (reversed) {
193796
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailB) &&
193797
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailA))
193975
+ if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
193976
+ oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
193798
193977
  return;
193799
193978
  }
193800
193979
  else {
193801
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailA) &&
193802
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailB))
193980
+ if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
193981
+ oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
193803
193982
  return;
193804
193983
  }
193805
193984
  }
@@ -193845,13 +194024,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
193845
194024
  const oldDetailA = this._results[numPrevious - 1].detailA;
193846
194025
  const oldDetailB = this._results[numPrevious - 1].detailB;
193847
194026
  if (reversed) {
193848
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailB) &&
193849
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailA))
194027
+ if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
194028
+ oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
193850
194029
  return;
193851
194030
  }
193852
194031
  else {
193853
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailA) &&
193854
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailB))
194032
+ if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
194033
+ oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
193855
194034
  return;
193856
194035
  }
193857
194036
  }
@@ -194237,38 +194416,22 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
194237
194416
  }
194238
194417
  this._geometryB = geomB; // restore
194239
194418
  }
194240
- /**
194241
- * Given a parent chain, convert the corresponding child details so that they refer to the chain's global parameterization.
194242
- * * It is assumed that `this._results[i].detailA.curve` is a child of chainA, and similarly for detailB/chainB.
194243
- * @param chainA convert each detailA to the global parameterization of chainA
194244
- * @param chainB convert each detailB to the global parameterization of chainB
194245
- */
194246
- convertChildDetailToChainDetail(chainA, chainB) {
194247
- for (const childDetailPair of this._results) {
194248
- if (chainA) {
194249
- const chainDetail = chainA.computeChainDetail(childDetailPair.detailA);
194250
- if (chainDetail)
194251
- childDetailPair.detailA = chainDetail;
194252
- }
194253
- if (chainB) {
194254
- const chainDetail = chainB.computeChainDetail(childDetailPair.detailB);
194255
- if (chainDetail)
194256
- childDetailPair.detailB = chainDetail;
194257
- }
194258
- }
194259
- }
194260
194419
  /** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
194261
194420
  dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
194262
194421
  if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex))
194263
194422
  return;
194423
+ if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex) {
194424
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!!"call handleCurveChainWithDistanceIndex(geomA) instead");
194425
+ return;
194426
+ }
194427
+ const index0 = this._results.length;
194264
194428
  const geomB = this._geometryB; // save
194265
194429
  for (const child of geomB.path.children) {
194266
194430
  this.resetGeometry(child);
194267
194431
  geomAHandler(geomA);
194268
194432
  }
194269
194433
  this.resetGeometry(geomB); // restore
194270
- (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!(geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex));
194271
- this.convertChildDetailToChainDetail(undefined, geomB);
194434
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
194272
194435
  }
194273
194436
  /** Double dispatch handler for strongly typed segment. */
194274
194437
  handleLineSegment3d(segmentA) {
@@ -194439,7 +194602,8 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
194439
194602
  /** Double dispatch handler for strongly typed CurveChainWithDistanceIndex. */
194440
194603
  handleCurveChainWithDistanceIndex(chain) {
194441
194604
  super.handleCurveChainWithDistanceIndex(chain);
194442
- this.convertChildDetailToChainDetail(chain, this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex ? this._geometryB : undefined);
194605
+ // if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
194606
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
194443
194607
  }
194444
194608
  /** Double dispatch handler for strongly typed homogeneous bspline curve .. */
194445
194609
  handleBSplineCurve3dH(_curve) {
@@ -194481,27 +194645,36 @@ __webpack_require__.r(__webpack_exports__);
194481
194645
  /* harmony export */ BezierBezierIntersectionXYRRToRRD: () => (/* binding */ BezierBezierIntersectionXYRRToRRD),
194482
194646
  /* harmony export */ CurveCurveIntersectXY: () => (/* binding */ CurveCurveIntersectXY)
194483
194647
  /* harmony export */ });
194484
- /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
194485
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
194486
- /* harmony import */ var _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/CoincidentGeometryOps */ "../../core/geometry/lib/esm/geometry3d/CoincidentGeometryOps.js");
194487
- /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
194488
- /* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
194489
- /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
194490
- /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
194491
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
194492
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
194493
- /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
194494
- /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
194495
- /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
194496
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
194497
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
194498
- /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
194499
- /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
194500
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
194648
+ /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
194649
+ /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
194650
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
194651
+ /* harmony import */ var _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/CoincidentGeometryOps */ "../../core/geometry/lib/esm/geometry3d/CoincidentGeometryOps.js");
194652
+ /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
194653
+ /* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
194654
+ /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
194655
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
194656
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
194657
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
194658
+ /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
194659
+ /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
194660
+ /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
194661
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
194662
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
194663
+ /* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
194664
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
194665
+ /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
194666
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
194667
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
194501
194668
  /*---------------------------------------------------------------------------------------------
194502
194669
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
194503
194670
  * See LICENSE.md in the project root for license terms and full copyright notice.
194504
194671
  *--------------------------------------------------------------------------------------------*/
194672
+ /** @packageDocumentation
194673
+ * @module Curve
194674
+ */
194675
+
194676
+
194677
+
194505
194678
 
194506
194679
 
194507
194680
 
@@ -194525,13 +194698,13 @@ __webpack_require__.r(__webpack_exports__);
194525
194698
  * * The inputs are assumed pre-transformed so that the target condition is to match x and y coordinates.
194526
194699
  * @internal
194527
194700
  */
194528
- class BezierBezierIntersectionXYRRToRRD extends _numerics_Newton__WEBPACK_IMPORTED_MODULE_0__.NewtonEvaluatorRRtoRRD {
194701
+ class BezierBezierIntersectionXYRRToRRD extends _numerics_Newton__WEBPACK_IMPORTED_MODULE_1__.NewtonEvaluatorRRtoRRD {
194529
194702
  constructor(curveA, curveB) {
194530
194703
  super();
194531
194704
  this._curveA = curveA;
194532
194705
  this._curveB = curveB;
194533
- this._rayA = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_1__.Ray3d.createZero();
194534
- this._rayB = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_1__.Ray3d.createZero();
194706
+ this._rayA = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__.Ray3d.createZero();
194707
+ this._rayB = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__.Ray3d.createZero();
194535
194708
  }
194536
194709
  evaluate(fractionA, fractionB) {
194537
194710
  this._curveA.fractionToPointAndDerivative(fractionA, this._rayA);
@@ -194546,7 +194719,7 @@ class BezierBezierIntersectionXYRRToRRD extends _numerics_Newton__WEBPACK_IMPORT
194546
194719
  * * geometryB is saved for later reference.
194547
194720
  * @internal
194548
194721
  */
194549
- class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_2__.NullGeometryHandler {
194722
+ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_3__.RecurseToCurvesGeometryHandler {
194550
194723
  /**
194551
194724
  * The constructor.
194552
194725
  * @param worldToLocal optional transform (possibly perspective) to project to xy plane for intersection.
@@ -194555,7 +194728,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194555
194728
  * @param extendB flag for extension of geometryB.
194556
194729
  * @param tolerance optional distance tolerance for coincidence.
194557
194730
  */
194558
- constructor(worldToLocal, extendA, geometryB, extendB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallMetricDistance) {
194731
+ constructor(worldToLocal, extendA, geometryB, extendB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallMetricDistance) {
194559
194732
  super();
194560
194733
  this._extendA = extendA;
194561
194734
  this._geometryB = geometryB;
@@ -194567,14 +194740,12 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194567
194740
  if (!this._worldToLocalAffine)
194568
194741
  this._worldToLocalPerspective = worldToLocal.clone();
194569
194742
  }
194570
- this._coincidentGeometryContext = _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_4__.CoincidentGeometryQuery.create(tolerance);
194743
+ this._coincidentGeometryContext = _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_5__.CoincidentGeometryQuery.create(tolerance);
194571
194744
  this._results = [];
194572
194745
  }
194573
- /** Reset the geometry and flags, leaving all other parts unchanged (and preserving accumulated intersections) */
194574
- resetGeometry(extendA, geometryB, extendB) {
194575
- this._extendA = extendA;
194746
+ /** Reset the geometry, leaving all other parts unchanged (and preserving accumulated intersections). */
194747
+ resetGeometry(geometryB) {
194576
194748
  this._geometryB = geometryB;
194577
- this._extendB = extendB;
194578
194749
  }
194579
194750
  acceptFraction(extend0, fraction, extend1, fractionTol = 1.0e-12) {
194580
194751
  if (!extend0 && fraction < -fractionTol)
@@ -194584,12 +194755,12 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194584
194755
  return true;
194585
194756
  }
194586
194757
  /** Test the fraction by strict parameter, but allow toleranced distance test at ends. */
194587
- acceptFractionOnLine(extend0, fraction, extend1, pointA, pointB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallMetricDistance) {
194758
+ acceptFractionOnLine(extend0, fraction, extend1, pointA, pointB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallMetricDistance) {
194588
194759
  if (!extend0 && fraction < 0) {
194589
- return _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isDistanceWithinTol(fraction * pointA.distanceXY(pointB), tolerance);
194760
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isDistanceWithinTol(fraction * pointA.distanceXY(pointB), tolerance);
194590
194761
  }
194591
194762
  else if (!extend1 && fraction > 1.0)
194592
- return _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isDistanceWithinTol((fraction - 1.0) * pointA.distanceXY(pointB), tolerance);
194763
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isDistanceWithinTol((fraction - 1.0) * pointA.distanceXY(pointB), tolerance);
194593
194764
  return true;
194594
194765
  }
194595
194766
  /**
@@ -194602,9 +194773,6 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194602
194773
  this._results = [];
194603
194774
  return result;
194604
194775
  }
194605
- sameCurveAndFraction(cp, fraction, detail) {
194606
- return cp === detail.curve && _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isAlmostEqualNumber(fraction, detail.fraction);
194607
- }
194608
194776
  /**
194609
194777
  * Record the pre-computed intersection between two curves. Filter by extension rules. Record with fraction mapping.
194610
194778
  * @param localFractionA intersection fraction local to the subcurve of cpA between fractionA0 and fractionA1
@@ -194625,14 +194793,14 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194625
194793
  intervalDetails.detailA.hasFraction1 &&
194626
194794
  intervalDetails.detailB.hasFraction1;
194627
194795
  if (isInterval) {
194628
- globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction, fractionA1);
194629
- globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction, fractionB1);
194630
- globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction1, fractionA1);
194631
- globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction1, fractionB1);
194796
+ globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction, fractionA1);
194797
+ globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction, fractionB1);
194798
+ globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction1, fractionA1);
194799
+ globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction1, fractionB1);
194632
194800
  }
194633
194801
  else {
194634
- globalFractionA = globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
194635
- globalFractionB = globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
194802
+ globalFractionA = globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
194803
+ globalFractionB = globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
194636
194804
  }
194637
194805
  // ignore duplicate of most recent pair
194638
194806
  const numPrevious = this._results.length;
@@ -194640,31 +194808,31 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194640
194808
  const oldDetailA = this._results[numPrevious - 1].detailA;
194641
194809
  const oldDetailB = this._results[numPrevious - 1].detailB;
194642
194810
  if (reversed) {
194643
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailB) &&
194644
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailA))
194811
+ if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
194812
+ oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
194645
194813
  return;
194646
194814
  }
194647
194815
  else {
194648
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailA) &&
194649
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailB))
194816
+ if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
194817
+ oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
194650
194818
  return;
194651
194819
  }
194652
194820
  }
194653
- const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, cpA.fractionToPoint(globalFractionA));
194654
- const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, cpB.fractionToPoint(globalFractionB));
194821
+ const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, cpA.fractionToPoint(globalFractionA));
194822
+ const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, cpB.fractionToPoint(globalFractionB));
194655
194823
  if (isInterval) {
194656
194824
  detailA.captureFraction1Point1(globalFractionA1, cpA.fractionToPoint(globalFractionA1));
194657
194825
  detailB.captureFraction1Point1(globalFractionB1, cpB.fractionToPoint(globalFractionB1));
194658
194826
  }
194659
194827
  else {
194660
- detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveIntervalRole.isolated);
194661
- detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveIntervalRole.isolated);
194828
+ detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveIntervalRole.isolated);
194829
+ detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveIntervalRole.isolated);
194662
194830
  }
194663
194831
  if (reversed) {
194664
- this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveLocationDetailPair(detailB, detailA));
194832
+ this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetailPair(detailB, detailA));
194665
194833
  }
194666
194834
  else {
194667
- this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveLocationDetailPair(detailA, detailB));
194835
+ this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetailPair(detailA, detailB));
194668
194836
  }
194669
194837
  }
194670
194838
  /**
@@ -194692,7 +194860,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194692
194860
  if (overlap) {
194693
194861
  this.recordPointWithLocalFractions(overlap.detailA.fraction, cpA, fractionA0, fractionA1, overlap.detailB.fraction, cpB, fractionB0, fractionB1, reversed, overlap);
194694
194862
  }
194695
- else if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dXYTransverseIntersectionUnbounded(pointA0, pointA1, pointB0, pointB1, uv)) {
194863
+ else if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dXYTransverseIntersectionUnbounded(pointA0, pointA1, pointB0, pointB1, uv)) {
194696
194864
  if (this.acceptFractionOnLine(extendA0, uv.x, extendA1, pointA0, pointA1, this._coincidentGeometryContext.tolerance) &&
194697
194865
  this.acceptFractionOnLine(extendB0, uv.y, extendB1, pointB0, pointB1, this._coincidentGeometryContext.tolerance)) {
194698
194866
  this.recordPointWithLocalFractions(uv.x, cpA, fractionA0, fractionA1, uv.y, cpB, fractionB0, fractionB1, reversed);
@@ -194712,7 +194880,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194712
194880
  this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1, hA1);
194713
194881
  this._worldToLocalPerspective.multiplyPoint3d(pointB0, 1, hB0);
194714
194882
  this._worldToLocalPerspective.multiplyPoint3d(pointB1, 1, hB1);
194715
- const fractionAB = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYTransverseIntersectionUnbounded(hA0, hA1, hB0, hB1);
194883
+ const fractionAB = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYTransverseIntersectionUnbounded(hA0, hA1, hB0, hB1);
194716
194884
  if (fractionAB !== undefined) {
194717
194885
  const fractionA = fractionAB.x;
194718
194886
  const fractionB = fractionAB.y;
@@ -194755,17 +194923,17 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194755
194923
  const data = arc.toTransformedPoint4d(this._worldToLocalPerspective);
194756
194924
  const pointA0H = this._worldToLocalPerspective.multiplyPoint3d(pointA0, 1);
194757
194925
  const pointA1H = this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1);
194758
- const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.center);
194759
- const beta = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector0);
194760
- const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector90);
194761
- const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
194762
- const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
194763
- const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
194764
- const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
194926
+ const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.center);
194927
+ const beta = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector0);
194928
+ const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector90);
194929
+ const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
194930
+ const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
194931
+ const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
194932
+ const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
194765
194933
  for (let i = 0; i < numRoots; i++) {
194766
194934
  const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
194767
194935
  const arcFraction = data.sweep.radiansToSignedPeriodicFraction(radians.atUncheckedIndex(i));
194768
- const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
194936
+ const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
194769
194937
  if (lineFraction !== undefined &&
194770
194938
  this.acceptFraction(extendA0, lineFraction, extendA1) &&
194771
194939
  this.acceptFraction(extendB0, arcFraction, extendB1)) {
@@ -194781,19 +194949,19 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194781
194949
  pointA0Local = this._worldToLocalAffine.multiplyPoint3d(pointA0);
194782
194950
  pointA1Local = this._worldToLocalAffine.multiplyPoint3d(pointA1);
194783
194951
  }
194784
- const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.center, 1);
194785
- const beta = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector0, 0);
194786
- const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector90, 0);
194787
- const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
194788
- const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
194789
- const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
194790
- const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
194952
+ const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.center, 1);
194953
+ const beta = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector0, 0);
194954
+ const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector90, 0);
194955
+ const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
194956
+ const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
194957
+ const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
194958
+ const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
194791
194959
  const lineFractionTol = 1.0e-10;
194792
194960
  const arcFractionTol = 1.0e-7;
194793
194961
  for (let i = 0; i < numRoots; i++) {
194794
194962
  const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
194795
194963
  const arcFraction = data.sweep.radiansToSignedPeriodicFraction(radians.atUncheckedIndex(i));
194796
- const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
194964
+ const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
194797
194965
  if (lineFraction !== undefined &&
194798
194966
  this.acceptFraction(extendA0, lineFraction, extendA1, lineFractionTol) &&
194799
194967
  this.acceptFraction(extendB0, arcFraction, extendB1, arcFractionTol)) {
@@ -194814,7 +194982,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194814
194982
  const localB = inverseA.multiplyMatrixMatrix(matrixB); // localB->localA transform
194815
194983
  const ellipseRadians = [];
194816
194984
  const circleRadians = [];
194817
- _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(localB.coffs[2], localB.coffs[5], localB.coffs[8], // center xyw
194985
+ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(localB.coffs[2], localB.coffs[5], localB.coffs[8], // center xyw
194818
194986
  localB.coffs[0], localB.coffs[3], localB.coffs[6], // vector0 xyw
194819
194987
  localB.coffs[1], localB.coffs[4], localB.coffs[7], // vector90 xyw
194820
194988
  ellipseRadians, circleRadians);
@@ -194845,14 +195013,14 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194845
195013
  if (this._worldToLocalPerspective) {
194846
195014
  const dataA = cpA.toTransformedPoint4d(this._worldToLocalPerspective);
194847
195015
  const dataB = cpB.toTransformedPoint4d(this._worldToLocalPerspective);
194848
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
194849
- matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataB.vector0, dataB.vector0.w, dataB.vector90, dataA.vector90.w, dataB.center, dataB.center.w);
195016
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
195017
+ matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataB.vector0, dataB.vector0.w, dataB.vector90, dataA.vector90.w, dataB.center, dataB.center.w);
194850
195018
  }
194851
195019
  else {
194852
195020
  const dataA = cpA.toTransformedVectors(this._worldToLocalAffine);
194853
195021
  const dataB = cpB.toTransformedVectors(this._worldToLocalAffine);
194854
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
194855
- matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataB.vector0, 0, dataB.vector90, 0, dataB.center, 1);
195022
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
195023
+ matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataB.vector0, 0, dataB.vector90, 0, dataB.center, 1);
194856
195024
  }
194857
195025
  const conditionA = matrixA.conditionNumber();
194858
195026
  const conditionB = matrixB.conditionNumber();
@@ -194882,11 +195050,11 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194882
195050
  let matrixA;
194883
195051
  if (this._worldToLocalPerspective) {
194884
195052
  const dataA = cpA.toTransformedPoint4d(this._worldToLocalPerspective);
194885
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
195053
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
194886
195054
  }
194887
195055
  else {
194888
195056
  const dataA = cpA.toTransformedVectors(this._worldToLocalAffine);
194889
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
195057
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
194890
195058
  }
194891
195059
  // The worldToLocal has moved the arc vectors into local space.
194892
195060
  // matrixA captures the xyw parts (ignoring z)
@@ -194897,7 +195065,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194897
195065
  const orderF = cpB.order; // order of the beziers for simple coordinates
194898
195066
  const orderG = 2 * orderF - 1; // order of the (single) bezier for squared coordinates.
194899
195067
  const coffF = new Float64Array(orderF);
194900
- const univariateBezierG = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderG);
195068
+ const univariateBezierG = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__.UnivariateBezier(orderG);
194901
195069
  const axx = matrixAInverse.at(0, 0);
194902
195070
  const axy = matrixAInverse.at(0, 1);
194903
195071
  const axz = 0.0;
@@ -194968,13 +195136,13 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
194968
195136
  dispatchBezierBezierStrokeFirst(bezierA, bcurveA, strokeCountA, bezierB, bcurveB, _strokeCountB, univariateBezierB, // caller-allocated for univariate coefficients.
194969
195137
  reversed) {
194970
195138
  if (!this._xyzwA0)
194971
- this._xyzwA0 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195139
+ this._xyzwA0 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
194972
195140
  if (!this._xyzwA1)
194973
- this._xyzwA1 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195141
+ this._xyzwA1 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
194974
195142
  if (!this._xyzwPlane)
194975
- this._xyzwPlane = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195143
+ this._xyzwPlane = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
194976
195144
  if (!this._xyzwB)
194977
- this._xyzwB = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195145
+ this._xyzwB = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
194978
195146
  /*
194979
195147
  const roots = univariateBezierG.roots(0.0, true);
194980
195148
  if (roots) {
@@ -195000,7 +195168,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195000
195168
  for (let i = 1; i <= strokeCountA; i++, f0 = f1, this._xyzwA0.setFrom(this._xyzwA1)) {
195001
195169
  f1 = i * df;
195002
195170
  bezierA.fractionToPoint4d(f1, this._xyzwA1);
195003
- _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createPlanePointPointZ(this._xyzwA0, this._xyzwA1, this._xyzwPlane);
195171
+ _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.createPlanePointPointZ(this._xyzwA0, this._xyzwA1, this._xyzwPlane);
195004
195172
  bezierB.poleProductsXYZW(univariateBezierB.coffs, this._xyzwPlane.x, this._xyzwPlane.y, this._xyzwPlane.z, this._xyzwPlane.w);
195005
195173
  let errors = 0;
195006
195174
  const roots = univariateBezierB.roots(0.0, true);
@@ -195008,11 +195176,11 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195008
195176
  for (const r of roots) {
195009
195177
  let bezierBFraction = r;
195010
195178
  bezierB.fractionToPoint4d(bezierBFraction, this._xyzwB);
195011
- const segmentAFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(this._xyzwA0, this._xyzwA1, this._xyzwB);
195012
- if (segmentAFraction && _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isIn01WithTolerance(segmentAFraction, intervalTolerance)) {
195013
- let bezierAFraction = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(f0, segmentAFraction, f1);
195179
+ const segmentAFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(this._xyzwA0, this._xyzwA1, this._xyzwB);
195180
+ if (segmentAFraction && _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isIn01WithTolerance(segmentAFraction, intervalTolerance)) {
195181
+ let bezierAFraction = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(f0, segmentAFraction, f1);
195014
195182
  const xyMatchingFunction = new BezierBezierIntersectionXYRRToRRD(bezierA, bezierB);
195015
- const newtonSearcher = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_0__.Newton2dUnboundedWithDerivative(xyMatchingFunction);
195183
+ const newtonSearcher = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_1__.Newton2dUnboundedWithDerivative(xyMatchingFunction);
195016
195184
  newtonSearcher.setUV(bezierAFraction, bezierBFraction);
195017
195185
  if (newtonSearcher.runIterations()) {
195018
195186
  bezierAFraction = newtonSearcher.getU();
@@ -195055,8 +195223,8 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195055
195223
  const rangeB = this.getRanges(bezierSpanB);
195056
195224
  const orderA = bcurveA.order;
195057
195225
  const orderB = bcurveB.order;
195058
- const univariateCoffsA = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderA);
195059
- const univariateCoffsB = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderB);
195226
+ const univariateCoffsA = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__.UnivariateBezier(orderA);
195227
+ const univariateCoffsB = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__.UnivariateBezier(orderB);
195060
195228
  for (let a = 0; a < numA; a++) {
195061
195229
  for (let b = 0; b < numB; b++) {
195062
195230
  if (rangeA[a].intersectsRangeXY(rangeB[b])) {
@@ -195080,7 +195248,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195080
195248
  return this._worldToLocalPerspective.multiplyPoint3d(xyz, w);
195081
195249
  if (this._worldToLocalAffine)
195082
195250
  return this._worldToLocalAffine.multiplyXYZW(xyz.x, xyz.y, xyz.z, w);
195083
- return _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createFromPointAndWeight(xyz, w);
195251
+ return _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.createFromPointAndWeight(xyz, w);
195084
195252
  }
195085
195253
  mapNPCPlaneToWorld(npcPlane, worldPlane) {
195086
195254
  // for NPC pointY, Y^ * H = 0 is "on" plane H. (Hat is transpose)
@@ -195104,7 +195272,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195104
195272
  dispatchSegmentBsplineCurve(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, bcurve, extendB, reversed) {
195105
195273
  const pointA0H = this.projectPoint(pointA0);
195106
195274
  const pointA1H = this.projectPoint(pointA1);
195107
- const planeCoffs = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createPlanePointPointZ(pointA0H, pointA1H);
195275
+ const planeCoffs = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.createPlanePointPointZ(pointA0H, pointA1H);
195108
195276
  this.mapNPCPlaneToWorld(planeCoffs, planeCoffs);
195109
195277
  // NOW .. we have a plane in world space. Intersect it with the bspline:
195110
195278
  const intersections = [];
@@ -195116,7 +195284,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195116
195284
  const fractionB = detail.fraction;
195117
195285
  const curvePoint = detail.point;
195118
195286
  const curvePointH = this.projectPoint(curvePoint);
195119
- const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, curvePointH);
195287
+ const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, curvePointH);
195120
195288
  if (lineFraction !== undefined && this.acceptFraction(extendA0, lineFraction, extendA1) &&
195121
195289
  this.acceptFraction(extendB, fractionB, extendB)) {
195122
195290
  this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, fractionB, bcurve, 0, 1, reversed);
@@ -195220,72 +195388,130 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195220
195388
  transform.multiplyPoint3d(pointB0, this._workPointB0);
195221
195389
  transform.multiplyPoint3d(pointB1, this._workPointB1);
195222
195390
  }
195391
+ /** Low level dispatch of curve collection. */
195392
+ dispatchCurveCollection(geomA, geomAHandler) {
195393
+ const geomB = this._geometryB; // save
195394
+ if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection))
195395
+ return;
195396
+ for (const child of geomB.children) {
195397
+ this.resetGeometry(child);
195398
+ geomAHandler(geomA);
195399
+ }
195400
+ this._geometryB = geomB; // restore
195401
+ }
195402
+ /** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
195403
+ dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
195404
+ if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex))
195405
+ return;
195406
+ if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
195407
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!!"call handleCurveChainWithDistanceIndex(geomA) instead");
195408
+ return;
195409
+ }
195410
+ const index0 = this._results.length;
195411
+ const geomB = this._geometryB; // save
195412
+ for (const child of geomB.path.children) {
195413
+ this.resetGeometry(child);
195414
+ geomAHandler(geomA);
195415
+ }
195416
+ this.resetGeometry(geomB); // restore
195417
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
195418
+ }
195223
195419
  /** Double dispatch handler for strongly typed segment. */
195224
195420
  handleLineSegment3d(segmentA) {
195225
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
195421
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
195226
195422
  const segmentB = this._geometryB;
195227
195423
  this.dispatchSegmentSegment(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, segmentB, this._extendB, segmentB.point0Ref, 0.0, segmentB.point1Ref, 1.0, this._extendB, false);
195228
195424
  }
195229
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
195425
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
195230
195426
  this.computeSegmentLineString(segmentA, this._extendA, this._geometryB, this._extendB, false);
195231
195427
  }
195232
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
195428
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
195233
195429
  this.dispatchSegmentArc(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, this._extendB, false);
195234
195430
  }
195235
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3d) {
195431
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3d) {
195236
195432
  this.dispatchSegmentBsplineCurve(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, false);
195237
195433
  }
195434
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
195435
+ this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
195436
+ }
195437
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
195438
+ this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
195439
+ }
195238
195440
  return undefined;
195239
195441
  }
195240
195442
  /** Double dispatch handler for strongly typed linestring. */
195241
195443
  handleLineString3d(lsA) {
195242
- if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
195444
+ if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
195243
195445
  const lsB = this._geometryB;
195244
195446
  this.computeLineStringLineString(lsA, lsB, false);
195245
195447
  }
195246
- else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
195448
+ else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
195247
195449
  this.computeSegmentLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
195248
195450
  }
195249
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
195451
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
195250
195452
  this.computeArcLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
195251
195453
  }
195252
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3d) {
195454
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3d) {
195253
195455
  this.dispatchLineStringBSplineCurve(lsA, this._extendA, this._geometryB, this._extendB, false);
195254
195456
  }
195457
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
195458
+ this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
195459
+ }
195460
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
195461
+ this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
195462
+ }
195255
195463
  return undefined;
195256
195464
  }
195257
195465
  /** Double dispatch handler for strongly typed arc. */
195258
195466
  handleArc3d(arc0) {
195259
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
195467
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
195260
195468
  this.dispatchSegmentArc(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, arc0, this._extendA, this._extendA, true);
195261
195469
  }
195262
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
195470
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
195263
195471
  this.computeArcLineString(arc0, this._extendA, this._geometryB, this._extendB, false);
195264
195472
  }
195265
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
195473
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
195266
195474
  this.dispatchArcArc(arc0, this._extendA, this._geometryB, this._extendB, false);
195267
195475
  }
195268
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3d) {
195476
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3d) {
195269
195477
  this.dispatchArcBsplineCurve3d(arc0, this._extendA, this._geometryB, this._extendB, false);
195270
195478
  }
195479
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
195480
+ this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
195481
+ }
195482
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
195483
+ this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
195484
+ }
195271
195485
  return undefined;
195272
195486
  }
195273
195487
  /** Double dispatch handler for strongly typed bspline curve. */
195274
195488
  handleBSplineCurve3d(curve) {
195275
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
195489
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
195276
195490
  this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, curve, this._extendA, true);
195277
195491
  }
195278
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
195492
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
195279
195493
  this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB, curve, this._extendA, true);
195280
195494
  }
195281
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
195495
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
195282
195496
  this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB, curve, this._extendA, true);
195283
195497
  }
195284
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3dBase) {
195498
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3dBase) {
195285
195499
  this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
195286
195500
  }
195501
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
195502
+ this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
195503
+ }
195504
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
195505
+ this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
195506
+ }
195287
195507
  return undefined;
195288
195508
  }
195509
+ /** Double dispatch handler for strongly typed CurveChainWithDistanceIndex. */
195510
+ handleCurveChainWithDistanceIndex(chain) {
195511
+ super.handleCurveChainWithDistanceIndex(chain);
195512
+ // if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
195513
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
195514
+ }
195289
195515
  /** Double dispatch handler for strongly typed homogeneous bspline curve .. */
195290
195516
  handleBSplineCurve3dH(_curve) {
195291
195517
  /*
@@ -195304,19 +195530,19 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
195304
195530
  return undefined;
195305
195531
  }
195306
195532
  }
195307
- CurveCurveIntersectXY._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_15__.Vector2d.create();
195308
- CurveCurveIntersectXY._workPointA0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195309
- CurveCurveIntersectXY._workPointA1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195310
- CurveCurveIntersectXY._workPointB0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195311
- CurveCurveIntersectXY._workPointB1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
195312
- CurveCurveIntersectXY._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195313
- CurveCurveIntersectXY._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195314
- CurveCurveIntersectXY._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195315
- CurveCurveIntersectXY._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195316
- CurveCurveIntersectXY._workPointA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195317
- CurveCurveIntersectXY._workPointA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195318
- CurveCurveIntersectXY._workPointB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195319
- CurveCurveIntersectXY._workPointB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
195533
+ CurveCurveIntersectXY._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_18__.Vector2d.create();
195534
+ CurveCurveIntersectXY._workPointA0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
195535
+ CurveCurveIntersectXY._workPointA1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
195536
+ CurveCurveIntersectXY._workPointB0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
195537
+ CurveCurveIntersectXY._workPointB1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
195538
+ CurveCurveIntersectXY._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195539
+ CurveCurveIntersectXY._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195540
+ CurveCurveIntersectXY._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195541
+ CurveCurveIntersectXY._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195542
+ CurveCurveIntersectXY._workPointA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195543
+ CurveCurveIntersectXY._workPointA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195544
+ CurveCurveIntersectXY._workPointB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195545
+ CurveCurveIntersectXY._workPointB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
195320
195546
 
195321
195547
 
195322
195548
 
@@ -195333,17 +195559,20 @@ __webpack_require__.r(__webpack_exports__);
195333
195559
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
195334
195560
  /* harmony export */ CurveCurveIntersectXYZ: () => (/* binding */ CurveCurveIntersectXYZ)
195335
195561
  /* harmony export */ });
195336
- /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
195337
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
195338
- /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
195339
- /* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
195340
- /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
195341
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
195342
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
195343
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
195344
- /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
195345
- /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
195346
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
195562
+ /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
195563
+ /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
195564
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
195565
+ /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
195566
+ /* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
195567
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
195568
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
195569
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
195570
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
195571
+ /* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
195572
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
195573
+ /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
195574
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
195575
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
195347
195576
  /*---------------------------------------------------------------------------------------------
195348
195577
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
195349
195578
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -195362,6 +195591,9 @@ __webpack_require__.r(__webpack_exports__);
195362
195591
 
195363
195592
 
195364
195593
 
195594
+
195595
+
195596
+
195365
195597
  // cspell:word XYRR
195366
195598
  /**
195367
195599
  * Handler class for XYZ intersections between _geometryB and another geometry.
@@ -195369,7 +195601,7 @@ __webpack_require__.r(__webpack_exports__);
195369
195601
  * * geometryB is saved for later reference.
195370
195602
  * @internal
195371
195603
  */
195372
- class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_0__.NullGeometryHandler {
195604
+ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__.RecurseToCurvesGeometryHandler {
195373
195605
  /**
195374
195606
  * @param extendA flag to enable using extension of the other geometry.
195375
195607
  * @param geometryB second curve for intersection. Saved for reference by specific handler methods.
@@ -195382,6 +195614,10 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195382
195614
  this._extendB = extendB;
195383
195615
  this._results = [];
195384
195616
  }
195617
+ /** Reset the geometry, leaving all other parts unchanged (and preserving accumulated intersections). */
195618
+ resetGeometry(geometryB) {
195619
+ this._geometryB = geometryB;
195620
+ }
195385
195621
  /**
195386
195622
  * Return the results structure for the intersection calculation, structured as an array of CurveLocationDetailPair.
195387
195623
  * @param reinitialize if true, a new results structure is created for use by later calls.
@@ -195406,21 +195642,21 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195406
195642
  * Record with fraction mapping.
195407
195643
  */
195408
195644
  recordPointWithLocalFractions(localFractionA, cpA, fractionA0, fractionA1, localFractionB, cpB, fractionB0, fractionB1, reversed) {
195409
- const globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
195410
- const globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
195411
- // ignore duplicate of most recent point . ..
195645
+ const globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
195646
+ const globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
195647
+ // ignore duplicate of most recent point
195412
195648
  const numPrevious = this._results.length;
195413
195649
  if (numPrevious > 0) {
195414
- const topFractionA = this._results[numPrevious - 1].detailA.fraction;
195415
- const topFractionB = this._results[numPrevious - 1].detailB.fraction;
195650
+ const oldDetailA = this._results[numPrevious - 1].detailA;
195651
+ const oldDetailB = this._results[numPrevious - 1].detailB;
195416
195652
  if (reversed) {
195417
- if (_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(topFractionA, globalFractionB) &&
195418
- _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(topFractionB, globalFractionA))
195653
+ if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
195654
+ oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
195419
195655
  return;
195420
195656
  }
195421
195657
  else {
195422
- if (_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(topFractionA, globalFractionA) &&
195423
- _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(topFractionB, globalFractionB))
195658
+ if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
195659
+ oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
195424
195660
  return;
195425
195661
  }
195426
195662
  }
@@ -195428,16 +195664,16 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195428
195664
  const pointB = cpB.fractionToPoint(globalFractionB);
195429
195665
  if (!pointA.isAlmostEqualMetric(pointB))
195430
195666
  return;
195431
- const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, pointA);
195432
- detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveIntervalRole.isolated);
195433
- const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, pointB);
195434
- detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveIntervalRole.isolated);
195667
+ const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, pointA);
195668
+ detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveIntervalRole.isolated);
195669
+ const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, pointB);
195670
+ detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveIntervalRole.isolated);
195435
195671
  if (reversed) {
195436
- const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveLocationDetailPair(detailB, detailA);
195672
+ const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair(detailB, detailA);
195437
195673
  this._results.push(pair);
195438
195674
  }
195439
195675
  else {
195440
- const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveLocationDetailPair(detailA, detailB);
195676
+ const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair(detailA, detailB);
195441
195677
  this._results.push(pair);
195442
195678
  }
195443
195679
  }
@@ -195448,7 +195684,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195448
195684
  */
195449
195685
  computeSegmentSegment3D(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, cpB, extendB0, pointB0, fractionB0, pointB1, fractionB1, extendB1, reversed) {
195450
195686
  const uv = CurveCurveIntersectXYZ._workVector2dA;
195451
- if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_3__.SmallSystem.lineSegment3dClosestApproachUnbounded(pointA0, pointA1, pointB0, pointB1, uv) &&
195687
+ if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestApproachUnbounded(pointA0, pointA1, pointB0, pointB1, uv) &&
195452
195688
  this.acceptFraction(extendA0, uv.x, extendA1) && this.acceptFraction(extendB0, uv.y, extendB1)) {
195453
195689
  this.recordPointWithLocalFractions(uv.x, cpA, fractionA0, fractionA1, uv.y, cpB, fractionB0, fractionB1, reversed);
195454
195690
  }
@@ -195475,20 +195711,20 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195475
195711
  * @param vectorC second candidate for additional in-plane vector
195476
195712
  */
195477
195713
  createPlaneWithPreferredPerpendicular(origin, vectorA, cosineValue, vectorB, vectorC) {
195478
- cosineValue = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.restrictToInterval(Math.abs(cosineValue), 0.0, 1.0 - _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallFraction);
195714
+ cosineValue = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.restrictToInterval(Math.abs(cosineValue), 0.0, 1.0 - _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallFraction);
195479
195715
  const dotAA = vectorA.magnitudeSquared();
195480
195716
  const dotBB = vectorB.magnitudeSquared();
195481
195717
  const dotAB = Math.abs(vectorA.dotProduct(vectorB));
195482
195718
  const cross = vectorA.unitCrossProduct(dotAB * dotAB <= cosineValue * cosineValue * dotAA * dotBB ? vectorB : vectorC);
195483
195719
  if (cross)
195484
- return _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_4__.Plane3dByOriginAndUnitNormal.create(origin, cross);
195720
+ return _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(origin, cross);
195485
195721
  return undefined;
195486
195722
  }
195487
195723
  // Caller accesses data from a linestring or segment and passes it here.
195488
195724
  // The line segment in question might be (a) a full line segment or (b) a fragment within a linestring.
195489
195725
  // The fraction and extend parameters allow all combinations to be passed in.
195490
195726
  dispatchSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
195491
- const lineVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Vector3d.createStartEnd(pointA0, pointA1);
195727
+ const lineVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Vector3d.createStartEnd(pointA0, pointA1);
195492
195728
  const plane = this.createPlaneWithPreferredPerpendicular(pointA0, lineVector, 0.94, arc.perpendicularVector, arc.vector0);
195493
195729
  if (plane !== undefined) {
195494
195730
  const candidates = [];
@@ -195497,7 +195733,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195497
195733
  let linePoint;
195498
195734
  for (const c of candidates) {
195499
195735
  if (this.acceptFraction(extendB0, c.fraction, extendB1)) {
195500
- lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_3__.SmallSystem.lineSegment3dClosestPointUnbounded(pointA0, pointA1, c.point);
195736
+ lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestPointUnbounded(pointA0, pointA1, c.point);
195501
195737
  if (lineFraction !== undefined) {
195502
195738
  linePoint = pointA0.interpolate(lineFraction, pointA1, linePoint);
195503
195739
  if (linePoint.isAlmostEqualMetric(c.point)
@@ -195518,7 +195754,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195518
195754
  if (otherVectors !== undefined) {
195519
195755
  const ellipseRadians = [];
195520
195756
  const circleRadians = [];
195521
- _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_3__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(otherVectors.center.x, otherVectors.center.y, 1.0, otherVectors.vector0.x, otherVectors.vector0.y, 0.0, otherVectors.vector90.x, otherVectors.vector90.y, 0.0, ellipseRadians, circleRadians);
195757
+ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(otherVectors.center.x, otherVectors.center.y, 1.0, otherVectors.vector0.x, otherVectors.vector0.y, 0.0, otherVectors.vector90.x, otherVectors.vector90.y, 0.0, ellipseRadians, circleRadians);
195522
195758
  for (let i = 0; i < ellipseRadians.length; i++) {
195523
195759
  const fractionA = cpA.sweep.radiansToSignedPeriodicFraction(circleRadians[i]);
195524
195760
  const fractionB = cpB.sweep.radiansToSignedPeriodicFraction(ellipseRadians[i]);
@@ -195538,8 +195774,8 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195538
195774
  // 2) accept points that appear in both intersection sets.
195539
195775
  // If arcs are in parallel planes -- no intersections.
195540
195776
  // If arcs are in the same plane -- xy intersection in that plane.
195541
- const planeA = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_4__.Plane3dByOriginAndUnitNormal.create(cpA.center, cpA.perpendicularVector);
195542
- const planeB = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_4__.Plane3dByOriginAndUnitNormal.create(cpB.center, cpB.perpendicularVector);
195777
+ const planeA = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(cpA.center, cpA.perpendicularVector);
195778
+ const planeB = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(cpB.center, cpB.perpendicularVector);
195543
195779
  if (planeA === undefined || planeB === undefined)
195544
195780
  return;
195545
195781
  if (planeA.getNormalRef().isParallelTo(planeB.getNormalRef())) {
@@ -195940,72 +196176,130 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
195940
196176
  }
195941
196177
  }
195942
196178
  }
196179
+ /** Low level dispatch of curve collection. */
196180
+ dispatchCurveCollection(geomA, geomAHandler) {
196181
+ const geomB = this._geometryB; // save
196182
+ if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection))
196183
+ return;
196184
+ for (const child of geomB.children) {
196185
+ this.resetGeometry(child);
196186
+ geomAHandler(geomA);
196187
+ }
196188
+ this._geometryB = geomB; // restore
196189
+ }
196190
+ /** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
196191
+ dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
196192
+ if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex))
196193
+ return;
196194
+ if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
196195
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!!"call handleCurveChainWithDistanceIndex(geomA) instead");
196196
+ return;
196197
+ }
196198
+ const index0 = this._results.length;
196199
+ const geomB = this._geometryB; // save
196200
+ for (const child of geomB.path.children) {
196201
+ this.resetGeometry(child);
196202
+ geomAHandler(geomA);
196203
+ }
196204
+ this.resetGeometry(geomB); // restore
196205
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
196206
+ }
195943
196207
  /** Double dispatch handler for strongly typed segment. */
195944
196208
  handleLineSegment3d(segmentA) {
195945
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d) {
196209
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
195946
196210
  const segmentB = this._geometryB;
195947
196211
  this.dispatchSegmentSegment(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, segmentB, this._extendB, segmentB.point0Ref, 0.0, segmentB.point1Ref, 1.0, this._extendB, false);
195948
196212
  }
195949
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
196213
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
195950
196214
  this.computeSegmentLineString(segmentA, this._extendA, this._geometryB, this._extendB, false);
195951
196215
  }
195952
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_8__.Arc3d) {
196216
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
195953
196217
  this.dispatchSegmentArc(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, this._extendB, false);
195954
196218
  }
195955
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3d) {
196219
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
195956
196220
  this.dispatchSegmentBsplineCurve(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, false);
195957
196221
  }
196222
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
196223
+ this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
196224
+ }
196225
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
196226
+ this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
196227
+ }
195958
196228
  return undefined;
195959
196229
  }
195960
196230
  /** double dispatch handler for strongly typed linestring. */
195961
196231
  handleLineString3d(lsA) {
195962
- if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
196232
+ if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
195963
196233
  const lsB = this._geometryB;
195964
196234
  this.computeLineStringLineString(lsA, lsB, false);
195965
196235
  }
195966
- else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d) {
196236
+ else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
195967
196237
  this.computeSegmentLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
195968
196238
  }
195969
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_8__.Arc3d) {
196239
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
195970
196240
  this.computeArcLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
195971
196241
  }
195972
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3d) {
196242
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
195973
196243
  this.dispatchLineStringBSplineCurve(lsA, this._extendA, this._geometryB, this._extendB, false);
195974
196244
  }
196245
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
196246
+ this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
196247
+ }
196248
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
196249
+ this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
196250
+ }
195975
196251
  return undefined;
195976
196252
  }
195977
196253
  /** Double dispatch handler for strongly typed arc. */
195978
196254
  handleArc3d(arc0) {
195979
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d) {
196255
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
195980
196256
  this.dispatchSegmentArc(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, arc0, this._extendA, this._extendA, true);
195981
196257
  }
195982
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
196258
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
195983
196259
  this.computeArcLineString(arc0, this._extendA, this._geometryB, this._extendB, false);
195984
196260
  }
195985
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_8__.Arc3d) {
196261
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
195986
196262
  this.dispatchArcArc(arc0, this._extendA, this._geometryB, this._extendB, false);
195987
196263
  }
195988
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3d) {
196264
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
195989
196265
  this.dispatchArcBsplineCurve3d(arc0, this._extendA, this._geometryB, this._extendB, false);
195990
196266
  }
196267
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
196268
+ this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
196269
+ }
196270
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
196271
+ this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
196272
+ }
195991
196273
  return undefined;
195992
196274
  }
195993
196275
  /** Double dispatch handler for strongly typed bspline curve. */
195994
196276
  handleBSplineCurve3d(curve) {
195995
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d) {
196277
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
195996
196278
  this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, curve, this._extendA, true);
195997
196279
  }
195998
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
196280
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
195999
196281
  this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB, curve, this._extendA, true);
196000
196282
  }
196001
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_8__.Arc3d) {
196283
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
196002
196284
  this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB, curve, this._extendA, true);
196003
196285
  }
196004
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3dBase) {
196286
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3dBase) {
196005
196287
  this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
196006
196288
  }
196289
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
196290
+ this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
196291
+ }
196292
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
196293
+ this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
196294
+ }
196007
196295
  return undefined;
196008
196296
  }
196297
+ /** Double dispatch handler for strongly typed CurveChainWithDistanceIndex. */
196298
+ handleCurveChainWithDistanceIndex(chain) {
196299
+ super.handleCurveChainWithDistanceIndex(chain);
196300
+ // if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
196301
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
196302
+ }
196009
196303
  /** Double dispatch handler for strongly typed homogeneous bspline curve. */
196010
196304
  handleBSplineCurve3dH(_curve) {
196011
196305
  /*
@@ -196024,11 +196318,11 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
196024
196318
  return undefined;
196025
196319
  }
196026
196320
  }
196027
- CurveCurveIntersectXYZ._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_10__.Vector2d.create();
196028
- CurveCurveIntersectXYZ._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Point3d.create();
196029
- CurveCurveIntersectXYZ._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Point3d.create();
196030
- CurveCurveIntersectXYZ._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Point3d.create();
196031
- CurveCurveIntersectXYZ._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Point3d.create();
196321
+ CurveCurveIntersectXYZ._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_13__.Vector2d.create();
196322
+ CurveCurveIntersectXYZ._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
196323
+ CurveCurveIntersectXYZ._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
196324
+ CurveCurveIntersectXYZ._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
196325
+ CurveCurveIntersectXYZ._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
196032
196326
 
196033
196327
 
196034
196328
 
@@ -196393,10 +196687,9 @@ class MultiChainCollector {
196393
196687
  captureCurve(candidate) {
196394
196688
  if (candidate instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive)
196395
196689
  this.captureCurvePrimitive(candidate);
196396
- else if (candidate instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection && candidate.children !== undefined) {
196397
- for (const c of candidate.children) {
196690
+ else if (candidate instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection) {
196691
+ for (const c of candidate.children)
196398
196692
  this.captureCurve(c);
196399
- }
196400
196693
  }
196401
196694
  }
196402
196695
  /** If allowed by the geometry type, move an endpoint. */
@@ -222599,7 +222892,7 @@ class Point4d extends _geometry3d_Plane3d__WEBPACK_IMPORTED_MODULE_0__.Plane3d {
222599
222892
  return undefined;
222600
222893
  }
222601
222894
  /**
222602
- * * Return xyz projection of spacePoint to the plane of the DPoint4d (understood as coefficients, not point coordinates)
222895
+ * * Return xyz projection of spacePoint to the plane (this Point4d is understood as plane coefficients, not point coordinates)
222603
222896
  * * If the xyz part of `this` are all zero, (a clone of) `spacePoint` is returned.
222604
222897
  */
222605
222898
  projectPointToPlane(spacePoint, result) {
@@ -223119,14 +223412,15 @@ class BezierCoffs {
223119
223412
  for (let i = 0; i < this.coffs.length; i++)
223120
223413
  this.coffs[i] += a;
223121
223414
  }
223122
- /** Compute parameter values where the bezier value matches _targetValue.
223415
+ /** Compute parameter values where the bezier value matches targetValue.
223123
223416
  * * The base class finds roots only in 01. (i.e. ignores _restrictTo01)
223124
- * * Order-specific implementations apply special case analytic logic, e.g. for degree 1,2,3,4.
223417
+ * * Order-specific implementations apply special case analytic logic, e.g. for degree 1,2,3,4.
223125
223418
  */
223126
223419
  roots(targetValue, _restrictTo01) {
223127
223420
  const bezier = UnivariateBezier.create(this);
223128
223421
  bezier.addInPlace(-targetValue);
223129
- return UnivariateBezier.deflateRoots01(bezier);
223422
+ const roots = UnivariateBezier.deflateRoots(bezier);
223423
+ return this.filter01(roots, true);
223130
223424
  }
223131
223425
  /** Given an array of numbers, optionally remove those not in the 0..1 interval.
223132
223426
  * @param roots candidate values
@@ -223154,7 +223448,9 @@ class BezierCoffs {
223154
223448
  return undefined;
223155
223449
  }
223156
223450
  /** zero out all coefficients. */
223157
- zero() { this.coffs.fill(0); }
223451
+ zero() {
223452
+ this.coffs.fill(0);
223453
+ }
223158
223454
  /** Subdivide -- write results into caller-supplied bezier coffs (which must be of the same order) */
223159
223455
  subdivide(u, left, right) {
223160
223456
  const order = this.order;
@@ -223677,11 +223973,10 @@ class UnivariateBezier extends BezierCoffs {
223677
223973
  // first c0*b0 = a0
223678
223974
  // last c[orderC-1]*b1 = a[orderA-1]
223679
223975
  /** Find roots of a bezier polynomial
223680
- * * Only look for roots in 0..1
223681
223976
  * * As roots are found, deflate the polynomial.
223682
223977
  * * bezier coffs are changed (and order reduced) at each step.
223683
223978
  */
223684
- static deflateRoots01(bezier) {
223979
+ static deflateRoots(bezier) {
223685
223980
  const roots = [];
223686
223981
  const coffs = bezier.coffs;
223687
223982
  let a0, a1, segmentFraction, globalStartFraction, newtonFraction;
@@ -288076,7 +288371,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
288076
288371
  /***/ ((module) => {
288077
288372
 
288078
288373
  "use strict";
288079
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.3.0-dev.2","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.3.0-dev.2","@itwin/core-bentley":"workspace:^4.3.0-dev.2","@itwin/core-common":"workspace:^4.3.0-dev.2","@itwin/core-geometry":"workspace:^4.3.0-dev.2","@itwin/core-orbitgt":"workspace:^4.3.0-dev.2","@itwin/core-quantity":"workspace:^4.3.0-dev.2"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"4.0.0-dev.44","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"18.16.1","@types/sinon":"^10.0.15","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.3.10","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.44.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^15.0.4","source-map-loader":"^4.0.0","typescript":"~5.0.2","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.1.0","@itwin/object-storage-core":"^2.1.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
288374
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.3.0-dev.5","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.3.0-dev.5","@itwin/core-bentley":"workspace:^4.3.0-dev.5","@itwin/core-common":"workspace:^4.3.0-dev.5","@itwin/core-geometry":"workspace:^4.3.0-dev.5","@itwin/core-orbitgt":"workspace:^4.3.0-dev.5","@itwin/core-quantity":"workspace:^4.3.0-dev.5"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/certa":"workspace:*","@itwin/eslint-plugin":"4.0.0-dev.44","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^8.2.2","@types/node":"18.16.1","@types/sinon":"^10.0.15","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.3.10","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^8.44.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^15.0.4","source-map-loader":"^4.0.0","typescript":"~5.0.2","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.1.0","@itwin/object-storage-core":"^2.1.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
288080
288375
 
288081
288376
  /***/ })
288082
288377