@itwin/ecschema-rpcinterface-tests 4.0.0-dev.51 → 4.0.0-dev.52

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.
@@ -37306,7 +37306,9 @@ class ColorDef {
37306
37306
  static create(val) {
37307
37307
  return this.fromTbgr(this.computeTbgr(val));
37308
37308
  }
37309
- /** @internal */
37309
+ /** Compute the 0xTTBBGGRR value corresponding to the specified representation of a color.
37310
+ * @see [[fromString]] for a description of valid string representations.
37311
+ */
37310
37312
  static computeTbgr(val) {
37311
37313
  switch (typeof val) {
37312
37314
  case "number":
@@ -39439,7 +39441,7 @@ class DisplayStyleSettings {
39439
39441
  else
39440
39442
  this._json.clipStyle = style.toJSON();
39441
39443
  }
39442
- /** @internal */
39444
+ /** Convert these settings to their JSON representation. */
39443
39445
  toJSON() {
39444
39446
  return this._json;
39445
39447
  }
@@ -39618,11 +39620,11 @@ class DisplayStyle3dSettings extends DisplayStyleSettings {
39618
39620
  }
39619
39621
  }
39620
39622
  }
39621
- /** @internal */
39623
+ /** Convert these settings to their JSON representation. */
39622
39624
  toJSON() {
39623
39625
  return this._json3d;
39624
39626
  }
39625
- /** @internal */
39627
+ /** See [[DisplayStyleSettings.toOverrides]]. */
39626
39628
  toOverrides(options) {
39627
39629
  const props = super.toOverrides(options);
39628
39630
  if (options?.includeAll)
@@ -41257,9 +41259,14 @@ class FeatureOverrides {
41257
41259
  get defaultOverrides() { return this._defaultOverrides; }
41258
41260
  /** Whether or not line weights are applied. If false, all lines are drawn with a weight of 1. */
41259
41261
  get lineWeights() { return this._lineWeights; }
41260
- /** @internal */
41262
+ /** A set of elements that are always invisible.
41263
+ * @note If an element is present in both `alwaysDrawn` and [[neverDrawn]], it will not be displayed - `neverDrawn` takes precedence.
41264
+ */
41261
41265
  get neverDrawn() { return this._neverDrawn; }
41262
- /** @internal */
41266
+ /** A set of elements that are unconditionally displayed.
41267
+ * @see [[isAlwaysDrawnExclusive]] to specify that *only* elements in this set will be displayed.
41268
+ * @note If an element is present in both `alwaysDrawn` and [[neverDrawn]], it will not be displayed - `neverDrawn` takes precedence.
41269
+ */
41263
41270
  get alwaysDrawn() { return this._alwaysDrawn; }
41264
41271
  /** @internal */
41265
41272
  isNeverDrawn(elemIdLo, elemIdHi, animationNodeId) {
@@ -83622,7 +83629,7 @@ class DisplayStyleState extends _EntityState__WEBPACK_IMPORTED_MODULE_6__.Elemen
83622
83629
  * @see [[overrideSubCategory]]
83623
83630
  */
83624
83631
  getSubCategoryOverride(id) { return this.settings.getSubCategoryOverride(id); }
83625
- /** @internal */
83632
+ /** Returns true if solar shadow display is enabled by this display style. */
83626
83633
  get wantShadows() {
83627
83634
  return this.is3d() && this.viewFlags.shadows && false !== _IModelApp__WEBPACK_IMPORTED_MODULE_7__.IModelApp.renderSystem.options.displaySolarShadows;
83628
83635
  }
@@ -84070,6 +84077,7 @@ class DrawingViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_14__.ViewStat
84070
84077
  CAST(json_extract(jsonProperties, '$.displaySpatialView') as BOOLEAN) as displaySpatialView
84071
84078
  FROM bis.SectionDrawing
84072
84079
  WHERE ECInstanceId=${this.baseModelId}`;
84080
+ // eslint-disable-next-line deprecation/deprecation
84073
84081
  for await (const row of this.iModel.query(ecsql, undefined, { rowFormat: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryRowFormat.UseJsPropertyNames })) {
84074
84082
  spatialView = _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Id64.fromJSON(row.spatialView?.id);
84075
84083
  displaySpatialView = !!row.displaySpatialView;
@@ -84121,14 +84129,14 @@ class DrawingViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_14__.ViewStat
84121
84129
  }
84122
84130
  /** @internal */
84123
84131
  isDrawingView() { return true; }
84124
- /** @internal */
84132
+ /** See [[ViewState.getOrigin]]. */
84125
84133
  getOrigin() {
84126
84134
  const origin = super.getOrigin();
84127
84135
  if (this._attachment)
84128
84136
  origin.z = -this._attachment.zDepth;
84129
84137
  return origin;
84130
84138
  }
84131
- /** @internal */
84139
+ /** See [[ViewState.getExtents]]. */
84132
84140
  getExtents() {
84133
84141
  const extents = super.getExtents();
84134
84142
  if (this._attachment)
@@ -87934,7 +87942,7 @@ class IModelConnection extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.I
87934
87942
  /** Allow to execute query and read results along with meta data. The result are streamed.
87935
87943
  * @param params The values to bind to the parameters (if the ECSQL has any).
87936
87944
  * @param config Allow to specify certain flags which control how query is executed.
87937
- * @returns Returns *ECSqlQueryReader* which help iterate over result set and also give access to meta data.
87945
+ * @returns Returns an [ECSqlReader]($common) which helps iterate over the result set and also give access to metadata.
87938
87946
  * @beta
87939
87947
  * */
87940
87948
  createQueryReader(ecsql, params, config) {
@@ -87968,6 +87976,7 @@ class IModelConnection extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.I
87968
87976
  * @returns Returns the query result as an *AsyncIterableIterator<any>* which lazy load result as needed. The row format is determined by *rowFormat* parameter.
87969
87977
  * See [ECSQL row format]($docs/learning/ECSQLRowFormat) for details about the format of the returned rows.
87970
87978
  * @throws [IModelError]($common) If there was any error while submitting, preparing or stepping into query
87979
+ * @deprecated in 3.7. Use [[createQueryReader]] instead; it accepts the same parameters.
87971
87980
  */
87972
87981
  async *query(ecsql, params, options) {
87973
87982
  const builder = new _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryOptionsBuilder(options);
@@ -87986,8 +87995,10 @@ class IModelConnection extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.I
87986
87995
  * See "[iTwin.js Types used in ECSQL Parameter Bindings]($docs/learning/ECSQLParameterTypes)" for details.
87987
87996
  * @returns Return row count.
87988
87997
  * @throws [IModelError]($common) If the statement is invalid
87998
+ * @deprecated in 3.7. Count the number of results using `count(*)` where the original query is a subquery instead. E.g., `SELECT count(*) FROM (<query-whose-rows-to-count>)`.
87989
87999
  */
87990
88000
  async queryRowCount(ecsql, params) {
88001
+ // eslint-disable-next-line deprecation/deprecation
87991
88002
  for await (const row of this.query(`select count(*) from (${ecsql})`, params)) {
87992
88003
  return row[0];
87993
88004
  }
@@ -88009,8 +88020,10 @@ class IModelConnection extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.I
88009
88020
  * @returns Returns the query result as an *AsyncIterableIterator<any>* which lazy load result as needed. The row format is determined by *rowFormat* parameter.
88010
88021
  * See [ECSQL row format]($docs/learning/ECSQLRowFormat) for details about the format of the returned rows.
88011
88022
  * @throws [IModelError]($common) If there was any error while submitting, preparing or stepping into query
88023
+ * @deprecated in 3.7. Use [[createQueryReader]] instead. Pass in the restart token as part of the `config` argument; e.g., `{ restartToken: myToken }` or `new QueryOptionsBuilder().setRestartToken(myToken).getOptions()`.
88012
88024
  */
88013
88025
  async *restartQuery(token, ecsql, params, options) {
88026
+ // eslint-disable-next-line deprecation/deprecation
88014
88027
  for await (const row of this.query(ecsql, params, new _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryOptionsBuilder(options).setRestartToken(token).getOptions())) {
88015
88028
  yield row;
88016
88029
  }
@@ -88553,6 +88566,7 @@ class SnapshotConnection extends IModelConnection {
88553
88566
  break;
88554
88567
  }
88555
88568
  const placements = new Array();
88569
+ // eslint-disable-next-line deprecation/deprecation
88556
88570
  for await (const row of this._iModel.query(ecsql, undefined, { rowFormat: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryRowFormat.UseJsPropertyNames })) {
88557
88571
  const origin = [row.x, row.y, row.z];
88558
88572
  const bbox = {
@@ -92993,6 +93007,7 @@ class SheetViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_14__.ViewState2
92993
93007
  async queryAttachmentIds() {
92994
93008
  const ecsql = `SELECT ECInstanceId as attachmentId FROM bis.ViewAttachment WHERE model.Id=${this.baseModelId}`;
92995
93009
  const ids = [];
93010
+ // eslint-disable-next-line deprecation/deprecation
92996
93011
  for await (const row of this.iModel.query(ecsql))
92997
93012
  ids.push(row[0]);
92998
93013
  return ids;
@@ -95255,6 +95270,7 @@ class ViewCreator2d {
95255
95270
  */
95256
95271
  this._executeQuery = async (query) => {
95257
95272
  const rows = [];
95273
+ // eslint-disable-next-line deprecation/deprecation
95258
95274
  for await (const row of this._imodel.query(query, undefined, { rowFormat: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryRowFormat.UseJsPropertyNames }))
95259
95275
  rows.push(row.id);
95260
95276
  return rows;
@@ -95343,6 +95359,7 @@ class ViewCreator2d {
95343
95359
  async _addSheetViewProps(modelId, props) {
95344
95360
  let width = 0;
95345
95361
  let height = 0;
95362
+ // eslint-disable-next-line deprecation/deprecation
95346
95363
  for await (const row of this._imodel.query(`SELECT Width, Height FROM bis.Sheet WHERE ECInstanceId = ?`, _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryBinder.from([modelId]), { rowFormat: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryRowFormat.UseJsPropertyNames })) {
95347
95364
  width = row.width;
95348
95365
  height = row.height;
@@ -95470,6 +95487,7 @@ class ViewCreator3d {
95470
95487
  */
95471
95488
  this._executeQuery = async (query) => {
95472
95489
  const rows = [];
95490
+ // eslint-disable-next-line deprecation/deprecation
95473
95491
  for await (const row of this._imodel.query(query, undefined, { rowFormat: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryRowFormat.UseJsPropertyNames }))
95474
95492
  rows.push(row.id);
95475
95493
  return rows;
@@ -96128,12 +96146,10 @@ class ViewManager {
96128
96146
  const msg = await hit.iModel.getToolTipMessage(hit.sourceId); // wait for the locate message(s) from the backend
96129
96147
  return _IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.formatElementToolTip(msg);
96130
96148
  }
96131
- /** Add a new [[ToolTipProvider]] to customize the locate tooltip.
96132
- * @internal
96149
+ /** Register a new [[ToolTipProvider]] to customize the locate tooltip.
96133
96150
  * @param provider The new tooltip provider to add.
96134
- * @throws Error if provider is already active.
96151
+ * @throws Error if `provider` is already registered.
96135
96152
  * @returns a function that may be called to remove this provider (in lieu of calling [[dropToolTipProvider]].)
96136
- * @see [[dropToolTipProvider]]
96137
96153
  */
96138
96154
  addToolTipProvider(provider) {
96139
96155
  if (this.toolTipProviders.includes(provider))
@@ -96142,8 +96158,7 @@ class ViewManager {
96142
96158
  return () => this.dropToolTipProvider(provider);
96143
96159
  }
96144
96160
  /** Drop (remove) a [[ToolTipProvider]] so it is no longer active.
96145
- * @internal
96146
- * @param provider The tooltip to drop.
96161
+ * @param provider The tooltip provider to drop.
96147
96162
  * @note Does nothing if provider is not currently active.
96148
96163
  */
96149
96164
  dropToolTipProvider(provider) {
@@ -96873,7 +96888,6 @@ class ViewState extends _EntityState__WEBPACK_IMPORTED_MODULE_5__.ElementState {
96873
96888
  }
96874
96889
  /** Execute a function against each [[TileTreeReference]] associated with this view.
96875
96890
  * @note This may include tile trees not associated with any [[GeometricModelState]] - e.g., context reality data.
96876
- * @internal
96877
96891
  */
96878
96892
  forEachTileTreeRef(func) {
96879
96893
  this.forEachModelTreeRef(func);
@@ -97657,7 +97671,7 @@ class ViewState3d extends ViewState {
97657
97671
  val.camera = this.camera;
97658
97672
  return val;
97659
97673
  }
97660
- /** @internal */
97674
+ /** See [[ViewState.is3d]]. */
97661
97675
  is3d() { return true; }
97662
97676
  /** @internal */
97663
97677
  isDrawingView() { return false; }
@@ -98332,7 +98346,7 @@ class ViewState2d extends ViewState {
98332
98346
  val.baseModelId = this.baseModelId;
98333
98347
  return val;
98334
98348
  }
98335
- /** @internal */
98349
+ /** See [[ViewState.is3d]]. */
98336
98350
  is3d() { return false; }
98337
98351
  /** @internal */
98338
98352
  isSpatialView() { return false; }
@@ -99200,7 +99214,7 @@ class Viewport {
99200
99214
  this._decorationsValid = false;
99201
99215
  _IModelApp__WEBPACK_IMPORTED_MODULE_10__.IModelApp.requestNextAnimation();
99202
99216
  }
99203
- /** Mark the viewport's scene as invalid, so that the next call to [[renderFrame]] will recreate it.
99217
+ /** Mark the viewport's scene as having changed, so that the next call to [[renderFrame]] will recreate it.
99204
99218
  * This method is not typically invoked directly - the scene is automatically invalidated in response to events such as moving the viewing frustum,
99205
99219
  * changing the set of viewed models, new tiles being loaded, etc.
99206
99220
  */
@@ -99209,12 +99223,17 @@ class Viewport {
99209
99223
  this._timePointValid = false;
99210
99224
  this.invalidateDecorations();
99211
99225
  }
99212
- /** @internal */
99226
+ /** Mark the viewport's "render plan" as having changed, so that the next call to [[renderFrame]] will recreate it.
99227
+ * This method is not typically invoked directly - the render plan is automatically invalidated in response to events such as changing aspects
99228
+ * of the viewport's [[displayStyle]].
99229
+ */
99213
99230
  invalidateRenderPlan() {
99214
99231
  this._renderPlanValid = false;
99215
99232
  this.invalidateScene();
99216
99233
  }
99217
- /** @internal */
99234
+ /** Mark the viewport's [[ViewState]] as having changed, so that the next call to [[renderFrame]] will invoke [[setupFromView]] to synchronize with the view.
99235
+ * This method is not typically invoked directly - the controller is automatically invalidated in response to events such as a call to [[changeView]].
99236
+ */
99218
99237
  invalidateController() {
99219
99238
  this._controllerValid = this._analysisFractionValid = false;
99220
99239
  this.invalidateRenderPlan();
@@ -99912,10 +99931,9 @@ class Viewport {
99912
99931
  _IModelApp__WEBPACK_IMPORTED_MODULE_10__.IModelApp.requestNextAnimation();
99913
99932
  }
99914
99933
  }
99915
- /** This gives each Viewport a unique Id, which can be used for comparing and sorting Viewport objects inside collections.
99916
- * @internal
99934
+ /** A unique integer Id assigned to this Viewport upon construction.
99935
+ * It can be useful for comparing and sorting Viewport objects inside of collections like [SortedArray]($core-bentley).
99917
99936
  */
99918
- /** A unique integer Id for this viewport that can be used for comparing and sorting Viewport objects inside collections like [SortedArray]($core-bentley)s. */
99919
99937
  get viewportId() {
99920
99938
  return this._viewportId;
99921
99939
  }
@@ -100092,7 +100110,7 @@ class Viewport {
100092
100110
  if (this._mapTiledGraphicsProvider)
100093
100111
  this._mapTiledGraphicsProvider.forEachTileTreeRef(this, (ref) => func(ref));
100094
100112
  }
100095
- /** @internal */
100113
+ /** Apply a function to every [[TileTreeReference]] displayed by this viewport. */
100096
100114
  forEachTileTreeRef(func) {
100097
100115
  this.view.forEachTileTreeRef(func);
100098
100116
  this.forEachTiledGraphicsProviderTree(func);
@@ -100647,9 +100665,10 @@ class Viewport {
100647
100665
  // producing a flicker to that frustum during the first frame of animation.
100648
100666
  this.animate();
100649
100667
  }
100650
- /** Used strictly by TwoWayViewportSync to change the reactive viewport's view to a clone of the active viewport's ViewState.
100651
- * Does *not* trigger "ViewState changed" events.
100652
- * @internal
100668
+ /** Replace this viewport's [[ViewState]] **without** triggering events like [[onChangeView]].
100669
+ * This is chiefly useful when you are synchronizing the states of two or more viewports, as in [[TwoWayViewportSync]], to avoid triggering unwanted "echo"
100670
+ * events during synchronization.
100671
+ * In all other scenarios, [[changeView]] is the correct method to use.
100653
100672
  */
100654
100673
  applyViewState(val) {
100655
100674
  this.updateChangeFlags(val);
@@ -101100,7 +101119,7 @@ class Viewport {
101100
101119
  queryVisibleFeatures(options, callback) {
101101
101120
  return (0,_render_VisibleFeature__WEBPACK_IMPORTED_MODULE_29__.queryVisibleFeatures)(this, options, callback);
101102
101121
  }
101103
- /** @internal */
101122
+ /** Record graphics memory consumed by this viewport. */
101104
101123
  collectStatistics(stats) {
101105
101124
  const trees = new _tile_internal__WEBPACK_IMPORTED_MODULE_22__.DisclosedTileTreeSet();
101106
101125
  this.discloseTileTrees(trees);
@@ -101580,7 +101599,7 @@ class ScreenViewport extends Viewport {
101580
101599
  setCursor(cursor = "default") {
101581
101600
  this.canvas.style.cursor = cursor;
101582
101601
  }
101583
- /** @internal */
101602
+ /** See [[Viewport.synchWithView]]. */
101584
101603
  synchWithView(options) {
101585
101604
  options = options ?? {};
101586
101605
  if (this.view.is3d() && options?.globalAlignment)
@@ -106381,6 +106400,9 @@ __webpack_require__.r(__webpack_exports__);
106381
106400
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
106382
106401
  * See LICENSE.md in the project root for license terms and full copyright notice.
106383
106402
  *--------------------------------------------------------------------------------------------*/
106403
+ /** @packageDocumentation
106404
+ * @module Utils
106405
+ */
106384
106406
 
106385
106407
 
106386
106408
 
@@ -106398,6 +106420,7 @@ __webpack_require__.r(__webpack_exports__);
106398
106420
  * (1) If overriding anything in the implementation supplied herein, pass a SystemFactory function to MockRender.App.systemFactory.
106399
106421
  * (2) Call MockRender.App.startup() instead of IModelApp.startup() before tests begin.
106400
106422
  * (3) Likewise call MockRender.App.shutdown() when finished. This resets the SystemFactory to its default.
106423
+ * @note The APIs within this namespace are intended *strictly* for use with unit tests.
106401
106424
  * @internal
106402
106425
  */
106403
106426
  var MockRender;
@@ -106450,14 +106473,12 @@ var MockRender;
106450
106473
  }
106451
106474
  }
106452
106475
  MockRender.Builder = Builder;
106453
- /** @internal */
106454
106476
  class Graphic extends _RenderGraphic__WEBPACK_IMPORTED_MODULE_5__.RenderGraphic {
106455
106477
  constructor() { super(); }
106456
106478
  dispose() { }
106457
106479
  collectStatistics(_stats) { }
106458
106480
  }
106459
106481
  MockRender.Graphic = Graphic;
106460
- /** @internal */
106461
106482
  class List extends Graphic {
106462
106483
  constructor(graphics) {
106463
106484
  super();
@@ -106470,7 +106491,6 @@ var MockRender;
106470
106491
  }
106471
106492
  }
106472
106493
  MockRender.List = List;
106473
- /** @internal */
106474
106494
  class Branch extends Graphic {
106475
106495
  constructor(branch, transform, options) {
106476
106496
  super();
@@ -106481,7 +106501,6 @@ var MockRender;
106481
106501
  dispose() { this.branch.dispose(); }
106482
106502
  }
106483
106503
  MockRender.Branch = Branch;
106484
- /** @internal */
106485
106504
  class Batch extends Graphic {
106486
106505
  constructor(graphic, featureTable, range) {
106487
106506
  super();
@@ -106506,14 +106525,16 @@ var MockRender;
106506
106525
  collectStatistics() { }
106507
106526
  }
106508
106527
  MockRender.AreaPattern = AreaPattern;
106509
- /** @internal */
106510
106528
  class System extends _RenderSystem__WEBPACK_IMPORTED_MODULE_6__.RenderSystem {
106511
106529
  get isValid() { return true; }
106512
106530
  dispose() { }
106513
106531
  get maxTextureSize() { return 4096; }
106514
106532
  constructor() { super(); }
106533
+ /** @internal */
106515
106534
  doIdleWork() { return false; }
106535
+ /** @internal */
106516
106536
  createTarget(canvas) { return new OnScreenTarget(this, canvas); }
106537
+ /** @internal */
106517
106538
  createOffscreenTarget(rect) { return new OffScreenTarget(this, rect); }
106518
106539
  createGraphic(options) {
106519
106540
  return new Builder(this, options);
@@ -106521,20 +106542,26 @@ var MockRender;
106521
106542
  createGraphicList(primitives) { return new List(primitives); }
106522
106543
  createGraphicBranch(branch, transform, options) { return new Branch(branch, transform, options); }
106523
106544
  createBatch(graphic, features, range) { return new Batch(graphic, features, range); }
106545
+ /** @internal */
106524
106546
  createMesh(_params) { return new Graphic(); }
106547
+ /** @internal */
106525
106548
  createPolyline(_params) { return new Graphic(); }
106549
+ /** @internal */
106526
106550
  createPointString(_params) { return new Graphic(); }
106551
+ /** @internal */
106527
106552
  createPointCloud(_args, _imodel) { return new Graphic(); }
106528
106553
  createRenderGraphic() { return new Graphic(); }
106554
+ /** @internal */
106529
106555
  createMeshGeometry() { return new Geometry(); }
106556
+ /** @internal */
106530
106557
  createPolylineGeometry() { return new Geometry(); }
106558
+ /** @internal */
106531
106559
  createPointStringGeometry() { return new Geometry(); }
106560
+ /** @internal */
106532
106561
  createAreaPattern() { return new AreaPattern(); }
106533
106562
  }
106534
106563
  MockRender.System = System;
106535
- /** An implementation of IModelApp which uses a MockRender.System by default.
106536
- * @internal
106537
- */
106564
+ /** An implementation of IModelApp which uses a MockRender.System by default. */
106538
106565
  class App {
106539
106566
  static async startup(opts) {
106540
106567
  opts = opts ? opts : {};
@@ -107272,8 +107299,9 @@ __webpack_require__.r(__webpack_exports__);
107272
107299
  /** @packageDocumentation
107273
107300
  * @module Rendering
107274
107301
  */
107275
- /** Contains metadata about memory consumed by the render system or aspect thereof.
107276
- * @internal
107302
+ /** APIs for querying memory consumed by the [[RenderSystem]].
107303
+ * Use methods like [[Viewport.collectStatistics]] and [[TileTreeReference.collectStatistics]] to query this memory usage.
107304
+ * @public
107277
107305
  */
107278
107306
  var RenderMemory;
107279
107307
  (function (RenderMemory) {
@@ -107359,64 +107387,113 @@ var RenderMemory;
107359
107387
  ConsumerType[ConsumerType["ThematicTextures"] = 9] = "ThematicTextures";
107360
107388
  ConsumerType[ConsumerType["COUNT"] = 10] = "COUNT";
107361
107389
  })(ConsumerType = RenderMemory.ConsumerType || (RenderMemory.ConsumerType = {}));
107362
- /** @internal */
107390
+ /** Contains statistics about the amount and type of memory consumed by the [[RenderSystem]].
107391
+ * Use methods like [[Viewport.collectStatistics]] and [[TileTreeReference.collectStatistics]] to query this memory usage.
107392
+ * @see [[Statistics.create]] to instantiate an instance of this class.
107393
+ * @public
107394
+ */
107363
107395
  class Statistics {
107396
+ /** @internal */
107364
107397
  constructor() {
107365
107398
  this._totalBytes = 0;
107399
+ /** @internal */
107366
107400
  this.buffers = new Buffers();
107367
107401
  this.consumers = [];
107368
107402
  for (let i = 0; i < ConsumerType.COUNT; i++)
107369
107403
  this.consumers[i] = new Consumers();
107370
107404
  }
107405
+ /** Create a new, empty statistics object. */
107406
+ static create() {
107407
+ return new Statistics();
107408
+ }
107409
+ /** The total reported memory consumption, in bytes.
107410
+ * @note A web browser provides no direct access to actual memory used by the host device or its graphics hardware. The reported memory usage
107411
+ * is an estimate based on the number of bytes of data requested via WebGL APIs. It is always an *under-estimate* as each WebGL implementation imposes
107412
+ * its own additional overhead.
107413
+ */
107371
107414
  get totalBytes() { return this._totalBytes; }
107415
+ /** @internal */
107372
107416
  get textures() { return this.consumers[ConsumerType.Textures]; }
107417
+ /** @internal */
107373
107418
  get vertexTables() { return this.consumers[ConsumerType.VertexTables]; }
107419
+ /** @internal */
107374
107420
  get edgeTables() { return this.consumers[ConsumerType.EdgeTables]; }
107421
+ /** @internal */
107375
107422
  get featureTables() { return this.consumers[ConsumerType.FeatureTables]; }
107423
+ /** @internal */
107376
107424
  get thematicTextures() { return this.consumers[ConsumerType.ThematicTextures]; }
107425
+ /** @internal */
107377
107426
  get featureOverrides() { return this.consumers[ConsumerType.FeatureOverrides]; }
107427
+ /** @internal */
107378
107428
  get clipVolumes() { return this.consumers[ConsumerType.ClipVolumes]; }
107429
+ /** @internal */
107379
107430
  get planarClassifiers() { return this.consumers[ConsumerType.PlanarClassifiers]; }
107431
+ /** @internal */
107380
107432
  get shadowMaps() { return this.consumers[ConsumerType.ShadowMaps]; }
107433
+ /** @internal */
107381
107434
  get textureAttachments() { return this.consumers[ConsumerType.TextureAttachments]; }
107435
+ /** @internal */
107382
107436
  addBuffer(type, numBytes) {
107383
107437
  this._totalBytes += numBytes;
107384
107438
  this.buffers.addBuffer(type, numBytes);
107385
107439
  }
107440
+ /** @internal */
107386
107441
  addConsumer(type, numBytes) {
107387
107442
  this._totalBytes += numBytes;
107388
107443
  this.consumers[type].addConsumer(numBytes);
107389
107444
  }
107445
+ /** @internal */
107390
107446
  clear() {
107391
107447
  this._totalBytes = 0;
107392
107448
  this.buffers.clear();
107393
107449
  for (const consumer of this.consumers)
107394
107450
  consumer.clear();
107395
107451
  }
107452
+ /** @internal */
107396
107453
  addTexture(numBytes) { this.addConsumer(ConsumerType.Textures, numBytes); }
107454
+ /** @internal */
107397
107455
  addVertexTable(numBytes) { this.addConsumer(ConsumerType.VertexTables, numBytes); }
107456
+ /** @internal */
107398
107457
  addEdgeTable(numBytes) { this.addConsumer(ConsumerType.EdgeTables, numBytes); }
107458
+ /** @internal */
107399
107459
  addFeatureTable(numBytes) { this.addConsumer(ConsumerType.FeatureTables, numBytes); }
107460
+ /** @internal */
107400
107461
  addThematicTexture(numBytes) { this.addConsumer(ConsumerType.ThematicTextures, numBytes); }
107462
+ /** @internal */
107401
107463
  addFeatureOverrides(numBytes) { this.addConsumer(ConsumerType.FeatureOverrides, numBytes); }
107464
+ /** @internal */
107402
107465
  addClipVolume(numBytes) { this.addConsumer(ConsumerType.ClipVolumes, numBytes); }
107466
+ /** @internal */
107403
107467
  addPlanarClassifier(numBytes) { this.addConsumer(ConsumerType.PlanarClassifiers, numBytes); }
107468
+ /** @internal */
107404
107469
  addShadowMap(numBytes) { this.addConsumer(ConsumerType.ShadowMaps, numBytes); }
107470
+ /** @internal */
107405
107471
  addTextureAttachment(numBytes) { this.addConsumer(ConsumerType.TextureAttachments, numBytes); }
107472
+ /** @internal */
107406
107473
  addSurface(numBytes) { this.addBuffer(BufferType.Surfaces, numBytes); }
107474
+ /** @internal */
107407
107475
  addVisibleEdges(numBytes) { this.addBuffer(BufferType.VisibleEdges, numBytes); }
107476
+ /** @internal */
107408
107477
  addIndexedEdges(numBytes) { this.addBuffer(BufferType.IndexedEdges, numBytes); }
107478
+ /** @internal */
107409
107479
  addSilhouetteEdges(numBytes) { this.addBuffer(BufferType.SilhouetteEdges, numBytes); }
107480
+ /** @internal */
107410
107481
  addPolylineEdges(numBytes) { this.addBuffer(BufferType.PolylineEdges, numBytes); }
107482
+ /** @internal */
107411
107483
  addPolyline(numBytes) { this.addBuffer(BufferType.Polylines, numBytes); }
107484
+ /** @internal */
107412
107485
  addPointString(numBytes) { this.addBuffer(BufferType.PointStrings, numBytes); }
107486
+ /** @internal */
107413
107487
  addPointCloud(numBytes) { this.addBuffer(BufferType.PointClouds, numBytes); }
107488
+ /** @internal */
107414
107489
  addTerrain(numBytes) {
107415
107490
  this.addBuffer(BufferType.Terrain, numBytes);
107416
107491
  }
107492
+ /** @internal */
107417
107493
  addRealityMesh(numBytes) {
107418
107494
  this.addBuffer(BufferType.RealityMesh, numBytes);
107419
107495
  }
107496
+ /** @internal */
107420
107497
  addInstances(numBytes) { this.addBuffer(BufferType.Instances, numBytes); }
107421
107498
  }
107422
107499
  RenderMemory.Statistics = Statistics;
@@ -151348,7 +151425,7 @@ class TileTreeReference /* implements RenderMemory.Consumer */ {
151348
151425
  if (!contentRange.isNull)
151349
151426
  union.extendRange(contentRange);
151350
151427
  }
151351
- /** @internal */
151428
+ /** Record graphics memory consumed by this tile tree reference. */
151352
151429
  collectStatistics(stats) {
151353
151430
  const tree = this.treeOwner.tileTree;
151354
151431
  if (undefined !== tree)
@@ -162992,6 +163069,7 @@ class ElementSetTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_9__.Primiti
162992
163069
  ids.add(id);
162993
163070
  try {
162994
163071
  const ecsql = `SELECT ECInstanceId as id, Parent.Id as parentId FROM BisCore.GeometricElement WHERE Parent.Id IN (SELECT Parent.Id as parentId FROM BisCore.GeometricElement WHERE parent.Id != 0 AND ECInstanceId IN (${id}))`;
163072
+ // eslint-disable-next-line deprecation/deprecation
162995
163073
  for await (const row of this.iModel.query(ecsql, undefined, { rowFormat: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryRowFormat.UseJsPropertyNames })) {
162996
163074
  ids.add(row.parentId);
162997
163075
  ids.add(row.id);
@@ -210624,22 +210702,25 @@ class Matrix3d {
210624
210702
  return result;
210625
210703
  }
210626
210704
  /**
210627
- * Multiply `this` Matrix3d (considered as a Transform with 0 translation) times `other` Transform.
210705
+ * Multiply `this` Matrix3d (considered to be a Transform with 0 `origin`) times `other` Transform.
210706
+ * **Note:** If `other = [B b]`, then we promote `this` matrix to be a Transform [A 0].
210707
+ * Then `this * other` is defined as [A*B Aa]. That's because we create a 4x4 matrix for each Transform
210708
+ * with the 3x3 `matrix` and `origin` as upper 3x4 part of a 4x4 matrix and 0001 as the final row. Then we
210709
+ * multiply those two 4x4 matrixes:
210628
210710
  * ```
210629
210711
  * equation
210630
210712
  * \begin{matrix}
210631
- * \text{This matrix }\bold{A}\text{ promoted to block transform} & \blockTransform{A}{0} \\
210632
- * \text{other transform with matrix part }\bold{B}\text{ and translation }\bold{b} & \blockTransform{B}{b}\\
210713
+ * \text{`this` matrix }\bold{A}\text{ promoted to block Transform} & \blockTransform{A}{0} \\
210714
+ * \text{`other` Transform with `matrix` part }\bold{B}\text{ and `origin` part }\bold{b} & \blockTransform{B}{b}\\
210633
210715
  * \text{product}& \blockTransform{A}{0}\blockTransform{B}{b}=\blockTransform{AB}{Ab}
210634
210716
  * \end{matrix}
210635
210717
  * ```
210636
- * @param other Right hand Matrix3d for multiplication.
210637
- * @param result the Transform result (optional)
210718
+ * @param other the `other` Transform to be multiplied to `this` matrix.
210719
+ * @param result optional preallocated result to reuse.
210638
210720
  */
210639
210721
  multiplyMatrixTransform(other, result) {
210640
210722
  if (!result)
210641
210723
  return _Transform__WEBPACK_IMPORTED_MODULE_5__.Transform.createRefs(this.multiplyXYZ(other.origin.x, other.origin.y, other.origin.z), this.multiplyMatrixMatrix(other.matrix));
210642
- // be sure to do the point multiplication first before aliasing changes the matrix
210643
210724
  this.multiplyXYZtoXYZ(other.origin, result.origin);
210644
210725
  this.multiplyMatrixMatrix(other.matrix, result.matrix);
210645
210726
  return result;
@@ -220462,11 +220543,15 @@ __webpack_require__.r(__webpack_exports__);
220462
220543
  * * The math for a Transform `T` consisting of a Matrix3d `M` and a Point3d `o` on a Vector3d `p` is: `Tp = M*p + o`.
220463
220544
  * In other words, `T` is a combination of two operations on `p`: the action of matrix multiplication, followed by a
220464
220545
  * translation. `Origin` is a traditional term for `o`, because `T` can be interpreted as a change of basis from the
220465
- * global axes centered at the global origin, to a new set of axes centered at `o`.
220466
- * * Beware that for common transformations (e.g. scale about point, rotate around an axis, mirror across a
220467
- * plane) the "fixed point" that is used when describing the transform is NOT the "origin" stored in the
220468
- * transform. Setup methods (e.g createFixedPointAndMatrix, createScaleAboutPoint) take care of determining
220469
- * the appropriate origin coordinates.
220546
+ * global axes centered at the global origin, to a new set of axes specified by matrix M columns centered at `o`.
220547
+ * * Beware that for common transformations (e.g. scale about point, rotate around an axis) the `fixed point` that
220548
+ * is used when describing the transform is NOT the `origin` stored in the transform. Setup methods (e.g
220549
+ * createFixedPointAndMatrix, createScaleAboutPoint) take care of determining the appropriate origin coordinates.
220550
+ * * If `T` is a translation, no point is fixed by `T`.
220551
+ * * If `T` is the identity, all points are fixed by `T`.
220552
+ * * If `T` is a scale about a point, one point is fixed by `T`.
220553
+ * * If `T` is a rotation about an axis, a line is fixed by `T`.
220554
+ * * If `T` is a projection to the plane, a plane is fixed by `T`.
220470
220555
  * @public
220471
220556
  */
220472
220557
  class Transform {
@@ -220759,22 +220844,32 @@ class Transform {
220759
220844
  const origin = _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzMinusMatrixTimesXYZ(fixedPoint, matrix, fixedPoint);
220760
220845
  return Transform.createRefs(origin, matrix, result);
220761
220846
  }
220762
- /** Transform the input 2d point. Return as a new point or in the pre-allocated result (if result is given). */
220847
+ /**
220848
+ * Transform the input 2d point (using `Tp = M*p + o`).
220849
+ * Return as a new point or in the pre-allocated result (if result is given).
220850
+ */
220763
220851
  multiplyPoint2d(point, result) {
220764
- // Tx = Mx + o so we return Mx + o
220765
220852
  return _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyPlusMatrixTimesXY(this._origin, this._matrix, point, result);
220766
220853
  }
220767
- /** Transform the input 3d point. Return as a new point or in the pre-allocated result (if result is given). */
220854
+ /**
220855
+ * Transform the input 3d point (using `Tp = M*p + o`).
220856
+ * Return as a new point or in the pre-allocated result (if result is given).
220857
+ */
220768
220858
  multiplyPoint3d(point, result) {
220769
220859
  // Tx = Mx + o so we return Mx + o
220770
220860
  return _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, point, result);
220771
220861
  }
220772
- /** Transform the input 3d point in place (override the input point by the transformed point). */
220862
+ /**
220863
+ * Transform the input 3d point in place (using `Tp = M*p + o`).
220864
+ * Return as a new point or in the pre-allocated result (if result is given).
220865
+ */
220773
220866
  multiplyXYAndZInPlace(point) {
220774
- // Tx = Mx + o so we override x by Mx + o
220775
220867
  return _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesXYZInPlace(this._origin, this._matrix, point);
220776
220868
  }
220777
- /** Transform the input point. Return as a new point or in the pre-allocated result (if result is given). */
220869
+ /**
220870
+ * Transform the input 3d point (using `Tp = M*p + o`).
220871
+ * Return as a new point or in the pre-allocated result (if result is given).
220872
+ */
220778
220873
  multiplyXYZ(x, y, z = 0, result) {
220779
220874
  // Tx = Mx + o so we return Mx + o
220780
220875
  return _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesCoordinates(this._origin, this._matrix, x, y, z, result);
@@ -220820,7 +220915,7 @@ class Transform {
220820
220915
  return _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesCoordinatesToFloat64Array(this._origin, this._matrix, x, y, z, result);
220821
220916
  }
220822
220917
  /**
220823
- * Treat the 3x3 matrix and origin as upper 3x4 part of a 4x4 matrix, with 0001 as the final row. Now multiply
220918
+ * Treat the 3x3 `matrix` and `origin` as upper 3x4 part of a 4x4 matrix, with 0001 as the final row. Now multiply
220824
220919
  * the transposed of this 4x4 matrix by Point4d given as xyzw. Return as a new point4d (`M*p` as first 3 elements
220825
220920
  * and `o*p + w` as last element where `p = (x,y,z)`) or in the pre-allocated result (if result is given).
220826
220921
  */
@@ -220829,13 +220924,13 @@ class Transform {
220829
220924
  const origin = this._origin;
220830
220925
  return _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_3__.Point4d.create((x * coffs[0]) + (y * coffs[3]) + (z * coffs[6]), (x * coffs[1]) + (y * coffs[4]) + (z * coffs[7]), (x * coffs[2]) + (y * coffs[5]) + (z * coffs[8]), (x * origin.x) + (y * origin.y) + (z * origin.z) + w, result);
220831
220926
  }
220832
- /** For each point in the array, replace point by the transformed point (by `Tp = M*p + o`) */
220927
+ /** For each point in the array, replace point by the transformed point (using `Tp = M*p + o`) */
220833
220928
  multiplyPoint3dArrayInPlace(points) {
220834
220929
  let point;
220835
220930
  for (point of points)
220836
220931
  _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, point, point);
220837
220932
  }
220838
- /** For each point in the 2d array, replace point by the transformed point (by `Tp = M*p + o`) */
220933
+ /** For each point in the 2d array, replace point by the transformed point (using `Tp = M*p + o`) */
220839
220934
  multiplyPoint3dArrayArrayInPlace(chains) {
220840
220935
  for (const chain of chains)
220841
220936
  this.multiplyPoint3dArrayInPlace(chain);
@@ -220872,58 +220967,23 @@ class Transform {
220872
220967
  return this._matrix.multiplyInverseXYZAsPoint3d(x - this._origin.x, y - this._origin.y, z - this._origin.z, result);
220873
220968
  }
220874
220969
  /**
220875
- * * for each point: multiply transform * point
220876
- * * if result is given, resize to match source and replace each corresponding pi
220877
- * * if result is not given, return a new array.
220878
- */
220879
- multiplyInversePoint3dArray(source, result) {
220880
- if (!this._matrix.computeCachedInverse(true))
220881
- return undefined;
220882
- const originX = this.origin.x;
220883
- const originY = this.origin.y;
220884
- const originZ = this.origin.z;
220885
- if (result) {
220886
- const n = Transform.matchArrayLengths(source, result, _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero);
220887
- for (let i = 0; i < n; i++)
220888
- this._matrix.multiplyInverseXYZAsPoint3d(source[i].x - originX, source[i].y - originY, source[i].z - originZ, result[i]);
220889
- }
220890
- result = [];
220891
- for (const p of source)
220892
- result.push(this._matrix.multiplyInverseXYZAsPoint3d(p.x - originX, p.y - originY, p.z - originZ));
220893
- return result;
220894
- }
220895
- /**
220896
- * * For each point in source: multiply transformInverse * point in place in the point.
220897
- * * Return false if not invertible.
220898
- */
220899
- multiplyInversePoint3dArrayInPlace(source) {
220900
- if (!this._matrix.computeCachedInverse(true))
220901
- return false;
220902
- const originX = this.origin.x;
220903
- const originY = this.origin.y;
220904
- const originZ = this.origin.z;
220905
- const n = source.length;
220906
- for (let i = 0; i < n; i++)
220907
- this._matrix.multiplyInverseXYZAsPoint3d(source[i].x - originX, source[i].y - originY, source[i].z - originZ, source[i]);
220908
- return true;
220909
- }
220910
- /**
220911
- * * Compute (if needed) the inverse of the matrix part, thereby ensuring inverse operations can complete.
220912
- * * Return true if matrix inverse completes.
220970
+ * * Compute (if needed) the inverse of the `matrix` part of the Transform, thereby ensuring inverse
220971
+ * operations can complete.
220913
220972
  * @param useCached If true, accept prior cached inverse if available.
220973
+ * @returns `true` if matrix inverse completes, `false` otherwise.
220914
220974
  */
220915
220975
  computeCachedInverse(useCached = true) {
220916
220976
  return this._matrix.computeCachedInverse(useCached);
220917
220977
  }
220918
220978
  /**
220919
- * * If destination has more values than source, remove the extras.
220920
- * * If destination has fewer values, use the constructionFunction to create new ones.
220921
- * @param source array
220922
- * @param dest destination array, to be modified to match source length
220923
- * @param constructionFunction function to call to create new entries.
220979
+ * Match the length of destination array with the length of source array
220980
+ * * If destination has more elements than source, remove the extra elements.
220981
+ * * If destination has fewer elements than source, use `constructionFunction` to create new elements.
220982
+ * *
220983
+ * @param source the source array
220984
+ * @param dest the destination array
220985
+ * @param constructionFunction function to call to create new elements.
220924
220986
  */
220925
- // modify destination so it has non-null points for the same length as the source.
220926
- // (ASSUME existing elements of dest are non-null, and that parameters are given as either Point2d or Point3d arrays)
220927
220987
  static matchArrayLengths(source, dest, constructionFunction) {
220928
220988
  const numSource = source.length;
220929
220989
  const numDest = dest.length;
@@ -220938,72 +220998,125 @@ class Transform {
220938
220998
  return numSource;
220939
220999
  }
220940
221000
  /**
220941
- * * For each point: multiply transform * point
220942
- * * If result is given, resize to match source and replace each corresponding pi
220943
- * * If result is not given, return a new array.
221001
+ * If for each point `p` we have `Tp = M*p + o = point` (where `point` is the transformed point), then
221002
+ * `p = MInverse * (point - o)`. This function returns the array of original points `p[]` if `points`
221003
+ * is the array of transformed point (`Tp = point` for each `p` and `point`).
221004
+ * * If `results` is given, resize it to match the input `points` array and update it with original points `p[]`.
221005
+ * * If `results` is not given, return a new array.
221006
+ * * Returns `undefined` if the `matrix` part if this Transform is singular.
221007
+ */
221008
+ multiplyInversePoint3dArray(points, results) {
221009
+ if (!this._matrix.computeCachedInverse(true))
221010
+ return undefined;
221011
+ const originX = this.origin.x;
221012
+ const originY = this.origin.y;
221013
+ const originZ = this.origin.z;
221014
+ if (results) {
221015
+ const n = Transform.matchArrayLengths(points, results, _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero);
221016
+ for (let i = 0; i < n; i++)
221017
+ this._matrix.multiplyInverseXYZAsPoint3d(points[i].x - originX, points[i].y - originY, points[i].z - originZ, results[i]);
221018
+ }
221019
+ results = [];
221020
+ for (const point of points)
221021
+ results.push(this._matrix.multiplyInverseXYZAsPoint3d(point.x - originX, point.y - originY, point.z - originZ));
221022
+ return results;
221023
+ }
221024
+ /**
221025
+ * If for each point `p` we have `Tp = M*p + o = point` (where `point` is the transformed point), then
221026
+ * `p = MInverse * (point - o)`. This function calculates the array of original points `p[]` if `points`
221027
+ * is the array of transformed point (`Tp = point` for each `p` and `point`) and replaces `points`
221028
+ * with the array of original points.
221029
+ * * Returns `true` if the `matrix` part if this Transform is invertible and `false if singular.
221030
+ */
221031
+ multiplyInversePoint3dArrayInPlace(points) {
221032
+ if (!this._matrix.computeCachedInverse(true))
221033
+ return false;
221034
+ for (const point of points)
221035
+ this._matrix.multiplyInverseXYZAsPoint3d(point.x - this.origin.x, point.y - this.origin.y, point.z - this.origin.z, point);
221036
+ return true;
221037
+ }
221038
+ /**
221039
+ * Transform the input 2d point array (using `Tp = M*p + o`).
221040
+ * * If `result` is given, resize it to match the input `points` array and update it with transformed points.
221041
+ * * If `result` is not given, return a new array.
220944
221042
  */
220945
- multiplyPoint2dArray(source, result) {
221043
+ multiplyPoint2dArray(points, result) {
220946
221044
  if (result) {
220947
- const n = Transform.matchArrayLengths(source, result, _Point2dVector2d__WEBPACK_IMPORTED_MODULE_4__.Point2d.createZero);
221045
+ const n = Transform.matchArrayLengths(points, result, _Point2dVector2d__WEBPACK_IMPORTED_MODULE_4__.Point2d.createZero);
220948
221046
  for (let i = 0; i < n; i++)
220949
- _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyPlusMatrixTimesXY(this._origin, this._matrix, source[i], result[i]);
221047
+ _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyPlusMatrixTimesXY(this._origin, this._matrix, points[i], result[i]);
220950
221048
  return result;
220951
221049
  }
220952
221050
  result = [];
220953
- for (const p of source)
221051
+ for (const p of points)
220954
221052
  result.push(_Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyPlusMatrixTimesXY(this._origin, this._matrix, p));
220955
221053
  return result;
220956
221054
  }
220957
221055
  /**
220958
- * * For each point: multiply transform * point
220959
- * * If result is given, resize to match source and replace each corresponding pi
220960
- * * If result is not given, return a new array.
221056
+ * Transform the input 3d point array (using `Tp = M*p + o`).
221057
+ * * If `result` is given, resize it to match the input `points` array and update it with transformed points.
221058
+ * * If `result` is not given, return a new array.
220961
221059
  */
220962
- multiplyPoint3dArray(source, result) {
221060
+ multiplyPoint3dArray(points, result) {
220963
221061
  if (result) {
220964
- const n = Transform.matchArrayLengths(source, result, _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero);
221062
+ const n = Transform.matchArrayLengths(points, result, _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.createZero);
220965
221063
  for (let i = 0; i < n; i++)
220966
- _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, source[i], result[i]);
221064
+ _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, points[i], result[i]);
220967
221065
  return result;
220968
221066
  }
220969
221067
  result = [];
220970
- for (const p of source)
221068
+ for (const p of points)
220971
221069
  result.push(_Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesXYZ(this._origin, this._matrix, p));
220972
221070
  return result;
220973
221071
  }
220974
221072
  /**
220975
- * Multiply the vector by the Matrix3d part of the transform.
220976
- * * The transform's origin is not used.
220977
- * * Return as new or result by usual optional result convention
221073
+ * Multiply the vector by the `matrix` part of the Transform.
221074
+ * * The `origin` part of Transform is not used.
221075
+ * * If `result` is given, update it with the multiplication. Otherwise, create a new Vector3d.
220978
221076
  */
220979
221077
  multiplyVector(vector, result) {
220980
221078
  return this._matrix.multiplyVector(vector, result);
220981
221079
  }
220982
221080
  /**
220983
- * Multiply the vector in place by the Matrix3d part of the transform.
220984
- * * The transform's origin is not used.
221081
+ * Multiply the vector by the `matrix` part of the Transform in place.
221082
+ * * The `origin` part of Transform is not used.
220985
221083
  */
220986
221084
  multiplyVectorInPlace(vector) {
220987
221085
  this._matrix.multiplyVectorInPlace(vector);
220988
221086
  }
220989
221087
  /**
220990
- * Multiply the vector (x,y,z) by the Matrix3d part of the transform.
220991
- * * The transform's origin is not used.
220992
- * * Return as new or result by usual optional result convention
221088
+ * Multiply the vector (x,y,z) by the `matrix` part of the Transform.
221089
+ * * The `origin` part of Transform is not used.
221090
+ * * If `result` is given, update it with the multiplication. Otherwise, create a new Vector3d.
220993
221091
  */
220994
221092
  multiplyVectorXYZ(x, y, z, result) {
220995
221093
  return this._matrix.multiplyXYZ(x, y, z, result);
220996
221094
  }
220997
- /** Multiply this Transform times other Transform.
221095
+ /**
221096
+ * Calculate `transformA * transformB` and store it into the calling instance (`this`).
221097
+ * * **Note:** If `transformA = [A a]` and `transformB = [B b]` then `transformA * transformB` is defined as
221098
+ * `[A*B Ab+a]`. See `multiplyTransformTransform` doc for math details.
221099
+ * @param transformA first operand
221100
+ * @param transformB second operand
221101
+ */
221102
+ setMultiplyTransformTransform(transformA, transformB) {
221103
+ _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesXYZ(transformA._origin, transformA._matrix, transformB._origin, this._origin);
221104
+ transformA._matrix.multiplyMatrixMatrix(transformB._matrix, this._matrix);
221105
+ }
221106
+ /**
221107
+ * Multiply `this` Transform times `other` Transform.
221108
+ * **Note:** If `this = [A a]` and `other = [B b]` then `this * other` is defined as [A*B Ab+a].
221109
+ * That's because we create a 4x4 matrix for each Transform with the 3x3 `matrix` and `origin`
221110
+ * as upper 3x4 part of a 4x4 matrix and 0001 as the final row. Then we multiply those two 4x4 matrixes:
220998
221111
  * ```
220999
221112
  * equation
221000
221113
  * \begin{matrix}
221001
- * \text{`this` transform with matrix part }\bold{A}\text{ and translation }\bold{a} & \blockTransform{A}{a}\\
221002
- * \text{`other` transform with matrix part }\bold{B}\text{ and translation part }\bold{b}\text{ promoted to block transform} & \blockTransform{B}{b} \\
221114
+ * \text{`this` Transform with `matrix` part }\bold{A}\text{ and `origin` part }\bold{a} & \blockTransform{A}{a}\\
221115
+ * \text{`other` Transform with `matrix` part }\bold{B}\text{ and `origin` part }\bold{b} & \blockTransform{B}{b} \\
221003
221116
  * \text{product}& \blockTransform{A}{a}\blockTransform{B}{b}=\blockTransform{AB}{Ab + a}
221004
221117
  * \end{matrix}
221005
221118
  * ```
221006
- * @param other right hand transform for multiplication.
221119
+ * @param other the 'other` Transform to be multiplied to `this` Transform.
221007
221120
  * @param result optional preallocated result to reuse.
221008
221121
  */
221009
221122
  multiplyTransformTransform(other, result) {
@@ -221013,30 +221126,20 @@ class Transform {
221013
221126
  return result;
221014
221127
  }
221015
221128
  /**
221016
- * Multiply transformA * transformB, store to calling instance.
221017
- * @param transformA left operand
221018
- * @param transformB right operand
221019
- */
221020
- setMultiplyTransformTransform(transformA, transformB) {
221021
- if (Transform._scratchPoint === undefined)
221022
- Transform._scratchPoint = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create();
221023
- _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.xyzPlusMatrixTimesXYZ(transformA._origin, transformA._matrix, transformB._origin, Transform._scratchPoint);
221024
- this._origin.setFrom(Transform._scratchPoint);
221025
- transformA._matrix.multiplyMatrixMatrix(transformB._matrix, this._matrix);
221026
- }
221027
- // [Q A][R 0] = [QR A]
221028
- // [0 1][0 1] [0 1]
221029
- /**
221030
- * Multiply this Transform times other Matrix3d, with other considered to be a Transform with 0 translation.
221129
+ * Multiply `this` Transform times `other` Matrix3d (considered to be a Transform with 0 `origin`).
221130
+ * **Note:** If `this = [A a]`, then we promote `other` matrix to be a Transform [B 0].
221131
+ * Then `this * other` is defined as [A*B a]. That's because we create a 4x4 matrix for each Transform
221132
+ * with the 3x3 `matrix` and `origin` as upper 3x4 part of a 4x4 matrix and 0001 as the final row. Then we
221133
+ * multiply those two 4x4 matrixes:
221031
221134
  * ```
221032
221135
  * equation
221033
221136
  * \begin{matrix}
221034
- * \text{`this` transform with matrix part }\bold{A}\text{ and translation }\bold{b} & \blockTransform{B}{b}\\
221035
- * \text{`other` matrix }\bold{B}\text{ promoted to block transform} & \blockTransform{B}{0} \\
221137
+ * \text{`this` Transform with `matrix` part }\bold{A}\text{ and `origin` part }\bold{a} & \blockTransform{A}{a}\\
221138
+ * \text{`other` matrix }\bold{B}\text{ promoted to block Transform} & \blockTransform{B}{0} \\
221036
221139
  * \text{product}& \blockTransform{A}{a}\blockTransform{B}{0}=\blockTransform{AB}{a}
221037
221140
  * \end{matrix}
221038
221141
  * ```
221039
- * @param other right hand Matrix3d for multiplication.
221142
+ * @param other the `other` Matrix3d to be multiplied to `this` Transform.
221040
221143
  * @param result optional preallocated result to reuse.
221041
221144
  */
221042
221145
  multiplyTransformMatrix3d(other, result) {
@@ -221047,15 +221150,17 @@ class Transform {
221047
221150
  return result;
221048
221151
  }
221049
221152
  /**
221050
- * Return the range of the transformed corners.
221153
+ * Return the Range of the transformed corners.
221051
221154
  * * The 8 corners are transformed individually.
221052
- * * Note that if there is anything other than translation and principal axis scaling in the transform, the volume of the range rotation will increase.
221053
- * * Hence to get a "tight" range on rotated geometry, a range computation must be made on the rotated geometry itself.
221155
+ * * **Note:** Suppose you have a geometry, a range box around that geometry, and your Transform is a rotation.
221156
+ * If you rotate the range box and recompute a new range box around the rotated range box, then the new range
221157
+ * box will have a larger volume than the original range box. However, if you rotate the geometry itself and
221158
+ * then recompute the range box, it will be a tighter range box around the rotated geometry. `multiplyRange`
221159
+ * function creates the larger range box because it only has access to the range box and the geometry itself.
221054
221160
  */
221055
221161
  multiplyRange(range, result) {
221056
221162
  if (range.isNull)
221057
221163
  return range.clone(result);
221058
- // snag current values to allow aliasing.
221059
221164
  const lowX = range.low.x;
221060
221165
  const lowY = range.low.y;
221061
221166
  const lowZ = range.low.z;
@@ -221074,9 +221179,9 @@ class Transform {
221074
221179
  return result;
221075
221180
  }
221076
221181
  /**
221077
- * * Return a Transform which is the inverse of this transform.
221078
- * @param result optional pre-allocated result
221079
- * @return the inverse Transform, or undefined if the matrix is singular
221182
+ * Return a Transform which is the inverse of `this` Transform.
221183
+ * * If `transform = [M o]` then `transformInverse = [MInverse MInverse*-o]`
221184
+ * * Return `undefined` if this Transform's matrix is singular.
221080
221185
  */
221081
221186
  inverse(result) {
221082
221187
  const matrixInverse = this._matrix.inverse(result ? result._matrix : undefined);
@@ -221090,15 +221195,15 @@ class Transform {
221090
221195
  return Transform.createRefs(matrixInverse.multiplyXYZ(-this._origin.x, -this._origin.y, -this._origin.z), matrixInverse);
221091
221196
  }
221092
221197
  /**
221093
- * Initialize transforms that map each direction of a box (axis aligned) to `[0,1]`.
221094
- * * The corner coordinates do _not_ need to be in order in any of the x,y,z directions.
221095
- * * The npcToGlobalTransform (if supplied) maps 000 to the point named point000.
221096
- * * The npcToGlobalTransform (if supplied) maps 11 to the point named point000.
221097
- * * The globalToNpc transform is the inverse.
221098
- * @param min the "000" corner of the box
221099
- * @param max the "111" corner of the box
221100
- * @param npcToGlobal (object created by caller, re-initialized here) transform that carries 01 coordinates into the min,max box.
221101
- * @param globalToNpc (object created by caller, re-initialized here) transform that carries world coordinates into 01
221198
+ * Initialize 2 Transforms: First Transform maps a box (axis aligned) specified by `min` and `max` to
221199
+ * the unit box specified by 000 and 111 and inverse of it. Second Transform is the reverse of first.
221200
+ * @param min the min corner of the box
221201
+ * @param max the max corner of the box
221202
+ * @param npcToGlobal maps global (the unit box specified by 000 and 111) to NPC (a box specified by `min`
221203
+ * and `max`). Object created by caller, re-initialized here.
221204
+ * @param globalToNpc maps NPC (a box specified by `min` and `max`) to global (the unit box specified by
221205
+ * 000 and 111). Object created by caller, re-initialized here.
221206
+ * * NPC stands for `Normalized Projection Coordinate`
221102
221207
  */
221103
221208
  static initFromRange(min, max, npcToGlobal, globalToNpc) {
221104
221209
  const diag = max.minus(min);
@@ -221109,10 +221214,26 @@ class Transform {
221109
221214
  if (diag.z === 0.0)
221110
221215
  diag.z = 1.0;
221111
221216
  const rMatrix = new _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d();
221217
+ /**
221218
+ * [diag.x 0 0 min.x]
221219
+ * npcToGlobal = [ 0 diag.y 0 min.y]
221220
+ * [ 0 0 diag.y min.z]
221221
+ *
221222
+ * npcToGlobal * 0 = min
221223
+ * npcToGlobal * 1 = diag + min = max
221224
+ */
221112
221225
  if (npcToGlobal) {
221113
221226
  _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.createScale(diag.x, diag.y, diag.z, rMatrix);
221114
221227
  Transform.createOriginAndMatrix(min, rMatrix, npcToGlobal);
221115
221228
  }
221229
+ /**
221230
+ * [1/diag.x 0 0 -min.x/diag.x]
221231
+ * globalToNpc = [ 0 1/diag.y 0 -min.y/diag.y]
221232
+ * [ 0 0 1/diag.y -min.z/diag.z]
221233
+ *
221234
+ * globalToNpc * min = min/diag - min/diag = 0
221235
+ * globalToNpc * max = max/diag - min/diag = diag/diag = 1
221236
+ */
221116
221237
  if (globalToNpc) {
221117
221238
  const origin = new _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d(-min.x / diag.x, -min.y / diag.y, -min.z / diag.z);
221118
221239
  _Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.createScale(1.0 / diag.x, 1.0 / diag.y, 1.0 / diag.z, rMatrix);
@@ -288368,7 +288489,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.21.4","description":"P
288368
288489
  /***/ ((module) => {
288369
288490
 
288370
288491
  "use strict";
288371
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.0.0-dev.51","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","build:ci":"npm run -s build && npm run -s build:esm","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/primitives,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-eslintrc -c \\"./node_modules/@itwin/eslint-plugin/dist/configs/extension-exports-config.js\\" \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core/tree/master/core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.0.0-dev.51","@itwin/core-bentley":"workspace:^4.0.0-dev.51","@itwin/core-common":"workspace:^4.0.0-dev.51","@itwin/core-geometry":"workspace:^4.0.0-dev.51","@itwin/core-orbitgt":"workspace:^4.0.0-dev.51","@itwin/core-quantity":"workspace:^4.0.0-dev.51"},"//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":"nightly","@itwin/webgl-compatibility":"workspace:*","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/deep-assign":"^0.1.0","@types/mocha":"^8.2.2","@types/node":"^18.11.5","@types/qs":"^6.5.0","@types/semver":"7.3.10","@types/superagent":"^4.1.14","@types/sinon":"^9.0.0","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^7.11.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^9.0.2","source-map-loader":"^4.0.0","typescript":"~4.4.0","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/object-storage-azure":"^1.5.0","@itwin/cloud-agnostic-core":"^1.5.0","@itwin/object-storage-core":"^1.5.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","deep-assign":"^2.0.0","fuse.js":"^3.3.0","qs":"^6.5.3","semver":"^7.3.5","superagent":"^7.1.5","wms-capabilities":"0.4.0","reflect-metadata":"0.1.13"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"},"eslintConfig":{"plugins":["@itwin"],"extends":"plugin:@itwin/itwinjs-recommended","rules":{"@itwin/no-internal-barrel-imports":["error",{"required-barrel-modules":["./src/tile/internal.ts"]}],"@itwin/public-extension-exports":["error",{"releaseTags":["public","preview"],"outputApiFile":false}]},"overrides":[{"files":["*.test.ts","*.test.tsx","**/test/**/*.ts"],"rules":{"@itwin/no-internal-barrel-imports":"off"}}]}}');
288492
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.0.0-dev.52","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","build:ci":"npm run -s build && npm run -s build:esm","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/primitives,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-eslintrc -c \\"./node_modules/@itwin/eslint-plugin/dist/configs/extension-exports-config.js\\" \\"./src/**/*.ts\\" 1>&2","lint":"eslint -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core/tree/master/core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^4.0.0-dev.52","@itwin/core-bentley":"workspace:^4.0.0-dev.52","@itwin/core-common":"workspace:^4.0.0-dev.52","@itwin/core-geometry":"workspace:^4.0.0-dev.52","@itwin/core-orbitgt":"workspace:^4.0.0-dev.52","@itwin/core-quantity":"workspace:^4.0.0-dev.52"},"//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":"nightly","@itwin/webgl-compatibility":"workspace:*","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/deep-assign":"^0.1.0","@types/mocha":"^8.2.2","@types/node":"^18.11.5","@types/qs":"^6.5.0","@types/semver":"7.3.10","@types/superagent":"^4.1.14","@types/sinon":"^9.0.0","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.1.2","chai-as-promised":"^7","cpx2":"^3.0.0","eslint":"^7.11.0","glob":"^7.1.2","mocha":"^10.0.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^9.0.2","source-map-loader":"^4.0.0","typescript":"~4.4.0","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/object-storage-azure":"^1.5.0","@itwin/cloud-agnostic-core":"^1.5.0","@itwin/object-storage-core":"^1.5.0","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","deep-assign":"^2.0.0","fuse.js":"^3.3.0","qs":"^6.5.3","semver":"^7.3.5","superagent":"^7.1.5","wms-capabilities":"0.4.0","reflect-metadata":"0.1.13"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"},"eslintConfig":{"plugins":["@itwin"],"extends":"plugin:@itwin/itwinjs-recommended","rules":{"@itwin/no-internal-barrel-imports":["error",{"required-barrel-modules":["./src/tile/internal.ts"]}],"@itwin/public-extension-exports":["error",{"releaseTags":["public","preview"],"outputApiFile":false}]},"overrides":[{"files":["*.test.ts","*.test.tsx","**/test/**/*.ts"],"rules":{"@itwin/no-internal-barrel-imports":"off"}}]}}');
288372
288493
 
288373
288494
  /***/ })
288374
288495