@vertigis/arcgis-extensions 52.1.0 → 52.2.0

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.
Files changed (33) hide show
  1. package/AppConfig.schema.json +17 -1
  2. package/declarations/arcgis-js-api-extensions/index.d.ts +10 -0
  3. package/docs/html/assets/navigation.js +1 -1
  4. package/docs/html/assets/search.js +1 -1
  5. package/docs/html/enums/support_esri.WellKnownBasemap.html +9 -1
  6. package/docs/html/functions/json_BasemapJson.basemapToJson.html +4 -0
  7. package/docs/html/functions/json_BasemapJson.jsonToBasemap.html +1 -1
  8. package/docs/html/functions/utilities_basemaps.basemapHas3DLayers.html +4 -0
  9. package/docs/html/functions/utilities_basemaps.getStandardBasemapThumbnailUrl.html +3 -0
  10. package/docs/html/functions/utilities_basemaps.isStandardBasemap2D.html +3 -0
  11. package/docs/html/hierarchy.html +1 -1
  12. package/docs/html/interfaces/json_BasemapLayerJson.BasemapLayerJsonBase.html +1 -1
  13. package/docs/html/interfaces/json_SceneLayerJson.SceneLayerJson.html +23 -13
  14. package/docs/html/modules/json_BasemapJson.html +1 -0
  15. package/docs/html/modules/utilities_basemaps.html +4 -1
  16. package/docs/html/types/json_BasemapLayerJson.BasemapLayerJson.html +1 -1
  17. package/docs/html/variables/version.version.html +1 -1
  18. package/json/BasemapJson.d.ts +14 -2
  19. package/json/BasemapJson.js +1 -1
  20. package/json/BasemapLayerJson.d.ts +2 -1
  21. package/json/SceneLayerJson.d.ts +11 -1
  22. package/layer-preset/LayerPreset.js +1 -1
  23. package/mapping/BasemapExtension.js +1 -1
  24. package/mapping/MapExtension.js +1 -1
  25. package/package.json +1 -1
  26. package/support/esri.d.ts +8 -0
  27. package/support/esri.js +1 -1
  28. package/utilities/_layers.d.ts +1 -1
  29. package/utilities/_layers.js +1 -1
  30. package/utilities/basemaps.d.ts +20 -1
  31. package/utilities/basemaps.js +1 -1
  32. package/version.d.ts +1 -1
  33. package/version.js +1 -1
@@ -1,2 +1,2 @@
1
- <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>version | @vertigis/arcgis-extensions</title><meta name="description" content="Documentation for @vertigis/arcgis-extensions"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vertigis/arcgis-extensions</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">@vertigis/arcgis-extensions</a></li><li><a href="../modules/version.html">version</a></li><li><a href="version.version.html">version</a></li></ul><h1>Variable version<code class="tsd-tag">Const</code></h1></div><div class="tsd-signature"><span class="tsd-kind-variable">version</span><span class="tsd-signature-symbol"> = &quot;52.1.0&quot;</span></div><div class="tsd-comment tsd-typography"><p>The current version of the Geocortex ArcGIS Extensions API.</p>
1
+ <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>version | @vertigis/arcgis-extensions</title><meta name="description" content="Documentation for @vertigis/arcgis-extensions"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vertigis/arcgis-extensions</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">@vertigis/arcgis-extensions</a></li><li><a href="../modules/version.html">version</a></li><li><a href="version.version.html">version</a></li></ul><h1>Variable version<code class="tsd-tag">Const</code></h1></div><div class="tsd-signature"><span class="tsd-kind-variable">version</span><span class="tsd-signature-symbol"> = &quot;52.2.0&quot;</span></div><div class="tsd-comment tsd-typography"><p>The current version of the Geocortex ArcGIS Extensions API.</p>
2
2
  </div><div class="tsd-comment tsd-typography"></div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@vertigis/arcgis-extensions</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
@@ -1,5 +1,5 @@
1
1
  import Basemap from "@arcgis/core/Basemap";
2
- import type { BasemapLayerJson } from "./BasemapLayerJson";
2
+ import { type BasemapLayerJson } from "./BasemapLayerJson.js";
3
3
  import type { ElevationLayerJson } from "./ElevationLayerJson";
4
4
  /**
5
5
  * A basemap layer is a layer that provides geographic context to the map. A web
@@ -35,7 +35,7 @@ export interface BasemapJson {
35
35
  title?: string | null;
36
36
  }
37
37
  /**
38
- * Creates an ArcGIS JS API Basemap from the given basemap JSON.
38
+ * Creates an ArcGIS JS API Basemap from the given basemap JSON. Small change.
39
39
  *
40
40
  * @param json The JSON to convert.
41
41
  */
@@ -47,3 +47,15 @@ export declare function jsonToBasemap(json: BasemapJson): Promise<Basemap>;
47
47
  * @param basemap The basemap to update.
48
48
  */
49
49
  export declare function applyJsonToBasemap(basemapJson: Partial<BasemapJson>, basemap: Basemap): Promise<void>;
50
+ /**
51
+ * Serializes a basemap to JSON, using the correct origin for 3D basemaps.
52
+ *
53
+ * @param basemap The basemap to serialize.
54
+ * @returns The JSON representation of the basemap.
55
+ */
56
+ export declare function basemapToJson(basemap: Basemap): BasemapJson & {
57
+ origin?: "web-map" | "web-scene";
58
+ portal?: {
59
+ url: string;
60
+ };
61
+ };
@@ -1 +1 @@
1
- import t from"@arcgis/core/Basemap";import{createStandardBasemap as e,getStandardBasemapId as a}from"../utilities/basemaps.js";import{applyJsonToLayers as i}from"./LayerJson.js";export async function jsonToBasemap(i){const r=a(i);if(r){const t=await e(r);return t.id=i.id??t.id,t.title=i.title??t.title,t}return t.fromJSON(i)}export async function applyJsonToBasemap(t,e){e.loaded||await e.load(),t.hasOwnProperty("title")&&null!=t.title&&(e.title=t.title);const a=[],r=[];t.baseMapLayers?.forEach((t=>{t.path||(t.isReference?r:a).push(t)})),(a.length||r.length)&&(await i(a,e.baseLayers),await i(r,e.referenceLayers))}
1
+ import e from"@arcgis/core/Basemap";import t from"@arcgis/core/portal/Portal.js";import{basemapHas3DLayers as a,createStandardBasemap as o,getStandardBasemapId as r}from"../utilities/basemaps.js";import{}from"./BasemapLayerJson.js";import{applyJsonToLayers as i}from"./LayerJson.js";export async function jsonToBasemap(i){const s=r(i);if(s){const e=await o(s);return e.id=i.id??e.id,e.title=i.title??e.title,e}{const o=a(i);return e.fromJSON(i,o?{origin:"web-scene",portal:t.getDefault()}:{origin:"web-map"})}}export async function applyJsonToBasemap(e,t){t.loaded||await t.load(),e.hasOwnProperty("title")&&null!=e.title&&(t.title=e.title);const a=[],o=[];e.baseMapLayers?.forEach((e=>{e.path||(e.isReference?o:a).push(e)})),(a.length||o.length)&&(await i(a,t.baseLayers),await i(o,t.referenceLayers))}export function basemapToJson(e){return e?a(e)?e.write({},{origin:"web-scene",portal:t.getDefault()}):e.toJSON():{}}
@@ -4,6 +4,7 @@ import type { ImageServiceVectorLayerJson } from "./ImageServiceVectorLayerJson.
4
4
  import type { LayerJsonBase } from "./LayerJson.js";
5
5
  import type { MapServiceLayerJson } from "./MapServiceLayerJson.js";
6
6
  import type { OpenStreetMapLayerJson } from "./OpenStreetMapLayerJson.js";
7
+ import type { SceneLayerJson } from "./SceneLayerJson.js";
7
8
  import type { TiledImageServiceLayerJson } from "./TiledImageServiceLayerJson.js";
8
9
  import type { TiledMapServiceLayerJson } from "./TiledMapServiceLayerJson.js";
9
10
  import type { VectorTileLayerJson } from "./VectorTileLayerJson.js";
@@ -26,4 +27,4 @@ export interface BasemapLayerJsonBase extends LayerJsonBase {
26
27
  /**
27
28
  * A base map layer in a web map/scene.
28
29
  */
29
- export type BasemapLayerJson = BingLayerJson | ImageServiceLayerJson | ImageServiceVectorLayerJson | MapServiceLayerJson | OpenStreetMapLayerJson | TiledImageServiceLayerJson | TiledMapServiceLayerJson | VectorTileLayerJson | WebTileLayerJson | WMSLayerJson;
30
+ export type BasemapLayerJson = BingLayerJson | ImageServiceLayerJson | ImageServiceVectorLayerJson | MapServiceLayerJson | OpenStreetMapLayerJson | SceneLayerJson | TiledImageServiceLayerJson | TiledMapServiceLayerJson | VectorTileLayerJson | WebTileLayerJson | WMSLayerJson;
@@ -1,3 +1,4 @@
1
+ import type { BasemapLayerJsonBase } from "./BasemapLayerJson";
1
2
  import type { LayerDefinitionJson } from "./LayerDefinitionJson";
2
3
  import type { OperationalLayerJsonBase } from "./OperationalLayerJson";
3
4
  import type { PopupInfoJson } from "./PopupInfoJson";
@@ -8,8 +9,17 @@ import type { PopupInfoJson } from "./PopupInfoJson";
8
9
  *
9
10
  * See
10
11
  * {@link https://developers.arcgis.com/web-scene-specification/objects/sceneLayer/}.
12
+ *
13
+ * Note: `isReference` is not part of the web scene layer spec, but we include
14
+ * BasemapLayerJsonBase to align with the existing basemap-layer typing pattern
15
+ * used across layer JSON types.
11
16
  */
12
- export interface SceneLayerJson extends OperationalLayerJsonBase {
17
+ export interface SceneLayerJson extends OperationalLayerJsonBase, BasemapLayerJsonBase {
18
+ /**
19
+ * A sequence of custom parameters appended to the URL of all requests
20
+ * related to supporting ArcGIS layer types.
21
+ */
22
+ customParameters?: Record<string, unknown> | null;
13
23
  /**
14
24
  * Indicates whether to allow a client to ignore popups defined by the
15
25
  * service item.
@@ -1 +1 @@
1
- var e;import{__decorate as i}from"tslib";import s from"@arcgis/core/core/Collection";import{EntityBase as t}from"../Entity.js";import{InvalidOperationError as a}from"../InvalidOperationError.js";import{ItemType as n}from"../ItemType.js";import{serializable as r}from"../support/Serializable.js";import{watch as o}from"../support/observableUtils.js";import{ObservableMap as l}from"../utilities/ObservableMap.js";import{createFlattenedLayerXList as p,createRef as c,getBackingLayer as d,isIterable as y,isLayerRefEqual as m,isSublayerRefEqual as f,toMapExtension as b}from"../utilities/_layer-preset.js";import{basemapsAreEquivalent as u,createStandardBasemap as x}from"../utilities/basemaps.js";import{map as h}from"../utilities/iterable.js";import{getLogger as S}from"../utilities/log.js";import{LayerPresetSetting as L}from"./LayerPresetSettings.js";const v=S("layer-preset");let E=e=class extends t{icon;iconUrl;title;description;layers;basemap;basemapOptions;_itemType=n.LAYER_PRESET;static createFrom(i){const s=new e,t=b(i);t.basemapExtension?.basemap&&(s.basemap=t.basemapExtension.basemap.toJSON());for(const e of t.basemapOptions.toArray())e.included&&e.basemap&&(s.basemapOptions=s.basemapOptions||[],s.basemapOptions.push(e.basemap.toJSON()));const a=p(t);for(const e of a.toArray()){const i=g(e);if(i){const t=e.allSublayerExtensions;if(t.length>0){i.sublayers=new l;for(const e of t.toArray().filter((e=>!!e.sublayer))){const s=g(e);s&&i.sublayers.set(c(e.sublayer),s)}}s.layers=s.layers??new Map,s.layers.set(c(e.layer),i)}}return s}async applyTo(e){if(y(e)){for(const i of e)await this.applyTo(i);return}const i=b(e);if(this.basemap){const e="string"==typeof this.basemap?await x(this.basemap):this.basemap,s=i.basemapOptions.find((i=>u(i.basemap,e)));s&&(i.basemapExtension=s,s.included=!0)}if(this.basemapOptions){const e=new s;for(const s of await Promise.all(this.basemapOptions.map((async e=>"string"==typeof e?x(e):e)))){const t=i.basemapOptions.find((e=>u(e.basemap,s)));t&&(t.included=!0,e.add(t))}for(const s of i.basemapOptions.toArray())e.includes(s)||i.basemapExtension===s||(s.included=!1)}if(this.layers){const e=p(i);e.forEach((e=>e._resolveLayer()));for(const i of this.layers.keys()){const t=c(i),a=e.find((i=>{const s=c(i);return"string"==typeof s.id&&m(s,t,e.toArray())}));if(a){const t=this.layers.get(i);O(t,a),e.remove(a);const n=()=>{const e=new s(a.allSublayerExtensions.toArray());for(const i of t.sublayers.keys()){const s=c(i),a=e.find((e=>f(c(e),s)));a&&(O(t.sublayers.get(i),a),e.remove(a))}};a.layer.loaded?n():o(a.layer,"loaded",(()=>{try{n()}catch(e){v.error({message:`Error applying LayerPreset to sublayers of LayerExtension with ID '${a.id}' and title '${a.title}'.`,error:e})}}),{once:!0})}}}}_getSerializableProperties(){return{...super._getSerializableProperties(),title:"initial",iconUrl:"initial",description:"initial",layers:{serializeModes:["initial"],serialize:e=>{if(this.layers)return Array.from(h(this.layers.entries(),(i=>{let s={layer:i[0]};const t=i[1].toJSON(e);return s={...s,...t,sublayers:t?.sublayers},s})))},deserialize:e=>{this.layers=new Map;for(const i of e){if(!i.layer)throw new a("Cannot define a LayerPresetSetting that does not have layer reference.");this.layers.set(i.layer,new L(i))}},isDefault:e=>!e},icon:"initial",basemap:"initial",basemapOptions:{serializeModes:["initial"]}}}};E=e=i([r],E);export{E as LayerPreset};function g(e){const i=new L,s=d(e);if(i.visible=s.visible,i.opacity=s.opacity,"definitionExpression"in s&&(i.definitionExpression=s.definitionExpression),e.layerListSettings.included)return i.expanded=e.layerListSettings.expanded,i}function O(e,i){const s=d(i);void 0!==e.definitionExpression&&null!==e.definitionExpression&&"definitionExpression"in s&&(s.definitionExpression=e.definitionExpression),void 0!==e.visible&&null!==e.visible&&(s.visible=e.visible),void 0!==e.opacity&&null!==e.opacity&&(s.opacity=e.opacity),void 0!==e.maxScale&&null!==e.maxScale&&(s.maxScale=e.maxScale),void 0!==e.minScale&&null!==e.minScale&&(s.minScale=e.minScale),void 0!==e.includedInLayerList&&null!==e.includedInLayerList&&(i.layerListSettings.included=e.includedInLayerList),void 0!==e.expanded&&null!==e.expanded&&(i.layerListSettings.expanded=e.expanded),void 0!==e.childrenIncludedInLayerList&&null!==e.childrenIncludedInLayerList&&(i.layerListSettings.childrenIncluded=e.childrenIncludedInLayerList)}
1
+ var e;import{__decorate as i}from"tslib";import s from"@arcgis/core/core/Collection";import{EntityBase as t}from"../Entity.js";import{InvalidOperationError as a}from"../InvalidOperationError.js";import{ItemType as n}from"../ItemType.js";import{basemapToJson as r}from"../json/BasemapJson.js";import{serializable as o}from"../support/Serializable.js";import{watch as l}from"../support/observableUtils.js";import{ObservableMap as p}from"../utilities/ObservableMap.js";import{createFlattenedLayerXList as c,createRef as d,getBackingLayer as m,isIterable as y,isLayerRefEqual as f,isSublayerRefEqual as b,toMapExtension as u}from"../utilities/_layer-preset.js";import{basemapsAreEquivalent as x,createStandardBasemap as h}from"../utilities/basemaps.js";import{map as L}from"../utilities/iterable.js";import{getLogger as v}from"../utilities/log.js";import{LayerPresetSetting as E}from"./LayerPresetSettings.js";const S=v("layer-preset");let g=e=class extends t{icon;iconUrl;title;description;layers;basemap;basemapOptions;_itemType=n.LAYER_PRESET;static createFrom(i){const s=new e,t=u(i);t.basemapExtension?.basemap&&(s.basemap=r(t.basemapExtension.basemap));for(const e of t.basemapOptions.toArray())e.included&&e.basemap&&(s.basemapOptions=s.basemapOptions||[],s.basemapOptions.push(r(e.basemap)));const a=c(t);for(const e of a.toArray()){const i=w(e);if(i){const t=e.allSublayerExtensions;if(t.length>0){i.sublayers=new p;for(const e of t.toArray().filter((e=>!!e.sublayer))){const s=w(e);s&&i.sublayers.set(d(e.sublayer),s)}}s.layers=s.layers??new Map,s.layers.set(d(e.layer),i)}}return s}async applyTo(e){if(y(e)){for(const i of e)await this.applyTo(i);return}const i=u(e);if(this.basemap){const e="string"==typeof this.basemap?await h(this.basemap):this.basemap,s=i.basemapOptions.find((i=>x(i.basemap,e)));s&&(i.basemapExtension=s,s.included=!0)}if(this.basemapOptions){const e=new s;for(const s of await Promise.all(this.basemapOptions.map((async e=>"string"==typeof e?h(e):e)))){const t=i.basemapOptions.find((e=>x(e.basemap,s)));t&&(t.included=!0,e.add(t))}for(const s of i.basemapOptions.toArray())e.includes(s)||i.basemapExtension===s||(s.included=!1)}if(this.layers){const e=c(i);e.forEach((e=>e._resolveLayer()));for(const i of this.layers.keys()){const t=d(i),a=e.find((i=>{const s=d(i);return"string"==typeof s.id&&f(s,t,e.toArray())}));if(a){const t=this.layers.get(i);O(t,a),e.remove(a);const n=()=>{const e=new s(a.allSublayerExtensions.toArray());for(const i of t.sublayers.keys()){const s=d(i),a=e.find((e=>b(d(e),s)));a&&(O(t.sublayers.get(i),a),e.remove(a))}};a.layer.loaded?n():l(a.layer,"loaded",(()=>{try{n()}catch(e){S.error({message:`Error applying LayerPreset to sublayers of LayerExtension with ID '${a.id}' and title '${a.title}'.`,error:e})}}),{once:!0})}}}}_getSerializableProperties(){return{...super._getSerializableProperties(),title:"initial",iconUrl:"initial",description:"initial",layers:{serializeModes:["initial"],serialize:e=>{if(this.layers)return Array.from(L(this.layers.entries(),(i=>{let s={layer:i[0]};const t=i[1].toJSON(e);return s={...s,...t,sublayers:t?.sublayers},s})))},deserialize:e=>{this.layers=new Map;for(const i of e){if(!i.layer)throw new a("Cannot define a LayerPresetSetting that does not have layer reference.");this.layers.set(i.layer,new E(i))}},isDefault:e=>!e},icon:"initial",basemap:"initial",basemapOptions:{serializeModes:["initial"]}}}};g=e=i([o],g);export{g as LayerPreset};function w(e){const i=new E,s=m(e);if(i.visible=s.visible,i.opacity=s.opacity,"definitionExpression"in s&&(i.definitionExpression=s.definitionExpression),e.layerListSettings.included)return i.expanded=e.layerListSettings.expanded,i}function O(e,i){const s=m(i);void 0!==e.definitionExpression&&null!==e.definitionExpression&&"definitionExpression"in s&&(s.definitionExpression=e.definitionExpression),void 0!==e.visible&&null!==e.visible&&(s.visible=e.visible),void 0!==e.opacity&&null!==e.opacity&&(s.opacity=e.opacity),void 0!==e.maxScale&&null!==e.maxScale&&(s.maxScale=e.maxScale),void 0!==e.minScale&&null!==e.minScale&&(s.minScale=e.minScale),void 0!==e.includedInLayerList&&null!==e.includedInLayerList&&(i.layerListSettings.included=e.includedInLayerList),void 0!==e.expanded&&null!==e.expanded&&(i.layerListSettings.expanded=e.expanded),void 0!==e.childrenIncludedInLayerList&&null!==e.childrenIncludedInLayerList&&(i.layerListSettings.childrenIncluded=e.childrenIncludedInLayerList)}
@@ -1 +1 @@
1
- var e;import{__decorate as s}from"tslib";import a from"@arcgis/core/Basemap";import t from"@arcgis/core/core/Collection";import{ArgumentError as i}from"../ArgumentError.js";import{EntityBase as r}from"../Entity.js";import{InvalidOperationError as n}from"../InvalidOperationError.js";import{ItemType as o}from"../ItemType.js";import{TaskSettings as p}from"../data/TaskSettings.js";import{applyJsonToBasemap as m,jsonToBasemap as l}from"../json/BasemapJson.js";import{serializable as c}from"../support/Serializable.js";import{notifyChange as h,onWatch as d,watch as y}from"../support/observableUtils.js";import{basemapsAreEquivalent as _,createStandardBasemap as b}from"../utilities/basemaps.js";import{checkArg as f}from"../utilities/checkArg.js";import{load as E}from"../utilities/esri.js";import{find as x}from"../utilities/iterable.js";import{layersAreEquivalent as u}from"../utilities/layers.js";import{getLogger as L}from"../utilities/log.js";import{isBasemap as B}from"../utilities/mapping.js";import{onCollectionPropertyChange as g}from"../utilities/watch.js";import{_assignLayerExtensions as w}from"./_LayerExtension.js";import{LayerExtensionCollectionBase as z}from"./support/_LayerExtensionCollection.js";const P=L("BasemapExtension");export const defaultBasemapExtensionFactory={create:e=>new M(e)};let M=class extends r{static{e=this}get basemap(){return this._basemap}get mapExtension(){return this._mapExtension}get baseLayerExtensions(){return this._baseLayerExtensions}get referenceLayerExtensions(){return this._referenceLayerExtensions}get iconUrl(){return this._basemap?this._basemap.thumbnailUrl:this._iconUrl}set iconUrl(e){this._basemap?this._basemap.thumbnailUrl=e:this._iconUrl=e}static factory=defaultBasemapExtensionFactory;included=!0;description;onClick;isSeries;taskSettings;_itemType=o.BASEMAP_EXTENSION;_watchHandles=new Map;_iconUrl;_mapExtension;_basemap;_baseLayerExtensions;_referenceLayerExtensions;_deferredBasemapProperties;_createBackingBasemapPromise;constructor(e){super(e);const s=e||{};this._baseLayerExtensions=new S(this),this._referenceLayerExtensions=new j(this),this.taskSettings=this._createTaskSettings(),this.taskSettings.enableSearch=!1,this.taskSettings.enableQuery=!1,this.taskSettings.enableIdentify=!1;let{basemap:t}=s;!t&&s.baseMap&&(t=s.baseMap,L("geocortex.api.mapping.BasemapExtension").warn("BasemapExtension.properties 'baseMap' should be 'basemap'")),B(t)?this._setBasemap(t):t?this._deferredBasemapProperties=t:this._setBasemap(new a)}static create(s){if(!e.factory)throw new n("Cannot create BasemapExtension: no BasemapExtension factory has been registered.");return e.factory.create(s)}_setMapExtension(e){this.mapExtension!==e&&(this._mapExtension=e,h(this,"mapExtension"),this._baseLayerExtensions.onMapExtensionChanged(),this._referenceLayerExtensions.onMapExtensionChanged())}async _switchBasemap(e){if(e===this.basemap)return;f("newBasemap",e).isNotMissing().satisfies((e=>!this.basemap||_(this.basemap,e)),"Basemaps must have compatible layers."),this._deferredBasemapProperties=void 0;const s=new Map,a=new Map;if(this.basemap&&(this.basemap.baseLayers.forEach((e=>{s.set(e,this.baseLayerExtensions.forLayer(e))})),this.basemap.referenceLayers.forEach((e=>{a.set(e,this.referenceLayerExtensions.forLayer(e))}))),await E(this.basemap),this.basemap){const s=this.basemap.toJSON();s.baseMapLayers?.length||delete s.baseMapLayers,await m(s,e)}this._setBasemap(e);const t=[];for(const e of this.basemap.baseLayers.toArray()){const a=x(s.entries(),(([s])=>u(s,e)));a&&t.push((async()=>{const s=a[1];await(s._switchLayer?.(e)),this._baseLayerExtensions._register(s)})())}for(const e of this.basemap.referenceLayers.toArray()){const s=x(a.entries(),(([s])=>u(s,e)));s&&t.push((async()=>{const a=s[1];await(a._switchLayer?.(e)),this._referenceLayerExtensions._register(a)})())}this.isInitialized&&t.push(this._initializeChildren()),await Promise.all(t)}async _createBackingBasemap(){if(this._deferredBasemapProperties)return this._createBackingBasemapPromise=this._createBackingBasemapPromise??(async()=>{if("string"==typeof this._deferredBasemapProperties)this._setBasemap(await b(this._deferredBasemapProperties));else{const e=await l(this._deferredBasemapProperties);this._setBasemap(e)}})(),this._createBackingBasemapPromise}_createTaskSettings(){return new p}_getSerializableProperties(){return{...super._getSerializableProperties(),description:"initial",included:{serializeModes:["initial"],default:!0},iconUrl:{serializeModes:["initial"]},onClick:"initial",isSeries:"initial",basemap:{serializeModes:["initial","project"],serialize:()=>this._serializeBasemap(),isDefault:e=>JSON.stringify(e)===JSON.stringify(new a),deserialize:e=>{if(B(e)){if(e!==this.basemap)throw new i("properties.basemap","Property 'basemap' is read-only.")}else if("string"==typeof e){if((!this._basemap||e!==this._basemap.id)&&this._deferredBasemapProperties!==e)throw new i("properties.basemap","Property 'basemap' is read-only.")}else if(this._basemap)return m(e,this.basemap)}},baseLayerExtensions:{serializeModes:["initial","project"],deserialize:e=>{w(this.baseLayerExtensions,e)}},referenceLayerExtensions:{serializeModes:["initial","project"],deserialize:e=>{w(this.referenceLayerExtensions,e)}},taskSettings:{serialize:!1}}}async _onInitialize(){await this._createBackingBasemap(),await E(this.basemap),this.basemap.baseLayers||(this.basemap.baseLayers=new t),this.basemap.referenceLayers||(this.basemap.referenceLayers=new t),this._baseLayerExtensions.onParentInitialized(),this._referenceLayerExtensions.onParentInitialized(),this.mapExtension&&this.basemap&&(this.mapExtension.map.basemap=this.basemap)}async _postInitialize(){await super._postInitialize(),this._deferredBasemapProperties=void 0,this._watchHandles.set("postInitialize",[g(this,"basemap.baseLayers",(async e=>{const s=(e.added??[]).map((e=>this.baseLayerExtensions.forLayer(e)));await Promise.all(s.map((e=>e.initialize())))})),g(this,"basemap.referenceLayers",(async e=>{const s=(e.added??[]).map((e=>this.referenceLayerExtensions.forLayer(e)));await Promise.all(s.map((e=>e.initialize())))}))])}_onBaseLayerAddedPostInitialize=async e=>this._onLayerAddedPostInitialize(e);_onReferenceLayerAddedPostInitialize=async e=>this._onLayerAddedPostInitialize(e);async _onDestroy(){for(const e of this._watchHandles.values())for(const s of e)s.remove();this._watchHandles.clear(),await super._onDestroy()}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.baseLayerExtensions,yield this.referenceLayerExtensions}_onLayerAddedPostInitialize=async e=>{try{await e.initialize()}catch(s){P.error({message:`Error occurred while initializing layer extension for layer '${e.title??e.layer.id??e.id}'.`,error:s})}};_setBasemap(e){this._basemap=e,this._iconUrl&&(this.basemap.thumbnailUrl=this._iconUrl,this._iconUrl=void 0),this._watchHandles.has("setBasemap")||this._watchHandles.set("setBasemap",[d(this,"iconUrl",(()=>y(this,"basemap.thumbnailUrl",(()=>h(this,"iconUrl")),{sync:!0})))]),h(this,"basemap")}_serializeBasemap(){if(this._deferredBasemapProperties)return this._deferredBasemapProperties;const e=this.basemap?.toJSON();if(!e)return;e.baseMapLayers?.forEach((e=>{"WMS"!==e.layerType&&delete e.layers}));const s=this.baseLayerExtensions.filter((e=>e&&!e.layer));if(s.length>0){const a=s.toArray().map((e=>{const{layer:s}=e.toJSON();return s}));e.baseMapLayers.concat(a)}const a=this.referenceLayerExtensions.filter((e=>e&&!e.layer));if(a.length>0){const s=a.toArray().map((e=>{const{layer:s}=e.toJSON();return s.isReference=!0,s}));e.baseMapLayers.concat(s)}return e}};M=e=s([c],M);export{M as BasemapExtension};class S extends z{get _mapExtension(){return this._parent.mapExtension}constructor(e){super(e,"basemap.baseLayers")}add(e,s){return f("layerX",e).isNotMissing(),e.basemapExtension&&e.basemapExtension!==this._parent&&e.basemapExtension.baseLayerExtensions.remove(e),e._setBasemapExtension(this._parent),super.add(e,s)}_onAdded(e){super._onAdded(e),e._setBasemapExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setBasemapExtension(void 0)}}class j extends z{get _mapExtension(){return this._parent.mapExtension}constructor(e){super(e,"basemap.referenceLayers")}add(e,s){return f("layerX",e).isNotMissing(),e.basemapExtension&&e.basemapExtension!==this._parent&&e.basemapExtension.referenceLayerExtensions.remove(e),e._setBasemapExtension(this._parent),super.add(e,s)}_onAdded(e){super._onAdded(e),e._setBasemapExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setBasemapExtension(void 0)}}
1
+ var e;import{__decorate as s}from"tslib";import a from"@arcgis/core/Basemap";import t from"@arcgis/core/core/Collection";import{ArgumentError as i}from"../ArgumentError.js";import{EntityBase as r}from"../Entity.js";import{InvalidOperationError as n}from"../InvalidOperationError.js";import{ItemType as o}from"../ItemType.js";import{TaskSettings as p}from"../data/TaskSettings.js";import{applyJsonToBasemap as m,jsonToBasemap as c,basemapToJson as h}from"../json/BasemapJson.js";import{}from"../json/BasemapLayerJson.js";import{serializable as l}from"../support/Serializable.js";import{notifyChange as d,onWatch as y,watch as _}from"../support/observableUtils.js";import{basemapsAreEquivalent as f,createStandardBasemap as b,getStandardBasemapId as E,getStandardBasemapThumbnailUrl as x}from"../utilities/basemaps.js";import{checkArg as u}from"../utilities/checkArg.js";import{load as L}from"../utilities/esri.js";import{find as B}from"../utilities/iterable.js";import{layersAreEquivalent as g}from"../utilities/layers.js";import{getLogger as w}from"../utilities/log.js";import{isBasemap as z}from"../utilities/mapping.js";import{onCollectionPropertyChange as P}from"../utilities/watch.js";import{_assignLayerExtensions as j}from"./_LayerExtension.js";import{LayerExtensionCollectionBase as M}from"./support/_LayerExtensionCollection.js";const S=w("BasemapExtension");export const defaultBasemapExtensionFactory={create:e=>new U(e)};let U=class extends r{static{e=this}get basemap(){return this._basemap}get mapExtension(){return this._mapExtension}get baseLayerExtensions(){return this._baseLayerExtensions}get referenceLayerExtensions(){return this._referenceLayerExtensions}get iconUrl(){return this._basemap?.thumbnailUrl||this._iconUrl}set iconUrl(e){this._iconUrl=e,this._basemap&&(this._basemap.thumbnailUrl=e)}static factory=defaultBasemapExtensionFactory;included=!0;description;onClick;isSeries;taskSettings;_itemType=o.BASEMAP_EXTENSION;_watchHandles=new Map;_iconUrl;_mapExtension;_basemap;_baseLayerExtensions;_referenceLayerExtensions;_deferredBasemapProperties;_createBackingBasemapPromise;constructor(e){super(e);const s=e||{};this._baseLayerExtensions=new k(this),this._referenceLayerExtensions=new v(this),this.taskSettings=this._createTaskSettings(),this.taskSettings.enableSearch=!1,this.taskSettings.enableQuery=!1,this.taskSettings.enableIdentify=!1;let{basemap:t}=s;!t&&s.baseMap&&(t=s.baseMap,w("geocortex.api.mapping.BasemapExtension").warn("BasemapExtension.properties 'baseMap' should be 'basemap'")),z(t)?this._setBasemap(t):t?this._deferredBasemapProperties=t:this._setBasemap(new a)}static create(s){if(!e.factory)throw new n("Cannot create BasemapExtension: no BasemapExtension factory has been registered.");return e.factory.create(s)}_setMapExtension(e){this.mapExtension!==e&&(this._mapExtension=e,d(this,"mapExtension"),this._baseLayerExtensions.onMapExtensionChanged(),this._referenceLayerExtensions.onMapExtensionChanged())}async _switchBasemap(e){if(e===this.basemap)return;u("newBasemap",e).isNotMissing().satisfies((e=>!this.basemap||f(this.basemap,e)),"Basemaps must have compatible layers."),this._deferredBasemapProperties=void 0;const s=new Map,a=new Map;if(this.basemap&&(this.basemap.baseLayers.forEach((e=>{s.set(e,this.baseLayerExtensions.forLayer(e))})),this.basemap.referenceLayers.forEach((e=>{a.set(e,this.referenceLayerExtensions.forLayer(e))}))),await L(this.basemap),this.basemap){const s=h(this.basemap);s.baseMapLayers?.length||delete s.baseMapLayers,await m(s,e)}this._setBasemap(e);const t=[];for(const e of this.basemap.baseLayers.toArray()){const a=B(s.entries(),(([s])=>g(s,e)));a&&t.push((async()=>{const s=a[1];await(s._switchLayer?.(e)),this._baseLayerExtensions._register(s)})())}for(const e of this.basemap.referenceLayers.toArray()){const s=B(a.entries(),(([s])=>g(s,e)));s&&t.push((async()=>{const a=s[1];await(a._switchLayer?.(e)),this._referenceLayerExtensions._register(a)})())}this.isInitialized&&t.push(this._initializeChildren()),await Promise.all(t)}async _createBackingBasemap(){if(this._deferredBasemapProperties)return this._createBackingBasemapPromise=this._createBackingBasemapPromise??(async()=>{if("string"==typeof this._deferredBasemapProperties)this._setBasemap(await b(this._deferredBasemapProperties));else{const e=await c(this._deferredBasemapProperties);this._setBasemap(e)}})(),this._createBackingBasemapPromise}_createTaskSettings(){return new p}_getSerializableProperties(){return{...super._getSerializableProperties(),description:"initial",included:{serializeModes:["initial"],default:!0},iconUrl:{serializeModes:["initial"]},onClick:"initial",isSeries:"initial",basemap:{serializeModes:["initial","project"],serialize:()=>this._serializeBasemap(),isDefault:e=>JSON.stringify(e)===JSON.stringify(new a),deserialize:e=>{if(z(e)){if(e!==this.basemap)throw new i("properties.basemap","Property 'basemap' is read-only.")}else if("string"==typeof e){if((!this._basemap||e!==this._basemap.id)&&this._deferredBasemapProperties!==e)throw new i("properties.basemap","Property 'basemap' is read-only.")}else if(this._basemap)return m(e,this.basemap)}},baseLayerExtensions:{serializeModes:["initial","project"],deserialize:e=>{j(this.baseLayerExtensions,e)}},referenceLayerExtensions:{serializeModes:["initial","project"],deserialize:e=>{j(this.referenceLayerExtensions,e)}},taskSettings:{serialize:!1}}}async _onInitialize(){await this._createBackingBasemap(),await L(this.basemap),this.basemap.baseLayers||(this.basemap.baseLayers=new t),this.basemap.referenceLayers||(this.basemap.referenceLayers=new t),this._baseLayerExtensions.onParentInitialized(),this._referenceLayerExtensions.onParentInitialized(),this.mapExtension&&this.basemap&&(this.mapExtension.map.basemap=this.basemap)}async _postInitialize(){await super._postInitialize(),this._deferredBasemapProperties=void 0,this._watchHandles.set("postInitialize",[P(this,"basemap.baseLayers",(async e=>{const s=(e.added??[]).map((e=>this.baseLayerExtensions.forLayer(e)));await Promise.all(s.map((e=>e.initialize())))})),P(this,"basemap.referenceLayers",(async e=>{const s=(e.added??[]).map((e=>this.referenceLayerExtensions.forLayer(e)));await Promise.all(s.map((e=>e.initialize())))}))])}_onBaseLayerAddedPostInitialize=async e=>this._onLayerAddedPostInitialize(e);_onReferenceLayerAddedPostInitialize=async e=>this._onLayerAddedPostInitialize(e);async _onDestroy(){for(const e of this._watchHandles.values())for(const s of e)s.remove();this._watchHandles.clear(),await super._onDestroy()}*_initializableChildCollections(){yield*super._initializableChildCollections(),yield this.baseLayerExtensions,yield this.referenceLayerExtensions}_onLayerAddedPostInitialize=async e=>{try{await e.initialize()}catch(s){S.error({message:`Error occurred while initializing layer extension for layer '${e.title??e.layer.id??e.id}'.`,error:s})}};_setBasemap(e){this._basemap=e;const s=!!this._iconUrl;if(this._iconUrl&&(this.basemap.thumbnailUrl=this._iconUrl,this._iconUrl=void 0),this._watchHandles.has("setBasemap")||this._watchHandles.set("setBasemap",[y(this,"iconUrl",(()=>_(this,"basemap.thumbnailUrl",(()=>d(this,"iconUrl")),{sync:!0})))]),!s){const e=E(this._basemap);if(e){const s=x(e);s&&this.iconUrl!==s&&(this.iconUrl=s)}}d(this,"basemap")}_serializeBasemap(){if(this._deferredBasemapProperties)return this._deferredBasemapProperties;const e=this.basemap?h(this.basemap):void 0;if(!e)return;e.baseMapLayers?.forEach((e=>{"WMS"!==e.layerType&&delete e.layers}));const s=this.baseLayerExtensions.filter((e=>e&&!e.layer));if(s.length>0){const a=s.toArray().map((e=>{const{layer:s}=e.toJSON();return s}));e.baseMapLayers.concat(a)}const a=this.referenceLayerExtensions.filter((e=>e&&!e.layer));if(a.length>0){const s=a.toArray().map((e=>{const{layer:s}=e.toJSON();return s.isReference=!0,s}));e.baseMapLayers.concat(s)}return e}};U=e=s([l],U);export{U as BasemapExtension};class k extends M{get _mapExtension(){return this._parent.mapExtension}constructor(e){super(e,"basemap.baseLayers")}add(e,s){return u("layerX",e).isNotMissing(),e.basemapExtension&&e.basemapExtension!==this._parent&&e.basemapExtension.baseLayerExtensions.remove(e),e._setBasemapExtension(this._parent),super.add(e,s)}_onAdded(e){super._onAdded(e),e._setBasemapExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setBasemapExtension(void 0)}}class v extends M{get _mapExtension(){return this._parent.mapExtension}constructor(e){super(e,"basemap.referenceLayers")}add(e,s){return u("layerX",e).isNotMissing(),e.basemapExtension&&e.basemapExtension!==this._parent&&e.basemapExtension.referenceLayerExtensions.remove(e),e._setBasemapExtension(this._parent),super.add(e,s)}_onAdded(e){super._onAdded(e),e._setBasemapExtension(this._parent)}_onRemoved(e){super._onRemoved(e),e._setBasemapExtension(void 0)}}
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import t from"@arcgis/core/core/Collection";import{ArgumentError as i}from"../ArgumentError.js";import{EntityBase as s}from"../Entity.js";import{InvalidOperationError as a}from"../InvalidOperationError.js";import{isBasemapExtension as n,isBookmark as o,isGroundExtension as r,isLayerPreset as p,isMenu as h,isTableExtension as m,ItemType as l}from"../ItemType.js";import{TableExtension as d}from"../data/TableExtension.js";import{layerToParentJsonCache as c}from"../json/LayerJson.js";import{applyJsonToWebMap as b}from"../json/WebMapJson.js";import{applyJsonToWebScene as _}from"../json/WebSceneJson.js";import{LayerPreset as f}from"../layer-preset/LayerPreset.js";import{Menu as E}from"../menus/Menu.js";import{DefaultArcGISRequestHelper as x}from"../support/ArcGISRequestHelper.js";import{FormatSettings as u}from"../support/FormatSettings.js";import{InitializableCollectionProxy as w}from"../support/InitializableCollectionProxy.js";import{ReadOnlyInitializableCollection as y}from"../support/ReadOnlyInitializableCollection.js";import{serializable as g}from"../support/Serializable.js";import{WellKnownBasemap as M}from"../support/esri.js";import{createIHandle as v,notifyChange as I,onWatch as S,watch as A,watchEvent as z}from"../support/observableUtils.js";import{ReadOnlyCollection as O}from"../utilities/ReadOnlyCollection.js";import T from"../utilities/_ReferenceCountedHandle.js";import{basemapsAreEquivalent as P,createStandardBasemap as V,getStandardBasemapId as L,isStandardBasemap as k}from"../utilities/basemaps.js";import{checkArg as B}from"../utilities/checkArg.js";import{compare as C}from"../utilities/collection.js";import{load as j}from"../utilities/esri.js";import{isGroupLayerExtension as R}from"../utilities/extensions.js";import{filter as H}from"../utilities/iterable.js";import{isWMTSLayer as N,layersAreEquivalent as W}from"../utilities/layers.js";import{getLogger as J}from"../utilities/log.js";import{getMapSpatialReference as F,isMap as q,isWebMap as G,isWebScene as D}from"../utilities/mapping.js";import{toPortalItem as U}from"../utilities/portal.js";import{parallelEach as $}from"../utilities/promise.js";import{onCollectionPropertyChange as X,onEach as Y}from"../utilities/watch.js";import{BasemapExtension as K}from"./BasemapExtension.js";import{Bookmark as Q}from"./Bookmark.js";import{GroundExtension as Z}from"./GroundExtension.js";import{MapConstraints as ee}from"./MapConstraints.js";import{_assignLayerExtensions as te}from"./_LayerExtension.js";import{LayerExtensionCollectionImpl as ie}from"./_LayerExtensionCollectionImpl.js";const se=J("MapExtension");let ae=class extends s{get webMap(){return this._webMap}get webScene(){return this._webScene}get map(){return this._currentMap}get viewMode(){return this.map?D(this.map)?"scene":"map":this.initialViewMode}get initialViewMode(){return this.webMap&&this.webScene?this._initialViewMode||"map":D(this.map)||this.webScene&&!this.webMap?"scene":"map"}set initialViewMode(e){this._initialViewMode=e}get requestHelper(){return this._requestHelper||(this._requestHelper=new x),this._requestHelper}set requestHelper(e){this._requestHelper=e}get basemapExtension(){return this._basemapExtension}set basemapExtension(e){const t=this._basemapExtension;if(t!==e)if(t&&t._setMapExtension(void 0),e){if(e._setMapExtension(this),this.isInitialized&&!e.basemap){if(e.isInitialized)throw e._setMapExtension(void 0),new a("Cannot set MapExtension.basemapExtension without a valid Esri Basemap object");e.initialize()}this._ensureIsBasemapOption(e),this.map&&e.basemap&&e.basemap!==this.map.basemap?this.map.basemap=e.basemap:this._basemapExtension=e}else this.map.basemap=void 0,this._basemapExtension=void 0}get groundExtension(){return this._groundExtension||(this.groundExtension=Z.create({ground:this.map?.ground})),this._groundExtension}set groundExtension(e){if(!e)throw new a("Cannot set map.ground to undefined");const t=this._groundExtension;t!==e&&(t&&t._setMapExtension(void 0),e._setMapExtension(this),e._resolveGround(),e.ground?(this._groundExtensions.set(e.ground,e),this.map&&e.ground!==this.map.ground?this.map.ground=e.ground:this._groundExtension=e):this._groundExtension=e)}get basemapOptions(){return this._basemapOptions}get bookmarks(){return this._bookmarks}get initialBasemapExtension(){return this._initialBasemapExtension}get initialLayerPreset(){return this._initialLayerPreset}set initialLayerPreset(e){if(!e)return void(this._initialLayerPreset=void 0);const t=p(e)?e:new f(e);this._initialLayerPreset=t}get _spatialReference(){return F(this.map)}get webMapItemTitle(){if(this._webMapItem)return this._webMapItem.title}get webSceneItemTitle(){if(this._webSceneItem)return this._webSceneItem.title}get title(){return this._title?this._title:this._webMapItem&&"map"===this.viewMode?this.webMapItemTitle:this._webSceneItem&&"scene"===this.viewMode?this.webSceneItemTitle:void 0}set title(e){this._title=e}formatSettings;constraints;onClick;onHover;onHoverEnd;onInitialized;onViewpointChanged;get contextMenu(){return this._contextMenu}set contextMenu(e){this._contextMenu=e,e&&this.isInitialized&&!e.isInitialized&&(async()=>{try{await e.initialize()}catch(e){e instanceof Error&&se.error({message:"An error occurred while initializing context menu.",error:e})}})()}isSwitchingMap=!1;_layerViews=new t;get _allLayerViews(){const e=i=>{const s=[i];return t.isCollection(i.sublayerViews)?s.push(...i.sublayerViews.toArray().flatMap(e)):t.isCollection(i.layerViews)&&s.push(...i.layerViews.toArray().flatMap(e)),s};return this._layerViews.toArray().flatMap(e)}get layerExtensions(){return this._layerExtensions}tableExtensions;allLayerExtensions;_itemType=l.MAP_EXTENSION;_map;_scene;_deserializedMapPromise;_deserializedViewMode;_deserializedViewModePromise;_deferredProperties;_currentMap;_requestHelper;_basemapExtension;_groundExtension;_basemapOptions;_groundExtensions;_bookmarks;_layerExtensions;_webMap;_webMapItem;_webScene;_webSceneItem;_title;_initialViewMode;_initialLayerPreset;_initialBasemapExtension;_skipBasemapOptions=!1;_createScenePromise;_createMapPromise;_contextMenu;constructor(e){super(e);let s={...e};this._basemapOptions=new ne(this),this._groundExtensions=new WeakMap,this._layerExtensions=this._createLayerExtensionCollection(),this.tableExtensions=this._createTableExtensionCollection(),this.formatSettings=this._createFormatSettings(),this._bookmarks=new t,this.constraints=new ee;const a=[],n=[];A(this,"_map",(e=>{if(e)a.push(Y(e.layers,"layerview-create",(e=>{this._layerViews.add(e.layerView)})),Y(e.layers,"layerview-destroy",(e=>{this._layerViews.remove(e.layerView)})));else for(const e of a)e.remove()}),{sync:!0}),A(this,"_scene",(e=>{if(e)n.push(Y(e.layers,"layerview-create",(e=>{this._layerViews.add(e.layerView)})),Y(e.layers,"layerview-destroy",(e=>{this._layerViews.remove(e.layerView)})));else for(const e of n)e.remove()}),{sync:!0});const{webMap:o,webScene:r,initialViewMode:p,map:h,basemapOptions:m}=s;if(this._webMap=o,this._webScene=r,this._webMapItem=pe(o),this._webSceneItem=pe(r),this.initialViewMode=p,D(h)&&r)throw new i("Cannot specify webScene property if map is initialized to a WebScene instance.");if(q(h)&&o)throw new i("Cannot specify webMap property if map is initialized to a 2D Map instance.");if(D(h)||G(h)||q(h))this.assignProperties({basemapOptions:m}),this._skipBasemapOptions=!!m;else{const{layerExtensions:e,tableExtensions:t,groundExtension:i,basemapOptions:a,basemapExtension:n,...o}=s;this._deferredProperties={layerExtensions:e,tableExtensions:t,groundExtension:i,basemapOptions:a,basemapExtension:n},s=o,a&&(this._skipBasemapOptions=!0)}this._initMapFromProperties(s),A(this,"map.basemap",(()=>this._onBasemapChange()),{sync:!0}),A(this,"map.ground",(()=>this._onGroundChange()),{sync:!0}),this.allLayerExtensions=new re(this),this.map?.basemap&&this._onBasemapChange()}getLayerExtensionsForView(e=this.viewMode){return(("map"===e?this._map:this._scene)?.layers.toArray()??[]).map((e=>this._layerExtensions._forLayer(e))).filter((e=>!e.dynamicallyAddedLayer))}getAllFeatureSources(e=()=>!0){const t=[],i=a=>{a.hasFeatures&&t.push(a);for(const t of a.sublayerExtensions.initializedItems.filter(e).toArray())s(t);if(R(a))for(const t of a.layerExtensions.initializedItems.filter(e).toArray())i(t)},s=i=>{t.push(i);for(const t of i.sublayerExtensions.initializedItems.filter(e).toArray())s(t)};for(const t of this.layerExtensions.initializedItems.filter(e).toArray())i(t);for(const i of this.tableExtensions.initializedItems.filter(e).toArray())t.push(i);if(this.basemapExtension){for(const t of this.basemapExtension.baseLayerExtensions.initializedItems.filter(e).toArray())i(t);for(const t of this.basemapExtension.referenceLayerExtensions.initializedItems.filter(e).toArray())i(t)}return t}isSupportedViewMode(e){return e===this.viewMode||!(!this.webMap&&!this.webScene)&&("scene"===e?!!this.webScene:!!this.webMap)}async switchViewMode(e){if(B("viewMode",e).isNotMissing().satisfies((e=>this.isSupportedViewMode(e)),"Unsupported view mode."),this.viewMode===e)return;let t;"scene"===e?(await this._createScene(),t=this._scene):(await this._createMap(),t=this._map),await this.switchMap(t),I(this,"viewMode"),I(this,"title")}async switchMap(e){if(B("newMap",e).isNotMissing(),e===this.map)return;if(!this.map)return void this._setMap(e);this.isSwitchingMap=!0,this.isInitialized&&await le(e),(!e.basemap||k(e.basemap))&&this.map?.basemap&&k(this.map.basemap)&&(e.basemap=this.map.basemap);const t=new Map(this.map.layers.map((e=>[e,this.layerExtensions.forLayer(e)]))),i=new Map(this.map.tables.map((e=>[e,this.tableExtensions.forTable(e)]))),{basemapExtension:s}=this;this._setMap(e),this._updateBookmarks();const a=[];for(const e of this.map.layers.toArray()){const i=[...H(t.entries(),(([t])=>W(t,e)))];if(1===i.length){const[t]=i;a.push((async()=>{const i=t[1];await i._switchLayer(e),this._layerExtensions._register(i)})())}else{const t=this._layerExtensions._forLayer(e);t&&t.layer!==e&&a.push(t._switchLayer(e))}}for(const e of this.map.tables.toArray()){const t=[...H(i.entries(),(([t])=>W(t,e)))];if(1===t.length){const[i]=t;a.push((async()=>{const t=i[1];await t._switchTable(e),this.tableExtensions.add(t)})())}else{const t=this.tableExtensions.forTable(e);t&&t.table!==e&&a.push(t._switchTable(e))}}this.map.basemap&&s&&P(this.map.basemap,s.basemap)&&a.push((async()=>{await s._switchBasemap(this.map.basemap),this.basemapExtension=s})()),await Promise.all(a),this.isInitialized&&await this._initializeChildren(),this.isSwitchingMap=!1}on(e,t){return super.on(e,t)}async setWebMap(e){if(!e&&this.webMap&&!this.webScene)throw new a("Cannot unset both webMap and webScene.");const t=this._map?.basemap;this._webMap=e,this._map=void 0,this._createMapPromise=void 0,this._webMapItem=pe(e),await j(this._webMapItem),"map"===this.viewMode&&(e?(this._basemapOptions.isExplicitlyModified||this._basemapOptions.removeAllInternal(),await this._createMap(),await this.switchMap(this._map),await this._createStandardBasemapOptions(),this._basemapOptions.reorderInternal(this.basemapExtension,0),this._initialBasemapExtension=this.basemapExtension):await this.switchViewMode("scene")),this._cleanPreviousBasemapOptions(t),I(this,"webMap"),I(this,"initialViewMode"),I(this,"title")}async setWebScene(e){if(!e&&this.webScene&&!this.webMap)throw new a("Cannot unset both webMap and webScene.");const t=this._scene?.basemap;this._webScene=e,this._scene=void 0,this._createScenePromise=void 0,this._webSceneItem=pe(e),await j(this._webSceneItem),"scene"===this.viewMode&&(e?(this._basemapOptions.isExplicitlyModified||this._basemapOptions.removeAllInternal(),await this._createScene(),await this.switchMap(this._scene),await this._createStandardBasemapOptions(),this._basemapOptions.reorderInternal(this.basemapExtension,0),this._initialBasemapExtension=this.basemapExtension):await this.switchViewMode("map")),this._cleanPreviousBasemapOptions(t),I(this,"webScene"),I(this,"initialViewMode"),I(this,"title")}getDefaults(){const e=super.getDefaults();return e.initialViewMode="map",e}async _createScene(){if(!this._scene&&this.webScene)return this._createScenePromise=this._createScenePromise??(async()=>{const e=(await import("@arcgis/core/WebScene")).default;he(this.webScene)?(this._webSceneItem.type="Web Scene",this._scene=new e({portalItem:this._webSceneItem})):this._scene=e.fromJSON(this.webScene)})()}async _createMap(){if(!this._map&&this.webMap)return this._createMapPromise=this._createMapPromise??(async()=>{const e=(await import("@arcgis/core/WebMap")).default;he(this.webMap)?(this._webMapItem.type="Web Map",this._map=new e({portalItem:this._webMapItem})):this._map=e.fromJSON(this.webMap)})()}_getSerializableProperties(){return{...super._getSerializableProperties(),layerExtensions:{serializeModes:["initial","project"],deserialize:e=>{if(this.map&&e){const t="map"===this.viewMode,i=(t?this._scene:this._map)?.layers.toArray()??[],s=e.filter((e=>!i.includes(e.layer)&&!i.some((t=>e.layer&&W(t,e.layer)))));te(this.layerExtensions,s)}},serialize:e=>{if(this._deferredProperties?.layerExtensions)return this._deferredProperties.layerExtensions;{const t="map"===this.viewMode,i=(t?this._map:this._scene)?.layers.toArray();let s=(t?this._scene:this._map)?.layers.toArray()??[];return s=s.filter((e=>!i.find((t=>W(t,e))))),this.layerExtensions.concat(s.map((e=>this._layerExtensions._forLayer(e)))).filter((t=>"initial"!==e||!t.dynamicallyAddedLayer)).toArray()}}},tableExtensions:{serializeModes:["initial","project"],deserialize:e=>{this.map?C(this.tableExtensions,e,{onNew:(e,t)=>{this.tableExtensions.add(m(e)?e:d.create(e),t)},onMatch:(e,t,i,s)=>{m(t)||e.assignProperties(t),i!==s&&this.tableExtensions.reorder(e,s)},equals:(e,t)=>m(t)?t===e:!!d._matchesRef(e,t.table)||e.id===t.id}):this._deferredProperties={...this._deferredProperties,tableExtensions:e}},serialize:()=>this._deferredProperties?.tableExtensions?this._deferredProperties?.tableExtensions:this.tableExtensions.toArray()},basemapExtension:{serializeModes:["project"],deserialize:e=>{if(this.map)if(e)if(n(e))this.basemapExtension=e;else{if(this.basemapExtension)return this.basemapExtension.assignPropertiesAsync(e);this.basemapExtension=K.create(e)}else this.basemapExtension=void 0;else this._deferredProperties={...this._deferredProperties,basemapExtension:e}},serialize:()=>this._deferredProperties?.basemapExtension?this._deferredProperties?.basemapExtension:this.basemapExtension},basemapOptions:{serializeModes:["initial"],deserialize:e=>{this._skipBasemapOptions?this._skipBasemapOptions=!1:(C(this.basemapOptions,e,{onNew:(e,t)=>{this.basemapOptions.add(n(e)?e:K.create(e),t)},onMatch:(e,t,i,s)=>{n(t)||e.assignProperties(t),i!==s&&this.basemapOptions.reorder(e,s)},onMissing:e=>{this.basemapOptions.remove(e)},equals:(e,t)=>{if(n(t))return t===e;if(e.id&&t.id)return e.id===t.id;{const i=e.toJSON();return P(i.basemap,t.basemap||t.baseMap)}}}),this.basemapExtension&&this._ensureIsBasemapOption(this.basemapExtension),this.isInitialized&&$(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())))},serialize:()=>this._deferredProperties?.basemapOptions?this._deferredProperties?.basemapOptions:this.basemapOptions.toArray()},groundExtension:{serializeModes:["initial"],deserialize:e=>{if(this.map){if(!r(e))return this.groundExtension.assignPropertiesAsync(e);this.groundExtension=e}else this._deferredProperties={...this._deferredProperties,groundExtension:e}},serialize:()=>this._deferredProperties?.groundExtension?this._deferredProperties?.groundExtension:this.groundExtension},bookmarks:{serialize:()=>this.bookmarks.map((e=>e.toJSON())).toArray(),deserialize:e=>{this.bookmarks.addMany(e.map((e=>o(e)?e:new Q(e))))}},webMap:{serializeModes:["initial"],deserialize:!1},webScene:{serializeModes:["initial"],deserialize:!1},initialLayerPreset:"initial",initialViewMode:{serializeModes:["initial","project"],serialize:e=>"project"===e?this.viewMode:"scene"!==this.initialViewMode||!this.webScene&&this.webMap?"map":"scene",deserialize:e=>{this.viewMode!==e&&(this._deserializedViewMode=e),this._initialViewMode=e},isDefault:(e,t)=>"project"!==t&&"map"===e},formatSettings:"initial",constraints:"initial",title:"initial",onClick:"initial",onHover:"initial",onHoverEnd:"initial",onInitialized:"initial",onViewpointChanged:"initial",contextMenu:{serializeModes:["initial"],deserialize:e=>{e?h(e)?this.contextMenu=e:this.contextMenu?this.contextMenu.assignProperties(e):this.contextMenu=E.create(e):this.contextMenu=void 0}},map:{serializeModes:["project"],serialize:()=>{c.lookup=new WeakMap;const e=this.layerExtensions.toArray().filter((e=>e.layer)).map((e=>e._getProjectWebmapJSON())),t=this.tableExtensions.toArray().filter((e=>e.table)).map((e=>({id:e.table.id,title:e.table.title})));return c.lookup=void 0,e.length>0||t.length>0?{operationalLayers:e,tables:t}:{}},deserialize:e=>{if(!this.map)throw new i("Cannot specify JSON object for the 'map' property. It must be an ArcGIS API Map instance. To specify JSON, use 'webMap' or 'webScene' instead.");if(q(e)||G(e)||D(e)){if(e!==this.map)throw new i("properties.map","Property 'map' is read-only.")}else this._deserializedMapPromise=(async()=>{this._deserializedViewMode&&this.webMap&&this.webScene&&(this._deserializedViewModePromise=this.switchViewMode(this._deserializedViewMode),await this._deserializedViewModePromise,this._deserializedViewMode=void 0,this._deserializedViewModePromise=void 0),await this._applyMapProperties(e,this.map),this._deserializedMapPromise=void 0})()}},requestHelper:{serialize:!1}}}async _applyMapProperties(e,t,i){await $(this.basemapOptions.toArray(),(e=>e._createBackingBasemap()));let s=e;const a=this.basemapOptions.find((e=>P(e.basemap,s.baseMap)));a&&(t.basemap=a.basemap,s={...s,baseMap:{...s.baseMap,title:t.basemap.title}}),D(t)?await _(s,t,i):await b(s,t,i)}_createFormatSettings(){return new u}_createLayerExtensionCollection(){return new ie(this)}_createTableExtensionCollection(){return new oe(this)}async _onInitialize(){await super._onInitialize();const{basemapOptions:e,basemapExtension:t,webMap:i,webScene:s,...a}=this._deferredProperties??{};if(this.map||("scene"===this.initialViewMode?(await this._createScene(),this._setMap(this._scene)):(await this._createMap(),this._setMap(this._map))),this._webMapItem||this._webSceneItem?(await Promise.all([le(this.map),j(this._webMapItem),j(this._webSceneItem)]),me(this._webMapItem,"webMap","Web Map"),me(this._webSceneItem,"webScene","Web Scene")):await le(this.map),t&&(!n(t)&&t.basemap?this.basemapExtension=K.create(t):await this.assignPropertiesAsync({basemapExtension:t}),await this.basemapExtension._createBackingBasemap()),e){const t=e.find((e=>n(e)&&P(this.map.basemap,e.toJSON().basemap)));if(t){const e=t.toJSON().basemap?.id??t.basemap?.id,i=t.toJSON().basemap?.title;await t._switchBasemap(this.map.basemap),this.basemapExtension=t,e&&(this.map.basemap.id=e),i&&(this.map.basemap.title=i)}await this.assignPropertiesAsync({basemapOptions:e})}await this.assignPropertiesAsync(a),this._deferredProperties=void 0,this._initialBasemapExtension=this.basemapExtension,this._updateBookmarks();for(const e of this.layerExtensions.toArray())await e._createBackingLayer();await Promise.all(this.tableExtensions.map((e=>e._createBackingTable())).toArray())}async _postInitialize(){await super._postInitialize(),await this._createStandardBasemapOptions(),await $(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())),this.initialLayerPreset&&await this.initialLayerPreset.applyTo(this)}*_initializableChildCollections(){yield*super._initializableChildCollections();const e=new t(this.layerExtensions.filter((e=>!!e.layer)));e.remove=e=>this.layerExtensions.remove(e);const i=new t(this.tableExtensions.filter((e=>!!e.table)));if(i.remove=e=>this.tableExtensions.remove(e),yield e,yield i,this.basemapExtension){const e=new t;e.add(this.basemapExtension),yield e}const s=new t;s.add(this.groundExtension),yield s}_initMapFromProperties(e){const t=e.map;q(t)||G(t)||D(t)?this._setMap(t):"scene"===this.initialViewMode?e.webScene&&!he(e.webScene)&&(this._deferredProperties={webScene:e.webScene,...this._deferredProperties}):e.webMap&&!he(e.webMap)&&(this._deferredProperties={webMap:e.webMap,...this._deferredProperties})}_setMap(e){D(e)?this._scene=e:this._map=e,this._currentMap=e,this.basemapExtension?.basemap&&!e.basemap&&(e.basemap=this.basemapExtension.basemap),this.groundExtension?.ground&&!e.ground&&(e.ground=this.groundExtension.ground),I(this,"map")}_onBasemapChange(){if(this._basemapExtension){if(this.basemapExtension.basemap==this.map.basemap)return;this._basemapExtension._setMapExtension(void 0)}if(this.map.basemap){let e=this.basemapOptions.find((e=>this.map.basemap===e.basemap));if(!e){const t=this.basemapOptions.find((e=>P(e.basemap,this.map.basemap)));t?(e=t,e._switchBasemap(this.map.basemap)):(e=K.create({basemap:this.map.basemap}),this._basemapOptions.addInternal(e,0))}e.mapExtension!==this&&e._setMapExtension(this),this._basemapExtension=e}else this._basemapExtension=void 0;I(this,"basemapExtension")}_onGroundChange(){if(this._groundExtension){if(this.map.ground&&this.groundExtension.ground===this.map.ground)return void(this._groundExtensions.has(this.map.ground)||this._groundExtensions.set(this.map.ground,this.groundExtension));this.groundExtension._setMapExtension(void 0)}this.map.ground&&!this._groundExtensions.has(this.map.ground)&&this._groundExtensions.set(this.map.ground,Z.create({ground:this.map.ground}));const e=this._groundExtensions.get(this.map.ground);e&&e.mapExtension!==this&&e._setMapExtension(this),this._groundExtension=e,I(this,"groundExtension")}async _createStandardBasemapOptions(){const e=this._spatialReference;!this._basemapOptions.isExplicitlyModified&&e?.isWebMercator&&await $([M.SATELLITE,M.HYBRID_VECTOR,M.STREETS_VECTOR,M.TOPO_VECTOR,M.STREETS_NAVIGATION_VECTOR,M.STREETS_NIGHT_VECTOR,M.TERRAIN_VECTOR,M.DARK_GRAY_VECTOR,M.GRAY_VECTOR,M.OCEANS_VECTOR,M.OPEN_STREET_MAP_VECTOR],(async e=>{const t=await V(e);P(this.map.basemap,t)?this._basemapOptions.addInternal(this.basemapExtension):this._basemapOptions.addInternal(K.create({basemap:t}),void 0,!1)}))}_ensureIsBasemapOption(e){const t=this.basemapOptions.findIndex((t=>t.basemap===e.basemap));t>=0?this._basemapOptions.getItemAt(t)!==e&&(this._basemapOptions.removeAtInternal(t),this._basemapOptions.addInternal(e,t)):this._basemapOptions.addInternal(e,0)}_cleanPreviousBasemapOptions(e){if(e&&!k(e))for(let t=this._basemapOptions.length-1;t>=0;t--){const i=this._basemapOptions.getItemAt(t),s=P(i.basemap,e),a=P(i.basemap,this._map?.basemap)||P(i.basemap,this._scene?.basemap);s&&!a&&this._basemapOptions.removeAtInternal(t)}}_updateBookmarks(){this.bookmarks.removeMany(this.bookmarks.filter((e=>"map"===e.source))),G(this.map)&&this.map.bookmarks?.length>0?this.map.bookmarks.forEach((e=>{this.bookmarks.add(new Q({source:"map",title:e.name,viewpoint:e.viewpoint}))})):D(this.map)&&this.map.presentation?.slides?.length>0&&this.map.presentation.slides.forEach((e=>{const t={source:"map",title:e.title.text,viewpoint:e.viewpoint},i=new Q(t);this.bookmarks.add(i)}))}};ae=e([g],ae);export{ae as MapExtension};class ne extends w{isExplicitlyModified=!1;_mapExtension;constructor(e){super(new t),this._mapExtension=e}add(e,t){return super.add(e,t),this.isExplicitlyModified=!0,1===this.length&&this._mapExtension.map&&!this._mapExtension.basemapExtension&&(this._mapExtension.basemapExtension=e),this}addMany(e,t){return super.addMany(e,t),this.isExplicitlyModified=!0,this}addInternal(e,t,i=!0){const s=e=>{const t="-vector";return e?.endsWith(t)?e.substring(0,e.length-7):e};let a;if(e.basemap){const t=s(e.basemap.id);if(a=k(e.basemap)?this.findIndex((e=>s(e.basemap?.id)===t)):this.findIndex((t=>P(t.basemap,e.basemap))),a>=0){if(!i)return;super.removeAt(a)}}super.add(e,t??(a>=0?a:void 0))}removeAt(e){const t=super.removeAt(e);return t&&(this.isExplicitlyModified=!0,t===this._mapExtension.basemapExtension&&(e<this.length?this._mapExtension.basemapExtension=this.getItemAt(e):this.length?this._mapExtension.basemapExtension=this.getItemAt(e-1):this._mapExtension.basemapExtension=void 0)),t}removeAll(){return this._mapExtension.basemapExtension=void 0,super.removeAll()}removeAtInternal(e){return super.removeAt(e)}removeAllInternal(){for(;this.length;)this.removeAtInternal(this.length-1)}reorder(e,t){return super.reorder(e,t),this.isExplicitlyModified=!0,e}reorderInternal(e,t){return super.reorder(e,t)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.basemap}}class oe extends w{get _collection(){return this._tables.map((e=>this._forTable(e))).concat(Array.from(this._uninitializedTableExtensions))}get _tables(){return this._mapExtension.map?.tables??new O(new t)}_mapExtension;_tableExtensionMap=new WeakMap;_uninitializedTableExtensions=new Set;_onChangeMapTablesHandle=new T((()=>X(this._mapExtension,"map.tables",(e=>{const t={added:(e.added||[]).map((e=>this._forTable(e))),moved:(e.moved||[]).map((e=>this._forTable(e))),removed:(e.removed||[]).map((e=>this._forTable(e))),target:this};this.emit("change",t)}))));_onBeforeAddMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["before-add",e=>this.emit("before-add",{...e,item:this._forTable(e.item),target:this})])));_onBeforeRemoveMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["before-remove",e=>this.emit("before-remove",{...e,item:this._forTable(e.item),target:this})])));_onBeforeChangesMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["before-changes",e=>this.emit("before-changes",{...e,target:this})])));_onAfterAddMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["after-add",e=>this.emit("after-add",{...e,item:this._forTable(e.item),target:this})],(e=>{if(null!=e)for(const t of e)this.emit("after-add",{item:this._forTable(t),target:this})}))));_onAfterRemoveMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["after-remove",e=>this.emit("after-remove",{...e,item:this._forTable(e.item),target:this})],((e,t)=>{if(null!=t)for(const e of t)this.emit("after-remove",{item:this._forTable(e),target:this})}))));_onAfterChangesMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["after-changes",e=>this.emit("after-changes",{...e,target:this})],(()=>{this.emit("after-changes",{target:this})}))));constructor(e){super(),this._mapExtension=e,S(this,"length",(()=>A(this._mapExtension,"map.tables.length",(()=>I(this,"length")),{sync:!0})))}on(e,t){const i=[];return"change"===e?i.push(this._onChangeMapTablesHandle.add()):"before-add"===e?i.push(this._onBeforeAddMapTablesHandle.add()):"before-remove"===e?i.push(this._onBeforeRemoveMapTablesHandle.add()):"before-changes"===e?i.push(this._onBeforeChangesMapTablesHandle.add()):"after-add"===e?i.push(this._onAfterAddMapTablesHandle.add()):"after-remove"===e?i.push(this._onAfterRemoveMapTablesHandle.add()):"after-changes"===e&&i.push(this._onAfterChangesMapTablesHandle.add()),i.push(super.on(e,t)),v(i)}toJSON(){const e=[];return this.forEach((t=>{e.push(`item://${encodeURIComponent(l.TABLE_EXTENSION)}/${encodeURIComponent(t.id)}`)})),e}clone(){const e=new oe(this._mapExtension);return e._tableExtensionMap=this._tableExtensionMap,e}findById(e){return B("id",e).isNotMissing(),this.find((t=>t.id===e))}findByTableId(e){return B("id",e).isNotMissing(),this.find((t=>t._tableId===e))}forTable(e){if(B("table",e).isNotMissing(),this._tables.includes(e))return this._forTable(e)}add(e,t){if(B("tableX",e).isNotMissing(),e.mapExtension&&e.mapExtension.tableExtensions.remove(e),e._setMapExtension(this._mapExtension),e.table){const i=this._tableExtensionMap.get(e.table);if(this._tableExtensionMap.set(e.table,e),i&&i!==e&&this._onRemoved(i),this._tables.includes(e.table))if(void 0===t){const t={added:[e],moved:[],removed:i?[i]:[],target:this};i&&this.emit("after-remove",{item:i,target:this}),this.emit("after-add",{item:e,target:this}),this.emit("change",t)}else this._tables.reorder(e.table,t);else this._tables.add(e.table,t)}else{this._uninitializedTableExtensions.add(e);const t={added:[e],moved:[],removed:[],target:this};this.emit("after-add",{item:e,target:this}),this.emit("change",t)}return this._onAdded(e),this}removeAt(e){const t=this.getItemAt(e);if(void 0!==t){if(this._uninitializedTableExtensions.has(t)){this._uninitializedTableExtensions.delete(t);const e={added:[],moved:[],removed:[t],target:this};this.emit("after-remove",{item:t,target:this}),this.emit("change",e)}else this._tables.remove(t.table);return this._onRemoved(t),t}}reorder(e,t){if(e&&this._tables.includes(e.table))return this._tables.reorder(e.table,t),e}sort(e){return this._tables.sort(((t,i)=>e(this._forTable(t),this._forTable(i)))),this}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.table}_onAdded(e){}_onRemoved(e){e._setMapExtension(void 0)}_forTable(e){for(const e of this._uninitializedTableExtensions)e._resolveTable(),e.table&&(this._tableExtensionMap.set(e.table,e),this._uninitializedTableExtensions.delete(e));if(!this._tableExtensionMap.has(e)){const t=d.create({table:e});this._tableExtensionMap.set(e,t),t._setMapExtension(this._mapExtension),this._onAdded(t)}return this._tableExtensionMap.get(e)}}class re extends y{get _collection(){let e=this._mapExtension.layerExtensions.flatten((e=>R(e)?e.layerExtensions:[]));return this._mapExtension.basemapExtension&&(e=e.concat(this._mapExtension.basemapExtension.baseLayerExtensions.toArray()).concat(this._mapExtension.basemapExtension.referenceLayerExtensions.toArray())),e=e.concat(this._mapExtension.groundExtension.layerExtensions.toArray()),e}_mapExtension;_onChangeLayerExtensionsHandle=new T((()=>{const e=new WeakMap,i=new Set,s=a=>{const n=new t(a.added).flatten((e=>R(e)?e.layerExtensions:[])),o=new t(a.moved).flatten((e=>R(e)?e.layerExtensions:[])),r=new t(a.removed).flatten((e=>R(e)?e.layerExtensions:[]));for(const t of n)if(!e.has(t)&&R(t)){const a=t.layerExtensions.on("change",s);e.set(t,a),i.add(a)}for(const t of r){const s=e.get(t);s&&(s.remove(),e.delete(t),i.delete(s))}this.emit("change",{added:n.toArray(),moved:o.toArray(),removed:r.toArray(),target:this})};i.add(this._mapExtension.layerExtensions.on("change",s));const a=this._mapExtension.layerExtensions.flatten((e=>R(e)?e.layerExtensions:[]));for(const t of a)if(R(t)){const a=t.layerExtensions.on("change",s);e.set(t,a),i.add(a)}return i.add(X(this._mapExtension,"basemapExtension.baseLayerExtensions",(e=>{this.emit("change",{...e,target:this})}))),i.add(X(this._mapExtension,"basemapExtension.referenceLayerExtensions",(e=>{this.emit("change",{...e,target:this})}))),i.add(this._mapExtension.groundExtension.layerExtensions.on("change",(e=>{this.emit("change",{...e,target:this})}))),v(i)}));_onAfterAddLayerExtensionsHandle=new T((()=>{const e=new WeakMap,t=new Set,i=i=>{const s=e.get(i);s&&(s.remove(),e.delete(i),t.delete(s))},s=e=>{const t=e.item;if(R(t)){const e=t.layerExtensions.flatten((e=>R(e)?e.layerExtensions:[]));for(const t of e)i(t)}i(t)},a=i=>{this.emit("after-add",{...i,target:this});const n=i.item;if(R(n)){const o=n.layerExtensions.flatten((e=>R(e)?e.layerExtensions:[]));for(const n of o)if(this.emit("after-add",{...i,item:n,target:this}),!e.has(n)&&R(n)){const i=n.layerExtensions.on("after-add",a),o=n.layerExtensions.on("after-remove",s),r=v([i,o]);e.set(n,r),t.add(r)}}};t.add(this._mapExtension.layerExtensions.on("after-add",a)),t.add(this._mapExtension.layerExtensions.on("after-remove",s));const n=this._mapExtension.layerExtensions.flatten((e=>R(e)?e.layerExtensions:[]));for(const i of n)if(R(i)){const n=i.layerExtensions.on("after-add",a),o=i.layerExtensions.on("after-remove",s),r=v([n,o]);e.set(i,r),t.add(r)}return t.add(z(this._mapExtension,"basemapExtension.baseLayerExtensions",["after-add",e=>this.emit("after-add",{...e,target:this})])),t.add(z(this._mapExtension,"basemapExtension.referenceLayerExtensions",["after-add",e=>this.emit("after-add",{...e,target:this})])),t.add(this._mapExtension.groundExtension.layerExtensions.on("after-add",(e=>{this.emit("after-add",{...e,target:this})}))),v(t)}));_onAfterRemoveLayerExtensionsHandle=new T((()=>{const e=new WeakMap,t=new Set,i=i=>{const s=e.get(i);s&&(s.remove(),e.delete(i),t.delete(s))},s=e=>{this.emit("after-remove",{...e,target:this});const t=e.item;if(R(t)){const s=t.layerExtensions.flatten((e=>R(e)?e.layerExtensions:[]));for(const t of s)this.emit("after-remove",{...e,item:t,target:this}),i(t)}i(t)},a=i=>{const n=i.item;if(R(n)){const i=n.layerExtensions.on("after-add",a),o=n.layerExtensions.on("after-remove",s),r=v([i,o]);e.set(n,r),t.add(r)}};t.add(this._mapExtension.layerExtensions.on("after-remove",s)),t.add(this._mapExtension.layerExtensions.on("after-add",a));const n=this._mapExtension.layerExtensions.flatten((e=>R(e)?e.layerExtensions:[]));for(const i of n)if(R(i)){const n=i.layerExtensions.on("after-add",a),o=i.layerExtensions.on("after-remove",s),r=v([n,o]);e.set(i,r),t.add(r)}return t.add(z(this._mapExtension,"basemapExtension.baseLayerExtensions",["after-remove",e=>this.emit("after-remove",{...e,target:this})])),t.add(z(this._mapExtension,"basemapExtension.referenceLayerExtensions",["after-remove",e=>this.emit("after-remove",{...e,target:this})])),t.add(this._mapExtension.groundExtension.layerExtensions.on("after-remove",(e=>{this.emit("after-remove",{...e,target:this})}))),v(t)}));constructor(e){super(),this._mapExtension=e}on(e,t){const i=[];return"change"===e?i.push(this._onChangeLayerExtensionsHandle.add()):"after-add"===e?i.push(this._onAfterAddLayerExtensionsHandle.add()):"after-remove"===e&&i.push(this._onAfterRemoveLayerExtensionsHandle.add()),i.push(super.on(e,t)),v(i)}findById(e){return B("id",e).isNotMissing(),this.find((t=>t.id===e))}findByLayerId(e){return B("id",e).isNotMissing(),this.find((t=>t._layerId===e))}forLayer(e){return B("layer",e).isNotMissing(),this.findByLayerId(e.id)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.layer}}function pe(e){if(!(null==e||"object"==typeof e&&e?.baseMap))return U(e)}function he(e){return"object"!=typeof e||e&&!e.baseMap}function me(e,t,i){if(e?.type&&e.type!==i)throw new Error(`Invalid portal item type "${e.type}" for property ${t}.`)}async function le(e){await j(e),e.basemap&&(await j(e.basemap),e.basemap.baseLayers.filter((e=>N(e))).map((e=>{const t=e;return t.activeLayer.imageFormat=t.activeLayer.imageFormat??(t.activeLayer.imageFormats?.length>0?t.activeLayer.imageFormats[0]:""),t.activeLayer.styleId=t.activeLayer.styleId??"",t})),e.basemap.id=L(e.basemap)??e.basemap.id)}
1
+ import{__decorate as e}from"tslib";import t from"@arcgis/core/core/Collection";import{ArgumentError as i}from"../ArgumentError.js";import{EntityBase as s}from"../Entity.js";import{InvalidOperationError as a}from"../InvalidOperationError.js";import{isBasemapExtension as n,isBookmark as o,isGroundExtension as r,isLayerPreset as p,isMenu as h,isTableExtension as m,ItemType as l}from"../ItemType.js";import{TableExtension as d}from"../data/TableExtension.js";import{layerToParentJsonCache as c}from"../json/LayerJson.js";import{applyJsonToWebMap as b}from"../json/WebMapJson.js";import{applyJsonToWebScene as _}from"../json/WebSceneJson.js";import{LayerPreset as f}from"../layer-preset/LayerPreset.js";import{Menu as E}from"../menus/Menu.js";import{DefaultArcGISRequestHelper as x}from"../support/ArcGISRequestHelper.js";import{FormatSettings as u}from"../support/FormatSettings.js";import{InitializableCollectionProxy as w}from"../support/InitializableCollectionProxy.js";import{ReadOnlyInitializableCollection as y}from"../support/ReadOnlyInitializableCollection.js";import{serializable as g}from"../support/Serializable.js";import{WellKnownBasemap as M}from"../support/esri.js";import{createIHandle as v,notifyChange as I,onWatch as S,watch as A,watchEvent as z}from"../support/observableUtils.js";import{ReadOnlyCollection as O}from"../utilities/ReadOnlyCollection.js";import T from"../utilities/_ReferenceCountedHandle.js";import{basemapsAreEquivalent as P,createStandardBasemap as V,getStandardBasemapId as L,isStandardBasemap as k,isStandardBasemap2D as B}from"../utilities/basemaps.js";import{checkArg as C}from"../utilities/checkArg.js";import{compare as j}from"../utilities/collection.js";import{load as R}from"../utilities/esri.js";import{isGroupLayerExtension as H}from"../utilities/extensions.js";import{filter as N}from"../utilities/iterable.js";import{isWMTSLayer as W,layersAreEquivalent as J}from"../utilities/layers.js";import{getLogger as F}from"../utilities/log.js";import{getMapSpatialReference as q,isMap as G,isWebMap as D,isWebScene as U}from"../utilities/mapping.js";import{toPortalItem as $}from"../utilities/portal.js";import{parallelEach as X}from"../utilities/promise.js";import{onCollectionPropertyChange as Y,onEach as K}from"../utilities/watch.js";import{BasemapExtension as Q}from"./BasemapExtension.js";import{Bookmark as Z}from"./Bookmark.js";import{GroundExtension as ee}from"./GroundExtension.js";import{MapConstraints as te}from"./MapConstraints.js";import{_assignLayerExtensions as ie}from"./_LayerExtension.js";import{LayerExtensionCollectionImpl as se}from"./_LayerExtensionCollectionImpl.js";const ae=F("MapExtension");let ne=class extends s{get webMap(){return this._webMap}get webScene(){return this._webScene}get map(){return this._currentMap}get viewMode(){return this.map?U(this.map)?"scene":"map":this.initialViewMode}get initialViewMode(){return this.webMap&&this.webScene?this._initialViewMode||"map":U(this.map)||this.webScene&&!this.webMap?"scene":"map"}set initialViewMode(e){this._initialViewMode=e}get requestHelper(){return this._requestHelper||(this._requestHelper=new x),this._requestHelper}set requestHelper(e){this._requestHelper=e}get basemapExtension(){return this._basemapExtension}set basemapExtension(e){const t=this._basemapExtension;if(t!==e)if(t&&t._setMapExtension(void 0),e){if(e._setMapExtension(this),this.isInitialized&&!e.basemap){if(e.isInitialized)throw e._setMapExtension(void 0),new a("Cannot set MapExtension.basemapExtension without a valid Esri Basemap object");e.initialize()}this._ensureIsBasemapOption(e),this.map&&e.basemap&&e.basemap!==this.map.basemap?this.map.basemap=e.basemap:this._basemapExtension=e}else this.map.basemap=void 0,this._basemapExtension=void 0}get groundExtension(){return this._groundExtension||(this.groundExtension=ee.create({ground:this.map?.ground})),this._groundExtension}set groundExtension(e){if(!e)throw new a("Cannot set map.ground to undefined");const t=this._groundExtension;t!==e&&(t&&t._setMapExtension(void 0),e._setMapExtension(this),e._resolveGround(),e.ground?(this._groundExtensions.set(e.ground,e),this.map&&e.ground!==this.map.ground?this.map.ground=e.ground:this._groundExtension=e):this._groundExtension=e)}get basemapOptions(){return this._basemapOptions}get bookmarks(){return this._bookmarks}get initialBasemapExtension(){return this._initialBasemapExtension}get initialLayerPreset(){return this._initialLayerPreset}set initialLayerPreset(e){if(!e)return void(this._initialLayerPreset=void 0);const t=p(e)?e:new f(e);this._initialLayerPreset=t}get _spatialReference(){return q(this.map)}get webMapItemTitle(){if(this._webMapItem)return this._webMapItem.title}get webSceneItemTitle(){if(this._webSceneItem)return this._webSceneItem.title}get title(){return this._title?this._title:this._webMapItem&&"map"===this.viewMode?this.webMapItemTitle:this._webSceneItem&&"scene"===this.viewMode?this.webSceneItemTitle:void 0}set title(e){this._title=e}formatSettings;constraints;onClick;onHover;onHoverEnd;onInitialized;onViewpointChanged;get contextMenu(){return this._contextMenu}set contextMenu(e){this._contextMenu=e,e&&this.isInitialized&&!e.isInitialized&&(async()=>{try{await e.initialize()}catch(e){e instanceof Error&&ae.error({message:"An error occurred while initializing context menu.",error:e})}})()}isSwitchingMap=!1;_layerViews=new t;get _allLayerViews(){const e=i=>{const s=[i];return t.isCollection(i.sublayerViews)?s.push(...i.sublayerViews.toArray().flatMap(e)):t.isCollection(i.layerViews)&&s.push(...i.layerViews.toArray().flatMap(e)),s};return this._layerViews.toArray().flatMap(e)}get layerExtensions(){return this._layerExtensions}tableExtensions;allLayerExtensions;_itemType=l.MAP_EXTENSION;_map;_scene;_deserializedMapPromise;_deserializedViewMode;_deserializedViewModePromise;_deferredProperties;_currentMap;_requestHelper;_basemapExtension;_groundExtension;_basemapOptions;_groundExtensions;_bookmarks;_layerExtensions;_webMap;_webMapItem;_webScene;_webSceneItem;_title;_initialViewMode;_initialLayerPreset;_initialBasemapExtension;_skipBasemapOptions=!1;_createScenePromise;_createMapPromise;_contextMenu;constructor(e){super(e);let s={...e};this._basemapOptions=new oe(this),this._groundExtensions=new WeakMap,this._layerExtensions=this._createLayerExtensionCollection(),this.tableExtensions=this._createTableExtensionCollection(),this.formatSettings=this._createFormatSettings(),this._bookmarks=new t,this.constraints=new te;const a=[],n=[];A(this,"_map",(e=>{if(e)a.push(K(e.layers,"layerview-create",(e=>{this._layerViews.add(e.layerView)})),K(e.layers,"layerview-destroy",(e=>{this._layerViews.remove(e.layerView)})));else for(const e of a)e.remove()}),{sync:!0}),A(this,"_scene",(e=>{if(e)n.push(K(e.layers,"layerview-create",(e=>{this._layerViews.add(e.layerView)})),K(e.layers,"layerview-destroy",(e=>{this._layerViews.remove(e.layerView)})));else for(const e of n)e.remove()}),{sync:!0});const{webMap:o,webScene:r,initialViewMode:p,map:h,basemapOptions:m}=s;if(this._webMap=o,this._webScene=r,this._webMapItem=he(o),this._webSceneItem=he(r),this.initialViewMode=p,U(h)&&r)throw new i("Cannot specify webScene property if map is initialized to a WebScene instance.");if(G(h)&&o)throw new i("Cannot specify webMap property if map is initialized to a 2D Map instance.");if(U(h)||D(h)||G(h))this.assignProperties({basemapOptions:m}),this._skipBasemapOptions=!!m;else{const{layerExtensions:e,tableExtensions:t,groundExtension:i,basemapOptions:a,basemapExtension:n,...o}=s;this._deferredProperties={layerExtensions:e,tableExtensions:t,groundExtension:i,basemapOptions:a,basemapExtension:n},s=o,a&&(this._skipBasemapOptions=!0)}this._initMapFromProperties(s),A(this,"map.basemap",(()=>this._onBasemapChange()),{sync:!0}),A(this,"map.ground",(()=>this._onGroundChange()),{sync:!0}),this.allLayerExtensions=new pe(this),this.map?.basemap&&this._onBasemapChange()}getLayerExtensionsForView(e=this.viewMode){return(("map"===e?this._map:this._scene)?.layers.toArray()??[]).map((e=>this._layerExtensions._forLayer(e))).filter((e=>!e.dynamicallyAddedLayer))}getAllFeatureSources(e=()=>!0){const t=[],i=a=>{a.hasFeatures&&t.push(a);for(const t of a.sublayerExtensions.initializedItems.filter(e).toArray())s(t);if(H(a))for(const t of a.layerExtensions.initializedItems.filter(e).toArray())i(t)},s=i=>{t.push(i);for(const t of i.sublayerExtensions.initializedItems.filter(e).toArray())s(t)};for(const t of this.layerExtensions.initializedItems.filter(e).toArray())i(t);for(const i of this.tableExtensions.initializedItems.filter(e).toArray())t.push(i);if(this.basemapExtension){for(const t of this.basemapExtension.baseLayerExtensions.initializedItems.filter(e).toArray())i(t);for(const t of this.basemapExtension.referenceLayerExtensions.initializedItems.filter(e).toArray())i(t)}return t}isSupportedViewMode(e){return e===this.viewMode||!(!this.webMap&&!this.webScene)&&("scene"===e?!!this.webScene:!!this.webMap)}async switchViewMode(e){if(C("viewMode",e).isNotMissing().satisfies((e=>this.isSupportedViewMode(e)),"Unsupported view mode."),this.viewMode===e)return;let t;"scene"===e?(await this._createScene(),t=this._scene):(await this._createMap(),t=this._map),await this.switchMap(t),I(this,"viewMode"),I(this,"title")}async switchMap(e){if(C("newMap",e).isNotMissing(),e===this.map)return;if(!this.map)return void this._setMap(e);this.isSwitchingMap=!0,this.isInitialized&&await de(e),(!e.basemap||B(e.basemap))&&this.map?.basemap&&B(this.map.basemap)&&(e.basemap=this.map.basemap);const t=new Map(this.map.layers.map((e=>[e,this.layerExtensions.forLayer(e)]))),i=new Map(this.map.tables.map((e=>[e,this.tableExtensions.forTable(e)]))),{basemapExtension:s}=this;this._setMap(e),this._updateBookmarks();const a=[];for(const e of this.map.layers.toArray()){const i=[...N(t.entries(),(([t])=>J(t,e)))];if(1===i.length){const[t]=i;a.push((async()=>{const i=t[1];await i._switchLayer(e),this._layerExtensions._register(i)})())}else{const t=this._layerExtensions._forLayer(e);t&&t.layer!==e&&a.push(t._switchLayer(e))}}for(const e of this.map.tables.toArray()){const t=[...N(i.entries(),(([t])=>J(t,e)))];if(1===t.length){const[i]=t;a.push((async()=>{const t=i[1];await t._switchTable(e),this.tableExtensions.add(t)})())}else{const t=this.tableExtensions.forTable(e);t&&t.table!==e&&a.push(t._switchTable(e))}}this.map.basemap&&s&&P(this.map.basemap,s.basemap)&&a.push((async()=>{await s._switchBasemap(this.map.basemap),this.basemapExtension=s})()),await Promise.all(a),this.isInitialized&&await this._initializeChildren(),this.isSwitchingMap=!1}on(e,t){return super.on(e,t)}async setWebMap(e){if(!e&&this.webMap&&!this.webScene)throw new a("Cannot unset both webMap and webScene.");const t=this._map?.basemap;this._webMap=e,this._map=void 0,this._createMapPromise=void 0,this._webMapItem=he(e),await R(this._webMapItem),"map"===this.viewMode&&(e?(this._basemapOptions.isExplicitlyModified||this._basemapOptions.removeAllInternal(),await this._createMap(),await this.switchMap(this._map),await this._createStandardBasemapOptions(),this._basemapOptions.reorderInternal(this.basemapExtension,0),this._initialBasemapExtension=this.basemapExtension):await this.switchViewMode("scene")),this._cleanPreviousBasemapOptions(t),I(this,"webMap"),I(this,"initialViewMode"),I(this,"title")}async setWebScene(e){if(!e&&this.webScene&&!this.webMap)throw new a("Cannot unset both webMap and webScene.");const t=this._scene?.basemap;this._webScene=e,this._scene=void 0,this._createScenePromise=void 0,this._webSceneItem=he(e),await R(this._webSceneItem),"scene"===this.viewMode&&(e?(this._basemapOptions.isExplicitlyModified||this._basemapOptions.removeAllInternal(),await this._createScene(),await this.switchMap(this._scene),await this._createStandardBasemapOptions(),this._basemapOptions.reorderInternal(this.basemapExtension,0),this._initialBasemapExtension=this.basemapExtension):await this.switchViewMode("map")),this._cleanPreviousBasemapOptions(t),I(this,"webScene"),I(this,"initialViewMode"),I(this,"title")}getDefaults(){const e=super.getDefaults();return e.initialViewMode="map",e}async _createScene(){if(!this._scene&&this.webScene)return this._createScenePromise=this._createScenePromise??(async()=>{const e=(await import("@arcgis/core/WebScene")).default;me(this.webScene)?(this._webSceneItem.type="Web Scene",this._scene=new e({portalItem:this._webSceneItem})):this._scene=e.fromJSON(this.webScene)})()}async _createMap(){if(!this._map&&this.webMap)return this._createMapPromise=this._createMapPromise??(async()=>{const e=(await import("@arcgis/core/WebMap")).default;me(this.webMap)?(this._webMapItem.type="Web Map",this._map=new e({portalItem:this._webMapItem})):this._map=e.fromJSON(this.webMap)})()}_getSerializableProperties(){return{...super._getSerializableProperties(),layerExtensions:{serializeModes:["initial","project"],deserialize:e=>{if(this.map&&e){const t="map"===this.viewMode,i=(t?this._scene:this._map)?.layers.toArray()??[],s=e.filter((e=>!i.includes(e.layer)&&!i.some((t=>e.layer&&J(t,e.layer)))));ie(this.layerExtensions,s)}},serialize:e=>{if(this._deferredProperties?.layerExtensions)return this._deferredProperties.layerExtensions;{const t="map"===this.viewMode,i=(t?this._map:this._scene)?.layers.toArray();let s=(t?this._scene:this._map)?.layers.toArray()??[];return s=s.filter((e=>!i.find((t=>J(t,e))))),this.layerExtensions.concat(s.map((e=>this._layerExtensions._forLayer(e)))).filter((t=>"initial"!==e||!t.dynamicallyAddedLayer)).toArray()}}},tableExtensions:{serializeModes:["initial","project"],deserialize:e=>{this.map?j(this.tableExtensions,e,{onNew:(e,t)=>{this.tableExtensions.add(m(e)?e:d.create(e),t)},onMatch:(e,t,i,s)=>{m(t)||e.assignProperties(t),i!==s&&this.tableExtensions.reorder(e,s)},equals:(e,t)=>m(t)?t===e:!!d._matchesRef(e,t.table)||e.id===t.id}):this._deferredProperties={...this._deferredProperties,tableExtensions:e}},serialize:()=>this._deferredProperties?.tableExtensions?this._deferredProperties?.tableExtensions:this.tableExtensions.toArray()},basemapExtension:{serializeModes:["project"],deserialize:e=>{if(this.map)if(e)if(n(e))this.basemapExtension=e;else{if(this.basemapExtension)return this.basemapExtension.assignPropertiesAsync(e);this.basemapExtension=Q.create(e)}else this.basemapExtension=void 0;else this._deferredProperties={...this._deferredProperties,basemapExtension:e}},serialize:()=>this._deferredProperties?.basemapExtension?this._deferredProperties?.basemapExtension:this.basemapExtension},basemapOptions:{serializeModes:["initial"],deserialize:e=>{this._skipBasemapOptions?this._skipBasemapOptions=!1:(j(this.basemapOptions,e,{onNew:(e,t)=>{this.basemapOptions.add(n(e)?e:Q.create(e),t)},onMatch:(e,t,i,s)=>{n(t)||e.assignProperties(t),i!==s&&this.basemapOptions.reorder(e,s)},onMissing:e=>{this.basemapOptions.remove(e)},equals:(e,t)=>{if(n(t))return t===e;if(e.id&&t.id)return e.id===t.id;{const i=e.toJSON();return P(i.basemap,t.basemap||t.baseMap)}}}),this.basemapExtension&&this._ensureIsBasemapOption(this.basemapExtension),this.isInitialized&&X(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())))},serialize:()=>this._deferredProperties?.basemapOptions?this._deferredProperties?.basemapOptions:this.basemapOptions.toArray()},groundExtension:{serializeModes:["initial"],deserialize:e=>{if(this.map){if(!r(e))return this.groundExtension.assignPropertiesAsync(e);this.groundExtension=e}else this._deferredProperties={...this._deferredProperties,groundExtension:e}},serialize:()=>this._deferredProperties?.groundExtension?this._deferredProperties?.groundExtension:this.groundExtension},bookmarks:{serialize:()=>this.bookmarks.map((e=>e.toJSON())).toArray(),deserialize:e=>{this.bookmarks.addMany(e.map((e=>o(e)?e:new Z(e))))}},webMap:{serializeModes:["initial"],deserialize:!1},webScene:{serializeModes:["initial"],deserialize:!1},initialLayerPreset:"initial",initialViewMode:{serializeModes:["initial","project"],serialize:e=>"project"===e?this.viewMode:"scene"!==this.initialViewMode||!this.webScene&&this.webMap?"map":"scene",deserialize:e=>{this.viewMode!==e&&(this._deserializedViewMode=e),this._initialViewMode=e},isDefault:(e,t)=>"project"!==t&&"map"===e},formatSettings:"initial",constraints:"initial",title:"initial",onClick:"initial",onHover:"initial",onHoverEnd:"initial",onInitialized:"initial",onViewpointChanged:"initial",contextMenu:{serializeModes:["initial"],deserialize:e=>{e?h(e)?this.contextMenu=e:this.contextMenu?this.contextMenu.assignProperties(e):this.contextMenu=E.create(e):this.contextMenu=void 0}},map:{serializeModes:["project"],serialize:()=>{c.lookup=new WeakMap;const e=this.layerExtensions.toArray().filter((e=>e.layer)).map((e=>e._getProjectWebmapJSON())),t=this.tableExtensions.toArray().filter((e=>e.table)).map((e=>({id:e.table.id,title:e.table.title})));return c.lookup=void 0,e.length>0||t.length>0?{operationalLayers:e,tables:t}:{}},deserialize:e=>{if(!this.map)throw new i("Cannot specify JSON object for the 'map' property. It must be an ArcGIS API Map instance. To specify JSON, use 'webMap' or 'webScene' instead.");if(G(e)||D(e)||U(e)){if(e!==this.map)throw new i("properties.map","Property 'map' is read-only.")}else this._deserializedMapPromise=(async()=>{this._deserializedViewMode&&this.webMap&&this.webScene&&(this._deserializedViewModePromise=this.switchViewMode(this._deserializedViewMode),await this._deserializedViewModePromise,this._deserializedViewMode=void 0,this._deserializedViewModePromise=void 0),await this._applyMapProperties(e,this.map),this._deserializedMapPromise=void 0})()}},requestHelper:{serialize:!1}}}async _applyMapProperties(e,t,i){await X(this.basemapOptions.toArray(),(e=>e._createBackingBasemap()));let s=e;const a=this.basemapOptions.find((e=>P(e.basemap,s.baseMap)));a&&(t.basemap=a.basemap,s={...s,baseMap:{...s.baseMap,title:t.basemap.title}}),U(t)?await _(s,t,i):await b(s,t,i)}_createFormatSettings(){return new u}_createLayerExtensionCollection(){return new se(this)}_createTableExtensionCollection(){return new re(this)}async _onInitialize(){await super._onInitialize();const{basemapOptions:e,basemapExtension:t,webMap:i,webScene:s,...a}=this._deferredProperties??{};if(this.map||("scene"===this.initialViewMode?(await this._createScene(),this._setMap(this._scene)):(await this._createMap(),this._setMap(this._map))),this._webMapItem||this._webSceneItem?(await Promise.all([de(this.map),R(this._webMapItem),R(this._webSceneItem)]),le(this._webMapItem,"webMap","Web Map"),le(this._webSceneItem,"webScene","Web Scene")):await de(this.map),t&&(!n(t)&&t.basemap?this.basemapExtension=Q.create(t):await this.assignPropertiesAsync({basemapExtension:t}),await this.basemapExtension._createBackingBasemap()),e){const t=e.find((e=>n(e)&&P(this.map.basemap,e.toJSON().basemap)));if(t){const e=t.toJSON().basemap?.id??t.basemap?.id,i=t.toJSON().basemap?.title;await t._switchBasemap(this.map.basemap),this.basemapExtension=t,e&&(this.map.basemap.id=e),i&&(this.map.basemap.title=i)}await this.assignPropertiesAsync({basemapOptions:e})}await this.assignPropertiesAsync(a),this._deferredProperties=void 0,this._initialBasemapExtension=this.basemapExtension,this._updateBookmarks();for(const e of this.layerExtensions.toArray())await e._createBackingLayer();await Promise.all(this.tableExtensions.map((e=>e._createBackingTable())).toArray())}async _postInitialize(){await super._postInitialize(),await this._createStandardBasemapOptions(),await X(this.basemapOptions.toArray(),(e=>e._createBackingBasemap())),this.initialLayerPreset&&await this.initialLayerPreset.applyTo(this)}*_initializableChildCollections(){yield*super._initializableChildCollections();const e=new t(this.layerExtensions.filter((e=>!!e.layer)));e.remove=e=>this.layerExtensions.remove(e);const i=new t(this.tableExtensions.filter((e=>!!e.table)));if(i.remove=e=>this.tableExtensions.remove(e),yield e,yield i,this.basemapExtension){const e=new t;e.add(this.basemapExtension),yield e}const s=new t;s.add(this.groundExtension),yield s}_initMapFromProperties(e){const t=e.map;G(t)||D(t)||U(t)?this._setMap(t):"scene"===this.initialViewMode?e.webScene&&!me(e.webScene)&&(this._deferredProperties={webScene:e.webScene,...this._deferredProperties}):e.webMap&&!me(e.webMap)&&(this._deferredProperties={webMap:e.webMap,...this._deferredProperties})}_setMap(e){U(e)?this._scene=e:this._map=e,this._currentMap=e,this.basemapExtension?.basemap&&!e.basemap&&(e.basemap=this.basemapExtension.basemap),this.groundExtension?.ground&&!e.ground&&(e.ground=this.groundExtension.ground),I(this,"map")}_onBasemapChange(){if(this._basemapExtension){if(this.basemapExtension.basemap==this.map.basemap)return;this._basemapExtension._setMapExtension(void 0)}if(this.map.basemap){let e=this.basemapOptions.find((e=>this.map.basemap===e.basemap));if(!e){const t=this.basemapOptions.find((e=>P(e.basemap,this.map.basemap)));t?(e=t,e._switchBasemap(this.map.basemap)):(e=Q.create({basemap:this.map.basemap}),this._basemapOptions.addInternal(e,0))}e.mapExtension!==this&&e._setMapExtension(this),this._basemapExtension=e}else this._basemapExtension=void 0;I(this,"basemapExtension")}_onGroundChange(){if(this._groundExtension){if(this.map.ground&&this.groundExtension.ground===this.map.ground)return void(this._groundExtensions.has(this.map.ground)||this._groundExtensions.set(this.map.ground,this.groundExtension));this.groundExtension._setMapExtension(void 0)}this.map.ground&&!this._groundExtensions.has(this.map.ground)&&this._groundExtensions.set(this.map.ground,ee.create({ground:this.map.ground}));const e=this._groundExtensions.get(this.map.ground);e&&e.mapExtension!==this&&e._setMapExtension(this),this._groundExtension=e,I(this,"groundExtension")}async _createStandardBasemapOptions(){const e=this._spatialReference;!this._basemapOptions.isExplicitlyModified&&e?.isWebMercator&&await X([M.SATELLITE,M.HYBRID_VECTOR,M.STREETS_VECTOR,M.TOPO_VECTOR,M.STREETS_NAVIGATION_VECTOR,M.STREETS_NIGHT_VECTOR,M.TERRAIN_VECTOR,M.DARK_GRAY_VECTOR,M.GRAY_VECTOR,M.OCEANS_VECTOR,M.OPEN_STREET_MAP_VECTOR],(async e=>{const t=await V(e);P(this.map.basemap,t)?this._basemapOptions.addInternal(this.basemapExtension):this._basemapOptions.addInternal(Q.create({basemap:t}),void 0,!1)}))}_ensureIsBasemapOption(e){const t=this.basemapOptions.findIndex((t=>t.basemap===e.basemap));t>=0?this._basemapOptions.getItemAt(t)!==e&&(this._basemapOptions.removeAtInternal(t),this._basemapOptions.addInternal(e,t)):this._basemapOptions.addInternal(e,0)}_cleanPreviousBasemapOptions(e){if(e&&!k(e))for(let t=this._basemapOptions.length-1;t>=0;t--){const i=this._basemapOptions.getItemAt(t),s=P(i.basemap,e),a=P(i.basemap,this._map?.basemap)||P(i.basemap,this._scene?.basemap);s&&!a&&this._basemapOptions.removeAtInternal(t)}}_updateBookmarks(){this.bookmarks.removeMany(this.bookmarks.filter((e=>"map"===e.source))),D(this.map)&&this.map.bookmarks?.length>0?this.map.bookmarks.forEach((e=>{this.bookmarks.add(new Z({source:"map",title:e.name,viewpoint:e.viewpoint}))})):U(this.map)&&this.map.presentation?.slides?.length>0&&this.map.presentation.slides.forEach((e=>{const t={source:"map",title:e.title.text,viewpoint:e.viewpoint},i=new Z(t);this.bookmarks.add(i)}))}};ne=e([g],ne);export{ne as MapExtension};class oe extends w{isExplicitlyModified=!1;_mapExtension;constructor(e){super(new t),this._mapExtension=e}add(e,t){return super.add(e,t),this.isExplicitlyModified=!0,1===this.length&&this._mapExtension.map&&!this._mapExtension.basemapExtension&&(this._mapExtension.basemapExtension=e),this}addMany(e,t){return super.addMany(e,t),this.isExplicitlyModified=!0,this}addInternal(e,t,i=!0){const s=e=>{const t="-vector";return e?.endsWith(t)?e.substring(0,e.length-7):e};let a;if(e.basemap){const t=s(e.basemap.id);if(a=k(e.basemap)?this.findIndex((e=>s(e.basemap?.id)===t)):this.findIndex((t=>P(t.basemap,e.basemap))),a>=0){if(!i)return;super.removeAt(a)}}super.add(e,t??(a>=0?a:void 0))}removeAt(e){const t=super.removeAt(e);return t&&(this.isExplicitlyModified=!0,t===this._mapExtension.basemapExtension&&(e<this.length?this._mapExtension.basemapExtension=this.getItemAt(e):this.length?this._mapExtension.basemapExtension=this.getItemAt(e-1):this._mapExtension.basemapExtension=void 0)),t}removeAll(){return this._mapExtension.basemapExtension=void 0,super.removeAll()}removeAtInternal(e){return super.removeAt(e)}removeAllInternal(){for(;this.length;)this.removeAtInternal(this.length-1)}reorder(e,t){return super.reorder(e,t),this.isExplicitlyModified=!0,e}reorderInternal(e,t){return super.reorder(e,t)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.basemap}}class re extends w{get _collection(){return this._tables.map((e=>this._forTable(e))).concat(Array.from(this._uninitializedTableExtensions))}get _tables(){return this._mapExtension.map?.tables??new O(new t)}_mapExtension;_tableExtensionMap=new WeakMap;_uninitializedTableExtensions=new Set;_onChangeMapTablesHandle=new T((()=>Y(this._mapExtension,"map.tables",(e=>{const t={added:(e.added||[]).map((e=>this._forTable(e))),moved:(e.moved||[]).map((e=>this._forTable(e))),removed:(e.removed||[]).map((e=>this._forTable(e))),target:this};this.emit("change",t)}))));_onBeforeAddMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["before-add",e=>this.emit("before-add",{...e,item:this._forTable(e.item),target:this})])));_onBeforeRemoveMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["before-remove",e=>this.emit("before-remove",{...e,item:this._forTable(e.item),target:this})])));_onBeforeChangesMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["before-changes",e=>this.emit("before-changes",{...e,target:this})])));_onAfterAddMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["after-add",e=>this.emit("after-add",{...e,item:this._forTable(e.item),target:this})],(e=>{if(null!=e)for(const t of e)this.emit("after-add",{item:this._forTable(t),target:this})}))));_onAfterRemoveMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["after-remove",e=>this.emit("after-remove",{...e,item:this._forTable(e.item),target:this})],((e,t)=>{if(null!=t)for(const e of t)this.emit("after-remove",{item:this._forTable(e),target:this})}))));_onAfterChangesMapTablesHandle=new T((()=>z(this._mapExtension,"map.tables",["after-changes",e=>this.emit("after-changes",{...e,target:this})],(()=>{this.emit("after-changes",{target:this})}))));constructor(e){super(),this._mapExtension=e,S(this,"length",(()=>A(this._mapExtension,"map.tables.length",(()=>I(this,"length")),{sync:!0})))}on(e,t){const i=[];return"change"===e?i.push(this._onChangeMapTablesHandle.add()):"before-add"===e?i.push(this._onBeforeAddMapTablesHandle.add()):"before-remove"===e?i.push(this._onBeforeRemoveMapTablesHandle.add()):"before-changes"===e?i.push(this._onBeforeChangesMapTablesHandle.add()):"after-add"===e?i.push(this._onAfterAddMapTablesHandle.add()):"after-remove"===e?i.push(this._onAfterRemoveMapTablesHandle.add()):"after-changes"===e&&i.push(this._onAfterChangesMapTablesHandle.add()),i.push(super.on(e,t)),v(i)}toJSON(){const e=[];return this.forEach((t=>{e.push(`item://${encodeURIComponent(l.TABLE_EXTENSION)}/${encodeURIComponent(t.id)}`)})),e}clone(){const e=new re(this._mapExtension);return e._tableExtensionMap=this._tableExtensionMap,e}findById(e){return C("id",e).isNotMissing(),this.find((t=>t.id===e))}findByTableId(e){return C("id",e).isNotMissing(),this.find((t=>t._tableId===e))}forTable(e){if(C("table",e).isNotMissing(),this._tables.includes(e))return this._forTable(e)}add(e,t){if(C("tableX",e).isNotMissing(),e.mapExtension&&e.mapExtension.tableExtensions.remove(e),e._setMapExtension(this._mapExtension),e.table){const i=this._tableExtensionMap.get(e.table);if(this._tableExtensionMap.set(e.table,e),i&&i!==e&&this._onRemoved(i),this._tables.includes(e.table))if(void 0===t){const t={added:[e],moved:[],removed:i?[i]:[],target:this};i&&this.emit("after-remove",{item:i,target:this}),this.emit("after-add",{item:e,target:this}),this.emit("change",t)}else this._tables.reorder(e.table,t);else this._tables.add(e.table,t)}else{this._uninitializedTableExtensions.add(e);const t={added:[e],moved:[],removed:[],target:this};this.emit("after-add",{item:e,target:this}),this.emit("change",t)}return this._onAdded(e),this}removeAt(e){const t=this.getItemAt(e);if(void 0!==t){if(this._uninitializedTableExtensions.has(t)){this._uninitializedTableExtensions.delete(t);const e={added:[],moved:[],removed:[t],target:this};this.emit("after-remove",{item:t,target:this}),this.emit("change",e)}else this._tables.remove(t.table);return this._onRemoved(t),t}}reorder(e,t){if(e&&this._tables.includes(e.table))return this._tables.reorder(e.table,t),e}sort(e){return this._tables.sort(((t,i)=>e(this._forTable(t),this._forTable(i)))),this}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.table}_onAdded(e){}_onRemoved(e){e._setMapExtension(void 0)}_forTable(e){for(const e of this._uninitializedTableExtensions)e._resolveTable(),e.table&&(this._tableExtensionMap.set(e.table,e),this._uninitializedTableExtensions.delete(e));if(!this._tableExtensionMap.has(e)){const t=d.create({table:e});this._tableExtensionMap.set(e,t),t._setMapExtension(this._mapExtension),this._onAdded(t)}return this._tableExtensionMap.get(e)}}class pe extends y{get _collection(){let e=this._mapExtension.layerExtensions.flatten((e=>H(e)?e.layerExtensions:[]));return this._mapExtension.basemapExtension&&(e=e.concat(this._mapExtension.basemapExtension.baseLayerExtensions.toArray()).concat(this._mapExtension.basemapExtension.referenceLayerExtensions.toArray())),e=e.concat(this._mapExtension.groundExtension.layerExtensions.toArray()),e}_mapExtension;_onChangeLayerExtensionsHandle=new T((()=>{const e=new WeakMap,i=new Set,s=a=>{const n=new t(a.added).flatten((e=>H(e)?e.layerExtensions:[])),o=new t(a.moved).flatten((e=>H(e)?e.layerExtensions:[])),r=new t(a.removed).flatten((e=>H(e)?e.layerExtensions:[]));for(const t of n)if(!e.has(t)&&H(t)){const a=t.layerExtensions.on("change",s);e.set(t,a),i.add(a)}for(const t of r){const s=e.get(t);s&&(s.remove(),e.delete(t),i.delete(s))}this.emit("change",{added:n.toArray(),moved:o.toArray(),removed:r.toArray(),target:this})};i.add(this._mapExtension.layerExtensions.on("change",s));const a=this._mapExtension.layerExtensions.flatten((e=>H(e)?e.layerExtensions:[]));for(const t of a)if(H(t)){const a=t.layerExtensions.on("change",s);e.set(t,a),i.add(a)}return i.add(Y(this._mapExtension,"basemapExtension.baseLayerExtensions",(e=>{this.emit("change",{...e,target:this})}))),i.add(Y(this._mapExtension,"basemapExtension.referenceLayerExtensions",(e=>{this.emit("change",{...e,target:this})}))),i.add(this._mapExtension.groundExtension.layerExtensions.on("change",(e=>{this.emit("change",{...e,target:this})}))),v(i)}));_onAfterAddLayerExtensionsHandle=new T((()=>{const e=new WeakMap,t=new Set,i=i=>{const s=e.get(i);s&&(s.remove(),e.delete(i),t.delete(s))},s=e=>{const t=e.item;if(H(t)){const e=t.layerExtensions.flatten((e=>H(e)?e.layerExtensions:[]));for(const t of e)i(t)}i(t)},a=i=>{this.emit("after-add",{...i,target:this});const n=i.item;if(H(n)){const o=n.layerExtensions.flatten((e=>H(e)?e.layerExtensions:[]));for(const n of o)if(this.emit("after-add",{...i,item:n,target:this}),!e.has(n)&&H(n)){const i=n.layerExtensions.on("after-add",a),o=n.layerExtensions.on("after-remove",s),r=v([i,o]);e.set(n,r),t.add(r)}}};t.add(this._mapExtension.layerExtensions.on("after-add",a)),t.add(this._mapExtension.layerExtensions.on("after-remove",s));const n=this._mapExtension.layerExtensions.flatten((e=>H(e)?e.layerExtensions:[]));for(const i of n)if(H(i)){const n=i.layerExtensions.on("after-add",a),o=i.layerExtensions.on("after-remove",s),r=v([n,o]);e.set(i,r),t.add(r)}return t.add(z(this._mapExtension,"basemapExtension.baseLayerExtensions",["after-add",e=>this.emit("after-add",{...e,target:this})])),t.add(z(this._mapExtension,"basemapExtension.referenceLayerExtensions",["after-add",e=>this.emit("after-add",{...e,target:this})])),t.add(this._mapExtension.groundExtension.layerExtensions.on("after-add",(e=>{this.emit("after-add",{...e,target:this})}))),v(t)}));_onAfterRemoveLayerExtensionsHandle=new T((()=>{const e=new WeakMap,t=new Set,i=i=>{const s=e.get(i);s&&(s.remove(),e.delete(i),t.delete(s))},s=e=>{this.emit("after-remove",{...e,target:this});const t=e.item;if(H(t)){const s=t.layerExtensions.flatten((e=>H(e)?e.layerExtensions:[]));for(const t of s)this.emit("after-remove",{...e,item:t,target:this}),i(t)}i(t)},a=i=>{const n=i.item;if(H(n)){const i=n.layerExtensions.on("after-add",a),o=n.layerExtensions.on("after-remove",s),r=v([i,o]);e.set(n,r),t.add(r)}};t.add(this._mapExtension.layerExtensions.on("after-remove",s)),t.add(this._mapExtension.layerExtensions.on("after-add",a));const n=this._mapExtension.layerExtensions.flatten((e=>H(e)?e.layerExtensions:[]));for(const i of n)if(H(i)){const n=i.layerExtensions.on("after-add",a),o=i.layerExtensions.on("after-remove",s),r=v([n,o]);e.set(i,r),t.add(r)}return t.add(z(this._mapExtension,"basemapExtension.baseLayerExtensions",["after-remove",e=>this.emit("after-remove",{...e,target:this})])),t.add(z(this._mapExtension,"basemapExtension.referenceLayerExtensions",["after-remove",e=>this.emit("after-remove",{...e,target:this})])),t.add(this._mapExtension.groundExtension.layerExtensions.on("after-remove",(e=>{this.emit("after-remove",{...e,target:this})}))),v(t)}));constructor(e){super(),this._mapExtension=e}on(e,t){const i=[];return"change"===e?i.push(this._onChangeLayerExtensionsHandle.add()):"after-add"===e?i.push(this._onAfterAddLayerExtensionsHandle.add()):"after-remove"===e&&i.push(this._onAfterRemoveLayerExtensionsHandle.add()),i.push(super.on(e,t)),v(i)}findById(e){return C("id",e).isNotMissing(),this.find((t=>t.id===e))}findByLayerId(e){return C("id",e).isNotMissing(),this.find((t=>t._layerId===e))}forLayer(e){return C("layer",e).isNotMissing(),this.findByLayerId(e.id)}_itemIsInitialized(e){return super._itemIsInitialized(e)&&!!e.layer}}function he(e){if(!(null==e||"object"==typeof e&&e?.baseMap))return $(e)}function me(e){return"object"!=typeof e||e&&!e.baseMap}function le(e,t,i){if(e?.type&&e.type!==i)throw new Error(`Invalid portal item type "${e.type}" for property ${t}.`)}async function de(e){await R(e),e.basemap&&(await R(e.basemap),e.basemap.baseLayers.filter((e=>W(e))).map((e=>{const t=e;return t.activeLayer.imageFormat=t.activeLayer.imageFormat??(t.activeLayer.imageFormats?.length>0?t.activeLayer.imageFormats[0]:""),t.activeLayer.styleId=t.activeLayer.styleId??"",t})),e.basemap.id=L(e.basemap)??e.basemap.id)}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vertigis/arcgis-extensions",
3
3
  "license": "SEE LICENSE IN LICENSE",
4
- "version": "52.1.0",
4
+ "version": "52.2.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://dev.azure.com/vertigis/Studio/_git/arcgis-extensions-ts"
package/support/esri.d.ts CHANGED
@@ -256,20 +256,28 @@ export declare enum WellKnownBasemap {
256
256
  HYBRID = "hybrid",
257
257
  HYBRID_VECTOR = "hybrid-vector",
258
258
  STREETS = "streets",
259
+ STREETS_3D = "streets-3d",
260
+ STREETS_DARK_3D = "streets-dark-3d",
259
261
  STREETS_VECTOR = "streets-vector",
260
262
  TOPO = "topo",
263
+ TOPO_3D = "topo-3d",
261
264
  TOPO_VECTOR = "topo-vector",
265
+ STREETS_NAVIGATION_3D = "navigation-3d",
266
+ STREETS_NAVIGATION_DARK_3D = "navigation-dark-3d",
262
267
  STREETS_NAVIGATION_VECTOR = "streets-navigation-vector",
263
268
  STREETS_NIGHT_VECTOR = "streets-night-vector",
264
269
  TERRAIN = "terrain",
265
270
  TERRAIN_VECTOR = "terrain-vector",
266
271
  DARK_GRAY = "dark-gray",
272
+ DARK_GRAY_3D = "dark-gray-3d",
267
273
  DARK_GRAY_VECTOR = "dark-gray-vector",
268
274
  GRAY = "gray",
275
+ GRAY_3D = "gray-3d",
269
276
  GRAY_VECTOR = "gray-vector",
270
277
  OCEANS = "oceans",
271
278
  OCEANS_VECTOR = "oceans-vector",
272
279
  OPEN_STREET_MAP = "osm",
280
+ OPEN_STREET_MAP_3D = "osm-3d",
273
281
  OPEN_STREET_MAP_VECTOR = "osm-vector",
274
282
  STREETS_RELIEF_VECTOR = "streets-relief-vector"
275
283
  }
package/support/esri.js CHANGED
@@ -1 +1 @@
1
- import e from"@arcgis/core/core/Collection";const a=e;export{a as Collection};export var WellKnownBasemap;!function(e){e.SATELLITE="satellite",e.HYBRID="hybrid",e.HYBRID_VECTOR="hybrid-vector",e.STREETS="streets",e.STREETS_VECTOR="streets-vector",e.TOPO="topo",e.TOPO_VECTOR="topo-vector",e.STREETS_NAVIGATION_VECTOR="streets-navigation-vector",e.STREETS_NIGHT_VECTOR="streets-night-vector",e.TERRAIN="terrain",e.TERRAIN_VECTOR="terrain-vector",e.DARK_GRAY="dark-gray",e.DARK_GRAY_VECTOR="dark-gray-vector",e.GRAY="gray",e.GRAY_VECTOR="gray-vector",e.OCEANS="oceans",e.OCEANS_VECTOR="oceans-vector",e.OPEN_STREET_MAP="osm",e.OPEN_STREET_MAP_VECTOR="osm-vector",e.STREETS_RELIEF_VECTOR="streets-relief-vector"}(WellKnownBasemap||(WellKnownBasemap={}));export const wellKnownBasemapTitles={[WellKnownBasemap.SATELLITE]:"Imagery",[WellKnownBasemap.HYBRID]:"Imagery with Labels",[WellKnownBasemap.HYBRID_VECTOR]:"Imagery with Labels",[WellKnownBasemap.STREETS]:"Streets",[WellKnownBasemap.STREETS_VECTOR]:"Streets",[WellKnownBasemap.TOPO]:"Topographic",[WellKnownBasemap.TOPO_VECTOR]:"Topographic",[WellKnownBasemap.STREETS_NAVIGATION_VECTOR]:"World Navigation Map",[WellKnownBasemap.STREETS_NIGHT_VECTOR]:"World Street Map (Night)",[WellKnownBasemap.TERRAIN]:"Terrain with Labels",[WellKnownBasemap.TERRAIN_VECTOR]:"Terrain with Labels",[WellKnownBasemap.DARK_GRAY]:"Dark Gray Canvas",[WellKnownBasemap.DARK_GRAY_VECTOR]:"Dark Gray Canvas",[WellKnownBasemap.GRAY]:"Light Gray Canvas",[WellKnownBasemap.GRAY_VECTOR]:"Light Gray Canvas",[WellKnownBasemap.OCEANS]:"Oceans",[WellKnownBasemap.OCEANS_VECTOR]:"Oceans",[WellKnownBasemap.OPEN_STREET_MAP]:"OpenStreetMap",[WellKnownBasemap.OPEN_STREET_MAP_VECTOR]:"OpenStreetMap",[WellKnownBasemap.STREETS_RELIEF_VECTOR]:"World Street Map (with Relief)"};
1
+ import e from"@arcgis/core/core/Collection";const a=e;export{a as Collection};export var WellKnownBasemap;!function(e){e.SATELLITE="satellite",e.HYBRID="hybrid",e.HYBRID_VECTOR="hybrid-vector",e.STREETS="streets",e.STREETS_3D="streets-3d",e.STREETS_DARK_3D="streets-dark-3d",e.STREETS_VECTOR="streets-vector",e.TOPO="topo",e.TOPO_3D="topo-3d",e.TOPO_VECTOR="topo-vector",e.STREETS_NAVIGATION_3D="navigation-3d",e.STREETS_NAVIGATION_DARK_3D="navigation-dark-3d",e.STREETS_NAVIGATION_VECTOR="streets-navigation-vector",e.STREETS_NIGHT_VECTOR="streets-night-vector",e.TERRAIN="terrain",e.TERRAIN_VECTOR="terrain-vector",e.DARK_GRAY="dark-gray",e.DARK_GRAY_3D="dark-gray-3d",e.DARK_GRAY_VECTOR="dark-gray-vector",e.GRAY="gray",e.GRAY_3D="gray-3d",e.GRAY_VECTOR="gray-vector",e.OCEANS="oceans",e.OCEANS_VECTOR="oceans-vector",e.OPEN_STREET_MAP="osm",e.OPEN_STREET_MAP_3D="osm-3d",e.OPEN_STREET_MAP_VECTOR="osm-vector",e.STREETS_RELIEF_VECTOR="streets-relief-vector"}(WellKnownBasemap||(WellKnownBasemap={}));export const wellKnownBasemapTitles={[WellKnownBasemap.SATELLITE]:"Imagery",[WellKnownBasemap.HYBRID]:"Imagery with Labels",[WellKnownBasemap.HYBRID_VECTOR]:"Imagery with Labels",[WellKnownBasemap.STREETS]:"Streets",[WellKnownBasemap.STREETS_3D]:"Streets",[WellKnownBasemap.STREETS_DARK_3D]:"Streets (Night)",[WellKnownBasemap.STREETS_VECTOR]:"Streets",[WellKnownBasemap.TOPO]:"Topographic",[WellKnownBasemap.TOPO_3D]:"Topographic",[WellKnownBasemap.TOPO_VECTOR]:"Topographic",[WellKnownBasemap.STREETS_NAVIGATION_3D]:"World Navigation Map",[WellKnownBasemap.STREETS_NAVIGATION_DARK_3D]:"World Navigation Map (Night)",[WellKnownBasemap.STREETS_NAVIGATION_VECTOR]:"World Navigation Map",[WellKnownBasemap.STREETS_NIGHT_VECTOR]:"World Street Map (Night)",[WellKnownBasemap.TERRAIN]:"Terrain with Labels",[WellKnownBasemap.TERRAIN_VECTOR]:"Terrain with Labels",[WellKnownBasemap.DARK_GRAY]:"Dark Gray Canvas",[WellKnownBasemap.DARK_GRAY_3D]:"Dark Gray Canvas",[WellKnownBasemap.DARK_GRAY_VECTOR]:"Dark Gray Canvas",[WellKnownBasemap.GRAY]:"Light Gray Canvas",[WellKnownBasemap.GRAY_3D]:"Light Gray Canvas",[WellKnownBasemap.GRAY_VECTOR]:"Light Gray Canvas",[WellKnownBasemap.OCEANS]:"Oceans",[WellKnownBasemap.OCEANS_VECTOR]:"Oceans",[WellKnownBasemap.OPEN_STREET_MAP]:"OpenStreetMap",[WellKnownBasemap.OPEN_STREET_MAP_3D]:"OpenStreetMap",[WellKnownBasemap.OPEN_STREET_MAP_VECTOR]:"OpenStreetMap",[WellKnownBasemap.STREETS_RELIEF_VECTOR]:"World Street Map (with Relief)"};
@@ -38,7 +38,7 @@ import type WMSSublayer from "@arcgis/core/layers/support/WMSSublayer";
38
38
  import type WMTSSublayer from "@arcgis/core/layers/support/WMTSSublayer";
39
39
  import type TimeExtent from "@arcgis/core/time/TimeExtent";
40
40
  import type TimeInterval from "@arcgis/core/time/TimeInterval";
41
- import type { BasemapJson } from "../json/BasemapJson.js";
41
+ import { type BasemapJson } from "../json/BasemapJson.js";
42
42
  import { type LayerJson } from "../json/LayerJson.js";
43
43
  import type { GroupLayerExtension } from "../mapping/GroupLayerExtension.js";
44
44
  import type { LayerProperties, LayerExtension } from "../mapping/_LayerExtension.js";
@@ -1 +1 @@
1
- import{getLayerJsonType as e}from"../json/LayerJson.js";import{WellKnownBasemap as r}from"../support/esri.js";import{isBasemap as s}from"./mapping.js";function a(e){if(e?.$ref){const r=e;return"string"==typeof r.$ref?{title:r.$ref,id:r.$ref,...e}:{...e,...r.$ref}}return e}export function getLayerUrl(r){if(!r)return;if(r.$ref?.url)return r.$ref?.url;let s;switch(isLayer(r)?e(r):r.layerType){case"ArcGISFeatureLayer":case"SubtypeGroupLayer":isRouteLayer(r)||(s=isLayer(r)&&r.url?`${r.url}/${r.layerId}`:r.url);break;case"ArcGISSceneServiceLayer":case"BuildingSceneLayer":case"PointCloudLayer":s=isLayer(r)&&r.url?`${r.url}/layers/${r.layerId}`:r.url;break;case"VectorTileLayer":s=r.styleUrl??r.url;break;case"WebTiledLayer":s=r.wmtsInfo||isWMTSLayer(r)?r.wmtsInfo?.url??r.url:r.templateUrl??r.urlTemplate;break;default:s=r.url}return s??void 0}export function layersAreEquivalent(e,r){return"none"!==getEquivalencyTypeForLayers(e,r)}export function getEquivalencyTypeForLayers(r,s){if(!r||!s)return"none";if(r===s)return"solid";const t=isLayer(r)?r:a(r),i=isLayer(s)?s:a(s),n=isLayer(t)?e(t):t.layerType;if(n!==(isLayer(i)?e(i):i.layerType))return"none";if(null!=n&&("OpenStreetMap"===(o=n)||"BingMapsAerial"===o||"BingMapsRoad"===o||"BingMapsHybrid"===o))return"solid";var o;if(t.id===i.id)return"solid";const l=t.title&&t.title===i.title;if("GroupLayer"===n&&l)return"solid";const c=getLayerUrl(r),y=getLayerUrl(s);return c&&y&&function(e,r){if(!e||!r)return e==r;return e.toLowerCase().replace("www.arcgis.com","cdn.arcgis.com")===r.toLowerCase().replace("www.arcgis.com","cdn.arcgis.com")}(c,y)?l?"solid":"loose":l?"loose":"none"}export function basemapsAreEquivalent(e,r){if(e===r)return!0;if(!e||!r)return!1;const a=s(e)?e.toJSON():e,t=a.baseMapLayers?.filter((e=>!e.isReference))??[],i=a.baseMapLayers?.filter((e=>e.isReference))??[],n=s(r)?r.toJSON():r,o=n.baseMapLayers?.filter((e=>!e.isReference))??[],l=n.baseMapLayers?.filter((e=>e.isReference))??[];return t.length===o.length&&t.every(((e,r)=>layersAreEquivalent(e,o[r])))&&i.length===l.length&&i.every(((e,r)=>layersAreEquivalent(e,l[r])))}export const standardBasemaps={[r.DARK_GRAY]:{baseMapLayers:[{id:"dark-gray-base-layer",title:"World Dark Gray Base",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{isReference:!0,id:"dark-gray-reference-layer",title:"World Dark Gray Reference",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.DARK_GRAY_VECTOR]:{baseMapLayers:[{id:"dark-gray-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Dark Gray Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/5e9b3685f4c24d8781073dd928ebda50/resources/styles/root.json"},{id:"dark-gray-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Dark Gray Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/747cb7a5329c478cbe6981076cc879c5/resources/styles/root.json",isReference:!0}]},[r.GRAY]:{baseMapLayers:[{id:"gray-base-layer",title:"World Light Gray Base",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{isReference:!0,id:"gray-reference-layer",title:"World Light Gray Reference",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.GRAY_VECTOR]:{baseMapLayers:[{id:"gray-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Light Gray Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/291da5eab3a0412593b66d384379f89f/resources/styles/root.json"},{id:"gray-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Light Gray Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/1768e8369a214dfab4e2167d5c5f2454/resources/styles/root.json",isReference:!0}]},[r.HYBRID]:{baseMapLayers:[{id:"hybrid-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",title:"World Imagery"},{id:"hybrid-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer",title:"World Boundaries and Places",isReference:!0}]},[r.HYBRID_VECTOR]:{baseMapLayers:[{id:"hybrid-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",title:"World Imagery"},{id:"hybrid-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Hybrid Reference Layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/30d6b8271e1849cd9c3042060001f425/resources/styles/root.json",isReference:!0}]},[r.OCEANS]:{baseMapLayers:[{id:"oceans-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",title:"World Ocean Base"},{id:"oceans-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Ocean Reference",url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Reference/MapServer",isReference:!0}]},[r.OCEANS_VECTOR]:{baseMapLayers:[{id:"oceans-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",title:"World Ocean Base"},{id:"oceans-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Ocean Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/89860a5baf424f3ea0c655115faababe/resources/styles/root.json",isReference:!0}]},[r.OPEN_STREET_MAP]:{baseMapLayers:[{id:"osm-base-layer",layerType:"OpenStreetMap",showLegend:!1,title:"OpenStreetMap"}]},[r.OPEN_STREET_MAP_VECTOR]:{baseMapLayers:[{id:"osm-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"OpenStreetMap",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/aa809b0ba7a14c61a3a25a6d1df3e6af/resources/styles/root.json"}]},[r.SATELLITE]:{baseMapLayers:[{id:"satellite-base-layer",title:"World Imagery",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.STREETS]:{baseMapLayers:[{id:"streets-base-layer",title:"World Street Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.STREETS_NAVIGATION_VECTOR]:{baseMapLayers:[{id:"streets-navigation-vector-base-layer",title:"World Navigation Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/63c47b7177f946b49902c24129b87252/resources/styles/root.json"}]},[r.STREETS_NIGHT_VECTOR]:{baseMapLayers:[{id:"streets-night-vector-base-layer",title:"World Street Map (Night)",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/86f556a2d1fd468181855a35e344567f/resources/styles/root.json"}]},[r.STREETS_RELIEF_VECTOR]:{baseMapLayers:[{id:"world-hillshade-layer",title:"World Hillshade",url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{id:"streets-relief-vector-base-layer",title:"World Streets Relief",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/b266e6d17fc345b498345613930fbd76/resources/styles/root.json"}]},[r.STREETS_VECTOR]:{baseMapLayers:[{id:"streets-vector-base-layer",title:"World Street Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/de26a3cf4cc9451298ea173c4b324736/resources/styles/root.json"}]},[r.TERRAIN]:{baseMapLayers:[{id:"terrain-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer",title:"World Terrain Base"},{id:"terrain-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer",title:"World Terrain Reference",isReference:!0}]},[r.TERRAIN_VECTOR]:{baseMapLayers:[{id:"world-hillshade",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",title:"World Hillshade"},{id:"terrain-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Terrain Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/33064a20de0c48d2bb61efa8faca93a8/resources/styles/root.json"},{id:"terrain-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Terrain Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/14fbc125ccc9488888b014db09f35f67/resources/styles/root.json",isReference:!0}]},[r.TOPO]:{baseMapLayers:[{id:"topo-base-layer",title:"World Topo Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[r.TOPO_VECTOR]:{baseMapLayers:[{id:"world-hillshade-layer",title:"World Hillshade",url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{id:"topo-vector-base-layer",title:"World Topographic Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/7dc6cea0b1764a1f9af2e679f642f0f5/resources/styles/root.json"}]}};const t=/^esri[./]layers[./](tools[./])?\w+Layer$/,i=/^esri[./]layers[./](support[./])?(buildingSublayers[./])?\w*Sublayer$/;export function isLayer(e){const r=e?.declaredClass;return"string"==typeof r&&t.test(r)}export function isSublayer(e){const r=e?.declaredClass;return"string"==typeof r&&i.test(r)}export function isBingMapsLayer(e){return"bing-maps"===e?.type}export function isCSVLayer(e){return"csv"===e?.type}export function isGeoJSONLayer(e){return"geojson"===e?.type}export function isSubtypeGroupLayer(e){return"subtype-group"===e?.type}export function isStreamLayer(e){return"stream"===e?.type}export function isFeatureLayerBase(e){return isCSVLayer(e)||isFeatureLayer(e)||isStreamLayer(e)||isGeoJSONLayer(e)}export function isFeatureLayer(e){return"feature"===e?.type}export function isGeoRssLayer(e){return"geo-rss"===e?.type}export function isGraphicsLayer(e){return"graphics"===e?.type}export function isMapNotesLayer(e){return"map-notes"===e?.type}export function isImageryLayer(e){return"imagery"===e?.type}export function isKMLLayer(e){return"kml"===e?.type}export function isMediaLayer(e){return"media"===e?.type}export function isMapImageLayer(e){return"map-image"===e?.type}export function isOpenStreetMapLayer(e){return"open-street-map"===e?.type}export function isWebTileLayer(e){return"web-tile"===e?.type||"open-street-map"===e?.type}export function isVectorTileLayer(e){return"vector-tile"===e?.type}export function isElevationLayer(e){return"elevation"===e?.type}export function isSceneLayer(e){return"scene"===e?.type}export function isPointCloudLayer(e){return"point-cloud"===e?.type}export function isIntegratedMeshLayer(e){return"integrated-mesh"===e?.type}export function isGroupLayer(e){return"group"===e?.type}export function isWFSLayer(e){return"wfs"===e?.type}export function isWMSLayer(e){return"wms"===e?.type}export function isWMTSLayer(e){return"wmts"===e?.type}export function isBuildingSceneLayer(e){return"building-scene"===e?.type}export function isTileLayer(e){return"tile"===e?.type}export function isImageryTileLayer(e){return"imagery-tile"===e?.type}export function isTiledImageServiceLayer(e){return isTileLayer(e)&&n(e)}export function isTiledMapServiceLayer(e){return isTileLayer(e)&&!n(e)}function n(e){const r=e.url??e.portalItem?.url;return null!=r&&/\/ImageServer(\/|\/?$)/i.test(r)}export function isMapImageSublayer(e){return"esri.layers.support.Sublayer"===e?.declaredClass}export function isKMLSublayer(e){return"esri.layers.support.KMLSublayer"===e?.declaredClass}export function isWMTSSublayer(e){return"esri.layers.support.WMTSSublayer"===e?.declaredClass}export function isWMSSublayer(e){return"esri.layers.support.WMSSublayer"===e?.declaredClass}export function isMapNotesSublayer(e){return"esri.layers.MapNotesLayer.MapNotesSublayer"===e?.declaredClass}export function isRouteLayer(e){return"route"===e?.type}export function isBuildingComponentSublayer(e){const r=e;return"building-component"===r?.type}export function isBuildingGroupSublayer(e){const r=e;return"building-group"===r?.type}export function isLayerWithLegendEnabledProperty(e){return!(isBuildingSceneLayer(e)||isCSVLayer(e)||isElevationLayer(e)||isGraphicsLayer(e)||isGroupLayer(e)||isIntegratedMeshLayer(e)||isKMLLayer(e)||isOpenStreetMapLayer(e)||isPointCloudLayer(e)||isWebTileLayer(e)||isWMTSLayer(e)||isVectorTileLayer(e))}export function hasMmapLayer(e){return e.some((e=>{const r=e._deferredLayerProperties;return!("string"==typeof r?.$ref||!r?.$ref?.path)||!!e.layerExtensions&&hasMmapLayer(e.layerExtensions.toArray())}))}export function isTimeAwareLayer(e){return isLayer(e)&&e.hasOwnProperty("timeExtent")}export function isSubtypeSublayer(e){return"esri.layers.support.SubtypeSublayer"===e?.declaredClass}
1
+ import{basemapToJson as e}from"../json/BasemapJson.js";import{getLayerJsonType as r}from"../json/LayerJson.js";import{WellKnownBasemap as s}from"../support/esri.js";import{isBasemap as a}from"./mapping.js";function t(e){if(e?.$ref){const r=e;return"string"==typeof r.$ref?{title:r.$ref,id:r.$ref,...e}:{...e,...r.$ref}}return e}export function getLayerUrl(e){if(!e)return;if(e.$ref?.url)return e.$ref?.url;let s;switch(isLayer(e)?r(e):e.layerType){case"ArcGISFeatureLayer":case"SubtypeGroupLayer":isRouteLayer(e)||(s=isLayer(e)&&e.url?`${e.url}/${e.layerId}`:e.url);break;case"ArcGISSceneServiceLayer":case"BuildingSceneLayer":case"PointCloudLayer":s=isLayer(e)&&e.url?`${e.url}/layers/${e.layerId}`:e.url;break;case"VectorTileLayer":s=e.styleUrl??e.url;break;case"WebTiledLayer":s=e.wmtsInfo||isWMTSLayer(e)?e.wmtsInfo?.url??e.url:e.templateUrl??e.urlTemplate;break;default:s=e.url}return s??void 0}export function layersAreEquivalent(e,r){return"none"!==getEquivalencyTypeForLayers(e,r)}export function getEquivalencyTypeForLayers(e,s){if(!e||!s)return"none";if(e===s)return"solid";const a=isLayer(e)?e:t(e),i=isLayer(s)?s:t(s),n=isLayer(a)?r(a):a.layerType;if(n!==(isLayer(i)?r(i):i.layerType))return"none";if(null!=n&&("OpenStreetMap"===(c=n)||"BingMapsAerial"===c||"BingMapsRoad"===c||"BingMapsHybrid"===c))return"solid";var c;if(a.id===i.id)return"solid";const l=a.title&&a.title===i.title;if("GroupLayer"===n&&l)return"solid";const o=getLayerUrl(e),y=getLayerUrl(s);return o&&y&&function(e,r){if(!e||!r)return e==r;return e.toLowerCase().replace("www.arcgis.com","cdn.arcgis.com")===r.toLowerCase().replace("www.arcgis.com","cdn.arcgis.com")}(o,y)?l?"solid":"loose":l?"loose":"none"}export function basemapsAreEquivalent(r,s){if(r===s)return!0;if(!r||!s)return!1;const t=a(r)?e(r):r,i=t.baseMapLayers?.filter((e=>!e.isReference))??[],n=t.baseMapLayers?.filter((e=>e.isReference))??[],c=a(s)?e(s):s,l=c.baseMapLayers?.filter((e=>!e.isReference))??[],o=c.baseMapLayers?.filter((e=>e.isReference))??[];return i.length===l.length&&i.every(((e,r)=>layersAreEquivalent(e,l[r])))&&n.length===o.length&&n.every(((e,r)=>layersAreEquivalent(e,o[r])))}export const standardBasemaps={[s.DARK_GRAY]:{baseMapLayers:[{id:"dark-gray-base-layer",title:"World Dark Gray Base",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{isReference:!0,id:"dark-gray-reference-layer",title:"World Dark Gray Reference",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[s.DARK_GRAY_VECTOR]:{baseMapLayers:[{id:"dark-gray-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Dark Gray Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/5e9b3685f4c24d8781073dd928ebda50/resources/styles/root.json"},{id:"dark-gray-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Dark Gray Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/747cb7a5329c478cbe6981076cc879c5/resources/styles/root.json",isReference:!0}]},[s.GRAY]:{baseMapLayers:[{id:"gray-base-layer",title:"World Light Gray Base",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{isReference:!0,id:"gray-reference-layer",title:"World Light Gray Reference",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[s.GRAY_VECTOR]:{baseMapLayers:[{id:"gray-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Light Gray Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/291da5eab3a0412593b66d384379f89f/resources/styles/root.json"},{id:"gray-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Light Gray Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/1768e8369a214dfab4e2167d5c5f2454/resources/styles/root.json",isReference:!0}]},[s.HYBRID]:{baseMapLayers:[{id:"hybrid-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",title:"World Imagery"},{id:"hybrid-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer",title:"World Boundaries and Places",isReference:!0}]},[s.HYBRID_VECTOR]:{baseMapLayers:[{id:"hybrid-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",title:"World Imagery"},{id:"hybrid-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Hybrid Reference Layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/30d6b8271e1849cd9c3042060001f425/resources/styles/root.json",isReference:!0}]},[s.OCEANS]:{baseMapLayers:[{id:"oceans-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",title:"World Ocean Base"},{id:"oceans-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Ocean Reference",url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Reference/MapServer",isReference:!0}]},[s.OCEANS_VECTOR]:{baseMapLayers:[{id:"oceans-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",title:"World Ocean Base"},{id:"oceans-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Ocean Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/89860a5baf424f3ea0c655115faababe/resources/styles/root.json",isReference:!0}]},[s.OPEN_STREET_MAP]:{baseMapLayers:[{id:"osm-base-layer",layerType:"OpenStreetMap",showLegend:!1,title:"OpenStreetMap"}]},[s.OPEN_STREET_MAP_VECTOR]:{baseMapLayers:[{id:"osm-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"OpenStreetMap",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/aa809b0ba7a14c61a3a25a6d1df3e6af/resources/styles/root.json"}]},[s.SATELLITE]:{baseMapLayers:[{id:"satellite-base-layer",title:"World Imagery",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[s.STREETS]:{baseMapLayers:[{id:"streets-base-layer",title:"World Street Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[s.STREETS_NAVIGATION_VECTOR]:{baseMapLayers:[{id:"streets-navigation-vector-base-layer",title:"World Navigation Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/63c47b7177f946b49902c24129b87252/resources/styles/root.json"}]},[s.STREETS_NIGHT_VECTOR]:{baseMapLayers:[{id:"streets-night-vector-base-layer",title:"World Street Map (Night)",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/86f556a2d1fd468181855a35e344567f/resources/styles/root.json"}]},[s.STREETS_RELIEF_VECTOR]:{baseMapLayers:[{id:"world-hillshade-layer",title:"World Hillshade",url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{id:"streets-relief-vector-base-layer",title:"World Streets Relief",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/b266e6d17fc345b498345613930fbd76/resources/styles/root.json"}]},[s.STREETS_VECTOR]:{baseMapLayers:[{id:"streets-vector-base-layer",title:"World Street Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/de26a3cf4cc9451298ea173c4b324736/resources/styles/root.json"}]},[s.TERRAIN]:{baseMapLayers:[{id:"terrain-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer",title:"World Terrain Base"},{id:"terrain-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer",title:"World Terrain Reference",isReference:!0}]},[s.TERRAIN_VECTOR]:{baseMapLayers:[{id:"world-hillshade",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",title:"World Hillshade"},{id:"terrain-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Terrain Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/33064a20de0c48d2bb61efa8faca93a8/resources/styles/root.json"},{id:"terrain-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Terrain Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/14fbc125ccc9488888b014db09f35f67/resources/styles/root.json",isReference:!0}]},[s.TOPO]:{baseMapLayers:[{id:"topo-base-layer",title:"World Topo Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[s.TOPO_VECTOR]:{baseMapLayers:[{id:"world-hillshade-layer",title:"World Hillshade",url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{id:"topo-vector-base-layer",title:"World Topographic Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/7dc6cea0b1764a1f9af2e679f642f0f5/resources/styles/root.json"}]},[s.TOPO_3D]:{baseMapLayers:[{id:"topo-3d-base-layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/1e7d1784d1ef4b79ba6764d0bd6c3150/resources/styles/root.json",layerType:"VectorTileLayer",title:"Topographic",visibility:!0,opacity:1},{id:"topo-3d-trees",showLegend:!1,title:"Trees",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/OpenStreetMap3D_Trees_Thematic_v1/SceneServer",itemId:"f75fef56b2d944fe92ef9f7737b4f953",layerType:"ArcGISSceneServiceLayer"},{id:"topo-3d-places-and-labels",showLegend:!1,title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/OpenStreetMap3D_DarkLabels_v1/SceneServer",itemId:"a84404ad39c64c328d0596e361ec459b",layerType:"ArcGISSceneServiceLayer"},{id:"topo-3d-buildings",showLegend:!1,title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",itemId:"ca0470dbbddb4db28bad74ed39949e25",layerType:"ArcGISSceneServiceLayer"}]},[s.STREETS_3D]:{baseMapLayers:[{id:"streets-3d-base-layer",showLegend:!1,title:"Streets",layerType:"VectorTileLayer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/198298c4c64c4cb19de5b46aa00c198d/resources/styles/root.json",visibility:!0,opacity:1},{id:"streets-3d-places-and-labels",showLegend:!1,title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/OpenStreetMap3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"streets-3d-buildings",showLegend:!1,title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},[s.GRAY_3D]:{baseMapLayers:[{id:"gray-3d-base-layer",showLegend:!1,title:"Light Gray Canvas",layerType:"VectorTileLayer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/01a14b466345455ba4176d2e6390db92/resources/styles/root.json",visibility:!0,opacity:1},{id:"gray-3d-places-and-labels",showLegend:!1,title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/OpenStreetMap3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"gray-3d-buildings",showLegend:!1,title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},[s.DARK_GRAY_3D]:{baseMapLayers:[{id:"dark-gray-3d-base-layer",showLegend:!1,title:"Dark Gray Canvas",layerType:"VectorTileLayer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/4178f71acb934fb89f169e7d667c20c6/resources/styles/root.json",visibility:!0,opacity:1},{id:"dark-gray-3d-places-and-labels",showLegend:!1,title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/OpenStreetMap3D_LightLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"dark-gray-3d-buildings",showLegend:!1,title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},[s.STREETS_NAVIGATION_3D]:{baseMapLayers:[{id:"streets-navigation-3d-base-layer",showLegend:!1,title:"Navigation",layerType:"VectorTileLayer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/ccc904ff872b4144b94934e55e32784b/resources/styles/root.json",visibility:!0,opacity:1},{id:"streets-navigation-3d-places-and-labels",showLegend:!1,title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/OpenStreetMap3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"streets-navigation-3d-buildings",showLegend:!1,title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},[s.STREETS_NAVIGATION_DARK_3D]:{baseMapLayers:[{id:"streets-navigation-dark-3d-base-layer",showLegend:!1,title:"Navigation (Dark)",layerType:"VectorTileLayer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/451a1777ab3f4bf095fae24a117439d9/resources/styles/root.json",visibility:!0,opacity:1},{id:"streets-navigation-dark-3d-places-and-labels",showLegend:!1,title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/OpenStreetMap3D_LightLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"streets-navigation-dark-3d-buildings",showLegend:!1,title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},[s.OPEN_STREET_MAP_3D]:{baseMapLayers:[{id:"open-street-map-3d-base-layer",showLegend:!1,title:"OpenStreetMap",layerType:"VectorTileLayer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/8628d259c9d14bdc848771c23c513940/resources/styles/root.json",visibility:!0,opacity:1},{id:"open-street-map-3d-trees",showLegend:!1,title:"Trees",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/OpenStreetMap3D_Trees_Thematic_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"open-street-map-3d-places-and-labels",showLegend:!1,title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/OpenStreetMap3D_DarkLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"open-street-map-3d-buildings",showLegend:!1,title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/OpenStreetMap3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]},[s.STREETS_DARK_3D]:{baseMapLayers:[{id:"streets-navigation-dark-3d-base-layer",showLegend:!1,title:"Streets (Dark)",layerType:"VectorTileLayer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/bc599b6d741a4ac084b7eea7bf8c5938/resources/styles/root.json",visibility:!0,opacity:1},{id:"streets-navigation-dark-3d-places-and-labels",showLegend:!1,title:"Places and Labels",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/OpenStreetMap3D_LightLabels_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"},{id:"streets-navigation-dark-3d-buildings",showLegend:!1,title:"Buildings",url:"https://basemaps3d.arcgis.com/arcgis/rest/services/Esri3D_Buildings_v1/SceneServer",layerType:"ArcGISSceneServiceLayer"}]}};const i=/^esri[./]layers[./](tools[./])?\w+Layer$/,n=/^esri[./]layers[./](support[./])?(buildingSublayers[./])?\w*Sublayer$/;export function isLayer(e){const r=e?.declaredClass;return"string"==typeof r&&i.test(r)}export function isSublayer(e){const r=e?.declaredClass;return"string"==typeof r&&n.test(r)}export function isBingMapsLayer(e){return"bing-maps"===e?.type}export function isCSVLayer(e){return"csv"===e?.type}export function isGeoJSONLayer(e){return"geojson"===e?.type}export function isSubtypeGroupLayer(e){return"subtype-group"===e?.type}export function isStreamLayer(e){return"stream"===e?.type}export function isFeatureLayerBase(e){return isCSVLayer(e)||isFeatureLayer(e)||isStreamLayer(e)||isGeoJSONLayer(e)}export function isFeatureLayer(e){return"feature"===e?.type}export function isGeoRssLayer(e){return"geo-rss"===e?.type}export function isGraphicsLayer(e){return"graphics"===e?.type}export function isMapNotesLayer(e){return"map-notes"===e?.type}export function isImageryLayer(e){return"imagery"===e?.type}export function isKMLLayer(e){return"kml"===e?.type}export function isMediaLayer(e){return"media"===e?.type}export function isMapImageLayer(e){return"map-image"===e?.type}export function isOpenStreetMapLayer(e){return"open-street-map"===e?.type}export function isWebTileLayer(e){return"web-tile"===e?.type||"open-street-map"===e?.type}export function isVectorTileLayer(e){return"vector-tile"===e?.type}export function isElevationLayer(e){return"elevation"===e?.type}export function isSceneLayer(e){return"scene"===e?.type}export function isPointCloudLayer(e){return"point-cloud"===e?.type}export function isIntegratedMeshLayer(e){return"integrated-mesh"===e?.type}export function isGroupLayer(e){return"group"===e?.type}export function isWFSLayer(e){return"wfs"===e?.type}export function isWMSLayer(e){return"wms"===e?.type}export function isWMTSLayer(e){return"wmts"===e?.type}export function isBuildingSceneLayer(e){return"building-scene"===e?.type}export function isTileLayer(e){return"tile"===e?.type}export function isImageryTileLayer(e){return"imagery-tile"===e?.type}export function isTiledImageServiceLayer(e){return isTileLayer(e)&&c(e)}export function isTiledMapServiceLayer(e){return isTileLayer(e)&&!c(e)}function c(e){const r=e.url??e.portalItem?.url;return null!=r&&/\/ImageServer(\/|\/?$)/i.test(r)}export function isMapImageSublayer(e){return"esri.layers.support.Sublayer"===e?.declaredClass}export function isKMLSublayer(e){return"esri.layers.support.KMLSublayer"===e?.declaredClass}export function isWMTSSublayer(e){return"esri.layers.support.WMTSSublayer"===e?.declaredClass}export function isWMSSublayer(e){return"esri.layers.support.WMSSublayer"===e?.declaredClass}export function isMapNotesSublayer(e){return"esri.layers.MapNotesLayer.MapNotesSublayer"===e?.declaredClass}export function isRouteLayer(e){return"route"===e?.type}export function isBuildingComponentSublayer(e){const r=e;return"building-component"===r?.type}export function isBuildingGroupSublayer(e){const r=e;return"building-group"===r?.type}export function isLayerWithLegendEnabledProperty(e){return!(isBuildingSceneLayer(e)||isCSVLayer(e)||isElevationLayer(e)||isGraphicsLayer(e)||isGroupLayer(e)||isIntegratedMeshLayer(e)||isKMLLayer(e)||isOpenStreetMapLayer(e)||isPointCloudLayer(e)||isWebTileLayer(e)||isWMTSLayer(e)||isVectorTileLayer(e))}export function hasMmapLayer(e){return e.some((e=>{const r=e._deferredLayerProperties;return!("string"==typeof r?.$ref||!r?.$ref?.path)||!!e.layerExtensions&&hasMmapLayer(e.layerExtensions.toArray())}))}export function isTimeAwareLayer(e){return isLayer(e)&&e.hasOwnProperty("timeExtent")}export function isSubtypeSublayer(e){return"esri.layers.support.SubtypeSublayer"===e?.declaredClass}
@@ -1,5 +1,5 @@
1
1
  import Basemap from "@arcgis/core/Basemap";
2
- import type { BasemapJson } from "../json/BasemapJson.js";
2
+ import { type BasemapJson } from "../json/BasemapJson.js";
3
3
  import { WellKnownBasemap } from "../support/esri.js";
4
4
  export { basemapsAreEquivalent, standardBasemaps } from "./_layers.js";
5
5
  /**
@@ -18,6 +18,12 @@ export declare function createStandardBasemap(id: WellKnownBasemap): Promise<Bas
18
18
  * @param basemap The basemap to check.
19
19
  */
20
20
  export declare function isStandardBasemap(basemap: Basemap | BasemapJson): boolean;
21
+ /**
22
+ * Determines whether the given basemap is a standard 2D basemap.
23
+ *
24
+ * @param basemap The basemap to check.
25
+ */
26
+ export declare function isStandardBasemap2D(basemap: Basemap | BasemapJson): boolean;
21
27
  /**
22
28
  * Given a basemap or basemap definition, get the corresponding well-known ID if
23
29
  * it matches a standard basemap, otherwise returns `undefined`.
@@ -25,3 +31,16 @@ export declare function isStandardBasemap(basemap: Basemap | BasemapJson): boole
25
31
  * @param basemap The basemap or basemap definition to look up.
26
32
  */
27
33
  export declare function getStandardBasemapId(basemap: Basemap | BasemapJson): WellKnownBasemap | undefined;
34
+ /**
35
+ * Gets the thumbnail URL for a well-known basemap.
36
+ *
37
+ * @param id The well-known basemap ID.
38
+ */
39
+ export declare function getStandardBasemapThumbnailUrl(id: WellKnownBasemap): string;
40
+ /**
41
+ * Determines whether a basemap contains 3D layers.
42
+ *
43
+ * @param basemap The basemap to check for 3D layers.
44
+ * @returns True if the basemap contains 3D layers, false otherwise.
45
+ */
46
+ export declare function basemapHas3DLayers(basemap: Basemap | BasemapJson | undefined | null): boolean;
@@ -1 +1 @@
1
- import a from"@arcgis/core/Basemap";import{WellKnownBasemap as e,wellKnownBasemapTitles as s}from"../support/esri.js";import{basemapsAreEquivalent as r,standardBasemaps as t}from"./_layers.js";import{checkArg as E}from"./checkArg.js";export{basemapsAreEquivalent,standardBasemaps}from"./_layers.js";export async function createStandardBasemap(r){E("id",r).satisfies((a=>t.hasOwnProperty(a)),`Invalid basemap ID "${r}".`);const c=a.fromJSON(t[r]);let T;switch(c.id=r,r){case e.HYBRID_VECTOR:case e.TERRAIN_VECTOR:case e.OCEANS_VECTOR:case e.OPEN_STREET_MAP_VECTOR:T=a.fromId(r.replace("-vector",""));break;case e.SATELLITE:case e.HYBRID:case e.STREETS:case e.STREETS_VECTOR:case e.TOPO:case e.TOPO_VECTOR:case e.STREETS_NAVIGATION_VECTOR:case e.STREETS_NIGHT_VECTOR:case e.TERRAIN:case e.DARK_GRAY:case e.DARK_GRAY_VECTOR:case e.GRAY:case e.GRAY_VECTOR:case e.OCEANS:case e.OPEN_STREET_MAP:case e.STREETS_RELIEF_VECTOR:default:T=a.fromId(r)}return await Promise.all([c.load(),T?.load()]),c.title=T?.title||s[r],c.thumbnailUrl=T?.thumbnailUrl,c}export function isStandardBasemap(a){return Object.values(t).some((e=>r(e,a)))}export function getStandardBasemapId(a){return Object.entries(t).find((([e,s])=>r(a,s)))?.[0]}
1
+ import e from"@arcgis/core/Basemap";import a from"@arcgis/core/portal/Portal.js";import{esriBasemapDefinitions as s}from"@arcgis/core/support/basemapDefinitions.js";import{}from"../json/BasemapJson.js";import{WellKnownBasemap as r,wellKnownBasemapTitles as t}from"../support/esri.js";import{basemapsAreEquivalent as o,standardBasemaps as n}from"./_layers.js";import{checkArg as c}from"./checkArg.js";import{isBasemap as T}from"./mapping.js";export{basemapsAreEquivalent,standardBasemaps}from"./_layers.js";export async function createStandardBasemap(s){c("id",s).satisfies((e=>n.hasOwnProperty(e)),`Invalid basemap ID "${s}".`);const r=basemapHas3DLayers(n[s]),o=e.fromJSON(n[s],r?{origin:"web-scene",portal:a.getDefault()}:{origin:"web-map"});o.id=s;const T=e.fromId(i(s));return await Promise.all([o.load(),T?.load()]),o.title=T?.title||t[s],o.thumbnailUrl=T?.thumbnailUrl,o}export function isStandardBasemap(e){return Object.values(n).some((a=>o(a,e)))}export function isStandardBasemap2D(e){return isStandardBasemap(e)&&!basemapHas3DLayers(e)}export function getStandardBasemapId(e){return Object.entries(n).find((([a,s])=>o(e,s)))?.[0]}export function getStandardBasemapThumbnailUrl(e){c("id",e).satisfies((e=>n.hasOwnProperty(e)),`Invalid basemap ID "${e}".`);const a=i({[r.STREETS_NAVIGATION_DARK_3D]:r.STREETS_NAVIGATION_3D,[r.STREETS_DARK_3D]:r.STREETS_NIGHT_VECTOR,[r.DARK_GRAY_3D]:r.DARK_GRAY}[e]??e);return s[a].thumbnailUrl}export function basemapHas3DLayers(e){if(!e)return!1;const a=new Set(["scene","integrated-mesh","point-cloud","ArcGISSceneServiceLayer","IntegratedMeshLayer","PointCloudLayer","SceneLayer"]);if(T(e)){return[...e.baseLayers?.toArray()??[],...e.referenceLayers?.toArray()??[]].some((e=>a.has(e.type)))}return(e.baseMapLayers??[]).some((e=>a.has(e.layerType)))}function i(e){switch(e){case r.HYBRID_VECTOR:case r.TERRAIN_VECTOR:case r.OCEANS_VECTOR:case r.OPEN_STREET_MAP_VECTOR:return e.replace("-vector","");case r.SATELLITE:case r.HYBRID:case r.STREETS:case r.STREETS_3D:case r.STREETS_DARK_3D:case r.STREETS_VECTOR:case r.TOPO:case r.TOPO_3D:case r.TOPO_VECTOR:case r.STREETS_NAVIGATION_3D:case r.STREETS_NAVIGATION_DARK_3D:case r.STREETS_NAVIGATION_VECTOR:case r.STREETS_NIGHT_VECTOR:case r.TERRAIN:case r.DARK_GRAY:case r.DARK_GRAY_3D:case r.DARK_GRAY_VECTOR:case r.GRAY:case r.GRAY_3D:case r.GRAY_VECTOR:case r.OCEANS:case r.OPEN_STREET_MAP:case r.OPEN_STREET_MAP_3D:case r.STREETS_RELIEF_VECTOR:default:return e}}
package/version.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * The current version of the Geocortex ArcGIS Extensions API.
3
3
  */
4
- export declare const version = "52.1.0";
4
+ export declare const version = "52.2.0";
package/version.js CHANGED
@@ -1 +1 @@
1
- export const version="52.1.0";
1
+ export const version="52.2.0";