@itwin/ecschema-rpcinterface-tests 5.1.0-dev.47 → 5.1.0-dev.51

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.
@@ -28087,22 +28087,22 @@ __webpack_require__.r(__webpack_exports__);
28087
28087
  var RealityDataProvider;
28088
28088
  (function (RealityDataProvider) {
28089
28089
  /**
28090
- * This is the legacy mode where the access to the 3d tiles is harcoded in ContextRealityModelProps.tilesetUrl property.
28091
- * It was use to support RealityMesh3DTiles, Terrain3DTiles, Cesium3DTiles
28092
- * You should use other mode when possible
28090
+ * This is the legacy mode where the access to the 3d tiles is hardcoded in ContextRealityModelProps.tilesetUrl property.
28091
+ * It was used to support RealityMesh3DTiles, Terrain3DTiles, Cesium3DTiles
28092
+ * You should use other modes when possible
28093
28093
  * @see [[RealityDataSource.createKeyFromUrl]] that will try to detect provider from an URL
28094
28094
  */
28095
28095
  RealityDataProvider["TilesetUrl"] = "TilesetUrl";
28096
28096
  /**
28097
- * This is the legacy mode where the access to the 3d tiles is harcoded in ContextRealityModelProps.OrbitGtBlob property.
28098
- * It was use to support OrbitPointCloud (OPC) from other server than ContextShare
28099
- * You should use other mode when possible
28097
+ * This is the legacy mode where the access to the 3d tiles is hardcoded in ContextRealityModelProps.OrbitGtBlob property.
28098
+ * It was used to support OrbitPointCloud (OPC) from other server than ContextShare
28099
+ * You should use other modes when possible
28100
28100
  * @see [[RealityDataSource.createKeyFromOrbitGtBlobProps]] that will try to detect provider from an URL
28101
28101
  */
28102
28102
  RealityDataProvider["OrbitGtBlob"] = "OrbitGtBlob";
28103
28103
  /**
28104
- * Will provide access url from realityDataId and iTwinId on contextShare for 3dTile storage format or OPC storage format
28105
- * This provider support all type of 3dTile storage fomat and OrbitPointCloud: RealityMesh3DTiles, Terrain3DTiles, Cesium3DTiles, OPC
28104
+ * Will provide access url from realityDataId and iTwinId on contextShare for 3dTile storage format or OPC storage format
28105
+ * This provider supports all types of 3dTile storage format and OrbitPointCloud: RealityMesh3DTiles, Terrain3DTiles, Cesium3DTiles, OPC
28106
28106
  * @see [[RealityDataFormat]].
28107
28107
  */
28108
28108
  RealityDataProvider["ContextShare"] = "ContextShare";
@@ -43342,6 +43342,7 @@ __webpack_require__.r(__webpack_exports__);
43342
43342
  /* harmony export */ LineBreakRun: () => (/* binding */ LineBreakRun),
43343
43343
  /* harmony export */ Paragraph: () => (/* binding */ Paragraph),
43344
43344
  /* harmony export */ Run: () => (/* binding */ Run),
43345
+ /* harmony export */ TabRun: () => (/* binding */ TabRun),
43345
43346
  /* harmony export */ TextBlock: () => (/* binding */ TextBlock),
43346
43347
  /* harmony export */ TextBlockComponent: () => (/* binding */ TextBlockComponent),
43347
43348
  /* harmony export */ TextRun: () => (/* binding */ TextRun)
@@ -43400,6 +43401,14 @@ class TextBlockComponent {
43400
43401
  get overridesStyle() {
43401
43402
  return Object.keys(this.styleOverrides).length > 0;
43402
43403
  }
43404
+ /**
43405
+ * Returns true if the string representation of this component consists only of whitespace characters.
43406
+ * Useful for checking if the component is visually empty (producing no graphics) or contains only spaces, tabs, or line breaks.
43407
+ */
43408
+ get isWhitespace() {
43409
+ return /^\s*$/g.test(this.stringify());
43410
+ }
43411
+ ;
43403
43412
  /** Convert this component to its JSON representation. */
43404
43413
  toJSON() {
43405
43414
  return {
@@ -43437,6 +43446,7 @@ var Run;
43437
43446
  switch (props.type) {
43438
43447
  case "text": return TextRun.create(props);
43439
43448
  case "fraction": return FractionRun.create(props);
43449
+ case "tab": return TabRun.create(props);
43440
43450
  case "linebreak": return LineBreakRun.create(props);
43441
43451
  }
43442
43452
  }
@@ -43547,6 +43557,40 @@ class LineBreakRun extends TextBlockComponent {
43547
43557
  return other instanceof LineBreakRun && super.equals(other);
43548
43558
  }
43549
43559
  }
43560
+ /** A [[TabRun]] is used to shift the next tab stop.
43561
+ * @note Only left-justified tabs are supported at this tab.
43562
+ * @beta
43563
+ */
43564
+ class TabRun extends TextBlockComponent {
43565
+ /** Discriminator field for the [[Run]] union. */
43566
+ type = "tab";
43567
+ toJSON() {
43568
+ return {
43569
+ ...super.toJSON(),
43570
+ type: "tab",
43571
+ };
43572
+ }
43573
+ clone() {
43574
+ return new TabRun(this.toJSON());
43575
+ }
43576
+ static create(props) {
43577
+ return new TabRun(props);
43578
+ }
43579
+ /**
43580
+ * Converts a [[TabRun]] to its string representation.
43581
+ * If the `tabsAsSpaces` option is provided, returns a string of spaces of the specified length.
43582
+ * Otherwise, returns a tab character ("\t").
43583
+ */
43584
+ stringify(options) {
43585
+ if (options?.tabsAsSpaces) {
43586
+ return " ".repeat(options.tabsAsSpaces);
43587
+ }
43588
+ return "\t";
43589
+ }
43590
+ equals(other) {
43591
+ return other instanceof TabRun && super.equals(other);
43592
+ }
43593
+ }
43550
43594
  /** A collection of [[Run]]s within a [[TextBlock]]. Each paragraph within a text block is laid out on a separate line.
43551
43595
  * @beta
43552
43596
  */
@@ -43771,7 +43815,7 @@ class TextStyleSettings {
43771
43815
  */
43772
43816
  fontName;
43773
43817
  /** The height each line of text, in meters. Many other settings use the line height as the basis for computing their own values.
43774
- * For example, the height and offset from baseline of a subscript [[TextRun]] are compuated as lineHeight * [[subScriptScale]] and
43818
+ * For example, the height and offset from baseline of a subscript [[TextRun]] are computed as lineHeight * [[subScriptScale]] and
43775
43819
  * lineHeight * [[subScriptOffsetFactor]], respectively.
43776
43820
  */
43777
43821
  lineHeight;
@@ -43809,6 +43853,10 @@ class TextStyleSettings {
43809
43853
  superScriptScale;
43810
43854
  /** Multiplier used to compute the width of each glyph, relative to [[lineHeight]]. */
43811
43855
  widthFactor;
43856
+ /** The size (in meters) used to calculate the tab stops in a run.
43857
+ * These are equally spaced from the left edge of the TextBlock. Default is 4 meters.
43858
+ */
43859
+ tabInterval;
43812
43860
  /** A fully-populated JSON representation of the default settings. */
43813
43861
  static defaultProps = {
43814
43862
  color: "subcategory",
@@ -43825,6 +43873,7 @@ class TextStyleSettings {
43825
43873
  superScriptOffsetFactor: 0.5,
43826
43874
  superScriptScale: 2 / 3,
43827
43875
  widthFactor: 1,
43876
+ tabInterval: 4,
43828
43877
  };
43829
43878
  /** Settings initialized to all default values. */
43830
43879
  static defaults = new TextStyleSettings({});
@@ -43846,6 +43895,7 @@ class TextStyleSettings {
43846
43895
  this.superScriptOffsetFactor = props.superScriptOffsetFactor ?? defaults.superScriptOffsetFactor;
43847
43896
  this.superScriptScale = props.superScriptScale ?? defaults.superScriptScale;
43848
43897
  this.widthFactor = props.widthFactor ?? defaults.widthFactor;
43898
+ this.tabInterval = props.tabInterval ?? defaults.tabInterval;
43849
43899
  }
43850
43900
  /** Create a copy of these settings, modified according to the properties defined by `alteredProps`. */
43851
43901
  clone(alteredProps) {
@@ -43864,7 +43914,8 @@ class TextStyleSettings {
43864
43914
  && this.isBold === other.isBold && this.isItalic === other.isItalic && this.isUnderlined === other.isUnderlined
43865
43915
  && this.stackedFractionType === other.stackedFractionType && this.stackedFractionScale === other.stackedFractionScale
43866
43916
  && this.subScriptOffsetFactor === other.subScriptOffsetFactor && this.subScriptScale === other.subScriptScale
43867
- && this.superScriptOffsetFactor === other.superScriptOffsetFactor && this.superScriptScale === other.superScriptScale;
43917
+ && this.superScriptOffsetFactor === other.superScriptOffsetFactor && this.superScriptScale === other.superScriptScale
43918
+ && this.tabInterval === other.tabInterval;
43868
43919
  }
43869
43920
  }
43870
43921
  Object.freeze(TextStyleSettings.defaultProps);
@@ -44220,6 +44271,7 @@ __webpack_require__.r(__webpack_exports__);
44220
44271
  /* harmony export */ SubCategoryAppearance: () => (/* reexport safe */ _SubCategoryAppearance__WEBPACK_IMPORTED_MODULE_107__.SubCategoryAppearance),
44221
44272
  /* harmony export */ SubCategoryOverride: () => (/* reexport safe */ _SubCategoryOverride__WEBPACK_IMPORTED_MODULE_108__.SubCategoryOverride),
44222
44273
  /* harmony export */ SyncMode: () => (/* reexport safe */ _BriefcaseTypes__WEBPACK_IMPORTED_MODULE_12__.SyncMode),
44274
+ /* harmony export */ TabRun: () => (/* reexport safe */ _annotation_TextBlock__WEBPACK_IMPORTED_MODULE_3__.TabRun),
44223
44275
  /* harmony export */ TerrainHeightOriginMode: () => (/* reexport safe */ _TerrainSettings__WEBPACK_IMPORTED_MODULE_110__.TerrainHeightOriginMode),
44224
44276
  /* harmony export */ TerrainSettings: () => (/* reexport safe */ _TerrainSettings__WEBPACK_IMPORTED_MODULE_110__.TerrainSettings),
44225
44277
  /* harmony export */ TestRpcManager: () => (/* reexport safe */ _rpc_TestRpcManager__WEBPACK_IMPORTED_MODULE_140__.TestRpcManager),
@@ -65832,12 +65884,14 @@ class EntityClass extends _Class__WEBPACK_IMPORTED_MODULE_4__.ECClass {
65832
65884
  const mixinSchemaItemKey = this.schema.getSchemaItemKey(name);
65833
65885
  if (!mixinSchemaItemKey)
65834
65886
  throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECSchemaError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECSchemaStatus.InvalidECJson, `The ECEntityClass ${this.name} has a mixin ("${name}") that cannot be found.`);
65835
- this._mixins.push(new _DelayedPromise__WEBPACK_IMPORTED_MODULE_0__.DelayedPromiseWithProps(mixinSchemaItemKey, async () => {
65836
- const mixin = await this.schema.lookupItem(mixinSchemaItemKey, _Mixin__WEBPACK_IMPORTED_MODULE_5__.Mixin);
65837
- if (undefined === mixin)
65838
- throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECSchemaError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECSchemaStatus.InvalidECJson, `The ECEntityClass ${this.name} has a mixin ("${name}") that cannot be found.`);
65839
- return mixin;
65840
- }));
65887
+ if (!this._mixins.find((value) => mixinSchemaItemKey.matchesFullName(value.fullName))) {
65888
+ this._mixins.push(new _DelayedPromise__WEBPACK_IMPORTED_MODULE_0__.DelayedPromiseWithProps(mixinSchemaItemKey, async () => {
65889
+ const mixin = await this.schema.lookupItem(mixinSchemaItemKey, _Mixin__WEBPACK_IMPORTED_MODULE_5__.Mixin);
65890
+ if (undefined === mixin)
65891
+ throw new _Exception__WEBPACK_IMPORTED_MODULE_3__.ECSchemaError(_Exception__WEBPACK_IMPORTED_MODULE_3__.ECSchemaStatus.InvalidECJson, `The ECEntityClass ${this.name} has a mixin ("${name}") that cannot be found.`);
65892
+ return mixin;
65893
+ }));
65894
+ }
65841
65895
  }
65842
65896
  }
65843
65897
  }
@@ -83739,7 +83793,7 @@ class IModelApp {
83739
83793
  /** The [[TerrainProviderRegistry]] for this session. */
83740
83794
  static get terrainProviderRegistry() { return this._terrainProviderRegistry; }
83741
83795
  /** The [[RealityDataSourceProviderRegistry]] for this session.
83742
- * @alpha
83796
+ * @beta
83743
83797
  */
83744
83798
  static get realityDataSourceProviders() { return this._realityDataSourceProviders; }
83745
83799
  /** The [[RenderSystem]] for this session. */
@@ -87839,9 +87893,11 @@ class PlanarClipMaskState {
87839
87893
  "use strict";
87840
87894
  __webpack_require__.r(__webpack_exports__);
87841
87895
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
87896
+ /* harmony export */ Google3dTilesProvider: () => (/* binding */ Google3dTilesProvider),
87842
87897
  /* harmony export */ RealityDataError: () => (/* binding */ RealityDataError),
87843
87898
  /* harmony export */ RealityDataSource: () => (/* binding */ RealityDataSource),
87844
- /* harmony export */ RealityDataSourceProviderRegistry: () => (/* binding */ RealityDataSourceProviderRegistry)
87899
+ /* harmony export */ RealityDataSourceProviderRegistry: () => (/* binding */ RealityDataSourceProviderRegistry),
87900
+ /* harmony export */ getGoogle3dTilesUrl: () => (/* binding */ getGoogle3dTilesUrl)
87845
87901
  /* harmony export */ });
87846
87902
  /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
87847
87903
  /* harmony import */ var _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @itwin/core-common */ "../../core/common/lib/esm/core-common.js");
@@ -87850,7 +87906,9 @@ __webpack_require__.r(__webpack_exports__);
87850
87906
  /* harmony import */ var _RealityDataSourceTilesetUrlImpl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./RealityDataSourceTilesetUrlImpl */ "../../core/frontend/lib/esm/RealityDataSourceTilesetUrlImpl.js");
87851
87907
  /* harmony import */ var _RealityDataSourceContextShareImpl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./RealityDataSourceContextShareImpl */ "../../core/frontend/lib/esm/RealityDataSourceContextShareImpl.js");
87852
87908
  /* harmony import */ var _RealityDataSourceCesiumIonAssetImpl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./RealityDataSourceCesiumIonAssetImpl */ "../../core/frontend/lib/esm/RealityDataSourceCesiumIonAssetImpl.js");
87853
- /* harmony import */ var _IModelApp__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./IModelApp */ "../../core/frontend/lib/esm/IModelApp.js");
87909
+ /* harmony import */ var _internal_RealityDataSourceGoogle3dTilesImpl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./internal/RealityDataSourceGoogle3dTilesImpl */ "../../core/frontend/lib/esm/internal/RealityDataSourceGoogle3dTilesImpl.js");
87910
+ /* harmony import */ var _IModelApp__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./IModelApp */ "../../core/frontend/lib/esm/IModelApp.js");
87911
+ /* harmony import */ var _internal_GoogleMapsDecorator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internal/GoogleMapsDecorator */ "../../core/frontend/lib/esm/internal/GoogleMapsDecorator.js");
87854
87912
  /*---------------------------------------------------------------------------------------------
87855
87913
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
87856
87914
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -87866,6 +87924,8 @@ __webpack_require__.r(__webpack_exports__);
87866
87924
 
87867
87925
 
87868
87926
 
87927
+
87928
+
87869
87929
  const loggerCategory = _common_FrontendLoggerCategory__WEBPACK_IMPORTED_MODULE_2__.FrontendLoggerCategory.RealityData;
87870
87930
  /**
87871
87931
  * Reality Data Operation error
@@ -87963,7 +88023,7 @@ var RealityDataSource;
87963
88023
  * @alpha
87964
88024
  */
87965
88025
  async function fromKey(key, iTwinId) {
87966
- const provider = _IModelApp__WEBPACK_IMPORTED_MODULE_7__.IModelApp.realityDataSourceProviders.find(key.provider);
88026
+ const provider = _IModelApp__WEBPACK_IMPORTED_MODULE_8__.IModelApp.realityDataSourceProviders.find(key.provider);
87967
88027
  if (!provider) {
87968
88028
  _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning(loggerCategory, `RealityDataSourceProvider "${key.provider}" is not registered`);
87969
88029
  return undefined;
@@ -87974,8 +88034,8 @@ var RealityDataSource;
87974
88034
  })(RealityDataSource || (RealityDataSource = {}));
87975
88035
  /** A registry of [[RealityDataSourceProvider]]s identified by their unique names. The registry can be accessed via [[IModelApp.realityDataSourceProviders]].
87976
88036
  * It includes a handful of built-in providers for sources like Cesium ION, ContextShare, OrbitGT, and arbitrary public-accessible URLs.
87977
- * Any number of additional providers can be registered. They should typically be registered just after [[IModelAp.startup]].
87978
- * @alpha
88037
+ * Any number of additional providers can be registered. They should typically be registered just after [[IModelApp.startup]].
88038
+ * @beta
87979
88039
  */
87980
88040
  class RealityDataSourceProviderRegistry {
87981
88041
  _providers = new Map();
@@ -88004,6 +88064,78 @@ class RealityDataSourceProviderRegistry {
88004
88064
  return this._providers.get(name);
88005
88065
  }
88006
88066
  }
88067
+ /**
88068
+ * Will provide Google Photorealistic 3D Tiles (in 3dTile format).
88069
+ * A valid API key or getAuthToken fuction must be supplied when creating this provider.
88070
+ * To use this provider, you must register it with [[IModelApp.realityDataSourceProviders]].
88071
+ * Example usage:
88072
+ * ```ts
88073
+ * [[include:GooglePhotorealistic3dTiles_providerApiKey]]
88074
+ * ```
88075
+ * @see [Google Photorealistic 3D Tiles]($docs/learning/frontend/GooglePhotorealistic3dTiles.md)
88076
+ * @beta
88077
+ */
88078
+ class Google3dTilesProvider {
88079
+ /** Google Map Tiles API Key used to access Google 3D Tiles. */
88080
+ _apiKey;
88081
+ /** Function that returns an OAuth token for authenticating with Google 3D Tiles. This token is expected to not contain the "Bearer" prefix. */
88082
+ _getAuthToken;
88083
+ /** Decorator for Google Maps logos. */
88084
+ _decorator;
88085
+ /** Enables cached decorations for this provider. @see [[ViewportDecorator.useCachedDecorations]] */
88086
+ useCachedDecorations = true;
88087
+ async createRealityDataSource(key, iTwinId) {
88088
+ if (!this._apiKey && !this._getAuthToken) {
88089
+ _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Logger.logError(loggerCategory, "Either an API key or getAuthToken function are required to create a Google3dTilesProvider.");
88090
+ return undefined;
88091
+ }
88092
+ return _internal_RealityDataSourceGoogle3dTilesImpl__WEBPACK_IMPORTED_MODULE_7__.RealityDataSourceGoogle3dTilesImpl.createFromKey(key, iTwinId, this._apiKey, this._getAuthToken);
88093
+ }
88094
+ constructor(options) {
88095
+ this._apiKey = options.apiKey;
88096
+ this._getAuthToken = options.getAuthToken;
88097
+ this._decorator = new _internal_GoogleMapsDecorator__WEBPACK_IMPORTED_MODULE_9__.GoogleMapsDecorator(options.showCreditsOnScreen ?? true);
88098
+ }
88099
+ /**
88100
+ * Initialize the Google 3D Tiles reality data source provider by activating its decorator, which consists of loading the correct Google Maps logo.
88101
+ * @returns `true` if the decorator was successfully activated, otherwise `false`.
88102
+ */
88103
+ async initialize() {
88104
+ const isActivated = await this._decorator.activate("satellite");
88105
+ if (!isActivated) {
88106
+ const msg = "Failed to activate decorator";
88107
+ _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Logger.logError(loggerCategory, msg);
88108
+ throw new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BentleyError(_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BentleyStatus.ERROR, msg);
88109
+ }
88110
+ return isActivated;
88111
+ }
88112
+ decorate(_context) {
88113
+ this._decorator.decorate(_context);
88114
+ }
88115
+ async addAttributions(cards, vp) {
88116
+ const copyrightMap = (0,_internal_GoogleMapsDecorator__WEBPACK_IMPORTED_MODULE_9__.getCopyrights)(vp);
88117
+ // Only add another logo card if the tiles have copyright
88118
+ if (copyrightMap.size > 0) {
88119
+ // Order by most occurances to least
88120
+ // See https://developers.google.com/maps/documentation/tile/create-renderer#display-attributions
88121
+ const sortedCopyrights = [...copyrightMap.entries()].sort((a, b) => b[1] - a[1]);
88122
+ let copyrightMsg = "Data provided by:<br><ul>";
88123
+ copyrightMsg += sortedCopyrights.map(([key]) => `<li>${key}</li>`).join("");
88124
+ copyrightMsg += "</ul>";
88125
+ cards.appendChild(_IModelApp__WEBPACK_IMPORTED_MODULE_8__.IModelApp.makeLogoCard({
88126
+ iconSrc: `${_IModelApp__WEBPACK_IMPORTED_MODULE_8__.IModelApp.publicPath}images/google_on_white_hdpi.png`,
88127
+ heading: "Google Photorealistic 3D Tiles",
88128
+ notice: copyrightMsg
88129
+ }));
88130
+ }
88131
+ }
88132
+ }
88133
+ /** Returns the URL used for retrieving Google Photorealistic 3D Tiles.
88134
+ * @beta
88135
+ */
88136
+ function getGoogle3dTilesUrl() {
88137
+ return "https://tile.googleapis.com/v1/3dtiles/root.json";
88138
+ }
88007
88139
 
88008
88140
 
88009
88141
  /***/ }),
@@ -88510,7 +88642,7 @@ class RealityDataSourceTilesetUrlImpl {
88510
88642
  // otherwise the full path to root document is given.
88511
88643
  // The base URL contains the base URL from which tile relative path are constructed.
88512
88644
  // The tile's path root will need to be reinserted for child tiles to return a 200
88513
- // If the original url includes search paramaters, they are stored in _searchParams to be reinserted into child tile requests.
88645
+ // If the original root tileset url includes search paramaters, they are stored in _searchParams to be reinserted into child tile requests.
88514
88646
  setBaseUrl(url) {
88515
88647
  const urlParts = url.split("/");
88516
88648
  const newUrl = new URL(url);
@@ -107130,6 +107262,8 @@ __webpack_require__.r(__webpack_exports__);
107130
107262
  /* harmony export */ GlobeAnimator: () => (/* reexport safe */ _GlobeAnimator__WEBPACK_IMPORTED_MODULE_28__.GlobeAnimator),
107131
107263
  /* harmony export */ GltfDataType: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_122__.GltfDataType),
107132
107264
  /* harmony export */ GltfReader: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_122__.GltfReader),
107265
+ /* harmony export */ Google3dTilesProvider: () => (/* reexport safe */ _RealityDataSource__WEBPACK_IMPORTED_MODULE_121__.Google3dTilesProvider),
107266
+ /* harmony export */ GoogleMapsDecorator: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_122__.GoogleMapsDecorator),
107133
107267
  /* harmony export */ GraphicAssembler: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_10__.GraphicAssembler),
107134
107268
  /* harmony export */ GraphicBranch: () => (/* reexport safe */ _render_GraphicBranch__WEBPACK_IMPORTED_MODULE_82__.GraphicBranch),
107135
107269
  /* harmony export */ GraphicBuilder: () => (/* reexport safe */ _render_GraphicBuilder__WEBPACK_IMPORTED_MODULE_83__.GraphicBuilder),
@@ -107178,6 +107312,7 @@ __webpack_require__.r(__webpack_exports__);
107178
107312
  /* harmony export */ LocateOptions: () => (/* reexport safe */ _ElementLocateManager__WEBPACK_IMPORTED_MODULE_17__.LocateOptions),
107179
107313
  /* harmony export */ LocateResponse: () => (/* reexport safe */ _ElementLocateManager__WEBPACK_IMPORTED_MODULE_17__.LocateResponse),
107180
107314
  /* harmony export */ LockedStates: () => (/* reexport safe */ _AccuDraw__WEBPACK_IMPORTED_MODULE_0__.LockedStates),
107315
+ /* harmony export */ LogoDecoration: () => (/* reexport safe */ _internal_cross_package__WEBPACK_IMPORTED_MODULE_122__.LogoDecoration),
107181
107316
  /* harmony export */ LookAndMoveTool: () => (/* reexport safe */ _tools_ViewTool__WEBPACK_IMPORTED_MODULE_114__.LookAndMoveTool),
107182
107317
  /* harmony export */ LookViewTool: () => (/* reexport safe */ _tools_ViewTool__WEBPACK_IMPORTED_MODULE_114__.LookViewTool),
107183
107318
  /* harmony export */ ManipulatorToolEvent: () => (/* reexport safe */ _tools_ToolAdmin__WEBPACK_IMPORTED_MODULE_112__.ManipulatorToolEvent),
@@ -107413,6 +107548,7 @@ __webpack_require__.r(__webpack_exports__);
107413
107548
  /* harmony export */ getCesiumAssetUrl: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_99__.getCesiumAssetUrl),
107414
107549
  /* harmony export */ getCompressedJpegFromCanvas: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_10__.getCompressedJpegFromCanvas),
107415
107550
  /* harmony export */ getFrustumPlaneIntersectionDepthRange: () => (/* reexport safe */ _BackgroundMapGeometry__WEBPACK_IMPORTED_MODULE_116__.getFrustumPlaneIntersectionDepthRange),
107551
+ /* harmony export */ getGoogle3dTilesUrl: () => (/* reexport safe */ _RealityDataSource__WEBPACK_IMPORTED_MODULE_121__.getGoogle3dTilesUrl),
107416
107552
  /* harmony export */ getImageSourceFormatForMimeType: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_10__.getImageSourceFormatForMimeType),
107417
107553
  /* harmony export */ getImageSourceMimeType: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_10__.getImageSourceMimeType),
107418
107554
  /* harmony export */ getQuantityTypeKey: () => (/* reexport safe */ _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_72__.getQuantityTypeKey),
@@ -108426,6 +108562,366 @@ class RemoteExtensionProvider {
108426
108562
  }
108427
108563
 
108428
108564
 
108565
+ /***/ }),
108566
+
108567
+ /***/ "../../core/frontend/lib/esm/internal/GoogleMapsDecorator.js":
108568
+ /*!*******************************************************************!*\
108569
+ !*** ../../core/frontend/lib/esm/internal/GoogleMapsDecorator.js ***!
108570
+ \*******************************************************************/
108571
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
108572
+
108573
+ "use strict";
108574
+ __webpack_require__.r(__webpack_exports__);
108575
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
108576
+ /* harmony export */ GoogleMapsDecorator: () => (/* binding */ GoogleMapsDecorator),
108577
+ /* harmony export */ LogoDecoration: () => (/* binding */ LogoDecoration),
108578
+ /* harmony export */ getCopyrights: () => (/* binding */ getCopyrights)
108579
+ /* harmony export */ });
108580
+ /* harmony import */ var _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-geometry */ "../../core/geometry/lib/esm/core-geometry.js");
108581
+ /* harmony import */ var _IModelApp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../IModelApp */ "../../core/frontend/lib/esm/IModelApp.js");
108582
+ /* harmony import */ var _Sprites__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Sprites */ "../../core/frontend/lib/esm/Sprites.js");
108583
+ /*---------------------------------------------------------------------------------------------
108584
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
108585
+ * See LICENSE.md in the project root for license terms and full copyright notice.
108586
+ *--------------------------------------------------------------------------------------------*/
108587
+
108588
+
108589
+
108590
+ /** A simple decorator that shows the logo at a given screen position.
108591
+ * @internal
108592
+ */
108593
+ class LogoDecoration {
108594
+ _sprite;
108595
+ /** The current position of the logo in view coordinates. */
108596
+ position = new _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_0__.Point3d();
108597
+ _offset;
108598
+ set offset(offset) {
108599
+ this._offset = offset;
108600
+ }
108601
+ /** The logo offset in view coordinates.*/
108602
+ get offset() {
108603
+ return this._offset;
108604
+ }
108605
+ /** Move the logo to the lower left corner of the screen. */
108606
+ moveToLowerLeftCorner(context) {
108607
+ if (!this._sprite || !this._sprite.isLoaded)
108608
+ return false;
108609
+ this.position.x = this._offset?.x ?? 0;
108610
+ this.position.y = context.viewport.parentDiv.clientHeight - this._sprite.size.y;
108611
+ if (this._offset?.y)
108612
+ this.position.y -= this._offset.y;
108613
+ return true;
108614
+ }
108615
+ /* TODO: Add other move methods as needed */
108616
+ /** Indicate if the logo is loaded and ready to be drawn. */
108617
+ get isLoaded() { return this._sprite?.isLoaded ?? false; }
108618
+ async activate(sprite) {
108619
+ this._sprite = sprite;
108620
+ return new Promise((resolve, _reject) => {
108621
+ sprite.loadPromise.then(() => {
108622
+ resolve(true);
108623
+ }).catch(() => {
108624
+ resolve(false);
108625
+ });
108626
+ });
108627
+ }
108628
+ /** Draw this sprite onto the supplied canvas.
108629
+ * @see [[CanvasDecoration.drawDecoration]]
108630
+ */
108631
+ drawDecoration(ctx) {
108632
+ if (this.isLoaded) {
108633
+ // Draw image with an origin at the top left corner
108634
+ ctx.drawImage(this._sprite.image, 0, 0);
108635
+ }
108636
+ }
108637
+ decorate(context) {
108638
+ context.addCanvasDecoration(this);
108639
+ }
108640
+ }
108641
+ /** A decorator that adds the Google Maps logo to the lower left corner of the screen.
108642
+ * @internal
108643
+ */
108644
+ class GoogleMapsDecorator {
108645
+ logo = new LogoDecoration();
108646
+ _showCreditsOnScreen;
108647
+ /** Create a new GoogleMapsDecorator.
108648
+ * @param showCreditsOnScreen If true, the data attributions/copyrights from the Google Photorealistic 3D Tiles will be displayed on screen. The Google Maps logo will always be displayed.
108649
+ */
108650
+ constructor(showCreditsOnScreen) {
108651
+ this._showCreditsOnScreen = showCreditsOnScreen;
108652
+ }
108653
+ /** Activate the logo based on the given map type. */
108654
+ async activate(mapType) {
108655
+ // Pick the logo that is the most visible on the background map
108656
+ const imageName = mapType === "roadmap" ?
108657
+ "google_on_white" :
108658
+ "google_on_non_white";
108659
+ // We need to move the logo right after the 'i.js' button
108660
+ this.logo.offset = new _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_0__.Point3d(45, 10);
108661
+ return this.logo.activate(_Sprites__WEBPACK_IMPORTED_MODULE_2__.IconSprites.getSpriteFromUrl(`${_IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.publicPath}images/${imageName}.png`));
108662
+ }
108663
+ ;
108664
+ /** Decorate implementation */
108665
+ decorate = (context) => {
108666
+ if (!this.logo.isLoaded)
108667
+ return;
108668
+ this.logo.moveToLowerLeftCorner(context);
108669
+ this.logo.decorate(context);
108670
+ if (!this._showCreditsOnScreen)
108671
+ return;
108672
+ // Get data attribution (copyright) text
108673
+ const copyrightMap = getCopyrights(context.viewport);
108674
+ // Order by most occurances to least
108675
+ // See https://developers.google.com/maps/documentation/tile/create-renderer#display-attributions
108676
+ const sortedCopyrights = [...copyrightMap.entries()].sort((a, b) => b[1] - a[1]);
108677
+ const copyrightText = sortedCopyrights.map(([key]) => ` • ${key}`).join("");
108678
+ // Create and add element, offset to leave space for i.js and Google logos
108679
+ const elem = document.createElement("div");
108680
+ elem.innerHTML = copyrightText;
108681
+ elem.style.color = "white";
108682
+ elem.style.fontSize = "11px";
108683
+ elem.style.textWrap = "wrap";
108684
+ elem.style.position = "absolute";
108685
+ elem.style.bottom = "10px";
108686
+ elem.style.left = "107px";
108687
+ context.addHtmlDecoration(elem);
108688
+ };
108689
+ }
108690
+ /** Get copyrights from tiles currently in the viewport.
108691
+ * @internal
108692
+ */
108693
+ function getCopyrights(vp) {
108694
+ const tiles = _IModelApp__WEBPACK_IMPORTED_MODULE_1__.IModelApp.tileAdmin.getTilesForUser(vp)?.selected;
108695
+ const copyrightMap = new Map();
108696
+ if (tiles) {
108697
+ for (const tile of tiles) {
108698
+ if (tile.copyright) {
108699
+ for (const copyright of tile.copyright.split(";")) {
108700
+ const currentCount = copyrightMap.get(copyright);
108701
+ copyrightMap.set(copyright, currentCount ? currentCount + 1 : 1);
108702
+ }
108703
+ }
108704
+ }
108705
+ }
108706
+ return copyrightMap;
108707
+ }
108708
+
108709
+
108710
+ /***/ }),
108711
+
108712
+ /***/ "../../core/frontend/lib/esm/internal/RealityDataSourceGoogle3dTilesImpl.js":
108713
+ /*!**********************************************************************************!*\
108714
+ !*** ../../core/frontend/lib/esm/internal/RealityDataSourceGoogle3dTilesImpl.js ***!
108715
+ \**********************************************************************************/
108716
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
108717
+
108718
+ "use strict";
108719
+ __webpack_require__.r(__webpack_exports__);
108720
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
108721
+ /* harmony export */ RealityDataSourceGoogle3dTilesImpl: () => (/* binding */ RealityDataSourceGoogle3dTilesImpl)
108722
+ /* harmony export */ });
108723
+ /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
108724
+ /* harmony import */ var _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @itwin/core-common */ "../../core/common/lib/esm/core-common.js");
108725
+ /* harmony import */ var _request_Request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../request/Request */ "../../core/frontend/lib/esm/request/Request.js");
108726
+ /* harmony import */ var _tile_internal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../tile/internal */ "../../core/frontend/lib/esm/tile/internal.js");
108727
+ /*---------------------------------------------------------------------------------------------
108728
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
108729
+ * See LICENSE.md in the project root for license terms and full copyright notice.
108730
+ *--------------------------------------------------------------------------------------------*/
108731
+ /** @packageDocumentation
108732
+ * @module Tiles
108733
+ */
108734
+
108735
+
108736
+
108737
+
108738
+ /** This class provides access to the reality data provider services.
108739
+ * It encapsulates access to a reality data from the Google Photorealistic 3D Tiles service.
108740
+ * A valid Google 3D Tiles authentication key must be configured for this provider to work (provide the key in the [[RealityDataSourceGoogle3dTilesImpl.createFromKey]] method).
108741
+ * @internal
108742
+ */
108743
+ class RealityDataSourceGoogle3dTilesImpl {
108744
+ key;
108745
+ /** The URL that supplies the 3d tiles for displaying the Google 3D Tiles tileset. */
108746
+ _tilesetUrl;
108747
+ /** Base URL of the Google 3D Tiles tileset. Does not include trailing subdirectories. */
108748
+ _baseUrl = "";
108749
+ /** Search parameters that must be passed down to child tile requests. */
108750
+ _searchParams;
108751
+ /** Google Map Tiles API Key used to access Google 3D Tiles. */
108752
+ _apiKey;
108753
+ /** Function that returns an OAuth token for authenticating with GP3sDT. This token is expected to not contain the "Bearer" prefix. */
108754
+ _getAuthToken;
108755
+ /** This is necessary for Google 3D Tiles tilesets! This tells the iTwin.js tiling system to use the geometric error specified in the tileset rather than any of our own. */
108756
+ usesGeometricError = true;
108757
+ maximumScreenSpaceError = 16;
108758
+ /** Construct a new reality data source.
108759
+ * @param props JSON representation of the reality data source
108760
+ */
108761
+ constructor(props, apiKey, _getAuthToken) {
108762
+ this.key = props.sourceKey;
108763
+ this._tilesetUrl = this.key.id;
108764
+ this._apiKey = apiKey;
108765
+ this._getAuthToken = _getAuthToken;
108766
+ }
108767
+ /**
108768
+ * Create an instance of this class from a source key and iTwin context.
108769
+ */
108770
+ static async createFromKey(sourceKey, _iTwinId, apiKey, _getAuthToken) {
108771
+ return new RealityDataSourceGoogle3dTilesImpl({ sourceKey }, apiKey, _getAuthToken);
108772
+ }
108773
+ get isContextShare() {
108774
+ return false;
108775
+ }
108776
+ /**
108777
+ * Returns Reality Data if available
108778
+ */
108779
+ get realityData() {
108780
+ return undefined;
108781
+ }
108782
+ get realityDataId() {
108783
+ return undefined;
108784
+ }
108785
+ /**
108786
+ * Returns Reality Data type if available
108787
+ */
108788
+ get realityDataType() {
108789
+ return undefined;
108790
+ }
108791
+ getTilesetUrl() {
108792
+ return this._tilesetUrl;
108793
+ }
108794
+ /** Return the URL of the Google 3D Tiles tileset with its API key included. */
108795
+ getTilesetUrlWithKey() {
108796
+ const google3dTilesKey = this._apiKey;
108797
+ if (this._getAuthToken) {
108798
+ // If we have a getAuthToken function, no need to append API key to the URL
108799
+ return this._tilesetUrl;
108800
+ }
108801
+ else {
108802
+ return `${this._tilesetUrl}?key=${google3dTilesKey}`;
108803
+ }
108804
+ }
108805
+ setBaseUrl(url) {
108806
+ const urlParts = url.split("/");
108807
+ const newUrl = new URL(url);
108808
+ this._searchParams = newUrl.searchParams;
108809
+ urlParts.pop();
108810
+ if (urlParts.length === 0) {
108811
+ this._baseUrl = "";
108812
+ }
108813
+ else {
108814
+ this._baseUrl = newUrl.origin;
108815
+ }
108816
+ }
108817
+ /**
108818
+ * This method returns the URL to access the actual 3d tiles from the service provider.
108819
+ * @returns string containing the URL to reality data.
108820
+ */
108821
+ async getServiceUrl(_iTwinId) {
108822
+ return this._tilesetUrl;
108823
+ }
108824
+ async getRootDocument(_iTwinId) {
108825
+ const url = this.getTilesetUrlWithKey();
108826
+ if (!url)
108827
+ throw new _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.IModelError(_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BentleyStatus.ERROR, "Unable to get service url");
108828
+ this.setBaseUrl(url);
108829
+ let authToken;
108830
+ if (this._getAuthToken) {
108831
+ authToken = await this._getAuthToken();
108832
+ }
108833
+ return (0,_request_Request__WEBPACK_IMPORTED_MODULE_2__.request)(url, "json", authToken ? {
108834
+ headers: {
108835
+ authorization: `Bearer ${authToken}`
108836
+ }
108837
+ } : undefined);
108838
+ }
108839
+ /** Returns the tile URL relative to the base URL.
108840
+ * If the tile path is a relative URL, the base URL is prepended to it.
108841
+ * For both absolute and relative tile path URLs, the search parameters are checked. If the search params are empty, the base URL's search params are appended to the tile path.
108842
+ */
108843
+ getTileUrl(tilePath) {
108844
+ // this._baseUrl does not include the trailing subdirectories.
108845
+ // This is not an issue because the tile path always starts with the appropriate subdirectories.
108846
+ // We also do not need to worry about the tile path starting with a slash.
108847
+ // This happens in these tiles at the second .json level, but the URL API will handle that for us.
108848
+ const url = new URL(tilePath, this._baseUrl);
108849
+ // If tile is a reference to a tileset, iterate over tileset url's search params and store them in this._searchParams so we can pass them down to children
108850
+ if (this.getTileContentType(url.toString()) === "tileset" && url.searchParams.size !== 0) {
108851
+ for (const [key, value] of url.searchParams.entries()) {
108852
+ this._searchParams?.append(key, value);
108853
+ }
108854
+ }
108855
+ if (this._searchParams === undefined || this._searchParams.size === 0) {
108856
+ return url.toString();
108857
+ }
108858
+ // Append all stored search params to url's existing ones
108859
+ const newUrl = new URL(url.toString());
108860
+ for (const [key, value] of this._searchParams.entries()) {
108861
+ if (!url.searchParams.has(key)) {
108862
+ // Only append the search param if it does not already exist in the url
108863
+ newUrl.searchParams.append(key, value);
108864
+ }
108865
+ }
108866
+ return newUrl.toString();
108867
+ }
108868
+ /**
108869
+ * Returns the tile content. The path to the tile is relative to the base url of present reality data whatever the type.
108870
+ */
108871
+ async getTileContent(name) {
108872
+ let authToken;
108873
+ if (this._getAuthToken) {
108874
+ authToken = await this._getAuthToken();
108875
+ }
108876
+ return (0,_request_Request__WEBPACK_IMPORTED_MODULE_2__.request)(this.getTileUrl(name), "arraybuffer", authToken ? {
108877
+ headers: {
108878
+ authorization: `Bearer ${authToken}`
108879
+ }
108880
+ } : undefined);
108881
+ }
108882
+ /**
108883
+ * Returns the tile content in json format. The path to the tile is relative to the base url of present reality data whatever the type.
108884
+ */
108885
+ async getTileJson(name) {
108886
+ let authToken;
108887
+ if (this._getAuthToken) {
108888
+ authToken = await this._getAuthToken();
108889
+ }
108890
+ return (0,_request_Request__WEBPACK_IMPORTED_MODULE_2__.request)(this.getTileUrl(name), "json", authToken ? {
108891
+ headers: {
108892
+ authorization: `Bearer ${authToken}`
108893
+ }
108894
+ } : undefined);
108895
+ }
108896
+ getTileContentType(url) {
108897
+ return new URL(url, "https://localhost/").pathname.toLowerCase().endsWith("json") ? "tileset" : "tile";
108898
+ }
108899
+ /**
108900
+ * Gets spatial location and extents of this reality data source
108901
+ * @returns spatial location and extents
108902
+ * @internal
108903
+ */
108904
+ async getSpatialLocationAndExtents() {
108905
+ let spatialLocation;
108906
+ if (this.key.format === _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.RealityDataFormat.ThreeDTile) {
108907
+ const rootDocument = await this.getRootDocument(undefined);
108908
+ spatialLocation = _tile_internal__WEBPACK_IMPORTED_MODULE_3__.ThreeDTileFormatInterpreter.getSpatialLocationAndExtents(rootDocument);
108909
+ }
108910
+ return spatialLocation;
108911
+ }
108912
+ /**
108913
+ * Gets information to identify the product and engine that create this reality data
108914
+ * Will return undefined if cannot be resolved
108915
+ * @returns information to identify the product and engine that create this reality data
108916
+ * @alpha
108917
+ */
108918
+ async getPublisherProductInfo() {
108919
+ let publisherInfo;
108920
+ return publisherInfo;
108921
+ }
108922
+ }
108923
+
108924
+
108429
108925
  /***/ }),
108430
108926
 
108431
108927
  /***/ "../../core/frontend/lib/esm/internal/cross-package.js":
@@ -108447,11 +108943,13 @@ __webpack_require__.r(__webpack_exports__);
108447
108943
  /* harmony export */ FeatureGraphicsRenderer: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.FeatureGraphicsRenderer),
108448
108944
  /* harmony export */ GltfDataType: () => (/* reexport safe */ _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_2__.GltfDataType),
108449
108945
  /* harmony export */ GltfReader: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.GltfReader),
108450
- /* harmony export */ IModelTileTree: () => (/* reexport safe */ _tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_9__.IModelTileTree),
108946
+ /* harmony export */ GoogleMapsDecorator: () => (/* reexport safe */ _GoogleMapsDecorator__WEBPACK_IMPORTED_MODULE_9__.GoogleMapsDecorator),
108947
+ /* harmony export */ IModelTileTree: () => (/* reexport safe */ _tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_10__.IModelTileTree),
108451
108948
  /* harmony export */ ImageryMapTileTree: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.ImageryMapTileTree),
108452
108949
  /* harmony export */ ImdlReader: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.ImdlReader),
108453
108950
  /* harmony export */ LayerTileTreeHandler: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.LayerTileTreeHandler),
108454
108951
  /* harmony export */ LayerTileTreeReferenceHandler: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.LayerTileTreeReferenceHandler),
108952
+ /* harmony export */ LogoDecoration: () => (/* reexport safe */ _GoogleMapsDecorator__WEBPACK_IMPORTED_MODULE_9__.LogoDecoration),
108455
108953
  /* harmony export */ MapTileTreeReference: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_8__.MapTileTreeReference),
108456
108954
  /* harmony export */ OnScreenTarget: () => (/* reexport safe */ _render_webgl_Target__WEBPACK_IMPORTED_MODULE_3__.OnScreenTarget),
108457
108955
  /* harmony export */ PerformanceMetrics: () => (/* reexport safe */ _render_webgl_PerformanceMetrics__WEBPACK_IMPORTED_MODULE_4__.PerformanceMetrics),
@@ -108479,7 +108977,8 @@ __webpack_require__.r(__webpack_exports__);
108479
108977
  /* harmony import */ var _render_AnimationBranchState__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./render/AnimationBranchState */ "../../core/frontend/lib/esm/internal/render/AnimationBranchState.js");
108480
108978
  /* harmony import */ var _render_RenderTargetDebugControl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./render/RenderTargetDebugControl */ "../../core/frontend/lib/esm/internal/render/RenderTargetDebugControl.js");
108481
108979
  /* harmony import */ var _tile_internal__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../tile/internal */ "../../core/frontend/lib/esm/tile/internal.js");
108482
- /* harmony import */ var _tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./tile/IModelTileTree */ "../../core/frontend/lib/esm/internal/tile/IModelTileTree.js");
108980
+ /* harmony import */ var _GoogleMapsDecorator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./GoogleMapsDecorator */ "../../core/frontend/lib/esm/internal/GoogleMapsDecorator.js");
108981
+ /* harmony import */ var _tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./tile/IModelTileTree */ "../../core/frontend/lib/esm/internal/tile/IModelTileTree.js");
108483
108982
  /*---------------------------------------------------------------------------------------------
108484
108983
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
108485
108984
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -108497,6 +108996,7 @@ __webpack_require__.r(__webpack_exports__);
108497
108996
 
108498
108997
  // Used by frontend-tiles, map-layers-formats, frontend-dev-tools
108499
108998
 
108999
+
108500
109000
  // Used by display-test-app which currently builds using both ESModules and CommonJS.
108501
109001
  // Remove once CommonJS is dropped.
108502
109002
 
@@ -145376,7 +145876,7 @@ class RealityModelTileTreeProps {
145376
145876
  this.maximumScreenSpaceError = json.asset.extras?.maximumScreenSpaceError;
145377
145877
  }
145378
145878
  else if (rdSource.usesGeometricError) {
145379
- this.maximumScreenSpaceError = rdSource.maximumScreenSpaceError ?? 1;
145879
+ this.maximumScreenSpaceError = rdSource.maximumScreenSpaceError ?? 16;
145380
145880
  }
145381
145881
  }
145382
145882
  }
@@ -145808,6 +146308,7 @@ class RealityTreeReference extends RealityModelTileTree.Reference {
145808
146308
  _rdSourceKey;
145809
146309
  _produceGeometry;
145810
146310
  _modelId;
146311
+ useCachedDecorations;
145811
146312
  constructor(props) {
145812
146313
  super(props);
145813
146314
  this._produceGeometry = props.produceGeometry;
@@ -145824,6 +146325,8 @@ class RealityTreeReference extends RealityModelTileTree.Reference {
145824
146325
  modelId = realityTreeSupplier.findCompatibleContextRealityModelId(treeId, this._source);
145825
146326
  }
145826
146327
  this._modelId = modelId ?? props.iModel.transientIds.getNext();
146328
+ const provider = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.realityDataSourceProviders.find(this._rdSourceKey.provider);
146329
+ this.useCachedDecorations = provider?.useCachedDecorations;
145827
146330
  }
145828
146331
  get modelId() { return this._modelId; }
145829
146332
  createTreeId(modelId) {
@@ -145952,9 +146455,17 @@ class RealityTreeReference extends RealityModelTileTree.Reference {
145952
146455
  cards.appendChild(_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.makeLogoCard({ heading: "OpenStreetMap", notice: `&copy;<a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> ${_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.localization.getLocalizedString("iModelJs:BackgroundMap:OpenStreetMapContributors")}` }));
145953
146456
  }
145954
146457
  }
145955
- async addAttributions(cards) {
145956
- // eslint-disable-next-line @typescript-eslint/no-deprecated
145957
- return Promise.resolve(this.addLogoCards(cards));
146458
+ async addAttributions(cards, vp) {
146459
+ const provider = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.realityDataSourceProviders.find(this._rdSourceKey.provider);
146460
+ if (provider?.addAttributions) {
146461
+ await provider.addAttributions(cards, vp);
146462
+ }
146463
+ }
146464
+ decorate(_context) {
146465
+ const provider = _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.realityDataSourceProviders.find(this._rdSourceKey.provider);
146466
+ if (provider?.decorate) {
146467
+ provider.decorate(_context);
146468
+ }
145958
146469
  }
145959
146470
  }
145960
146471
 
@@ -155218,6 +155729,7 @@ class GltfReader {
155218
155729
  isLeaf,
155219
155730
  contentRange,
155220
155731
  range,
155732
+ copyright: this._glTF.asset?.copyright,
155221
155733
  containsPointCloud: this._containsPointCloud,
155222
155734
  template: (0,_internal_render_GraphicTemplateImpl__WEBPACK_IMPORTED_MODULE_13__.createGraphicTemplate)({
155223
155735
  nodes: templateNodes,
@@ -156960,6 +157472,8 @@ class RealityTile extends _internal__WEBPACK_IMPORTED_MODULE_5__.Tile {
156960
157472
  _reprojectedGraphic;
156961
157473
  _geometricError;
156962
157474
  /** @internal */
157475
+ _copyright;
157476
+ /** @internal */
156963
157477
  constructor(props, tree) {
156964
157478
  super(props, tree);
156965
157479
  this.transformToRoot = props.transformToRoot;
@@ -156982,6 +157496,7 @@ class RealityTile extends _internal__WEBPACK_IMPORTED_MODULE_5__.Tile {
156982
157496
  setContent(content) {
156983
157497
  super.setContent(content);
156984
157498
  this._geometry = content.geometry;
157499
+ this._copyright = content.copyright;
156985
157500
  }
156986
157501
  /** @internal */
156987
157502
  freeMemory() {
@@ -157010,6 +157525,8 @@ class RealityTile extends _internal__WEBPACK_IMPORTED_MODULE_5__.Tile {
157010
157525
  */
157011
157526
  get geometry() { return this._geometry; }
157012
157527
  /** @internal */
157528
+ get copyright() { return this._copyright; }
157529
+ /** @internal */
157013
157530
  get isDisplayable() {
157014
157531
  if (this.noContentButTerminateOnSelection)
157015
157532
  return false;
@@ -313654,7 +314171,7 @@ var loadLanguages = instance.loadLanguages;
313654
314171
  /***/ ((module) => {
313655
314172
 
313656
314173
  "use strict";
313657
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.1.0-dev.47","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^6.0.1","source-map-loader":"^5.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.2.4","@itwin/object-storage-core":"^2.3.0","@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
314174
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.1.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 && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@types/sinon":"^17.0.2","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^6.0.1","sinon":"^17.0.2","source-map-loader":"^5.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.2.4","@itwin/object-storage-core":"^2.3.0","@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
313658
314175
 
313659
314176
  /***/ })
313660
314177