// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("../../chunks/tslib.es6 ../../Color ../../core/Accessor ../../core/arrayUtils ../../core/asyncUtils ../../core/has ../../core/maybe ../../core/promiseUtils ../../core/reactiveUtils ../../core/screenUtils ../../core/timeUtils ../../core/accessorSupport/decorators/property ../../core/Logger ../../core/accessorSupport/decorators/subclass ../../core/libs/gl-matrix-2/factories/vec3f64 ../../views/3d/support/earthUtils ../../views/3d/support/sunUtils ../../views/3d/webgl-engine/shaders/ShadowCastVisualizeTechniqueConfiguration ./DiscreteOptions ./DurationMode ./DurationOptions ./ShadowCastState ./ShadowTooltipViewModel ./ShadowVisualizationType ./ThresholdOptions ../support/traversalUtils".split(" "), function(c,q,b,D,E,P,v,w,h,x,m,d,Q,F,G,H,I,r,y,J,z,t,K,l,A,L){function p(a,e){null!=a&&null!=e&&a.setParameters({shadowCast:e})}function u(a){if(a.suspended)return!1;switch(a.type){case "building-scene-3d":case "csv-3d":case "elevation-3d":case "feature-3d":case "geojson-3d":case "graphics-3d":case "integrated-mesh-3d":case "integrated-mesh-3dtiles":case "ogc-feature-3d":case "route-3d":case "scene-layer-3d":case "scene-layer-graphics-3d":case "stream-3d":case "wms-3d":return!0;case "base-dynamic-3d":case "catalog-3d":case "catalog-footprint-3d":case "catalog-dynamic-group-3d":case "dimension-3d":case "imagery-3d":case "imagery-tile-3d":case "line-of-sight-3d":case "map-image-3d":case "point-cloud-3d":case "tile-3d":case "vector-tile-3d":case "voxel-3d":case "wfs-3d":case "wmts-3d":case "media-3d":return!1; case "group":return a.layerViews.toArray().some(e=>u(e));default:return!1}}const B=[],M=G.create(),C=[],N=m.convertTime(1,"hours","milliseconds");b=class extends b{constructor(a){super(a);this.view=null;this.tooltip=new K.ShadowTooltipViewModel({getDuration:(e,f)=>this.getDuration(e,f)});this.startTimeOfDay=m.convertTime(10,"hours","milliseconds");this.endTimeOfDay=m.convertTime(16,"hours","milliseconds");this.visualizationType=l.ShadowVisualizationType.Threshold;this.thresholdOptions=new A;this.durationOptions= new z;this.discreteOptions=new y;this._running=!0;this._stopPreviewingTask=null;this._forcePreview=!1;this._autoRestoreForcePreviewEnabled=!0;this._utcOffset=null;this.date=new Date}initialize(){this.addHandles([h.watch(()=>({view:this.view,tooltipEnabled:this._tooltipEnabled}),({view:a,tooltipEnabled:e})=>{this.tooltip.view=a;this.tooltip.enabled=e},h.syncAndInitial),h.watch(()=>this._forcePreviewDependencies,()=>{v.abortMaybe(this._stopPreviewingTask);this._forcePreview=!0;this._autoRestoreForcePreviewEnabled&& (this._stopPreviewingTask=E.createTask(async a=>{await w.after(500,a);w.throwIfAborted(a);this._forcePreview=!1}))},h.syncAndInitial),h.watch(()=>({renderer:this.renderer,parameters:this._visualizationParameters}),a=>p(a.renderer,a.parameters),h.syncAndInitial),h.watch(()=>({renderer:this.renderer,parameters:{lightDirections:this._lightDirections}}),a=>p(a.renderer,a.parameters),h.syncAndInitial),h.watch(()=>({renderer:this.renderer,parameters:{enabled:this._running}}),a=>p(a.renderer,a.parameters), h.syncAndInitial),h.watch(()=>({renderer:this.renderer,parameters:{previewing:this._previewing}}),a=>p(a.renderer,a.parameters),h.syncAndInitial)])}destroy(){this.stop();p(this.renderer,{enabled:!1});v.destroyMaybe(this.tooltip)}get state(){return null!=this.view&&this.view.ready&&null!=this._referencePosition?t.ShadowCastState.Ready:t.ShadowCastState.Disabled}set date(a){a=new Date(a);a.setHours(0,0,0,0);this._set("date",a)}get utcOffset(){return this._utcOffset??this._utcOffsetAuto}set utcOffset(a){this._utcOffset= a}get testData(){}get _previewing(){const {view:a}=this;return null==a?.allLayerViews?!0:this._forcePreview||!a.stationary||a.allLayerViews.some(e=>u(e)&&e.updating)}get _utcOffsetAuto(){const a=this._referencePosition;return null!=a?H.longitudeToTimezone(a[0],!1):0}get _dateUTCOffset(){let a=this.date;a=m.offsetDateUTC(a,-a.getTimezoneOffset(),"minutes");return a=m.offsetDateUTC(a,-this.utcOffset,"hours")}get _startDateTimeUTC(){return m.offsetDateUTC(this._dateUTCOffset,this.startTimeOfDay)}get _endDateTimeUTC(){return m.offsetDateUTC(this._dateUTCOffset, this.endTimeOfDay)}get _referencePosition(){return this.view?.environmentManager?.referencePositionGeographic}get _interval(){const a=0g.layer).filter(D.isSome);a=f.map(g=>g.visible);const n=k.map(g=>g.visible),O=k.map(g=>g.opacity);k=k.filter(g=>"definitionExpression"in g).map(g=>g.definitionExpression);f=f.filter(g=>"filter"in g).map(g=>g.filter);return{slicePlane:e,startDateUTC:this._startDateTimeUTC,endDateUTC:this._endDateTimeUTC,layerViewVisibilities:a,layerVisibilities:n,layerOpacities:O,filters:f,definitionExpressions:k}}get renderer(){var {view:a}=this;if(null== a)return null;a=a._stage;return null==a?null:a.renderer}start(){this.setRunning(!0)}stop(){this.setRunning(!1)}setRunning(a){this._running=a}async getDuration(a,e){const {view:f,renderer:k}=this;if(null==f||null==k)return 0;a=f.state.camera.screenToRender(x.createScreenPointArray(a.x,a.y),x.createRenderScreenPointArray());a=k.readAccumulatedShadow(a);e=this._sampleCount;return 0===e?0:this._duration/e*e*a}};c.__decorate([d.property()],b.prototype,"state",null);c.__decorate([d.property()],b.prototype, "view",void 0);c.__decorate([d.property()],b.prototype,"tooltip",void 0);c.__decorate([d.property({nonNullable:!0})],b.prototype,"date",null);c.__decorate([d.property({nonNullable:!0})],b.prototype,"utcOffset",null);c.__decorate([d.property({nonNullable:!0})],b.prototype,"startTimeOfDay",void 0);c.__decorate([d.property({nonNullable:!0})],b.prototype,"endTimeOfDay",void 0);c.__decorate([d.property({nonNullable:!0})],b.prototype,"visualizationType",void 0);c.__decorate([d.property({type:A,nonNullable:!0})], b.prototype,"thresholdOptions",void 0);c.__decorate([d.property({type:z,nonNullable:!0})],b.prototype,"durationOptions",void 0);c.__decorate([d.property({type:y,nonNullable:!0})],b.prototype,"discreteOptions",void 0);c.__decorate([d.property()],b.prototype,"_running",void 0);c.__decorate([d.property()],b.prototype,"_stopPreviewingTask",void 0);c.__decorate([d.property()],b.prototype,"_forcePreview",void 0);c.__decorate([d.property()],b.prototype,"_autoRestoreForcePreviewEnabled",void 0);c.__decorate([d.property()], b.prototype,"_previewing",null);c.__decorate([d.property()],b.prototype,"_utcOffset",void 0);c.__decorate([d.property()],b.prototype,"_utcOffsetAuto",null);c.__decorate([d.property()],b.prototype,"_dateUTCOffset",null);c.__decorate([d.property()],b.prototype,"_startDateTimeUTC",null);c.__decorate([d.property()],b.prototype,"_endDateTimeUTC",null);c.__decorate([d.property()],b.prototype,"_referencePosition",null);c.__decorate([d.property()],b.prototype,"_interval",null);c.__decorate([d.property()], b.prototype,"_sampleCount",null);c.__decorate([d.property()],b.prototype,"_duration",null);c.__decorate([d.property()],b.prototype,"_lightDirections",null);c.__decorate([d.property()],b.prototype,"_tooltipEnabled",null);c.__decorate([d.property()],b.prototype,"_visualizationParameters",null);c.__decorate([d.property()],b.prototype,"_thresholdVisualizationParameters",null);c.__decorate([d.property()],b.prototype,"_durationVisualizationParameters",null);c.__decorate([d.property()],b.prototype,"_discreteVisualizationParameters", null);c.__decorate([d.property()],b.prototype,"_forcePreviewDependencies",null);c.__decorate([d.property()],b.prototype,"renderer",null);return b=c.__decorate([F.subclass("esri.widgets.ShadowCast.ShadowCastViewModel")],b)});