// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define(["../../core/Error","./support/utils","../support/binningUtils","../support/utils","../support/adapters/support/layerUtils"],function(d,f,g,h,e){async function k(a){if(!a?.layer||!a.field&&!a.valueExpression)throw new d("unique-values:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");var b=a.valueExpression||a.sqlExpression,c=b&&!a.sqlExpression;if(b)if(c){if(!a.view)throw new d("unique-values:missing-parameters","View is required when 'valueExpression' is specified"); }else if(!a.valueExpression)throw new d("unique-values:missing-parameters","'valueExpression' parameters are required");a.forBinning&&g.verifyBinningParams(a,"unique-values");const {layer:l,...m}=a;c=a.forBinning?e.binningCapableLayerTypes:e.defaultSupportedLayerTypes;b=e.createLayerAdapter(l,c,a.forBinning);if(!b)throw new d("unique-values:invalid-parameters","'layer' must be one of these types: "+e.getLayerTypeLabels(c).join(", "));a={layerAdapter:b,...m};await b.load(null!=a.signal?{signal:a.signal}: null);c=await h.getFieldsList({field:a.field,field2:a.field2,field3:a.field3,valueExpression:a.valueExpression});if(b=f.verifyBasicFieldValidity(b,c,"unique-values:invalid-parameters"))throw b;if(b=f.verifyFilterValidty(a.filter,"summary-statistics:invalid-parameters"))throw b;return a}return async function(a){const {layerAdapter:b,...c}=await k(a);return b.uniqueValues(c)}});