@itwin/core-common 5.16.0-dev.4 → 5.16.0-dev.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -113,7 +113,9 @@ export interface ImageMapLayerProps extends CommonMapLayerProps {
113
113
  accessKey?: MapLayerKey;
114
114
  /** @internal */
115
115
  modelId?: never;
116
- /** List of query parameters that will get appended to the source.
116
+ /** Non-secret query parameters appended to every request made for the layer, persisted with it.
117
+ * Secrets must never be placed here; the hosting application injects them per session through a fetch handler
118
+ * (see `MapLayerFormatRegistry.addMapLayerFetchHandler` in `@itwin/core-frontend`).
117
119
  * @beta
118
120
  */
119
121
  queryParams?: {
@@ -210,14 +212,28 @@ export declare class ImageMapLayerSettings extends MapLayerSettings {
210
212
  userName?: string;
211
213
  password?: string;
212
214
  accessKey?: MapLayerKey;
213
- /** List of query parameters to append to the settings URL and persisted as part of the JSON representation.
214
- * @note Sensitive information like user credentials should be provided in [[unsavedQueryParams]] to ensure it is never persisted.
215
+ /** Former name of [[queryParams]], which stores the value; retained as the backing field so existing subclasses
216
+ * and `delete` keep working.
217
+ * @deprecated in 5.16. Use [[queryParams]].
215
218
  * @beta
216
219
  */
217
220
  savedQueryParams?: {
218
221
  [key: string]: string;
219
222
  };
223
+ /** Non-secret query parameters appended to every request made for the layer, persisted as part of the JSON
224
+ * representation ([[ImageMapLayerProps.queryParams]]). Secrets must never be placed here; the hosting application
225
+ * injects them per session through a fetch handler (see `MapLayerFormatRegistry.addMapLayerFetchHandler` in
226
+ * `@itwin/core-frontend`), which also protects them against leaking through redirects.
227
+ * @beta
228
+ */
229
+ get queryParams(): {
230
+ [key: string]: string;
231
+ } | undefined;
232
+ set queryParams(value: {
233
+ [key: string]: string;
234
+ } | undefined);
220
235
  /** List of query parameters that will get appended to the settings URL that should *not* be be persisted part of the JSON representation.
236
+ * @deprecated in 5.16. Register a fetch handler (`MapLayerFormatRegistry.addMapLayerFetchHandler` in `@itwin/core-frontend`) to inject secret or per-session parameters, which unlike this field are protected against leaking through redirects; use [[queryParams]] for non-secret parameters.
221
237
  * @beta
222
238
  */
223
239
  unsavedQueryParams?: {
@@ -255,9 +271,10 @@ export declare class ImageMapLayerSettings extends MapLayerSettings {
255
271
  /** @internal */
256
272
  protected static mapTypeName(type: BackgroundMapType): "Aerial Imagery" | "Aerial Imagery with labels" | "Streets";
257
273
  setCredentials(userName?: string, password?: string): void;
258
- /** Collect all query parameters
259
- * @beta
260
- */
274
+ /** The query parameters actually sent with requests: [[queryParams]] overlaid with the deprecated `unsavedQueryParams`
275
+ * (a key present in both takes the latter's value). Equals a copy of [[queryParams]] once `unsavedQueryParams` is removed.
276
+ * @beta
277
+ */
261
278
  collectQueryParams(): {
262
279
  [key: string]: string;
263
280
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerSettings.d.ts","sourceRoot":"","sources":["../../src/MapLayerSettings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MapLayerSettings.d.ts","sourceRoot":"","sources":["../../src/MapLayerSettings.ts"],"names":[],"mappings":"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"}
@@ -162,12 +162,24 @@ class ImageMapLayerSettings extends MapLayerSettings {
162
162
  userName;
163
163
  password;
164
164
  accessKey;
165
- /** List of query parameters to append to the settings URL and persisted as part of the JSON representation.
166
- * @note Sensitive information like user credentials should be provided in [[unsavedQueryParams]] to ensure it is never persisted.
165
+ /** Former name of [[queryParams]], which stores the value; retained as the backing field so existing subclasses
166
+ * and `delete` keep working.
167
+ * @deprecated in 5.16. Use [[queryParams]].
167
168
  * @beta
168
169
  */
169
170
  savedQueryParams;
171
+ /** Non-secret query parameters appended to every request made for the layer, persisted as part of the JSON
172
+ * representation ([[ImageMapLayerProps.queryParams]]). Secrets must never be placed here; the hosting application
173
+ * injects them per session through a fetch handler (see `MapLayerFormatRegistry.addMapLayerFetchHandler` in
174
+ * `@itwin/core-frontend`), which also protects them against leaking through redirects.
175
+ * @beta
176
+ */
177
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- the deprecated field is the storage until its removal.
178
+ get queryParams() { return this.savedQueryParams; }
179
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
180
+ set queryParams(value) { this.savedQueryParams = value; }
170
181
  /** List of query parameters that will get appended to the settings URL that should *not* be be persisted part of the JSON representation.
182
+ * @deprecated in 5.16. Register a fetch handler (`MapLayerFormatRegistry.addMapLayerFetchHandler` in `@itwin/core-frontend`) to inject secret or per-session parameters, which unlike this field are protected against leaking through redirects; use [[queryParams]] for non-secret parameters.
171
183
  * @beta
172
184
  */
173
185
  unsavedQueryParams;
@@ -185,7 +197,7 @@ class ImageMapLayerSettings extends MapLayerSettings {
185
197
  this.url = props.url;
186
198
  this.accessKey = props.accessKey;
187
199
  if (props.queryParams) {
188
- this.savedQueryParams = { ...props.queryParams };
200
+ this.queryParams = { ...props.queryParams };
189
201
  }
190
202
  if (props.properties) {
191
203
  this.properties = { ...props.properties };
@@ -209,8 +221,8 @@ class ImageMapLayerSettings extends MapLayerSettings {
209
221
  props.formatId = this.formatId;
210
222
  if (this.subLayers.length > 0)
211
223
  props.subLayers = this.subLayers.map((x) => x.toJSON());
212
- if (this.savedQueryParams)
213
- props.queryParams = { ...this.savedQueryParams };
224
+ if (this.queryParams)
225
+ props.queryParams = { ...this.queryParams };
214
226
  if (this.properties) {
215
227
  props.properties = structuredClone(this.properties);
216
228
  }
@@ -225,10 +237,10 @@ class ImageMapLayerSettings extends MapLayerSettings {
225
237
  // Clone members not part of MapLayerProps
226
238
  clone.userName = this.userName;
227
239
  clone.password = this.password;
240
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.
228
241
  if (this.unsavedQueryParams)
242
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
229
243
  clone.unsavedQueryParams = { ...this.unsavedQueryParams };
230
- if (this.savedQueryParams)
231
- clone.savedQueryParams = { ...this.savedQueryParams };
232
244
  return clone;
233
245
  }
234
246
  /** @internal */
@@ -241,8 +253,8 @@ class ImageMapLayerSettings extends MapLayerSettings {
241
253
  if (changedProps.queryParams) {
242
254
  props.queryParams = { ...changedProps.queryParams };
243
255
  }
244
- else if (this.savedQueryParams) {
245
- props.queryParams = { ...this.savedQueryParams };
256
+ else if (this.queryParams) {
257
+ props.queryParams = { ...this.queryParams };
246
258
  }
247
259
  if (changedProps.properties) {
248
260
  props.properties = { ...changedProps.properties };
@@ -318,14 +330,17 @@ class ImageMapLayerSettings extends MapLayerSettings {
318
330
  this.userName = userName;
319
331
  this.password = password;
320
332
  }
321
- /** Collect all query parameters
322
- * @beta
323
- */
333
+ /** The query parameters actually sent with requests: [[queryParams]] overlaid with the deprecated `unsavedQueryParams`
334
+ * (a key present in both takes the latter's value). Equals a copy of [[queryParams]] once `unsavedQueryParams` is removed.
335
+ * @beta
336
+ */
324
337
  collectQueryParams() {
325
338
  let queryParams = {};
326
- if (this.savedQueryParams)
327
- queryParams = { ...this.savedQueryParams };
339
+ if (this.queryParams)
340
+ queryParams = { ...this.queryParams };
341
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.
328
342
  if (this.unsavedQueryParams)
343
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
329
344
  queryParams = { ...queryParams, ...this.unsavedQueryParams };
330
345
  return queryParams;
331
346
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerSettings.js","sourceRoot":"","sources":["../../src/MapLayerSettings.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MapLayers\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { BackgroundMapProvider, BackgroundMapProviderProps, BackgroundMapType } from \"./BackgroundMapProvider\";\r\nimport { DeprecatedBackgroundMapProps } from \"./BackgroundMapSettings\";\r\n\r\n/** The current set of supported map layer formats.\r\n * In order to be displayed, a corresponding format must have been registered in the [MapLayerFormatRegistry]($frontend)\r\n * @public\r\n */\r\nexport type ImageryMapLayerFormatId = \"ArcGIS\" | \"BingMaps\" | \"MapboxImagery\" | \"TileURL\" | \"WMS\" | \"WMTS\";\r\n\r\n/** @public */\r\nexport type SubLayerId = string | number;\r\n\r\n/**\r\n * Type for map layer provider array property.\r\n * @beta\r\n */\r\nexport type MapLayerProviderArrayProperty = number[] | string[] | boolean[];\r\n\r\n/**\r\n * Type for map layer provider properties.\r\n * @beta\r\n */\r\nexport interface MapLayerProviderProperties { [key: string]: number | string | boolean | MapLayerProviderArrayProperty };\r\n\r\n/** JSON representation of the settings associated with a map sublayer included within a [[MapLayerProps]].\r\n * A map sub layer represents a set of objects within the layer that can be controlled separately. These\r\n * are produced only from map servers that produce images on demand and are not supported by tiled (cached) servers.\r\n * @see [[MapLayerProps]]\r\n * @public\r\n */\r\nexport interface MapSubLayerProps {\r\n name: string;\r\n title?: string;\r\n visible?: boolean;\r\n id?: SubLayerId;\r\n parent?: SubLayerId;\r\n children?: SubLayerId[];\r\n}\r\n\r\n/** Normalized representation of a [[MapSubLayerProps]] for which values\r\n * have been validated and default values have been applied where explicit values not defined.\r\n * A map sub layer represents a set of objects within the layer that can be controlled separately. These\r\n * are produced only from map servers that produce images on demand and are not supported by tiled (cached) servers.\r\n * This class can represent a hierarchy, in this case a sub layer is visible only if all its ancestors are also visible.\r\n * @see [[MapLayerSettings]]\r\n * @public\r\n */\r\nexport class MapSubLayerSettings {\r\n /** Typically Name is a single word used for machine-to-machine communication while the Title is for the benefit of humans (WMS) */\r\n public readonly name: string;\r\n /** Title. */\r\n public readonly title?: string;\r\n /** If true the sub layer is visible. If part of a hierarchy, a sub layer is visible only if its ancestors are also visible. */\r\n public readonly visible: boolean;\r\n /** A unique string or number that may be used to identify the sub layer (ArcGIS) */\r\n public readonly id: SubLayerId;\r\n /** One or more sublayer children */\r\n public readonly children?: SubLayerId[];\r\n /** sublayer parent. */\r\n public readonly parent?: SubLayerId;\r\n\r\n constructor(name: string, title?: string, visible?: boolean, id?: SubLayerId, parent?: SubLayerId, children?: SubLayerId[]) {\r\n this.name = name;\r\n this.title = title;\r\n this.visible = visible !== undefined && visible;\r\n this.id = (id === undefined) ? this.name : id;\r\n this.parent = parent;\r\n this.children = children;\r\n }\r\n\r\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\r\n public static fromJSON(json: MapSubLayerProps): MapSubLayerSettings {\r\n return new MapSubLayerSettings(json.name, json.title, json.visible, (json.id === json.name) ? undefined : json.id, json.parent, json.children);\r\n }\r\n\r\n public toJSON(): MapSubLayerProps {\r\n const props: MapSubLayerProps = { name: this.name, visible: this.visible };\r\n\r\n if (undefined !== this.id && this.id !== this.name)\r\n props.id = this.id;\r\n\r\n if (undefined !== this.title)\r\n props.title = this.title;\r\n\r\n if (this.children)\r\n props.children = [...this.children];\r\n\r\n if (undefined !== this.parent)\r\n props.parent = this.parent;\r\n\r\n return props;\r\n }\r\n\r\n /** Creating a copy of this MapSubLayer, optionally modifying some if its properties */\r\n public clone(changedProps: Partial<MapSubLayerProps>): MapSubLayerSettings {\r\n if (undefined === changedProps)\r\n return this;\r\n\r\n const props = {\r\n name: undefined !== changedProps.name ? changedProps.name : this.name,\r\n id: undefined !== changedProps.id ? changedProps.id : this.id,\r\n visible: undefined !== changedProps.visible ? changedProps.visible : this.visible,\r\n parent: undefined !== changedProps.parent ? changedProps.parent : this.parent,\r\n children: undefined !== changedProps.children ? changedProps.children.slice() : this.children?.slice(),\r\n title: undefined !== changedProps.title ? changedProps.title : this.title,\r\n };\r\n return MapSubLayerSettings.fromJSON(props);\r\n }\r\n\r\n /** @internal */\r\n public displayMatches(other: MapSubLayerSettings): boolean {\r\n return this.name === other.name && this.visible === other.visible;\r\n }\r\n\r\n /** return true if this sublayer is named. */\r\n public get isNamed(): boolean { return this.name.length > 0; }\r\n\r\n /** return true if this sublayer is a leaf (has no children) */\r\n public get isLeaf(): boolean { return this.children === undefined || this.children.length === 0; }\r\n\r\n /** return true if this sublayer is an unnamed group */\r\n public get isUnnamedGroup(): boolean { return !this.isLeaf && !this.isNamed; }\r\n\r\n /** return a string representing this sublayer id (converting to string if underlying id is number) */\r\n public get idString(): string { return (typeof this.id === \"number\") ? this.id.toString(10) : this.id; }\r\n}\r\n\r\n/** JSON representation of properties common to both [[ImageMapLayerProps]] and [[ModelMapLayerProps]].\r\n * @see [[MapImageryProps]]\r\n * @public\r\n */\r\nexport interface CommonMapLayerProps {\r\n /** Controls visibility of layer. Defaults to 'true'. */\r\n visible?: boolean;\r\n\r\n /** A user-friendly name for the layer. */\r\n name: string;\r\n\r\n /** A transparency value from 0.0 (fully opaque) to 1.0 (fully transparent) to apply to map graphics when drawing,\r\n * or false to indicate the transparency should not be overridden.\r\n * Default value: 0.\r\n */\r\n\r\n transparency?: number;\r\n /** True to indicate background is transparent.\r\n * Default: true.\r\n */\r\n transparentBackground?: boolean;\r\n}\r\n\r\n/** JSON representation of an [[ImageMapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @see [[ImageryMapLayerFormatId]].\r\n * @public\r\n */\r\nexport interface ImageMapLayerProps extends CommonMapLayerProps {\r\n /** URL */\r\n url: string;\r\n /** Identifies the map layers source.*/\r\n formatId: string;\r\n /** Source layers. If undefined all layers are displayed. */\r\n subLayers?: MapSubLayerProps[];\r\n /** Access Key for the Layer, like a subscription key or access token.\r\n * ###TODO This does not belong in the props object. It should never be persisted.\r\n */\r\n /** @internal */\r\n accessKey?: MapLayerKey;\r\n\r\n /** @internal */\r\n modelId?: never;\r\n\r\n /** List of query parameters that will get appended to the source.\r\n * @beta\r\n */\r\n queryParams?: { [key: string]: string };\r\n\r\n /** Properties specific to the map layer provider.\r\n * @beta\r\n */\r\n properties?: MapLayerProviderProperties;\r\n\r\n}\r\n\r\n/** The target onto which to drape a model map layer.\r\n * @beta\r\n */\r\nexport enum ModelMapLayerDrapeTarget {\r\n /** Drape only onto the globe. */\r\n Globe = 1 << 0,\r\n /** Drape only onto all attached reality data. */\r\n RealityData = 1 << 1,\r\n /** Drape only onto all models within the iModel. */\r\n IModel = 1 << 2,\r\n}\r\n\r\n/** JSON representation of a [[ModelMapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @public\r\n */\r\nexport interface ModelMapLayerProps extends CommonMapLayerProps {\r\n /** The Id of the [GeometricModel]($backend) containing the geometry to be drawn by the layer. */\r\n modelId: Id64String;\r\n /** Specifies the target onto which to drape this model map layer. Defaults to [ModelMapLayerDrapeTarget.Globe]($common).\r\n * @beta\r\n */\r\n drapeTarget?: ModelMapLayerDrapeTarget;\r\n /** @internal */\r\n url?: never;\r\n /** @internal */\r\n formatId?: never;\r\n /** @internal */\r\n subLayers?: never;\r\n /** @internal */\r\n accessKey?: never;\r\n}\r\n\r\n/** JSON representation of a [[MapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @public\r\n */\r\nexport type MapLayerProps = ImageMapLayerProps | ModelMapLayerProps;\r\n\r\n/**\r\n * stores key-value pair to be added to all requests made involving map layer.\r\n * @public\r\n */\r\nexport interface MapLayerKey {\r\n key: string;\r\n value: string;\r\n}\r\n\r\n/** Abstract base class for normalized representation of a [[MapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * This class is extended by [[ImageMapLayerSettings]] and [[ModelMapLayerSettings]] to create the settings for image and model based layers.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @public\r\n */\r\nexport abstract class MapLayerSettings {\r\n public readonly visible: boolean;\r\n\r\n public readonly name: string;\r\n public readonly transparency: number;\r\n public readonly transparentBackground: boolean;\r\n public abstract get allSubLayersInvisible(): boolean;\r\n public abstract clone(changedProps: Partial<MapLayerProps>): MapLayerSettings;\r\n public abstract toJSON(): MapLayerProps;\r\n\r\n /** @internal */\r\n protected constructor(name: string, visible = true, transparency: number = 0, transparentBackground = true) {\r\n this.name = name;\r\n this.visible = visible;\r\n this.transparentBackground = transparentBackground;\r\n this.transparency = transparency;\r\n }\r\n\r\n /** Create a map layer settings from its JSON representation. */\r\n public static fromJSON(props: MapLayerProps): MapLayerSettings {\r\n return undefined !== props.modelId ? ModelMapLayerSettings.fromJSON(props) : ImageMapLayerSettings.fromJSON(props);\r\n }\r\n\r\n /** @internal */\r\n protected _toJSON(): CommonMapLayerProps {\r\n const props: CommonMapLayerProps = {\r\n name: this.name,\r\n visible: this.visible,\r\n };\r\n\r\n if (0 !== this.transparency)\r\n props.transparency = this.transparency;\r\n\r\n if (this.transparentBackground === false)\r\n props.transparentBackground = this.transparentBackground;\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n protected cloneProps(changedProps: Partial<MapLayerProps>): CommonMapLayerProps {\r\n return {\r\n name: undefined !== changedProps.name ? changedProps.name : this.name,\r\n visible: undefined !== changedProps.visible ? changedProps.visible : this.visible,\r\n transparency: undefined !== changedProps.transparency ? changedProps.transparency : this.transparency,\r\n transparentBackground: undefined !== changedProps.transparentBackground ? changedProps.transparentBackground : this.transparentBackground,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public displayMatches(other: MapLayerSettings): boolean {\r\n return this.name === other.name && this.visible === other.visible && this.transparency === other.transparency && this.transparentBackground === other.transparentBackground;\r\n }\r\n\r\n /** Return a unique string identifying the layers source... The URL for image layer or modelID for model layer */\r\n public abstract get source(): string;\r\n\r\n /** @internal */\r\n public matchesNameAndSource(name: string, source: string): boolean {\r\n return this.name === name && this.source === source;\r\n }\r\n}\r\n\r\n/** Normalized representation of a [[ImageMapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * Image map layers are created from servers that produce images that represent map tiles. Map layers map also be represented by models.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @see [[ModelMapLayerSettings]] for model based map layer settings.\r\n * @public\r\n */\r\nexport class ImageMapLayerSettings extends MapLayerSettings {\r\n public readonly formatId: string;\r\n public readonly url: string;\r\n public userName?: string;\r\n public password?: string;\r\n public accessKey?: MapLayerKey;\r\n\r\n /** List of query parameters to append to the settings URL and persisted as part of the JSON representation.\r\n * @note Sensitive information like user credentials should be provided in [[unsavedQueryParams]] to ensure it is never persisted.\r\n * @beta\r\n */\r\n public savedQueryParams?: { [key: string]: string };\r\n\r\n /** List of query parameters that will get appended to the settings URL that should *not* be be persisted part of the JSON representation.\r\n * @beta\r\n */\r\n public unsavedQueryParams?: { [key: string]: string };\r\n\r\n /** Properties specific to the map layer provider.\r\n * @beta\r\n */\r\n public readonly properties?: MapLayerProviderProperties;\r\n\r\n public readonly subLayers: MapSubLayerSettings[];\r\n public override get source(): string { return this.url; }\r\n\r\n /** @internal */\r\n protected constructor(props: ImageMapLayerProps) {\r\n const transparentBackground = props.transparentBackground ?? true;\r\n super(props.name, props.visible, props.transparency, transparentBackground);\r\n\r\n this.formatId = props.formatId;\r\n this.url = props.url;\r\n this.accessKey = props.accessKey;\r\n if (props.queryParams) {\r\n this.savedQueryParams = {...props.queryParams};\r\n }\r\n\r\n if (props.properties) {\r\n this.properties = {...props.properties}\r\n }\r\n\r\n this.subLayers = [];\r\n if (!props.subLayers)\r\n return;\r\n\r\n for (const subLayerProps of props.subLayers) {\r\n const subLayer = MapSubLayerSettings.fromJSON(subLayerProps);\r\n if (subLayer)\r\n this.subLayers.push(subLayer);\r\n }\r\n }\r\n\r\n public static override fromJSON(props: ImageMapLayerProps): ImageMapLayerSettings {\r\n return new this(props);\r\n }\r\n\r\n /** return JSON representation of this MapLayerSettings object */\r\n public override toJSON(): ImageMapLayerProps {\r\n const props = super._toJSON() as ImageMapLayerProps;\r\n props.url = this.url;\r\n props.formatId = this.formatId;\r\n\r\n if (this.subLayers.length > 0)\r\n props.subLayers = this.subLayers.map((x) => x.toJSON());\r\n\r\n if (this.savedQueryParams)\r\n props.queryParams = {...this.savedQueryParams};\r\n\r\n if (this.properties) {\r\n props.properties = structuredClone(this.properties);\r\n }\r\n\r\n return props;\r\n }\r\n\r\n /** Create a copy of this MapLayerSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A MapLayerSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps: Partial<ImageMapLayerProps>): ImageMapLayerSettings {\r\n const clone = ImageMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n\r\n // Clone members not part of MapLayerProps\r\n clone.userName = this.userName;\r\n clone.password = this.password;\r\n if (this.unsavedQueryParams)\r\n clone.unsavedQueryParams = {...this.unsavedQueryParams};\r\n if (this.savedQueryParams)\r\n clone.savedQueryParams = {...this.savedQueryParams};\r\n\r\n return clone;\r\n }\r\n\r\n /** @internal */\r\n protected override cloneProps(changedProps: Partial<ImageMapLayerProps>): ImageMapLayerProps {\r\n const props = super.cloneProps(changedProps) as ImageMapLayerProps;\r\n\r\n props.formatId = changedProps.formatId ?? this.formatId;\r\n props.url = changedProps.url ?? this.url;\r\n props.accessKey = changedProps.accessKey ?? this.accessKey;\r\n props.subLayers = changedProps.subLayers ?? this.subLayers;\r\n if (changedProps.queryParams) {\r\n props.queryParams = {...changedProps.queryParams};\r\n } else if (this.savedQueryParams) {\r\n props.queryParams = {...this.savedQueryParams};\r\n }\r\n\r\n if (changedProps.properties) {\r\n props.properties = {...changedProps.properties}\r\n } else if (this.properties) {\r\n props.properties = {...this.properties}\r\n }\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override displayMatches(other: MapLayerSettings): boolean {\r\n if (! (other instanceof ImageMapLayerSettings) || !super.displayMatches(other))\r\n return false;\r\n\r\n if (this.userName !== other.userName || this.password !== other.password || this.subLayers.length !== other.subLayers.length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < this.subLayers.length; i++)\r\n if (!this.subLayers[i].displayMatches(other.subLayers[i]))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n /** Return a sublayer matching id -- or undefined if not found */\r\n public subLayerById(id?: SubLayerId): MapSubLayerSettings | undefined {\r\n return id === undefined ? undefined : this.subLayers.find((subLayer) => subLayer.id === id);\r\n }\r\n\r\n private hasInvisibleAncestors(subLayer?: MapSubLayerSettings): boolean {\r\n if (!subLayer || !subLayer.parent)\r\n return false;\r\n\r\n const parent = this.subLayerById(subLayer.parent);\r\n if (!parent)\r\n return false;\r\n\r\n // Visibility of named group has no impact on the visibility of children (only unnamed group does)\r\n // i.e For WMS, its should be possible to request a child layer when its parent is not visible (if the parent is also named)\r\n return (!parent.visible && !parent.isNamed) || this.hasInvisibleAncestors(parent);\r\n }\r\n\r\n /** Return true if sublayer is visible -- testing ancestors for visibility if they exist. */\r\n public isSubLayerVisible(subLayer: MapSubLayerSettings): boolean {\r\n if (!subLayer.visible)\r\n return false;\r\n\r\n return !this.hasInvisibleAncestors(subLayer);\r\n }\r\n\r\n /** Return true if all sublayers are invisible. */\r\n public get allSubLayersInvisible(): boolean {\r\n if (this.subLayers.length === 0)\r\n return false;\r\n\r\n return this.subLayers.every((subLayer) => (subLayer.isUnnamedGroup || !this.isSubLayerVisible(subLayer)));\r\n }\r\n\r\n /** Return the children for a sublayer */\r\n public getSubLayerChildren(subLayer: MapSubLayerSettings): MapSubLayerSettings[] | undefined {\r\n if (!subLayer.children)\r\n return undefined;\r\n\r\n const children = new Array<MapSubLayerSettings>();\r\n subLayer.children.forEach((childId) => {\r\n const child = this.subLayerById(childId);\r\n if (child !== undefined)\r\n children.push(child);\r\n });\r\n\r\n return children;\r\n }\r\n\r\n /** @internal */\r\n protected static mapTypeName(type: BackgroundMapType) { // TBD.. Localization.\r\n switch (type) {\r\n case BackgroundMapType.Aerial:\r\n return \"Aerial Imagery\";\r\n default:\r\n case BackgroundMapType.Hybrid:\r\n return \"Aerial Imagery with labels\";\r\n case BackgroundMapType.Street:\r\n return \"Streets\";\r\n }\r\n }\r\n\r\n public setCredentials(userName?: string, password?: string) {\r\n this.userName = userName;\r\n this.password = password;\r\n }\r\n\r\n /** Collect all query parameters\r\n * @beta\r\n */\r\n public collectQueryParams() {\r\n let queryParams: {[key: string]: string} = {};\r\n if (this.savedQueryParams)\r\n queryParams = {...this.savedQueryParams};\r\n\r\n if (this.unsavedQueryParams)\r\n queryParams = {...queryParams, ...this.unsavedQueryParams};\r\n\r\n return queryParams;\r\n }\r\n}\r\n\r\n/** Normalized representation of a [[ModelMapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * Model map layers are produced from models, typically from two dimensional geometry that may originate in a GIS system.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @see [[ImageMapLayerSettings]] for image based map layer settings.\r\n * @public\r\n */\r\nexport class ModelMapLayerSettings extends MapLayerSettings {\r\n /** Specifies the target onto which to drape this model map layer. Defaults to [ModelMapLayerDrapeTarget.Globe]($common).\r\n * @beta\r\n */\r\n public readonly drapeTarget: ModelMapLayerDrapeTarget;\r\n public readonly modelId: Id64String;\r\n public override get source(): string { return this.modelId; }\r\n\r\n /** @internal */\r\n protected constructor(modelId: Id64String, name: string, visible = true,\r\n transparency: number = 0, transparentBackground = true, drapeTarget = ModelMapLayerDrapeTarget.Globe) {\r\n super(name, visible, transparency, transparentBackground);\r\n this.modelId = modelId;\r\n this.drapeTarget = drapeTarget;\r\n }\r\n\r\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\r\n public static override fromJSON(json: ModelMapLayerProps): ModelMapLayerSettings {\r\n const transparentBackground = (json.transparentBackground === undefined) ? true : json.transparentBackground;\r\n return new this(json.modelId, json.name, json.visible, json.transparency, transparentBackground, json.drapeTarget);\r\n }\r\n\r\n /** return JSON representation of this MapLayerSettings object */\r\n public override toJSON(): ModelMapLayerProps {\r\n const props = super._toJSON() as ModelMapLayerProps;\r\n props.modelId = this.modelId;\r\n if (this.drapeTarget !== ModelMapLayerDrapeTarget.Globe)\r\n props.drapeTarget = this.drapeTarget;\r\n return props;\r\n }\r\n\r\n /** Create a copy of this MapLayerSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A MapLayerSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps: Partial<ModelMapLayerProps>): ModelMapLayerSettings {\r\n return ModelMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n }\r\n\r\n /** @internal */\r\n protected override cloneProps(changedProps: Partial<ModelMapLayerProps>): ModelMapLayerProps {\r\n const props = super.cloneProps(changedProps) as ModelMapLayerProps;\r\n props.modelId = changedProps.modelId ?? this.modelId;\r\n props.drapeTarget = changedProps.drapeTarget ?? this.drapeTarget;\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override displayMatches(other: MapLayerSettings): boolean {\r\n if (!(other instanceof ModelMapLayerSettings) || !super.displayMatches(other))\r\n return false;\r\n\r\n return this.modelId === other.modelId;\r\n }\r\n\r\n /** Return true if all sublayers are invisible (always false as model layers do not include sublayers). */\r\n public get allSubLayersInvisible(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n/** JSON representation of a [[BaseMapLayerSettings]].\r\n * @public\r\n */\r\nexport interface BaseMapLayerProps extends ImageMapLayerProps {\r\n provider?: BackgroundMapProviderProps;\r\n}\r\n\r\n/** A [[ImageMapLayerSettings]] that can serve as the base layer for a [[MapImagerySettings]].\r\n * The base layer supports all of the same options as any other layer, but also allows for simplified configuration based\r\n * on a small set of known supported [[BackgroundMapProvider]]s like [Bing Maps](https://www.microsoft.com/en-us/maps).\r\n * If the base layer was configured from such a provider, that information will be preserved and can be queried; this allows\r\n * the imagery provider and/or type to be easily modified.\r\n * @see [[MapImagerySettings.backgroundBase]].\r\n * @public\r\n */\r\nexport class BaseMapLayerSettings extends ImageMapLayerSettings {\r\n private _provider?: BackgroundMapProvider;\r\n\r\n /** The provider from which this base layer was configured, if any. */\r\n public get provider(): BackgroundMapProvider | undefined { return this._provider; }\r\n\r\n /** Create a base layer from its JSON representation.\r\n * TODO: This, MapLayerSettings.fromJSON, and MapSubLayerSettings.fromJSON should never return undefined.\r\n * That means they should not accept undefined for props and should define props such that it fully describes the\r\n * layer - e.g., url and name must be defined.\r\n */\r\n public static override fromJSON(props: BaseMapLayerProps): BaseMapLayerSettings {\r\n const settings = super.fromJSON(props);\r\n assert(settings instanceof BaseMapLayerSettings);\r\n if (props.provider)\r\n settings._provider = BackgroundMapProvider.fromJSON(props.provider);\r\n\r\n return settings;\r\n }\r\n\r\n /** Convert this layer to its JSON representation. */\r\n public override toJSON(): BaseMapLayerProps {\r\n const props = super.toJSON() as BaseMapLayerProps;\r\n if (this.provider)\r\n props.provider = this.provider.toJSON();\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override cloneProps(changedProps: Partial<BaseMapLayerProps>): BaseMapLayerProps {\r\n const props = super.cloneProps(changedProps) as BaseMapLayerProps;\r\n\r\n if (changedProps.provider)\r\n props.provider = changedProps.provider;\r\n else if (this.provider)\r\n props.provider = this.provider.toJSON();\r\n\r\n return props;\r\n }\r\n\r\n /** Create a copy of this layer. */\r\n public override clone(changedProps: Partial<BaseMapLayerProps>): BaseMapLayerSettings {\r\n const prevUrl = this.url;\r\n const clone = BaseMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n\r\n if (this.provider && prevUrl !== this.url)\r\n clone._provider = undefined;\r\n\r\n return clone;\r\n }\r\n\r\n /** Create a base layer from a BackgroundMapProvider. */\r\n public static fromProvider(provider: BackgroundMapProvider, options?: { invisible?: boolean, transparency?: number }): BaseMapLayerSettings {\r\n let formatId: string, url: string, name: string;\r\n switch (provider.name) {\r\n case \"BingProvider\":\r\n default:\r\n formatId = \"BingMaps\";\r\n\r\n let imagerySet;\r\n switch (provider.type) {\r\n case BackgroundMapType.Street:\r\n imagerySet = \"Road\";\r\n break;\r\n case BackgroundMapType.Aerial:\r\n imagerySet = \"Aerial\";\r\n break;\r\n case BackgroundMapType.Hybrid:\r\n default:\r\n imagerySet = \"AerialWithLabels\";\r\n break;\r\n }\r\n\r\n name = `Bing Maps: ${ImageMapLayerSettings.mapTypeName(provider.type)}`;\r\n url = `https://dev.virtualearth.net/REST/v1/Imagery/Metadata/${imagerySet}?o=json&incl=ImageryProviders&key={bingKey}`;\r\n break;\r\n\r\n case \"MapBoxProvider\":\r\n formatId = \"MapboxImagery\";\r\n name = `MapBox: ${ImageMapLayerSettings.mapTypeName(provider.type)}`;\r\n switch (provider.type) {\r\n case BackgroundMapType.Street:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/\";\r\n break;\r\n case BackgroundMapType.Aerial:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/satellite-v9/tiles/\";\r\n break;\r\n case BackgroundMapType.Hybrid:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/satellite-streets-v11/tiles/\";\r\n break;\r\n }\r\n\r\n break;\r\n }\r\n\r\n const settings = super.fromJSON({\r\n name,\r\n formatId,\r\n url,\r\n transparentBackground: false,\r\n visible: !options?.invisible,\r\n transparency: options?.transparency,\r\n });\r\n\r\n assert(undefined !== settings);\r\n assert(settings instanceof BaseMapLayerSettings);\r\n\r\n settings._provider = provider;\r\n return settings;\r\n }\r\n\r\n /** @internal */\r\n public static fromBackgroundMapProps(props: DeprecatedBackgroundMapProps): BaseMapLayerSettings {\r\n return this.fromProvider(BackgroundMapProvider.fromBackgroundMapProps(props));\r\n }\r\n\r\n /** @alpha */\r\n public cloneWithProvider(provider: BackgroundMapProvider): BaseMapLayerSettings {\r\n return BaseMapLayerSettings.fromProvider(provider, { invisible: !this.visible, transparency: this.transparency });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapLayerSettings.js","sourceRoot":"","sources":["../../src/MapLayerSettings.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MapLayers\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { BackgroundMapProvider, BackgroundMapProviderProps, BackgroundMapType } from \"./BackgroundMapProvider\";\r\nimport { DeprecatedBackgroundMapProps } from \"./BackgroundMapSettings\";\r\n\r\n/** The current set of supported map layer formats.\r\n * In order to be displayed, a corresponding format must have been registered in the [MapLayerFormatRegistry]($frontend)\r\n * @public\r\n */\r\nexport type ImageryMapLayerFormatId = \"ArcGIS\" | \"BingMaps\" | \"MapboxImagery\" | \"TileURL\" | \"WMS\" | \"WMTS\";\r\n\r\n/** @public */\r\nexport type SubLayerId = string | number;\r\n\r\n/**\r\n * Type for map layer provider array property.\r\n * @beta\r\n */\r\nexport type MapLayerProviderArrayProperty = number[] | string[] | boolean[];\r\n\r\n/**\r\n * Type for map layer provider properties.\r\n * @beta\r\n */\r\nexport interface MapLayerProviderProperties { [key: string]: number | string | boolean | MapLayerProviderArrayProperty };\r\n\r\n/** JSON representation of the settings associated with a map sublayer included within a [[MapLayerProps]].\r\n * A map sub layer represents a set of objects within the layer that can be controlled separately. These\r\n * are produced only from map servers that produce images on demand and are not supported by tiled (cached) servers.\r\n * @see [[MapLayerProps]]\r\n * @public\r\n */\r\nexport interface MapSubLayerProps {\r\n name: string;\r\n title?: string;\r\n visible?: boolean;\r\n id?: SubLayerId;\r\n parent?: SubLayerId;\r\n children?: SubLayerId[];\r\n}\r\n\r\n/** Normalized representation of a [[MapSubLayerProps]] for which values\r\n * have been validated and default values have been applied where explicit values not defined.\r\n * A map sub layer represents a set of objects within the layer that can be controlled separately. These\r\n * are produced only from map servers that produce images on demand and are not supported by tiled (cached) servers.\r\n * This class can represent a hierarchy, in this case a sub layer is visible only if all its ancestors are also visible.\r\n * @see [[MapLayerSettings]]\r\n * @public\r\n */\r\nexport class MapSubLayerSettings {\r\n /** Typically Name is a single word used for machine-to-machine communication while the Title is for the benefit of humans (WMS) */\r\n public readonly name: string;\r\n /** Title. */\r\n public readonly title?: string;\r\n /** If true the sub layer is visible. If part of a hierarchy, a sub layer is visible only if its ancestors are also visible. */\r\n public readonly visible: boolean;\r\n /** A unique string or number that may be used to identify the sub layer (ArcGIS) */\r\n public readonly id: SubLayerId;\r\n /** One or more sublayer children */\r\n public readonly children?: SubLayerId[];\r\n /** sublayer parent. */\r\n public readonly parent?: SubLayerId;\r\n\r\n constructor(name: string, title?: string, visible?: boolean, id?: SubLayerId, parent?: SubLayerId, children?: SubLayerId[]) {\r\n this.name = name;\r\n this.title = title;\r\n this.visible = visible !== undefined && visible;\r\n this.id = (id === undefined) ? this.name : id;\r\n this.parent = parent;\r\n this.children = children;\r\n }\r\n\r\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\r\n public static fromJSON(json: MapSubLayerProps): MapSubLayerSettings {\r\n return new MapSubLayerSettings(json.name, json.title, json.visible, (json.id === json.name) ? undefined : json.id, json.parent, json.children);\r\n }\r\n\r\n public toJSON(): MapSubLayerProps {\r\n const props: MapSubLayerProps = { name: this.name, visible: this.visible };\r\n\r\n if (undefined !== this.id && this.id !== this.name)\r\n props.id = this.id;\r\n\r\n if (undefined !== this.title)\r\n props.title = this.title;\r\n\r\n if (this.children)\r\n props.children = [...this.children];\r\n\r\n if (undefined !== this.parent)\r\n props.parent = this.parent;\r\n\r\n return props;\r\n }\r\n\r\n /** Creating a copy of this MapSubLayer, optionally modifying some if its properties */\r\n public clone(changedProps: Partial<MapSubLayerProps>): MapSubLayerSettings {\r\n if (undefined === changedProps)\r\n return this;\r\n\r\n const props = {\r\n name: undefined !== changedProps.name ? changedProps.name : this.name,\r\n id: undefined !== changedProps.id ? changedProps.id : this.id,\r\n visible: undefined !== changedProps.visible ? changedProps.visible : this.visible,\r\n parent: undefined !== changedProps.parent ? changedProps.parent : this.parent,\r\n children: undefined !== changedProps.children ? changedProps.children.slice() : this.children?.slice(),\r\n title: undefined !== changedProps.title ? changedProps.title : this.title,\r\n };\r\n return MapSubLayerSettings.fromJSON(props);\r\n }\r\n\r\n /** @internal */\r\n public displayMatches(other: MapSubLayerSettings): boolean {\r\n return this.name === other.name && this.visible === other.visible;\r\n }\r\n\r\n /** return true if this sublayer is named. */\r\n public get isNamed(): boolean { return this.name.length > 0; }\r\n\r\n /** return true if this sublayer is a leaf (has no children) */\r\n public get isLeaf(): boolean { return this.children === undefined || this.children.length === 0; }\r\n\r\n /** return true if this sublayer is an unnamed group */\r\n public get isUnnamedGroup(): boolean { return !this.isLeaf && !this.isNamed; }\r\n\r\n /** return a string representing this sublayer id (converting to string if underlying id is number) */\r\n public get idString(): string { return (typeof this.id === \"number\") ? this.id.toString(10) : this.id; }\r\n}\r\n\r\n/** JSON representation of properties common to both [[ImageMapLayerProps]] and [[ModelMapLayerProps]].\r\n * @see [[MapImageryProps]]\r\n * @public\r\n */\r\nexport interface CommonMapLayerProps {\r\n /** Controls visibility of layer. Defaults to 'true'. */\r\n visible?: boolean;\r\n\r\n /** A user-friendly name for the layer. */\r\n name: string;\r\n\r\n /** A transparency value from 0.0 (fully opaque) to 1.0 (fully transparent) to apply to map graphics when drawing,\r\n * or false to indicate the transparency should not be overridden.\r\n * Default value: 0.\r\n */\r\n\r\n transparency?: number;\r\n /** True to indicate background is transparent.\r\n * Default: true.\r\n */\r\n transparentBackground?: boolean;\r\n}\r\n\r\n/** JSON representation of an [[ImageMapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @see [[ImageryMapLayerFormatId]].\r\n * @public\r\n */\r\nexport interface ImageMapLayerProps extends CommonMapLayerProps {\r\n /** URL */\r\n url: string;\r\n /** Identifies the map layers source.*/\r\n formatId: string;\r\n /** Source layers. If undefined all layers are displayed. */\r\n subLayers?: MapSubLayerProps[];\r\n /** Access Key for the Layer, like a subscription key or access token.\r\n * ###TODO This does not belong in the props object. It should never be persisted.\r\n */\r\n /** @internal */\r\n accessKey?: MapLayerKey;\r\n\r\n /** @internal */\r\n modelId?: never;\r\n\r\n /** Non-secret query parameters appended to every request made for the layer, persisted with it.\r\n * Secrets must never be placed here; the hosting application injects them per session through a fetch handler\r\n * (see `MapLayerFormatRegistry.addMapLayerFetchHandler` in `@itwin/core-frontend`).\r\n * @beta\r\n */\r\n queryParams?: { [key: string]: string };\r\n\r\n /** Properties specific to the map layer provider.\r\n * @beta\r\n */\r\n properties?: MapLayerProviderProperties;\r\n\r\n}\r\n\r\n/** The target onto which to drape a model map layer.\r\n * @beta\r\n */\r\nexport enum ModelMapLayerDrapeTarget {\r\n /** Drape only onto the globe. */\r\n Globe = 1 << 0,\r\n /** Drape only onto all attached reality data. */\r\n RealityData = 1 << 1,\r\n /** Drape only onto all models within the iModel. */\r\n IModel = 1 << 2,\r\n}\r\n\r\n/** JSON representation of a [[ModelMapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @public\r\n */\r\nexport interface ModelMapLayerProps extends CommonMapLayerProps {\r\n /** The Id of the [GeometricModel]($backend) containing the geometry to be drawn by the layer. */\r\n modelId: Id64String;\r\n /** Specifies the target onto which to drape this model map layer. Defaults to [ModelMapLayerDrapeTarget.Globe]($common).\r\n * @beta\r\n */\r\n drapeTarget?: ModelMapLayerDrapeTarget;\r\n /** @internal */\r\n url?: never;\r\n /** @internal */\r\n formatId?: never;\r\n /** @internal */\r\n subLayers?: never;\r\n /** @internal */\r\n accessKey?: never;\r\n}\r\n\r\n/** JSON representation of a [[MapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @public\r\n */\r\nexport type MapLayerProps = ImageMapLayerProps | ModelMapLayerProps;\r\n\r\n/**\r\n * stores key-value pair to be added to all requests made involving map layer.\r\n * @public\r\n */\r\nexport interface MapLayerKey {\r\n key: string;\r\n value: string;\r\n}\r\n\r\n/** Abstract base class for normalized representation of a [[MapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * This class is extended by [[ImageMapLayerSettings]] and [[ModelMapLayerSettings]] to create the settings for image and model based layers.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @public\r\n */\r\nexport abstract class MapLayerSettings {\r\n public readonly visible: boolean;\r\n\r\n public readonly name: string;\r\n public readonly transparency: number;\r\n public readonly transparentBackground: boolean;\r\n public abstract get allSubLayersInvisible(): boolean;\r\n public abstract clone(changedProps: Partial<MapLayerProps>): MapLayerSettings;\r\n public abstract toJSON(): MapLayerProps;\r\n\r\n /** @internal */\r\n protected constructor(name: string, visible = true, transparency: number = 0, transparentBackground = true) {\r\n this.name = name;\r\n this.visible = visible;\r\n this.transparentBackground = transparentBackground;\r\n this.transparency = transparency;\r\n }\r\n\r\n /** Create a map layer settings from its JSON representation. */\r\n public static fromJSON(props: MapLayerProps): MapLayerSettings {\r\n return undefined !== props.modelId ? ModelMapLayerSettings.fromJSON(props) : ImageMapLayerSettings.fromJSON(props);\r\n }\r\n\r\n /** @internal */\r\n protected _toJSON(): CommonMapLayerProps {\r\n const props: CommonMapLayerProps = {\r\n name: this.name,\r\n visible: this.visible,\r\n };\r\n\r\n if (0 !== this.transparency)\r\n props.transparency = this.transparency;\r\n\r\n if (this.transparentBackground === false)\r\n props.transparentBackground = this.transparentBackground;\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n protected cloneProps(changedProps: Partial<MapLayerProps>): CommonMapLayerProps {\r\n return {\r\n name: undefined !== changedProps.name ? changedProps.name : this.name,\r\n visible: undefined !== changedProps.visible ? changedProps.visible : this.visible,\r\n transparency: undefined !== changedProps.transparency ? changedProps.transparency : this.transparency,\r\n transparentBackground: undefined !== changedProps.transparentBackground ? changedProps.transparentBackground : this.transparentBackground,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public displayMatches(other: MapLayerSettings): boolean {\r\n return this.name === other.name && this.visible === other.visible && this.transparency === other.transparency && this.transparentBackground === other.transparentBackground;\r\n }\r\n\r\n /** Return a unique string identifying the layers source... The URL for image layer or modelID for model layer */\r\n public abstract get source(): string;\r\n\r\n /** @internal */\r\n public matchesNameAndSource(name: string, source: string): boolean {\r\n return this.name === name && this.source === source;\r\n }\r\n}\r\n\r\n/** Normalized representation of a [[ImageMapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * Image map layers are created from servers that produce images that represent map tiles. Map layers map also be represented by models.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @see [[ModelMapLayerSettings]] for model based map layer settings.\r\n * @public\r\n */\r\nexport class ImageMapLayerSettings extends MapLayerSettings {\r\n public readonly formatId: string;\r\n public readonly url: string;\r\n public userName?: string;\r\n public password?: string;\r\n public accessKey?: MapLayerKey;\r\n\r\n /** Former name of [[queryParams]], which stores the value; retained as the backing field so existing subclasses\r\n * and `delete` keep working.\r\n * @deprecated in 5.16. Use [[queryParams]].\r\n * @beta\r\n */\r\n public savedQueryParams?: { [key: string]: string };\r\n\r\n /** Non-secret query parameters appended to every request made for the layer, persisted as part of the JSON\r\n * representation ([[ImageMapLayerProps.queryParams]]). Secrets must never be placed here; the hosting application\r\n * injects them per session through a fetch handler (see `MapLayerFormatRegistry.addMapLayerFetchHandler` in\r\n * `@itwin/core-frontend`), which also protects them against leaking through redirects.\r\n * @beta\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- the deprecated field is the storage until its removal.\r\n public get queryParams(): { [key: string]: string } | undefined { return this.savedQueryParams; }\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n public set queryParams(value: { [key: string]: string } | undefined) { this.savedQueryParams = value; }\r\n\r\n /** List of query parameters that will get appended to the settings URL that should *not* be be persisted part of the JSON representation.\r\n * @deprecated in 5.16. Register a fetch handler (`MapLayerFormatRegistry.addMapLayerFetchHandler` in `@itwin/core-frontend`) to inject secret or per-session parameters, which unlike this field are protected against leaking through redirects; use [[queryParams]] for non-secret parameters.\r\n * @beta\r\n */\r\n public unsavedQueryParams?: { [key: string]: string };\r\n\r\n /** Properties specific to the map layer provider.\r\n * @beta\r\n */\r\n public readonly properties?: MapLayerProviderProperties;\r\n\r\n public readonly subLayers: MapSubLayerSettings[];\r\n public override get source(): string { return this.url; }\r\n\r\n /** @internal */\r\n protected constructor(props: ImageMapLayerProps) {\r\n const transparentBackground = props.transparentBackground ?? true;\r\n super(props.name, props.visible, props.transparency, transparentBackground);\r\n\r\n this.formatId = props.formatId;\r\n this.url = props.url;\r\n this.accessKey = props.accessKey;\r\n if (props.queryParams) {\r\n this.queryParams = {...props.queryParams};\r\n }\r\n\r\n if (props.properties) {\r\n this.properties = {...props.properties}\r\n }\r\n\r\n this.subLayers = [];\r\n if (!props.subLayers)\r\n return;\r\n\r\n for (const subLayerProps of props.subLayers) {\r\n const subLayer = MapSubLayerSettings.fromJSON(subLayerProps);\r\n if (subLayer)\r\n this.subLayers.push(subLayer);\r\n }\r\n }\r\n\r\n public static override fromJSON(props: ImageMapLayerProps): ImageMapLayerSettings {\r\n return new this(props);\r\n }\r\n\r\n /** return JSON representation of this MapLayerSettings object */\r\n public override toJSON(): ImageMapLayerProps {\r\n const props = super._toJSON() as ImageMapLayerProps;\r\n props.url = this.url;\r\n props.formatId = this.formatId;\r\n\r\n if (this.subLayers.length > 0)\r\n props.subLayers = this.subLayers.map((x) => x.toJSON());\r\n\r\n if (this.queryParams)\r\n props.queryParams = {...this.queryParams};\r\n\r\n if (this.properties) {\r\n props.properties = structuredClone(this.properties);\r\n }\r\n\r\n return props;\r\n }\r\n\r\n /** Create a copy of this MapLayerSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A MapLayerSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps: Partial<ImageMapLayerProps>): ImageMapLayerSettings {\r\n const clone = ImageMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n\r\n // Clone members not part of MapLayerProps\r\n clone.userName = this.userName;\r\n clone.password = this.password;\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.\r\n if (this.unsavedQueryParams)\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n clone.unsavedQueryParams = {...this.unsavedQueryParams};\r\n\r\n return clone;\r\n }\r\n\r\n /** @internal */\r\n protected override cloneProps(changedProps: Partial<ImageMapLayerProps>): ImageMapLayerProps {\r\n const props = super.cloneProps(changedProps) as ImageMapLayerProps;\r\n\r\n props.formatId = changedProps.formatId ?? this.formatId;\r\n props.url = changedProps.url ?? this.url;\r\n props.accessKey = changedProps.accessKey ?? this.accessKey;\r\n props.subLayers = changedProps.subLayers ?? this.subLayers;\r\n if (changedProps.queryParams) {\r\n props.queryParams = {...changedProps.queryParams};\r\n } else if (this.queryParams) {\r\n props.queryParams = {...this.queryParams};\r\n }\r\n\r\n if (changedProps.properties) {\r\n props.properties = {...changedProps.properties}\r\n } else if (this.properties) {\r\n props.properties = {...this.properties}\r\n }\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override displayMatches(other: MapLayerSettings): boolean {\r\n if (! (other instanceof ImageMapLayerSettings) || !super.displayMatches(other))\r\n return false;\r\n\r\n if (this.userName !== other.userName || this.password !== other.password || this.subLayers.length !== other.subLayers.length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < this.subLayers.length; i++)\r\n if (!this.subLayers[i].displayMatches(other.subLayers[i]))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n /** Return a sublayer matching id -- or undefined if not found */\r\n public subLayerById(id?: SubLayerId): MapSubLayerSettings | undefined {\r\n return id === undefined ? undefined : this.subLayers.find((subLayer) => subLayer.id === id);\r\n }\r\n\r\n private hasInvisibleAncestors(subLayer?: MapSubLayerSettings): boolean {\r\n if (!subLayer || !subLayer.parent)\r\n return false;\r\n\r\n const parent = this.subLayerById(subLayer.parent);\r\n if (!parent)\r\n return false;\r\n\r\n // Visibility of named group has no impact on the visibility of children (only unnamed group does)\r\n // i.e For WMS, its should be possible to request a child layer when its parent is not visible (if the parent is also named)\r\n return (!parent.visible && !parent.isNamed) || this.hasInvisibleAncestors(parent);\r\n }\r\n\r\n /** Return true if sublayer is visible -- testing ancestors for visibility if they exist. */\r\n public isSubLayerVisible(subLayer: MapSubLayerSettings): boolean {\r\n if (!subLayer.visible)\r\n return false;\r\n\r\n return !this.hasInvisibleAncestors(subLayer);\r\n }\r\n\r\n /** Return true if all sublayers are invisible. */\r\n public get allSubLayersInvisible(): boolean {\r\n if (this.subLayers.length === 0)\r\n return false;\r\n\r\n return this.subLayers.every((subLayer) => (subLayer.isUnnamedGroup || !this.isSubLayerVisible(subLayer)));\r\n }\r\n\r\n /** Return the children for a sublayer */\r\n public getSubLayerChildren(subLayer: MapSubLayerSettings): MapSubLayerSettings[] | undefined {\r\n if (!subLayer.children)\r\n return undefined;\r\n\r\n const children = new Array<MapSubLayerSettings>();\r\n subLayer.children.forEach((childId) => {\r\n const child = this.subLayerById(childId);\r\n if (child !== undefined)\r\n children.push(child);\r\n });\r\n\r\n return children;\r\n }\r\n\r\n /** @internal */\r\n protected static mapTypeName(type: BackgroundMapType) { // TBD.. Localization.\r\n switch (type) {\r\n case BackgroundMapType.Aerial:\r\n return \"Aerial Imagery\";\r\n default:\r\n case BackgroundMapType.Hybrid:\r\n return \"Aerial Imagery with labels\";\r\n case BackgroundMapType.Street:\r\n return \"Streets\";\r\n }\r\n }\r\n\r\n public setCredentials(userName?: string, password?: string) {\r\n this.userName = userName;\r\n this.password = password;\r\n }\r\n\r\n /** The query parameters actually sent with requests: [[queryParams]] overlaid with the deprecated `unsavedQueryParams`\r\n * (a key present in both takes the latter's value). Equals a copy of [[queryParams]] once `unsavedQueryParams` is removed.\r\n * @beta\r\n */\r\n public collectQueryParams() {\r\n let queryParams: {[key: string]: string} = {};\r\n if (this.queryParams)\r\n queryParams = {...this.queryParams};\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.\r\n if (this.unsavedQueryParams)\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n queryParams = {...queryParams, ...this.unsavedQueryParams};\r\n\r\n return queryParams;\r\n }\r\n}\r\n\r\n/** Normalized representation of a [[ModelMapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * Model map layers are produced from models, typically from two dimensional geometry that may originate in a GIS system.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @see [[ImageMapLayerSettings]] for image based map layer settings.\r\n * @public\r\n */\r\nexport class ModelMapLayerSettings extends MapLayerSettings {\r\n /** Specifies the target onto which to drape this model map layer. Defaults to [ModelMapLayerDrapeTarget.Globe]($common).\r\n * @beta\r\n */\r\n public readonly drapeTarget: ModelMapLayerDrapeTarget;\r\n public readonly modelId: Id64String;\r\n public override get source(): string { return this.modelId; }\r\n\r\n /** @internal */\r\n protected constructor(modelId: Id64String, name: string, visible = true,\r\n transparency: number = 0, transparentBackground = true, drapeTarget = ModelMapLayerDrapeTarget.Globe) {\r\n super(name, visible, transparency, transparentBackground);\r\n this.modelId = modelId;\r\n this.drapeTarget = drapeTarget;\r\n }\r\n\r\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\r\n public static override fromJSON(json: ModelMapLayerProps): ModelMapLayerSettings {\r\n const transparentBackground = (json.transparentBackground === undefined) ? true : json.transparentBackground;\r\n return new this(json.modelId, json.name, json.visible, json.transparency, transparentBackground, json.drapeTarget);\r\n }\r\n\r\n /** return JSON representation of this MapLayerSettings object */\r\n public override toJSON(): ModelMapLayerProps {\r\n const props = super._toJSON() as ModelMapLayerProps;\r\n props.modelId = this.modelId;\r\n if (this.drapeTarget !== ModelMapLayerDrapeTarget.Globe)\r\n props.drapeTarget = this.drapeTarget;\r\n return props;\r\n }\r\n\r\n /** Create a copy of this MapLayerSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A MapLayerSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps: Partial<ModelMapLayerProps>): ModelMapLayerSettings {\r\n return ModelMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n }\r\n\r\n /** @internal */\r\n protected override cloneProps(changedProps: Partial<ModelMapLayerProps>): ModelMapLayerProps {\r\n const props = super.cloneProps(changedProps) as ModelMapLayerProps;\r\n props.modelId = changedProps.modelId ?? this.modelId;\r\n props.drapeTarget = changedProps.drapeTarget ?? this.drapeTarget;\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override displayMatches(other: MapLayerSettings): boolean {\r\n if (!(other instanceof ModelMapLayerSettings) || !super.displayMatches(other))\r\n return false;\r\n\r\n return this.modelId === other.modelId;\r\n }\r\n\r\n /** Return true if all sublayers are invisible (always false as model layers do not include sublayers). */\r\n public get allSubLayersInvisible(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n/** JSON representation of a [[BaseMapLayerSettings]].\r\n * @public\r\n */\r\nexport interface BaseMapLayerProps extends ImageMapLayerProps {\r\n provider?: BackgroundMapProviderProps;\r\n}\r\n\r\n/** A [[ImageMapLayerSettings]] that can serve as the base layer for a [[MapImagerySettings]].\r\n * The base layer supports all of the same options as any other layer, but also allows for simplified configuration based\r\n * on a small set of known supported [[BackgroundMapProvider]]s like [Bing Maps](https://www.microsoft.com/en-us/maps).\r\n * If the base layer was configured from such a provider, that information will be preserved and can be queried; this allows\r\n * the imagery provider and/or type to be easily modified.\r\n * @see [[MapImagerySettings.backgroundBase]].\r\n * @public\r\n */\r\nexport class BaseMapLayerSettings extends ImageMapLayerSettings {\r\n private _provider?: BackgroundMapProvider;\r\n\r\n /** The provider from which this base layer was configured, if any. */\r\n public get provider(): BackgroundMapProvider | undefined { return this._provider; }\r\n\r\n /** Create a base layer from its JSON representation.\r\n * TODO: This, MapLayerSettings.fromJSON, and MapSubLayerSettings.fromJSON should never return undefined.\r\n * That means they should not accept undefined for props and should define props such that it fully describes the\r\n * layer - e.g., url and name must be defined.\r\n */\r\n public static override fromJSON(props: BaseMapLayerProps): BaseMapLayerSettings {\r\n const settings = super.fromJSON(props);\r\n assert(settings instanceof BaseMapLayerSettings);\r\n if (props.provider)\r\n settings._provider = BackgroundMapProvider.fromJSON(props.provider);\r\n\r\n return settings;\r\n }\r\n\r\n /** Convert this layer to its JSON representation. */\r\n public override toJSON(): BaseMapLayerProps {\r\n const props = super.toJSON() as BaseMapLayerProps;\r\n if (this.provider)\r\n props.provider = this.provider.toJSON();\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override cloneProps(changedProps: Partial<BaseMapLayerProps>): BaseMapLayerProps {\r\n const props = super.cloneProps(changedProps) as BaseMapLayerProps;\r\n\r\n if (changedProps.provider)\r\n props.provider = changedProps.provider;\r\n else if (this.provider)\r\n props.provider = this.provider.toJSON();\r\n\r\n return props;\r\n }\r\n\r\n /** Create a copy of this layer. */\r\n public override clone(changedProps: Partial<BaseMapLayerProps>): BaseMapLayerSettings {\r\n const prevUrl = this.url;\r\n const clone = BaseMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n\r\n if (this.provider && prevUrl !== this.url)\r\n clone._provider = undefined;\r\n\r\n return clone;\r\n }\r\n\r\n /** Create a base layer from a BackgroundMapProvider. */\r\n public static fromProvider(provider: BackgroundMapProvider, options?: { invisible?: boolean, transparency?: number }): BaseMapLayerSettings {\r\n let formatId: string, url: string, name: string;\r\n switch (provider.name) {\r\n case \"BingProvider\":\r\n default:\r\n formatId = \"BingMaps\";\r\n\r\n let imagerySet;\r\n switch (provider.type) {\r\n case BackgroundMapType.Street:\r\n imagerySet = \"Road\";\r\n break;\r\n case BackgroundMapType.Aerial:\r\n imagerySet = \"Aerial\";\r\n break;\r\n case BackgroundMapType.Hybrid:\r\n default:\r\n imagerySet = \"AerialWithLabels\";\r\n break;\r\n }\r\n\r\n name = `Bing Maps: ${ImageMapLayerSettings.mapTypeName(provider.type)}`;\r\n url = `https://dev.virtualearth.net/REST/v1/Imagery/Metadata/${imagerySet}?o=json&incl=ImageryProviders&key={bingKey}`;\r\n break;\r\n\r\n case \"MapBoxProvider\":\r\n formatId = \"MapboxImagery\";\r\n name = `MapBox: ${ImageMapLayerSettings.mapTypeName(provider.type)}`;\r\n switch (provider.type) {\r\n case BackgroundMapType.Street:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/\";\r\n break;\r\n case BackgroundMapType.Aerial:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/satellite-v9/tiles/\";\r\n break;\r\n case BackgroundMapType.Hybrid:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/satellite-streets-v11/tiles/\";\r\n break;\r\n }\r\n\r\n break;\r\n }\r\n\r\n const settings = super.fromJSON({\r\n name,\r\n formatId,\r\n url,\r\n transparentBackground: false,\r\n visible: !options?.invisible,\r\n transparency: options?.transparency,\r\n });\r\n\r\n assert(undefined !== settings);\r\n assert(settings instanceof BaseMapLayerSettings);\r\n\r\n settings._provider = provider;\r\n return settings;\r\n }\r\n\r\n /** @internal */\r\n public static fromBackgroundMapProps(props: DeprecatedBackgroundMapProps): BaseMapLayerSettings {\r\n return this.fromProvider(BackgroundMapProvider.fromBackgroundMapProps(props));\r\n }\r\n\r\n /** @alpha */\r\n public cloneWithProvider(provider: BackgroundMapProvider): BaseMapLayerSettings {\r\n return BaseMapLayerSettings.fromProvider(provider, { invisible: !this.visible, transparency: this.transparency });\r\n }\r\n}\r\n"]}
@@ -113,7 +113,9 @@ export interface ImageMapLayerProps extends CommonMapLayerProps {
113
113
  accessKey?: MapLayerKey;
114
114
  /** @internal */
115
115
  modelId?: never;
116
- /** List of query parameters that will get appended to the source.
116
+ /** Non-secret query parameters appended to every request made for the layer, persisted with it.
117
+ * Secrets must never be placed here; the hosting application injects them per session through a fetch handler
118
+ * (see `MapLayerFormatRegistry.addMapLayerFetchHandler` in `@itwin/core-frontend`).
117
119
  * @beta
118
120
  */
119
121
  queryParams?: {
@@ -210,14 +212,28 @@ export declare class ImageMapLayerSettings extends MapLayerSettings {
210
212
  userName?: string;
211
213
  password?: string;
212
214
  accessKey?: MapLayerKey;
213
- /** List of query parameters to append to the settings URL and persisted as part of the JSON representation.
214
- * @note Sensitive information like user credentials should be provided in [[unsavedQueryParams]] to ensure it is never persisted.
215
+ /** Former name of [[queryParams]], which stores the value; retained as the backing field so existing subclasses
216
+ * and `delete` keep working.
217
+ * @deprecated in 5.16. Use [[queryParams]].
215
218
  * @beta
216
219
  */
217
220
  savedQueryParams?: {
218
221
  [key: string]: string;
219
222
  };
223
+ /** Non-secret query parameters appended to every request made for the layer, persisted as part of the JSON
224
+ * representation ([[ImageMapLayerProps.queryParams]]). Secrets must never be placed here; the hosting application
225
+ * injects them per session through a fetch handler (see `MapLayerFormatRegistry.addMapLayerFetchHandler` in
226
+ * `@itwin/core-frontend`), which also protects them against leaking through redirects.
227
+ * @beta
228
+ */
229
+ get queryParams(): {
230
+ [key: string]: string;
231
+ } | undefined;
232
+ set queryParams(value: {
233
+ [key: string]: string;
234
+ } | undefined);
220
235
  /** List of query parameters that will get appended to the settings URL that should *not* be be persisted part of the JSON representation.
236
+ * @deprecated in 5.16. Register a fetch handler (`MapLayerFormatRegistry.addMapLayerFetchHandler` in `@itwin/core-frontend`) to inject secret or per-session parameters, which unlike this field are protected against leaking through redirects; use [[queryParams]] for non-secret parameters.
221
237
  * @beta
222
238
  */
223
239
  unsavedQueryParams?: {
@@ -255,9 +271,10 @@ export declare class ImageMapLayerSettings extends MapLayerSettings {
255
271
  /** @internal */
256
272
  protected static mapTypeName(type: BackgroundMapType): "Aerial Imagery" | "Aerial Imagery with labels" | "Streets";
257
273
  setCredentials(userName?: string, password?: string): void;
258
- /** Collect all query parameters
259
- * @beta
260
- */
274
+ /** The query parameters actually sent with requests: [[queryParams]] overlaid with the deprecated `unsavedQueryParams`
275
+ * (a key present in both takes the latter's value). Equals a copy of [[queryParams]] once `unsavedQueryParams` is removed.
276
+ * @beta
277
+ */
261
278
  collectQueryParams(): {
262
279
  [key: string]: string;
263
280
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerSettings.d.ts","sourceRoot":"","sources":["../../src/MapLayerSettings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MapLayerSettings.d.ts","sourceRoot":"","sources":["../../src/MapLayerSettings.ts"],"names":[],"mappings":"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"}
@@ -157,12 +157,24 @@ export class ImageMapLayerSettings extends MapLayerSettings {
157
157
  userName;
158
158
  password;
159
159
  accessKey;
160
- /** List of query parameters to append to the settings URL and persisted as part of the JSON representation.
161
- * @note Sensitive information like user credentials should be provided in [[unsavedQueryParams]] to ensure it is never persisted.
160
+ /** Former name of [[queryParams]], which stores the value; retained as the backing field so existing subclasses
161
+ * and `delete` keep working.
162
+ * @deprecated in 5.16. Use [[queryParams]].
162
163
  * @beta
163
164
  */
164
165
  savedQueryParams;
166
+ /** Non-secret query parameters appended to every request made for the layer, persisted as part of the JSON
167
+ * representation ([[ImageMapLayerProps.queryParams]]). Secrets must never be placed here; the hosting application
168
+ * injects them per session through a fetch handler (see `MapLayerFormatRegistry.addMapLayerFetchHandler` in
169
+ * `@itwin/core-frontend`), which also protects them against leaking through redirects.
170
+ * @beta
171
+ */
172
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- the deprecated field is the storage until its removal.
173
+ get queryParams() { return this.savedQueryParams; }
174
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
175
+ set queryParams(value) { this.savedQueryParams = value; }
165
176
  /** List of query parameters that will get appended to the settings URL that should *not* be be persisted part of the JSON representation.
177
+ * @deprecated in 5.16. Register a fetch handler (`MapLayerFormatRegistry.addMapLayerFetchHandler` in `@itwin/core-frontend`) to inject secret or per-session parameters, which unlike this field are protected against leaking through redirects; use [[queryParams]] for non-secret parameters.
166
178
  * @beta
167
179
  */
168
180
  unsavedQueryParams;
@@ -180,7 +192,7 @@ export class ImageMapLayerSettings extends MapLayerSettings {
180
192
  this.url = props.url;
181
193
  this.accessKey = props.accessKey;
182
194
  if (props.queryParams) {
183
- this.savedQueryParams = { ...props.queryParams };
195
+ this.queryParams = { ...props.queryParams };
184
196
  }
185
197
  if (props.properties) {
186
198
  this.properties = { ...props.properties };
@@ -204,8 +216,8 @@ export class ImageMapLayerSettings extends MapLayerSettings {
204
216
  props.formatId = this.formatId;
205
217
  if (this.subLayers.length > 0)
206
218
  props.subLayers = this.subLayers.map((x) => x.toJSON());
207
- if (this.savedQueryParams)
208
- props.queryParams = { ...this.savedQueryParams };
219
+ if (this.queryParams)
220
+ props.queryParams = { ...this.queryParams };
209
221
  if (this.properties) {
210
222
  props.properties = structuredClone(this.properties);
211
223
  }
@@ -220,10 +232,10 @@ export class ImageMapLayerSettings extends MapLayerSettings {
220
232
  // Clone members not part of MapLayerProps
221
233
  clone.userName = this.userName;
222
234
  clone.password = this.password;
235
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.
223
236
  if (this.unsavedQueryParams)
237
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
224
238
  clone.unsavedQueryParams = { ...this.unsavedQueryParams };
225
- if (this.savedQueryParams)
226
- clone.savedQueryParams = { ...this.savedQueryParams };
227
239
  return clone;
228
240
  }
229
241
  /** @internal */
@@ -236,8 +248,8 @@ export class ImageMapLayerSettings extends MapLayerSettings {
236
248
  if (changedProps.queryParams) {
237
249
  props.queryParams = { ...changedProps.queryParams };
238
250
  }
239
- else if (this.savedQueryParams) {
240
- props.queryParams = { ...this.savedQueryParams };
251
+ else if (this.queryParams) {
252
+ props.queryParams = { ...this.queryParams };
241
253
  }
242
254
  if (changedProps.properties) {
243
255
  props.properties = { ...changedProps.properties };
@@ -313,14 +325,17 @@ export class ImageMapLayerSettings extends MapLayerSettings {
313
325
  this.userName = userName;
314
326
  this.password = password;
315
327
  }
316
- /** Collect all query parameters
317
- * @beta
318
- */
328
+ /** The query parameters actually sent with requests: [[queryParams]] overlaid with the deprecated `unsavedQueryParams`
329
+ * (a key present in both takes the latter's value). Equals a copy of [[queryParams]] once `unsavedQueryParams` is removed.
330
+ * @beta
331
+ */
319
332
  collectQueryParams() {
320
333
  let queryParams = {};
321
- if (this.savedQueryParams)
322
- queryParams = { ...this.savedQueryParams };
334
+ if (this.queryParams)
335
+ queryParams = { ...this.queryParams };
336
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.
323
337
  if (this.unsavedQueryParams)
338
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
324
339
  queryParams = { ...queryParams, ...this.unsavedQueryParams };
325
340
  return queryParams;
326
341
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerSettings.js","sourceRoot":"","sources":["../../src/MapLayerSettings.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MapLayers\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { BackgroundMapProvider, BackgroundMapProviderProps, BackgroundMapType } from \"./BackgroundMapProvider\";\r\nimport { DeprecatedBackgroundMapProps } from \"./BackgroundMapSettings\";\r\n\r\n/** The current set of supported map layer formats.\r\n * In order to be displayed, a corresponding format must have been registered in the [MapLayerFormatRegistry]($frontend)\r\n * @public\r\n */\r\nexport type ImageryMapLayerFormatId = \"ArcGIS\" | \"BingMaps\" | \"MapboxImagery\" | \"TileURL\" | \"WMS\" | \"WMTS\";\r\n\r\n/** @public */\r\nexport type SubLayerId = string | number;\r\n\r\n/**\r\n * Type for map layer provider array property.\r\n * @beta\r\n */\r\nexport type MapLayerProviderArrayProperty = number[] | string[] | boolean[];\r\n\r\n/**\r\n * Type for map layer provider properties.\r\n * @beta\r\n */\r\nexport interface MapLayerProviderProperties { [key: string]: number | string | boolean | MapLayerProviderArrayProperty };\r\n\r\n/** JSON representation of the settings associated with a map sublayer included within a [[MapLayerProps]].\r\n * A map sub layer represents a set of objects within the layer that can be controlled separately. These\r\n * are produced only from map servers that produce images on demand and are not supported by tiled (cached) servers.\r\n * @see [[MapLayerProps]]\r\n * @public\r\n */\r\nexport interface MapSubLayerProps {\r\n name: string;\r\n title?: string;\r\n visible?: boolean;\r\n id?: SubLayerId;\r\n parent?: SubLayerId;\r\n children?: SubLayerId[];\r\n}\r\n\r\n/** Normalized representation of a [[MapSubLayerProps]] for which values\r\n * have been validated and default values have been applied where explicit values not defined.\r\n * A map sub layer represents a set of objects within the layer that can be controlled separately. These\r\n * are produced only from map servers that produce images on demand and are not supported by tiled (cached) servers.\r\n * This class can represent a hierarchy, in this case a sub layer is visible only if all its ancestors are also visible.\r\n * @see [[MapLayerSettings]]\r\n * @public\r\n */\r\nexport class MapSubLayerSettings {\r\n /** Typically Name is a single word used for machine-to-machine communication while the Title is for the benefit of humans (WMS) */\r\n public readonly name: string;\r\n /** Title. */\r\n public readonly title?: string;\r\n /** If true the sub layer is visible. If part of a hierarchy, a sub layer is visible only if its ancestors are also visible. */\r\n public readonly visible: boolean;\r\n /** A unique string or number that may be used to identify the sub layer (ArcGIS) */\r\n public readonly id: SubLayerId;\r\n /** One or more sublayer children */\r\n public readonly children?: SubLayerId[];\r\n /** sublayer parent. */\r\n public readonly parent?: SubLayerId;\r\n\r\n constructor(name: string, title?: string, visible?: boolean, id?: SubLayerId, parent?: SubLayerId, children?: SubLayerId[]) {\r\n this.name = name;\r\n this.title = title;\r\n this.visible = visible !== undefined && visible;\r\n this.id = (id === undefined) ? this.name : id;\r\n this.parent = parent;\r\n this.children = children;\r\n }\r\n\r\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\r\n public static fromJSON(json: MapSubLayerProps): MapSubLayerSettings {\r\n return new MapSubLayerSettings(json.name, json.title, json.visible, (json.id === json.name) ? undefined : json.id, json.parent, json.children);\r\n }\r\n\r\n public toJSON(): MapSubLayerProps {\r\n const props: MapSubLayerProps = { name: this.name, visible: this.visible };\r\n\r\n if (undefined !== this.id && this.id !== this.name)\r\n props.id = this.id;\r\n\r\n if (undefined !== this.title)\r\n props.title = this.title;\r\n\r\n if (this.children)\r\n props.children = [...this.children];\r\n\r\n if (undefined !== this.parent)\r\n props.parent = this.parent;\r\n\r\n return props;\r\n }\r\n\r\n /** Creating a copy of this MapSubLayer, optionally modifying some if its properties */\r\n public clone(changedProps: Partial<MapSubLayerProps>): MapSubLayerSettings {\r\n if (undefined === changedProps)\r\n return this;\r\n\r\n const props = {\r\n name: undefined !== changedProps.name ? changedProps.name : this.name,\r\n id: undefined !== changedProps.id ? changedProps.id : this.id,\r\n visible: undefined !== changedProps.visible ? changedProps.visible : this.visible,\r\n parent: undefined !== changedProps.parent ? changedProps.parent : this.parent,\r\n children: undefined !== changedProps.children ? changedProps.children.slice() : this.children?.slice(),\r\n title: undefined !== changedProps.title ? changedProps.title : this.title,\r\n };\r\n return MapSubLayerSettings.fromJSON(props);\r\n }\r\n\r\n /** @internal */\r\n public displayMatches(other: MapSubLayerSettings): boolean {\r\n return this.name === other.name && this.visible === other.visible;\r\n }\r\n\r\n /** return true if this sublayer is named. */\r\n public get isNamed(): boolean { return this.name.length > 0; }\r\n\r\n /** return true if this sublayer is a leaf (has no children) */\r\n public get isLeaf(): boolean { return this.children === undefined || this.children.length === 0; }\r\n\r\n /** return true if this sublayer is an unnamed group */\r\n public get isUnnamedGroup(): boolean { return !this.isLeaf && !this.isNamed; }\r\n\r\n /** return a string representing this sublayer id (converting to string if underlying id is number) */\r\n public get idString(): string { return (typeof this.id === \"number\") ? this.id.toString(10) : this.id; }\r\n}\r\n\r\n/** JSON representation of properties common to both [[ImageMapLayerProps]] and [[ModelMapLayerProps]].\r\n * @see [[MapImageryProps]]\r\n * @public\r\n */\r\nexport interface CommonMapLayerProps {\r\n /** Controls visibility of layer. Defaults to 'true'. */\r\n visible?: boolean;\r\n\r\n /** A user-friendly name for the layer. */\r\n name: string;\r\n\r\n /** A transparency value from 0.0 (fully opaque) to 1.0 (fully transparent) to apply to map graphics when drawing,\r\n * or false to indicate the transparency should not be overridden.\r\n * Default value: 0.\r\n */\r\n\r\n transparency?: number;\r\n /** True to indicate background is transparent.\r\n * Default: true.\r\n */\r\n transparentBackground?: boolean;\r\n}\r\n\r\n/** JSON representation of an [[ImageMapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @see [[ImageryMapLayerFormatId]].\r\n * @public\r\n */\r\nexport interface ImageMapLayerProps extends CommonMapLayerProps {\r\n /** URL */\r\n url: string;\r\n /** Identifies the map layers source.*/\r\n formatId: string;\r\n /** Source layers. If undefined all layers are displayed. */\r\n subLayers?: MapSubLayerProps[];\r\n /** Access Key for the Layer, like a subscription key or access token.\r\n * ###TODO This does not belong in the props object. It should never be persisted.\r\n */\r\n /** @internal */\r\n accessKey?: MapLayerKey;\r\n\r\n /** @internal */\r\n modelId?: never;\r\n\r\n /** List of query parameters that will get appended to the source.\r\n * @beta\r\n */\r\n queryParams?: { [key: string]: string };\r\n\r\n /** Properties specific to the map layer provider.\r\n * @beta\r\n */\r\n properties?: MapLayerProviderProperties;\r\n\r\n}\r\n\r\n/** The target onto which to drape a model map layer.\r\n * @beta\r\n */\r\nexport enum ModelMapLayerDrapeTarget {\r\n /** Drape only onto the globe. */\r\n Globe = 1 << 0,\r\n /** Drape only onto all attached reality data. */\r\n RealityData = 1 << 1,\r\n /** Drape only onto all models within the iModel. */\r\n IModel = 1 << 2,\r\n}\r\n\r\n/** JSON representation of a [[ModelMapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @public\r\n */\r\nexport interface ModelMapLayerProps extends CommonMapLayerProps {\r\n /** The Id of the [GeometricModel]($backend) containing the geometry to be drawn by the layer. */\r\n modelId: Id64String;\r\n /** Specifies the target onto which to drape this model map layer. Defaults to [ModelMapLayerDrapeTarget.Globe]($common).\r\n * @beta\r\n */\r\n drapeTarget?: ModelMapLayerDrapeTarget;\r\n /** @internal */\r\n url?: never;\r\n /** @internal */\r\n formatId?: never;\r\n /** @internal */\r\n subLayers?: never;\r\n /** @internal */\r\n accessKey?: never;\r\n}\r\n\r\n/** JSON representation of a [[MapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @public\r\n */\r\nexport type MapLayerProps = ImageMapLayerProps | ModelMapLayerProps;\r\n\r\n/**\r\n * stores key-value pair to be added to all requests made involving map layer.\r\n * @public\r\n */\r\nexport interface MapLayerKey {\r\n key: string;\r\n value: string;\r\n}\r\n\r\n/** Abstract base class for normalized representation of a [[MapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * This class is extended by [[ImageMapLayerSettings]] and [[ModelMapLayerSettings]] to create the settings for image and model based layers.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @public\r\n */\r\nexport abstract class MapLayerSettings {\r\n public readonly visible: boolean;\r\n\r\n public readonly name: string;\r\n public readonly transparency: number;\r\n public readonly transparentBackground: boolean;\r\n public abstract get allSubLayersInvisible(): boolean;\r\n public abstract clone(changedProps: Partial<MapLayerProps>): MapLayerSettings;\r\n public abstract toJSON(): MapLayerProps;\r\n\r\n /** @internal */\r\n protected constructor(name: string, visible = true, transparency: number = 0, transparentBackground = true) {\r\n this.name = name;\r\n this.visible = visible;\r\n this.transparentBackground = transparentBackground;\r\n this.transparency = transparency;\r\n }\r\n\r\n /** Create a map layer settings from its JSON representation. */\r\n public static fromJSON(props: MapLayerProps): MapLayerSettings {\r\n return undefined !== props.modelId ? ModelMapLayerSettings.fromJSON(props) : ImageMapLayerSettings.fromJSON(props);\r\n }\r\n\r\n /** @internal */\r\n protected _toJSON(): CommonMapLayerProps {\r\n const props: CommonMapLayerProps = {\r\n name: this.name,\r\n visible: this.visible,\r\n };\r\n\r\n if (0 !== this.transparency)\r\n props.transparency = this.transparency;\r\n\r\n if (this.transparentBackground === false)\r\n props.transparentBackground = this.transparentBackground;\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n protected cloneProps(changedProps: Partial<MapLayerProps>): CommonMapLayerProps {\r\n return {\r\n name: undefined !== changedProps.name ? changedProps.name : this.name,\r\n visible: undefined !== changedProps.visible ? changedProps.visible : this.visible,\r\n transparency: undefined !== changedProps.transparency ? changedProps.transparency : this.transparency,\r\n transparentBackground: undefined !== changedProps.transparentBackground ? changedProps.transparentBackground : this.transparentBackground,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public displayMatches(other: MapLayerSettings): boolean {\r\n return this.name === other.name && this.visible === other.visible && this.transparency === other.transparency && this.transparentBackground === other.transparentBackground;\r\n }\r\n\r\n /** Return a unique string identifying the layers source... The URL for image layer or modelID for model layer */\r\n public abstract get source(): string;\r\n\r\n /** @internal */\r\n public matchesNameAndSource(name: string, source: string): boolean {\r\n return this.name === name && this.source === source;\r\n }\r\n}\r\n\r\n/** Normalized representation of a [[ImageMapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * Image map layers are created from servers that produce images that represent map tiles. Map layers map also be represented by models.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @see [[ModelMapLayerSettings]] for model based map layer settings.\r\n * @public\r\n */\r\nexport class ImageMapLayerSettings extends MapLayerSettings {\r\n public readonly formatId: string;\r\n public readonly url: string;\r\n public userName?: string;\r\n public password?: string;\r\n public accessKey?: MapLayerKey;\r\n\r\n /** List of query parameters to append to the settings URL and persisted as part of the JSON representation.\r\n * @note Sensitive information like user credentials should be provided in [[unsavedQueryParams]] to ensure it is never persisted.\r\n * @beta\r\n */\r\n public savedQueryParams?: { [key: string]: string };\r\n\r\n /** List of query parameters that will get appended to the settings URL that should *not* be be persisted part of the JSON representation.\r\n * @beta\r\n */\r\n public unsavedQueryParams?: { [key: string]: string };\r\n\r\n /** Properties specific to the map layer provider.\r\n * @beta\r\n */\r\n public readonly properties?: MapLayerProviderProperties;\r\n\r\n public readonly subLayers: MapSubLayerSettings[];\r\n public override get source(): string { return this.url; }\r\n\r\n /** @internal */\r\n protected constructor(props: ImageMapLayerProps) {\r\n const transparentBackground = props.transparentBackground ?? true;\r\n super(props.name, props.visible, props.transparency, transparentBackground);\r\n\r\n this.formatId = props.formatId;\r\n this.url = props.url;\r\n this.accessKey = props.accessKey;\r\n if (props.queryParams) {\r\n this.savedQueryParams = {...props.queryParams};\r\n }\r\n\r\n if (props.properties) {\r\n this.properties = {...props.properties}\r\n }\r\n\r\n this.subLayers = [];\r\n if (!props.subLayers)\r\n return;\r\n\r\n for (const subLayerProps of props.subLayers) {\r\n const subLayer = MapSubLayerSettings.fromJSON(subLayerProps);\r\n if (subLayer)\r\n this.subLayers.push(subLayer);\r\n }\r\n }\r\n\r\n public static override fromJSON(props: ImageMapLayerProps): ImageMapLayerSettings {\r\n return new this(props);\r\n }\r\n\r\n /** return JSON representation of this MapLayerSettings object */\r\n public override toJSON(): ImageMapLayerProps {\r\n const props = super._toJSON() as ImageMapLayerProps;\r\n props.url = this.url;\r\n props.formatId = this.formatId;\r\n\r\n if (this.subLayers.length > 0)\r\n props.subLayers = this.subLayers.map((x) => x.toJSON());\r\n\r\n if (this.savedQueryParams)\r\n props.queryParams = {...this.savedQueryParams};\r\n\r\n if (this.properties) {\r\n props.properties = structuredClone(this.properties);\r\n }\r\n\r\n return props;\r\n }\r\n\r\n /** Create a copy of this MapLayerSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A MapLayerSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps: Partial<ImageMapLayerProps>): ImageMapLayerSettings {\r\n const clone = ImageMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n\r\n // Clone members not part of MapLayerProps\r\n clone.userName = this.userName;\r\n clone.password = this.password;\r\n if (this.unsavedQueryParams)\r\n clone.unsavedQueryParams = {...this.unsavedQueryParams};\r\n if (this.savedQueryParams)\r\n clone.savedQueryParams = {...this.savedQueryParams};\r\n\r\n return clone;\r\n }\r\n\r\n /** @internal */\r\n protected override cloneProps(changedProps: Partial<ImageMapLayerProps>): ImageMapLayerProps {\r\n const props = super.cloneProps(changedProps) as ImageMapLayerProps;\r\n\r\n props.formatId = changedProps.formatId ?? this.formatId;\r\n props.url = changedProps.url ?? this.url;\r\n props.accessKey = changedProps.accessKey ?? this.accessKey;\r\n props.subLayers = changedProps.subLayers ?? this.subLayers;\r\n if (changedProps.queryParams) {\r\n props.queryParams = {...changedProps.queryParams};\r\n } else if (this.savedQueryParams) {\r\n props.queryParams = {...this.savedQueryParams};\r\n }\r\n\r\n if (changedProps.properties) {\r\n props.properties = {...changedProps.properties}\r\n } else if (this.properties) {\r\n props.properties = {...this.properties}\r\n }\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override displayMatches(other: MapLayerSettings): boolean {\r\n if (! (other instanceof ImageMapLayerSettings) || !super.displayMatches(other))\r\n return false;\r\n\r\n if (this.userName !== other.userName || this.password !== other.password || this.subLayers.length !== other.subLayers.length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < this.subLayers.length; i++)\r\n if (!this.subLayers[i].displayMatches(other.subLayers[i]))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n /** Return a sublayer matching id -- or undefined if not found */\r\n public subLayerById(id?: SubLayerId): MapSubLayerSettings | undefined {\r\n return id === undefined ? undefined : this.subLayers.find((subLayer) => subLayer.id === id);\r\n }\r\n\r\n private hasInvisibleAncestors(subLayer?: MapSubLayerSettings): boolean {\r\n if (!subLayer || !subLayer.parent)\r\n return false;\r\n\r\n const parent = this.subLayerById(subLayer.parent);\r\n if (!parent)\r\n return false;\r\n\r\n // Visibility of named group has no impact on the visibility of children (only unnamed group does)\r\n // i.e For WMS, its should be possible to request a child layer when its parent is not visible (if the parent is also named)\r\n return (!parent.visible && !parent.isNamed) || this.hasInvisibleAncestors(parent);\r\n }\r\n\r\n /** Return true if sublayer is visible -- testing ancestors for visibility if they exist. */\r\n public isSubLayerVisible(subLayer: MapSubLayerSettings): boolean {\r\n if (!subLayer.visible)\r\n return false;\r\n\r\n return !this.hasInvisibleAncestors(subLayer);\r\n }\r\n\r\n /** Return true if all sublayers are invisible. */\r\n public get allSubLayersInvisible(): boolean {\r\n if (this.subLayers.length === 0)\r\n return false;\r\n\r\n return this.subLayers.every((subLayer) => (subLayer.isUnnamedGroup || !this.isSubLayerVisible(subLayer)));\r\n }\r\n\r\n /** Return the children for a sublayer */\r\n public getSubLayerChildren(subLayer: MapSubLayerSettings): MapSubLayerSettings[] | undefined {\r\n if (!subLayer.children)\r\n return undefined;\r\n\r\n const children = new Array<MapSubLayerSettings>();\r\n subLayer.children.forEach((childId) => {\r\n const child = this.subLayerById(childId);\r\n if (child !== undefined)\r\n children.push(child);\r\n });\r\n\r\n return children;\r\n }\r\n\r\n /** @internal */\r\n protected static mapTypeName(type: BackgroundMapType) { // TBD.. Localization.\r\n switch (type) {\r\n case BackgroundMapType.Aerial:\r\n return \"Aerial Imagery\";\r\n default:\r\n case BackgroundMapType.Hybrid:\r\n return \"Aerial Imagery with labels\";\r\n case BackgroundMapType.Street:\r\n return \"Streets\";\r\n }\r\n }\r\n\r\n public setCredentials(userName?: string, password?: string) {\r\n this.userName = userName;\r\n this.password = password;\r\n }\r\n\r\n /** Collect all query parameters\r\n * @beta\r\n */\r\n public collectQueryParams() {\r\n let queryParams: {[key: string]: string} = {};\r\n if (this.savedQueryParams)\r\n queryParams = {...this.savedQueryParams};\r\n\r\n if (this.unsavedQueryParams)\r\n queryParams = {...queryParams, ...this.unsavedQueryParams};\r\n\r\n return queryParams;\r\n }\r\n}\r\n\r\n/** Normalized representation of a [[ModelMapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * Model map layers are produced from models, typically from two dimensional geometry that may originate in a GIS system.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @see [[ImageMapLayerSettings]] for image based map layer settings.\r\n * @public\r\n */\r\nexport class ModelMapLayerSettings extends MapLayerSettings {\r\n /** Specifies the target onto which to drape this model map layer. Defaults to [ModelMapLayerDrapeTarget.Globe]($common).\r\n * @beta\r\n */\r\n public readonly drapeTarget: ModelMapLayerDrapeTarget;\r\n public readonly modelId: Id64String;\r\n public override get source(): string { return this.modelId; }\r\n\r\n /** @internal */\r\n protected constructor(modelId: Id64String, name: string, visible = true,\r\n transparency: number = 0, transparentBackground = true, drapeTarget = ModelMapLayerDrapeTarget.Globe) {\r\n super(name, visible, transparency, transparentBackground);\r\n this.modelId = modelId;\r\n this.drapeTarget = drapeTarget;\r\n }\r\n\r\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\r\n public static override fromJSON(json: ModelMapLayerProps): ModelMapLayerSettings {\r\n const transparentBackground = (json.transparentBackground === undefined) ? true : json.transparentBackground;\r\n return new this(json.modelId, json.name, json.visible, json.transparency, transparentBackground, json.drapeTarget);\r\n }\r\n\r\n /** return JSON representation of this MapLayerSettings object */\r\n public override toJSON(): ModelMapLayerProps {\r\n const props = super._toJSON() as ModelMapLayerProps;\r\n props.modelId = this.modelId;\r\n if (this.drapeTarget !== ModelMapLayerDrapeTarget.Globe)\r\n props.drapeTarget = this.drapeTarget;\r\n return props;\r\n }\r\n\r\n /** Create a copy of this MapLayerSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A MapLayerSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps: Partial<ModelMapLayerProps>): ModelMapLayerSettings {\r\n return ModelMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n }\r\n\r\n /** @internal */\r\n protected override cloneProps(changedProps: Partial<ModelMapLayerProps>): ModelMapLayerProps {\r\n const props = super.cloneProps(changedProps) as ModelMapLayerProps;\r\n props.modelId = changedProps.modelId ?? this.modelId;\r\n props.drapeTarget = changedProps.drapeTarget ?? this.drapeTarget;\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override displayMatches(other: MapLayerSettings): boolean {\r\n if (!(other instanceof ModelMapLayerSettings) || !super.displayMatches(other))\r\n return false;\r\n\r\n return this.modelId === other.modelId;\r\n }\r\n\r\n /** Return true if all sublayers are invisible (always false as model layers do not include sublayers). */\r\n public get allSubLayersInvisible(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n/** JSON representation of a [[BaseMapLayerSettings]].\r\n * @public\r\n */\r\nexport interface BaseMapLayerProps extends ImageMapLayerProps {\r\n provider?: BackgroundMapProviderProps;\r\n}\r\n\r\n/** A [[ImageMapLayerSettings]] that can serve as the base layer for a [[MapImagerySettings]].\r\n * The base layer supports all of the same options as any other layer, but also allows for simplified configuration based\r\n * on a small set of known supported [[BackgroundMapProvider]]s like [Bing Maps](https://www.microsoft.com/en-us/maps).\r\n * If the base layer was configured from such a provider, that information will be preserved and can be queried; this allows\r\n * the imagery provider and/or type to be easily modified.\r\n * @see [[MapImagerySettings.backgroundBase]].\r\n * @public\r\n */\r\nexport class BaseMapLayerSettings extends ImageMapLayerSettings {\r\n private _provider?: BackgroundMapProvider;\r\n\r\n /** The provider from which this base layer was configured, if any. */\r\n public get provider(): BackgroundMapProvider | undefined { return this._provider; }\r\n\r\n /** Create a base layer from its JSON representation.\r\n * TODO: This, MapLayerSettings.fromJSON, and MapSubLayerSettings.fromJSON should never return undefined.\r\n * That means they should not accept undefined for props and should define props such that it fully describes the\r\n * layer - e.g., url and name must be defined.\r\n */\r\n public static override fromJSON(props: BaseMapLayerProps): BaseMapLayerSettings {\r\n const settings = super.fromJSON(props);\r\n assert(settings instanceof BaseMapLayerSettings);\r\n if (props.provider)\r\n settings._provider = BackgroundMapProvider.fromJSON(props.provider);\r\n\r\n return settings;\r\n }\r\n\r\n /** Convert this layer to its JSON representation. */\r\n public override toJSON(): BaseMapLayerProps {\r\n const props = super.toJSON() as BaseMapLayerProps;\r\n if (this.provider)\r\n props.provider = this.provider.toJSON();\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override cloneProps(changedProps: Partial<BaseMapLayerProps>): BaseMapLayerProps {\r\n const props = super.cloneProps(changedProps) as BaseMapLayerProps;\r\n\r\n if (changedProps.provider)\r\n props.provider = changedProps.provider;\r\n else if (this.provider)\r\n props.provider = this.provider.toJSON();\r\n\r\n return props;\r\n }\r\n\r\n /** Create a copy of this layer. */\r\n public override clone(changedProps: Partial<BaseMapLayerProps>): BaseMapLayerSettings {\r\n const prevUrl = this.url;\r\n const clone = BaseMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n\r\n if (this.provider && prevUrl !== this.url)\r\n clone._provider = undefined;\r\n\r\n return clone;\r\n }\r\n\r\n /** Create a base layer from a BackgroundMapProvider. */\r\n public static fromProvider(provider: BackgroundMapProvider, options?: { invisible?: boolean, transparency?: number }): BaseMapLayerSettings {\r\n let formatId: string, url: string, name: string;\r\n switch (provider.name) {\r\n case \"BingProvider\":\r\n default:\r\n formatId = \"BingMaps\";\r\n\r\n let imagerySet;\r\n switch (provider.type) {\r\n case BackgroundMapType.Street:\r\n imagerySet = \"Road\";\r\n break;\r\n case BackgroundMapType.Aerial:\r\n imagerySet = \"Aerial\";\r\n break;\r\n case BackgroundMapType.Hybrid:\r\n default:\r\n imagerySet = \"AerialWithLabels\";\r\n break;\r\n }\r\n\r\n name = `Bing Maps: ${ImageMapLayerSettings.mapTypeName(provider.type)}`;\r\n url = `https://dev.virtualearth.net/REST/v1/Imagery/Metadata/${imagerySet}?o=json&incl=ImageryProviders&key={bingKey}`;\r\n break;\r\n\r\n case \"MapBoxProvider\":\r\n formatId = \"MapboxImagery\";\r\n name = `MapBox: ${ImageMapLayerSettings.mapTypeName(provider.type)}`;\r\n switch (provider.type) {\r\n case BackgroundMapType.Street:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/\";\r\n break;\r\n case BackgroundMapType.Aerial:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/satellite-v9/tiles/\";\r\n break;\r\n case BackgroundMapType.Hybrid:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/satellite-streets-v11/tiles/\";\r\n break;\r\n }\r\n\r\n break;\r\n }\r\n\r\n const settings = super.fromJSON({\r\n name,\r\n formatId,\r\n url,\r\n transparentBackground: false,\r\n visible: !options?.invisible,\r\n transparency: options?.transparency,\r\n });\r\n\r\n assert(undefined !== settings);\r\n assert(settings instanceof BaseMapLayerSettings);\r\n\r\n settings._provider = provider;\r\n return settings;\r\n }\r\n\r\n /** @internal */\r\n public static fromBackgroundMapProps(props: DeprecatedBackgroundMapProps): BaseMapLayerSettings {\r\n return this.fromProvider(BackgroundMapProvider.fromBackgroundMapProps(props));\r\n }\r\n\r\n /** @alpha */\r\n public cloneWithProvider(provider: BackgroundMapProvider): BaseMapLayerSettings {\r\n return BaseMapLayerSettings.fromProvider(provider, { invisible: !this.visible, transparency: this.transparency });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapLayerSettings.js","sourceRoot":"","sources":["../../src/MapLayerSettings.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MapLayers\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { BackgroundMapProvider, BackgroundMapProviderProps, BackgroundMapType } from \"./BackgroundMapProvider\";\r\nimport { DeprecatedBackgroundMapProps } from \"./BackgroundMapSettings\";\r\n\r\n/** The current set of supported map layer formats.\r\n * In order to be displayed, a corresponding format must have been registered in the [MapLayerFormatRegistry]($frontend)\r\n * @public\r\n */\r\nexport type ImageryMapLayerFormatId = \"ArcGIS\" | \"BingMaps\" | \"MapboxImagery\" | \"TileURL\" | \"WMS\" | \"WMTS\";\r\n\r\n/** @public */\r\nexport type SubLayerId = string | number;\r\n\r\n/**\r\n * Type for map layer provider array property.\r\n * @beta\r\n */\r\nexport type MapLayerProviderArrayProperty = number[] | string[] | boolean[];\r\n\r\n/**\r\n * Type for map layer provider properties.\r\n * @beta\r\n */\r\nexport interface MapLayerProviderProperties { [key: string]: number | string | boolean | MapLayerProviderArrayProperty };\r\n\r\n/** JSON representation of the settings associated with a map sublayer included within a [[MapLayerProps]].\r\n * A map sub layer represents a set of objects within the layer that can be controlled separately. These\r\n * are produced only from map servers that produce images on demand and are not supported by tiled (cached) servers.\r\n * @see [[MapLayerProps]]\r\n * @public\r\n */\r\nexport interface MapSubLayerProps {\r\n name: string;\r\n title?: string;\r\n visible?: boolean;\r\n id?: SubLayerId;\r\n parent?: SubLayerId;\r\n children?: SubLayerId[];\r\n}\r\n\r\n/** Normalized representation of a [[MapSubLayerProps]] for which values\r\n * have been validated and default values have been applied where explicit values not defined.\r\n * A map sub layer represents a set of objects within the layer that can be controlled separately. These\r\n * are produced only from map servers that produce images on demand and are not supported by tiled (cached) servers.\r\n * This class can represent a hierarchy, in this case a sub layer is visible only if all its ancestors are also visible.\r\n * @see [[MapLayerSettings]]\r\n * @public\r\n */\r\nexport class MapSubLayerSettings {\r\n /** Typically Name is a single word used for machine-to-machine communication while the Title is for the benefit of humans (WMS) */\r\n public readonly name: string;\r\n /** Title. */\r\n public readonly title?: string;\r\n /** If true the sub layer is visible. If part of a hierarchy, a sub layer is visible only if its ancestors are also visible. */\r\n public readonly visible: boolean;\r\n /** A unique string or number that may be used to identify the sub layer (ArcGIS) */\r\n public readonly id: SubLayerId;\r\n /** One or more sublayer children */\r\n public readonly children?: SubLayerId[];\r\n /** sublayer parent. */\r\n public readonly parent?: SubLayerId;\r\n\r\n constructor(name: string, title?: string, visible?: boolean, id?: SubLayerId, parent?: SubLayerId, children?: SubLayerId[]) {\r\n this.name = name;\r\n this.title = title;\r\n this.visible = visible !== undefined && visible;\r\n this.id = (id === undefined) ? this.name : id;\r\n this.parent = parent;\r\n this.children = children;\r\n }\r\n\r\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\r\n public static fromJSON(json: MapSubLayerProps): MapSubLayerSettings {\r\n return new MapSubLayerSettings(json.name, json.title, json.visible, (json.id === json.name) ? undefined : json.id, json.parent, json.children);\r\n }\r\n\r\n public toJSON(): MapSubLayerProps {\r\n const props: MapSubLayerProps = { name: this.name, visible: this.visible };\r\n\r\n if (undefined !== this.id && this.id !== this.name)\r\n props.id = this.id;\r\n\r\n if (undefined !== this.title)\r\n props.title = this.title;\r\n\r\n if (this.children)\r\n props.children = [...this.children];\r\n\r\n if (undefined !== this.parent)\r\n props.parent = this.parent;\r\n\r\n return props;\r\n }\r\n\r\n /** Creating a copy of this MapSubLayer, optionally modifying some if its properties */\r\n public clone(changedProps: Partial<MapSubLayerProps>): MapSubLayerSettings {\r\n if (undefined === changedProps)\r\n return this;\r\n\r\n const props = {\r\n name: undefined !== changedProps.name ? changedProps.name : this.name,\r\n id: undefined !== changedProps.id ? changedProps.id : this.id,\r\n visible: undefined !== changedProps.visible ? changedProps.visible : this.visible,\r\n parent: undefined !== changedProps.parent ? changedProps.parent : this.parent,\r\n children: undefined !== changedProps.children ? changedProps.children.slice() : this.children?.slice(),\r\n title: undefined !== changedProps.title ? changedProps.title : this.title,\r\n };\r\n return MapSubLayerSettings.fromJSON(props);\r\n }\r\n\r\n /** @internal */\r\n public displayMatches(other: MapSubLayerSettings): boolean {\r\n return this.name === other.name && this.visible === other.visible;\r\n }\r\n\r\n /** return true if this sublayer is named. */\r\n public get isNamed(): boolean { return this.name.length > 0; }\r\n\r\n /** return true if this sublayer is a leaf (has no children) */\r\n public get isLeaf(): boolean { return this.children === undefined || this.children.length === 0; }\r\n\r\n /** return true if this sublayer is an unnamed group */\r\n public get isUnnamedGroup(): boolean { return !this.isLeaf && !this.isNamed; }\r\n\r\n /** return a string representing this sublayer id (converting to string if underlying id is number) */\r\n public get idString(): string { return (typeof this.id === \"number\") ? this.id.toString(10) : this.id; }\r\n}\r\n\r\n/** JSON representation of properties common to both [[ImageMapLayerProps]] and [[ModelMapLayerProps]].\r\n * @see [[MapImageryProps]]\r\n * @public\r\n */\r\nexport interface CommonMapLayerProps {\r\n /** Controls visibility of layer. Defaults to 'true'. */\r\n visible?: boolean;\r\n\r\n /** A user-friendly name for the layer. */\r\n name: string;\r\n\r\n /** A transparency value from 0.0 (fully opaque) to 1.0 (fully transparent) to apply to map graphics when drawing,\r\n * or false to indicate the transparency should not be overridden.\r\n * Default value: 0.\r\n */\r\n\r\n transparency?: number;\r\n /** True to indicate background is transparent.\r\n * Default: true.\r\n */\r\n transparentBackground?: boolean;\r\n}\r\n\r\n/** JSON representation of an [[ImageMapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @see [[ImageryMapLayerFormatId]].\r\n * @public\r\n */\r\nexport interface ImageMapLayerProps extends CommonMapLayerProps {\r\n /** URL */\r\n url: string;\r\n /** Identifies the map layers source.*/\r\n formatId: string;\r\n /** Source layers. If undefined all layers are displayed. */\r\n subLayers?: MapSubLayerProps[];\r\n /** Access Key for the Layer, like a subscription key or access token.\r\n * ###TODO This does not belong in the props object. It should never be persisted.\r\n */\r\n /** @internal */\r\n accessKey?: MapLayerKey;\r\n\r\n /** @internal */\r\n modelId?: never;\r\n\r\n /** Non-secret query parameters appended to every request made for the layer, persisted with it.\r\n * Secrets must never be placed here; the hosting application injects them per session through a fetch handler\r\n * (see `MapLayerFormatRegistry.addMapLayerFetchHandler` in `@itwin/core-frontend`).\r\n * @beta\r\n */\r\n queryParams?: { [key: string]: string };\r\n\r\n /** Properties specific to the map layer provider.\r\n * @beta\r\n */\r\n properties?: MapLayerProviderProperties;\r\n\r\n}\r\n\r\n/** The target onto which to drape a model map layer.\r\n * @beta\r\n */\r\nexport enum ModelMapLayerDrapeTarget {\r\n /** Drape only onto the globe. */\r\n Globe = 1 << 0,\r\n /** Drape only onto all attached reality data. */\r\n RealityData = 1 << 1,\r\n /** Drape only onto all models within the iModel. */\r\n IModel = 1 << 2,\r\n}\r\n\r\n/** JSON representation of a [[ModelMapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @public\r\n */\r\nexport interface ModelMapLayerProps extends CommonMapLayerProps {\r\n /** The Id of the [GeometricModel]($backend) containing the geometry to be drawn by the layer. */\r\n modelId: Id64String;\r\n /** Specifies the target onto which to drape this model map layer. Defaults to [ModelMapLayerDrapeTarget.Globe]($common).\r\n * @beta\r\n */\r\n drapeTarget?: ModelMapLayerDrapeTarget;\r\n /** @internal */\r\n url?: never;\r\n /** @internal */\r\n formatId?: never;\r\n /** @internal */\r\n subLayers?: never;\r\n /** @internal */\r\n accessKey?: never;\r\n}\r\n\r\n/** JSON representation of a [[MapLayerSettings]].\r\n * @see [[MapImagerySettings]].\r\n * @public\r\n */\r\nexport type MapLayerProps = ImageMapLayerProps | ModelMapLayerProps;\r\n\r\n/**\r\n * stores key-value pair to be added to all requests made involving map layer.\r\n * @public\r\n */\r\nexport interface MapLayerKey {\r\n key: string;\r\n value: string;\r\n}\r\n\r\n/** Abstract base class for normalized representation of a [[MapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * This class is extended by [[ImageMapLayerSettings]] and [[ModelMapLayerSettings]] to create the settings for image and model based layers.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @public\r\n */\r\nexport abstract class MapLayerSettings {\r\n public readonly visible: boolean;\r\n\r\n public readonly name: string;\r\n public readonly transparency: number;\r\n public readonly transparentBackground: boolean;\r\n public abstract get allSubLayersInvisible(): boolean;\r\n public abstract clone(changedProps: Partial<MapLayerProps>): MapLayerSettings;\r\n public abstract toJSON(): MapLayerProps;\r\n\r\n /** @internal */\r\n protected constructor(name: string, visible = true, transparency: number = 0, transparentBackground = true) {\r\n this.name = name;\r\n this.visible = visible;\r\n this.transparentBackground = transparentBackground;\r\n this.transparency = transparency;\r\n }\r\n\r\n /** Create a map layer settings from its JSON representation. */\r\n public static fromJSON(props: MapLayerProps): MapLayerSettings {\r\n return undefined !== props.modelId ? ModelMapLayerSettings.fromJSON(props) : ImageMapLayerSettings.fromJSON(props);\r\n }\r\n\r\n /** @internal */\r\n protected _toJSON(): CommonMapLayerProps {\r\n const props: CommonMapLayerProps = {\r\n name: this.name,\r\n visible: this.visible,\r\n };\r\n\r\n if (0 !== this.transparency)\r\n props.transparency = this.transparency;\r\n\r\n if (this.transparentBackground === false)\r\n props.transparentBackground = this.transparentBackground;\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n protected cloneProps(changedProps: Partial<MapLayerProps>): CommonMapLayerProps {\r\n return {\r\n name: undefined !== changedProps.name ? changedProps.name : this.name,\r\n visible: undefined !== changedProps.visible ? changedProps.visible : this.visible,\r\n transparency: undefined !== changedProps.transparency ? changedProps.transparency : this.transparency,\r\n transparentBackground: undefined !== changedProps.transparentBackground ? changedProps.transparentBackground : this.transparentBackground,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public displayMatches(other: MapLayerSettings): boolean {\r\n return this.name === other.name && this.visible === other.visible && this.transparency === other.transparency && this.transparentBackground === other.transparentBackground;\r\n }\r\n\r\n /** Return a unique string identifying the layers source... The URL for image layer or modelID for model layer */\r\n public abstract get source(): string;\r\n\r\n /** @internal */\r\n public matchesNameAndSource(name: string, source: string): boolean {\r\n return this.name === name && this.source === source;\r\n }\r\n}\r\n\r\n/** Normalized representation of a [[ImageMapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * Image map layers are created from servers that produce images that represent map tiles. Map layers map also be represented by models.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @see [[ModelMapLayerSettings]] for model based map layer settings.\r\n * @public\r\n */\r\nexport class ImageMapLayerSettings extends MapLayerSettings {\r\n public readonly formatId: string;\r\n public readonly url: string;\r\n public userName?: string;\r\n public password?: string;\r\n public accessKey?: MapLayerKey;\r\n\r\n /** Former name of [[queryParams]], which stores the value; retained as the backing field so existing subclasses\r\n * and `delete` keep working.\r\n * @deprecated in 5.16. Use [[queryParams]].\r\n * @beta\r\n */\r\n public savedQueryParams?: { [key: string]: string };\r\n\r\n /** Non-secret query parameters appended to every request made for the layer, persisted as part of the JSON\r\n * representation ([[ImageMapLayerProps.queryParams]]). Secrets must never be placed here; the hosting application\r\n * injects them per session through a fetch handler (see `MapLayerFormatRegistry.addMapLayerFetchHandler` in\r\n * `@itwin/core-frontend`), which also protects them against leaking through redirects.\r\n * @beta\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- the deprecated field is the storage until its removal.\r\n public get queryParams(): { [key: string]: string } | undefined { return this.savedQueryParams; }\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n public set queryParams(value: { [key: string]: string } | undefined) { this.savedQueryParams = value; }\r\n\r\n /** List of query parameters that will get appended to the settings URL that should *not* be be persisted part of the JSON representation.\r\n * @deprecated in 5.16. Register a fetch handler (`MapLayerFormatRegistry.addMapLayerFetchHandler` in `@itwin/core-frontend`) to inject secret or per-session parameters, which unlike this field are protected against leaking through redirects; use [[queryParams]] for non-secret parameters.\r\n * @beta\r\n */\r\n public unsavedQueryParams?: { [key: string]: string };\r\n\r\n /** Properties specific to the map layer provider.\r\n * @beta\r\n */\r\n public readonly properties?: MapLayerProviderProperties;\r\n\r\n public readonly subLayers: MapSubLayerSettings[];\r\n public override get source(): string { return this.url; }\r\n\r\n /** @internal */\r\n protected constructor(props: ImageMapLayerProps) {\r\n const transparentBackground = props.transparentBackground ?? true;\r\n super(props.name, props.visible, props.transparency, transparentBackground);\r\n\r\n this.formatId = props.formatId;\r\n this.url = props.url;\r\n this.accessKey = props.accessKey;\r\n if (props.queryParams) {\r\n this.queryParams = {...props.queryParams};\r\n }\r\n\r\n if (props.properties) {\r\n this.properties = {...props.properties}\r\n }\r\n\r\n this.subLayers = [];\r\n if (!props.subLayers)\r\n return;\r\n\r\n for (const subLayerProps of props.subLayers) {\r\n const subLayer = MapSubLayerSettings.fromJSON(subLayerProps);\r\n if (subLayer)\r\n this.subLayers.push(subLayer);\r\n }\r\n }\r\n\r\n public static override fromJSON(props: ImageMapLayerProps): ImageMapLayerSettings {\r\n return new this(props);\r\n }\r\n\r\n /** return JSON representation of this MapLayerSettings object */\r\n public override toJSON(): ImageMapLayerProps {\r\n const props = super._toJSON() as ImageMapLayerProps;\r\n props.url = this.url;\r\n props.formatId = this.formatId;\r\n\r\n if (this.subLayers.length > 0)\r\n props.subLayers = this.subLayers.map((x) => x.toJSON());\r\n\r\n if (this.queryParams)\r\n props.queryParams = {...this.queryParams};\r\n\r\n if (this.properties) {\r\n props.properties = structuredClone(this.properties);\r\n }\r\n\r\n return props;\r\n }\r\n\r\n /** Create a copy of this MapLayerSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A MapLayerSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps: Partial<ImageMapLayerProps>): ImageMapLayerSettings {\r\n const clone = ImageMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n\r\n // Clone members not part of MapLayerProps\r\n clone.userName = this.userName;\r\n clone.password = this.password;\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.\r\n if (this.unsavedQueryParams)\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n clone.unsavedQueryParams = {...this.unsavedQueryParams};\r\n\r\n return clone;\r\n }\r\n\r\n /** @internal */\r\n protected override cloneProps(changedProps: Partial<ImageMapLayerProps>): ImageMapLayerProps {\r\n const props = super.cloneProps(changedProps) as ImageMapLayerProps;\r\n\r\n props.formatId = changedProps.formatId ?? this.formatId;\r\n props.url = changedProps.url ?? this.url;\r\n props.accessKey = changedProps.accessKey ?? this.accessKey;\r\n props.subLayers = changedProps.subLayers ?? this.subLayers;\r\n if (changedProps.queryParams) {\r\n props.queryParams = {...changedProps.queryParams};\r\n } else if (this.queryParams) {\r\n props.queryParams = {...this.queryParams};\r\n }\r\n\r\n if (changedProps.properties) {\r\n props.properties = {...changedProps.properties}\r\n } else if (this.properties) {\r\n props.properties = {...this.properties}\r\n }\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override displayMatches(other: MapLayerSettings): boolean {\r\n if (! (other instanceof ImageMapLayerSettings) || !super.displayMatches(other))\r\n return false;\r\n\r\n if (this.userName !== other.userName || this.password !== other.password || this.subLayers.length !== other.subLayers.length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < this.subLayers.length; i++)\r\n if (!this.subLayers[i].displayMatches(other.subLayers[i]))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n /** Return a sublayer matching id -- or undefined if not found */\r\n public subLayerById(id?: SubLayerId): MapSubLayerSettings | undefined {\r\n return id === undefined ? undefined : this.subLayers.find((subLayer) => subLayer.id === id);\r\n }\r\n\r\n private hasInvisibleAncestors(subLayer?: MapSubLayerSettings): boolean {\r\n if (!subLayer || !subLayer.parent)\r\n return false;\r\n\r\n const parent = this.subLayerById(subLayer.parent);\r\n if (!parent)\r\n return false;\r\n\r\n // Visibility of named group has no impact on the visibility of children (only unnamed group does)\r\n // i.e For WMS, its should be possible to request a child layer when its parent is not visible (if the parent is also named)\r\n return (!parent.visible && !parent.isNamed) || this.hasInvisibleAncestors(parent);\r\n }\r\n\r\n /** Return true if sublayer is visible -- testing ancestors for visibility if they exist. */\r\n public isSubLayerVisible(subLayer: MapSubLayerSettings): boolean {\r\n if (!subLayer.visible)\r\n return false;\r\n\r\n return !this.hasInvisibleAncestors(subLayer);\r\n }\r\n\r\n /** Return true if all sublayers are invisible. */\r\n public get allSubLayersInvisible(): boolean {\r\n if (this.subLayers.length === 0)\r\n return false;\r\n\r\n return this.subLayers.every((subLayer) => (subLayer.isUnnamedGroup || !this.isSubLayerVisible(subLayer)));\r\n }\r\n\r\n /** Return the children for a sublayer */\r\n public getSubLayerChildren(subLayer: MapSubLayerSettings): MapSubLayerSettings[] | undefined {\r\n if (!subLayer.children)\r\n return undefined;\r\n\r\n const children = new Array<MapSubLayerSettings>();\r\n subLayer.children.forEach((childId) => {\r\n const child = this.subLayerById(childId);\r\n if (child !== undefined)\r\n children.push(child);\r\n });\r\n\r\n return children;\r\n }\r\n\r\n /** @internal */\r\n protected static mapTypeName(type: BackgroundMapType) { // TBD.. Localization.\r\n switch (type) {\r\n case BackgroundMapType.Aerial:\r\n return \"Aerial Imagery\";\r\n default:\r\n case BackgroundMapType.Hybrid:\r\n return \"Aerial Imagery with labels\";\r\n case BackgroundMapType.Street:\r\n return \"Streets\";\r\n }\r\n }\r\n\r\n public setCredentials(userName?: string, password?: string) {\r\n this.userName = userName;\r\n this.password = password;\r\n }\r\n\r\n /** The query parameters actually sent with requests: [[queryParams]] overlaid with the deprecated `unsavedQueryParams`\r\n * (a key present in both takes the latter's value). Equals a copy of [[queryParams]] once `unsavedQueryParams` is removed.\r\n * @beta\r\n */\r\n public collectQueryParams() {\r\n let queryParams: {[key: string]: string} = {};\r\n if (this.queryParams)\r\n queryParams = {...this.queryParams};\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- kept for backward compatibility until removal.\r\n if (this.unsavedQueryParams)\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n queryParams = {...queryParams, ...this.unsavedQueryParams};\r\n\r\n return queryParams;\r\n }\r\n}\r\n\r\n/** Normalized representation of a [[ModelMapLayerProps]] for which values have been validated and default values have been applied where explicit values not defined.\r\n * Model map layers are produced from models, typically from two dimensional geometry that may originate in a GIS system.\r\n * One or more map layers may be included within [[MapImagerySettings]] object.\r\n * @see [[MapImagerySettings]]\r\n * @see [[ImageMapLayerSettings]] for image based map layer settings.\r\n * @public\r\n */\r\nexport class ModelMapLayerSettings extends MapLayerSettings {\r\n /** Specifies the target onto which to drape this model map layer. Defaults to [ModelMapLayerDrapeTarget.Globe]($common).\r\n * @beta\r\n */\r\n public readonly drapeTarget: ModelMapLayerDrapeTarget;\r\n public readonly modelId: Id64String;\r\n public override get source(): string { return this.modelId; }\r\n\r\n /** @internal */\r\n protected constructor(modelId: Id64String, name: string, visible = true,\r\n transparency: number = 0, transparentBackground = true, drapeTarget = ModelMapLayerDrapeTarget.Globe) {\r\n super(name, visible, transparency, transparentBackground);\r\n this.modelId = modelId;\r\n this.drapeTarget = drapeTarget;\r\n }\r\n\r\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\r\n public static override fromJSON(json: ModelMapLayerProps): ModelMapLayerSettings {\r\n const transparentBackground = (json.transparentBackground === undefined) ? true : json.transparentBackground;\r\n return new this(json.modelId, json.name, json.visible, json.transparency, transparentBackground, json.drapeTarget);\r\n }\r\n\r\n /** return JSON representation of this MapLayerSettings object */\r\n public override toJSON(): ModelMapLayerProps {\r\n const props = super._toJSON() as ModelMapLayerProps;\r\n props.modelId = this.modelId;\r\n if (this.drapeTarget !== ModelMapLayerDrapeTarget.Globe)\r\n props.drapeTarget = this.drapeTarget;\r\n return props;\r\n }\r\n\r\n /** Create a copy of this MapLayerSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A MapLayerSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps: Partial<ModelMapLayerProps>): ModelMapLayerSettings {\r\n return ModelMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n }\r\n\r\n /** @internal */\r\n protected override cloneProps(changedProps: Partial<ModelMapLayerProps>): ModelMapLayerProps {\r\n const props = super.cloneProps(changedProps) as ModelMapLayerProps;\r\n props.modelId = changedProps.modelId ?? this.modelId;\r\n props.drapeTarget = changedProps.drapeTarget ?? this.drapeTarget;\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override displayMatches(other: MapLayerSettings): boolean {\r\n if (!(other instanceof ModelMapLayerSettings) || !super.displayMatches(other))\r\n return false;\r\n\r\n return this.modelId === other.modelId;\r\n }\r\n\r\n /** Return true if all sublayers are invisible (always false as model layers do not include sublayers). */\r\n public get allSubLayersInvisible(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n/** JSON representation of a [[BaseMapLayerSettings]].\r\n * @public\r\n */\r\nexport interface BaseMapLayerProps extends ImageMapLayerProps {\r\n provider?: BackgroundMapProviderProps;\r\n}\r\n\r\n/** A [[ImageMapLayerSettings]] that can serve as the base layer for a [[MapImagerySettings]].\r\n * The base layer supports all of the same options as any other layer, but also allows for simplified configuration based\r\n * on a small set of known supported [[BackgroundMapProvider]]s like [Bing Maps](https://www.microsoft.com/en-us/maps).\r\n * If the base layer was configured from such a provider, that information will be preserved and can be queried; this allows\r\n * the imagery provider and/or type to be easily modified.\r\n * @see [[MapImagerySettings.backgroundBase]].\r\n * @public\r\n */\r\nexport class BaseMapLayerSettings extends ImageMapLayerSettings {\r\n private _provider?: BackgroundMapProvider;\r\n\r\n /** The provider from which this base layer was configured, if any. */\r\n public get provider(): BackgroundMapProvider | undefined { return this._provider; }\r\n\r\n /** Create a base layer from its JSON representation.\r\n * TODO: This, MapLayerSettings.fromJSON, and MapSubLayerSettings.fromJSON should never return undefined.\r\n * That means they should not accept undefined for props and should define props such that it fully describes the\r\n * layer - e.g., url and name must be defined.\r\n */\r\n public static override fromJSON(props: BaseMapLayerProps): BaseMapLayerSettings {\r\n const settings = super.fromJSON(props);\r\n assert(settings instanceof BaseMapLayerSettings);\r\n if (props.provider)\r\n settings._provider = BackgroundMapProvider.fromJSON(props.provider);\r\n\r\n return settings;\r\n }\r\n\r\n /** Convert this layer to its JSON representation. */\r\n public override toJSON(): BaseMapLayerProps {\r\n const props = super.toJSON() as BaseMapLayerProps;\r\n if (this.provider)\r\n props.provider = this.provider.toJSON();\r\n\r\n return props;\r\n }\r\n\r\n /** @internal */\r\n public override cloneProps(changedProps: Partial<BaseMapLayerProps>): BaseMapLayerProps {\r\n const props = super.cloneProps(changedProps) as BaseMapLayerProps;\r\n\r\n if (changedProps.provider)\r\n props.provider = changedProps.provider;\r\n else if (this.provider)\r\n props.provider = this.provider.toJSON();\r\n\r\n return props;\r\n }\r\n\r\n /** Create a copy of this layer. */\r\n public override clone(changedProps: Partial<BaseMapLayerProps>): BaseMapLayerSettings {\r\n const prevUrl = this.url;\r\n const clone = BaseMapLayerSettings.fromJSON(this.cloneProps(changedProps));\r\n\r\n if (this.provider && prevUrl !== this.url)\r\n clone._provider = undefined;\r\n\r\n return clone;\r\n }\r\n\r\n /** Create a base layer from a BackgroundMapProvider. */\r\n public static fromProvider(provider: BackgroundMapProvider, options?: { invisible?: boolean, transparency?: number }): BaseMapLayerSettings {\r\n let formatId: string, url: string, name: string;\r\n switch (provider.name) {\r\n case \"BingProvider\":\r\n default:\r\n formatId = \"BingMaps\";\r\n\r\n let imagerySet;\r\n switch (provider.type) {\r\n case BackgroundMapType.Street:\r\n imagerySet = \"Road\";\r\n break;\r\n case BackgroundMapType.Aerial:\r\n imagerySet = \"Aerial\";\r\n break;\r\n case BackgroundMapType.Hybrid:\r\n default:\r\n imagerySet = \"AerialWithLabels\";\r\n break;\r\n }\r\n\r\n name = `Bing Maps: ${ImageMapLayerSettings.mapTypeName(provider.type)}`;\r\n url = `https://dev.virtualearth.net/REST/v1/Imagery/Metadata/${imagerySet}?o=json&incl=ImageryProviders&key={bingKey}`;\r\n break;\r\n\r\n case \"MapBoxProvider\":\r\n formatId = \"MapboxImagery\";\r\n name = `MapBox: ${ImageMapLayerSettings.mapTypeName(provider.type)}`;\r\n switch (provider.type) {\r\n case BackgroundMapType.Street:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/\";\r\n break;\r\n case BackgroundMapType.Aerial:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/satellite-v9/tiles/\";\r\n break;\r\n case BackgroundMapType.Hybrid:\r\n url = \"https://api.mapbox.com/styles/v1/mapbox/satellite-streets-v11/tiles/\";\r\n break;\r\n }\r\n\r\n break;\r\n }\r\n\r\n const settings = super.fromJSON({\r\n name,\r\n formatId,\r\n url,\r\n transparentBackground: false,\r\n visible: !options?.invisible,\r\n transparency: options?.transparency,\r\n });\r\n\r\n assert(undefined !== settings);\r\n assert(settings instanceof BaseMapLayerSettings);\r\n\r\n settings._provider = provider;\r\n return settings;\r\n }\r\n\r\n /** @internal */\r\n public static fromBackgroundMapProps(props: DeprecatedBackgroundMapProps): BaseMapLayerSettings {\r\n return this.fromProvider(BackgroundMapProvider.fromBackgroundMapProps(props));\r\n }\r\n\r\n /** @alpha */\r\n public cloneWithProvider(provider: BackgroundMapProvider): BaseMapLayerSettings {\r\n return BaseMapLayerSettings.fromProvider(provider, { invisible: !this.visible, transparency: this.transparency });\r\n }\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/core-common",
3
- "version": "5.16.0-dev.4",
3
+ "version": "5.16.0-dev.5",
4
4
  "description": "iTwin.js components common to frontend and backend",
5
5
  "main": "lib/cjs/core-common.js",
6
6
  "module": "lib/esm/core-common.js",
@@ -27,8 +27,8 @@
27
27
  "js-base64": "^3.6.1"
28
28
  },
29
29
  "peerDependencies": {
30
- "@itwin/core-bentley": "5.16.0-dev.4",
31
- "@itwin/core-geometry": "5.16.0-dev.4"
30
+ "@itwin/core-bentley": "5.16.0-dev.5",
31
+ "@itwin/core-geometry": "5.16.0-dev.5"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@itwin/eslint-plugin": "^6.0.0",
@@ -40,9 +40,9 @@
40
40
  "rimraf": "^6.0.1",
41
41
  "typescript": "~5.6.2",
42
42
  "vitest": "^4.1.10",
43
- "@itwin/build-tools": "5.16.0-dev.4",
44
- "@itwin/core-bentley": "5.16.0-dev.4",
45
- "@itwin/core-geometry": "5.16.0-dev.4"
43
+ "@itwin/core-bentley": "5.16.0-dev.5",
44
+ "@itwin/build-tools": "5.16.0-dev.5",
45
+ "@itwin/core-geometry": "5.16.0-dev.5"
46
46
  },
47
47
  "scripts": {
48
48
  "build": "npm run -s build:cjs && npm run -s build:esm",