Files
ADHA_mobile_project/assets/MagnifierPrograms-9f54c6e2.js
2024-02-28 17:06:42 +05:00

5 lines
57 KiB
JavaScript

import{f as x,a as ue}from"./WGLContainer-21aabd6b.js";import{a0 as bt,Y as O,eP as de,ar as xt,gZ as me,h0 as _e,s as A,u as ge,bz as $,z as se,kw as pe,aC as fe,v as Dt,ay as we,gB as K,lA as ye,lB as ve,eI as be,eA as Rt,fR as xe,au as D,bk as G,A as p,B as w,C as q,lC as Pt,gC as Me,bT as ae,fm as $e,fl as Se,cS as ne,lD as ut,aH as dt,gx as re,lE as ct,lF as ze,bU as Ce,lG as Ie,lH as Te,lI as De,gw as tt,lJ as Re,lK as Mt,lL as Pe,lM as Ae,J as et,lN as At}from"./index-b5c8f851.js";import{d as Fe,n as it,l as Ft,e as Et,f as Ee,o as ke,g as Ve,h as Be,i as Le}from"./ExpandedCIM-0020ab0e.js";import{r as Ue,e as Ne}from"./rasterizingUtils-99212870.js";import{a as Oe}from"./utils-ebbcf3da.js";import{a as v,b as mt,C as kt,B as Vt,A as Ge,X as qe,Y as He}from"./definitions-1467ba4a.js";import{u as Ze,_ as st,d as Ye,l as We,n as Bt,a as Xe,y as Qe,f as at,s as Lt,m as Ut,i as je,o as Je,T as Ke}from"./color-0916c686.js";import{t as b}from"./Rect-ea14f53a.js";import{G as oe,D as St,L as Nt,R as V}from"./enums-bdecffa2.js";import{e as zt,T as Ct}from"./Texture-507d5ea8.js";import{r as Ot}from"./pbf-eb90fa42.js";import{o as ti}from"./floatRGBA-ba8d5dad.js";import{e as Gt}from"./GeometryUtils-7a7937c3.js";import{o as ei}from"./imageutils-c59aa434.js";import{d as R}from"./enums-f1a6a48a.js";import{b as ii}from"./Matcher-dd0694f8.js";import{t as si}from"./CircularArray-ef508845.js";import{T as ai}from"./testSVGPremultipliedAlpha-eac2b0ee.js";import{e as ni}from"./throttle-7bf02de9.js";import{t as ri}from"./ComputedAttributeStorage-07f34ef9.js";import{a as oi}from"./ProgramTemplate-a9187eb2.js";const _s={shaders:{vertexShader:x("bitBlit/bitBlit.vert"),fragmentShader:x("bitBlit/bitBlit.frag")},attributes:new Map([["a_pos",0],["a_tex",1]])},hi=512;let ci=class{constructor(t){this._resourceManager=t,this._lazyRasterizationCanvas=null}dispose(){this._lazyRasterizationCanvas=null}get _rasterizationCanvas(){return this._lazyRasterizationCanvas==null&&(this._lazyRasterizationCanvas=document.createElement("canvas"),this._lazyRasterizationCanvas.getContext("2d",{willReadFrequently:!0})),this._lazyRasterizationCanvas}rasterizeJSONResource(t,e,i){if(t.type==="simple-fill"||t.type==="esriSFS"){const[l,_,g]=Ue(this._rasterizationCanvas,t.style,e);return{size:[_,g],image:new Uint32Array(l.buffer),sdf:!1,simplePattern:!0,anchorX:0,anchorY:0,rasterizationScale:bt(Math.ceil(e))}}if(t.type==="simple-line"||t.type==="esriSLS"||t.type==="line"&&t.dashTemplate){let l,_;if(t.type==="simple-line"||t.type==="esriSLS")switch(l=Fe(t.style,t.cap),t.cap){case"butt":_="Butt";break;case"square":_="Square";break;default:_="Round"}else l=t.dashTemplate,_=t.cim.capStyle;const[g,y,f]=Ne(l,_);return{size:[y,f],image:new Uint32Array(g.buffer),sdf:!0,simplePattern:!0,anchorX:0,anchorY:0}}let s,a=null,n=null,r=1;if(t.type==="simple-marker"||t.type==="esriSMS"||t.type==="line-marker"?(s=it.fromSimpleMarker(t),n=Ft(s)):t.cim&&t.cim.type==="CIMHatchFill"?(s=it.fromCIMHatchFill(t.cim,e),a=new Et(s.frame.xmin,-s.frame.ymax,s.frame.xmax-s.frame.xmin,s.frame.ymax-s.frame.ymin),r=e):t.cim.markerPlacement&&t.cim.markerPlacement.type==="CIMMarkerPlacementInsidePolygon"?(s=it.fromCIMInsidePolygon(t.cim),a=new Et(s.frame.xmin,-s.frame.ymax,s.frame.xmax-s.frame.xmin,s.frame.ymax-s.frame.ymin)):(s=t.cim,t.avoidSDFRasterization||(n=Ft(s))),n&&!i){const[l,_,g]=Ee(n);return l?{size:[_,g],image:new Uint32Array(l.buffer),sdf:!0,simplePattern:!0,anchorX:0,anchorY:0,rasterizationScale:r}:null}const[h,c,u,m,d]=it.rasterize(this._rasterizationCanvas,s,a,this._resourceManager,!i);return h?{size:[c,u],image:new Uint32Array(h.buffer),sdf:!1,simplePattern:!1,anchorX:m,anchorY:d}:null}rasterizeImageResource(t,e,i,s){this._rasterizationCanvas.width=t,this._rasterizationCanvas.height=e;const a=this._rasterizationCanvas.getContext("2d");i instanceof ImageData?a.putImageData(i,0,0):(i.setAttribute("width",`${t}px`),i.setAttribute("height",`${e}px`),a.drawImage(i,0,0,t,e));const n=a.getImageData(0,0,t,e),r=new Uint8Array(n.data);if(s){for(const l of s)if(l&&l.oldColor&&l.oldColor.length===4&&l.newColor&&l.newColor.length===4){const[_,g,y,f]=l.oldColor,[E,k,I,T]=l.newColor;if(_===E&&g===k&&y===I&&f===T)continue;for(let S=0;S<r.length;S+=4)_===r[S]&&g===r[S+1]&&y===r[S+2]&&f===r[S+3]&&(r[S]=E,r[S+1]=k,r[S+2]=I,r[S+3]=T)}}let h;for(let l=0;l<r.length;l+=4)h=r[l+3]/255,r[l]=r[l]*h,r[l+1]=r[l+1]*h,r[l+2]=r[l+2]*h;let c=r,u=t,m=e;const d=hi;if(u>=d||m>=d){const l=u/m;l>1?(u=d,m=Math.round(d/l)):(m=d,u=Math.round(d*l)),c=new Uint8Array(4*u*m);const _=new Uint8ClampedArray(c.buffer);Oe(r,t,e,_,u,m,!1)}return{size:[u,m],image:new Uint32Array(c.buffer),sdf:!1,simplePattern:!1,anchorX:0,anchorY:0}}},lt=class{constructor(t,e){this._width=0,this._height=0,this._free=[],this._width=t,this._height=e,this._free.push(new b(0,0,t,e))}get width(){return this._width}get height(){return this._height}allocate(t,e){if(t>this._width||e>this._height)return new b;let i=null,s=-1;for(let a=0;a<this._free.length;++a){const n=this._free[a];t<=n.width&&e<=n.height&&(i===null||n.y<=i.y&&n.x<=i.x)&&(i=n,s=a)}return i===null?new b:(this._free.splice(s,1),i.width<i.height?(i.width>t&&this._free.push(new b(i.x+t,i.y,i.width-t,e)),i.height>e&&this._free.push(new b(i.x,i.y+e,i.width,i.height-e))):(i.width>t&&this._free.push(new b(i.x+t,i.y,i.width-t,i.height)),i.height>e&&this._free.push(new b(i.x,i.y+e,t,i.height-e))),new b(i.x,i.y,t,e))}release(t){for(let e=0;e<this._free.length;++e){const i=this._free[e];if(i.y===t.y&&i.height===t.height&&i.x+i.width===t.x)i.width+=t.width;else if(i.x===t.x&&i.width===t.width&&i.y+i.height===t.y)i.height+=t.height;else if(t.y===i.y&&t.height===i.height&&t.x+t.width===i.x)i.x=t.x,i.width+=t.width;else{if(t.x!==i.x||t.width!==i.width||t.y+t.height!==i.y)continue;i.y=t.y,i.height+=t.height}this._free.splice(e,1),this.release(t)}this._free.push(t)}};const li=256,ui=o=>Math.floor(o/256);function di(o){const t=new Set;for(const e of o)t.add(ui(e));return t}function mi(o,t,e){return o.has(t)||o.set(t,e().then(()=>{o.delete(t)}).catch(i=>{o.delete(t),de(i)})),o.get(t)}const _i=o=>({rect:new b(0,0,0,0),page:0,metrics:{left:0,width:0,height:0,advance:0,top:0},code:o,sdf:!0});let gi=class{constructor(t,e,i){this.width=0,this.height=0,this._dirties=[],this._glyphData=[],this._currentPage=0,this._glyphCache={},this._textures=[],this._rangePromises=new Map,this._preloadCache={},this.width=t,this.height=e,this._glyphSource=i,this._binPack=new lt(t-4,e-4),this._glyphData.push(new Uint8Array(t*e)),this._dirties.push(!0),this._textures.push(null),this._initDecorationGlyphs()}dispose(){this._binPack=null;for(const t of this._textures)t&&t.dispose();this._textures.length=0,this._glyphData.length=0}_initDecorationGlyphs(){const t=[117,149,181,207,207,181,149,117],e=[],i=[];for(let n=0;n<t.length;n++){const r=t[n];for(let h=0;h<11;h++){const c=n>=3&&n<5&&h>=3&&h<8?255:0;e.push(r),i.push(c)}}const s={metrics:{width:5,height:2,left:0,top:0,advance:0},bitmap:new Uint8Array(e)},a={metrics:{width:5,height:2,left:0,top:0,advance:0},bitmap:new Uint8Array(i)};this._recordGlyph(s),this._recordGlyph(a)}async getGlyphItems(t,e,i){const s=this._getGlyphCache(t);return await this._fetchRanges(t,e,i),e.map(a=>this._getMosaicItem(s,t,a))}bind(t,e,i,s){const a=this._getTexture(t,i);a.setSamplingMode(e),this._dirties[i]&&(a.setData(this._glyphData[i]),this._dirties[i]=!1),t.bindTexture(a,s)}preloadASCIIGlyphCache(t){const e=this._preloadCache[t];if(e!=null)return e;const i=this._glyphSource.preloadASCIIRange(t).then(()=>{const s=this._getGlyphCache(t);for(let a=0;a<256;a++)this._getMosaicItem(s,t,a)});return this._preloadCache[t]=i,i}_getGlyphCache(t){return this._glyphCache[t]||(this._glyphCache[t]={}),this._glyphCache[t]}_getTexture(t,e){if(!this._textures[e]){const i=new zt;i.pixelFormat=oe.ALPHA,i.wrapMode=St.CLAMP_TO_EDGE,i.width=this.width,i.height=this.height,this._textures[e]=new Ct(t,i,new Uint8Array(this.width*this.height))}return this._textures[e]}_invalidate(){this._dirties[this._currentPage]=!0}async _fetchRanges(t,e,i){const s=di(e),a=[];s.forEach(n=>{a.push(this._fetchRange(t,n,i))}),await Promise.all(a)}async _fetchRange(t,e,i){if(e>li)return;const s=t+e;return mi(this._rangePromises,s,()=>this._glyphSource.getRange(t,e,i))}_getMosaicItem(t,e,i){if(!t[i]){const s=this._glyphSource.getGlyph(e,i);if(!(s!=null&&s.metrics))return _i(i);const a=this._recordGlyph(s),n=this._currentPage,r=s.metrics;t[i]={rect:a,page:n,metrics:r,code:i,sdf:!0},this._invalidate()}return t[i]}_recordGlyph(t){const e=t.metrics;let i;if(e.width===0)i=new b(0,0,0,0);else{const a=e.width+6,n=e.height+2*3;i=this._binPack.allocate(a,n),i.isEmpty&&(this._dirties[this._currentPage]||(this._glyphData[this._currentPage]=null),this._currentPage=this._glyphData.length,this._glyphData.push(new Uint8Array(this.width*this.height)),this._dirties.push(!0),this._textures.push(null),this._initDecorationGlyphs(),this._binPack=new lt(this.width-4,this.height-4),i=this._binPack.allocate(a,n));const r=this._glyphData[this._currentPage],h=t.bitmap;let c,u;if(h)for(let m=0;m<n;m++){c=a*m,u=this.width*(i.y+m)+i.x;for(let d=0;d<a;d++)r[u+d]=h[c+d]}O("esri-glyph-debug")&&this._showDebugPage(r)}return i}_showDebugPage(t){const e=document.createElement("canvas"),i=e.getContext("2d"),s=new ImageData(this.width,this.height),a=s.data;e.width=this.width,e.height=this.height,e.style.border="1px solid black";for(let n=0;n<t.length;++n)a[4*n]=t[n],a[4*n+1]=0,a[4*n+2]=0,a[4*n+3]=255;i.putImageData(s,0,0),document.body.appendChild(e)}},qt=class{constructor(t){for(this._metrics=[],this._bitmaps=[];t.next();)switch(t.tag()){case 1:{const e=t.getMessage();for(;e.next();)switch(e.tag()){case 3:{const i=e.getMessage();let s,a,n,r,h,c,u;for(;i.next();)switch(i.tag()){case 1:s=i.getUInt32();break;case 2:a=i.getBytes();break;case 3:n=i.getUInt32();break;case 4:r=i.getUInt32();break;case 5:h=i.getSInt32();break;case 6:c=i.getSInt32();break;case 7:u=i.getUInt32();break;default:i.skip()}i.release(),s&&(this._metrics[s]={width:n,height:r,left:h,top:c,advance:u},this._bitmaps[s]=a);break}default:e.skip()}e.release();break}default:t.skip()}}getMetrics(t){return this._metrics[t]}getBitmap(t){return this._bitmaps[t]}},pi=class{constructor(){this._ranges=[]}getRange(t){return this._ranges[t]}addRange(t,e){this._ranges[t]=e}},fi=class{constructor(t){this._glyphInfo={},this._baseURL=t}getRange(t,e,i){const s=this._getFontStack(t);if(s.getRange(e))return Promise.resolve();const a=256*e,n=a+255,r=this._baseURL.replace("{fontstack}",t).replace("{range}",a+"-"+n);return xt(r,{responseType:"array-buffer",...i}).then(h=>{s.addRange(e,new qt(new Ot(new Uint8Array(h.data),new DataView(h.data))))})}async preloadASCIIRange(t){const e=this._getFontStack(t),i=0,s=255,a=this._baseURL.replace("{fontstack}",t).replace("{range}",i+"-"+s),n=await xt(a,{responseType:"array-buffer"}),r=new qt(new Ot(new Uint8Array(n.data),new DataView(n.data)));for(let h=i;h<=s;h++)e.getRange(h)||e.addRange(h,r)}getGlyph(t,e){const i=this._getFontStack(t);if(!i)return;const s=Math.floor(e/256),a=i.getRange(s);return a?{metrics:a.getMetrics(e),bitmap:a.getBitmap(e)}:void 0}_getFontStack(t){let e=this._glyphInfo[t];return e||(e=this._glyphInfo[t]=new pi),e}};const H=1e20;let wi=class{constructor(t){this._svg=null,this.size=t;const e=document.createElement("canvas");e.width=e.height=t,this._context=e.getContext("2d",{willReadFrequently:!1}),this._gridOuter=new Float64Array(t*t),this._gridInner=new Float64Array(t*t),this._f=new Float64Array(t),this._d=new Float64Array(t),this._z=new Float64Array(t+1),this._v=new Int16Array(t)}dispose(){this._context=this._gridOuter=this._gridInner=this._f=this._d=this._z=this._v=null,this._svg&&(document.body.removeChild(this._svg),this._svg=null)}draw(t,e,i,s=31){this._initSVG();const a=this.createSVGString(t,e);return new Promise((n,r)=>{const h=new Image;h.src="data:image/svg+xml; charset=utf8, "+encodeURIComponent(a),h.onload=()=>{h.onload=null,this._context.clearRect(0,0,this.size,this.size),this._context.drawImage(h,0,0,this.size,this.size);const u=this._context.getImageData(0,0,this.size,this.size),m=new Uint8Array(this.size*this.size*4);for(let d=0;d<this.size*this.size;d++){const l=u.data[4*d+3]/255;this._gridOuter[d]=l===1?0:l===0?H:Math.max(0,.5-l)**2,this._gridInner[d]=l===1?H:l===0?0:Math.max(0,l-.5)**2}this._edt(this._gridOuter,this.size,this.size),this._edt(this._gridInner,this.size,this.size);for(let d=0;d<this.size*this.size;d++){const l=this._gridOuter[d]-this._gridInner[d];ti(.5-l/(2*s),m,4*d)}n(m)};const c=i==null?void 0:i.signal;c&&me(c,()=>r(_e()))})}_initSVG(){if(!this._svg){const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttribute("style","position: absolute;"),t.setAttribute("width","0"),t.setAttribute("height","0"),t.setAttribute("aria-hidden","true"),t.setAttribute("role","presentation"),document.body.appendChild(t),this._svg=t}return this._svg}createSVGString(t,e){const i=this._initSVG(),s=document.createElementNS("http://www.w3.org/2000/svg","path");s.setAttribute("d",t),i.appendChild(s);const a=s.getBBox(),n=a.width/a.height,r=this.size/2;let h,c,u;if(n>1){h=r/a.width;const _=r*(1/n);c=this.size/4,u=r-_/2}else h=r/a.height,c=r-r*n/2,u=this.size/4;const m=-a.x*h+c,d=-a.y*h+u;s.setAttribute("style",`transform: matrix(${h}, 0, 0, ${h}, ${m}, ${d})`),s.setAttribute("stroke-width",""+.5/h);const l=`<svg style="fill:${e?"red":"none"}; stroke:${e?"none":"red"}" height="${this.size}" width="${this.size}" xmlns="http://www.w3.org/2000/svg">${i.innerHTML}</svg>`;return i.removeChild(s),l}_edt(t,e,i){const s=this._f,a=this._d,n=this._v,r=this._z;for(let h=0;h<e;h++){for(let c=0;c<i;c++)s[c]=t[c*e+h];this._edt1d(s,a,n,r,i);for(let c=0;c<i;c++)t[c*e+h]=a[c]}for(let h=0;h<i;h++){for(let c=0;c<e;c++)s[c]=t[h*e+c];this._edt1d(s,a,n,r,e);for(let c=0;c<e;c++)t[h*e+c]=Math.sqrt(a[c])}}_edt1d(t,e,i,s,a){i[0]=0,s[0]=-H,s[1]=+H;for(let n=1,r=0;n<a;n++){let h=(t[n]+n*n-(t[i[r]]+i[r]*i[r]))/(2*n-2*i[r]);for(;h<=s[r];)r--,h=(t[n]+n*n-(t[i[r]]+i[r]*i[r]))/(2*n-2*i[r]);r++,i[r]=n,s[r]=h,s[r+1]=+H}for(let n=0,r=0;n<a;n++){for(;s[r+1]<n;)r++;e[n]=(n-i[r])*(n-i[r])+t[i[r]]}}};function F(o){return o&&o.type==="static"}let yi=class he{constructor(t,e,i=0){this._mosaicPages=[],this._maxItemSize=0,this._currentPage=0,this._pageWidth=0,this._pageHeight=0,this._mosaicRects=new Map,this._spriteCopyQueue=[],this.pixelRatio=1,(t<=0||e<=0)&&console.error("Sprites mosaic defaultWidth and defaultHeight must be greater than zero!"),this._pageWidth=t,this._pageHeight=e,i>0&&(this._maxItemSize=i),this.pixelRatio=window.devicePixelRatio||1,this._binPack=new lt(this._pageWidth,this._pageHeight);const s=Math.floor(this._pageWidth),a=Math.floor(this._pageHeight);this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(s*a)},size:[this._pageWidth,this._pageHeight],dirty:!0,texture:void 0})}getWidth(t){return t>=this._mosaicPages.length?-1:this._mosaicPages[t].size[0]}getHeight(t){return t>=this._mosaicPages.length?-1:this._mosaicPages[t].size[1]}getPageTexture(t){return t<this._mosaicPages.length?this._mosaicPages[t].texture:null}has(t){return this._mosaicRects.has(t)}get itemCount(){return this._mosaicRects.size}getSpriteItem(t){return this._mosaicRects.get(t)}addSpriteItem(t,e,i,s,a,n,r=1){if(this._mosaicRects.has(t))return this._mosaicRects.get(t);let h,c,u;if(F(i))[h,c,u]=this._allocateImage(e[0],e[1]);else{h=new b(0,0,e[0],e[1]),c=this._mosaicPages.length;const d=void 0;this._mosaicPages.push({mosaicsData:i,size:[e[0]+2*v,e[1]+2*v],dirty:!0,texture:d})}if(h.width<=0||h.height<=0)return null;const m={rect:h,width:e[0],height:e[1],sdf:a,simplePattern:n,pixelRatio:r,page:c};return this._mosaicRects.set(t,m),F(i)&&(O("esri-mosaic-debug")&&this._showDebugSprite(e,i.data),this._copy({rect:h,spriteSize:e,spriteData:i.data,page:c,pageSize:u,repeat:s,sdf:a})),m}hasItemsToProcess(){return this._spriteCopyQueue.length!==0}processNextItem(){const t=this._spriteCopyQueue.pop();t&&this._copy(t)}getSpriteItems(t){const e={};for(const i of t)e[i]=this.getSpriteItem(i);return e}getMosaicItemPosition(t){const e=this.getSpriteItem(t),i=e==null?void 0:e.rect;if(!i)return null;i.width=e.width,i.height=e.height;const s=e.width,a=e.height,n=v,r=this._mosaicPages[e.page].size;return{size:[e.width,e.height],tl:[(i.x+n)/r[0],(i.y+n)/r[1]],br:[(i.x+n+s)/r[0],(i.y+n+a)/r[1]],page:e.page}}bind(t,e,i=0,s=0){const a=this._mosaicPages[i],n=a.mosaicsData;let r=a.texture;r||(r=bi(t,a.size),a.texture=r),r.setSamplingMode(e),F(n)?(t.bindTexture(r,s),a.dirty&&(r.setData(new Uint8Array(n.data.buffer)),r.generateMipmap(),O("esri-mosaic-debug")&&this._showDebugPage(i))):(n.data.bindFrame(t,r,s),r.generateMipmap()),a.dirty=!1}dispose(){this._binPack=null;for(const t of this._mosaicPages){const e=t.texture;e&&e.dispose();const i=t.mosaicsData;F(i)||i.data.destroy()}this._mosaicPages=null,this._mosaicRects.clear()}static _copyBits(t,e,i,s,a,n,r,h,c,u,m){let d=s*e+i,l=h*n+r;if(m){l-=n;for(let _=-1;_<=u;_++,d=((_+u)%u+s)*e+i,l+=n)for(let g=-1;g<=c;g++)a[l+g]=t[d+(g+c)%c]}else for(let _=0;_<u;_++){for(let g=0;g<c;g++)a[l+g]=t[d+g];d+=e,l+=n}}_copy(t){if(t.page>=this._mosaicPages.length)return;const e=this._mosaicPages[t.page],i=e.mosaicsData;if(!F(e.mosaicsData))throw new A("mapview-invalid-resource","unsuitable data type!");const s=t.spriteData,a=i.data;a&&s||console.error("Source or target images are uninitialized!"),he._copyBits(s,t.spriteSize[0],0,0,a,t.pageSize[0],t.rect.x+v,t.rect.y+v,t.spriteSize[0],t.spriteSize[1],t.repeat),e.dirty=!0}_allocateImage(t,e){t+=2*v,e+=2*v;const i=Math.max(t,e);if(this._maxItemSize&&this._maxItemSize<i){const a=2**Math.ceil(Gt(t)),n=2**Math.ceil(Gt(e)),r=new b(0,0,t,e);return this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(a*n)},size:[a,n],dirty:!0,texture:void 0}),[r,this._mosaicPages.length-1,[a,n]]}const s=this._binPack.allocate(t,e);if(s.width<=0){const a=this._mosaicPages[this._currentPage];return!a.dirty&&F(a.mosaicsData)&&(a.mosaicsData.data=null),this._currentPage=this._mosaicPages.length,this._mosaicPages.push({mosaicsData:{type:"static",data:new Uint32Array(this._pageWidth*this._pageHeight)},size:[this._pageWidth,this._pageHeight],dirty:!0,texture:void 0}),this._binPack=new lt(this._pageWidth,this._pageHeight),this._allocateImage(t,e)}return[s,this._currentPage,[this._pageWidth,this._pageHeight]]}_showDebugSprite([t,e],i){const s=document.createElement("canvas");s.width=t,s.height=e,s.setAttribute("style",`position: absolute; top: ${4+204*vi++}px; right: 208px; width: 200px; height: 200px; border: 1px solid black;`);const a=s.getContext("2d"),n=new ImageData(t,e);n.data.set(new Uint8Array(i.buffer)),a.putImageData(n,0,0),document.body.appendChild(s)}_showDebugPage(t){const e=this._mosaicPages[t],{size:[i,s],mosaicsData:a}=e;if(!F(a))return void console.error("Could not show sprite mosaic debug for non-static resource");const n=`mosaicDebugPage${t}`,r=document.getElementById(n)??document.createElement("canvas");r.id=n,r.width=i,r.height=s,r.setAttribute("style",`position: absolute; top: ${4+204*t}px; right: 4px; width: 200px; height: 200px; border: 1px solid black;`);const h=r.getContext("2d"),c=new ImageData(i,s);c.data.set(new Uint8Array(a.data.buffer)),h.putImageData(c,0,0),document.body.appendChild(r)}},vi=0;function bi(o,t){const e=new zt;return e.width=t[0],e.height=t[1],e.wrapMode=St.CLAMP_TO_EDGE,new Ct(o,e,null)}function xi(o){return $(o.frameDurations.reduce((t,e)=>t+e,0))}function Mi(o){const{width:t,height:e}=o,i=o.frameDurations.reverse(),s=a=>{const n=o.frameDurations.length-1-a;return o.getFrame(n)};return{frameCount:o.frameCount,duration:o.duration,frameDurations:i,getFrame:s,width:t,height:e}}function $i(o,t){const{width:e,height:i,getFrame:s}=o,a=t/o.duration,n=o.frameDurations.map(r=>$(r*a));return{frameCount:o.frameCount,duration:o.duration,frameDurations:n,getFrame:s,width:e,height:i}}function Si(o,t){const{width:e,height:i,getFrame:s}=o,a=o.frameDurations.slice(),n=a.shift();return a.unshift($(n+t)),{frameCount:o.frameCount,duration:o.duration+t,frameDurations:a,getFrame:s,width:e,height:i}}function Ht(o,t){const{width:e,height:i,getFrame:s}=o,a=o.frameDurations.slice(),n=a.pop();return a.push($(n+t)),{frameCount:o.frameCount,duration:o.duration+t,frameDurations:a,getFrame:s,width:e,height:i}}let zi=class{constructor(t,e,i,s){this._animation=t,this._repeatType=i,this._onFrameData=s,this._direction=1,this._currentFrame=0,this.timeToFrame=this._animation.frameDurations[this._currentFrame];let a=0;for(;e>a;)a+=this.timeToFrame,this.nextFrame();const n=this._animation.getFrame(this._currentFrame);this._onFrameData(n)}nextFrame(){if(this._currentFrame+=this._direction,this._direction>0){if(this._currentFrame===this._animation.frameDurations.length)switch(this._repeatType){case R.None:this._currentFrame-=this._direction;break;case R.Loop:this._currentFrame=0;break;case R.Oscillate:this._currentFrame-=this._direction,this._direction=-1}}else if(this._currentFrame===-1)switch(this._repeatType){case R.None:this._currentFrame-=this._direction;break;case R.Loop:this._currentFrame=this._animation.frameDurations.length-1;break;case R.Oscillate:this._currentFrame-=this._direction,this._direction=1}this.timeToFrame=this._animation.frameDurations[this._currentFrame];const t=this._animation.getFrame(this._currentFrame);this._onFrameData(t)}};function Ci(o,t,e,i){let s,{repeatType:a}=t;if(a==null&&(a=R.Loop),t.reverseAnimation===!0&&(o=Mi(o)),t.duration!=null&&(o=$i(o,$(1e3*t.duration))),t.repeatDelay!=null){const n=1e3*t.repeatDelay;a===R.Loop?o=Ht(o,$(n)):a===R.Oscillate&&(o=Si(Ht(o,$(n/2)),$(n/2)))}if(t.startTimeOffset!=null)s=$(1e3*t.startTimeOffset);else if(t.randomizeStartTime!=null){const n=ke(e),r=82749913,h=t.randomizeStartSeed!=null?t.randomizeStartSeed:r,c=Ve(n,h);s=$(c*xi(o))}else s=$(0);return new zi(o,s,a,i)}function Ii(o,t,e,i){const s=t.playAnimation==null||t.playAnimation,a=Ci(o,t,e,i);let n,r=a.timeToFrame;function h(){n=s?setTimeout(()=>{a.nextFrame(),r=a.timeToFrame,h()},r):void 0}return h(),ge(()=>s&&clearTimeout(n))}let _t,Zt;function Ti(){return _t??(_t=document.createElement("canvas")),Zt??(Zt=_t.getContext("2d")),{canvas:_t,ctx:Zt}}function Di(o,t,e){const{canvas:i,ctx:s}=Ti();i.width=t,i.height=e;const a=[],n=o.frameDurations.length;for(let r=0;r<n;r++){const h=o.getFrame(r);s.clearRect(0,0,t,e),h instanceof ImageData?s.drawImage(ei(h),0,0,t,e):s.drawImage(h,0,0,t,e),a.push(s.getImageData(0,0,t,e))}return{width:t,height:e,frameDurations:o.frameDurations,getFrame:r=>a[r],frameCount:o.frameCount,duration:o.duration}}let Ri=class{constructor(t,e,i,s){this._animation=t,this._frameData=null;const a=n=>{this._frameData=n,e.requestRender()};this.frameCount=this._animation.frameDurations.length,this.width=this._animation.width,this.height=this._animation.height,this._playHandle=Ii(this._animation,i,s,a)}destroy(){this._playHandle.remove()}bindFrame(t,e,i){t.bindTexture(e,i);const s=this._frameData;if(s==null)return;const a="width"in s?s.width:s.codedWidth,n="height"in s?s.height:s.codedHeight;e.updateData(0,v,v,a,n,s),this._frameData=null}};function Pi(o){switch(o.type){case"esriSMS":return`${o.style}.${o.path}`;case"esriSLS":return`${o.style}.${o.cap}`;case"esriSFS":return`${o.style}`;case"esriPFS":case"esriPMS":return o.imageData?`${o.imageData}${o.width}${o.height}`:`${o.url}${o.width}${o.height}`;default:return"mosaicHash"in o?o.mosaicHash:JSON.stringify(o)}}const Yt=ve(),Wt="arial-unicode-ms-regular",ce=se.getLogger("esri.views.2d.engine.webgl.TextureManager");function $t(o){const t=Math.round(be(o)*window.devicePixelRatio);return t*(t>=128?2:4)}function Xt(o,t){return Math.min(o,$t(t))}function Qt(o,t){if(!o||!t)return{width:0,height:0};const e=o/t;if(e>1){const s=$t(o);return{width:s,height:s/e}}const i=$t(t);return{width:i*e,height:i}}const gt=(o,t,e)=>ce.error(new A(o,t,e));class It{static fromMosaic(t,e){return new It(t,e.page,e.sdf)}constructor(t,e,i){this.mosaicType=t,this.page=e,this.sdf=i}}class $s{constructor(t,e,i){this._requestRender=t,this.resourceManager=e,this._allowNonPowerOfTwo=i,this._invalidFontsMap=new Map,this._sdfConverter=new wi(mt),this._bindingInfos=new Array,this._hashToBindingIndex=new Map,this._ongoingRasterizations=new Map,this._imageRequestQueue=new pe({concurrency:10,process:async(s,a)=>{fe(a);try{return await xt(s,{responseType:"image",signal:a})}catch(n){throw Dt(n)?n:new A("mapview-invalid-resource",`Could not fetch requested resource at ${s}`,n)}}}),this._spriteMosaic=new yi(2048,2048,500),this._glyphSource=new fi(`${we.fontsUrl}/{fontstack}/{range}.pbf`),this._glyphMosaic=new gi(1024,1024,this._glyphSource),this._rasterizer=new ci(e)}dispose(){this._spriteMosaic.dispose(),this._glyphMosaic.dispose(),this._rasterizer.dispose(),this._sdfConverter.dispose(),this._spriteMosaic=null,this._glyphMosaic=null,this._sdfConverter=null,this._hashToBindingIndex.clear(),this._hashToBindingIndex=null,this._bindingInfos=null,this._ongoingRasterizations.clear(),this._ongoingRasterizations=null,this._imageRequestQueue.clear(),this._imageRequestQueue=null}get sprites(){return this._spriteMosaic}get glyphs(){return this._glyphMosaic}async rasterizeItem(t,e,i,s){if(t==null)return gt("mapview-null-resource","Unable to rasterize null resource"),null;switch(t.type){case"text":case"esriTS":{const a=await this._rasterizeText(t,i,s);return a.forEach(n=>this._setTextureBinding(st.GLYPH,n)),{glyphMosaicItems:a}}default:{if(Ze(t))return gt("mapview-invalid-type",`MapView does not support symbol type: ${t.type}`,t),null;const a=await this._rasterizeSpriteSymbol(t,e,s);return ii(a)&&a&&this._setTextureBinding(st.SPRITE,a),{spriteMosaicItem:a}}}}bindTextures(t,e,i,s=!1){if(i.textureBinding===0)return;const a=this._bindingInfos[i.textureBinding-1],n=a.page,r=s?Nt.LINEAR_MIPMAP_LINEAR:Nt.LINEAR;switch(a.mosaicType){case st.SPRITE:{const h=this.sprites.getWidth(n),c=this.sprites.getHeight(n),u=K(Yt,h,c);return this._spriteMosaic.bind(t,r,n,Vt),e.setUniform1i("u_texture",Vt),void e.setUniform2fv("u_mosaicSize",u)}case st.GLYPH:{const h=this.glyphs.width,c=this.glyphs.height,u=K(Yt,h,c);return this._glyphMosaic.bind(t,r,n,kt),e.setUniform1i("u_texture",kt),void e.setUniform2fv("u_mosaicSize",u)}default:ce.error("mapview-texture-manager",`Cannot handle unknown type ${a.mosaicType}`)}}_hashMosaic(t,e){return 1|t<<1|(e.sdf?1:0)<<2|e.page<<3}_setTextureBinding(t,e){const i=this._hashMosaic(t,e);if(!this._hashToBindingIndex.has(i)){const s=It.fromMosaic(t,e),a=this._bindingInfos.length+1;this._hashToBindingIndex.set(i,a),this._bindingInfos.push(s)}e.textureBinding=this._hashToBindingIndex.get(i)}async _rasterizeText(t,e,i){let s,a;if("cim"in t){const h=t;s=h.fontName,a=h.text}else{const h=t;s=Be(h.font),a=h.text}const n=this._invalidFontsMap.has(s),r=e||Ye(Le(a)[0]);try{const h=n?Wt:s;return O("esri-2d-stabilize-glyphs")&&await this._glyphMosaic.preloadASCIIGlyphCache(h),await this._glyphMosaic.getGlyphItems(h,r,i)}catch{return gt("mapview-invalid-resource",`Couldn't find font ${s}. Falling back to Arial Unicode MS Regular`),this._invalidFontsMap.set(s,!0),this._glyphMosaic.getGlyphItems(Wt,r,i)}}async _rasterizeSpriteSymbol(t,e,i){if(We(t))return;const s=Pi(t);if(this._spriteMosaic.has(s))return this._spriteMosaic.getSpriteItem(s);if(Bt(t)||Xe(t)&&!Qe(t))return this._handleAsyncResource(s,t,i);const a=Ge,n=this._rasterizer.rasterizeJSONResource(t,a);if(n){const{size:r,image:h,sdf:c,simplePattern:u,rasterizationScale:m}=n;return this._addItemToMosaic(s,r,{type:"static",data:h},at(t),c,u,m)}return new A("TextureManager","unrecognized or null rasterized image")}async _handleAsyncResource(t,e,i){if(this._ongoingRasterizations.has(t))return this._ongoingRasterizations.get(t);let s;s=Bt(e)?this._handleSVG(e,t,i):this._handleImage(e,t,i),this._ongoingRasterizations.set(t,s);try{await s,this._ongoingRasterizations.delete(t)}catch{this._ongoingRasterizations.delete(t)}return s}async _handleSVG(t,e,i){const s=[mt,mt],a=!("cim"in t)||t.cim.asFill,n=await this._sdfConverter.draw(t.path,a,i);return this._addItemToMosaic(e,s,{type:"static",data:new Uint32Array(n.buffer)},!1,!0,!0)}async _handleGIFOrPNG(t,e,i){const s=Lt(t);await this.resourceManager.fetchResource(s,i);let a=this.resourceManager.getResource(s);if(a==null)return new A("mapview-invalid-resource",`Could not fetch requested resource at ${s}.`);let n=a.width,r=a.height;if(a instanceof HTMLImageElement){t.type==="esriPMS"&&(n=Math.round(Xt(a.width,Ut(t))),r=Math.round(a.height*(n/a.width)));const m="cim"in t?t.cim.colorSubstitutions:void 0,{size:d,sdf:l,image:_}=this._rasterizer.rasterizeImageResource(n,r,a,m);return this._addItemToMosaic(e,d,{type:"static",data:_},at(t),l,!1)}this._allowNonPowerOfTwo||(n=bt(a.width+2*v)-2*v,r=bt(a.height+2*v)-2*v),n===a.width&&r===a.height||(a=Di(a,n,r));const h=t.animatedSymbolProperties||{},c=t.objectId,u=new Ri(a,this._requestRender,h,c);return this._addItemToMosaic(e,[u.width,u.height],{type:"animated",data:u},at(t),!1,!1)}async _handleImage(t,e,i){if(je(t)||Je(t))return this._handleGIFOrPNG(t,e,i);const s=Lt(t);try{let a;const n=this.resourceManager.getResource(s);if(n!=null&&n instanceof HTMLImageElement)a=n;else{const{data:l}=await this._imageRequestQueue.push(s,{...i});a=l}if(ye(s)){if("width"in t&&"height"in t){const{width:l,height:_}=Qt(t.width,t.height);a.width=l,a.height=_}else if("cim"in t){const l=t.cim,{width:_,height:g}=Qt(l.width??l.scaleX*l.size,l.size);a.width=_,a.height=g}}if(!a.width||!a.height)return null;let r=a.width,h=a.height;t.type==="esriPMS"&&(r=Math.round(Xt(a.width,Ut(t))),h=Math.round(a.height*(r/a.width)));const c="cim"in t?t.cim.colorSubstitutions:void 0,{size:u,sdf:m,image:d}=this._rasterizer.rasterizeImageResource(r,h,a,c);return this._addItemToMosaic(e,u,{type:"static",data:d},at(t),m,!1)}catch(a){if(!Dt(a))return new A("mapview-invalid-resource",`Could not fetch requested resource at ${s}. ${a.message}`)}}_addItemToMosaic(t,e,i,s,a,n,r){return this._spriteMosaic.addSpriteItem(t,e,i,s,a,n,r)}}const Ss={shaders:{vertexShader:x("stencil/stencil.vert"),fragmentShader:x("stencil/stencil.frag")},attributes:new Map([["a_pos",0]])},Ai=o=>o.replace("-","_").toUpperCase(),jt=o=>`#define ${Ai(o)}
`;function Jt(o){return{attributes:new Map([["a_pos",0],["a_tex",1]]),shaders:{vertexShader:jt(o)+x("blend/blend.vert"),fragmentShader:jt(o)+x("blend/blend.frag")}}}const Kt=se.getLogger("esri.views.2d.engine.webgl.effects.blendEffects.BlendEffect");class zs{constructor(){this._size=[0,0]}dispose(t){this._backBufferTexture=Rt(this._backBufferTexture),this._quad=Rt(this._quad)}draw(t,e,i,s,a){const{context:n,drawPhase:r}=t;if(this._setupShader(n),s&&s!=="normal"&&r!==Ke.LABEL)return void this._drawBlended(t,e,i,s,a);const h=Jt("normal"),c=n.programCache.acquire(h.shaders.vertexShader,h.shaders.fragmentShader,h.attributes);if(!c)return void Kt.error(new A("mapview-BlendEffect",'Error creating shader program for blend mode "normal"'));n.useProgram(c),e.setSamplingMode(i),n.bindTexture(e,0),c.setUniform1i("u_layerTexture",0),c.setUniform1f("u_opacity",a),n.setBlendingEnabled(!0),n.setBlendFunction(V.ONE,V.ONE_MINUS_SRC_ALPHA);const u=this._quad;u.draw(),u.unbind(),c.dispose()}_drawBlended(t,e,i,s,a){const{context:n,state:r,pixelRatio:h,inFadeTransition:c}=t,{size:u}=r,m=n.getBoundFramebufferObject();let d,l;m!=null?(d=m.width,l=m.height):(d=Math.round(h*u[0]),l=Math.round(h*u[1])),this._createOrResizeTexture(t,d,l);const _=this._backBufferTexture;m.copyToTexture(0,0,d,l,0,0,_),n.setStencilTestEnabled(!1),n.setStencilWriteMask(0),n.setBlendingEnabled(!0),n.setDepthTestEnabled(!1),n.setDepthWriteEnabled(!1);const g=Jt(s),y=n.programCache.acquire(g.shaders.vertexShader,g.shaders.fragmentShader,g.attributes);if(!y)return void Kt.error(new A("mapview-BlendEffect",`Error creating shader program for blend mode ${s}`));n.useProgram(y),_.setSamplingMode(i),n.bindTexture(_,0),y.setUniform1i("u_backbufferTexture",0),e.setSamplingMode(i),n.bindTexture(e,1),y.setUniform1i("u_layerTexture",1),y.setUniform1f("u_opacity",a),y.setUniform1f("u_inFadeOpacity",c?1:0),n.setBlendFunction(V.ONE,V.ZERO);const f=this._quad;f.draw(),f.unbind(),y.dispose(),n.setBlendFunction(V.ONE,V.ONE_MINUS_SRC_ALPHA)}_setupShader(t){this._quad||(this._quad=new ue(t,[-1,-1,1,-1,-1,1,1,1]))}_createOrResizeTexture(t,e,i){const{context:s}=t;if(this._backBufferTexture===null||e!==this._size[0]||i!==this._size[1]){if(this._backBufferTexture)this._backBufferTexture.resize(e,i);else{const a=new zt;a.internalFormat=oe.RGBA,a.wrapMode=St.CLAMP_TO_EDGE,a.width=e,a.height=i,this._backBufferTexture=new Ct(s,a)}this._size[0]=e,this._size[1]=i}}}const Cs={shaders:{vertexShader:x("highlight/textured.vert"),fragmentShader:x("highlight/highlight.frag")},attributes:new Map([["a_position",0],["a_texcoord",1]])},Is={shaders:{vertexShader:x("highlight/textured.vert"),fragmentShader:x("highlight/blur.frag")},attributes:new Map([["a_position",0],["a_texcoord",1]])},M=O("esri-2d-profiler");let Ts=class{constructor(t,e){if(this._events=new xe,this._entries=new Map,this._timings=new si(10),this._currentContainer=null,this._currentPass=null,this._currentBrush=null,this._currentSummary=null,!M)return;this._ext=ai(t.gl,{}),this._debugOutput=e;const i=t.gl;if(!this.enableCommandLogging)return;let s;for(s in i)if(typeof i[s]=="function"){const a=i[s],n=s.includes("draw");i[s]=(...r)=>(this._events.emit("command",{container:this._currentContainer,pass:this._currentPass,brush:this._currentBrush,method:s,args:r,isDrawCommand:n}),this._currentSummary&&(this._currentSummary.commands++,n&&this._currentSummary.drawCommands++),a.apply(i,r))}}get enableCommandLogging(){return!(typeof M=="object"&&M.disableCommands)}recordContainerStart(t){M&&(this._currentContainer=t)}recordContainerEnd(){M&&(this._currentContainer=null)}recordPassStart(t){M&&(this._currentPass=t,this._initSummary())}recordPassEnd(){M&&(this._currentPass=null,this._emitSummary())}recordBrushStart(t){M&&(this._currentBrush=t)}recordBrushEnd(){M&&(this._currentBrush=null)}recordStart(t){if(M&&this._ext!=null){if(this._entries.has(t)){const i=this._entries.get(t),s=this._ext.resultAvailable(i.query),a=this._ext.disjoint();if(s&&!a){const n=this._ext.getResult(i.query)/1e6;let r=0;if(this._timings.enqueue(n)!=null){const u=this._timings.entries,m=u.length;let d=0;for(const l of u)d+=l;r=d/m}const h=n.toFixed(2),c=r?r.toFixed(2):"--";this.enableCommandLogging?(console.groupCollapsed(`Frame report for ${t}, ${h} ms (${c} last 10 avg)
${i.commandsLen} Commands (${i.drawCommands} draw)`),console.log("RenderPass breakdown: "),console.table(i.summaries),console.log("Commands: ",i.commands),console.groupEnd()):console.log(`Frame report for ${t}, ${h} ms (${c} last 10 avg)`),this._debugOutput.innerHTML=`${h} (${c})`}for(const n of i.handles)n.remove();this._ext.deleteQuery(i.query),this._entries.delete(t)}const e={name:t,query:this._ext.createQuery(),commands:[],commandsLen:0,drawCommands:0,summaries:[],handles:[]};this.enableCommandLogging&&(e.handles.push(this._events.on("command",i=>{e.commandsLen++,e.commands.push(i),i.isDrawCommand&&e.drawCommands++})),e.handles.push(this._events.on("summary",i=>{e.summaries.push(i)}))),this._ext.beginTimeElapsed(e.query),this._entries.set(t,e)}}recordEnd(t){M&&this._ext!=null&&this._entries.has(t)&&this._ext.endTimeElapsed()}_initSummary(){this.enableCommandLogging&&(this._currentSummary={container:this._currentContainer,pass:this._currentPass,drawCommands:0,commands:0})}_emitSummary(){this.enableCommandLogging&&this._currentSummary&&this._events.emit("summary",this._currentSummary)}};const nt=2,z=1,Q=0,j=1,J=2;let Fi=class{constructor(t,e,i){this._debugMap=new Map,this._width=t*i,this._height=e*i,this._pixelRatio=i;const s=Math.ceil(this._width/z),a=Math.ceil(this._height/z);this._cols=s,this._rows=a,this._cells=ri.create(s*a)}insertMetrics(t){const e=this._hasCollision(t);return e===Q&&this._markMetrics(t),e}getCellId(t,e){return t+e*this._cols}has(t){return this._cells.has(t)}hasRange(t,e){return this._cells.hasRange(t,e)}set(t){this._cells.set(t)}setRange(t,e){this._cells.setRange(t,e)}_collide(t,e,i,s){const a=t-i/2,n=e-s/2,r=a+i,h=n+s;if(r<0||h<0||a>this._width||n>this._height)return j;const c=D(Math.floor(a/z),0,this._cols),u=D(Math.floor(n/z),0,this._rows),m=D(Math.ceil(r/z),0,this._cols),d=D(Math.ceil(h/z),0,this._rows);for(let l=u;l<=d;l++)for(let _=c;_<=m;_++){const g=this.getCellId(_,l);if(this.has(g))return J}return Q}_mark(t,e,i,s,a){const n=t-i/2,r=e-s/2,h=n+i,c=r+s,u=D(Math.floor(n/z),0,this._cols),m=D(Math.floor(r/z),0,this._rows),d=D(Math.ceil(h/z),0,this._cols),l=D(Math.ceil(c/z),0,this._rows);for(let _=m;_<=l;_++)for(let g=u;g<=d;g++){const y=this.getCellId(g,_);this._debugMap.set(y,a),this.set(y)}return!1}_hasCollision(t){const e=t.id;let i=0,s=0;t.save();do{const a=t.boundsCount;i+=a;for(let n=0;n<a;n++){const r=t.boundsComputedAnchorX(n),h=t.boundsComputedAnchorY(n),c=(t.boundsWidth(n)+nt)*this._pixelRatio,u=(t.boundsHeight(n)+nt)*this._pixelRatio;switch(this._collide(r,h,c,u)){case J:return J;case j:s++}}}while(t.peekId()===e&&t.next());return t.restore(),i===s?j:Q}_markMetrics(t){const e=t.id;t.save();do{const i=t.boundsCount;for(let s=0;s<i;s++){const a=t.boundsComputedAnchorX(s),n=t.boundsComputedAnchorY(s),r=(t.boundsWidth(s)+nt)*this._pixelRatio,h=(t.boundsHeight(s)+nt)*this._pixelRatio;this._mark(a,n,r,h,t.id)}}while(t.peekId()===e&&t.next());t.restore()}};const pt=254,rt=255,Z=0;function B(o,t){const e=[];o.forEachTile(i=>e.push(i)),e.sort((i,s)=>i.instanceId-s.instanceId),e.forEach(i=>{i.labelMetrics!=null&&i.isReady&&t(i,i.labelMetrics.getCursor())})}let Ei=class{run(t,e,i){const s=[];for(let a=t.length-1;a>=0;a--){const n=t[a];n.labelingCollisionInfos&&s.push(...n.labelingCollisionInfos)}this._transformMetrics(s),this._runCollision(s,e,i)}_runCollision(t,e,i){const[s,a]=e.state.size,n=new Fi(s,a,e.pixelRatio);for(const{tileRenderer:r,deconflictionEnabled:h,visible:c}of t){const u=r.featuresView.attributeView;h?c?(this._prepare(r),this._collideVisible(n,r,i),this._collideInvisible(n,r)):B(r,(m,d)=>{for(;d.nextId();)u.setLabelMinZoom(d.id,rt)}):B(r,(m,d)=>{for(;d.nextId();)u.setLabelMinZoom(d.id,Z),c&&n.insertMetrics(d)})}}_isFiltered(t,e,i){const s=e.getFilterFlags(t),a=!i.hasFilter||!!(s&qe),n=i.featureEffect==null||i.featureEffect.excludedLabelsVisible||!!(s&He);return!(a&&n)}_prepare(t){const e=t.featuresView.attributeView,i=new Set;B(t,(s,a)=>{for(;a.nextId();)if(!i.has(a.id)){if(i.add(a.id),this._isFiltered(a.id,e,t.layerView)){e.setLabelMinZoom(a.id,pt);continue}e.getLabelMinZoom(a.id)!==Z?e.setLabelMinZoom(a.id,rt):e.setLabelMinZoom(a.id,Z)}})}_collideVisible(t,e,i){const s=e.featuresView.attributeView,a=new Set;B(e,(n,r)=>{for(;r.nextId();)if(!a.has(r.id))if(n.key.level===i){if(s.getLabelMinZoom(r.id)===0)switch(t.insertMetrics(r)){case j:break;case J:s.setLabelMinZoom(r.id,pt),a.add(r.id);break;case Q:s.setLabelMinZoom(r.id,Z),a.add(r.id)}}else s.setLabelMinZoom(r.id,pt)})}_collideInvisible(t,e){const i=e.featuresView.attributeView,s=new Set;B(e,(a,n)=>{for(;n.nextId();)if(!s.has(n.id)&&i.getLabelMinZoom(n.id)===rt)switch(t.insertMetrics(n)){case j:break;case J:i.setLabelMinZoom(n.id,rt),s.add(n.id);break;case Q:i.setLabelMinZoom(n.id,Z),s.add(n.id)}})}_transformMetrics(t){for(const{tileRenderer:e,geometryType:i,vvEvaluators:s}of t)B(e,(a,n)=>{const r=e.featuresView.attributeView,h=a.transforms.labelMat2d;h[4]=Math.round(h[4]),h[5]=Math.round(h[5]);const c=i==="polyline";for(;n.next();){const u=n.boundsCount,m=n.anchorX,d=n.anchorY;let l=n.size;const _=s[0];if(_!=null){const f=_(r.getVVSize(n.id));l=isNaN(f)||f==null||f===1/0?l:f}const g=n.directionX*(l/2),y=n.directionY*(l/2);for(let f=0;f<u;f++){let E=m,k=n.anchorY;if(c){let I=E+n.boundsX(f)+g,T=k+n.boundsY(f)+y;I=h[0]*I+h[2]*T+h[4],T=h[1]*I+h[3]*T+h[5],n.setBoundsComputedAnchorX(f,Math.floor(I)),n.setBoundsComputedAnchorY(f,Math.floor(T))}else{E=h[0]*m+h[2]*d+h[4],k=h[1]*m+h[3]*d+h[5];const I=E+n.boundsX(f)+g,T=k+n.boundsY(f)+y;n.setBoundsComputedAnchorX(f,I),n.setBoundsComputedAnchorY(f,T)}}}})}};const ki=32;let Y=class extends G{constructor(t){super(t),this.collisionEngine=new Ei,this.lastUpdateId=-1,this.updateRequested=!1,this.view=null,this._applyVisibilityPass=ni(e=>{const i=this.view;if(i)try{const s=i.featuresTilingScheme.getClosestInfoForScale(e.state.scale).level;this.collisionEngine.run(i.allLayerViews.items,e,s)}catch{}},ki,this),this.addHandles(this._applyVisibilityPass)}get updating(){return O("esri-2d-log-updating")&&console.log(`Updating LabelManager ${this.updateRequested}:
-> updateRequested: ${this.updateRequested}`),this.updateRequested}update(t){this._applyVisibilityPass(t)}viewChange(){this.requestUpdate()}requestUpdate(){var t;this.updateRequested||(this.updateRequested=!0,(t=this.view)==null||t.requestUpdate())}processUpdate(t){this.updateRequested&&(this.updateRequested=!1,this.update(t))}};p([w()],Y.prototype,"updateRequested",void 0),p([w()],Y.prototype,"updating",null),p([w()],Y.prototype,"view",void 0),Y=p([q("esri.views.2d.LabelManager")],Y);const ot="esri-zoom-box",ht={container:`${ot}__container`,overlay:`${ot}__overlay`,background:`${ot}__overlay-background`,box:`${ot}__outline`},ft={zoom:"Shift",counter:"Ctrl"};let W=class extends G{constructor(t){super(t),this._container=null,this._overlay=null,this._backgroundShape=null,this._boxShape=null,this._box={x:0,y:0,width:0,height:0},this._rafId=null,this._redraw=this._redraw.bind(this)}destroy(){this.view=null}set view(t){this.removeAllHandles(),this._destroyOverlay(),this._set("view",t),t&&this.addHandles([t.on("drag",[ft.zoom],e=>this._handleDrag(e,1),Pt.INTERNAL),t.on("drag",[ft.zoom,ft.counter],e=>this._handleDrag(e,-1),Pt.INTERNAL)])}_start(){this._createContainer(),this._createOverlay(),this.navigation.begin()}_update(t,e,i,s){this._box.x=t,this._box.y=e,this._box.width=i,this._box.height=s,this._rafId||(this._rafId=requestAnimationFrame(this._redraw))}_end(t,e,i,s,a){const n=this.view,r=n.toMap(Me(t+.5*i,e+.5*s));let h=Math.max(i/n.width,s/n.height);a===-1&&(h=1/h),this._destroyOverlay(),this.navigation.end(),n.goTo({center:r,scale:n.scale*h})}_updateBox(t,e,i,s){const a=this._boxShape;a.setAttributeNS(null,"x",""+t),a.setAttributeNS(null,"y",""+e),a.setAttributeNS(null,"width",""+i),a.setAttributeNS(null,"height",""+s),a.setAttributeNS(null,"class",ht.box)}_updateBackground(t,e,i,s){this._backgroundShape.setAttributeNS(null,"d",this._toSVGPath(t,e,i,s,this.view.width,this.view.height))}_createContainer(){const t=document.createElement("div");t.className=ht.container,this.view.root.appendChild(t),this._container=t}_createOverlay(){const t=this.view.width,e=this.view.height,i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttributeNS(null,"d","M 0 0 L "+t+" 0 L "+t+" "+e+" L 0 "+e+" Z"),i.setAttributeNS(null,"class",ht.background);const s=document.createElementNS("http://www.w3.org/2000/svg","rect"),a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),a.setAttributeNS(null,"class",ht.overlay),a.appendChild(i),a.appendChild(s),this._container.appendChild(a),this._backgroundShape=i,this._boxShape=s,this._overlay=a}_destroyOverlay(){this._container&&this._container.parentNode&&this._container.parentNode.removeChild(this._container),this._container=this._backgroundShape=this._boxShape=this._overlay=null}_toSVGPath(t,e,i,s,a,n){const r=t+i,h=e+s;return"M 0 0 L "+a+" 0 L "+a+" "+n+" L 0 "+n+" ZM "+t+" "+e+" L "+t+" "+h+" L "+r+" "+h+" L "+r+" "+e+" Z"}_handleDrag(t,e){const i=t.x,s=t.y,a=t.origin.x,n=t.origin.y;let r,h,c,u;switch(i>a?(r=a,c=i-a):(r=i,c=a-i),s>n?(h=n,u=s-n):(h=s,u=n-s),t.action){case"start":this._start();break;case"update":this._update(r,h,c,u);break;case"end":this._end(r,h,c,u,e)}t.stopPropagation()}_redraw(){if(!this._rafId||(this._rafId=null,!this._overlay))return;const{x:t,y:e,width:i,height:s}=this._box;this._updateBox(t,e,i,s),this._updateBackground(t,e,i,s),this._rafId=requestAnimationFrame(this._redraw)}};p([w()],W.prototype,"navigation",void 0),p([w()],W.prototype,"view",null),W=p([q("esri.views.2d.navigation.ZoomBox")],W);const Vi=W;let P=class{constructor(t){this._gain=t,this.lastValue=void 0,this.filteredDelta=void 0}update(t){if(this.hasLastValue()){const e=this.computeDelta(t);this._updateDelta(e)}this.lastValue=t}reset(){this.lastValue=void 0,this.filteredDelta=void 0}hasLastValue(){return this.lastValue!==void 0}hasFilteredDelta(){return this.filteredDelta!==void 0}computeDelta(t){return this.lastValue===void 0?NaN:t-this.lastValue}_updateDelta(t){this.filteredDelta!==void 0?this.filteredDelta=(1-this._gain)*this.filteredDelta+this._gain*t:this.filteredDelta=t}},Tt=class{constructor(t,e,i){this._initialVelocity=t,this._stopVelocity=e,this._friction=i,this._duration=Math.abs(Math.log(Math.abs(this._initialVelocity)/this._stopVelocity)/Math.log(1-this._friction))}get duration(){return this._duration}isFinished(t){return t>this.duration}get friction(){return this._friction}value(t){return this.valueFromInitialVelocity(this._initialVelocity,t)}valueDelta(t,e){const i=this.value(t);return this.value(t+e)-i}valueFromInitialVelocity(t,e){e=Math.min(e,this.duration);const i=1-this.friction;return t*(i**e-1)/Math.log(i)}};class Bi extends Tt{constructor(t,e,i,s,a){super(t,e,i),this._sceneVelocity=s,this.direction=a}value(t){return super.valueFromInitialVelocity(this._sceneVelocity,t)}}class Li{constructor(t=300,e=12,i=.84){this._minimumInitialVelocity=t,this._stopVelocity=e,this._friction=i,this.enabled=!0,this._time=new P(.6),this._screen=[new P(.4),new P(.4)],this._scene=[new P(.6),new P(.6),new P(.6)],this._tmpDirection=ae()}add(t,e,i){if(this.enabled){if(this._time.hasLastValue()&&this._time.computeDelta(i)<.015)return;this._screen[0].update(t[0]),this._screen[1].update(t[1]),this._scene[0].update(e[0]),this._scene[1].update(e[1]),this._scene[2].update(e[2]),this._time.update(i)}}reset(){this._screen[0].reset(),this._screen[1].reset(),this._scene[0].reset(),this._scene[1].reset(),this._scene[2].reset(),this._time.reset()}evaluateMomentum(){if(!this.enabled||!this._screen[0].hasFilteredDelta()||!this._time.hasFilteredDelta())return null;const t=this._screen[0].filteredDelta,e=this._screen[1].filteredDelta,i=t==null||e==null?0:Math.sqrt(t*t+e*e),s=this._time.filteredDelta,a=s==null||i==null?0:i/s;return Math.abs(a)<this._minimumInitialVelocity?null:this.createMomentum(a,this._stopVelocity,this._friction)}createMomentum(t,e,i){$e(this._tmpDirection,this._scene[0].filteredDelta??0,this._scene[1].filteredDelta??0,this._scene[2].filteredDelta??0);const s=Se(this._tmpDirection);s>0&&ne(this._tmpDirection,this._tmpDirection,1/s);const a=this._time.filteredDelta;return new Bi(t,e,i,a==null?0:s/a,this._tmpDirection)}}let U=class extends G{constructor(t){super(t),this.animationTime=0,this.momentumEstimator=new Li(500,6,.92),this.momentum=null,this.tmpMomentum=ae(),this.momentumFinished=!1,this.viewpoint=new ut({targetGeometry:new dt,scale:0,rotation:0}),this._previousDrag=null,re(()=>this.momentumFinished,()=>this.navigation.stop())}begin(t,e){this.navigation.begin(),this.momentumEstimator.reset(),this.addToEstimator(e),this._previousDrag=e}update(t,e){this.addToEstimator(e);let i=e.center.x,s=e.center.y;const a=this._previousDrag;i=a?a.center.x-i:-i,s=a?s-a.center.y:s,t.viewpoint=ct(this.viewpoint,t.viewpoint,[i||0,s||0]),this._previousDrag=e}end(t,e){this.addToEstimator(e);const i=t.navigation.momentumEnabled;this.momentum=i?this.momentumEstimator.evaluateMomentum():null,this.animationTime=0,this.momentum&&this.onAnimationUpdate(t),this._previousDrag=null,this.navigation.end()}addToEstimator(t){const e=t.center.x,i=t.center.y,s=ze(-e,i),a=Ce(-e,i,0);this.momentumEstimator.add(s,a,.001*t.timestamp)}onAnimationUpdate(t){var e;(e=this.navigation.animationManager)==null||e.animateContinous(t.viewpoint,(i,s)=>{const{momentum:a,animationTime:n,tmpMomentum:r}=this,h=.001*s;if(!(this.momentumFinished=!a||a.isFinished(n))){const c=a.valueDelta(n,h);ne(r,a.direction,c),ct(i,i,r),t.constraints.constrainByGeometry(i)}this.animationTime+=h})}stopMomentumNavigation(){this.momentum&&(this.momentumEstimator.reset(),this.momentum=null,this.navigation.stop())}};p([w()],U.prototype,"momentumFinished",void 0),p([w()],U.prototype,"viewpoint",void 0),p([w()],U.prototype,"navigation",void 0),U=p([q("esri.views.2d.navigation.actions.Pan")],U);const Ui=U;let le=class{constructor(t=2.5,e=.01,i=.95,s=12){this._minimumInitialVelocity=t,this._stopVelocity=e,this._friction=i,this._maxVelocity=s,this.enabled=!0,this.value=new P(.8),this.time=new P(.3)}add(t,e){if(this.enabled&&e!=null){if(this.time.hasLastValue()){if(this.time.computeDelta(e)<.01)return;if(this.value.hasFilteredDelta()){const i=this.value.computeDelta(t);this.value.filteredDelta*i<0&&this.value.reset()}}this.time.update(e),this.value.update(t)}}reset(){this.value.reset(),this.time.reset()}evaluateMomentum(){if(!this.enabled||!this.value.hasFilteredDelta()||!this.time.hasFilteredDelta())return null;let t=this.value.filteredDelta/this.time.filteredDelta;return t=D(t,-this._maxVelocity,this._maxVelocity),Math.abs(t)<this._minimumInitialVelocity?null:this.createMomentum(t,this._stopVelocity,this._friction)}createMomentum(t,e,i){return new Tt(t,e,i)}},Ni=class extends le{constructor(t=3,e=.01,i=.95,s=12){super(t,e,i,s)}add(t,e){const i=this.value.lastValue;if(i!=null){let s=t-i;for(;s>Math.PI;)s-=2*Math.PI;for(;s<-Math.PI;)s+=2*Math.PI;t=i+s}super.add(t,e)}};class Oi extends Tt{constructor(t,e,i){super(t,e,i)}value(t){const e=super.value(t);return Math.exp(e)}valueDelta(t,e){const i=super.value(t),s=super.value(t+e)-i;return Math.exp(s)}}class Gi extends le{constructor(t=2.5,e=.01,i=.95,s=12){super(t,e,i,s)}add(t,e){super.add(Math.log(t),e)}createMomentum(t,e,i){return new Oi(t,e,i)}}let N=class extends G{constructor(t){super(t),this._animationTime=0,this._momentumFinished=!1,this._previousAngle=0,this._previousRadius=0,this._previousCenter=null,this._rotationMomentumEstimator=new Ni(.6,.15,.95),this._rotationDirection=1,this._startAngle=0,this._startRadius=0,this._updateTimestamp=null,this._zoomDirection=1,this._zoomMomentumEstimator=new Gi,this._zoomOnly=null,this.zoomMomentum=null,this.rotateMomentum=null,this.viewpoint=new ut({targetGeometry:new dt,scale:0,rotation:0}),this.addHandles(re(()=>this._momentumFinished,()=>this.navigation.stop()))}begin(t,e){this.navigation.begin(),this._rotationMomentumEstimator.reset(),this._zoomMomentumEstimator.reset(),this._zoomOnly=null,this._previousAngle=this._startAngle=e.angle,this._previousRadius=this._startRadius=e.radius,this._previousCenter=e.center,this._updateTimestamp=null,t.constraints.rotationEnabled&&this.addToRotateEstimator(0,e.timestamp),this.addToZoomEstimator(e,1)}update(t,e){this._updateTimestamp===null&&(this._updateTimestamp=e.timestamp);const i=e.angle,s=e.radius,a=e.center,n=Math.abs(180*(i-this._startAngle)/Math.PI),r=Math.abs(s-this._startRadius),h=this._startRadius/s;if(this._previousRadius&&this._previousCenter){const c=s/this._previousRadius;let u=180*(i-this._previousAngle)/Math.PI;this._rotationDirection=u>=0?1:-1,this._zoomDirection=c>=1?1:-1,t.constraints.rotationEnabled?(this._zoomOnly===null&&e.timestamp-this._updateTimestamp>200&&(this._zoomOnly=r-n>0),this._zoomOnly===null||this._zoomOnly?u=0:this.addToRotateEstimator(i-this._startAngle,e.timestamp)):u=0,this.addToZoomEstimator(e,h),this.navigation.setViewpoint([a.x,a.y],1/c,u,[this._previousCenter.x-a.x,a.y-this._previousCenter.y])}this._previousAngle=i,this._previousRadius=s,this._previousCenter=a}end(t){this.rotateMomentum=this._rotationMomentumEstimator.evaluateMomentum(),this.zoomMomentum=this._zoomMomentumEstimator.evaluateMomentum(),this._animationTime=0,(this.rotateMomentum||this.zoomMomentum)&&this.onAnimationUpdate(t),this.navigation.end()}addToRotateEstimator(t,e){this._rotationMomentumEstimator.add(t,.001*e)}addToZoomEstimator(t,e){this._zoomMomentumEstimator.add(e,.001*t.timestamp)}canZoomIn(t){const e=t.scale,i=t.constraints.effectiveMaxScale;return i===0||e>i}canZoomOut(t){const e=t.scale,i=t.constraints.effectiveMinScale;return i===0||e<i}onAnimationUpdate(t){var e;(e=this.navigation.animationManager)==null||e.animateContinous(t.viewpoint,(i,s)=>{const a=!this.canZoomIn(t)&&this._zoomDirection>1||!this.canZoomOut(t)&&this._zoomDirection<1,n=!this.rotateMomentum||this.rotateMomentum.isFinished(this._animationTime),r=a||!this.zoomMomentum||this.zoomMomentum.isFinished(this._animationTime),h=.001*s;if(this._momentumFinished=n&&r,!this._momentumFinished){const c=this.rotateMomentum?Math.abs(this.rotateMomentum.valueDelta(this._animationTime,h))*this._rotationDirection*180/Math.PI:0;let u=this.zoomMomentum?Math.abs(this.zoomMomentum.valueDelta(this._animationTime,h)):1;const m=tt(),d=tt();if(this._previousCenter){K(m,this._previousCenter.x,this._previousCenter.y),Ie(d,t.size,t.padding),Te(m,m,d);const{constraints:l,scale:_}=t,g=_*u;u<1&&!l.canZoomInTo(g)?(u=_/l.effectiveMaxScale,this.zoomMomentum=null,this.rotateMomentum=null):u>1&&!l.canZoomOutTo(g)&&(u=_/l.effectiveMinScale,this.zoomMomentum=null,this.rotateMomentum=null),De(i,t.viewpoint,u,c,m,t.size),t.constraints.constrainByGeometry(i)}}this._animationTime+=h})}stopMomentumNavigation(){(this.rotateMomentum||this.zoomMomentum)&&(this.rotateMomentum&&(this._rotationMomentumEstimator.reset(),this.rotateMomentum=null),this.zoomMomentum&&(this._zoomMomentumEstimator.reset(),this.zoomMomentum=null),this.navigation.stop())}};p([w()],N.prototype,"_momentumFinished",void 0),p([w()],N.prototype,"viewpoint",void 0),p([w()],N.prototype,"navigation",void 0),N=p([q("esri.views.2d.navigation.actions.Pinch")],N);const qi=N,wt=tt(),te=tt();let X=class extends G{constructor(o){super(o),this._previousCenter=tt(),this.viewpoint=new ut({targetGeometry:new dt,scale:0,rotation:0})}begin(o,t){this.navigation.begin(),K(this._previousCenter,t.center.x,t.center.y)}update(o,t){const{state:{size:e,padding:i}}=o;K(wt,t.center.x,t.center.y),Re(te,e,i),o.viewpoint=Mt(this.viewpoint,o.state.paddedViewState.viewpoint,Pe(te,this._previousCenter,wt)),Ae(this._previousCenter,wt)}end(){this.navigation.end()}};p([w()],X.prototype,"viewpoint",void 0),p([w()],X.prototype,"navigation",void 0),X=p([q("esri.views.2d.actions.Rotate")],X);const Hi=X,L=10,ee=1,yt=new ut({targetGeometry:new dt}),vt=[0,0],ie=250;let C=class extends G{constructor(o){super(o),this._endTimer=null,this._lastEventTimestamp=null,this.animationManager=null,this.interacting=!1}initialize(){this.pan=new Ui({navigation:this}),this.rotate=new Hi({navigation:this}),this.pinch=new qi({navigation:this}),this.zoomBox=new Vi({view:this.view,navigation:this})}destroy(){this.pan=et(this.pan),this.rotate=et(this.rotate),this.pinch=et(this.pinch),this.zoomBox=et(this.zoomBox),this.animationManager=null}begin(){this._set("interacting",!0)}end(){this._lastEventTimestamp=performance.now(),this._startTimer(ie)}async zoom(o,t=this._getDefaultAnchor()){if(this.stop(),this.begin(),this.view.constraints.snapToZoom&&this.view.constraints.effectiveLODs)return o<1?this.zoomIn(t):this.zoomOut(t);this.setViewpoint(t,o,0,[0,0])}async zoomIn(o){const t=this.view,e=t.constraints.snapToNextScale(t.scale);return this._zoomToScale(e,o)}async zoomOut(o){const t=this.view,e=t.constraints.snapToPreviousScale(t.scale);return this._zoomToScale(e,o)}setViewpoint(o,t,e,i){this.begin(),this.view.stateManager.state.viewpoint=this._scaleRotateTranslateViewpoint(this.view.viewpoint,o,t,e,i),this.end()}setViewpointImmediate(o,t=0,e=[0,0],i=this._getDefaultAnchor()){this.view.stateManager.state.viewpoint=this._scaleRotateTranslateViewpoint(this.view.viewpoint,i,o,t,e)}continousRotateClockwise(){var t;const o=this.view.viewpoint;(t=this.animationManager)==null||t.animateContinous(o,e=>{Mt(e,e,-ee)})}continousRotateCounterclockwise(){var t;const o=this.view.viewpoint;(t=this.animationManager)==null||t.animateContinous(o,e=>{Mt(e,e,ee)})}resetRotation(){this.view.constraints.rotationEnabled&&(this.view.rotation=0)}continousPanLeft(){this._continuousPan([-L,0])}continousPanRight(){this._continuousPan([L,0])}continousPanUp(){this._continuousPan([0,L])}continousPanDown(){this._continuousPan([0,-L])}continuousPanVector({x:o,y:t}){this._continuousPan([o*L,t*L])}stop(){var o;this.pan.stopMomentumNavigation(),(o=this.animationManager)==null||o.stop(),this.end(),this._endTimer!==null&&(clearTimeout(this._endTimer),this._endTimer=null,this._set("interacting",!1))}_continuousPan(o){var e;const t=this.view.viewpoint;(e=this.animationManager)==null||e.animateContinous(t,i=>{ct(i,i,o),this.view.constraints.constrainByGeometry(i)})}_startTimer(o){return this._endTimer!==null||(this._endTimer=setTimeout(()=>{this._endTimer=null;const t=performance.now()-(this._lastEventTimestamp??0);t<ie?this._endTimer=this._startTimer(t):this._set("interacting",!1)},o)),this._endTimer}_getDefaultAnchor(){const{size:o,padding:{left:t,right:e,top:i,bottom:s}}=this.view;return vt[0]=.5*(o[0]-e+t),vt[1]=.5*(o[1]-s+i),vt}async _zoomToScale(o,t=this._getDefaultAnchor()){const{view:e}=this,{constraints:i,scale:s,viewpoint:a,size:n,padding:r}=e,h=i.canZoomInTo(o),c=i.canZoomOutTo(o);if(!(o<s&&!h||o>s&&!c))return At(yt,a,o/s,0,t,n,r),i.constrainByGeometry(yt),e.goTo(yt,{animate:!0,pickClosestTarget:!1})}_scaleRotateTranslateViewpoint(o,t,e,i,s){const{view:a}=this,{size:n,padding:r,constraints:h,scale:c,viewpoint:u}=a,m=c*e,d=h.canZoomInTo(m),l=h.canZoomOutTo(m);return(e<1&&!d||e>1&&!l)&&(e=1),ct(u,u,s),At(o,u,e,i,t,n,r),h.constrainByGeometry(o)}};p([w()],C.prototype,"animationManager",void 0),p([w({type:Boolean,readOnly:!0})],C.prototype,"interacting",void 0),p([w()],C.prototype,"pan",void 0),p([w()],C.prototype,"pinch",void 0),p([w()],C.prototype,"rotate",void 0),p([w()],C.prototype,"view",void 0),p([w()],C.prototype,"zoomBox",void 0),C=p([q("esri.views.2d.navigation.MapViewNavigation")],C);const Ns=C,Zi={shaders:{vertexShader:x("magnifier/magnifier.vert"),fragmentShader:x("magnifier/magnifier.frag")},attributes:new Map([["a_pos",0]])};function Os(o){return oi(o,Zi)}export{$s as J,Is as a,Os as b,Zi as c,Y as d,_s as e,Ii as l,zs as m,Ts as n,Ss as r,Cs as t,Ns as y};