/*
All material copyright Esri, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/5.0/esri/copyright.txt for details.
*/
import{__decorate as e}from"tslib";import{debounce as a}from"../../../core/promiseUtils.js";import{when as i}from"../../../core/reactiveUtils.js";import{subclass as t}from"../../../core/accessorSupport/decorators.js";import r from"./DrapedSubView3D.js";let s=class extends r{constructor(e){super(e),this.redrawDebounced=a(async e=>{this.redraw((e,a)=>this._redrawImage(e,a),e)},2e3)}initialize(){this.addHandles([i(()=>this.view.groundView.ready,()=>this._initializeMaximumDataResolution(),{once:!0,initial:!0}),this.layer.on("redraw",()=>this.updatingHandles.addPromise(this.redrawDebounced()))])}_initializeMaximumDataResolution(){this.maximumDataResolution=this.layer.loaded?this.layer.serviceRasterInfo.pixelSize:null}async processResult(e,a,i){a.imageOrCanvasElement?e.image=a.imageOrCanvasElement:(e.image=document.createElement("canvas"),e.pixelData=a.pixelData,await this._redrawImage(e,i))}async _redrawImage(e,a){if(!(e.image instanceof HTMLCanvasElement)||null==e.pixelData)throw new Error;const i=e.image,t=i.getContext("2d"),r=await this.layer.applyRenderer(e.pixelData,{signal:a}),s=this.layer.applyFilter(r).pixelBlock;if(null==s)throw new Error;i.width=s.width,i.height=s.height;const o=t.createImageData(s.width,s.height);o.data.set(s.getAsRGBA()),t.putImageData(o,0,0)}};s=e([t("esri.views.3d.layers.ImagerySubView3D")],s);export{s as default};
