(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-ec210914"],{"6c7a":function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var i=a("a4ee"),r=a("e92d"),n=a("f4cc"),s=a("477c"),o=a("59b2"),c=(a("b50f"),a("c120"),a("cea0"),a("d386"));const l=e=>{let t=class extends e{initialize(){this.handles.add(Object(s["b"])(()=>this.layer,"refresh",e=>{this.doRefresh(e.dataChanged).catch(e=>{Object(n["m"])(e)||r["a"].getLogger(this.declaredClass).error(e)})}),"RefreshableLayerView")}};return Object(i["a"])([Object(o["b"])()],t.prototype,"layer",void 0),t=Object(i["a"])([Object(c["a"])("esri.layers.mixins.RefreshableLayerView")],t),t}},"7af4":function(e,t,a){"use strict";a.r(t),a.d(t,"default",(function(){return o}));var i=a("a4ee"),r=(a("e92d"),a("cea0"),a("b50f"),a("c120"),a("2dd4"),a("d386")),n=a("843f");let s=class extends n["a"]{constructor(){super(...arguments),this.type="base-dynamic-3d"}};s=Object(i["a"])([Object(r["a"])("esri.views.3d.layers.BaseDynamicLayerView3D")],s);const o=s},"843f":function(e,t,a){"use strict";a.d(t,"a",(function(){return N}));var i=a("a4ee"),r=a("792b"),n=a("e92d"),s=a("b2b2"),o=a("f4cc"),c=a("3795"),l=a("59b2"),d=(a("b50f"),a("c120"),a("cea0"),a("d386")),h=a("3af1"),u=a("9180"),b=a("648c"),p=a("66af"),g=a("0278"),m=a("caf7"),f=a("b7bd");function O(e,t,a){const i=Object(u["C"])(e)/Object(u["u"])(e),r={width:a,height:a};return i>1.0001?r.height=a/i:i<.9999&&(r.width=a*i),r.width=Math.round(r.width/(Object(u["C"])(e)/Object(u["C"])(t))),r.height=Math.round(r.height/(Object(u["u"])(e)/Object(u["u"])(t))),r}function y(e){return m["a"].createSquareGeometry([[e[0],e[1],-1],[e[2],e[1],-1],[e[2],e[3],-1],[e[0],e[3],-1]])}function v(e,t){if(!Object(u["w"])(e,t))return y(t);const a=[e[1]-t[1],Math.min(e[3],t[3])-Math.max(e[1],t[1]),t[3]-e[3],123456],i=[e[0]-t[0],Math.min(e[2],t[2])-Math.max(e[0],t[0]),t[2]-e[2],123456],r=t[2]-t[0],n=t[3]-t[1],s=i[0]>0&&i[2]>0?3:2,o=a[0]>0&&a[2]>0?3:2,c=(o+1)*(s+1),l=new Float64Array(3*c),d=new Float32Array(2*c),h=new Uint32Array(6*(o*s-1));let b=0,p=0,m=0,O=0,v=0;for(let u=0;u<4;u++){const e=a[u];if(e<=0)continue;let o=0;for(let a=0;a<4;a++){const e=i[a];e<=0||(l[p++]=t[0]+o,l[p++]=t[1]+b,l[p++]=-1,d[m++]=o/r,d[m++]=b/n,a<3&&u<3&&(1!==a||1!==u)&&(h[v++]=O,h[v++]=O+1,h[v++]=O+s+1,h[v++]=O+1,h[v++]=O+s+2,h[v++]=O+s+1),O++,o+=e)}b+=e}const _=new Uint32Array(h.length);return new g["a"]([[f["a"].POSITION,{size:3,data:l,exclusive:!0}],[f["a"].NORMAL,{size:3,data:j,exclusive:!0}],[f["a"].UV0,{size:2,data:d,exclusive:!0}]],[[f["a"].POSITION,h],[f["a"].NORMAL,_],[f["a"].UV0,h]])}const j=[0,0,1];var _=a("eec2"),w=a("6611"),x=a("9b8b"),E=a("b7c2"),T=a("3bd5"),C=a("6061"),A=a("1e2c"),P=a("ad96"),R=a("365a"),S=a("6c7a"),I=a("5e70"),D=a("d17d");const M=n["a"].getLogger("esri.views.3d.layers.DynamicLayerView3D");let L=class extends(Object(S["a"])(Object(p["a"])(R["a"]))){constructor(){super(...arguments),this.drapeSourceType=b["b"].RasterImage,this.updatePolicy=E["m"].SYNC,this.fullExtentInLocalViewSpatialReference=null,this.maximumDataResolution=null,this._images=new Array,this._extents=new Array,this._overlays=new Array,this.updateWhenStationary=!0,this.refreshDebounced=Object(o["i"])(async e=>{this.destroyed||await this._doRefresh(e).catch(e=>{Object(o["m"])(e)||n["a"].getLogger(this.declaredClass).error(e)})},2e3)}initialize(){this.addResolvingPromise(Object(_["a"])(this).then(e=>this._set("fullExtentInLocalViewSpatialReference",e))),this.updatingHandles.add(()=>this.suspended,()=>this._suspendedChangeHandler()),this.handles.add(this.view.resourceController.scheduler.registerIdleStateCallbacks(()=>{this._isScaleRangeActive()&&this.notifyChange("suspended")},()=>{})),this._isScaleRangeLayer()&&this.updatingHandles.add(()=>this.layer.effectiveScaleRange,()=>this.notifyChange("suspended"))}destroy(){this.clear()}setDrapingExtent(e,t){this._spatialReference=t,e.forEach(e=>{this._overlays[e.index]=e,this._updateImageExtent(e)})}_updateImageExtent(e){const t=this._clippedExtent(e.extent,F);if(Object(s["j"])(t))return;const a=O(e.extent,t,e.resolution);let i=e.pixelRatio*this.view.pixelRatio;if("imageMaxWidth"in this.layer||"imageMaxHeight"in this.layer){const e=this.layer.imageMaxWidth,t=this.layer.imageMaxHeight;if(a.width>e){const t=e/a.width;a.height=Math.floor(a.height*t),a.width=e,i*=t}if(a.height>t){const e=t/a.height;a.width=Math.floor(a.width*e),a.height=t,i*=e}}const r=this._extents[e.index];r&&Object(u["o"])(r.extent,t)&&this._imageSizeEquals(t,r.imageSize,a)||(this._extents[e.index]={extent:Object(u["l"])(t),imageSize:a,pixelRatio:i},this.suspended||this._fetch(e.index).catch(e=>{Object(o["m"])(e)||M.error(e)}))}clear(){for(let e=0;e0&&i>t)return!1}return!0}isUpdating(){return this._images.some(e=>!!e.loadingPromise)}async processResult(e,t,a){(t instanceof HTMLImageElement||t instanceof HTMLCanvasElement)&&(e.image=t)}findExtentInfoAt(e){for(const t of this._extents){const a=t.extent;if(new h["a"](a[0],a[1],a[2],a[3],this._spatialReference).contains(e))return t}return null}getFetchOptions(){}async redraw(e,t){await Object(r["b"])(this._images,async(a,i)=>{a&&(await e(a,t),await this._createStageObjects(i,a.image,t))})}_imageSizeEquals(e,t,a){if(!this.maximumDataResolution)return!1;const i=Object(u["C"])(e)/this.maximumDataResolution.x,r=Object(u["u"])(e)/this.maximumDataResolution.y,n=i/t.width,s=r/t.height,o=i/a.width,c=r/a.height,l=Math.abs(n-o),d=Math.abs(s-c),h=w["a"].TESTS_DISABLE_OPTIMIZATIONS?0:1.5;return l<=h&&d<=h}async _fetch(e,t){if(this.suspended)return;const a=this._extents[e],i=a.extent;this._images[e]||(this._images[e]={texture:null,material:null,renderGeometry:null,loadingPromise:null,loadingAbortController:null,image:null,pixelData:null,renderExtent:Object(u["l"])(i)});const r=this._images[e];r.loadingAbortController&&(r.loadingAbortController.abort(),r.loadingAbortController=null);const n=new h["a"](i[0],i[1],i[2],i[3],this._spatialReference);if(0===n.width||0===n.height)return void this._clearImage(e);const s=new AbortController;r.loadingAbortController=s,Object(o["q"])(t,()=>s.abort());const c=s.signal,l=this._waitFetchReady(c).then(()=>{const t={requestAsImageElement:!0,pixelRatio:this._overlays[e].pixelRatio,...this.getFetchOptions(),signal:c},{height:i,width:r}=a.imageSize;return this.layer.fetchImage(n,r,i,t)}).then(e=>{if(Object(o["n"])(c))throw M.warnOnce("A call to fetchImage resolved even though the request was aborted. fetchImage should not resolve if options.signal.aborted is true."),Object(o["e"])();return this.processResult(r,e)}).then(()=>Object(u["k"])(r.renderExtent,i));r.loadingPromise=l,Object(o["c"])(l,()=>{l===r.loadingPromise&&(r.loadingPromise=null,r.loadingAbortController=null)}),this.notifyChange("updating"),await l.then(async()=>{if(c.aborted)throw Object(o["e"])();await this._createStageObjects(e,r.image,c),this.notifyChange("updating")}).catch(e=>{throw e&&!Object(o["m"])(e)&&M.error(e),this.notifyChange("updating"),e})}_clearImage(e){const t=this._images[e];if(t){Object(s["k"])(t.renderGeometry)&&(this.view.basemapTerrain.overlayManager.renderer.removeGeometries([t.renderGeometry],this,T["a"].Geometry.UPDATE),t.renderGeometry=null);const e=this.view._stage;e.remove(t.texture),t.texture=null,e.remove(t.material),t.material=null,t.loadingAbortController&&(t.loadingAbortController.abort(),t.loadingAbortController=null),t.loadingPromise=null,t.image=null,t.pixelData=null}}async _createStageObjects(e,t,a){const i=this.view._stage,n=this._images[e],c=this.view.basemapTerrain.overlayManager.renderer,l=()=>{i.remove(n.texture),n.texture=null,Object(s["k"])(n.renderGeometry)&&(c.removeGeometries([n.renderGeometry],this,T["a"].Geometry.UPDATE),n.renderGeometry=null)};if(t){const d=new A["a"](t,{width:t.width,height:t.height,preMultiplyAlpha:!0,wrap:{s:D["B"].CLAMP_TO_EDGE,t:D["B"].CLAMP_TO_EDGE}});let h;if(await Object(r["d"])(this._images[e===x["b"].INNER?x["b"].OUTER:x["b"].INNER].loadingPromise),Object(o["v"])(a),e===x["b"].INNER)h=y(n.renderExtent);else{const e=this._images[0].renderExtent;if(!e)return void l();h=v(e,n.renderExtent)}l(),i.add(d),await i.loadImmediate(d),n.texture=d,Object(s["j"])(n.material)?(n.material=new P["a"]({transparent:!0,textureId:d.id}),i.add(n.material)):n.material.setParameters({textureId:d.id}),n.renderGeometry=new C["a"](h,n.material),n.renderGeometry.origin=this._overlays[e].renderLocalOrigin,c.addGeometries([n.renderGeometry],this,T["a"].Geometry.UPDATE)}else l(),i.remove(n.material),n.material=null}_isScaleRangeLayer(){return"effectiveScaleRange"in this.layer}_isScaleRangeActive(){const e=this.layer;if(!this._isScaleRangeLayer())return!1;const{minScale:t,maxScale:a}=e.effectiveScaleRange;return Object(I["c"])(t,a)}_clippedExtent(e,t){if("local"!==this.view.viewingMode)return Object(u["k"])(t,e);const a=this.view.basemapTerrain;return a.ready?Object(u["v"])(e,a.extent,t):Object(u["k"])(t,e)}_suspendedChangeHandler(){this.suspended?this.clear():this.refreshDebounced()}async _waitFetchReady(e){await Object(c["j"])(this.view,"stationary",e),Object(o["v"])(e)}};Object(i["a"])([Object(l["b"])()],L.prototype,"layer",void 0),Object(i["a"])([Object(l["b"])()],L.prototype,"suspended",void 0),Object(i["a"])([Object(l["b"])({readOnly:!0})],L.prototype,"fullExtentInLocalViewSpatialReference",void 0),Object(i["a"])([Object(l["b"])()],L.prototype,"updating",void 0),L=Object(i["a"])([Object(d["a"])("esri.views.3d.layers.DynamicLayerView3D")],L);const N=L,F=Object(u["l"])()},ad96:function(e,t,a){"use strict";a.d(t,"a",(function(){return A}));var i=a("a05b"),r=a("b7c2"),n=a("b061"),s=a("68af"),o=a("35b3"),c=a("7438"),l=a("badc"),d=a("8675"),h=a("7c51"),u=a("a4ee"),b=a("d272"),p=a("c6d7"),g=a("8e97"),m=a("c3a4"),f=a("ca98"),O=a("da35"),y=a("fa1e"),v=a("c829"),j=a("87b7"),_=a("f3d9"),w=a("d17d"),x=a("189c");class E extends f["a"]{initializeProgram(e){const t=E.shader.get(),a=this.configuration,i=t.build({output:a.output,slicePlaneEnabled:a.slicePlaneEnabled,sliceHighlightDisabled:!1,sliceEnabledForVertexPrograms:!1,oitEnabled:a.transparencyPassType===r["l"].Color,multipassTerrainEnabled:a.multipassTerrainEnabled,cullAboveGround:a.cullAboveGround});return new v["a"](e.rctx,i,y["a"])}bindPass(e,t){Object(g["b"])(this.program,t.camera.projectionMatrix),this.program.setUniform1f("opacity",e.opacity),t.multipassTerrainEnabled&&(this.program.setUniform2fv("nearFar",t.camera.nearFar),this.program.setUniform2fv("inverseViewport",t.inverseViewport),Object(p["a"])(this.program,t))}bindDraw(e){Object(g["c"])(this.program,e),Object(b["c"])(this.program,this.configuration,e),this.program.rebindTextures()}_setPipelineState(e,t){const a=this.configuration,n=e===r["l"].NONE,s=e===r["l"].FrontFace;return Object(x["g"])({blending:a.output!==i["a"].Color&&a.output!==i["a"].Alpha||!a.transparent?null:n?T:Object(c["f"])(e),culling:Object(x["c"])(a.cullFace),depthTest:{func:Object(c["g"])(e)},depthWrite:n?a.writeDepth&&x["e"]:Object(c["h"])(e),colorWrite:x["d"],stencilWrite:a.sceneHasOcludees?j["j"]:null,stencilTest:a.sceneHasOcludees?t?j["f"]:j["e"]:null,polygonOffset:n||s?null:Object(c["e"])(a.enableOffset)})}initializePipeline(){return this._occludeePipelineState=this._setPipelineState(this.configuration.transparencyPassType,!0),this._setPipelineState(this.configuration.transparencyPassType,!1)}getPipelineState(e,t){return t?this._occludeePipelineState:super.getPipelineState(e,t)}}E.shader=new m["a"](_["a"],()=>a.e("chunk-2d215c84").then(a.bind(null,"c056")));const T=Object(x["i"])(w["b"].ONE,w["b"].ONE_MINUS_SRC_ALPHA);class C extends O["a"]{constructor(){super(...arguments),this.output=i["a"].Color,this.cullFace=r["c"].None,this.slicePlaneEnabled=!1,this.transparent=!1,this.enableOffset=!0,this.writeDepth=!0,this.sceneHasOcludees=!1,this.transparencyPassType=r["l"].NONE,this.multipassTerrainEnabled=!1,this.cullAboveGround=!1}}Object(u["a"])([Object(O["b"])({count:i["a"].COUNT})],C.prototype,"output",void 0),Object(u["a"])([Object(O["b"])({count:r["c"].COUNT})],C.prototype,"cullFace",void 0),Object(u["a"])([Object(O["b"])()],C.prototype,"slicePlaneEnabled",void 0),Object(u["a"])([Object(O["b"])()],C.prototype,"transparent",void 0),Object(u["a"])([Object(O["b"])()],C.prototype,"enableOffset",void 0),Object(u["a"])([Object(O["b"])()],C.prototype,"writeDepth",void 0),Object(u["a"])([Object(O["b"])()],C.prototype,"sceneHasOcludees",void 0),Object(u["a"])([Object(O["b"])({count:r["l"].COUNT})],C.prototype,"transparencyPassType",void 0),Object(u["a"])([Object(O["b"])()],C.prototype,"multipassTerrainEnabled",void 0),Object(u["a"])([Object(O["b"])()],C.prototype,"cullAboveGround",void 0);class A extends o["b"]{constructor(e){super(e,R),this.supportsEdges=!0,this.techniqueConfig=new C}getTechniqueConfig(e,t){return this.techniqueConfig.output=e,this.techniqueConfig.cullFace=this.parameters.cullFace,this.techniqueConfig.slicePlaneEnabled=this.parameters.slicePlaneEnabled,this.techniqueConfig.transparent=this.parameters.transparent,this.techniqueConfig.writeDepth=this.parameters.writeDepth,this.techniqueConfig.sceneHasOcludees=this.parameters.sceneHasOcludees,this.techniqueConfig.transparencyPassType=t.transparencyPassType,this.techniqueConfig.enableOffset=t.camera.relativeElevation!e.destroyed&&t?t:void 0).catch(()=>null):Promise.resolve(null)}},f3d9:function(e,t,a){"use strict";a.d(t,"a",(function(){return p})),a.d(t,"b",(function(){return b}));var i=a("a05b"),r=a("d272"),n=a("4db9"),s=a("d047"),o=a("c6d7"),c=a("ebd5"),l=a("4377"),d=a("3886"),h=a("690a"),u=a("b7bd");function b(e){const t=new h["a"];return t.include(n["a"],{linearDepth:!1}),t.vertex.uniforms.add("proj","mat4").add("view","mat4"),t.attributes.add(u["a"].POSITION,"vec3"),t.attributes.add(u["a"].UV0,"vec2"),t.varyings.add("vpos","vec3"),e.multipassTerrainEnabled&&t.varyings.add("depth","float"),t.vertex.uniforms.add("textureCoordinateScaleFactor","vec2"),t.vertex.code.add(d["a"]` void main(void) { vpos = position; ${e.multipassTerrainEnabled?"depth = (view * vec4(vpos, 1.0)).z;":""} vTexCoord = uv0 * textureCoordinateScaleFactor; gl_Position = transformPosition(proj, view, vpos); } `),t.include(r["a"],e),e.multipassTerrainEnabled&&(t.fragment.include(s["a"]),t.include(o["b"],e)),t.fragment.uniforms.add("tex","sampler2D"),t.fragment.uniforms.add("opacity","float"),t.varyings.add("vTexCoord","vec2"),e.output===i["a"].Alpha?t.fragment.code.add(d["a"]` void main() { discardBySlice(vpos); ${e.multipassTerrainEnabled?"terrainDepthTest(gl_FragCoord, depth);":""} float alpha = texture2D(tex, vTexCoord).a * opacity; if (alpha < ${d["a"].float(c["b"])}) { discard; } gl_FragColor = vec4(alpha); } `):(t.fragment.include(l["a"]),t.fragment.code.add(d["a"]` void main() { discardBySlice(vpos); ${e.multipassTerrainEnabled?"terrainDepthTest(gl_FragCoord, depth);":""} gl_FragColor = texture2D(tex, vTexCoord) * opacity; if (gl_FragColor.a < ${d["a"].float(c["b"])}) { discard; } gl_FragColor = highlightSlice(gl_FragColor, vpos); ${e.oitEnabled?"gl_FragColor = premultiplyAlpha(gl_FragColor);":""} } `)),t}const p=Object.freeze({__proto__:null,build:b})}}]); //# sourceMappingURL=chunk-ec210914.7371d5fa.js.map