/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.24/esri/copyright.txt for details. */ import{_ as e}from"../chunks/tslib.es6.js";import t from"../Color.js";import"../symbols.js";import{deprecatedProperty as i}from"../core/deprecate.js";import{clone as s}from"../core/lang.js";import r from"../core/Logger.js";import{schedule as o}from"../core/scheduling.js";import{toPt as n,px2pt as p}from"../core/screenUtils.js";import{property as l}from"../core/accessorSupport/decorators/property.js";import{getProperties as a}from"../core/accessorSupport/utils.js";import"../core/accessorSupport/ensureType.js";import{enumeration as u}from"../core/accessorSupport/decorators/enumeration.js";import{subclass as m}from"../core/accessorSupport/decorators/subclass.js";import{collectField as y,collectArcadeFieldNames as c}from"../layers/support/fieldUtils.js";import d from"./Renderer.js";import h from"./support/AuthoringInfo.js";import f from"./support/HeatmapColorStop.js";import{HeatmapLegendOptions as x}from"./support/HeatmapLegendOptions.js";import{kernelDensityRadiusPtToGaussianBlurRadiusPx as g,gaussianBlurRadiusPxToKernelDensityRadiusPt as w,MAGIC_KERNEL_DENSITY_RADIUS_INFLATION_FACTOR as b}from"./support/heatmapUtils.js";import j from"../symbols/SimpleMarkerSymbol.js";var D;const S=r.getLogger("esri.renderers.HeatmapRenderer");function v(e){if(null!=e){const{maxDensity:t,minDensity:i,radius:s}=e;if(null!=t||null!=i||null!=s){const{blurRadius:t,maxPixelIntensity:i,minPixelIntensity:s,...r}=e;return r}}return e}let I=D=class extends d{constructor(e){super(e),this.authoringInfo=null,this.colorStops=[new f({ratio:0,color:new t("rgba(255, 140, 0, 0)")}),new f({ratio:.75,color:new t("rgba(255, 140, 0, 1)")}),new f({ratio:.9,color:new t("rgba(255, 0, 0, 1)")})],this.field=null,this.fieldOffset=0,this.legendOptions=null,this.maxDensity=.04,this.minDensity=0,this.radius=18,this.referenceScale=0,this.type="heatmap",this.valueExpression=null,this.valueExpressionTitle=null,this._warnedProps={blurRadius:!1,maxPixelIntensity:!1,minPixelIntensity:!1}}normalizeCtorArgs(e){return v(e)}get blurRadius(){return g(this.radius)}set blurRadius(e){const t=this.maxPixelIntensity,i=this.minPixelIntensity;this._set("radius",w(e)),this._warnAboutDeprecatedGaussianBlurProp("blurRadius","radius"),this._set("maxDensity",t*this._pixelIntensityToDensity),this._set("minDensity",i*this._pixelIntensityToDensity)}get maxPixelIntensity(){return this.maxDensity/this._pixelIntensityToDensity}set maxPixelIntensity(e){this._set("maxDensity",e*this._pixelIntensityToDensity),this._warnAboutDeprecatedGaussianBlurProp("maxPixelIntensity","maxDensity")}get minPixelIntensity(){return this.minDensity/this._pixelIntensityToDensity}set minPixelIntensity(e){this._set("minDensity",e*this._pixelIntensityToDensity),this._warnAboutDeprecatedGaussianBlurProp("minPixelIntensity","minDensity")}get _pixelIntensityToDensity(){return 24/(b**2*this.blurRadius**4)}_warnAboutDeprecatedGaussianBlurProp(e,t){if(this._warnedProps[e])return;"user"===a(this).getDefaultOrigin()&&(this._warnedProps[e]=!0,o((()=>{i(S,e,{replacement:`${String(t)} (suggested value: ${this._get(t)})`,version:"4.24"})})))}read(e,t){e=v(e),super.read(e,t)}getSymbol(){const e=0!==this.referenceScale?5:1,t=Math.min(this.radius*e,p(256));return new j({size:t})}async getSymbolAsync(){return this.getSymbol()}getSymbols(){return[this.getSymbol()]}async collectRequiredFields(e,t){const i=this.field,s=this.valueExpression;i&&"string"==typeof i&&await y(e,t,i),s&&"string"==typeof s&&await c(e,t,s)}getAttributeHash(){return null}getMeshHash(){return`${JSON.stringify(this.colorStops)}.${this.blurRadius}.${this.field}`}clone(){return new D({colorStops:s(this.colorStops),field:this.field,legendOptions:s(this.legendOptions),maxDensity:this.maxDensity,minDensity:this.minDensity,radius:this.radius,referenceScale:this.referenceScale,valueExpression:this.valueExpression,valueExpressionTitle:this.valueExpressionTitle})}};e([l({type:h,json:{write:!1}})],I.prototype,"authoringInfo",void 0),e([l({type:Number,json:{origins:{"portal-item":{write:!0},"web-map":{write:!0}}}})],I.prototype,"blurRadius",null),e([l({type:[f],json:{write:!0}})],I.prototype,"colorStops",void 0),e([l({type:String,json:{write:!0}})],I.prototype,"field",void 0),e([l({type:Number,json:{write:{overridePolicy:(e,t,i)=>({enabled:null==i})},origins:{"web-scene":{write:!1}}}})],I.prototype,"fieldOffset",void 0),e([l({type:x,json:{write:!0}})],I.prototype,"legendOptions",void 0),e([l({type:Number,json:{write:!0}})],I.prototype,"maxDensity",void 0),e([l({type:Number,json:{origins:{"portal-item":{write:!0},"web-map":{write:!0}}}})],I.prototype,"maxPixelIntensity",null),e([l({type:Number,json:{write:!0}})],I.prototype,"minDensity",void 0),e([l({type:Number,json:{origins:{"portal-item":{write:!0},"web-map":{write:!0}}}})],I.prototype,"minPixelIntensity",null),e([l({type:Number,cast:n,json:{write:!0}})],I.prototype,"radius",void 0),e([l({type:Number,range:{min:0},json:{default:0,write:!0}})],I.prototype,"referenceScale",void 0),e([u({heatmap:"heatmap"})],I.prototype,"type",void 0),e([l({type:String,json:{write:!0,origins:{"web-document":{write:!1},"portal-item":{write:!1}}}})],I.prototype,"valueExpression",void 0),e([l({type:String})],I.prototype,"valueExpressionTitle",void 0),e([l({readOnly:!0})],I.prototype,"_pixelIntensityToDensity",null),I=D=e([m("esri.renderers.HeatmapRenderer")],I);const P=I;export{P as default};