@itwin/rpcinterface-full-stack-tests 4.3.0-dev.4 → 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.
@@ -149719,7 +149719,8 @@ var TileGraphicType;
149719
149719
  */
149720
149720
  class TileTreeReference /* implements RenderMemory.Consumer */ {
149721
149721
  /** Force a new tree owner / tile tree to be created for the current tile tree reference
149722
- /* @internal */
149722
+ * @internal
149723
+ */
149723
149724
  resetTreeOwner() { }
149724
149725
  /** Disclose *all* TileTrees use by this reference. This may include things like map tiles used for draping on terrain.
149725
149726
  * Override this and call super if you have such auxiliary trees.
@@ -150845,7 +150846,10 @@ __webpack_require__.r(__webpack_exports__);
150845
150846
  /** @packageDocumentation
150846
150847
  * @module Tiles
150847
150848
  */
150848
- /** @internal */
150849
+ /**
150850
+ * Class representing an ArcGIS error code.
150851
+ * @internal
150852
+ */
150849
150853
  var ArcGisErrorCode;
150850
150854
  (function (ArcGisErrorCode) {
150851
150855
  ArcGisErrorCode[ArcGisErrorCode["InvalidCredentials"] = 401] = "InvalidCredentials";
@@ -150854,7 +150858,10 @@ var ArcGisErrorCode;
150854
150858
  ArcGisErrorCode[ArcGisErrorCode["UnknownError"] = 1000] = "UnknownError";
150855
150859
  ArcGisErrorCode[ArcGisErrorCode["NoTokenService"] = 1001] = "NoTokenService";
150856
150860
  })(ArcGisErrorCode || (ArcGisErrorCode = {}));
150857
- /** @internal */
150861
+ /**
150862
+ * Class containing utilities relating to ArcGIS services and coordinate systems.
150863
+ * @internal
150864
+ */
150858
150865
  class ArcGisUtilities {
150859
150866
  static getBBoxString(range) {
150860
150867
  if (!range)
@@ -150912,6 +150919,12 @@ class ArcGisUtilities {
150912
150919
  }
150913
150920
  return sources;
150914
150921
  }
150922
+ /**
150923
+ * Get map layer sources from an ArcGIS query.
150924
+ * @param range Range for the query.
150925
+ * @param url URL for the query.
150926
+ * @returns List of map layer sources.
150927
+ */
150915
150928
  static async getSourcesFromQuery(range, url = "https://usgs.maps.arcgis.com/sharing/rest/search") {
150916
150929
  const sources = new Array();
150917
150930
  for (let start = 1; start > 0;) {
@@ -150931,11 +150944,11 @@ class ArcGisUtilities {
150931
150944
  return sources;
150932
150945
  }
150933
150946
  /**
150934
- * Parse the URL to check if it represent a valid ArcGIS service
150947
+ * Parse the URL to check if it represents a valid ArcGIS service
150935
150948
  * @param url URL to validate.
150936
150949
  * @param serviceType Service type to validate (i.e FeatureServer, MapServer)
150937
150950
  * @return Validation Status.
150938
- */
150951
+ */
150939
150952
  static validateUrl(url, serviceType) {
150940
150953
  const urlObj = new URL(url.toLowerCase());
150941
150954
  if (urlObj.pathname.includes("/rest/services/")) {
@@ -150958,10 +150971,10 @@ class ArcGisUtilities {
150958
150971
  * @param capabilitiesFilter List of capabilities 'keyword' that needs to be advertised in the service's metadata
150959
150972
  * in order to be valid. For example: 'Map', 'Query', etc
150960
150973
  * @param userName Username to use for legacy token based security.
150961
- * @param password Username to use for legacy token based security.
150974
+ * @param password Password to use for legacy token based security.
150962
150975
  * @param ignoreCache Flag to skip cache lookup (i.e. force a new server request)
150963
150976
  * @return Validation Status. If successful, a list of available sub-layers will also be returned.
150964
- */
150977
+ */
150965
150978
  static async validateSource(url, formatId, capabilitiesFilter, userName, password, ignoreCache) {
150966
150979
  const metadata = await this.getServiceJson(url, formatId, userName, password, ignoreCache);
150967
150980
  const json = metadata?.content;
@@ -151005,9 +151018,7 @@ class ArcGisUtilities {
151005
151018
  }
151006
151019
  return { status: _internal__WEBPACK_IMPORTED_MODULE_1__.MapLayerSourceStatus.Valid, subLayers };
151007
151020
  }
151008
- /**
151009
- * Validate MapService tiling metadata and checks if the tile tree is 'Google Maps' compatible.
151010
- */
151021
+ /** Validate MapService tiling metadata and checks if the tile tree is 'Google Maps' compatible. */
151011
151022
  static isEpsg3857Compatible(tileInfo) {
151012
151023
  if (tileInfo.spatialReference?.latestWkid !== 3857 || !Array.isArray(tileInfo.lods))
151013
151024
  return false;
@@ -151015,11 +151026,17 @@ class ArcGisUtilities {
151015
151026
  return zeroLod.level === 0 && Math.abs(zeroLod.resolution - 156543.03392800014) < .001;
151016
151027
  }
151017
151028
  /**
151018
- * Fetch an ArcGIS service metadata, and returns its JSON representation.
151029
+ * Fetches an ArcGIS service metadata, and returns its JSON representation.
151019
151030
  * If an access client has been configured for the specified formatId,
151020
151031
  * it will be used to apply required security token.
151021
151032
  * By default, response for each URL are cached.
151022
- */
151033
+ * @param url URL of the ArcGIS service
151034
+ * @param formatId Format ID of the service
151035
+ * @param userName Username to use for legacy token based security
151036
+ * @param password Password to use for legacy token based security
151037
+ * @param ignoreCache Flag to skip cache lookup (i.e. force a new server request)
151038
+ * @param requireToken Flag to indicate if a token is required
151039
+ */
151023
151040
  static async getServiceJson(url, formatId, userName, password, ignoreCache, requireToken) {
151024
151041
  if (!ignoreCache) {
151025
151042
  const cached = ArcGisUtilities._serviceCache.get(url);
@@ -151066,8 +151083,7 @@ class ArcGisUtilities {
151066
151083
  return undefined;
151067
151084
  }
151068
151085
  }
151069
- /** Read a response from ArcGIS server and check for error code in the response.
151070
- */
151086
+ /** Read a response from ArcGIS server and check for error code in the response. */
151071
151087
  static async checkForResponseErrorCode(response) {
151072
151088
  const tmpResponse = response;
151073
151089
  if (response.headers && tmpResponse.headers.get("content-type")?.toLowerCase().includes("json")) {
@@ -151108,8 +151124,7 @@ class ArcGisUtilities {
151108
151124
  * @param latitude Latitude in degrees to use to compute scales (i.e 0 for Equator)
151109
151125
  * @param tileSize Size of a tile in pixels (i.e 256)
151110
151126
  * @param screenDpi Monitor resolution in dots per inch (i.e. typically 96dpi is used by Google Maps)
151111
- *
151112
- * @returns An array containing resolution and scale values for each requested zoom level
151127
+ * @returns An array containing resolution and scale values for each requested zoom level
151113
151128
  */
151114
151129
  static computeZoomLevelsScales(startZoom = 0, endZoom = 20, latitude = 0, tileSize = 256, screenDpi = 96) {
151115
151130
  // Note: There is probably a more direct way to compute this, but I prefer to go for a simple and well documented approach.
@@ -151128,12 +151143,12 @@ class ArcGisUtilities {
151128
151143
  return results;
151129
151144
  }
151130
151145
  /**
151131
- * Match the provided minScale,maxScale values to corresponding wgs84 zoom levels
151146
+ * Match the provided minScale, maxScale values to corresponding wgs84 zoom levels
151132
151147
  * @param defaultMaxLod Value of the last LOD (i.e 22)
151133
151148
  * @param tileSize Size of a tile in pixels (i.e 256)
151134
151149
  * @param minScale Minimum scale value that needs to be matched to a LOD level
151135
151150
  * @param maxScale Maximum scale value that needs to be matched to a LOD level
151136
- * @returns minLod: LOD value matching minScale, maxLod: LOD value matching maxScale
151151
+ * @returns minLod: LOD value matching minScale, maxLod: LOD value matching maxScale
151137
151152
  */
151138
151153
  static getZoomLevelsScales(defaultMaxLod, tileSize, minScale, maxScale, tolerance = 0) {
151139
151154
  let minLod, maxLod;
@@ -152150,9 +152165,9 @@ class ArcGISMapLayerImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_2
152150
152165
  return undefined;
152151
152166
  }
152152
152167
  }
152153
- _generateChildIds(tile, resolveChildren) {
152154
- const childIds = this.getPotentialChildIds(tile);
152155
- if (tile.quadId.level < Math.max(1, this.minimumZoomLevel - 1)) {
152168
+ _generateChildIds(quadId, resolveChildren) {
152169
+ const childIds = this.getPotentialChildIds(quadId);
152170
+ if (quadId.level < Math.max(1, this.minimumZoomLevel - 1)) {
152156
152171
  resolveChildren(childIds);
152157
152172
  return;
152158
152173
  }
@@ -153451,14 +153466,14 @@ class WmtsMapLayerImageryProvider extends _internal__WEBPACK_IMPORTED_MODULE_2__
153451
153466
  getDisplayedTileMatrixSetAndLimits() {
153452
153467
  return this._preferredLayerTileMatrixSet.get(this.displayedLayerName);
153453
153468
  }
153454
- _generateChildIds(tile, resolveChildren) {
153455
- const childIds = this.getPotentialChildIds(tile);
153469
+ _generateChildIds(quadId, resolveChildren) {
153470
+ const childIds = this.getPotentialChildIds(quadId);
153456
153471
  const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();
153457
153472
  if (!matrixSetAndLimits) {
153458
153473
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false); // Must always hava a matrix set.
153459
153474
  return;
153460
153475
  }
153461
- const limits = matrixSetAndLimits.limits?.[tile.quadId.level + 1]?.limits;
153476
+ const limits = matrixSetAndLimits.limits?.[quadId.level + 1]?.limits;
153462
153477
  if (!limits) {
153463
153478
  resolveChildren(childIds);
153464
153479
  return;
@@ -153838,17 +153853,24 @@ class ImageryMapLayerTreeSupplier {
153838
153853
  }
153839
153854
  const imageryTreeSupplier = new ImageryMapLayerTreeSupplier();
153840
153855
  /** A reference to one of our tile trees. The specific TileTree drawn may change when the desired imagery type or target iModel changes.
153841
- * @internal
153856
+ * @beta
153842
153857
  */
153843
153858
  class ImageryMapLayerTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_4__.MapLayerTileTreeReference {
153844
- constructor(layerSettings, layerIndex, iModel) {
153845
- super(layerSettings, layerIndex, iModel);
153859
+ /**
153860
+ * Constructor for an ImageryMapLayerTreeReference.
153861
+ * @param layerSettings Map layer settings that are applied to the ImageryMapLayerTreeReference.
153862
+ * @param layerIndex The index of the associated map layer. Usually passed in through [[createMapLayerTreeReference]] in [[MapTileTree]]'s constructor.
153863
+ * @param iModel The iModel containing the ImageryMapLayerTreeReference.
153864
+ */
153865
+ constructor(args) {
153866
+ super(args.layerSettings, args.layerIndex, args.iModel);
153846
153867
  }
153847
153868
  get castsShadows() { return false; }
153848
153869
  /** Return the owner of the TileTree to draw. */
153849
153870
  get treeOwner() {
153850
153871
  return this.iModel.tiles.getTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);
153851
153872
  }
153873
+ /* @internal */
153852
153874
  resetTreeOwner() {
153853
153875
  return this.iModel.tiles.resetTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);
153854
153876
  }
@@ -154115,32 +154137,52 @@ __webpack_require__.r(__webpack_exports__);
154115
154137
 
154116
154138
 
154117
154139
  const loggerCategory = "ArcGISFeatureProvider";
154118
- /** Class representing a map-layer format.
154140
+ /**
154141
+ * Class representing a map-layer format.
154119
154142
  * Each format has it's unique 'formatId' string, used to uniquely identify a format in the [[MapLayerFormatRegistry]].
154120
154143
  * When creating an [[ImageMapLayerSettings]] object, a format needs to be specified this 'formatId'.
154121
154144
  * The MapLayerFormat object can later be used to validate a source, or create a provider.
154122
154145
  *
154123
- * Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].
154146
+ * Subclasses should override formatId, [[MapLayerFormat.createImageryProvider]], and [[MapLayerFormat.createMapLayerTree]].
154124
154147
  * @public
154125
154148
  */
154126
154149
  class MapLayerFormat {
154127
- /** Register the current format in the [[MapLayerFormatRegistry]].
154128
- */
154150
+ /** Register the current format in the [[MapLayerFormatRegistry]]. */
154129
154151
  static register() { _IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.mapLayerFormatRegistry.register(this); }
154130
- /** Allow a source of a specific to be validated before being attached as a map-layer.
154131
- */
154152
+ /**
154153
+ * Allow a source of a specific format to be validated before being attached as a map-layer.
154154
+ * @param _url The URL of the source.
154155
+ * @param _userName The username to access the source if needed.
154156
+ * @param _password The password to access the source if needed.
154157
+ * @param _ignoreCache Flag to skip cache lookup (i.e. force a new server request).
154158
+ * @returns Validation Status. If successful, a list of available sub-layers may also be returned.
154159
+ */
154132
154160
  static async validateSource(_url, _userName, _password, _ignoreCache) { return { status: _internal__WEBPACK_IMPORTED_MODULE_2__.MapLayerSourceStatus.Valid }; }
154133
- /** Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile Tree.
154134
- * @internal
154135
- */
154136
- static createImageryProvider(_settings) { (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false); }
154137
- /** @internal */
154161
+ /**
154162
+ * Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile tree.
154163
+ * @param _settings The map layer settings to be applied to the imagery provider.
154164
+ * @returns Returns the new imagery provider.
154165
+ * @beta
154166
+ */
154167
+ static createImageryProvider(_settings) {
154168
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Subclasses must override this method.");
154169
+ return undefined;
154170
+ }
154171
+ /**
154172
+ * Creates a MapLayerTileTreeReference for this map layer format.
154173
+ * @param _layerSettings Map layer settings that are applied to the MapLayerTileTreeReference.
154174
+ * @param _layerIndex The index of the associated map layer.
154175
+ * @param _iModel The iModel containing the MapLayerTileTreeReference.
154176
+ * @returns Returns the new tile tree reference.
154177
+ * @beta
154178
+ */
154138
154179
  static createMapLayerTree(_layerSettings, _layerIndex, _iModel) {
154139
- (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false);
154180
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Subclasses must override this method.");
154140
154181
  return undefined;
154141
154182
  }
154142
154183
  }
154143
- /** A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].
154184
+ /**
154185
+ * A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].
154144
154186
  * @public
154145
154187
  */
154146
154188
  class MapLayerFormatRegistry {
@@ -154183,7 +154225,8 @@ class MapLayerFormatRegistry {
154183
154225
  }
154184
154226
  return format.createMapLayerTree(layerSettings, layerIndex, iModel);
154185
154227
  }
154186
- /** Returns a [[MapLayerImageryProvider]] based on the provided [[ImageMapLayerSettings]] object.
154228
+ /**
154229
+ * Returns a [[MapLayerImageryProvider]] based on the provided [[ImageMapLayerSettings]] object.
154187
154230
  * @internal
154188
154231
  */
154189
154232
  createImageryProvider(layerSettings) {
@@ -154228,7 +154271,7 @@ __webpack_require__.r(__webpack_exports__);
154228
154271
  class ImageryMapLayerFormat extends _internal__WEBPACK_IMPORTED_MODULE_0__.MapLayerFormat {
154229
154272
  /** @internal */
154230
154273
  static createMapLayerTree(layerSettings, layerIndex, iModel) {
154231
- return new _internal__WEBPACK_IMPORTED_MODULE_0__.ImageryMapLayerTreeReference(layerSettings, layerIndex, iModel);
154274
+ return new _internal__WEBPACK_IMPORTED_MODULE_0__.ImageryMapLayerTreeReference({ layerSettings, layerIndex, iModel });
154232
154275
  }
154233
154276
  }
154234
154277
  class WmsMapLayerFormat extends ImageryMapLayerFormat {
@@ -154460,15 +154503,23 @@ class MapLayerImageryProvider {
154460
154503
  this._geographicTilingScheme = new _internal__WEBPACK_IMPORTED_MODULE_5__.GeographicTilingScheme();
154461
154504
  /** @internal */
154462
154505
  this._status = MapLayerImageryProviderStatus.Valid;
154463
- // Those values are used internally for various computation, this should not get overriden.
154464
- /** @internal */
154506
+ /**
154507
+ * This value is used internally for various computations, this should not get overriden.
154508
+ * @internal
154509
+ */
154465
154510
  this.defaultMinimumZoomLevel = 0;
154466
- /** @internal */
154511
+ /**
154512
+ * This value is used internally for various computations, this should not get overriden.
154513
+ * @internal
154514
+ */
154467
154515
  this.defaultMaximumZoomLevel = 22;
154468
154516
  this._mercatorTilingScheme = new _internal__WEBPACK_IMPORTED_MODULE_5__.WebMercatorTilingScheme();
154469
154517
  this._geographicTilingScheme = new _internal__WEBPACK_IMPORTED_MODULE_5__.GeographicTilingScheme(2, 1, true);
154470
154518
  }
154471
- /** @internal */
154519
+ /**
154520
+ * Initialize the provider by loading the first tile at its default maximum zoom level.
154521
+ * @beta
154522
+ */
154472
154523
  async initialize() {
154473
154524
  this.loadTile(0, 0, this.defaultMaximumZoomLevel).then((tileData) => {
154474
154525
  if (tileData !== undefined)
@@ -154476,20 +154527,31 @@ class MapLayerImageryProvider {
154476
154527
  });
154477
154528
  }
154478
154529
  get tilingScheme() { return this.useGeographicTilingScheme ? this._geographicTilingScheme : this._mercatorTilingScheme; }
154479
- /** @internal */
154530
+ /**
154531
+ * Add attribution logo cards for the data supplied by this provider to the [[Viewport]]'s logo div.
154532
+ * @param _cards Logo cards HTML element that may contain custom data attributes.
154533
+ * @param _viewport Viewport to add logo cards to.
154534
+ * @beta
154535
+ */
154480
154536
  addLogoCards(_cards, _viewport) { }
154481
154537
  /** @internal */
154482
154538
  get transparentBackgroundString() { return this._settings.transparentBackground ? "true" : "false"; }
154483
154539
  /** @internal */
154484
154540
  async _areChildrenAvailable(_tile) { return true; }
154485
154541
  /** @internal */
154486
- getPotentialChildIds(tile) {
154487
- const childLevel = tile.quadId.level + 1;
154488
- return tile.quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));
154542
+ getPotentialChildIds(quadId) {
154543
+ const childLevel = quadId.level + 1;
154544
+ return quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));
154489
154545
  }
154490
- /** @internal */
154491
- _generateChildIds(tile, resolveChildren) {
154492
- resolveChildren(this.getPotentialChildIds(tile));
154546
+ /**
154547
+ * Get child IDs of a quad and generate tiles based on these child IDs.
154548
+ * See [[ImageryTileTree._loadChildren]] for the definition of `resolveChildren` where this function is commonly called.
154549
+ * @param quadId quad to generate child IDs for.
154550
+ * @param resolveChildren Function that creates tiles from child IDs.
154551
+ * @beta
154552
+ */
154553
+ _generateChildIds(quadId, resolveChildren) {
154554
+ resolveChildren(this.getPotentialChildIds(quadId));
154493
154555
  }
154494
154556
  /** @internal */
154495
154557
  generateChildIds(tile, resolveChildren) {
@@ -154497,9 +154559,16 @@ class MapLayerImageryProvider {
154497
154559
  tile.setLeaf();
154498
154560
  return;
154499
154561
  }
154500
- this._generateChildIds(tile, resolveChildren);
154562
+ this._generateChildIds(tile.quadId, resolveChildren);
154501
154563
  }
154502
- /** @internal */
154564
+ /**
154565
+ * Get tooltip text for a specific quad and cartographic position.
154566
+ * @param strings List of strings to contain tooltip text.
154567
+ * @param quadId Quad ID to get tooltip for.
154568
+ * @param _carto Cartographic that may be used to retrieve and/or format tooltip text.
154569
+ * @param tree Tree associated with the quad to get the tooltip for.
154570
+ * @internal
154571
+ */
154503
154572
  async getToolTip(strings, quadId, _carto, tree) {
154504
154573
  if (doDebugToolTips) {
154505
154574
  const range = quadId.getLatLongRangeDegrees(tree.tilingScheme);
@@ -154534,7 +154603,8 @@ class MapLayerImageryProvider {
154534
154603
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(false, "Invalid tile content type");
154535
154604
  return undefined;
154536
154605
  }
154537
- /** Change the status of this provider.
154606
+ /**
154607
+ * Change the status of this provider.
154538
154608
  * Sub-classes should override 'onStatusUpdated' instead of this method.
154539
154609
  * @internal
154540
154610
  */
@@ -154617,31 +154687,49 @@ class MapLayerImageryProvider {
154617
154687
  }
154618
154688
  return true;
154619
154689
  }
154620
- /** @internal */
154621
- // calculates the projected x cartesian coordinate in EPSG:3857from the longitude in EPSG:4326 (WGS84)
154690
+ /**
154691
+ * Calculates the projected x cartesian coordinate in EPSG:3857 from the longitude in EPSG:4326 (WGS84)
154692
+ * @param longitude Longitude in EPSG:4326 (WGS84)
154693
+ * @internal
154694
+ */
154622
154695
  getEPSG3857X(longitude) {
154623
154696
  return longitude * 20037508.34 / 180.0;
154624
154697
  }
154625
- /** @internal */
154626
- // calculates the projected y cartesian coordinate in EPSG:3857from the latitude in EPSG:4326 (WGS84)
154698
+ /**
154699
+ * Calculates the projected y cartesian coordinate in EPSG:3857 from the latitude in EPSG:4326 (WGS84)
154700
+ * @param latitude Latitude in EPSG:4326 (WGS84)
154701
+ * @internal
154702
+ */
154627
154703
  getEPSG3857Y(latitude) {
154628
154704
  const y = Math.log(Math.tan((90.0 + latitude) * Math.PI / 360.0)) / (Math.PI / 180.0);
154629
154705
  return y * 20037508.34 / 180.0;
154630
154706
  }
154631
- /** @internal */
154632
- // calculates the longitude in EPSG:4326 (WGS84) from the projected x cartesian coordinate in EPSG:3857
154707
+ /**
154708
+ * Calculates the longitude in EPSG:4326 (WGS84) from the projected x cartesian coordinate in EPSG:3857
154709
+ * @param x3857 Projected x cartesian coordinate in EPSG:3857
154710
+ * @internal
154711
+ */
154633
154712
  getEPSG4326Lon(x3857) {
154634
154713
  return _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Angle.radiansToDegrees(x3857 / earthRadius);
154635
154714
  }
154636
- /** @internal */
154637
- // calculates the latitude in EPSG:4326 (WGS84) from the projected y cartesian coordinate in EPSG:3857
154715
+ /**
154716
+ * Calculates the latitude in EPSG:4326 (WGS84) from the projected y cartesian coordinate in EPSG:3857
154717
+ * @param y3857 Projected y cartesian coordinate in EPSG:3857
154718
+ * @internal
154719
+ */
154638
154720
  getEPSG4326Lat(y3857) {
154639
154721
  const y = 2 * Math.atan(Math.exp(y3857 / earthRadius)) - (Math.PI / 2);
154640
154722
  return _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_2__.Angle.radiansToDegrees(y);
154641
154723
  }
154642
- /** @internal */
154643
- // Map tile providers like Bing and Mapbox allow the URL to be constructed directory from the zoom level and tile coordinates.
154644
- // However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.
154724
+ /**
154725
+ * Get the bounding box/extents of a tile in EPSG:4326 (WGS84) format.
154726
+ * Map tile providers like Bing and Mapbox allow the URL to be constructed directly from the zoom level and tile coordinates.
154727
+ * However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.
154728
+ * @param row Row of the tile
154729
+ * @param column Column of the tile
154730
+ * @param zoomLevel Desired zoom level of the tile
154731
+ * @internal
154732
+ */
154645
154733
  getEPSG4326Extent(row, column, zoomLevel) {
154646
154734
  // Shift left (this.tileSize << zoomLevel) overflow when using 512 pixels tile at higher resolution,
154647
154735
  // so use Math.pow instead (I assume the performance lost to be minimal)
@@ -154656,7 +154744,13 @@ class MapLayerImageryProvider {
154656
154744
  const latitudeTop = 90.0 - 360.0 * Math.atan(Math.exp(-y1 * 2 * Math.PI)) / Math.PI;
154657
154745
  return { longitudeLeft, longitudeRight, latitudeTop, latitudeBottom };
154658
154746
  }
154659
- /** @internal */
154747
+ /**
154748
+ * Get the bounding box/extents of a tile in EPSG:3857 format.
154749
+ * @param row Row of the tile
154750
+ * @param column Column of the tile
154751
+ * @param zoomLevel Desired zoom level of the tile
154752
+ * @internal
154753
+ */
154660
154754
  getEPSG3857Extent(row, column, zoomLevel) {
154661
154755
  const epsg4326Extent = this.getEPSG4326Extent(row, column, zoomLevel);
154662
154756
  const left = this.getEPSG3857X(epsg4326Extent.longitudeLeft);
@@ -154933,24 +155027,45 @@ __webpack_require__.r(__webpack_exports__);
154933
155027
 
154934
155028
 
154935
155029
 
154936
- /** @internal */
155030
+ /**
155031
+ * A [[TileTreeReference]] to be used specifically for [[MapTileTree]]s.
155032
+ * The reference refers to its MapTileTree by way of the tree's [[TileTreeOwner]].
155033
+ * Multiple MapLayerTileTreeReferences can refer to the same TileTree if the map layer settings are equivalent, meaning
155034
+ * they have identical format IDs, URLs, credentials, etc.
155035
+ * @beta
155036
+ */
154937
155037
  class MapLayerTileTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_3__.TileTreeReference {
155038
+ /**
155039
+ * Constructor for a MapLayerTileTreeReference.
155040
+ * @param _layerSettings Map layer settings that are applied to the MapLayerTileTreeReference.
155041
+ * @param _layerIndex The index of the associated map layer.
155042
+ * @param iModel The iModel containing the MapLayerTileTreeReference.
155043
+ * @internal
155044
+ */
154938
155045
  constructor(_layerSettings, _layerIndex, iModel) {
154939
155046
  super();
154940
155047
  this._layerSettings = _layerSettings;
154941
155048
  this._layerIndex = _layerIndex;
154942
155049
  this.iModel = iModel;
154943
155050
  }
155051
+ /* @internal */
154944
155052
  get _transparency() { return this._layerSettings.transparency ? this._layerSettings.transparency : undefined; }
155053
+ /** Returns true if the associated map layer, including its sublayers, is opaque. */
154945
155054
  get isOpaque() {
154946
155055
  return this._layerSettings.visible && (!this._layerSettings.allSubLayersInvisible) && !this._layerSettings.transparentBackground && 0 === this._layerSettings.transparency;
154947
155056
  }
155057
+ /* Returns the map layer name. */
154948
155058
  get layerName() { return this._layerSettings.name; }
155059
+ /** Returns the imagery provider for the tile tree. */
154949
155060
  get imageryProvider() { return undefined; }
154950
155061
  set layerSettings(layerSettings) { this._layerSettings = layerSettings; }
155062
+ /** Returns the layer settings for the map layer. */
154951
155063
  get layerSettings() { return this._layerSettings; }
155064
+ /** Returns the index of the map layer associated with the tile tree. */
154952
155065
  get layerIndex() { return this._layerIndex; }
155066
+ /** Returns the transparency value of the map layer. */
154953
155067
  get transparency() { return this._transparency; }
155068
+ /* Returns a tooltip describing the hit with the map layer name. */
154954
155069
  async getToolTip(hit) {
154955
155070
  const tree = this.treeOwner.tileTree;
154956
155071
  if (undefined === tree || hit.iModel !== tree.iModel || tree.modelId !== hit.sourceId)
@@ -154962,7 +155077,14 @@ class MapLayerTileTreeReference extends _internal__WEBPACK_IMPORTED_MODULE_3__.T
154962
155077
  return div;
154963
155078
  }
154964
155079
  }
154965
- /** @internal */
155080
+ /**
155081
+ * Creates a MapLayerTileTreeReference.
155082
+ * @param layerSettings Model or image map layer settings that are applied to the MapLayerTileTreeReference.
155083
+ * @param layerIndex The index of the associated map layer.
155084
+ * @param iModel The iModel containing the new MapLayerTileTreeReference.
155085
+ * @returns Returns the new tile tree reference, either a ModelMapLayerTileTreeReference or an ImageryMapLayerTreeReference.
155086
+ * @internal
155087
+ */
154966
155088
  function createMapLayerTreeReference(layerSettings, layerIndex, iModel) {
154967
155089
  if (layerSettings instanceof _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.ModelMapLayerSettings) {
154968
155090
  return (0,_internal__WEBPACK_IMPORTED_MODULE_3__.createModelMapLayerTileTreeReference)(layerSettings, layerIndex, iModel);
@@ -185965,11 +186087,28 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
185965
186087
  curveLengthBetweenFractions(fraction0, fraction1) {
185966
186088
  return Math.abs(fraction1 - fraction0) * this._totalLength;
185967
186089
  }
186090
+ /** Flatten CurveChainWithDistanceIndex children in the input chain.
186091
+ * @return cloned flattened CurveChain, or reference to the input chain if no nesting
186092
+ */
186093
+ static flattenNestedChains(chain) {
186094
+ if (-1 === chain.children.findIndex((child) => { return child instanceof CurveChainWithDistanceIndex; }))
186095
+ return chain;
186096
+ const flatChain = chain.clone();
186097
+ const flatChildren = flatChain.children.flatMap((child) => {
186098
+ if (child instanceof CurveChainWithDistanceIndex)
186099
+ return child.path.children;
186100
+ else
186101
+ return [child];
186102
+ });
186103
+ flatChain.children.splice(0, Infinity, ...flatChildren);
186104
+ return flatChain;
186105
+ }
185968
186106
  /**
185969
186107
  * Capture (not clone) a path into a new `CurveChainWithDistanceIndex`
185970
186108
  * @param path primitive array to be CAPTURED (not cloned)
185971
186109
  */
185972
186110
  static createCapture(path, options) {
186111
+ path = this.flattenNestedChains(path); // nested chains not allowed
185973
186112
  const fragments = DistanceIndexConstructionContext.createPathFragmentIndex(path, options);
185974
186113
  const result = new CurveChainWithDistanceIndex(path, fragments);
185975
186114
  return result;
@@ -186305,6 +186444,36 @@ class CurveChainWithDistanceIndex extends _curve_CurvePrimitive__WEBPACK_IMPORTE
186305
186444
  }
186306
186445
  return undefined;
186307
186446
  }
186447
+ /**
186448
+ * Given a parent chain, convert the corresponding child details in the specified pairs.
186449
+ * * Converted details refer to the chain's global parameterization instead of the child's.
186450
+ * * It is assumed that for all i >= index0, `pairs[i].detailA.curve` is a child of chainA (similarly for chainB).
186451
+ * @param pairs array to mutate
186452
+ * @param index0 convert details of pairs in the tail of the array, starting at index0
186453
+ * @param chainA convert each specified detailA to the global parameterization of chainA
186454
+ * @param chainB convert each specified detailB to the global parameterization of chainB
186455
+ * @param compressAdjacent whether to remove adjacent duplicate pairs after conversion
186456
+ * @return the converted array
186457
+ * @internal
186458
+ */
186459
+ static convertChildDetailToChainDetail(pairs, index0, chainA, chainB, compressAdjacent) {
186460
+ for (let i = index0; i < pairs.length; ++i) {
186461
+ const childDetailPair = pairs[i];
186462
+ if (chainA) {
186463
+ const chainDetail = chainA.computeChainDetail(childDetailPair.detailA);
186464
+ if (chainDetail)
186465
+ childDetailPair.detailA = chainDetail;
186466
+ }
186467
+ if (chainB) {
186468
+ const chainDetail = chainB.computeChainDetail(childDetailPair.detailB);
186469
+ if (chainDetail)
186470
+ childDetailPair.detailB = chainDetail;
186471
+ }
186472
+ }
186473
+ if (compressAdjacent)
186474
+ pairs = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_8__.CurveLocationDetailPair.removeAdjacentDuplicates(pairs, index0);
186475
+ return pairs;
186476
+ }
186308
186477
  }
186309
186478
  CurveChainWithDistanceIndex._numCalls = 0;
186310
186479
  CurveChainWithDistanceIndex._numTested = 0;
@@ -186363,15 +186532,13 @@ __webpack_require__.r(__webpack_exports__);
186363
186532
 
186364
186533
  /**
186365
186534
  * A `CurveCollection` is an abstract (non-instantiable) class for various sets of curves with particular structures:
186366
- * - `CurveChain` is a (non-instantiable) intermediate class for a sequence of `CurvePrimitive` joining head-to-tail.
186367
- * The two instantiable forms of `CurveChain` are
186368
- * - `Path` - A chain not required to close and not enclosing a planar area (so curves do not have to be on the
186369
- * same plane).
186370
- * - `Loop` - A chain required to close from last to first so that a planar area is enclosed (so curves have to
186371
- * be on the same plane).
186372
- * - `ParityRegion` -- a collection of coplanar `Loop`, with "in/out" classification by parity rules.
186373
- * - `UnionRegion` -- a collection of coplanar `Loop` and/or `ParityRegion`, with "in/out" classification by union rules.
186374
- * - `BagOfCurves` -- a collection of `AnyCurve` with no implied structure.
186535
+ * - [[CurveChain]] - a non-instantiable intermediate class for a sequence of [[CurvePrimitive]] joining head-to-tail.
186536
+ * The two instantiable forms of `CurveChain` are:
186537
+ * - [[Path]] - a chain of curves. Does not have to be closed or planar. A closed `Path` is not treated as bounding a surface.
186538
+ * - [[Loop]] - a closed and planar chain of curves. A `Loop` is treated as bounding a planar area.
186539
+ * - [[ParityRegion]] - a collection of coplanar `Loop`, with "in/out" classification by parity rules.
186540
+ * - [[UnionRegion]] - a collection of coplanar `Loop` and/or `ParityRegion`, with "in/out" classification by union rules.
186541
+ * - [[BagOfCurves]] - a collection of [[AnyCurve]] with no implied structure.
186375
186542
  *
186376
186543
  * @see [Curve Collections]($docs/learning/geometry/CurveCollection.md) learning article.
186377
186544
  * @public
@@ -186381,7 +186548,6 @@ class CurveCollection extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geomet
186381
186548
  super(...arguments);
186382
186549
  /** String name for schema properties */
186383
186550
  this.geometryCategory = "curveCollection";
186384
- /* eslint-disable @typescript-eslint/naming-convention, no-empty */
186385
186551
  /** Flag for inner loop status. Only used by `Loop`. */
186386
186552
  this.isInner = false;
186387
186553
  }
@@ -186758,11 +186924,9 @@ __webpack_require__.r(__webpack_exports__);
186758
186924
  /* harmony export */ CurveCurve: () => (/* binding */ CurveCurve)
186759
186925
  /* harmony export */ });
186760
186926
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
186761
- /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
186762
- /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
186763
- /* harmony import */ var _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internalContexts/CurveCurveCloseApproachXY */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js");
186927
+ /* harmony import */ var _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internalContexts/CurveCurveCloseApproachXY */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js");
186764
186928
  /* harmony import */ var _internalContexts_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internalContexts/CurveCurveIntersectXY */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js");
186765
- /* harmony import */ var _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internalContexts/CurveCurveIntersectXYZ */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js");
186929
+ /* harmony import */ var _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internalContexts/CurveCurveIntersectXYZ */ "../../core/geometry/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js");
186766
186930
  /*---------------------------------------------------------------------------------------------
186767
186931
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
186768
186932
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -186774,8 +186938,6 @@ __webpack_require__.r(__webpack_exports__);
186774
186938
 
186775
186939
 
186776
186940
 
186777
-
186778
-
186779
186941
  /**
186780
186942
  * `CurveCurve` has static method for various computations that work on a pair of curves or curve collections.
186781
186943
  * @public
@@ -186790,22 +186952,11 @@ class CurveCurve {
186790
186952
  * @param tolerance optional distance tolerance for coincidence
186791
186953
  */
186792
186954
  static intersectionXYPairs(curveA, extendA, curveB, extendB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallMetricDistance) {
186793
- const handler = new _internalContexts_CurveCurveIntersectXY__WEBPACK_IMPORTED_MODULE_1__.CurveCurveIntersectXY(undefined, extendA, curveB, extendB, tolerance);
186794
- if (curveB instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_2__.CurvePrimitive) {
186795
- curveA.dispatchToGeometryHandler(handler);
186796
- }
186797
- else if (curveB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_3__.CurveCollection) {
186798
- const allCurves = curveB.collectCurvePrimitives();
186799
- for (const child of allCurves) {
186800
- handler.resetGeometry(false, child, false);
186801
- curveA.dispatchToGeometryHandler(handler);
186802
- }
186803
- }
186804
- return handler.grabPairedResults();
186955
+ return CurveCurve.intersectionProjectedXYPairs(undefined, curveA, extendA, curveB, extendB, tolerance);
186805
186956
  }
186806
186957
  /**
186807
186958
  * Return xy intersections of 2 projected curves.
186808
- * @param worldToLocal transform (possibly perspective) defining the local coordinates in which to compute xy intersections.
186959
+ * @param worldToLocal transform (possibly perspective) defining the local coordinates in which to compute xy intersections
186809
186960
  * @param curveA first curve
186810
186961
  * @param extendA true to allow curveA to extend
186811
186962
  * @param curveB second curve
@@ -186829,7 +186980,7 @@ class CurveCurve {
186829
186980
  * @returns array of intersections structured as CurveLocationDetailPair[]
186830
186981
  */
186831
186982
  static intersectionXYZPairs(curveA, extendA, curveB, extendB) {
186832
- const handler = new _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_4__.CurveCurveIntersectXYZ(extendA, curveB, extendB);
186983
+ const handler = new _internalContexts_CurveCurveIntersectXYZ__WEBPACK_IMPORTED_MODULE_2__.CurveCurveIntersectXYZ(extendA, curveB, extendB);
186833
186984
  curveA.dispatchToGeometryHandler(handler);
186834
186985
  return handler.grabPairedResults();
186835
186986
  }
@@ -186843,7 +186994,7 @@ class CurveCurve {
186843
186994
  for (let i = 0; i < primitives.length; i++) {
186844
186995
  const curveA = primitives[i];
186845
186996
  for (let j = i + 1; j < primitives.length; j++) {
186846
- handler.resetGeometry(false, primitives[j], false);
186997
+ handler.resetGeometry(primitives[j]);
186847
186998
  curveA.dispatchToGeometryHandler(handler);
186848
186999
  }
186849
187000
  }
@@ -186863,7 +187014,7 @@ class CurveCurve {
186863
187014
  * Close approaches further than this xy-distance are not returned.
186864
187015
  */
186865
187016
  static closeApproachProjectedXYPairs(curveA, curveB, maxDistance) {
186866
- const handler = new _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_5__.CurveCurveCloseApproachXY(curveB);
187017
+ const handler = new _internalContexts_CurveCurveCloseApproachXY__WEBPACK_IMPORTED_MODULE_3__.CurveCurveCloseApproachXY(curveB);
186867
187018
  handler.maxDistanceToAccept = maxDistance;
186868
187019
  curveA.dispatchToGeometryHandler(handler);
186869
187020
  return handler.grabPairedResults();
@@ -187997,6 +188148,10 @@ class CurveLocationDetail {
187997
188148
  }
187998
188149
  return detailB;
187999
188150
  }
188151
+ /** Compare only the curve and fraction of this detail with `other`. */
188152
+ isSameCurveAndFraction(other) {
188153
+ return this.curve === other.curve && _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(this.fraction, other.fraction);
188154
+ }
188000
188155
  }
188001
188156
  /**
188002
188157
  * Enumeration of configurations for intersections and min/max distance-between-curve
@@ -188059,6 +188214,30 @@ class CurveLocationDetailPair {
188059
188214
  this.detailA = this.detailB;
188060
188215
  this.detailB = q;
188061
188216
  }
188217
+ /**
188218
+ * Mutate the input array by removing the second of two adjacent duplicate pairs.
188219
+ * * Ignores details representing coincident intervals (e.g., for which `fraction1` is defined).
188220
+ * * Comparison is performed by [[CurveLocationDetail.isSameCurveAndFraction]].
188221
+ * * No sorting is performed.
188222
+ * @param pairs array to de-duplicate in place
188223
+ * @param index0 look for duplicates in the tail of the array starting at index0
188224
+ * @return reference to input array
188225
+ * @internal
188226
+ */
188227
+ static removeAdjacentDuplicates(pairs, index0 = 0) {
188228
+ return pairs.flatMap((pair, i, arr) => {
188229
+ if (i >= index0 && i > 0) {
188230
+ if (!pair.detailA.hasFraction1 && !pair.detailB.hasFraction1) {
188231
+ if (pair.detailA.isSameCurveAndFraction(arr[i - 1].detailA)) {
188232
+ if (pair.detailB.isSameCurveAndFraction(arr[i - 1].detailB)) {
188233
+ return []; // remove the i_th pair
188234
+ }
188235
+ }
188236
+ }
188237
+ }
188238
+ return [pair]; // preserve the i_th pair
188239
+ });
188240
+ }
188062
188241
  }
188063
188242
  /**
188064
188243
  * Data bundle for a pair of arrays of CurveLocationDetail structures.
@@ -189109,10 +189288,8 @@ class CurveWireMomentsXYZ {
189109
189288
  if (root instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_3__.CurvePrimitive)
189110
189289
  root.emitStrokableParts(this);
189111
189290
  else if (root instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_4__.CurveCollection) {
189112
- if (root.children !== undefined)
189113
- for (const child of root.children) {
189114
- this.visitLeaves(child);
189115
- }
189291
+ for (const child of root.children)
189292
+ this.visitLeaves(child);
189116
189293
  }
189117
189294
  }
189118
189295
  }
@@ -190501,10 +190678,7 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_0__.CurvePri
190501
190678
  isInPlane(plane) {
190502
190679
  return this._points.isCloseToPlane(plane, _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance);
190503
190680
  }
190504
- /**
190505
- * Push a hit, fixing up the prior entry if needed.
190506
- * Return the incremented counter.
190507
- */
190681
+ /** Push a hit, fixing up the prior entry if needed. */
190508
190682
  static pushVertexHit(result, counter, cp, fraction, point) {
190509
190683
  const detail = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__.CurveLocationDetail.createCurveFractionPoint(cp, fraction, point);
190510
190684
  result.push(detail);
@@ -196324,10 +196498,6 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
196324
196498
  this._results = [];
196325
196499
  return result;
196326
196500
  }
196327
- /** Returns `true` if `detail` has same curve and fraction. */
196328
- sameCurveAndFraction(cp, fraction, detail) {
196329
- return cp === detail.curve && _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isAlmostEqualNumber(fraction, detail.fraction);
196330
- }
196331
196501
  /**
196332
196502
  * If distance between pointA and pointB is less than maxDistance, record CurveLocationDetailPair which is
196333
196503
  * the approach from pointA to pointB.
@@ -196378,13 +196548,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
196378
196548
  const oldDetailA = this._results[numPrevious - 1].detailA;
196379
196549
  const oldDetailB = this._results[numPrevious - 1].detailB;
196380
196550
  if (reversed) {
196381
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailB) &&
196382
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailA))
196551
+ if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
196552
+ oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
196383
196553
  return;
196384
196554
  }
196385
196555
  else {
196386
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailA) &&
196387
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailB))
196556
+ if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
196557
+ oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
196388
196558
  return;
196389
196559
  }
196390
196560
  }
@@ -196430,13 +196600,13 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
196430
196600
  const oldDetailA = this._results[numPrevious - 1].detailA;
196431
196601
  const oldDetailB = this._results[numPrevious - 1].detailB;
196432
196602
  if (reversed) {
196433
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailB) &&
196434
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailA))
196603
+ if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
196604
+ oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
196435
196605
  return;
196436
196606
  }
196437
196607
  else {
196438
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailA) &&
196439
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailB))
196608
+ if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
196609
+ oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
196440
196610
  return;
196441
196611
  }
196442
196612
  }
@@ -196822,38 +196992,22 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
196822
196992
  }
196823
196993
  this._geometryB = geomB; // restore
196824
196994
  }
196825
- /**
196826
- * Given a parent chain, convert the corresponding child details so that they refer to the chain's global parameterization.
196827
- * * It is assumed that `this._results[i].detailA.curve` is a child of chainA, and similarly for detailB/chainB.
196828
- * @param chainA convert each detailA to the global parameterization of chainA
196829
- * @param chainB convert each detailB to the global parameterization of chainB
196830
- */
196831
- convertChildDetailToChainDetail(chainA, chainB) {
196832
- for (const childDetailPair of this._results) {
196833
- if (chainA) {
196834
- const chainDetail = chainA.computeChainDetail(childDetailPair.detailA);
196835
- if (chainDetail)
196836
- childDetailPair.detailA = chainDetail;
196837
- }
196838
- if (chainB) {
196839
- const chainDetail = chainB.computeChainDetail(childDetailPair.detailB);
196840
- if (chainDetail)
196841
- childDetailPair.detailB = chainDetail;
196842
- }
196843
- }
196844
- }
196845
196995
  /** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
196846
196996
  dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
196847
196997
  if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex))
196848
196998
  return;
196999
+ if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex) {
197000
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!!"call handleCurveChainWithDistanceIndex(geomA) instead");
197001
+ return;
197002
+ }
197003
+ const index0 = this._results.length;
196849
197004
  const geomB = this._geometryB; // save
196850
197005
  for (const child of geomB.path.children) {
196851
197006
  this.resetGeometry(child);
196852
197007
  geomAHandler(geomA);
196853
197008
  }
196854
197009
  this.resetGeometry(geomB); // restore
196855
- (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!(geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex));
196856
- this.convertChildDetailToChainDetail(undefined, geomB);
197010
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
196857
197011
  }
196858
197012
  /** Double dispatch handler for strongly typed segment. */
196859
197013
  handleLineSegment3d(segmentA) {
@@ -197024,7 +197178,8 @@ class CurveCurveCloseApproachXY extends _geometry3d_GeometryHandler__WEBPACK_IMP
197024
197178
  /** Double dispatch handler for strongly typed CurveChainWithDistanceIndex. */
197025
197179
  handleCurveChainWithDistanceIndex(chain) {
197026
197180
  super.handleCurveChainWithDistanceIndex(chain);
197027
- this.convertChildDetailToChainDetail(chain, this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex ? this._geometryB : undefined);
197181
+ // if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
197182
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_10__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
197028
197183
  }
197029
197184
  /** Double dispatch handler for strongly typed homogeneous bspline curve .. */
197030
197185
  handleBSplineCurve3dH(_curve) {
@@ -197066,27 +197221,36 @@ __webpack_require__.r(__webpack_exports__);
197066
197221
  /* harmony export */ BezierBezierIntersectionXYRRToRRD: () => (/* binding */ BezierBezierIntersectionXYRRToRRD),
197067
197222
  /* harmony export */ CurveCurveIntersectXY: () => (/* binding */ CurveCurveIntersectXY)
197068
197223
  /* harmony export */ });
197069
- /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
197070
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
197071
- /* harmony import */ var _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/CoincidentGeometryOps */ "../../core/geometry/lib/esm/geometry3d/CoincidentGeometryOps.js");
197072
- /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
197073
- /* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
197074
- /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
197075
- /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
197076
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
197077
- /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
197078
- /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
197079
- /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
197080
- /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
197081
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
197082
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
197083
- /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
197084
- /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
197085
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
197224
+ /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
197225
+ /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
197226
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
197227
+ /* harmony import */ var _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/CoincidentGeometryOps */ "../../core/geometry/lib/esm/geometry3d/CoincidentGeometryOps.js");
197228
+ /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
197229
+ /* harmony import */ var _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../geometry3d/GrowableFloat64Array */ "../../core/geometry/lib/esm/geometry3d/GrowableFloat64Array.js");
197230
+ /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
197231
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
197232
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
197233
+ /* harmony import */ var _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../geometry3d/Ray3d */ "../../core/geometry/lib/esm/geometry3d/Ray3d.js");
197234
+ /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
197235
+ /* harmony import */ var _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../numerics/BezierPolynomials */ "../../core/geometry/lib/esm/numerics/BezierPolynomials.js");
197236
+ /* harmony import */ var _numerics_Newton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../numerics/Newton */ "../../core/geometry/lib/esm/numerics/Newton.js");
197237
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
197238
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
197239
+ /* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
197240
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
197241
+ /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
197242
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
197243
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
197086
197244
  /*---------------------------------------------------------------------------------------------
197087
197245
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
197088
197246
  * See LICENSE.md in the project root for license terms and full copyright notice.
197089
197247
  *--------------------------------------------------------------------------------------------*/
197248
+ /** @packageDocumentation
197249
+ * @module Curve
197250
+ */
197251
+
197252
+
197253
+
197090
197254
 
197091
197255
 
197092
197256
 
@@ -197110,13 +197274,13 @@ __webpack_require__.r(__webpack_exports__);
197110
197274
  * * The inputs are assumed pre-transformed so that the target condition is to match x and y coordinates.
197111
197275
  * @internal
197112
197276
  */
197113
- class BezierBezierIntersectionXYRRToRRD extends _numerics_Newton__WEBPACK_IMPORTED_MODULE_0__.NewtonEvaluatorRRtoRRD {
197277
+ class BezierBezierIntersectionXYRRToRRD extends _numerics_Newton__WEBPACK_IMPORTED_MODULE_1__.NewtonEvaluatorRRtoRRD {
197114
197278
  constructor(curveA, curveB) {
197115
197279
  super();
197116
197280
  this._curveA = curveA;
197117
197281
  this._curveB = curveB;
197118
- this._rayA = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_1__.Ray3d.createZero();
197119
- this._rayB = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_1__.Ray3d.createZero();
197282
+ this._rayA = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__.Ray3d.createZero();
197283
+ this._rayB = _geometry3d_Ray3d__WEBPACK_IMPORTED_MODULE_2__.Ray3d.createZero();
197120
197284
  }
197121
197285
  evaluate(fractionA, fractionB) {
197122
197286
  this._curveA.fractionToPointAndDerivative(fractionA, this._rayA);
@@ -197131,7 +197295,7 @@ class BezierBezierIntersectionXYRRToRRD extends _numerics_Newton__WEBPACK_IMPORT
197131
197295
  * * geometryB is saved for later reference.
197132
197296
  * @internal
197133
197297
  */
197134
- class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_2__.NullGeometryHandler {
197298
+ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_3__.RecurseToCurvesGeometryHandler {
197135
197299
  /**
197136
197300
  * The constructor.
197137
197301
  * @param worldToLocal optional transform (possibly perspective) to project to xy plane for intersection.
@@ -197140,7 +197304,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197140
197304
  * @param extendB flag for extension of geometryB.
197141
197305
  * @param tolerance optional distance tolerance for coincidence.
197142
197306
  */
197143
- constructor(worldToLocal, extendA, geometryB, extendB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallMetricDistance) {
197307
+ constructor(worldToLocal, extendA, geometryB, extendB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallMetricDistance) {
197144
197308
  super();
197145
197309
  this._extendA = extendA;
197146
197310
  this._geometryB = geometryB;
@@ -197152,14 +197316,12 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197152
197316
  if (!this._worldToLocalAffine)
197153
197317
  this._worldToLocalPerspective = worldToLocal.clone();
197154
197318
  }
197155
- this._coincidentGeometryContext = _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_4__.CoincidentGeometryQuery.create(tolerance);
197319
+ this._coincidentGeometryContext = _geometry3d_CoincidentGeometryOps__WEBPACK_IMPORTED_MODULE_5__.CoincidentGeometryQuery.create(tolerance);
197156
197320
  this._results = [];
197157
197321
  }
197158
- /** Reset the geometry and flags, leaving all other parts unchanged (and preserving accumulated intersections) */
197159
- resetGeometry(extendA, geometryB, extendB) {
197160
- this._extendA = extendA;
197322
+ /** Reset the geometry, leaving all other parts unchanged (and preserving accumulated intersections). */
197323
+ resetGeometry(geometryB) {
197161
197324
  this._geometryB = geometryB;
197162
- this._extendB = extendB;
197163
197325
  }
197164
197326
  acceptFraction(extend0, fraction, extend1, fractionTol = 1.0e-12) {
197165
197327
  if (!extend0 && fraction < -fractionTol)
@@ -197169,12 +197331,12 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197169
197331
  return true;
197170
197332
  }
197171
197333
  /** Test the fraction by strict parameter, but allow toleranced distance test at ends. */
197172
- acceptFractionOnLine(extend0, fraction, extend1, pointA, pointB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.smallMetricDistance) {
197334
+ acceptFractionOnLine(extend0, fraction, extend1, pointA, pointB, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.smallMetricDistance) {
197173
197335
  if (!extend0 && fraction < 0) {
197174
- return _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isDistanceWithinTol(fraction * pointA.distanceXY(pointB), tolerance);
197336
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isDistanceWithinTol(fraction * pointA.distanceXY(pointB), tolerance);
197175
197337
  }
197176
197338
  else if (!extend1 && fraction > 1.0)
197177
- return _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isDistanceWithinTol((fraction - 1.0) * pointA.distanceXY(pointB), tolerance);
197339
+ return _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isDistanceWithinTol((fraction - 1.0) * pointA.distanceXY(pointB), tolerance);
197178
197340
  return true;
197179
197341
  }
197180
197342
  /**
@@ -197187,9 +197349,6 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197187
197349
  this._results = [];
197188
197350
  return result;
197189
197351
  }
197190
- sameCurveAndFraction(cp, fraction, detail) {
197191
- return cp === detail.curve && _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isAlmostEqualNumber(fraction, detail.fraction);
197192
- }
197193
197352
  /**
197194
197353
  * Record the pre-computed intersection between two curves. Filter by extension rules. Record with fraction mapping.
197195
197354
  * @param localFractionA intersection fraction local to the subcurve of cpA between fractionA0 and fractionA1
@@ -197210,14 +197369,14 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197210
197369
  intervalDetails.detailA.hasFraction1 &&
197211
197370
  intervalDetails.detailB.hasFraction1;
197212
197371
  if (isInterval) {
197213
- globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction, fractionA1);
197214
- globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction, fractionB1);
197215
- globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction1, fractionA1);
197216
- globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction1, fractionB1);
197372
+ globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction, fractionA1);
197373
+ globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction, fractionB1);
197374
+ globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionA0, intervalDetails.detailA.fraction1, fractionA1);
197375
+ globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionB0, intervalDetails.detailB.fraction1, fractionB1);
197217
197376
  }
197218
197377
  else {
197219
- globalFractionA = globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
197220
- globalFractionB = globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
197378
+ globalFractionA = globalFractionA1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
197379
+ globalFractionB = globalFractionB1 = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
197221
197380
  }
197222
197381
  // ignore duplicate of most recent pair
197223
197382
  const numPrevious = this._results.length;
@@ -197225,31 +197384,31 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197225
197384
  const oldDetailA = this._results[numPrevious - 1].detailA;
197226
197385
  const oldDetailB = this._results[numPrevious - 1].detailB;
197227
197386
  if (reversed) {
197228
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailB) &&
197229
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailA))
197387
+ if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
197388
+ oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
197230
197389
  return;
197231
197390
  }
197232
197391
  else {
197233
- if (this.sameCurveAndFraction(cpA, globalFractionA, oldDetailA) &&
197234
- this.sameCurveAndFraction(cpB, globalFractionB, oldDetailB))
197392
+ if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
197393
+ oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
197235
197394
  return;
197236
197395
  }
197237
197396
  }
197238
- const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, cpA.fractionToPoint(globalFractionA));
197239
- const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, cpB.fractionToPoint(globalFractionB));
197397
+ const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, cpA.fractionToPoint(globalFractionA));
197398
+ const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, cpB.fractionToPoint(globalFractionB));
197240
197399
  if (isInterval) {
197241
197400
  detailA.captureFraction1Point1(globalFractionA1, cpA.fractionToPoint(globalFractionA1));
197242
197401
  detailB.captureFraction1Point1(globalFractionB1, cpB.fractionToPoint(globalFractionB1));
197243
197402
  }
197244
197403
  else {
197245
- detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveIntervalRole.isolated);
197246
- detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveIntervalRole.isolated);
197404
+ detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveIntervalRole.isolated);
197405
+ detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveIntervalRole.isolated);
197247
197406
  }
197248
197407
  if (reversed) {
197249
- this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveLocationDetailPair(detailB, detailA));
197408
+ this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetailPair(detailB, detailA));
197250
197409
  }
197251
197410
  else {
197252
- this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_5__.CurveLocationDetailPair(detailA, detailB));
197411
+ this._results.push(new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_6__.CurveLocationDetailPair(detailA, detailB));
197253
197412
  }
197254
197413
  }
197255
197414
  /**
@@ -197277,7 +197436,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197277
197436
  if (overlap) {
197278
197437
  this.recordPointWithLocalFractions(overlap.detailA.fraction, cpA, fractionA0, fractionA1, overlap.detailB.fraction, cpB, fractionB0, fractionB1, reversed, overlap);
197279
197438
  }
197280
- else if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dXYTransverseIntersectionUnbounded(pointA0, pointA1, pointB0, pointB1, uv)) {
197439
+ else if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dXYTransverseIntersectionUnbounded(pointA0, pointA1, pointB0, pointB1, uv)) {
197281
197440
  if (this.acceptFractionOnLine(extendA0, uv.x, extendA1, pointA0, pointA1, this._coincidentGeometryContext.tolerance) &&
197282
197441
  this.acceptFractionOnLine(extendB0, uv.y, extendB1, pointB0, pointB1, this._coincidentGeometryContext.tolerance)) {
197283
197442
  this.recordPointWithLocalFractions(uv.x, cpA, fractionA0, fractionA1, uv.y, cpB, fractionB0, fractionB1, reversed);
@@ -197297,7 +197456,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197297
197456
  this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1, hA1);
197298
197457
  this._worldToLocalPerspective.multiplyPoint3d(pointB0, 1, hB0);
197299
197458
  this._worldToLocalPerspective.multiplyPoint3d(pointB1, 1, hB1);
197300
- const fractionAB = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYTransverseIntersectionUnbounded(hA0, hA1, hB0, hB1);
197459
+ const fractionAB = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYTransverseIntersectionUnbounded(hA0, hA1, hB0, hB1);
197301
197460
  if (fractionAB !== undefined) {
197302
197461
  const fractionA = fractionAB.x;
197303
197462
  const fractionB = fractionAB.y;
@@ -197340,17 +197499,17 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197340
197499
  const data = arc.toTransformedPoint4d(this._worldToLocalPerspective);
197341
197500
  const pointA0H = this._worldToLocalPerspective.multiplyPoint3d(pointA0, 1);
197342
197501
  const pointA1H = this._worldToLocalPerspective.multiplyPoint3d(pointA1, 1);
197343
- const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.center);
197344
- const beta = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector0);
197345
- const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector90);
197346
- const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
197347
- const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
197348
- const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
197349
- const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
197502
+ const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.center);
197503
+ const beta = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector0);
197504
+ const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductPoint4dXYW(pointA0H, pointA1H, data.vector90);
197505
+ const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
197506
+ const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
197507
+ const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
197508
+ const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
197350
197509
  for (let i = 0; i < numRoots; i++) {
197351
197510
  const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
197352
197511
  const arcFraction = data.sweep.radiansToSignedPeriodicFraction(radians.atUncheckedIndex(i));
197353
- const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
197512
+ const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, arcPoint);
197354
197513
  if (lineFraction !== undefined &&
197355
197514
  this.acceptFraction(extendA0, lineFraction, extendA1) &&
197356
197515
  this.acceptFraction(extendB0, arcFraction, extendB1)) {
@@ -197366,19 +197525,19 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197366
197525
  pointA0Local = this._worldToLocalAffine.multiplyPoint3d(pointA0);
197367
197526
  pointA1Local = this._worldToLocalAffine.multiplyPoint3d(pointA1);
197368
197527
  }
197369
- const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.center, 1);
197370
- const beta = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector0, 0);
197371
- const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector90, 0);
197372
- const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
197373
- const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
197374
- const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_7__.GrowableFloat64Array(2);
197375
- const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
197528
+ const alpha = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.center, 1);
197529
+ const beta = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector0, 0);
197530
+ const gamma = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.tripleProductXYW(pointA0Local, 1, pointA1Local, 1, data.vector90, 0);
197531
+ const cosines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
197532
+ const sines = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
197533
+ const radians = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_8__.GrowableFloat64Array(2);
197534
+ const numRoots = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.AnalyticRoots.appendImplicitLineUnitCircleIntersections(alpha, beta, gamma, cosines, sines, radians);
197376
197535
  const lineFractionTol = 1.0e-10;
197377
197536
  const arcFractionTol = 1.0e-7;
197378
197537
  for (let i = 0; i < numRoots; i++) {
197379
197538
  const arcPoint = data.center.plus2Scaled(data.vector0, cosines.atUncheckedIndex(i), data.vector90, sines.atUncheckedIndex(i));
197380
197539
  const arcFraction = data.sweep.radiansToSignedPeriodicFraction(radians.atUncheckedIndex(i));
197381
- const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
197540
+ const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dXYClosestPointUnbounded(pointA0Local, pointA1Local, arcPoint);
197382
197541
  if (lineFraction !== undefined &&
197383
197542
  this.acceptFraction(extendA0, lineFraction, extendA1, lineFractionTol) &&
197384
197543
  this.acceptFraction(extendB0, arcFraction, extendB1, arcFractionTol)) {
@@ -197399,7 +197558,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197399
197558
  const localB = inverseA.multiplyMatrixMatrix(matrixB); // localB->localA transform
197400
197559
  const ellipseRadians = [];
197401
197560
  const circleRadians = [];
197402
- _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(localB.coffs[2], localB.coffs[5], localB.coffs[8], // center xyw
197561
+ _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.TrigPolynomial.solveUnitCircleHomogeneousEllipseIntersection(localB.coffs[2], localB.coffs[5], localB.coffs[8], // center xyw
197403
197562
  localB.coffs[0], localB.coffs[3], localB.coffs[6], // vector0 xyw
197404
197563
  localB.coffs[1], localB.coffs[4], localB.coffs[7], // vector90 xyw
197405
197564
  ellipseRadians, circleRadians);
@@ -197430,14 +197589,14 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197430
197589
  if (this._worldToLocalPerspective) {
197431
197590
  const dataA = cpA.toTransformedPoint4d(this._worldToLocalPerspective);
197432
197591
  const dataB = cpB.toTransformedPoint4d(this._worldToLocalPerspective);
197433
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
197434
- matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataB.vector0, dataB.vector0.w, dataB.vector90, dataA.vector90.w, dataB.center, dataB.center.w);
197592
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
197593
+ matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataB.vector0, dataB.vector0.w, dataB.vector90, dataA.vector90.w, dataB.center, dataB.center.w);
197435
197594
  }
197436
197595
  else {
197437
197596
  const dataA = cpA.toTransformedVectors(this._worldToLocalAffine);
197438
197597
  const dataB = cpB.toTransformedVectors(this._worldToLocalAffine);
197439
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
197440
- matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataB.vector0, 0, dataB.vector90, 0, dataB.center, 1);
197598
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
197599
+ matrixB = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataB.vector0, 0, dataB.vector90, 0, dataB.center, 1);
197441
197600
  }
197442
197601
  const conditionA = matrixA.conditionNumber();
197443
197602
  const conditionB = matrixB.conditionNumber();
@@ -197467,11 +197626,11 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197467
197626
  let matrixA;
197468
197627
  if (this._worldToLocalPerspective) {
197469
197628
  const dataA = cpA.toTransformedPoint4d(this._worldToLocalPerspective);
197470
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
197629
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, dataA.vector0.w, dataA.vector90, dataA.vector90.w, dataA.center, dataA.center.w);
197471
197630
  }
197472
197631
  else {
197473
197632
  const dataA = cpA.toTransformedVectors(this._worldToLocalAffine);
197474
- matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_8__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
197633
+ matrixA = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_9__.Matrix3d.createColumnsXYW(dataA.vector0, 0, dataA.vector90, 0, dataA.center, 1);
197475
197634
  }
197476
197635
  // The worldToLocal has moved the arc vectors into local space.
197477
197636
  // matrixA captures the xyw parts (ignoring z)
@@ -197482,7 +197641,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197482
197641
  const orderF = cpB.order; // order of the beziers for simple coordinates
197483
197642
  const orderG = 2 * orderF - 1; // order of the (single) bezier for squared coordinates.
197484
197643
  const coffF = new Float64Array(orderF);
197485
- const univariateBezierG = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderG);
197644
+ const univariateBezierG = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__.UnivariateBezier(orderG);
197486
197645
  const axx = matrixAInverse.at(0, 0);
197487
197646
  const axy = matrixAInverse.at(0, 1);
197488
197647
  const axz = 0.0;
@@ -197553,13 +197712,13 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197553
197712
  dispatchBezierBezierStrokeFirst(bezierA, bcurveA, strokeCountA, bezierB, bcurveB, _strokeCountB, univariateBezierB, // caller-allocated for univariate coefficients.
197554
197713
  reversed) {
197555
197714
  if (!this._xyzwA0)
197556
- this._xyzwA0 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
197715
+ this._xyzwA0 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
197557
197716
  if (!this._xyzwA1)
197558
- this._xyzwA1 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
197717
+ this._xyzwA1 = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
197559
197718
  if (!this._xyzwPlane)
197560
- this._xyzwPlane = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
197719
+ this._xyzwPlane = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
197561
197720
  if (!this._xyzwB)
197562
- this._xyzwB = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
197721
+ this._xyzwB = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
197563
197722
  /*
197564
197723
  const roots = univariateBezierG.roots(0.0, true);
197565
197724
  if (roots) {
@@ -197585,7 +197744,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197585
197744
  for (let i = 1; i <= strokeCountA; i++, f0 = f1, this._xyzwA0.setFrom(this._xyzwA1)) {
197586
197745
  f1 = i * df;
197587
197746
  bezierA.fractionToPoint4d(f1, this._xyzwA1);
197588
- _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createPlanePointPointZ(this._xyzwA0, this._xyzwA1, this._xyzwPlane);
197747
+ _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.createPlanePointPointZ(this._xyzwA0, this._xyzwA1, this._xyzwPlane);
197589
197748
  bezierB.poleProductsXYZW(univariateBezierB.coffs, this._xyzwPlane.x, this._xyzwPlane.y, this._xyzwPlane.z, this._xyzwPlane.w);
197590
197749
  let errors = 0;
197591
197750
  const roots = univariateBezierB.roots(0.0, true);
@@ -197593,11 +197752,11 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197593
197752
  for (const r of roots) {
197594
197753
  let bezierBFraction = r;
197595
197754
  bezierB.fractionToPoint4d(bezierBFraction, this._xyzwB);
197596
- const segmentAFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(this._xyzwA0, this._xyzwA1, this._xyzwB);
197597
- if (segmentAFraction && _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.isIn01WithTolerance(segmentAFraction, intervalTolerance)) {
197598
- let bezierAFraction = _Geometry__WEBPACK_IMPORTED_MODULE_3__.Geometry.interpolate(f0, segmentAFraction, f1);
197755
+ const segmentAFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(this._xyzwA0, this._xyzwA1, this._xyzwB);
197756
+ if (segmentAFraction && _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.isIn01WithTolerance(segmentAFraction, intervalTolerance)) {
197757
+ let bezierAFraction = _Geometry__WEBPACK_IMPORTED_MODULE_4__.Geometry.interpolate(f0, segmentAFraction, f1);
197599
197758
  const xyMatchingFunction = new BezierBezierIntersectionXYRRToRRD(bezierA, bezierB);
197600
- const newtonSearcher = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_0__.Newton2dUnboundedWithDerivative(xyMatchingFunction);
197759
+ const newtonSearcher = new _numerics_Newton__WEBPACK_IMPORTED_MODULE_1__.Newton2dUnboundedWithDerivative(xyMatchingFunction);
197601
197760
  newtonSearcher.setUV(bezierAFraction, bezierBFraction);
197602
197761
  if (newtonSearcher.runIterations()) {
197603
197762
  bezierAFraction = newtonSearcher.getU();
@@ -197640,8 +197799,8 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197640
197799
  const rangeB = this.getRanges(bezierSpanB);
197641
197800
  const orderA = bcurveA.order;
197642
197801
  const orderB = bcurveB.order;
197643
- const univariateCoffsA = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderA);
197644
- const univariateCoffsB = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_9__.UnivariateBezier(orderB);
197802
+ const univariateCoffsA = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__.UnivariateBezier(orderA);
197803
+ const univariateCoffsB = new _numerics_BezierPolynomials__WEBPACK_IMPORTED_MODULE_10__.UnivariateBezier(orderB);
197645
197804
  for (let a = 0; a < numA; a++) {
197646
197805
  for (let b = 0; b < numB; b++) {
197647
197806
  if (rangeA[a].intersectsRangeXY(rangeB[b])) {
@@ -197665,7 +197824,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197665
197824
  return this._worldToLocalPerspective.multiplyPoint3d(xyz, w);
197666
197825
  if (this._worldToLocalAffine)
197667
197826
  return this._worldToLocalAffine.multiplyXYZW(xyz.x, xyz.y, xyz.z, w);
197668
- return _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createFromPointAndWeight(xyz, w);
197827
+ return _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.createFromPointAndWeight(xyz, w);
197669
197828
  }
197670
197829
  mapNPCPlaneToWorld(npcPlane, worldPlane) {
197671
197830
  // for NPC pointY, Y^ * H = 0 is "on" plane H. (Hat is transpose)
@@ -197689,7 +197848,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197689
197848
  dispatchSegmentBsplineCurve(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, bcurve, extendB, reversed) {
197690
197849
  const pointA0H = this.projectPoint(pointA0);
197691
197850
  const pointA1H = this.projectPoint(pointA1);
197692
- const planeCoffs = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.createPlanePointPointZ(pointA0H, pointA1H);
197851
+ const planeCoffs = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.createPlanePointPointZ(pointA0H, pointA1H);
197693
197852
  this.mapNPCPlaneToWorld(planeCoffs, planeCoffs);
197694
197853
  // NOW .. we have a plane in world space. Intersect it with the bspline:
197695
197854
  const intersections = [];
@@ -197701,7 +197860,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197701
197860
  const fractionB = detail.fraction;
197702
197861
  const curvePoint = detail.point;
197703
197862
  const curvePointH = this.projectPoint(curvePoint);
197704
- const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_6__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, curvePointH);
197863
+ const lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_7__.SmallSystem.lineSegment3dHXYClosestPointUnbounded(pointA0H, pointA1H, curvePointH);
197705
197864
  if (lineFraction !== undefined && this.acceptFraction(extendA0, lineFraction, extendA1) &&
197706
197865
  this.acceptFraction(extendB, fractionB, extendB)) {
197707
197866
  this.recordPointWithLocalFractions(lineFraction, cpA, fractionA0, fractionA1, fractionB, bcurve, 0, 1, reversed);
@@ -197805,72 +197964,130 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197805
197964
  transform.multiplyPoint3d(pointB0, this._workPointB0);
197806
197965
  transform.multiplyPoint3d(pointB1, this._workPointB1);
197807
197966
  }
197967
+ /** Low level dispatch of curve collection. */
197968
+ dispatchCurveCollection(geomA, geomAHandler) {
197969
+ const geomB = this._geometryB; // save
197970
+ if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection))
197971
+ return;
197972
+ for (const child of geomB.children) {
197973
+ this.resetGeometry(child);
197974
+ geomAHandler(geomA);
197975
+ }
197976
+ this._geometryB = geomB; // restore
197977
+ }
197978
+ /** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
197979
+ dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
197980
+ if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex))
197981
+ return;
197982
+ if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
197983
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!!"call handleCurveChainWithDistanceIndex(geomA) instead");
197984
+ return;
197985
+ }
197986
+ const index0 = this._results.length;
197987
+ const geomB = this._geometryB; // save
197988
+ for (const child of geomB.path.children) {
197989
+ this.resetGeometry(child);
197990
+ geomAHandler(geomA);
197991
+ }
197992
+ this.resetGeometry(geomB); // restore
197993
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
197994
+ }
197808
197995
  /** Double dispatch handler for strongly typed segment. */
197809
197996
  handleLineSegment3d(segmentA) {
197810
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
197997
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
197811
197998
  const segmentB = this._geometryB;
197812
197999
  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);
197813
198000
  }
197814
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
198001
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
197815
198002
  this.computeSegmentLineString(segmentA, this._extendA, this._geometryB, this._extendB, false);
197816
198003
  }
197817
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
198004
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
197818
198005
  this.dispatchSegmentArc(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, this._extendB, false);
197819
198006
  }
197820
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3d) {
198007
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3d) {
197821
198008
  this.dispatchSegmentBsplineCurve(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, false);
197822
198009
  }
198010
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
198011
+ this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
198012
+ }
198013
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
198014
+ this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
198015
+ }
197823
198016
  return undefined;
197824
198017
  }
197825
198018
  /** Double dispatch handler for strongly typed linestring. */
197826
198019
  handleLineString3d(lsA) {
197827
- if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
198020
+ if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
197828
198021
  const lsB = this._geometryB;
197829
198022
  this.computeLineStringLineString(lsA, lsB, false);
197830
198023
  }
197831
- else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
198024
+ else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
197832
198025
  this.computeSegmentLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
197833
198026
  }
197834
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
198027
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
197835
198028
  this.computeArcLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
197836
198029
  }
197837
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3d) {
198030
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3d) {
197838
198031
  this.dispatchLineStringBSplineCurve(lsA, this._extendA, this._geometryB, this._extendB, false);
197839
198032
  }
198033
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
198034
+ this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
198035
+ }
198036
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
198037
+ this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
198038
+ }
197840
198039
  return undefined;
197841
198040
  }
197842
198041
  /** Double dispatch handler for strongly typed arc. */
197843
198042
  handleArc3d(arc0) {
197844
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
198043
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
197845
198044
  this.dispatchSegmentArc(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, arc0, this._extendA, this._extendA, true);
197846
198045
  }
197847
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
198046
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
197848
198047
  this.computeArcLineString(arc0, this._extendA, this._geometryB, this._extendB, false);
197849
198048
  }
197850
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
198049
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
197851
198050
  this.dispatchArcArc(arc0, this._extendA, this._geometryB, this._extendB, false);
197852
198051
  }
197853
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3d) {
198052
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3d) {
197854
198053
  this.dispatchArcBsplineCurve3d(arc0, this._extendA, this._geometryB, this._extendB, false);
197855
198054
  }
198055
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
198056
+ this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
198057
+ }
198058
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
198059
+ this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
198060
+ }
197856
198061
  return undefined;
197857
198062
  }
197858
198063
  /** Double dispatch handler for strongly typed bspline curve. */
197859
198064
  handleBSplineCurve3d(curve) {
197860
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_11__.LineSegment3d) {
198065
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_14__.LineSegment3d) {
197861
198066
  this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, curve, this._extendA, true);
197862
198067
  }
197863
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_12__.LineString3d) {
198068
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_15__.LineString3d) {
197864
198069
  this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB, curve, this._extendA, true);
197865
198070
  }
197866
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_13__.Arc3d) {
198071
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_16__.Arc3d) {
197867
198072
  this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB, curve, this._extendA, true);
197868
198073
  }
197869
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_14__.BSplineCurve3dBase) {
198074
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_17__.BSplineCurve3dBase) {
197870
198075
  this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
197871
198076
  }
198077
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_12__.CurveCollection) {
198078
+ this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
198079
+ }
198080
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex) {
198081
+ this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
198082
+ }
197872
198083
  return undefined;
197873
198084
  }
198085
+ /** Double dispatch handler for strongly typed CurveChainWithDistanceIndex. */
198086
+ handleCurveChainWithDistanceIndex(chain) {
198087
+ super.handleCurveChainWithDistanceIndex(chain);
198088
+ // if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
198089
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_13__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
198090
+ }
197874
198091
  /** Double dispatch handler for strongly typed homogeneous bspline curve .. */
197875
198092
  handleBSplineCurve3dH(_curve) {
197876
198093
  /*
@@ -197889,19 +198106,19 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
197889
198106
  return undefined;
197890
198107
  }
197891
198108
  }
197892
- CurveCurveIntersectXY._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_15__.Vector2d.create();
197893
- CurveCurveIntersectXY._workPointA0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
197894
- CurveCurveIntersectXY._workPointA1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
197895
- CurveCurveIntersectXY._workPointB0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
197896
- CurveCurveIntersectXY._workPointB1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_10__.Point4d.create();
197897
- CurveCurveIntersectXY._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
197898
- CurveCurveIntersectXY._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
197899
- CurveCurveIntersectXY._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
197900
- CurveCurveIntersectXY._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
197901
- CurveCurveIntersectXY._workPointA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
197902
- CurveCurveIntersectXY._workPointA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
197903
- CurveCurveIntersectXY._workPointB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
197904
- CurveCurveIntersectXY._workPointB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_16__.Point3d.create();
198109
+ CurveCurveIntersectXY._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_18__.Vector2d.create();
198110
+ CurveCurveIntersectXY._workPointA0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
198111
+ CurveCurveIntersectXY._workPointA1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
198112
+ CurveCurveIntersectXY._workPointB0H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
198113
+ CurveCurveIntersectXY._workPointB1H = _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_11__.Point4d.create();
198114
+ CurveCurveIntersectXY._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
198115
+ CurveCurveIntersectXY._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
198116
+ CurveCurveIntersectXY._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
198117
+ CurveCurveIntersectXY._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
198118
+ CurveCurveIntersectXY._workPointA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
198119
+ CurveCurveIntersectXY._workPointA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
198120
+ CurveCurveIntersectXY._workPointB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
198121
+ CurveCurveIntersectXY._workPointB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_19__.Point3d.create();
197905
198122
 
197906
198123
 
197907
198124
 
@@ -197918,17 +198135,20 @@ __webpack_require__.r(__webpack_exports__);
197918
198135
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
197919
198136
  /* harmony export */ CurveCurveIntersectXYZ: () => (/* binding */ CurveCurveIntersectXYZ)
197920
198137
  /* harmony export */ });
197921
- /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
197922
- /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
197923
- /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
197924
- /* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
197925
- /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
197926
- /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
197927
- /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
197928
- /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
197929
- /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
197930
- /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
197931
- /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
198138
+ /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
198139
+ /* harmony import */ var _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../bspline/BSplineCurve */ "../../core/geometry/lib/esm/bspline/BSplineCurve.js");
198140
+ /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
198141
+ /* harmony import */ var _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../geometry3d/GeometryHandler */ "../../core/geometry/lib/esm/geometry3d/GeometryHandler.js");
198142
+ /* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
198143
+ /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
198144
+ /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
198145
+ /* harmony import */ var _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../numerics/Polynomials */ "../../core/geometry/lib/esm/numerics/Polynomials.js");
198146
+ /* harmony import */ var _Arc3d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Arc3d */ "../../core/geometry/lib/esm/curve/Arc3d.js");
198147
+ /* harmony import */ var _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../CurveChainWithDistanceIndex */ "../../core/geometry/lib/esm/curve/CurveChainWithDistanceIndex.js");
198148
+ /* harmony import */ var _CurveCollection__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../CurveCollection */ "../../core/geometry/lib/esm/curve/CurveCollection.js");
198149
+ /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
198150
+ /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
198151
+ /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
197932
198152
  /*---------------------------------------------------------------------------------------------
197933
198153
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
197934
198154
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -197947,6 +198167,9 @@ __webpack_require__.r(__webpack_exports__);
197947
198167
 
197948
198168
 
197949
198169
 
198170
+
198171
+
198172
+
197950
198173
  // cspell:word XYRR
197951
198174
  /**
197952
198175
  * Handler class for XYZ intersections between _geometryB and another geometry.
@@ -197954,7 +198177,7 @@ __webpack_require__.r(__webpack_exports__);
197954
198177
  * * geometryB is saved for later reference.
197955
198178
  * @internal
197956
198179
  */
197957
- class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_0__.NullGeometryHandler {
198180
+ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODULE_1__.RecurseToCurvesGeometryHandler {
197958
198181
  /**
197959
198182
  * @param extendA flag to enable using extension of the other geometry.
197960
198183
  * @param geometryB second curve for intersection. Saved for reference by specific handler methods.
@@ -197967,6 +198190,10 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
197967
198190
  this._extendB = extendB;
197968
198191
  this._results = [];
197969
198192
  }
198193
+ /** Reset the geometry, leaving all other parts unchanged (and preserving accumulated intersections). */
198194
+ resetGeometry(geometryB) {
198195
+ this._geometryB = geometryB;
198196
+ }
197970
198197
  /**
197971
198198
  * Return the results structure for the intersection calculation, structured as an array of CurveLocationDetailPair.
197972
198199
  * @param reinitialize if true, a new results structure is created for use by later calls.
@@ -197991,21 +198218,21 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
197991
198218
  * Record with fraction mapping.
197992
198219
  */
197993
198220
  recordPointWithLocalFractions(localFractionA, cpA, fractionA0, fractionA1, localFractionB, cpB, fractionB0, fractionB1, reversed) {
197994
- const globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
197995
- const globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
197996
- // ignore duplicate of most recent point . ..
198221
+ const globalFractionA = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(fractionA0, localFractionA, fractionA1);
198222
+ const globalFractionB = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.interpolate(fractionB0, localFractionB, fractionB1);
198223
+ // ignore duplicate of most recent point
197997
198224
  const numPrevious = this._results.length;
197998
198225
  if (numPrevious > 0) {
197999
- const topFractionA = this._results[numPrevious - 1].detailA.fraction;
198000
- const topFractionB = this._results[numPrevious - 1].detailB.fraction;
198226
+ const oldDetailA = this._results[numPrevious - 1].detailA;
198227
+ const oldDetailB = this._results[numPrevious - 1].detailB;
198001
198228
  if (reversed) {
198002
- if (_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(topFractionA, globalFractionB) &&
198003
- _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(topFractionB, globalFractionA))
198229
+ if (oldDetailB.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
198230
+ oldDetailA.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
198004
198231
  return;
198005
198232
  }
198006
198233
  else {
198007
- if (_Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(topFractionA, globalFractionA) &&
198008
- _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.isAlmostEqualNumber(topFractionB, globalFractionB))
198234
+ if (oldDetailA.isSameCurveAndFraction({ curve: cpA, fraction: globalFractionA }) &&
198235
+ oldDetailB.isSameCurveAndFraction({ curve: cpB, fraction: globalFractionB }))
198009
198236
  return;
198010
198237
  }
198011
198238
  }
@@ -198013,16 +198240,16 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
198013
198240
  const pointB = cpB.fractionToPoint(globalFractionB);
198014
198241
  if (!pointA.isAlmostEqualMetric(pointB))
198015
198242
  return;
198016
- const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, pointA);
198017
- detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveIntervalRole.isolated);
198018
- const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, pointB);
198019
- detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveIntervalRole.isolated);
198243
+ const detailA = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveFractionPoint(cpA, globalFractionA, pointA);
198244
+ detailA.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveIntervalRole.isolated);
198245
+ const detailB = _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetail.createCurveFractionPoint(cpB, globalFractionB, pointB);
198246
+ detailB.setIntervalRole(_CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveIntervalRole.isolated);
198020
198247
  if (reversed) {
198021
- const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveLocationDetailPair(detailB, detailA);
198248
+ const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair(detailB, detailA);
198022
198249
  this._results.push(pair);
198023
198250
  }
198024
198251
  else {
198025
- const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_2__.CurveLocationDetailPair(detailA, detailB);
198252
+ const pair = new _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_3__.CurveLocationDetailPair(detailA, detailB);
198026
198253
  this._results.push(pair);
198027
198254
  }
198028
198255
  }
@@ -198033,7 +198260,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
198033
198260
  */
198034
198261
  computeSegmentSegment3D(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, cpB, extendB0, pointB0, fractionB0, pointB1, fractionB1, extendB1, reversed) {
198035
198262
  const uv = CurveCurveIntersectXYZ._workVector2dA;
198036
- if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_3__.SmallSystem.lineSegment3dClosestApproachUnbounded(pointA0, pointA1, pointB0, pointB1, uv) &&
198263
+ if (_numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestApproachUnbounded(pointA0, pointA1, pointB0, pointB1, uv) &&
198037
198264
  this.acceptFraction(extendA0, uv.x, extendA1) && this.acceptFraction(extendB0, uv.y, extendB1)) {
198038
198265
  this.recordPointWithLocalFractions(uv.x, cpA, fractionA0, fractionA1, uv.y, cpB, fractionB0, fractionB1, reversed);
198039
198266
  }
@@ -198060,20 +198287,20 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
198060
198287
  * @param vectorC second candidate for additional in-plane vector
198061
198288
  */
198062
198289
  createPlaneWithPreferredPerpendicular(origin, vectorA, cosineValue, vectorB, vectorC) {
198063
- cosineValue = _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.restrictToInterval(Math.abs(cosineValue), 0.0, 1.0 - _Geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallFraction);
198290
+ cosineValue = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.restrictToInterval(Math.abs(cosineValue), 0.0, 1.0 - _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallFraction);
198064
198291
  const dotAA = vectorA.magnitudeSquared();
198065
198292
  const dotBB = vectorB.magnitudeSquared();
198066
198293
  const dotAB = Math.abs(vectorA.dotProduct(vectorB));
198067
198294
  const cross = vectorA.unitCrossProduct(dotAB * dotAB <= cosineValue * cosineValue * dotAA * dotBB ? vectorB : vectorC);
198068
198295
  if (cross)
198069
- return _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_4__.Plane3dByOriginAndUnitNormal.create(origin, cross);
198296
+ return _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(origin, cross);
198070
198297
  return undefined;
198071
198298
  }
198072
198299
  // Caller accesses data from a linestring or segment and passes it here.
198073
198300
  // The line segment in question might be (a) a full line segment or (b) a fragment within a linestring.
198074
198301
  // The fraction and extend parameters allow all combinations to be passed in.
198075
198302
  dispatchSegmentArc(cpA, extendA0, pointA0, fractionA0, pointA1, fractionA1, extendA1, arc, extendB0, extendB1, reversed) {
198076
- const lineVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Vector3d.createStartEnd(pointA0, pointA1);
198303
+ const lineVector = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Vector3d.createStartEnd(pointA0, pointA1);
198077
198304
  const plane = this.createPlaneWithPreferredPerpendicular(pointA0, lineVector, 0.94, arc.perpendicularVector, arc.vector0);
198078
198305
  if (plane !== undefined) {
198079
198306
  const candidates = [];
@@ -198082,7 +198309,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
198082
198309
  let linePoint;
198083
198310
  for (const c of candidates) {
198084
198311
  if (this.acceptFraction(extendB0, c.fraction, extendB1)) {
198085
- lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_3__.SmallSystem.lineSegment3dClosestPointUnbounded(pointA0, pointA1, c.point);
198312
+ lineFraction = _numerics_Polynomials__WEBPACK_IMPORTED_MODULE_4__.SmallSystem.lineSegment3dClosestPointUnbounded(pointA0, pointA1, c.point);
198086
198313
  if (lineFraction !== undefined) {
198087
198314
  linePoint = pointA0.interpolate(lineFraction, pointA1, linePoint);
198088
198315
  if (linePoint.isAlmostEqualMetric(c.point)
@@ -198103,7 +198330,7 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
198103
198330
  if (otherVectors !== undefined) {
198104
198331
  const ellipseRadians = [];
198105
198332
  const circleRadians = [];
198106
- _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);
198333
+ _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);
198107
198334
  for (let i = 0; i < ellipseRadians.length; i++) {
198108
198335
  const fractionA = cpA.sweep.radiansToSignedPeriodicFraction(circleRadians[i]);
198109
198336
  const fractionB = cpB.sweep.radiansToSignedPeriodicFraction(ellipseRadians[i]);
@@ -198123,8 +198350,8 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
198123
198350
  // 2) accept points that appear in both intersection sets.
198124
198351
  // If arcs are in parallel planes -- no intersections.
198125
198352
  // If arcs are in the same plane -- xy intersection in that plane.
198126
- const planeA = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_4__.Plane3dByOriginAndUnitNormal.create(cpA.center, cpA.perpendicularVector);
198127
- const planeB = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_4__.Plane3dByOriginAndUnitNormal.create(cpB.center, cpB.perpendicularVector);
198353
+ const planeA = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(cpA.center, cpA.perpendicularVector);
198354
+ const planeB = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_5__.Plane3dByOriginAndUnitNormal.create(cpB.center, cpB.perpendicularVector);
198128
198355
  if (planeA === undefined || planeB === undefined)
198129
198356
  return;
198130
198357
  if (planeA.getNormalRef().isParallelTo(planeB.getNormalRef())) {
@@ -198525,72 +198752,130 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
198525
198752
  }
198526
198753
  }
198527
198754
  }
198755
+ /** Low level dispatch of curve collection. */
198756
+ dispatchCurveCollection(geomA, geomAHandler) {
198757
+ const geomB = this._geometryB; // save
198758
+ if (!geomB || !geomB.children || !(geomB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection))
198759
+ return;
198760
+ for (const child of geomB.children) {
198761
+ this.resetGeometry(child);
198762
+ geomAHandler(geomA);
198763
+ }
198764
+ this._geometryB = geomB; // restore
198765
+ }
198766
+ /** Low level dispatch to geomA given a CurveChainWithDistanceIndex in geometryB. */
198767
+ dispatchCurveChainWithDistanceIndex(geomA, geomAHandler) {
198768
+ if (!this._geometryB || !(this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex))
198769
+ return;
198770
+ if (geomA instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
198771
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(!!"call handleCurveChainWithDistanceIndex(geomA) instead");
198772
+ return;
198773
+ }
198774
+ const index0 = this._results.length;
198775
+ const geomB = this._geometryB; // save
198776
+ for (const child of geomB.path.children) {
198777
+ this.resetGeometry(child);
198778
+ geomAHandler(geomA);
198779
+ }
198780
+ this.resetGeometry(geomB); // restore
198781
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, index0, undefined, geomB, true);
198782
+ }
198528
198783
  /** Double dispatch handler for strongly typed segment. */
198529
198784
  handleLineSegment3d(segmentA) {
198530
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d) {
198785
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
198531
198786
  const segmentB = this._geometryB;
198532
198787
  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);
198533
198788
  }
198534
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
198789
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
198535
198790
  this.computeSegmentLineString(segmentA, this._extendA, this._geometryB, this._extendB, false);
198536
198791
  }
198537
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_8__.Arc3d) {
198792
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
198538
198793
  this.dispatchSegmentArc(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, this._extendB, false);
198539
198794
  }
198540
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3d) {
198795
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
198541
198796
  this.dispatchSegmentBsplineCurve(segmentA, this._extendA, segmentA.point0Ref, 0.0, segmentA.point1Ref, 1.0, this._extendA, this._geometryB, this._extendB, false);
198542
198797
  }
198798
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
198799
+ this.dispatchCurveCollection(segmentA, this.handleLineSegment3d.bind(this));
198800
+ }
198801
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
198802
+ this.dispatchCurveChainWithDistanceIndex(segmentA, this.handleLineSegment3d.bind(this));
198803
+ }
198543
198804
  return undefined;
198544
198805
  }
198545
198806
  /** double dispatch handler for strongly typed linestring. */
198546
198807
  handleLineString3d(lsA) {
198547
- if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
198808
+ if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
198548
198809
  const lsB = this._geometryB;
198549
198810
  this.computeLineStringLineString(lsA, lsB, false);
198550
198811
  }
198551
- else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d) {
198812
+ else if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
198552
198813
  this.computeSegmentLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
198553
198814
  }
198554
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_8__.Arc3d) {
198815
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
198555
198816
  this.computeArcLineString(this._geometryB, this._extendB, lsA, this._extendA, true);
198556
198817
  }
198557
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3d) {
198818
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
198558
198819
  this.dispatchLineStringBSplineCurve(lsA, this._extendA, this._geometryB, this._extendB, false);
198559
198820
  }
198821
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
198822
+ this.dispatchCurveCollection(lsA, this.handleLineString3d.bind(this));
198823
+ }
198824
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
198825
+ this.dispatchCurveChainWithDistanceIndex(lsA, this.handleLineString3d.bind(this));
198826
+ }
198560
198827
  return undefined;
198561
198828
  }
198562
198829
  /** Double dispatch handler for strongly typed arc. */
198563
198830
  handleArc3d(arc0) {
198564
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d) {
198831
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
198565
198832
  this.dispatchSegmentArc(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, arc0, this._extendA, this._extendA, true);
198566
198833
  }
198567
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
198834
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
198568
198835
  this.computeArcLineString(arc0, this._extendA, this._geometryB, this._extendB, false);
198569
198836
  }
198570
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_8__.Arc3d) {
198837
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
198571
198838
  this.dispatchArcArc(arc0, this._extendA, this._geometryB, this._extendB, false);
198572
198839
  }
198573
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3d) {
198840
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3d) {
198574
198841
  this.dispatchArcBsplineCurve3d(arc0, this._extendA, this._geometryB, this._extendB, false);
198575
198842
  }
198843
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
198844
+ this.dispatchCurveCollection(arc0, this.handleArc3d.bind(this));
198845
+ }
198846
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
198847
+ this.dispatchCurveChainWithDistanceIndex(arc0, this.handleArc3d.bind(this));
198848
+ }
198576
198849
  return undefined;
198577
198850
  }
198578
198851
  /** Double dispatch handler for strongly typed bspline curve. */
198579
198852
  handleBSplineCurve3d(curve) {
198580
- if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__.LineSegment3d) {
198853
+ if (this._geometryB instanceof _LineSegment3d__WEBPACK_IMPORTED_MODULE_9__.LineSegment3d) {
198581
198854
  this.dispatchSegmentBsplineCurve(this._geometryB, this._extendB, this._geometryB.point0Ref, 0.0, this._geometryB.point1Ref, 1.0, this._extendB, curve, this._extendA, true);
198582
198855
  }
198583
- else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_7__.LineString3d) {
198856
+ else if (this._geometryB instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_10__.LineString3d) {
198584
198857
  this.dispatchLineStringBSplineCurve(this._geometryB, this._extendB, curve, this._extendA, true);
198585
198858
  }
198586
- else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_8__.Arc3d) {
198859
+ else if (this._geometryB instanceof _Arc3d__WEBPACK_IMPORTED_MODULE_11__.Arc3d) {
198587
198860
  this.dispatchArcBsplineCurve3d(this._geometryB, this._extendB, curve, this._extendA, true);
198588
198861
  }
198589
- else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_9__.BSplineCurve3dBase) {
198862
+ else if (this._geometryB instanceof _bspline_BSplineCurve__WEBPACK_IMPORTED_MODULE_12__.BSplineCurve3dBase) {
198590
198863
  this.dispatchBSplineCurve3dBSplineCurve3d(curve, this._geometryB, false);
198591
198864
  }
198865
+ else if (this._geometryB instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_7__.CurveCollection) {
198866
+ this.dispatchCurveCollection(curve, this.handleBSplineCurve3d.bind(this));
198867
+ }
198868
+ else if (this._geometryB instanceof _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex) {
198869
+ this.dispatchCurveChainWithDistanceIndex(curve, this.handleBSplineCurve3d.bind(this));
198870
+ }
198592
198871
  return undefined;
198593
198872
  }
198873
+ /** Double dispatch handler for strongly typed CurveChainWithDistanceIndex. */
198874
+ handleCurveChainWithDistanceIndex(chain) {
198875
+ super.handleCurveChainWithDistanceIndex(chain);
198876
+ // if _geometryB is also a CurveChainWithDistanceIndex, it will already have been converted by dispatchCurveChainWithDistanceIndex
198877
+ this._results = _CurveChainWithDistanceIndex__WEBPACK_IMPORTED_MODULE_8__.CurveChainWithDistanceIndex.convertChildDetailToChainDetail(this._results, 0, chain, undefined, true);
198878
+ }
198594
198879
  /** Double dispatch handler for strongly typed homogeneous bspline curve. */
198595
198880
  handleBSplineCurve3dH(_curve) {
198596
198881
  /*
@@ -198609,11 +198894,11 @@ class CurveCurveIntersectXYZ extends _geometry3d_GeometryHandler__WEBPACK_IMPORT
198609
198894
  return undefined;
198610
198895
  }
198611
198896
  }
198612
- CurveCurveIntersectXYZ._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_10__.Vector2d.create();
198613
- CurveCurveIntersectXYZ._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Point3d.create();
198614
- CurveCurveIntersectXYZ._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Point3d.create();
198615
- CurveCurveIntersectXYZ._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Point3d.create();
198616
- CurveCurveIntersectXYZ._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_5__.Point3d.create();
198897
+ CurveCurveIntersectXYZ._workVector2dA = _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_13__.Vector2d.create();
198898
+ CurveCurveIntersectXYZ._workPointAA0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
198899
+ CurveCurveIntersectXYZ._workPointAA1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
198900
+ CurveCurveIntersectXYZ._workPointBB0 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
198901
+ CurveCurveIntersectXYZ._workPointBB1 = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_6__.Point3d.create();
198617
198902
 
198618
198903
 
198619
198904
 
@@ -198978,10 +199263,9 @@ class MultiChainCollector {
198978
199263
  captureCurve(candidate) {
198979
199264
  if (candidate instanceof _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive)
198980
199265
  this.captureCurvePrimitive(candidate);
198981
- else if (candidate instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection && candidate.children !== undefined) {
198982
- for (const c of candidate.children) {
199266
+ else if (candidate instanceof _CurveCollection__WEBPACK_IMPORTED_MODULE_2__.CurveCollection) {
199267
+ for (const c of candidate.children)
198983
199268
  this.captureCurve(c);
198984
- }
198985
199269
  }
198986
199270
  }
198987
199271
  /** If allowed by the geometry type, move an endpoint. */
@@ -225184,7 +225468,7 @@ class Point4d extends _geometry3d_Plane3d__WEBPACK_IMPORTED_MODULE_0__.Plane3d {
225184
225468
  return undefined;
225185
225469
  }
225186
225470
  /**
225187
- * * Return xyz projection of spacePoint to the plane of the DPoint4d (understood as coefficients, not point coordinates)
225471
+ * * Return xyz projection of spacePoint to the plane (this Point4d is understood as plane coefficients, not point coordinates)
225188
225472
  * * If the xyz part of `this` are all zero, (a clone of) `spacePoint` is returned.
225189
225473
  */
225190
225474
  projectPointToPlane(spacePoint, result) {
@@ -225704,14 +225988,15 @@ class BezierCoffs {
225704
225988
  for (let i = 0; i < this.coffs.length; i++)
225705
225989
  this.coffs[i] += a;
225706
225990
  }
225707
- /** Compute parameter values where the bezier value matches _targetValue.
225991
+ /** Compute parameter values where the bezier value matches targetValue.
225708
225992
  * * The base class finds roots only in 01. (i.e. ignores _restrictTo01)
225709
- * * Order-specific implementations apply special case analytic logic, e.g. for degree 1,2,3,4.
225993
+ * * Order-specific implementations apply special case analytic logic, e.g. for degree 1,2,3,4.
225710
225994
  */
225711
225995
  roots(targetValue, _restrictTo01) {
225712
225996
  const bezier = UnivariateBezier.create(this);
225713
225997
  bezier.addInPlace(-targetValue);
225714
- return UnivariateBezier.deflateRoots01(bezier);
225998
+ const roots = UnivariateBezier.deflateRoots(bezier);
225999
+ return this.filter01(roots, true);
225715
226000
  }
225716
226001
  /** Given an array of numbers, optionally remove those not in the 0..1 interval.
225717
226002
  * @param roots candidate values
@@ -225739,7 +226024,9 @@ class BezierCoffs {
225739
226024
  return undefined;
225740
226025
  }
225741
226026
  /** zero out all coefficients. */
225742
- zero() { this.coffs.fill(0); }
226027
+ zero() {
226028
+ this.coffs.fill(0);
226029
+ }
225743
226030
  /** Subdivide -- write results into caller-supplied bezier coffs (which must be of the same order) */
225744
226031
  subdivide(u, left, right) {
225745
226032
  const order = this.order;
@@ -226262,11 +226549,10 @@ class UnivariateBezier extends BezierCoffs {
226262
226549
  // first c0*b0 = a0
226263
226550
  // last c[orderC-1]*b1 = a[orderA-1]
226264
226551
  /** Find roots of a bezier polynomial
226265
- * * Only look for roots in 0..1
226266
226552
  * * As roots are found, deflate the polynomial.
226267
226553
  * * bezier coffs are changed (and order reduced) at each step.
226268
226554
  */
226269
- static deflateRoots01(bezier) {
226555
+ static deflateRoots(bezier) {
226270
226556
  const roots = [];
226271
226557
  const coffs = bezier.coffs;
226272
226558
  let a0, a1, segmentFraction, globalStartFraction, newtonFraction;
@@ -280381,7 +280667,7 @@ class TestContext {
280381
280667
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
280382
280668
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
280383
280669
  await core_frontend_1.NoRenderApp.startup({
280384
- applicationVersion: "4.3.0-dev.4",
280670
+ applicationVersion: "4.3.0-dev.5",
280385
280671
  applicationId: this.settings.gprid,
280386
280672
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
280387
280673
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -299789,7 +300075,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
299789
300075
  /***/ ((module) => {
299790
300076
 
299791
300077
  "use strict";
299792
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.3.0-dev.4","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.4","@itwin/core-bentley":"workspace:^4.3.0-dev.4","@itwin/core-common":"workspace:^4.3.0-dev.4","@itwin/core-geometry":"workspace:^4.3.0-dev.4","@itwin/core-orbitgt":"workspace:^4.3.0-dev.4","@itwin/core-quantity":"workspace:^4.3.0-dev.4"},"//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"}}');
300078
+ 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"}}');
299793
300079
 
299794
300080
  /***/ }),
299795
300081