DistanceMeasurement2D.js 4.6 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.25/esri/copyright.txt for details.
  4. */
  5. 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/arrayUtils.js";import"../core/accessorSupport/ensureType.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={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:`${p}__measurement`,measurementItem:`${p}__measurement-item`,measurementItemDisabled:`${p}__measurement-item--disabled`,measurementItemTitle:`${p}__measurement-item-title`,measurementItemValue:`${p}__measurement-item-value`,settings:`${p}__settings`,units:`${p}__units`,unitsLabel:`${p}__units-label`,unitsSelect:`${p}__units-select esri-select`,unitsSelectWrapper:`${p}__units-select-wrapper`,actionSection:`${p}__actions`,newMeasurementButton:`${p}__clear-button esri-button esri-button--primary`};let d=class extends a{constructor(e,t){super(e,t),this.iconClass=c.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:d,unitOptions:v}=r,b="disabled"===p,_="measuring"===p||"measured"===p,w=o&&"ready"===p?m("section",{key:"hint",class:c.hint},m("p",{class:c.hintText},s.hint)):null,h=l?null:m("section",{key:"unsupported",class:c.panelError},m("p",null,s.unsupported)),g=(e,s,i)=>t(s)?m("div",{key:`${i}-enabled`,class:c.measurementItem},m("span",{class:c.measurementItemTitle},e),m("span",{"aria-live":"polite",class:c.measurementItemValue},s)):m("div",{key:`${i}-disabled`,class:this.classes(c.measurementItem,c.measurementItemDisabled),"aria-disabled":"true"},m("span",{class:c.measurementItemTitle},e)),y=_?m("section",{key:"measurement",class:c.measurement},g(s.distance,u,"distance")):null,M=`${e}-units`,$=_?m("section",{key:"units",class:c.units},m("label",{class:c.unitsLabel,for:M},s.unit),m("div",{class:c.unitsSelectWrapper},m("select",{class:c.unitsSelect,id:M,onchange:this._changeUnit,bind:this,value:d},v.map((e=>m("option",{key:e,value:e},i(e)?n.systems[e]:n.units[e]?.pluralCapitalized)))))):null,j=_?m("div",{key:"settings",class:c.settings},$):null,f=!l||o&&!_?null:m("div",{class:c.actionSection},m("button",{"aria-label":s.newMeasurement,bind:this,class:this.classes(c.newMeasurementButton,b&&c.buttonDisabled),disabled:b,onclick:this._newMeasurement,title:s.newMeasurement,type:"button"},s.newMeasurement)),D=a?m("div",{class:c.container},h,w,j,y,f):null;return m("div",{"aria-label":s.widgetLabel,class:c.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})],d.prototype,"active",null),e([n()],d.prototype,"iconClass",void 0),e([n()],d.prototype,"label",null),e([n()],d.prototype,"uiStrings",void 0),e([n(),u("esri/widgets/DistanceMeasurement2D/t9n/DistanceMeasurement2D")],d.prototype,"messages",void 0),e([n(),u("esri/core/t9n/Units")],d.prototype,"messagesUnits",void 0),e([n()],d.prototype,"unit",null),e([n()],d.prototype,"unitOptions",null),e([n()],d.prototype,"view",null),e([n({type:o})],d.prototype,"viewModel",void 0),e([n({type:Boolean})],d.prototype,"visible",null),e([l()],d.prototype,"_newMeasurement",null),e([l()],d.prototype,"_changeUnit",null),d=e([r("esri.widgets.DistanceMeasurement2D")],d);const v=d;export{v as default};