@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 5.37 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../Color.js";import{property as s}from"../../core/accessorSupport/decorators/property.js";import{cast as r}from"../../core/accessorSupport/decorators/cast.js";import"../../core/has.js";import"../../core/RandomLCG.js";import{subclass as i}from"../../core/accessorSupport/decorators/subclass.js";import{authoringInfoFirstVariableSliderMinMax as a}from"../../renderers/support/authoringInfoUtils.js";import o from"../../renderers/visualVariables/SizeVariable.js";import l from"../../renderers/visualVariables/support/SizeStop.js";import n from"./SmartMappingSliderBase.js";import p from"./SizeSlider/SizeSliderViewModel.js";import{getSizesFromVariable as d,getFillFromColor as m,getDynamicPathForSizeStops as u,getPathForSizeStops as h}from"./support/utils.js";import{globalCss as c}from"../support/globalCss.js";import{storeNode as v}from"../support/widgetUtils.js";import{messageBundle as g}from"../support/decorators/messageBundle.js";import{tsx as b}from"../support/jsxFactory.js";var f;const y="esri-size-slider",S={base:y,rampElement:`${y}__ramp`,sliderContainer:`${y}__slider-container`,histogramContainer:`${y}__histogram-container`,primaryHandle:`${y}--primary-handle`,track:`${y}--interactive-track`},z={trackFillColor:new t([149,149,149]),trackBackgroundColor:new t([224,224,224])};let w=f=class extends n{constructor(e,t){super(e,t),this._maxRampFillWidth=1,this._minRampFillWidth=.2,this._rampNode=null,this.messages=null,this.style={...z},this.viewModel=new p}get handlesSyncedToPrimary(){return this.viewModel.handlesSyncedToPrimary}set handlesSyncedToPrimary(e){this.viewModel.handlesSyncedToPrimary=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get persistSizeRangeEnabled(){return this.viewModel.persistSizeRangeEnabled}set persistSizeRangeEnabled(e){this.viewModel.persistSizeRangeEnabled=e}get primaryHandleEnabled(){return this.viewModel.primaryHandleEnabled}set primaryHandleEnabled(e){this.viewModel.primaryHandleEnabled=e}get stops(){return this.viewModel.stops}set stops(e){this.viewModel.stops=e}castStyle(e){return{...z,...e}}static fromRendererResult(e,t){const{visualVariables:s,statistics:r}=e,{avg:i,stddev:o}=r,n=s[0],[p,m]=d(n),[u,h]=a(e.renderer.authoringInfo);return new f({max:h,min:u,stops:[new l({value:n.minDataValue??void 0,size:m}),new l({value:n.maxDataValue??void 0,size:p})],histogramConfig:{average:i??void 0,standardDeviation:o??void 0,bins:t?t.bins:[]}})}updateFromRendererResult(e,t){const{visualVariables:s,statistics:r}=e,{avg:i,stddev:o}=r,l=s[0],[n,p]=d(l),[m,u]=a(e.renderer.authoringInfo);this.set({max:u,min:m,stops:[{value:l.minDataValue,size:p},{value:l.maxDataValue,size:n}],histogramConfig:{average:i,standardDeviation:o,bins:t?t.bins:[]}})}updateVisualVariable(e){const t=e.clone(),{stops:s}=this;if(!e||!s)return null;if(t.stops)return t.stops=s,t;const r=s[0],i=s[s.length-1];let a=t.maxSize,l=t.minSize;if(a instanceof o){const e=a.stops,t=i.size/e[0].size,s=e.map((e=>(e.size*=t,e)));a.stops=s}else a=i.size;if(l instanceof o){const e=l.stops,t=r.size/e[0].size,s=e.map((e=>(e.size*=t,e)));l.stops=s}else l=r.size;return t.set({maxDataValue:i.value,minDataValue:r.value,maxSize:a,minSize:l}),t}updateFromVisualVariable(e){if(!e)return;const{maxDataValue:t,minDataValue:s,stops:r}=e;if(r)this.stops=r;else{const[r,i]=d(e);this.stops=[new l({value:s??void 0,size:i}),new l({value:t??void 0,size:r})]}}render(){const{label:e,primaryHandleEnabled:t,state:s,visibleElements:r}=this,i="disabled"===s,a=this.classes(S.base,c.widget,c.panel,{[c.disabled]:i,[S.primaryHandle]:t,[S.track]:!!r.interactiveTrack});return b("div",{"aria-label":e,class:a},i?null:this.renderContent(this._renderRamp(),S.sliderContainer,S.histogramContainer))}_renderRamp(){const{style:{trackBackgroundColor:e},zoomOptions:t}=this;return b("div",{afterCreate:v,bind:this,class:S.rampElement,"data-node-ref":"_rampNode"},b("svg",{key:"ramp-svg",xmlns:"http://www.w3.org/2000/svg"},b("rect",{fill:m(e),height:"100%",width:"100%",x:"0",y:"0"}),this._renderPath()),t?this.renderZoomCaps():null)}_renderPath(){if(!this._rampNode)return;const{offsetHeight:e=0,offsetWidth:t=0}=this._rampNode;if(null==e||null==t)return;const{primaryHandleEnabled:s,stops:r,style:{trackFillColor:i},values:a,viewModel:{max:o,min:l},_maxRampFillWidth:n,_minRampFillWidth:p}=this,d=[n,p];r[0].size<r[r.length-1].size&&d.reverse();const c=a.slice().sort(((e,t)=>e>t?1:-1)),[v,g]=d,[f,y]=c,S=s?u({max:o,min:l,pathHeight:e,pathWidth:t,stops:r,padding:g}):h({bottomValue:f,bottomWidth:v,max:o,min:l,pathHeight:e,pathWidth:t,topValue:y,topWidth:g});return b("path",{d:S,fill:m(i)})}};e([s()],w.prototype,"handlesSyncedToPrimary",null),e([s()],w.prototype,"label",null),e([s(),g("esri/widgets/smartMapping/SizeSlider/t9n/SizeSlider")],w.prototype,"messages",void 0),e([s()],w.prototype,"persistSizeRangeEnabled",null),e([s()],w.prototype,"primaryHandleEnabled",null),e([s()],w.prototype,"stops",null),e([s()],w.prototype,"style",void 0),e([r("style")],w.prototype,"castStyle",null),e([s({type:p})],w.prototype,"viewModel",void 0),w=f=e([i("esri.widgets.smartMapping.SizeSlider")],w);const V=w;export{V as default};