UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

3 lines (2 loc) 3.02 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{__decorate as e}from"tslib";import{watch as r,sync as t}from"../../core/reactiveUtils.js";import{property as i,subclass as s}from"../../core/accessorSupport/decorators.js";import a from"../../graphic/AggregateGraphicOrigin.js";import n from"../support/AggregateField.js";import{featureReductionProperty as u}from"../support/featureReductionUtils.js";import{supportsFieldConfiguration as l}from"../support/layerUtils.js";import o from"../../renderers/SimpleRenderer.js";import c from"../../renderers/visualVariables/SizeVariable.js";import d from"../../renderers/visualVariables/support/SizeStop.js";import{createInferredClusterRenderer as f}from"../../views/2d/layers/support/clusterUtils.js";const p=p=>{const h=p;let m=class extends h{constructor(...e){super(...e),this.aggregateGraphicOrigin=new a(this),this.addHandles([r(()=>this.renderer,()=>{this.featureReduction&&this._setFeatureReduction(this.featureReduction)},t),r(()=>[this.loaded],()=>{this.loaded&&this._setLayerReference(this.featureReduction,this)})])}set featureReduction(e){this._setFeatureReduction(e)}set renderer(e){}_withClusterVariable(e,r,t){const i=e.clone();if("visualVariables"in i){i.visualVariables||(i.visualVariables=[]);i.visualVariables.some(e=>"size"===e.type)||i.visualVariables.push(new c({field:"cluster_count",stops:[new d({value:1}),new d({useMinValue:!0,size:r}),new d({useMaxValue:!0,size:t})]}))}return i}_normalizeFeatureReduction(e){if("cluster"!==e?.type)return e;const r=e.clone(),t=[new n({name:"cluster_count",alias:"cluster_count",isAutoGenerated:!0,statisticType:"count"})],i=(r.fields??[]).filter(e=>!e.isAutoGenerated),s=e.renderer&&!e.renderer.authoringInfo?.isAutoGenerated,{clusterMinSize:a,clusterMaxSize:u}=r;if(s){r.fields=[...t,...i];const e=this._withClusterVariable(r.renderer,a,u);return r.effectiveFeatureRenderer=e,r.effectiveClusterRenderer=e,r}if(e.symbol){if(r.fields=[...t,...i],r.renderer=null,!this.renderer)return r.effectiveFeatureRenderer=null,r.effectiveClusterRenderer=null,r;const s=f(t,this.renderer),n=this._withClusterVariable(s,a,u),l="visualVariables"in n&&n.visualVariables?n.visualVariables:[],c=new o({symbol:e.symbol,visualVariables:l});return r.fields=[...t,...i],r.effectiveFeatureRenderer=n,r.effectiveClusterRenderer=c,r}if(!this.renderer)return e;const l=f(t,this.renderer);r.fields=[...t,...i],r.renderer=l;const c=this._withClusterVariable(l,a,u);return r.effectiveFeatureRenderer=c,r.effectiveClusterRenderer=c,r}_setFeatureReduction(e){const r=this._get("featureReduction");this._setLayerReference(r,null);const t=this._normalizeFeatureReduction(e);this._setLayerReference(t,this),this._set("featureReduction",t)}_setLayerReference(e,r){e&&"layer"in e&&(e.layer=l(r)?r:null)}};return e([i({readOnly:!0,clonable:!1})],m.prototype,"aggregateGraphicOrigin",void 0),e([i(u)],m.prototype,"featureReduction",null),m=e([s("esri.layers.mixins.FeatureReductionLayer")],m),m};export{p as FeatureReductionLayer};