// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("../chunks/tslib.es6 ../geometry ../request ../core/Error ../core/jsonMap ../core/MultiOriginJSONSupport ../core/accessorSupport/decorators/property ../core/has ../core/Logger ../core/RandomLCG ../core/accessorSupport/decorators/subclass ../geometry/SpatialReference ./BaseTileLayer ./mixins/BlendLayer ./mixins/OperationalLayer ./support/LOD ./support/TileInfo ../geometry/Point".split(" "),function(d,c,n,g,t,u,e,A,B,C,v,p,w,x,y,b,q,z){const l=new t.JSONMap({BingMapsAerial:"aerial",BingMapsRoad:"road", BingMapsHybrid:"hybrid"});c=class extends x.BlendLayer(y.OperationalLayer(u.MultiOriginJSONMixin(w))){constructor(a){super(a);this.type="bing-maps";this.tileInfo=new q({size:[256,256],dpi:96,origin:new z({x:-2.0037508342787E7,y:2.0037508342787E7,spatialReference:p.WebMercator}),spatialReference:p.WebMercator,lods:[new b({level:1,resolution:78271.5169639999,scale:2.95828763795777E8}),new b({level:2,resolution:39135.7584820001,scale:1.47914381897889E8}),new b({level:3,resolution:19567.8792409999,scale:7.3957190948944E7}), new b({level:4,resolution:9783.93962049996,scale:3.6978595474472E7}),new b({level:5,resolution:4891.96981024998,scale:1.8489297737236E7}),new b({level:6,resolution:2445.98490512499,scale:9244648.868618}),new b({level:7,resolution:1222.99245256249,scale:4622324.434309}),new b({level:8,resolution:611.49622628138,scale:2311162.217155}),new b({level:9,resolution:305.748113140558,scale:1155581.108577}),new b({level:10,resolution:152.874056570411,scale:577790.554289}),new b({level:11,resolution:76.4370282850732, scale:288895.277144}),new b({level:12,resolution:38.2185141425366,scale:144447.638572}),new b({level:13,resolution:19.1092570712683,scale:72223.819286}),new b({level:14,resolution:9.55462853563415,scale:36111.909643}),new b({level:15,resolution:4.77731426794937,scale:18055.954822}),new b({level:16,resolution:2.38865713397468,scale:9027.977411}),new b({level:17,resolution:1.19432856685505,scale:4513.988705}),new b({level:18,resolution:.597164283559817,scale:2256.994353}),new b({level:19,resolution:.298582141647617, scale:1128.497176}),new b({level:20,resolution:.1492910708238085,scale:564.248588})]});this.key=null;this.style="road";this.culture="en-US";this.portalUrl=this.region=null;this.hasAttributionData=!0}get bingMetadata(){return this._get("bingMetadata")}set bingMetadata(a){this._set("bingMetadata",a)}get copyright(){return null!=this.bingMetadata?this.bingMetadata.copyright:null}get operationalLayerType(){return l.toJSON(this.style)}get bingLogo(){return null!=this.bingMetadata?this.bingMetadata.brandLogoUri: null}load(a){this.key?this.addResolvingPromise(this._getMetadata()):this.portalUrl?this.addResolvingPromise(this._getPortalBingKey().then(()=>this._getMetadata())):this.addResolvingPromise(Promise.reject(new g("bingmapslayer:load","Bing layer must have bing key.")));return Promise.resolve(this)}getTileUrl(a,f,m){if(!this.loaded||null==this.bingMetadata)return null;const h=this.bingMetadata.resourceSets[0].resources[0],k=h.imageUrlSubdomains[f%h.imageUrlSubdomains.length];a=this._getQuadKey(a,f,m); return h.imageUrl.replace("{subdomain}",k).replace("{quadkey}",a)}async fetchAttributionData(){return this.load().then(()=>null==this.bingMetadata?null:{contributors:this.bingMetadata.resourceSets[0].resources[0].imageryProviders.map(a=>({attribution:a.attribution,coverageAreas:a.coverageAreas.map(f=>({zoomMin:f.zoomMin,zoomMax:f.zoomMax,score:1,bbox:[f.bbox[0],f.bbox[1],f.bbox[2],f.bbox[3]]}))}))})}_getMetadata(){return n(`${"https://dev.virtualearth.net"}/REST/v1/Imagery/Metadata/${({road:"roadOnDemand", aerial:"aerial",hybrid:"aerialWithLabelsOnDemand"})[this.style]}`,{responseType:"json",query:{include:"ImageryProviders",uriScheme:"https",key:this.key,suppressStatus:!0,output:"json",culture:this.culture,userRegion:this.region}}).then(a=>{a=a.data;if(200!==a.statusCode)throw new g("bingmapslayer:getmetadata",a.statusDescription);this.bingMetadata=a;if(0===this.bingMetadata.resourceSets.length)throw new g("bingmapslayer:getmetadata","no bing resourcesets");if(0===this.bingMetadata.resourceSets[0].resources.length)throw new g("bingmapslayer:getmetadata", "no bing resources");}).catch(a=>{throw new g("bingmapslayer:getmetadata",a.message);})}_getPortalBingKey(){return n(this.portalUrl??"",{responseType:"json",authMode:"no-prompt",query:{f:"json"}}).then(a=>{if(!a.data.bingKey)throw new g("bingmapslayer:getportalbingkey","The referenced Portal does not contain a valid bing key");this.key=a.data.bingKey}).catch(a=>{throw new g("bingmapslayer:getportalbingkey",a.message);})}_getQuadKey(a,f,m){let h="";for(;0