12345 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.25/esri/copyright.txt for details.
- */
- import{_ as e}from"../chunks/tslib.es6.js";import{watch as r}from"../core/reactiveUtils.js";import{createScreenPoint as t}from"../core/screenUtils.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/arrayUtils.js";import{cast as a}from"../core/accessorSupport/decorators/cast.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import l from"./Widget.js";import o from"./ScaleBar/ScaleBarViewModel.js";import"./support/widgetUtils.js";import{messageBundle as n}from"./support/decorators/messageBundle.js";import{tsx as c}from"./support/jsxFactory.js";const d={base:"esri-scale-bar esri-widget",labelContainer:"esri-scale-bar__label-container",rulerLabelContainer:"esri-scale-bar__label-container--ruler",lineLabelContainer:"esri-scale-bar__label-container--line",topLabelContainer:"esri-scale-bar__label-container--top",bottomLabelContainer:"esri-scale-bar__label-container--bottom",label:"esri-scale-bar__label",line:"esri-scale-bar__line",topLine:"esri-scale-bar__line--top",bottomLine:"esri-scale-bar__line--bottom",ruler:"esri-scale-bar__ruler",rulerBlock:"esri-scale-bar__ruler-block",barContainer:"esri-scale-bar__bar-container",rulerBarContainer:"esri-scale-bar__bar-container--ruler",lineBarContainer:"esri-scale-bar__bar-container--line",disabled:"esri-disabled"};function u(e){return 2*e}let b=class extends l{constructor(e,r){super(e,r),this.messages=null,this.unit="non-metric",this.viewModel=new o}initialize(){this.addHandles([r((()=>{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 r="dual"===this.unit?"line":e;this._set("style",r)}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"),r={[d.disabled]:e};let t,s;if(!e){const{unit:e,style:r}=this,a="metric"===e||"dual"===e,i=50;if("non-metric"===e||"dual"===e){const e=this.viewModel.getScaleBarProperties(i,"non-metric");e&&(s="ruler"===r?this._renderRuler(e):this._renderLine(e,"bottom"))}if(a){const e=this.viewModel.getScaleBarProperties(i,"metric");e&&(t="ruler"===r?this._renderRuler(e):this._renderLine(e,"top"))}}return c("div",{afterCreate:this._handleRootCreateOrUpdate,afterUpdate:this._handleRootCreateOrUpdate,bind:this,class:this.classes(d.base,r)},t,s)}_renderRuler(e){const r=u(Math.round(e.length)),{messages:t}=this,s=t[e.unit]||t.unknownUnit,a=`${u(e.value)} ${s}`;return c("div",{class:this.classes(d.barContainer,d.rulerBarContainer),key:"esri-scale-bar__ruler"},c("div",{class:d.ruler,styles:{width:`${r}px`}},c("div",{class:d.rulerBlock}),c("div",{class:d.rulerBlock}),c("div",{class:d.rulerBlock}),c("div",{class:d.rulerBlock})),c("div",{class:this.classes(d.labelContainer,d.rulerLabelContainer)},c("div",{class:d.label},"0"),c("div",{class:d.label},a)))}_renderLine(e,r){const{messages:t}=this,s=t[e.unit]||t.unknownUnit,a=`${u(e.value)} ${s}`,i={[d.topLabelContainer]:"top"===r,[d.bottomLabelContainer]:"bottom"===r},l=c("div",{class:this.classes(d.labelContainer,d.lineLabelContainer,i),key:"esri-scale-bar__label"},c("div",{class:d.label},a)),o={[d.topLine]:"top"===r,[d.bottomLine]:"bottom"===r},n=u(Math.round(e.length)),b=c("div",{class:this.classes(d.line,o),key:"esri-scale-bar__line",styles:{width:`${n}px`}});return c("div",{class:this.classes(d.barContainer,d.lineBarContainer),key:"esri-scale-bar__line-container"},[b,l])}_handleRootCreateOrUpdate(e){const r=this.viewModel;if(!r)return;const s=e.getBoundingClientRect(),a=s.left+window.pageXOffset,i=s.top+window.pageYOffset,l=t(a,i);(l.x!==r.scaleComputedFrom.x||l.y!==r.scaleComputedFrom.y)&&(r.scaleComputedFrom=l)}};e([s()],b.prototype,"label",null),e([s(),n("esri/widgets/ScaleBar/t9n/ScaleBar")],b.prototype,"messages",void 0),e([s()],b.prototype,"style",null),e([a("style")],b.prototype,"castStyle",null),e([s()],b.prototype,"unit",void 0),e([a("unit")],b.prototype,"castUnit",null),e([s()],b.prototype,"view",null),e([s()],b.prototype,"viewModel",void 0),b=e([i("esri.widgets.ScaleBar")],b);const p=b;export{p as default};
|