@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 5.55 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/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 c}from"./support/utils.js";import{globalCss as h}from"../support/globalCss.js";import{storeNode as v}from"../support/widgetUtils.js";import{messageBundle as g}from"../support/decorators/messageBundle.js";import{tsx as z}from"../support/jsxFactory.js";var b;const f="esri-size-slider",y={base:f,rampElement:`${f}__ramp`,sliderContainer:`${f}__slider-container`,histogramContainer:`${f}__histogram-container`,zoomCapTop:`${f}__zoom-cap-top`,zoomCapBottom:`${f}__zoom-cap-bottom`,zoomCapLine:`${f}__zoom-cap-line`,zoomCapMask:`${f}__zoom-cap-mask`,zoomCapUnderline:`${f}__zoom-cap-underline`,primaryHandle:`${f}--primary-handle`,track:`${f}--interactive-track`},S={trackFillColor:new t([149,149,149]),trackBackgroundColor:new t([224,224,224])};let w=b=class extends n{constructor(e,t){super(e,t),this._maxRampFillWidth=1,this._minRampFillWidth=.2,this._rampNode=null,this.messages=null,this.style={...S},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{...S,...e}}static fromRendererResult(e,t){const{visualVariables:s,statistics:r}=e,{avg:i,stddev:o}=r,n=s[0],[p,m]=d(n),[u,c]=a(e.renderer.authoringInfo);return new b({max:c,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(y.base,h.widget,h.panel,{[h.disabled]:i,[y.primaryHandle]:t,[y.track]:!!r.interactiveTrack});return z("div",{"aria-label":e,class:a},i?null:this.renderContent(this._renderRamp(),y.sliderContainer,y.histogramContainer))}_renderRamp(){const{style:{trackBackgroundColor:e},zoomOptions:t}=this;return z("div",{afterCreate:v,bind:this,class:y.rampElement,"data-node-ref":"_rampNode"},z("svg",{key:"ramp-svg",xmlns:"http://www.w3.org/2000/svg"},z("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 h=a.slice().sort(((e,t)=>e>t?1:-1)),[v,g]=d,[b,f]=h,y=s?u({max:o,min:l,pathHeight:e,pathWidth:t,stops:r,padding:g}):c({bottomValue:b,bottomWidth:v,max:o,min:l,pathHeight:e,pathWidth:t,topValue:f,topWidth:g});return z("path",{d:y,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=b=e([i("esri.widgets.smartMapping.SizeSlider")],w);const _=w;export{_ as default};