// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("exports ../Basemap ../config ../core/Collection ../core/Logger ../core/maybe ../core/urlUtils ../core/accessorSupport/ensureType ../layers/effects/utils ./basemapDefinitions".split(" "),function(e,k,q,r,t,u,l,I,J,h){function v(a,b){let c;if("string"===typeof a){const d=a in h.esriBasemapDefinitions,f=!d&&a.includes("/");if(!d&&!f)return b=Object.entries(h.esriBasemapDefinitions).filter(([,g])=>q.apiKey&&!g.classic||!q.apiKey&&(g.classic||g.is3d)).map(([g])=>`"${g}"`).sort().join(", "),t.getLogger("esri.support.basemapUtils").warn(`Unable to find basemap definition for: ${a}. Try one of these: ${b}`), null;b&&(c=b[a]);c||(c=d?k.fromId(a):new k({style:{id:a}}),b&&(b[a]=c))}else c=I.ensureType(k,a);c?.destroyed&&(t.getLogger("esri.support.basemapUtils").warn("The provided basemap is already destroyed",{basemap:c}),c=null);return c}function w(a){if(m)return m(a);let b=null;a=n(a);const c=!a?.baseLayers.length;for(const f in h.esriBasemapDefinitions){var d=x(h.esriBasemapDefinitions[f]);d=y(a,d,{mustMatchReferences:c});if("equal"===d){b=f;break}"base-layers-equal"===d&&(b=f)}return b}function z(a, b){const c=new r;a.forEach(d=>{const f=b.find(g=>"scene"!==g.type&&A(p(d),p(g)))||d;c.includes(f)?c.push(d):c.push(f)});return c}function B(a){if(C(a.url))return!0;if("vector-tile"===a.type)for(const b in a.sourceNameToSource)if(C(a.sourceNameToSource[b]?.sourceUrl))return!0;return!1}function C(a){if(!a)return!1;a=new l.Url(l.makeAbsolute(a));return!!a.authority&&K.test(a.authority)}function n(a){return a?!a.loaded&&a.resourceInfo?x(a.resourceInfo.data):{baseLayers:D(a.baseLayers),referenceLayers:D(a.referenceLayers)}: null}function D(a){return(r.isCollection(a)?a.toArray():a).map(p)}function p(a){return{type:a.type,effect:"effect"in a?a.effect:void 0,url:E("urlTemplate"in a&&a.urlTemplate||a.url||"styleUrl"in a&&a.styleUrl||""),minScale:"minScale"in a&&null!=a.minScale?a.minScale:0,maxScale:"maxScale"in a&&null!=a.maxScale?a.maxScale:0,opacity:null!=a.opacity?a.opacity:1,visible:null!=a.visible?!!a.visible:!0,sublayers:"map-image"!==a.type&&"wms"!==a.type||null==a.sublayers?void 0:a.sublayers?.map(b=>({id:b.id, visible:b.visible})),activeLayerId:"wmts"===a.type?a.activeLayer?.id:void 0}}function F(a){return a.isReference||"ArcGISSceneServiceLayer"===a.layerType}function x(a){return a?{baseLayers:G((a.baseMapLayers??[]).filter(b=>!F(b))),referenceLayers:G((a.baseMapLayers??[]).filter(b=>F(b)))}:null}function G(a){return a.map(b=>{let c;switch(b.layerType){case "VectorTileLayer":c="vector-tile";break;case "ArcGISTiledMapServiceLayer":c="tile";break;case "ArcGISSceneServiceLayer":c="scene";break;default:c= "unknown"}return{type:c,effect:b.effect,url:E(b.templateUrl||b.urlTemplate||b.styleUrl||b.url),minScale:b.minScale??0,maxScale:b.maxScale??0,opacity:b.opacity??1,visible:null!=b.visibility?!!b.visibility:!0,sublayers:void 0,activeLayerId:void 0}})}function y(a,b,c){return null!=a!==(null!=b)?"not-equal":a&&b?H(a.baseLayers,b.baseLayers)?H(a.referenceLayers,b.referenceLayers)?"equal":c.mustMatchReferences?"not-equal":"base-layers-equal":"not-equal":"equal"}function H(a,b){if(a.length!==b.length)return!1; for(let c=0;cc.equals(d))??b[0]?? null,updating:!1}:{spatialReference:b[0],updating:!1}};e.getBasemapThumbnailUrl=function(a){if(!a)return null;var {thumbnailUrl:b}=a;return b?b:(b=w(a))?h.esriBasemapDefinitions[b].thumbnailUrl:u.mappedFind(a.baseLayers,L)};e.getWellKnownBasemapId=w;e.hasDeveloperBasemapLayer=function(a){return!!a?.baseLayers.concat(a.referenceLayers).some(B)};e.isBasemap3D=function(a){return"Web Scene"===a.portalItem?.type||a.referenceLayers.some(b=>"scene"===b.type)};e.isBasemapInBeta=function(a){return!!a?.portalItem?.tags?.some(b=> "beta"===b.toLowerCase())};e.isBasemapLayer=function(a,b){return a.basemap?.referenceLayers?.some(c=>c.uid===b)||a.basemap?.baseLayers?.some(c=>c.uid===b)};e.isDeveloperBasemapLayer=B;e.overrideGetWellKnownBasemapId=function(a){m=a};Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});