UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 4.07 kB
import{_ as e}from"../../chunks/tslib.es6.js";import r from"../../Color.js";import{isNone as s}from"../../core/maybe.js";import{property as t}from"../../core/accessorSupport/decorators/property.js";import{cast as i}from"../../core/accessorSupport/decorators/cast.js";import"../../core/arrayUtils.js";import{subclass as a}from"../../core/accessorSupport/decorators/subclass.js";import o from"../../renderers/support/ClassBreakInfo.js";import{SmartMappingSliderBase as l}from"./SmartMappingSliderBase.js";import n from"./ClassedSizeSlider/ClassedSizeSliderViewModel.js";import{getFillFromColor as m}from"./support/utils.js";import{storeNode as d}from"../support/widgetUtils.js";import{messageBundle as p}from"../support/decorators/messageBundle.js";import{tsx as c}from"../support/jsxFactory.js";var h;const u="esri-classed-size-slider",b={base:u,rampElement:`${u}__ramp`,sliderContainer:`${u}__slider-container`,histogramContainer:`${u}__histogram-container`,track:`${u}--interactive-track`,esriWidget:"esri-widget",esriWidgetPanel:"esri-widget--panel",widgetIcon:"esri-icon-edit",disabled:"esri-disabled"},g={trackFillColor:new r([149,149,149]),trackBackgroundColor:new r([224,224,224])};let k=h=class extends l{constructor(e,r){super(e,r),this._rampNode=null,this.messages=null,this.style={...g},this.viewModel=new n}get breaks(){return this.viewModel.breaks}set breaks(e){this.viewModel.breaks=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}castStyle(e){return{...g,...e}}static fromRendererResult(e,r){const{renderer:{classBreakInfos:s}}=e,t=s.map((e=>{const r=e.symbol;let s;switch(r.type){case"simple-line":s=r.width;break;case"simple-marker":s=r.size;break;case"picture-marker":s=r.height}return{min:e.minValue,max:e.maxValue,size:s}}));return new h({breaks:t,histogramConfig:{bins:r?r.bins:[]}})}updateClassBreakInfos(e){const r=this.breaks;if(r.length===e.length)return e.map(((e,s)=>{const t=e.symbol;switch(t.type){case"simple-line":t.width=r[s].size;break;case"simple-marker":t.size=r[s].size;break;case"picture-marker":{const e=r[s].size,i=t.width,a=t.height;t.height=e,t.width=e/a*i;break}}return new o({minValue:r[s].min,maxValue:r[s].max,symbol:t})}));console.error(`Number of input breakInfos must match number of slider breaks: ${r.length}`)}updateFromRendererResult(e,r){const{renderer:{classBreakInfos:s}}=e,t=s.map((e=>{const r=e.symbol;let s;switch(r.type){case"simple-line":s=r.width;break;case"simple-marker":s=r.size;break;case"picture-marker":s=r.height}return{min:e.minValue,max:e.maxValue,size:s}}));this.set({breaks:t}),r?.bins&&(this.histogramConfig.bins=r.bins)}render(){const{state:e,label:r,visibleElements:s}=this,t="disabled"===e,i=this.classes(b.base,b.esriWidget,b.esriWidgetPanel,{[b.disabled]:t,[b.track]:s.interactiveTrack});return c("div",{"aria-label":r,class:i},t?null:this.renderContent(this.renderRamp(),b.sliderContainer,b.histogramContainer))}renderRamp(){const{style:{trackBackgroundColor:e}}=this;return c("div",{afterCreate:d,bind:this,class:b.rampElement,"data-node-ref":"_rampNode"},c("svg",{xmlns:"http://www.w3.org/2000/svg"},c("rect",{x:"0",y:"0",fill:m(e),height:"100%",width:"100%"}),this.renderPath()))}renderPath(){if(!this._rampNode)return;const{offsetHeight:e=0,offsetWidth:r=0}=this._rampNode;if(s(e)||s(r))return;const{breaks:t,viewModel:{max:i,min:a},style:{trackFillColor:o}}=this,l=i-a,n=r/t.length,d=t.map((r=>e-Math.round((r.min-a)/l*e)+1)).reverse(),p=t[0].size>t[t.length-1].size||!1;let h=p?n:r,u=`M${h} 0 `;return d.forEach(((e,s)=>{const t=n*(s+1);u+=`L${h} ${e} `,h=p?n+t:r-t,u+=`L${h} ${e} `})),u+=`L0 ${e} L0 ${e} L0 0 Z`,c("path",{d:u,fill:m(o)})}};e([t()],k.prototype,"breaks",null),e([t()],k.prototype,"label",null),e([t(),p("esri/widgets/smartMapping/ClassedSizeSlider/t9n/ClassedSizeSlider")],k.prototype,"messages",void 0),e([t()],k.prototype,"style",void 0),e([i("style")],k.prototype,"castStyle",null),e([t()],k.prototype,"viewModel",void 0),k=h=e([a("esri.widgets.smartMapping.ClassedSizeSlider")],k);const f=k;export{f as default};