@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
1 lines • 18.1 kB
JavaScript
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[9186,9397],{25943(e,t,i){i.d(t,{d:()=>_});var l,s=i(5482),r=i(11254),o=i(69622),n=i(49186),a=i(36563),c=(i(44208),i(66344)),h=i(15142),p=i(74887),u=i(36708),f=i(76030),d=i(84952),v=i(91429),m=i(72802),g=i(4718),w=i(69397),y=i(34275);class b{constructor(e){!function(e){if(!e?.location)throw new n.A("tilemap:missing-location","Location missing from tilemap response");if(!1===e.valid)throw new n.A("tilemap:invalid","Tilemap response was marked as invalid");if(!e.data)throw new n.A("tilemap:missing-data","Data missing from tilemap response");if(!Array.isArray(e.data))throw new n.A("tilemap:data-mismatch","Data must be an array of numbers");if(e.data.length!==e.location.width*e.location.height)throw new n.A("tilemap:data-mismatch","Number of data items does not match width/height of tilemap")}(e);const{location:t,data:i}=e;this.location=Object.freeze((0,g.o8)(t));const l=this.location.width,s=this.location.height;let r=!0,o=!0;const a=function(e,t=!1){return e<=y.y9?t?new Array(e).fill(0):new Array(e):new Uint32Array(e)}(Math.ceil(l*s/32));let c=0;for(let e=0;e<i.length;e++){const t=e%32;i[e]?(o=!1,a[c]|=1<<t):r=!1,31===t&&++c}o?(this._availability="unavailable",this.byteSize=40):r?(this._availability="available",this.byteSize=40):(this._availability=a,this.byteSize=40+(0,w.Qf)(a))}getAvailability(e,t){if("unavailable"===this._availability||"available"===this._availability)return this._availability;const i=(e-this.location.top)*this.location.width+(t-this.location.left),l=i%32,s=i>>5,r=this._availability;return s<0||s>r.length?"unknown":r[s]&1<<l?"available":"unavailable"}static fromDefinition(e,t){const i=e.service.request||r.A,{row:l,col:s,width:o,height:a}=e,c={query:{f:"json"}};return t=t?{...c,...t}:c,i(function(e){let t;if(e.service.tileServers?.length){const i=e.service.tileServers;t=`${i&&i.length?i[e.row%i.length]:e.service.url}/tilemap/${e.level}/${e.row}/${e.col}/${e.width}/${e.height}`}else t=`${e.service.url}/tilemap/${e.level}/${e.row}/${e.col}/${e.width}/${e.height}`;const i=e.service.query;return i&&(t=`${t}?${i}`),t}(e),t).then(e=>e.data).catch(e=>{if(422===e?.details?.httpStatus)return{location:{top:l,left:s,width:o,height:a},valid:!0,data:new Array(o*a).fill(0)};throw e}).then(e=>{if(e.location&&(e.location.top!==l||e.location.left!==s||e.location.width!==o||e.location.height!==a))throw new n.A("tilemap:location-mismatch","Tilemap response for different location than requested",{response:e,definition:{top:l,left:s,width:o,height:a}});return b.fromJSON(e)})}static fromJSON(e){return Object.freeze(new b(e))}}function A(e){return`${e.level}/${e.row}/${e.col}/${e.width}/${e.height}`}function C(e,t,i){return new n.A("tile-map:tile-unavailable","Tile is not available",{level:e,row:t,col:i})}let _=class extends o.A{static{l=this}constructor(e){super(e),this._pendingTilemapRequests={},this.request=r.A,this.size=32,this._prefetchingEnabled=!0}initialize(){this._tilemapCache=new c.q(2097152),this.addHandles((0,u.wB)(()=>{const{layer:e}=this;return[e?.parsedUrl,e?.tileServers,e?.apiKey,e?.customParameters]},()=>this._initializeTilemapDefinition(),u.Vh))}get effectiveMinLOD(){return this.minLOD??this.layer.tileInfo.lods[0].level}get effectiveMaxLOD(){return this.maxLOD??this.layer.tileInfo.lods[this.layer.tileInfo.lods.length-1].level}getAvailability(e,t,i){if(!this.layer.tileInfo.lodAt(e)||e<this.effectiveMinLOD||e>this.effectiveMaxLOD)return"unavailable";const l=this._tilemapFromCache(e,t,i,this._tmpTilemapDefinition);return l?l.getAvailability(t,i):"unknown"}fetchAvailability(e,t,i,l){return!this.layer.tileInfo.lodAt(e)||e<this.effectiveMinLOD||e>this.effectiveMaxLOD?Promise.reject(C(e,t,i)):this._fetchTilemap(e,t,i,l).catch(e=>e).then(l=>{if(l instanceof b){const s=l.getAvailability(t,i);if("unavailable"===s)throw C(e,t,i);return s}if((0,p.zf)(l))throw l;return"unknown"})}fetchAvailabilityUpsample(e,t,i,l,s){l.level=e,l.row=t,l.col=i;const r=this.layer.tileInfo;r.updateTileInfo(l);const o=this.fetchAvailability(e,t,i,s).catch(e=>{if((0,p.zf)(e))throw e;if(r.upsampleTile(l))return this.fetchAvailabilityUpsample(l.level,l.row,l.col,l,s);throw e});return this._fetchAvailabilityUpsamplePrefetch(e,t,i,s,o),o}async _fetchAvailabilityUpsamplePrefetch(e,t,i,s,r){if(!this._prefetchingEnabled)return;const o=`prefetch-${e}-${t}-${i}`;if(this.hasHandles(o))return;const n=new AbortController;r.then(()=>n.abort(),()=>n.abort());let c=!1;const h=(0,a.hA)(()=>{c||(c=!0,n.abort())});if(this.addHandles(h,o),await(0,f.md)(10,n.signal).catch(()=>{}),c||(c=!0,this.removeHandles(o)),(0,p.G4)(n))return;const u=new m.U(e,t,i),d={...s,signal:n.signal},v=this.layer.tileInfo;for(let e=0;l._prefetches.length<l._maxPrefetch&&v.upsampleTile(u);++e){const e=this.fetchAvailability(u.level,u.row,u.col,d);l._prefetches.push(e);const t=()=>{l._prefetches.removeUnordered(e)};e.then(t,t)}}static{this._maxPrefetch=4}static{this._prefetches=new h.A({initialSize:l._maxPrefetch})}static cleanupTilemapCache(){this._prefetches.prune()}_fetchTilemap(e,t,i,l){if(!this.layer.tileInfo.lodAt(e)||e<this.effectiveMinLOD||e>this.effectiveMaxLOD)return Promise.reject(new n.A("tilemap-cache:level-unavailable",`Level ${e} is unavailable in the service`));const s=this._tmpTilemapDefinition,r=this._tilemapFromCache(e,t,i,s);if(r)return Promise.resolve(r);const o=l?.signal;return l={...l,signal:null},new Promise((e,t)=>{(0,p.u7)(o,()=>t((0,p.NK)()));const i=A(s);let r=this._pendingTilemapRequests[i];if(!r){r=b.fromDefinition(s,l).then(e=>(this._tilemapCache.put(i,e,e.byteSize),e));const e=()=>{delete this._pendingTilemapRequests[i]};this._pendingTilemapRequests[i]=r,r.then(e,e)}r.then(e,t)})}_initializeTilemapDefinition(){if(!this.layer.parsedUrl)return;const{parsedUrl:e,apiKey:t,customParameters:i}=this.layer;this._tilemapCache.clear(),this._tmpTilemapDefinition={service:{url:e.path,query:(0,d.x0)({...e.query,...i,token:t??e.query?.token}),tileServers:this.layer.tileServers,request:this.request},width:this.size,height:this.size,level:0,row:0,col:0}}_tilemapFromCache(e,t,i,l){l.level=e,l.row=t-t%this.size,l.col=i-i%this.size;const s=A(l);return this._tilemapCache.get(s)}get test(){}};(0,s.Cg)([(0,v.MZ)({constructOnly:!0})],_.prototype,"layer",void 0),(0,s.Cg)([(0,v.MZ)({constructOnly:!0})],_.prototype,"minLOD",void 0),(0,s.Cg)([(0,v.MZ)({constructOnly:!0})],_.prototype,"maxLOD",void 0),(0,s.Cg)([(0,v.MZ)({constructOnly:!0})],_.prototype,"request",void 0),(0,s.Cg)([(0,v.MZ)({constructOnly:!0})],_.prototype,"size",void 0),_=l=(0,s.Cg)([(0,v.$K)("esri.layers.support.TilemapCache")],_)},65509(e,t,i){i.d(t,{A:()=>r});var l=i(49186),s=i(74887);class r{constructor(e,t=0,i=e.lods[e.lods.length-1].level){this.tileInfo=e,this.minLOD=t,this.maxLOD=i,e.lodAt(t)||(this.minLOD=e.lods[0].level),e.lodAt(i)||(this.maxLOD=e.lods[e.lods.length-1].level)}get effectiveMinLOD(){return this.minLOD??this.tileInfo.lods[0].level}get effectiveMaxLOD(){return this.maxLOD??this.tileInfo.lods[this.tileInfo.lods.length-1].level}getAvailability(e,t,i){const l=this.tileInfo?.lodAt(e);return!l||e<this.minLOD||e>this.maxLOD?"unavailable":l.cols&&l.rows?i>=l.cols[0]&&i<=l.cols[1]&&t>=l.rows[0]&&t<=l.rows[1]?"unknown":"unavailable":"unknown"}async fetchAvailability(e,t,i,r){await(0,s.NO)(r);const o=this.getAvailability(e,t,i);if("unavailable"===o)throw new l.A("tile-map:tile-unavailable","Tile is not available",{level:e,row:t,col:i});return o}async fetchAvailabilityUpsample(e,t,i,l,r){await(0,s.NO)(r),l.level=e,l.row=t,l.col=i;const o=this.tileInfo;return o.updateTileInfo(l),this.fetchAvailability(e,t,i,r).catch(e=>{if((0,s.zf)(e))throw e;if(o.upsampleTile(l))return this.fetchAvailabilityUpsample(l.level,l.row,l.col,l,r);throw e})}}},69397(e,t,i){i.d(t,{Qf:()=>a,Qh:()=>o,RS:()=>s,Ul:()=>f,lM:()=>r,qK:()=>h});var l=i(34275);const s=16;function r(e){if(!e)return 0;let t=h;for(const i in e)e.hasOwnProperty(i)&&(t+=n(e[i],!1));return t}function o(e){if(!e)return 0;if("number"==typeof e[0])return a(e);if(Array.isArray(e))return function(e){const t=e.length;if(0===t||"number"==typeof e[0])return c(e,8);let i=p;for(let l=0;l<t;l++)i+=n(e[l]);return i}(e);let t=h;for(const i in e)e.hasOwnProperty(i)&&(t+=n(e[i]));return t}function n(e,t=!0){switch(typeof e){case"object":return t?o(e):h;case"string":return function(e){return 32+e.length}(e);case"number":return s;case"boolean":return 4;default:return 8}}function a(...e){return e.reduce((e,t)=>e+(t?(0,l.iu)(t)?t.byteLength+u:Array.isArray(t)?c(t,s):0:0),0)}function c(e,t){return p+e.length*t}const h=32,p=16,u=145,f=64},72802(e,t,i){i.d(t,{U:()=>s});var l=i(19419);class s{constructor(e,t,i,s=(0,l.vt)()){this._level=e,this._row=t,this._col=i,this.extent=s}get id(){return this._id??=`${this.level}/${this.row}/${this.col}`,this._id}get level(){return this._level}set level(e){this._level=e,this._id=null}get row(){return this._row}set row(e){this._row=e,this._id=null}get col(){return this._col}set col(e){this._col=e,this._id=null}toJSON(){return{level:this._level,row:this._row,col:this._col,extent:this.extent}}static fromJSON(e){return new s(e.level,e.row,e.col,e.extent)}}},87045(e,t,i){i.d(t,{A:()=>y});var l,s=i(5482),r=i(66552),o=i(25482),n=i(86211),a=i(91429),c=i(56507),h=i(86738),p=i(16930),u=i(21325),f=i(28735),d=i(91806),v=i(72802),m=i(36005),g=i(43937);const w=new r.J({PNG:"png",PNG8:"png8",PNG24:"png24",PNG32:"png32",JPEG:"jpg",JPG:"jpg",DIB:"dib",TIFF:"tiff",EMF:"emf",PS:"ps",PDF:"pdf",GIF:"gif",SVG:"svg",SVGZ:"svgz",Mixed:"mixed",MIXED:"mixed",LERC:"lerc",LERC2D:"lerc2d",RAW:"raw",pbf:"pbf"});let y=class extends o.o{static{l=this}static create(e={}){const{resolutionFactor:t=1,scales:i,size:s=256,spatialReference:r=p.A.WebMercator,numLODs:o=24}=e;if(!(0,u.fn)(r)){const e=[];if(i)for(let t=0;t<i.length;t++){const l=i[t];e.push(new d.A({level:t,scale:l,resolution:l}))}else{let t=5e-4;for(let i=o-1;i>=0;i--)e.unshift(new d.A({level:i,scale:t,resolution:t})),t*=2}return new l({dpi:96,lods:e,origin:new h.A(0,0,r),size:[s,s],spatialReference:r})}const a=(0,u.Vp)(r),c=e.origin?new h.A({x:e.origin.x,y:e.origin.y,spatialReference:r}):new h.A(a?{x:a.origin[0],y:a.origin[1],spatialReference:r}:{x:0,y:0,spatialReference:r}),f=1/(39.37*(0,n.GA)(r)*96),v=[];if(i)for(let e=0;e<i.length;e++){const t=i[e],l=t*f;v.push(new d.A({level:e,scale:t,resolution:l}))}else{let e=(0,u.EA)(r)?512/s*591657527.5917094:256/s*591657527.591555;const i=Math.ceil(o/t);v.push(new d.A({level:0,scale:e,resolution:e*f}));for(let l=1;l<i;l++){const i=e/2**t,s=i*f;v.push(new d.A({level:l,scale:i,resolution:s})),e=i}}return new l({dpi:96,lods:v,origin:c,size:[s,s],spatialReference:r})}constructor(e){super(e),this.dpi=96,this.format=null,this.origin=null,this.size=null,this.spatialReference=null}get isWrappable(){const{spatialReference:e,origin:t}=this;if(e&&t){const i=(0,u.Vp)(e);return e.isWrappable&&!!i&&Math.abs(i.origin[0]-t.x)<=i.dx}return!1}readOrigin(e,t){return h.A.fromJSON({spatialReference:t.spatialReference,...e})}set lods(e){let t=0,i=0;const l=[],s=this._levelToLOD={};e&&(t=-1/0,i=1/0,e.forEach(e=>{l.push(e.scale),t=e.scale>t?e.scale:t,i=e.scale<i?e.scale:i,s[e.level]=e})),this._set("scales",l),this._set("lods",e),this._initializeUpsampleLevels()}readSize(e,t){return[t.cols,t.rows]}writeSize(e,t){t.cols=e[0],t.rows=e[1]}zoomToScale(e){const t=this.scales;if(e<=0)return t[0];if(e>=t.length-1)return t[t.length-1];const i=Math.floor(e),l=i+1;return t[i]/(t[i]/t[l])**(e-i)}scaleToZoom(e){const t=this.scales,i=t.length-1;let l=0;for(;l<i;l++){const i=t[l],s=t[l+1];if(i<=e)return l;if(s===e)return l+1;if(i>e&&s<e)return l+Math.log(i/e)/Math.log(i/s)}return l}tileAt(e,t,i,l){const s=this.lodAt(e);if(!s)return null;let r,o;if("number"==typeof t)r=t,o=i;else if((0,u.aI)(t.spatialReference,this.spatialReference))r=t.x,o=t.y,l=i;else{const e=(0,f.Cv)(t,this.spatialReference);if(null==e)return null;r=e.x,o=e.y,l=i}const n=s.resolution*this.size[0],a=s.resolution*this.size[1];return l??=new v.U(0,0,0),l.level=e,l.row=Math.floor((this.origin.y-o)/a+.001),l.col=Math.floor((r-this.origin.x)/n+.001),this.updateTileInfo(l),l}updateTileInfo(e,t=0){if(!("extent"in e))return!1;let i=this.lodAt(e.level);if(!i&&1===t){const t=this.lods[this.lods.length-1];t.level<e.level&&(i=t)}if(!i)return!1;const l=e.level-i.level,s=i.resolution*this.size[0]/2**l,r=i.resolution*this.size[1]/2**l;return e.extent[0]=this.origin.x+e.col*s,e.extent[1]=this.origin.y-(e.row+1)*r,e.extent[2]=e.extent[0]+s,e.extent[3]=e.extent[1]+r,!0}upsampleTile(e){const t=this._upsampleLevels[e.level];return!(!t||-1===t.parentLevel||(e.level=t.parentLevel,e.row=Math.floor(e.row/t.factor+.001),e.col=Math.floor(e.col/t.factor+.001),this.updateTileInfo(e),0))}getTileBounds(e,t){const i=this.lodAt(t.level);if(null==i)return null;const{resolution:l}=i,s=l*this.size[0],r=l*this.size[1];return e[0]=this.origin.x+t.col*s,e[1]=this.origin.y-(t.row+1)*r,e[2]=e[0]+s,e[3]=e[1]+r,e}lodAt(e){return this._levelToLOD?.[e]??null}clone(){return l.fromJSON(this.write({}))}getCompatibleForVTL(e){if(this.size[0]!==this.size[1]||256===this.size[0]&&512===e)return null;const t=(512===this.size[0]&&256===e?-1:0)+(this.spatialReference.isGeographic?1:0);if(this.size[0]===e&&0===t)return this;const i=[],s=this.lods.length-t;for(let e=0;e<s;e++){const l=e+t,{scale:s,resolution:r}=l>=0?this.lods[l]:{scale:2*this.lods[0].scale,resolution:2*this.lods[0].resolution};i.push(new d.A({level:e,scale:s,resolution:r}))}return new l({size:[e,e],dpi:this.dpi,format:this.format,compressionQuality:this.compressionQuality,origin:this.origin,spatialReference:this.spatialReference,lods:i})}_initializeUpsampleLevels(){const e=this.lods;this._upsampleLevels=[];let t=null;for(let i=0;i<e.length;i++){const l=e[i];this._upsampleLevels[l.level]={parentLevel:t?t.level:-1,factor:t?t.resolution/l.resolution:0},t=l}}};(0,s.Cg)([(0,a.MZ)({type:Number,json:{write:!0}})],y.prototype,"compressionQuality",void 0),(0,s.Cg)([(0,a.MZ)({type:Number,json:{write:!0}})],y.prototype,"dpi",void 0),(0,s.Cg)([(0,a.MZ)({type:String,json:{read:w.read,write:w.write,origins:{"web-scene":{read:!1,write:!1}}}})],y.prototype,"format",void 0),(0,s.Cg)([(0,a.MZ)({readOnly:!0})],y.prototype,"isWrappable",null),(0,s.Cg)([(0,a.MZ)({type:h.A,json:{write:!0}})],y.prototype,"origin",void 0),(0,s.Cg)([(0,m.w)("origin")],y.prototype,"readOrigin",null),(0,s.Cg)([(0,a.MZ)({type:[d.A],value:null,json:{write:!0}})],y.prototype,"lods",null),(0,s.Cg)([(0,a.MZ)({readOnly:!0})],y.prototype,"scales",void 0),(0,s.Cg)([(0,a.MZ)({cast:e=>Array.isArray(e)?e:"number"==typeof e?[e,e]:[256,256]})],y.prototype,"size",void 0),(0,s.Cg)([(0,m.w)("size",["rows","cols"])],y.prototype,"readSize",null),(0,s.Cg)([(0,g.K)("size",{cols:{type:c.jz},rows:{type:c.jz}})],y.prototype,"writeSize",null),(0,s.Cg)([(0,a.MZ)({type:p.A,json:{write:!0}})],y.prototype,"spatialReference",void 0),y=l=(0,s.Cg)([(0,a.$K)("esri.layers.support.TileInfo")],y)},89186(e,t,i){i.d(t,{f:()=>h});var l=i(5482),s=i(91429),r=i(16930),o=i(87045),n=i(65509),a=i(25943),c=i(36005);const h=e=>{const t=e;let i=class extends t{constructor(){super(...arguments),this.copyright=null,this.minScale=0,this.maxScale=0,this.spatialReference=null,this.tileInfo=null,this.tilemapCache=null}destroy(){this.tilemapCache?.destroy?.()}readMinScale(e,t){return null!=t.minLOD&&null!=t.maxLOD?e:0}readMaxScale(e,t){return null!=t.minLOD&&null!=t.maxLOD?e:0}get supportsBlankTile(){return this.version>=10.2}readTilemapCache(e,t,i){const l=t.capabilities?.toLowerCase().includes("tilemap");let{minLOD:s,maxLOD:r,minScale:c,maxScale:h}=t;if(null==s&&null==r&&(0!==c||0!==h)){const e=e=>Math.round(1e4*e)/1e4;c=e(c||t.tileInfo.lods[0].scale),h=e(h||t.tileInfo.lods[t.tileInfo.lods.length-1].scale);for(const i of t.tileInfo.lods){const t=e(i.scale);s=t>=c?i.level:s,r=t>=h?i.level:r}}if(l)return new a.d({layer:this,minLOD:s,maxLOD:r});if(t.tileInfo){const e=new o.A;return e.read(t.tileInfo,i),new n.A(e,s,r)}return null}};return(0,l.Cg)([(0,s.MZ)({json:{read:{source:"copyrightText"}}})],i.prototype,"copyright",void 0),(0,l.Cg)([(0,s.MZ)()],i.prototype,"minScale",void 0),(0,l.Cg)([(0,c.w)("service","minScale")],i.prototype,"readMinScale",null),(0,l.Cg)([(0,s.MZ)()],i.prototype,"maxScale",void 0),(0,l.Cg)([(0,c.w)("service","maxScale")],i.prototype,"readMaxScale",null),(0,l.Cg)([(0,s.MZ)({type:r.A})],i.prototype,"spatialReference",void 0),(0,l.Cg)([(0,s.MZ)({readOnly:!0})],i.prototype,"supportsBlankTile",null),(0,l.Cg)([(0,s.MZ)({type:o.A})],i.prototype,"tileInfo",void 0),(0,l.Cg)([(0,s.MZ)()],i.prototype,"tilemapCache",void 0),(0,l.Cg)([(0,c.w)("service","tilemapCache",["capabilities","tileInfo"])],i.prototype,"readTilemapCache",null),(0,l.Cg)([(0,s.MZ)()],i.prototype,"version",void 0),i=(0,l.Cg)([(0,s.$K)("esri.layers.mixins.ArcGISCachedService")],i),i}},91806(e,t,i){i.d(t,{A:()=>a});var l,s=i(5482),r=i(25482),o=i(91429),n=i(56507);let a=class extends r.o{static{l=this}constructor(e){super(e),this.cols=null,this.level=0,this.levelValue=null,this.origin=null,this.resolution=0,this.rows=null,this.scale=0}clone(){return new l({cols:this.cols,level:this.level,levelValue:this.levelValue,resolution:this.resolution,rows:this.rows,scale:this.scale})}};(0,s.Cg)([(0,o.MZ)({json:{write:!0,origins:{"web-document":{read:!1,write:!1},"portal-item":{read:!1,write:!1}}}})],a.prototype,"cols",void 0),(0,s.Cg)([(0,o.MZ)({type:n.jz,json:{write:!0}})],a.prototype,"level",void 0),(0,s.Cg)([(0,o.MZ)({type:String,json:{write:!0}})],a.prototype,"levelValue",void 0),(0,s.Cg)([(0,o.MZ)({json:{write:!0,origins:{"web-document":{read:!1,write:!1},"portal-item":{read:!1,write:!1}}}})],a.prototype,"origin",void 0),(0,s.Cg)([(0,o.MZ)({type:Number,json:{write:!0}})],a.prototype,"resolution",void 0),(0,s.Cg)([(0,o.MZ)({json:{write:!0,origins:{"web-document":{read:!1,write:!1},"portal-item":{read:!1,write:!1}}}})],a.prototype,"rows",void 0),(0,s.Cg)([(0,o.MZ)({type:Number,json:{write:!0}})],a.prototype,"scale",void 0),a=l=(0,s.Cg)([(0,o.$K)("esri.layers.support.LOD")],a)}}]);