UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 2.45 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{_ as e}from"../../../chunks/tslib.es6.js";import{debounce as t}from"../../../core/promiseUtils.js";import{when as a}from"../../../core/reactiveUtils.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import"../../../core/Logger.js";import"../../../core/RandomLCG.js";import{subclass as r}from"../../../core/accessorSupport/decorators/subclass.js";import s from"./DynamicLayerView3D.js";import o from"../../layers/ImageryLayerView.js";let n=class extends(o(s)){constructor(){super(...arguments),this.type="imagery-3d",this.redrawDebounced=t((async e=>{this.redraw(((e,t)=>this._redrawImage(e,t)),e)}),2e3)}get highlightOptions(){return null}get pixelData(){return null}initialize(){this.addHandles([a((()=>this.view.basemapTerrain.ready),(()=>this._initializeMaximumDataResolution()),{once:!0,initial:!0}),this.layer.on("redraw",(()=>this._updatingHandles.addPromise(this.redrawDebounced())))]),this._updatingHandles.add((()=>this.layer?.exportImageServiceParameters?.version),(()=>{this._updatingHandles.addPromise(this.refreshDebounced())})),this._updatingHandles.add((()=>this.layer?.renderer),(()=>{this._updatingHandles.addPromise(this.refreshDebounced())})),this._updatingHandles.add((()=>this.timeExtent),(()=>this._updatingHandles.addPromise(this.refreshDebounced())))}_initializeMaximumDataResolution(){this.maximumDataResolution=this.layer.loaded?this.layer.serviceRasterInfo.pixelSize:null}getFetchOptions(){return{timeExtent:this.timeExtent}}async processResult(e,t,a){t.imageOrCanvasElement?e.image=t.imageOrCanvasElement:(e.image=document.createElement("canvas"),e.pixelData=t.pixelData,await this._redrawImage(e,a))}async _redrawImage(e,t){if(!(e.image instanceof HTMLCanvasElement)||null==e.pixelData)throw new Error;const a=e.image,i=a.getContext("2d"),r=await this.layer.applyRenderer(e.pixelData,{signal:t}),s=this.layer.applyFilter(r).pixelBlock;if(null==s)throw new Error;a.width=s.width,a.height=s.height;const o=i.createImageData(s.width,s.height);o.data.set(s.getAsRGBA()),i.putImageData(o,0,0)}highlight(e){throw new Error("Not implemented")}};e([i()],n.prototype,"highlightOptions",null),e([i()],n.prototype,"pixelData",null),n=e([r("esri.views.3d.layers.ImageryLayerView3D")],n);const l=n;export{l as default};