// 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 ../symbols ../core/jsonMap ../core/lang ../core/Logger ../core/accessorSupport/decorators/property ../core/accessorSupport/decorators/cast ../core/accessorSupport/decorators/enumeration ../core/accessorSupport/decorators/reader ../core/accessorSupport/decorators/subclass ../core/accessorSupport/decorators/writer ../core/accessorSupport/ensureType ../layers/support/fieldUtils ./Renderer ./mixins/VisualVariablesMixin ./support/ClassBreakInfo ./support/commonProperties ./support/LegendOptions ../support/arcadeOnDemand".split(" "), function(f,y,l,n,q,g,z,A,B,C,D,t,u,e,E,r,w,F,x){var v;l=new l.JSONMap({esriNormalizeByLog:"log",esriNormalizeByPercentOfTotal:"percent-of-total",esriNormalizeByField:"field"});const G=t.ensureType(r);e=v=class extends E.VisualVariablesMixin(e){constructor(a){super(a);this._compiledValueExpression={valueExpression:null,compiledFunction:null};this.field=this.defaultSymbol=this.defaultLabel=this.classBreakInfos=this.backgroundFillSymbol=null;this.isMaxInclusive=!0;this.normalizationTotal=this.normalizationField= this.legendOptions=null;this.type="class-breaks";this.valueExpressionTitle=this.valueExpression=null;this._set("classBreakInfos",[])}readClassBreakInfos(a,b,c){if(Array.isArray(a)){var d=b.minValue;return a.map(h=>{const k=new r;k.read(h,c);null==k.minValue&&(k.minValue=d);null==k.maxValue&&(k.maxValue=k.minValue);d=k.maxValue;return k})}}writeClassBreakInfos(a,b,c,d){a=a.map(h=>h.write({},d));this._areClassBreaksConsecutive()&&a.forEach(h=>delete h.classMinValue);b[c]=a}castField(a){return null== a?a:"function"===typeof a?(q.getLogger(this).error(".field: field must be a string value"),null):t.ensureString(a)}get minValue(){return this.classBreakInfos&&this.classBreakInfos[0]&&this.classBreakInfos[0].minValue||0}get normalizationType(){let a=this._get("normalizationType");const b=!!this.normalizationField,c=null!=this.normalizationTotal;if(b||c)a=b&&"field"||c&&"percent-of-total"||null,b&&c&&q.getLogger(this).warn("warning: both normalizationField and normalizationTotal are set!");else if("field"=== a||"percent-of-total"===a)a=null;return a}set normalizationType(a){this._set("normalizationType",a)}addClassBreakInfo(a,b,c){let d=null;d="number"===typeof a?new r({minValue:a,maxValue:b,symbol:y.ensureType(c)}):G(n.clone(a));this.classBreakInfos.push(d);1===this.classBreakInfos.length&&this.notifyChange("minValue")}removeClassBreakInfo(a,b){const c=this.classBreakInfos.length;for(let d=0;d{b.symbol&&a.push(b.symbol)});this.defaultSymbol&& a.push(this.defaultSymbol);return a}getAttributeHash(){return this.visualVariables&&this.visualVariables.reduce((a,b)=>a+b.getAttributeHash(),"")}getMeshHash(){const a=JSON.stringify(this.backgroundFillSymbol),b=JSON.stringify(this.defaultSymbol),c=`${this.normalizationField}.${this.normalizationType}.${this.normalizationTotal}`,d=this.classBreakInfos.reduce((h,k)=>h+k.getMeshHash(),"");return`${a}.${b}.${d}.${c}.${this.field}.${this.valueExpression}`}get arcadeRequired(){return this.arcadeRequiredForVisualVariables|| !!this.valueExpression}clone(){return new v({field:this.field,backgroundFillSymbol:this.backgroundFillSymbol?.clone(),defaultLabel:this.defaultLabel,defaultSymbol:this.defaultSymbol?.clone(),valueExpression:this.valueExpression,valueExpressionTitle:this.valueExpressionTitle,classBreakInfos:n.clone(this.classBreakInfos),isMaxInclusive:this.isMaxInclusive,normalizationField:this.normalizationField,normalizationTotal:this.normalizationTotal,normalizationType:this.normalizationType,visualVariables:n.clone(this.visualVariables), legendOptions:n.clone(this.legendOptions),authoringInfo:n.clone(this.authoringInfo)})}async collectRequiredFields(a,b){a=[this.collectVVRequiredFields(a,b),this.collectSymbolFields(a,b)];await Promise.all(a)}async collectSymbolFields(a,b){const c=[...this.getSymbols().map(d=>d.collectRequiredFields(a,b)),u.collectArcadeFieldNames(a,b,this.valueExpression)];u.collectField(a,b,this.field);u.collectField(a,b,this.normalizationField);await Promise.all(c)}_getBreakIndexForExpression(a,b){const {viewingMode:c, scale:d,spatialReference:h,arcade:k,timeZone:H}=b??{};({valueExpression:b}=this);var m=this._compiledValueExpression.valueExpression===b?this._compiledValueExpression.compiledFunction:null;const p=k.arcadeUtils;m||(m=p.createSyntaxTree(b),m=p.createFunction(m),this._compiledValueExpression.compiledFunction=m);this._compiledValueExpression.valueExpression=b;a=p.executeFunction(m,p.createExecContext(a,p.getViewInfo({viewingMode:c,scale:d,spatialReference:h}),H));return this._getBreakIndexfromInfos(a)}_getBreakIndexForField(a){var b= a.attributes;a=this.normalizationType;let c=parseFloat(b[this.field]);if(a){const d=this.normalizationTotal;b=parseFloat(this.normalizationField?b[this.normalizationField]:void 0);if("log"===a)c=Math.log(c)*Math.LOG10E;else if("percent-of-total"===a&&null!=d&&!isNaN(d))c=c/d*100;else if("field"===a&&!isNaN(b)){if(isNaN(c)||isNaN(b))return-1;c/=b}}return this._getBreakIndexfromInfos(c)}_getBreakIndexfromInfos(a){const b=this.isMaxInclusive;if(null!=a&&"number"===typeof a&&!isNaN(a))for(let c=0;ct.ensureNumber(a), json:{write:!0}})],e.prototype,"normalizationTotal",void 0);f.__decorate([g.property({type:l.apiValues,value:null,json:{type:l.jsonValues,read:l.read,write:l.write}})],e.prototype,"normalizationType",null);f.__decorate([A.enumeration({classBreaks:"class-breaks"})],e.prototype,"type",void 0);f.__decorate([g.property({type:String,json:{write:!0}})],e.prototype,"valueExpression",void 0);f.__decorate([g.property({type:String,json:{write:!0}})],e.prototype,"valueExpressionTitle",void 0);return e=v=f.__decorate([C.subclass("esri.renderers.ClassBreaksRenderer")], e)});