1import{bl as B,bu as j,_ as u,m as _,e as z,ll as F,z as U,eX as T,c0 as W,eY as G,cc as O,eD as P,cE as H,f9 as K,lm as Y,cm as I,hG as J,d2 as q,D as A,ln as E,ff as Q,lf as X,lo as Z}from"./index-CyVzZKgG.js";import{b as k,g as tt,d as et}from"./kmlUtils-BGfJrDWU.js";import{x as it,g as at,w as st}from"./BitmapTechnique-CCXWXQjv.js";import{s as rt}from"./BitmapContainer-D63FmVmZ.js";import{b as ot}from"./LayerView2D-Dtnnq7Ok.js";import{i as R}from"./GraphicContainer-BLeZE4EH.js";import{O as M}from"./GraphicsView2D-Co13d62n.js";import{d as nt}from"./LayerView-BDFKgFC_.js";import{execute as lt}from"./projectOperator-BJPLlCOx.js";import{C as ht,r as pt,j as mt}from"./rasterProjectionHelper-CZp-9SR_.js";import{F as ct,a as dt,s as ut}from"./RenderingContext-Dn8BFo6Q.js";import{m as gt}from"./FramebufferObject-BNdJFBQL.js";import{i as _t}from"./rasterUtils-32eUpV5a.js";import"./Container-DIJ98BLI.js";import"./GraphShaderModule-DslPvKFR.js";import"./BufferObject-BH6QMSVF.js";import"./ProgramTemplate-DULZpuIR.js";import"./ShaderBuilder-OAyDLXfD.js";import"./bitmapUtils-dHdtnPoo.js";import"./WGLContainer-D8AJ7Lzg.js";import"./Utils-B7KDTEFr.js";import"./VertexArrayObject-DkbpOVOt.js";import"./VertexBuffer-CLPmkREM.js";import"./vec3f32-WCVSSNPR.js";import"./config-BOD8--da.js";import"./AGraphicContainer-CYfADnx5.js";import"./TechniqueInstance-BHVdyxQZ.js";import"./UpdateTracking2D-BU7im7tt.js";import"./TileContainer-D-dMRxQl.js";import"./FeatureCommandQueue-DVWi1idW.js";import"./utils-CyWYFr2j.js";import"./constants-BBnGEY1d.js";import"./streamLayerUtils-DFlbJ4P1.js";import"./QueueProcessor-AnzOkreC.js";import"./AttributeStore-DULZvMd7.js";import"./FeatureStoreQueryAdapter-C0ICVdNT.js";import"./queryUtils-BIR2uwrr.js";import"./timeSupport-b5uPa2kt.js";import"./FeatureMetadata-DQ_tU50O.js";import"./normalizeUtilsSync-DKAmWogf.js";import"./densifyCurvedGeometry-UxJMKMfb.js";import"./dehydratedFeatures-BVXI2t9G.js";import"./operatorProject-TnortSSu.js";import"./SimpleGeometryCursor-B92kdZ15.js";import"./webglDeps-D33dJuWO.js";import"./renderState-CKc66y4x.js";import"./glsl-B5bJgrnA.js";import"./testSVGPremultipliedAlpha-Dh4B1acK.js";let g=class extends B{constructor(){super(...arguments),this.id=0,this.rotation=0,this.href="",this.extent=new j}};u([_({nonNullable:!0,json:{write:!0}})],g.prototype,"id",void 0),u([_({nonNullable:!0,json:{write:!0}})],g.prototype,"rotation",void 0),u([_({nonNullable:!0,json:{write:!0}})],g.prototype,"href",void 0),u([_({type:j,nonNullable:!0,json:{write:!0}})],g.prototype,"extent",void 0),g=u([z("esri.layers.support.KMLMapImage")],g);const p=class p{constructor(t){if(this._ownsRctx=!1,t)this._ownsRctx=!1,this._rctx=t;else{if(p._instance)return p._instanceRefCount++,p._instance;p._instanceRefCount=1,p._instance=this,this._ownsRctx=!0;const r=document.createElement("canvas").getContext("webgl2");r.getExtension("OES_texture_float"),this._rctx=new ct(r,new F)}this._quad=new dt(this._rctx,[0,0,1,0,0,1,1,1]);const s=ut("raster/reproject","raster/reproject",{applyProjection:!0,bilinear:!1,bicubic:!1});this._program=this._rctx.programCache.acquire(s.vertexShader,s.fragmentShader,this._quad.locations),this._rctx.useProgram(this._program),this._program.setUniform1f("u_opacity",1),this._program.setUniform1i("u_image",0),this._program.setUniform1i("u_flipY",0),this._program.setUniform1i("u_transformGrid",1)}reprojectTexture(t,s,r=!1){const a=lt(t.extent,s),e=new U({x:(t.extent.xmax-t.extent.xmin)/t.texture.descriptor.width,y:(t.extent.ymax-t.extent.ymin)/t.texture.descriptor.height,spatialReference:t.extent.spatialReference}),{x:n,y:h}=ht(e,s,t.extent);let l=(n+h)/2;const m=Math.round((a.xmax-a.xmin)/l),o=Math.round((a.ymax-a.ymin)/l);l=(a.width/m+a.height/o)/2;const D=new U({x:l,y:l,spatialReference:a.spatialReference}),f=pt({projectedExtent:a,srcBufferExtent:t.extent,pixelSize:D,hasWrapAround:!0,spacing:[16,16]}),y=_t(this._rctx,f),b=new T(m,o);b.wrapMode=33071;const c=new gt(this._rctx,b);this._rctx.bindFramebuffer(c),this._rctx.setViewport(0,0,m,o),this._rctx.useProgram(this._program),this._rctx.bindTexture(t.texture,0),this._rctx.bindTexture(y,1),this._quad.bind();const{width:V=0,height:v=0}=t.texture.descriptor;if(this._program.setUniform2f("u_srcImageSize",V,v),this._program.setUniform2fv("u_transformSpacing",f.spacing),this._program.setUniform2fv("u_transformGridSize",f.size),this._program.setUniform2f("u_targetImageSize",m,o),this._quad.draw(),this._quad.unbind(),this._rctx.useProgram(null),this._rctx.bindFramebuffer(null),y.dispose(),r){const{width:d,height:C}=c,w=new ImageData(d??0,C??0);c.readPixels(0,0,d??0,C??0,6408,W.UNSIGNED_BYTE,w.data);const N=c.detachColorTexture();return c.dispose(),{texture:N,extent:a,imageData:w}}const S=c.detachColorTexture();return c.dispose(),{texture:S,extent:a}}reprojectBitmapData(t,s){const r=it(t.bitmapData)?at(t.bitmapData):t.bitmapData,a=new T(t.bitmapData.width,t.bitmapData.height);a.wrapMode=33071;const e=new G(this._rctx,a,r),n=this.reprojectTexture({texture:e,extent:t.extent},s,!0);n.texture.dispose();const h=document.createElement("canvas"),l=n.imageData;return h.width=l.width,h.height=l.height,h.getContext("2d").putImageData(l,0,0),{bitmapData:h,extent:n.extent}}async loadAndReprojectBitmapData(t,s,r){const[a]=await Promise.all([O(t,{responseType:"image"}).then(m=>m.data),mt()]),e=document.createElement("canvas");e.width=a.width,e.height=a.height;const n=e.getContext("2d");n.drawImage(a,0,0);const h=n.getImageData(0,0,e.width,e.height);if(s.spatialReference.equals(r))return{bitmapData:h,extent:s};const l=this.reprojectBitmapData({bitmapData:h,extent:s},r);return{bitmapData:l.bitmapData,extent:l.extent}}destroy(){this._ownsRctx?(p._instanceRefCount--,p._instanceRefCount===0&&(this._quad.dispose(),this._program.dispose(),this._rctx.dispose(),p._instance=null)):(this._quad.dispose(),this._program.dispose())}};p._instanceRefCount=0;let $=p;class L{constructor(){this.allSublayers=new Map,this.allPoints=[],this.allPolylines=[],this.allPolygons=[],this.allMapImages=[]}}let x=class extends ot(nt){constructor(){super(...arguments),this._bitmapIndex=new Map,this._mapImageContainer=new rt,this._kmlVisualData=new L,this._fetchController=null,this.allVisiblePoints=new P,this.allVisiblePolylines=new P,this.allVisiblePolygons=new P,this.allVisibleMapImages=new H}async hitTest(i,t){var r,a,e;const s=this.layer;return[(r=this._pointsView)==null?void 0:r.hitTest(i),(a=this._polylinesView)==null?void 0:a.hitTest(i),(e=this._polygonsView)==null?void 0:e.hitTest(i)].flat().filter(
1Boolean).map(n=>(n.layer=s,n.sourceLayer=s,{type:"graphic",graphic:n,layer:s,mapPoint:i}))}update(i){this._polygonsView&&this._polygonsView.processUpdate(i),this._polylinesView&&this._polylinesView.processUpdate(i),this._pointsView&&this._pointsView.processUpdate(i)}attach(){this._fetchController=new AbortController,this.container.addChild(this._mapImageContainer),this._polygonsView=new M({view:this.view,graphics:this.allVisiblePolygons,requestUpdateCallback:()=>this.requestUpdate(),container:new R(this.view.featuresTilingScheme)}),this.container.addChild(this._polygonsView.container),this._polylinesView=new M({view:this.view,graphics:this.allVisiblePolylines,requestUpdateCallback:()=>this.requestUpdate(),container:new R(this.view.featuresTilingScheme)}),this.container.addChild(this._polylinesView.container),this._pointsView=new M({view:this.view,graphics:this.allVisiblePoints,requestUpdateCallback:()=>this.requestUpdate(),container:new R(this.view.featuresTilingScheme)}),this.container.addChild(this._pointsView.container),this.addAttachHandles([this.allVisibleMapImages.on("change",i=>{i.added.forEach(t=>this._addMapImage(t)),i.removed.forEach(t=>this._removeMapImage(t))}),K(()=>this.layer.visibleSublayers,i=>{for(const t of this._kmlVisualData.allSublayers.values())t.visibility=0;for(const t of i){const s=this._kmlVisualData.allSublayers.get(t.id);s&&(s.visibility=1)}this._refreshCollections()})]),this._updatingHandles.addPromise(this._fetchService(this._fetchController.signal)),this._imageReprojector=new $}detach(){this._fetchController=Y(this._fetchController),this._mapImageContainer.removeAllChildren(),this.container.removeAllChildren(),this._bitmapIndex.clear(),this._polygonsView=I(this._polygonsView),this._polylinesView=I(this._polylinesView),this._pointsView=I(this._pointsView),this._imageReprojector=I(this._imageReprojector)}viewChange(){this._polygonsView.viewChange(),this._polylinesView.viewChange(),this._pointsView.viewChange()}moveEnd(){}isUpdating(){return this._pointsView.updating||this._polygonsView.updating||this._polylinesView.updating}_addMapImage(i){var t,s;((t=this.view.spatialReference)!=null&&t.isWGS84||(s=this.view.spatialReference)!=null&&s.isWebMercator)&&this._imageReprojector.loadAndReprojectBitmapData(i.href,i.extent,this.view.spatialReference).then(r=>{const a=new st(r.bitmapData);a.x=r.extent.xmin,a.y=r.extent.ymax,a.resolution=r.extent.width/r.bitmapData.width,a.rotation=i.rotation,this._mapImageContainer.addChild(a),this._bitmapIndex.set(i,a)})}async _getViewDependentUrl(i,t){const{viewFormat:s,viewBoundScale:r,httpQuery:a}=i;if(s!=null){if(t==null)throw new Error("Loading this network link requires a view state.");let e;if(await J(),r!=null&&r!==1){const d=new j(t.extent);d.expand(r),e=d}else e=t.extent;e=q(e,A.WGS84);const n=q(e,A.WebMercator),h=e.xmin,l=e.xmax,m=e.ymin,o=e.ymax,D=t.size[0]*t.pixelRatio,f=t.size[1]*t.pixelRatio,y=Math.max(n.width,n.height),b={"[bboxWest]":h.toString(),"[bboxEast]":l.toString(),"[bboxSouth]":m.toString(),"[bboxNorth]":o.toString(),"[lookatLon]":e.center.x.toString(),"[lookatLat]":e.center.y.toString(),"[lookatRange]":y.toString(),"[lookatTilt]":"0","[lookatHeading]":t.rotation.toString(),"[lookatTerrainLon]":e.center.x.toString(),"[lookatTerrainLat]":e.center.y.toString(),"[lookatTerrainAlt]":"0","[cameraLon]":e.center.x.toString(),"[cameraLat]":e.center.y.toString(),"[cameraAlt]":y.toString(),"[horizFov]":"60","[vertFov]":"60","[horizPixels]":D.toString(),"[vertPixels]":f.toString(),"[terrainEnabled]":"0","[clientVersion]":Z,"[kmlVersion]":"2.2","[clientName]":"ArcGIS API for JavaScript","[language]":"en-US"},c=d=>{for(const C in d){let w;for(w in b)d[C]=d[C].replace(w,b[w])}},V=E(s);c(V);let v={};a!=null&&(v=E(a),c(v));const S=Q(i.href);return S.query={...S.query,...V,...v},`${S.path}?${X(V)}`}return i.href}async _fetchService(i){const t=new L;await this._loadVisualData(this.layer.url,t,i),this._kmlVisualData=t,this._refreshCollections()}_refreshCollections(){this.allVisiblePoints.removeAll(),this.allVisiblePolylines.removeAll(),this.allVisiblePolygons.removeAll(),this.allVisibleMapImages.removeAll();const i=(t,s)=>{t.addMany(s.filter(r=>this._isSublayerVisible(r.sublayerId)).map(({item:r})=>r))};i(this.allVisiblePoints,this._kmlVisualData.allPoints),i(this.allVisiblePolylines,this._kmlVisualData.allPolylines),i(this.allVisiblePolygons,this._kmlVisualData.allPolygons),this.allVisibleMapImages.addMany(this._kmlVisualData.allMapImages.filter(t=>this._isSublayerVisible(t.sublayerId)).map(({item:t})=>t))}_isSublayerVisible(i){const t=this._kmlVisualData.allSublayers.get(i);return!!(t!=null&&t.visibility)&&(t.parentFolderId===-1||this._isSublayerVisible(t.parentFolderId))}_loadVisualData(i,t,s){return this._fetchParsedKML(i,s).then(async r=>{var a;for(const e of r.sublayers){t.allSublayers.set(e.id,e);const n=await k(e,"points",this.layer,e.id),h=await k(e,"polylines",this.layer,e.id),l=await k(e,"polygons",this.layer,e.id),m=((a=e.mapImages)==null?void 0:a.map(o=>
1g.fromJSON(o)))??[];if(t.allPoints.push(...n.map(o=>({item:o,sublayerId:e.id}))),t.allPolylines.push(...h.map(o=>({item:o,sublayerId:e.id}))),t.allPolygons.push(...l.map(o=>({item:o,sublayerId:e.id}))),t.allMapImages.push(...m.map(o=>({item:o,sublayerId:e.id}))),e.networkLink){const o=await this._getViewDependentUrl(e.networkLink,this.view.state);await this._loadVisualData(o,t,s)}}})}_fetchParsedKML(i,t){return tt(i,this.layer.spatialReference,this.layer.refreshInterval,t).then(s=>et(s.data))}_removeMapImage(i){const t=this._bitmapIndex.get(i);t&&(this._mapImageContainer.removeChild(t),this._bitmapIndex.delete(i))}};u([_()],x.prototype,"_pointsView",void 0),u([_()],x.prototype,"_polylinesView",void 0),u([_()],x.prototype,"_polygonsView",void 0),x=u([z("esri.views.2d.layers.KMLLayerView2D")],x);const me=x;export{me as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.