@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 3.62 kB
JavaScript
import{_ as e}from"../chunks/tslib.es6.js";import{watch as t}from"../core/reactiveUtils.js";import{createScreenPoint as s}from"../core/screenUtils.js";import{property as r}from"../core/accessorSupport/decorators/property.js";import{cast as i}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import{subclass as o}from"../core/accessorSupport/decorators/subclass.js";import l from"./Widget.js";import{CSS as a}from"./ScaleBar/css.js";import n from"./ScaleBar/ScaleBarViewModel.js";import"./support/widgetUtils.js";import{messageBundle as c}from"./support/decorators/messageBundle.js";import{tsx as d}from"./support/jsxFactory.js";function u(e){return 2*e}let p=class extends l{constructor(e,t){super(e,t),this.messages=null,this.unit="non-metric",this.viewModel=new n}initialize(){this.addHandles([t((()=>{const{view:e}=this;return[e?.stationary,e?.center,e?.scale,e?.zoom]}),(([e])=>{e&&this.scheduleRender()}))])}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}set style(e){const t="dual"===this.unit?"line":e;this._set("style",t)}castStyle(e){return"line"===e?e:"ruler"}castUnit(e){return"metric"===e||"dual"===e?e:"non-metric"}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}render(){const e="disabled"===this.get("viewModel.state"),t={[a.disabled]:e};let s,r;if(!e){const{unit:e,style:t}=this,i="metric"===e||"dual"===e,o=50;if("non-metric"===e||"dual"===e){const e=this.viewModel.getScaleBarProperties(o,"non-metric");e&&(r="ruler"===t?this._renderRuler(e):this._renderLine(e,"bottom"))}if(i){const e=this.viewModel.getScaleBarProperties(o,"metric");e&&(s="ruler"===t?this._renderRuler(e):this._renderLine(e,"top"))}}return d("div",{afterCreate:this._handleRootCreateOrUpdate,afterUpdate:this._handleRootCreateOrUpdate,bind:this,class:this.classes(a.base,t)},s,r)}_renderRuler(e){const t=u(Math.round(e.length)),{messages:s}=this,r=s[e.unit]||s.unknownUnit,i=`${u(e.value)} ${r}`;return d("div",{class:this.classes(a.barContainer,a.rulerBarContainer),key:"esri-scale-bar__ruler"},d("div",{class:a.ruler,styles:{width:`${t}px`}},d("div",{class:a.rulerBlock}),d("div",{class:a.rulerBlock}),d("div",{class:a.rulerBlock}),d("div",{class:a.rulerBlock})),d("div",{class:this.classes(a.labelContainer,a.rulerLabelContainer)},d("div",{class:a.label},"0"),d("div",{class:a.label},i)))}_renderLine(e,t){const{messages:s}=this,r=s[e.unit]||s.unknownUnit,i=`${u(e.value)} ${r}`,o={[a.topLabelContainer]:"top"===t,[a.bottomLabelContainer]:"bottom"===t},l=d("div",{class:this.classes(a.labelContainer,a.lineLabelContainer,o),key:"esri-scale-bar__label"},d("div",{class:a.label},i)),n={[a.topLine]:"top"===t,[a.bottomLine]:"bottom"===t},c=u(Math.round(e.length)),p=d("div",{class:this.classes(a.line,n),key:"esri-scale-bar__line",styles:{width:`${c}px`}});return d("div",{class:this.classes(a.barContainer,a.lineBarContainer),key:"esri-scale-bar__line-container"},[p,l])}_handleRootCreateOrUpdate(e){const t=this.viewModel;if(!t)return;const r=e.getBoundingClientRect(),i=r.left+window.pageXOffset,o=r.top+window.pageYOffset,l=s(i,o);(l.x!==t.scaleComputedFrom.x||l.y!==t.scaleComputedFrom.y)&&(t.scaleComputedFrom=l)}};e([r()],p.prototype,"label",null),e([r(),c("esri/widgets/ScaleBar/t9n/ScaleBar")],p.prototype,"messages",void 0),e([r()],p.prototype,"style",null),e([i("style")],p.prototype,"castStyle",null),e([r()],p.prototype,"unit",void 0),e([i("unit")],p.prototype,"castUnit",null),e([r()],p.prototype,"view",null),e([r()],p.prototype,"viewModel",void 0),p=e([o("esri.widgets.ScaleBar")],p);const m=p;export{m as default};