// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define(["exports","../rest/support/ClassBreaksDefinition","../rest/support/generateRendererUtils"],function(l,J,K){function r(a){return null==a||"string"===typeof a&&!a?"\x3cNull\x3e":a}function z(a){const b=null!=a.minValue||null!=a.maxValue,c=!!a.sqlExpression&&a.supportsSQLExpression;return!(null!=a.normalizationField||null!=a.normalizationType)&&!b&&!c}function A(a){const {values:b,useSampleStdDev:c,supportsNullCount:d}=a;var e=Number.POSITIVE_INFINITY;let g=Number.NEGATIVE_INFINITY,f=null,k= null;var h=null;let p=null,m=0;const q=null==a.minValue?-Infinity:a.minValue,t=null==a.maxValue?Infinity:a.maxValue;for(const n of b)Number.isFinite(n)?n>=q&&n<=t&&(f=null===f?n:f+n,e=Math.min(e,n),g=Math.max(g,n),m++):"string"===typeof n&&m++;if(m&&null!=f){k=f/m;h=0;for(const n of b)Number.isFinite(n)&&n>=q&&n<=t&&(h+=(n-k)**2);p=c?1null!=m).sort((m,q)=>f(m,q));if(0===a.length)return null;if(0>=d)return a[0];if(1<=d)return a[a.length-1];var k=(a.length-1)*d,h=Math.floor(k);b=h+1;k%=1;h=a[h];const p=a[b];return b>=a.length||g||"string"===typeof h||"string"===typeof p?h:h*(1-k)+p*k}function B(a,b){if(a){if(L.has(a))return b?C:D;if(M.has(a))return x(b,!1);if("esriFieldTypeTimestampOffset"=== a)return b?N:O;const g=x(b,!0);if("esriFieldTypeString"===a)return g;if("esriFieldTypeGUID"===a||"esriFieldTypeGlobalID"===a)return(f,k)=>g(E(f),E(k))}const c=b?1:-1,d=b?C:D,e=x(b,!0);return(g,f)=>"number"===typeof g&&"number"===typeof f?d(g,f):"string"===typeof g&&"string"===typeof f?e(g,f):c}function x(a,b){if(!b)return a?P:Q;const c=a?u:v;return a?(d,e)=>{const g=c(d,e);if(null!=g)return g;d=d.toUpperCase();e=e.toUpperCase();return d>e?-1:d{const g=c(d,e);if(null!=g)return g;d=d.toUpperCase(); e=e.toUpperCase();return de?1:0}}function E(a){return a.substr(24,12)+a.substr(19,4)+a.substr(16,2)+a.substr(14,2)+a.substr(11,2)+a.substr(9,2)+a.substr(6,2)+a.substr(4,2)+a.substr(2,2)+a.substr(0,2)}function y(a){return"coded-value"!==a?.type?[]:a.codedValues.map(b=>b.code)}function F(a,b){const c=G({field:b.field,normalizationType:b.normalizationType,normalizationField:b.normalizationField,classificationMethod:b.classificationMethod,standardDeviationInterval:b.standardDeviationInterval, breakCount:b.numClasses||5});a=R(a,b.minValue,b.maxValue);return K.createGenerateRendererClassBreaks({definition:c,values:a,normalizationTotal:b.normalizationTotal})}function R(a,b,c){const d=null==b?-Infinity:b,e=null==c?Infinity:c;return a.filter(g=>Number.isFinite(g)&&g>=d&&g<=e)}function G(a){const {breakCount:b,field:c,normalizationField:d,normalizationType:e}=a,g=a.classificationMethod||"equal-interval";return new J({breakCount:b,classificationField:c,classificationMethod:g,normalizationField:"field"=== e?d:void 0,normalizationType:e,standardDeviationInterval:"standard-deviation"===g?a.standardDeviationInterval||1:void 0})}function S(a,b){const {field:c,classificationMethod:d,standardDeviationInterval:e,normalizationType:g,normalizationField:f,normalizationTotal:k,minValue:h,maxValue:p}=b,m=b.numBins||10;let q=b=null,t=null;d&&"equal-interval"!==d||g?({classBreaks:a}=F(a,{field:c,normalizationType:g,normalizationField:f,normalizationTotal:k,classificationMethod:d,standardDeviationInterval:e,minValue:h, maxValue:p,numClasses:m}),b=a[0].minValue,q=a[a.length-1].maxValue,t=a.map(n=>[n.minValue,n.maxValue])):(null!=h&&null!=p?(b=h,q=p):(a=A({values:a,minValue:h,maxValue:p,useSampleStdDev:!g,supportsNullCount:z({normalizationType:g,normalizationField:f,minValue:h,maxValue:p})}),b=a.min??null,q=a.max??null),t=H(b??0,q??0,m));return{min:b,max:q,intervals:t}}function T(a,b){let c=-1;for(let d=a.length-1;0<=d;d--)if(b>=a[d][0]){c=d;break}return c}function H(a,b,c){const d=(b-a)/c,e=[];let g;for(let f=1;f<= c;f++)g=a+d,g=Number(g.toFixed(16)),e.push([a,f===c?b:g]),a=g;return e}const U=/\s*(\+|-)?((\d+(\.\d+)?)|(\.\d+))\s*/gi,L=new Set("esriFieldTypeDate esriFieldTypeInteger esriFieldTypeSmallInteger esriFieldTypeSingle esriFieldTypeDouble esriFieldTypeLong esriFieldTypeOID esriFieldTypeBigInteger".split(" ")),M=new Set(["esriFieldTypeTimeOnly","esriFieldTypeDateOnly"]),I="min max avg stddev count sum variance nullcount median".split(" "),u=(a,b)=>null==a?null==b?0:1:null==b?-1:null,v=(a,b)=>null==a? null==b?0:-1:null==b?1:null,O=(a,b)=>v(a,b)??(a===b?0:(new Date(a)).getTime()-(new Date(b)).getTime()),N=(a,b)=>u(a,b)??(a===b?0:(new Date(b)).getTime()-(new Date(a)).getTime()),Q=(a,b)=>v(a,b)??(a===b?0:au(a,b)??(a===b?0:au(a,b)??b-a,D=(a,b)=>v(a,b)??a-b;l.calculateClassBreaks=F;l.calculateHistogram=function(a,b){var c=S(a,b);if(null==c.min&&null==c.max)return{bins:[],minValue:c.min,maxValue:c.max,normalizationTotal:b.normalizationTotal};const d=c.intervals,e= c.min??0;c=c.max??0;const g=d.map((f,k)=>({minValue:d[k][0],maxValue:d[k][1],count:0}));for(const f of a)null!=f&&f>=e&&f<=c&&(a=T(d,f),-1null!=e).sort();const d=c.length;c={count:d,min:c[0],max:c[d-1]};a.supportsNullCount&&(c.nullcount=b.length- d);a.percentileParams&&(c.median=w(b,a.percentileParams));return c};l.calculateUniqueValuesCount=function(a){const b={};for(let c of a){if(null==c||"string"===typeof c&&""===c.trim())c=null;null==b[c]?b[c]={count:1,data:c}:b[c].count++}return{count:b}};l.createClassBreaksDefinition=G;l.createUVResult=function(a,b,c,d){a=a.count;const e=[];if(c&&b){c=[];var g=y(b[0]);for(const f of g)if(b[1]){g=y(b[1]);for(const k of g)if(b[2]){g=y(b[2]);for(const h of g)c.push(`${r(f)}${d}${r(k)}${d}${r(h)}`)}else c.push(`${r(f)}${d}${r(k)}`)}else c.push(f); for(const f of c)a.hasOwnProperty(f)||(a[f]={data:f,count:0})}for(const f in a)b=a[f],e.push({value:b.data,count:b.count,label:b.label});return{uniqueValueInfos:e}};l.getAttributeComparator=B;l.getEqualIntervalBins=H;l.getNormalizedValue=function(a,b,c,d){let e=null;switch(b){case "log":0!==a&&(e=Math.log(a)*Math.LOG10E);break;case "percent-of-total":Number.isFinite(d)&&0!==d&&(e=a/d*100);break;case "field":Number.isFinite(c)&&0!==c&&(e=a/c);break;case "natural-log":0{null!=a[d]&&(a[d]=Math.ceil(a[d]??0))});return a};l.resolveCBResult=function(a,b){let c=a.classBreaks;const d=c[0]?.minValue,e=c[c.length-1]?.maxValue,g="standard-deviation"===b;c=c.map(f=>{const k=f.label;f={minValue:f.minValue,maxValue:f.maxValue,label:k};if(g&& k){const h=k.match(U)?.map(p=>+p.trim())??[];2===h.length?(f.minStdDev=h[0],f.maxStdDev=h[1],0>h[0]&&0