@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 4.48 kB
JavaScript
import{_ as e}from"../chunks/tslib.es6.js";import{isSome as t}from"../core/maybe.js";import{ignoreAbortErrors as s}from"../core/promiseUtils.js";import{isMeasurementSystem as i}from"../core/unitUtils.js";import{property as n}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import{subclass as r}from"../core/accessorSupport/decorators/subclass.js";import a from"./Widget.js";import o from"./DistanceMeasurement2D/DistanceMeasurement2DViewModel.js";import{accessibleHandler as l}from"./support/decorators/accessibleHandler.js";import{messageBundle as u}from"./support/decorators/messageBundle.js";import{tsx as m}from"./support/jsxFactory.js";import"./support/widgetUtils.js";const p="esri-distance-measurement-2d",c=`${p}__measurement`,d=`${p}__units`,v={buttonDisabled:"esri-button--disabled",widgetIcon:"esri-icon-measure-line",base:`${p} esri-widget esri-widget--panel`,container:`${p}__container`,hint:`${p}__hint`,hintText:`${p}__hint-text`,panelError:`${p}__panel--error`,measurement:c,measurementItem:`${c}-item`,measurementItemDisabled:`${c}-item--disabled`,measurementItemTitle:`${c}-item-title`,measurementItemValue:`${c}-item-value`,settings:`${p}__settings`,units:d,unitsLabel:`${d}-label`,unitsSelect:`${d}-select esri-select`,unitsSelectWrapper:`${d}-select-wrapper`,actionSection:`${p}__actions`,newMeasurementButton:`${p}__clear-button esri-button esri-button--primary`};let b=class extends a{constructor(e,t){super(e,t),this.iconClass=v.widgetIcon,this.messages=null,this.messagesUnits=null,this.viewModel=new o}get active(){return this.viewModel.active}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get unit(){return this.viewModel.unit}set unit(e){this.viewModel.unit=e}get unitOptions(){return this.viewModel.unitOptions}set unitOptions(e){this.viewModel.unitOptions=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}get visible(){return this.viewModel.visible}set visible(e){this.viewModel.visible=e}render(){const{id:e,messages:s,messagesUnits:n,viewModel:r,visible:a}=this,{active:o,supported:l,measurementLabel:u,state:p,unit:c,unitOptions:d}=r,b="disabled"===p,w="measuring"===p||"measured"===p,h=o&&"ready"===p?m("section",{key:"hint",class:v.hint},m("p",{class:v.hintText},s.hint)):null,g=l?null:m("section",{key:"unsupported",class:v.panelError},m("p",null,s.unsupported)),y=(e,s,i)=>t(s)?m("div",{key:`${i}-enabled`,class:v.measurementItem},m("span",{class:v.measurementItemTitle},e),m("span",{"aria-live":"polite",class:v.measurementItemValue},s)):m("div",{key:`${i}-disabled`,class:this.classes(v.measurementItem,v.measurementItemDisabled),"aria-disabled":"true"},m("span",{class:v.measurementItemTitle},e)),M=w?m("section",{key:"measurement",class:v.measurement},y(s.distance,u,"distance")):null,_=`${e}-units`,$=w?m("section",{key:"units",class:v.units},m("label",{class:v.unitsLabel,for:_},s.unit),m("div",{class:v.unitsSelectWrapper},m("select",{class:v.unitsSelect,id:_,onchange:this._changeUnit,bind:this,value:c},d.map((e=>m("option",{key:e,value:e},i(e)?n.systems[e]:n.units[e]?.pluralCapitalized)))))):null,j=w?m("div",{key:"settings",class:v.settings},$):null,f=!l||o&&!w?null:m("div",{class:v.actionSection},m("button",{"aria-label":s.newMeasurement,bind:this,class:this.classes(v.newMeasurementButton,b&&v.buttonDisabled),disabled:b,onclick:this._newMeasurement,title:s.newMeasurement,type:"button"},s.newMeasurement)),D=a?m("div",{class:v.container},g,h,j,M,f):null;return m("div",{"aria-label":s.widgetLabel,class:v.base,role:"region"},D)}_newMeasurement(){s(this.viewModel.start())}_changeUnit(e){const t=e.target,s=t.options[t.selectedIndex];s&&(this.viewModel.unit=s.value)}};e([n({readOnly:!0})],b.prototype,"active",null),e([n()],b.prototype,"iconClass",void 0),e([n()],b.prototype,"label",null),e([n()],b.prototype,"uiStrings",void 0),e([n(),u("esri/widgets/DistanceMeasurement2D/t9n/DistanceMeasurement2D")],b.prototype,"messages",void 0),e([n(),u("esri/core/t9n/Units")],b.prototype,"messagesUnits",void 0),e([n()],b.prototype,"unit",null),e([n()],b.prototype,"unitOptions",null),e([n()],b.prototype,"view",null),e([n({type:o})],b.prototype,"viewModel",void 0),e([n({type:Boolean})],b.prototype,"visible",null),e([l()],b.prototype,"_newMeasurement",null),e([l()],b.prototype,"_changeUnit",null),b=e([r("esri.widgets.DistanceMeasurement2D")],b);const w=b;export{w as default};