12345 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.24/esri/copyright.txt for details.
- */
- import{_ as e}from"../chunks/tslib.es6.js";import{eventKey as t}from"../core/events.js";import o from"../core/Logger.js";import{aliasOf as i}from"../core/accessorSupport/decorators/aliasOf.js";import"../core/arrayUtils.js";import"../core/has.js";import{cast as s}from"../core/accessorSupport/decorators/cast.js";import{property as n}from"../core/accessorSupport/decorators/property.js";import{subclass as r}from"../core/accessorSupport/decorators/subclass.js";import a from"./Widget.js";import l from"./CoordinateConversion/CoordinateConversionViewModel.js";import d from"./CoordinateConversion/support/Conversion.js";import{Heading as p}from"./support/Heading.js";import{accessibleHandler as c}from"./support/decorators/accessibleHandler.js";import{messageBundle as u}from"./support/decorators/messageBundle.js";import{tsx as h}from"./support/jsxFactory.js";import{storeNode as _,isRTL as v}from"./support/widgetUtils.js";const m={base:"esri-coordinate-conversion esri-widget",captureMode:"esri-coordinate-conversion--capture-mode",noBasemap:"esri-coordinate-conversion--no-basemap",popup:"esri-coordinate-conversion__popup",clipboardPopup:"esri-coordinate-conversion__clipboard-popup",conversionList:"esri-coordinate-conversion__conversion-list",conversionRow:"esri-coordinate-conversion__row",coordDisplay:"esri-coordinate-conversion__display",expanded:"esri-coordinate-conversion__conversions-view--expanded",expandDown:"esri-coordinate-conversion__conversions-view--expand-down",expandUp:"esri-coordinate-conversion__conversions-view--expand-up",conversionsView:"esri-coordinate-conversion__conversions-view",primarySelect:"esri-coordinate-conversion__select-primary",rowSelect:"esri-coordinate-conversion__select-row",toolDisplay:"esri-coordinate-conversion__tools",modeToggle:"esri-coordinate-conversion__mode-toggle",rowButton:"esri-coordinate-conversion__row-button",backButton:"esri-coordinate-conversion__back-button",convertButton:"esri-coordinate-conversion__button",convertButtonSpan:"esri-coordinate-conversion__convert-button-span",coordinateInput:"esri-coordinate-conversion__input-coordinate",inputForm:"esri-coordinate-conversion__input-form",inputFormGroup:"esri-coordinate-conversion__input-group",rejectInput:"esri-coordinate-conversion__input-coordinate--rejected",sectionHeading:"esri-coordinate-conversion__heading",patternInput:"esri-coordinate-conversion__pattern-input",settings:"esri-coordinate__settings",settingsFormGroup:"esri-coordinate-conversion__settings-group",settingsFormGroupHorizontal:"esri-coordinate-conversion__settings-group-horizontal",previewCoordinate:"esri-coordinate-conversion__preview-coordinate",disabled:"esri-disabled",input:"esri-input",button:"esri-button",header:"esri-widget__heading",widgetButton:"esri-widget--button",leftArrow:"esri-icon-left-arrow",rightArrow:"esri-icon-right-arrow",captureButton:"esri-icon-map-pin",collapseButton:"esri-icon-up",copyButton:"esri-icon-duplicate",editButton:"esri-icon-edit",esriSelect:"esri-select",expandButton:"esri-icon-down",goToButton:"esri-icon-locate",refresh:"esri-icon-refresh",removeConversion:"esri-icon-close",settingsButton:"esri-icon-settings2"},g={settingsButton:!0,inputButton:!0,captureButton:!0,expandButton:!0},b=750,y=2500,w=o.getLogger("esri.widgets.CoordinateConversion");let C=class extends a{constructor(e,t){super(e,t),this._popupMessage=null,this._popupTimeoutId=null,this._clipboardPopupTimeoutId=null,this._coordinateInput=null,this._badInput=!1,this._goToEnabled=!1,this._conversionFormat=null,this._settingsFormat=null,this._previewConversion=null,this._expanded=!1,this._clipboardPopupVisible=!1,this._popupVisible=!1,this._settingsVisible=!1,this._inputVisible=!1,this.conversions=null,this.currentLocation=null,this.formats=null,this.goToOverride=null,this.headingLevel=4,this.label=void 0,this.messages=null,this.messagesCommon=null,this.mode=null,this.orientation="auto",this.locationSymbol=null,this.storageEnabled=null,this.storageType=null,this.view=null,this.viewModel=new l,this.visibleElements={...g}}set multipleConversions(e){!1===e&&(this._expanded=!1,this.conversions.splice(1,this.conversions.length-1)),this._set("multipleConversions",e)}get multipleConversions(){const e=this._get("multipleConversions");return"boolean"!=typeof e||e}castVisibleElements(e){return{...g,...e}}reverseConvert(e,t){return this.viewModel.reverseConvert(e,t)}render(){const e=this.get("viewModel.state"),t="disabled"===e?h("div",{key:"esri-coordinate__no-basemap"},this.messages.noBasemap):null,o=!t&&this._inputVisible?this._renderInputForm():null,i=!t&&this._settingsVisible?this._renderSettings():null,s=t||o||i?null:this._renderConversionsView(),n=this._popupVisible?this._renderPopup():null,r={[m.captureMode]:"capture"===this.mode,[m.disabled]:"loading"===e,[m.noBasemap]:"disabled"===e};return h("div",{class:this.classes(m.base,r)},n,t,s,i,o)}_addConversion(e){const t=e.target,o=t.options[t.options.selectedIndex]["data-format"],i=t["data-index"],s=new d({format:o});t.options.selectedIndex=0,i>=0&&this.conversions.removeAt(i),this.conversions.add(s,i)}_findSettingsFormat(){return this._settingsFormat||this.conversions.reduceRight(((e,t)=>{const o=t.format;return o.get("hasDisplayProperties")?o:e}),null)||this.formats.find((e=>e.hasDisplayProperties))}_hidePopup(){this._popupTimeoutId&&(clearTimeout(this._popupTimeoutId),this._popupTimeoutId=null),this._popupVisible=!1,this._popupMessage=null,this.scheduleRender()}_hideClipboardPopup(){this._clipboardPopupTimeoutId&&(clearTimeout(this._clipboardPopupTimeoutId),this._clipboardPopupTimeoutId=null),this._clipboardPopupVisible=!1,this.scheduleRender()}_onConvertComplete(){this._inputVisible=!1,this._coordinateInput.value=""}_onCopy(e){const t=e.currentTarget["data-conversion"].displayCoordinate;e.clipboardData.setData("text/plain",t),this._showClipboardPopup(),e.preventDefault()}_processUserInput(e){const o=t(e),i=this.viewModel;if("Enter"!==o&&o)this._badInput&&(this._badInput=!1);else{const e=this._coordinateInput["data-format"],t=this._coordinateInput.value;this._reverseConvert(t,e).then((e=>{"capture"===this.mode?i.resume():this.mode="capture",this.currentLocation=e,i.setLocation(e),this._onConvertComplete()})).catch((e=>{w.error(e),this._showPopup(this.messages.invalidCoordinate),this._badInput=!0}))}}_reverseConvert(e,t){const o=this.viewModel;return t.reverseConvert(e).then((e=>(this._goToEnabled&&o.goToLocation(e).catch((e=>{w.warn(e),this._showPopup(this.messages.locationOffBasemap)})),e)))}_setInputFormat(e){const t=e.target,o=t[t.options.selectedIndex]["data-format"];this._conversionFormat=o}_setPreviewConversion(){const e=this._findSettingsFormat(),t=this.viewModel;if(e){const o=this.conversions.find((t=>t.format===e));this._previewConversion=new d({format:e,position:{location:this.currentLocation,coordinate:o&&o.position.coordinate}}),this._previewConversion.position.coordinate||t.previewConversion(this._previewConversion)}}_setSettingsFormat(e){const t=e.target,o=t[t.options.selectedIndex]["data-format"];this._settingsFormat=o,this._setPreviewConversion()}_showClipboardPopup(){this._clipboardPopupVisible?clearTimeout(this._clipboardPopupTimeoutId):this._clipboardPopupVisible=!0,this.scheduleRender(),this._popupTimeoutId=setTimeout((()=>{this._popupTimeoutId=null,this._hideClipboardPopup()}),b)}_showPopup(e,t=y){this._popupMessage=e,this._popupVisible?clearTimeout(this._popupTimeoutId):this._popupVisible=!0,this.scheduleRender(),this._popupTimeoutId=setTimeout((()=>{this._popupTimeoutId=null,this._hidePopup()}),t)}_toggleGoTo(){this._goToEnabled=!this._goToEnabled}_updateCurrentPattern(e){e.stopPropagation();const t=e.target,o=this._findSettingsFormat();o&&(o.currentPattern=t.value)}_renderConversion(e,t){const{messages:o}=this,i=`${this.id}__list-item-${t}`,s=`${e.format.label} ${o.conversionOutputSuffix}`,n=0===t,r=n||this._expanded,a=n?this._renderFirstConversion(e):this._renderTools(t,e,i),l=n&&!e.displayCoordinate?o.noLocation:e.displayCoordinate,d=h("div",{"aria-label":l,class:m.coordDisplay,"data-conversion":e,role:"listitem",tabindex:"0",title:l},l),p=this._renderOptions(this.formats.filter((t=>t!==e.format)));return r?h("li",{"aria-label":s,class:m.conversionRow,id:i,key:e,role:"group",title:s,tabindex:"0"},h("select",{"aria-controls":i,"aria-label":o.selectFormat,class:this.classes(m.esriSelect,m.rowSelect),bind:this,"data-index":t,onchange:this._addConversion,title:o.selectFormat},h("option",{"aria-label":e.format.label,selected:!0,title:e.format.label},e.format.label.toUpperCase()),p),d,a):null}_renderCopyButton(e){const t=this._clipboardPopupVisible&&this._renderClipboardPopup();return h("li",{"aria-label":this.messagesCommon.copy,bind:this,class:this.classes(m.widgetButton,m.rowButton),"data-conversion":e,onclick:this._copyCoordinateOutput,onkeydown:this._copyCoordinateOutput,oncopy:this._onCopy,role:"button",tabindex:"0",title:this.messagesCommon.copy},t,h("span",{"aria-hidden":"true",class:m.copyButton}))}_renderFirstConversion(e){const t=this.id,o={[m.expandButton]:!this._expanded,[m.collapseButton]:this._expanded},{messages:i,messagesCommon:s,multipleConversions:n,visibleElements:r}=this,a="live"===this.mode?i.captureMode:i.liveMode,l=this._expanded?s.collapse:s.expand,d=e.displayCoordinate&&"capture"===this.mode?this._renderCopyButton(e):null,p=n&&r.expandButton&&h("li",{"aria-controls":`${t}__${m.conversionList}`,"aria-label":l,bind:this,class:m.widgetButton,key:"esri-coordinate-conversion__expand-button",onclick:this._toggleExpand,onkeydown:this._toggleExpand,role:"button",tabindex:"0",title:l},h("span",{"aria-hidden":"true",class:this.classes(o)})),c=!n&&r.captureButton&&h("li",{"aria-label":a,bind:this,class:this.classes(m.widgetButton,m.modeToggle),key:"esri-coordinate-conversion__mode-toggle",onclick:this._toggleMode,onkeydown:this._toggleMode,role:"button",tabindex:"0",title:a},h("span",{"aria-hidden":"true",class:m.captureButton}));return h("ul",{class:m.toolDisplay},d,p,c)}_renderInputForm(){const e=this._conversionFormat||this.conversions.getItemAt(0).format,t=this.formats.findIndex((t=>t.name===e.name)),o=this.id,i=`${o}__${m.coordinateInput}`,s=`${o}__${m.coordinateInput}__header`,n=this._renderOptions(this.formats,!0,t),r={[m.rejectInput]:this._badInput},{messages:a,messagesCommon:l,headingLevel:d}=this;return h("div",{"aria-labelledby":s,class:m.inputForm,key:"esri-coordinate-conversion__input-form",role:"search"},h("div",{class:m.sectionHeading},h("div",{"aria-label":l.back,bind:this,class:this.classes(m.widgetButton,m.backButton),onclick:this._toggleInputVisibility,onkeydown:this._toggleInputVisibility,role:"button",tabindex:"0",title:l.back},this._renderBackIcon()),h(p,{level:d,class:m.header,id:s},a.inputCoordTitle)),h("div",{class:m.inputFormGroup},h("select",{"aria-controls":i,"aria-label":a.selectFormat,bind:this,class:this.classes(m.esriSelect,m.rowSelect),onchange:this._setInputFormat,title:a.selectFormat},n),h("input",{afterCreate:_,"aria-labelledby":s,"aria-required":"true",bind:this,class:this.classes(m.coordinateInput,m.input,r),"data-format":e,"data-node-ref":"_coordinateInput",id:i,onkeydown:this._processUserInput,placeholder:a.inputCoordTitle,role:"textbox",spellcheck:!1,title:a.inputCoordTitle,type:"text"})),h("div",{class:m.inputFormGroup},h("label",{"aria-label":a.goTo},h("input",{bind:this,checked:this._goToEnabled,onclick:this._toggleGoTo,title:a.goTo,type:"checkbox"}),a.goTo),h("button",{"aria-label":a.convert,bind:this,class:this.classes(m.convertButton,m.button),onclick:this._processUserInput,title:a.convert,type:"button"},h("span",{class:m.convertButtonSpan},a.convert))))}_renderConversionsView(){const e=`${this.id}__${m.conversionList}`,t=this._renderPrimaryTools(),o=this._renderOptions(this.formats),i=this.conversions.map(((e,t)=>this._renderConversion(e,t))).toArray(),{messages:s}=this,n=this._expanded?h("div",{class:m.conversionRow},h("select",{"aria-controls":e,"aria-label":s.addConversion,bind:this,class:this.classes(m.esriSelect,m.primarySelect),onchange:this._addConversion,title:s.addConversion},h("option",{disabled:!0,selected:!0,value:""},s.addConversion),o),t):null,r={[m.expanded]:this._expanded,[m.expandUp]:"expand-up"===this.orientation,[m.expandDown]:"expand-down"===this.orientation};return h("div",{class:this.classes(m.conversionsView,r),key:"esri-coordinate-conversion__main-view"},h("ul",{"aria-expanded":this._expanded?"true":"false",class:m.conversionList,id:e},i),n)}_renderOptions(e,t,o){const i=this.conversions.getItemAt(0);return e.map(((e,s)=>{const n=!(t||!i)&&(i.format.name===e.name||this.conversions.map((e=>e.format.name)).includes(e.name));return h("option",{"aria-label":e.label,"data-format":e,disabled:n,key:e.name,selected:s===o,value:e.label},e.label.toUpperCase())})).toArray()}_renderPopup(){return h("div",{class:m.popup,role:"alert"},this._popupMessage)}_renderClipboardPopup(){return h("div",{class:this.classes(m.popup,m.clipboardPopup),role:"alert"},this.messages.copySuccessMessage)}_renderPrimaryTools(){const{messages:e,visibleElements:t}=this,o="live"===this.mode?e.captureMode:e.liveMode,i=t.inputButton&&h("li",{bind:this,class:m.widgetButton,onclick:this._toggleInputVisibility,onkeydown:this._toggleInputVisibility,role:"button",tabindex:"0",title:e.inputCoordTitle},h("span",{"aria-hidden":"true",class:m.editButton})),s=t.captureButton&&h("li",{bind:this,class:this.classes(m.widgetButton,m.modeToggle),onclick:this._toggleMode,onkeydown:this._toggleMode,role:"button",tabindex:"0",title:o},h("span",{"aria-hidden":"true",class:m.captureButton})),n=t.settingsButton&&h("li",{bind:this,class:m.widgetButton,onclick:this._toggleSettingsVisibility,onkeydown:this._toggleSettingsVisibility,role:"button",tabindex:"0",title:e.settingsTitle},h("span",{"aria-hidden":"true",class:m.settingsButton}));return h("ul",{class:m.toolDisplay},i,s,n)}_renderSettings(){const e=this.id,t=`${e}__${m.patternInput}`,o=`${e}__${m.patternInput}__header`,i=`${e}__${m.previewCoordinate}`,s=this.formats.filter((e=>e.hasDisplayProperties)),n=this._findSettingsFormat(),r=s.indexOf(n),a=this._renderOptions(s,!0,r),l=n.get("currentPattern"),{messages:d,messagesCommon:c,headingLevel:u}=this;return h("div",{"aria-labelledby":o,class:m.settings,key:"esri-coordinate-conversion__settings"},h("div",{class:m.sectionHeading},h("div",{bind:this,class:this.classes(m.widgetButton,m.backButton),onclick:this._toggleSettingsVisibility,onkeydown:this._toggleSettingsVisibility,role:"button",tabindex:"0",title:c.back},this._renderBackIcon()),h(p,{level:u,class:m.header,id:o},d.settingsTitle)),h("div",{class:m.settingsFormGroup},h("label",{for:t},d.changeCoordinateDisplay),h("select",{"aria-label":d.selectFormat,class:m.esriSelect,bind:this,onchange:this._setSettingsFormat,title:d.selectFormat},a),h("div",{class:m.settingsFormGroupHorizontal},h("input",{"aria-controls":i,bind:this,class:this.classes(m.patternInput,m.input),id:t,oninput:this._updateCurrentPattern,spellcheck:!1,title:d.changeCoordinateDisplay,type:"text",value:l}),h("div",{"aria-controls":t,bind:this,class:m.widgetButton,onclick:this._setDefaultPattern,onkeydown:this._setDefaultPattern,role:"button",tabindex:"0",title:d.defaultPattern},h("span",{"aria-hidden":"true",class:m.refresh})))),h("div",{class:m.settingsFormGroup},h("label",null,c.preview,h("div",{class:m.previewCoordinate,id:i,tabindex:"0"},this._previewConversion.displayCoordinate))))}_renderBackIcon(){return h("span",{"aria-hidden":"true",class:v(this.container)?m.rightArrow:m.leftArrow})}_renderTools(e,t,o){const i=t.displayCoordinate&&"capture"===this.mode?this._renderCopyButton(t):null,{messages:s}=this;return h("ul",{class:m.toolDisplay,role:"listitem"},i,h("li",{"aria-controls":o,"aria-label":s.removeConversion,bind:this,class:this.classes(m.widgetButton,m.rowButton),"data-index":e,key:`${o}__${m.widgetButton}`,onclick:this._removeConversion,onkeydown:this._removeConversion,tabindex:"0",role:"button",title:s.removeConversion},h("span",{"aria-hidden":"true",class:m.removeConversion})))}_copyCoordinateOutput(e){const t=e.target;if(!("createTextRange"in document.body)){const e=window.getSelection(),o=document.createRange();o.selectNodeContents(t),e.removeAllRanges(),e.addRange(o)}document.execCommand("copy")}_removeConversion(e){const t=e.currentTarget["data-index"];this.conversions.removeAt(t)}_setDefaultPattern(e){e.stopPropagation();const t=this._findSettingsFormat();t&&(t.currentPattern=t.get("defaultPattern"))}_toggleExpand(){this._expanded=!this._expanded}_toggleInputVisibility(){this._inputVisible=!this._inputVisible,this._popupVisible&&this._hidePopup(),this._inputVisible?this.viewModel.pause():this.viewModel.resume()}_toggleMode(){this.mode="live"===this.mode?"capture":"live"}_toggleSettingsVisibility(){this._settingsVisible=!this._settingsVisible,this._popupVisible&&this._hidePopup(),this._settingsVisible?(this._setPreviewConversion(),this.viewModel.pause()):this.viewModel.resume()}};e([i("viewModel.conversions")],C.prototype,"conversions",void 0),e([i("viewModel.currentLocation")],C.prototype,"currentLocation",void 0),e([i("viewModel.formats")],C.prototype,"formats",void 0),e([i("viewModel.goToOverride")],C.prototype,"goToOverride",void 0),e([n()],C.prototype,"headingLevel",void 0),e([n({aliasOf:{source:"messages.widgetLabel",overridable:!0}})],C.prototype,"label",void 0),e([n(),u("esri/widgets/CoordinateConversion/t9n/CoordinateConversion")],C.prototype,"messages",void 0),e([n(),u("esri/t9n/common")],C.prototype,"messagesCommon",void 0),e([i("viewModel.mode")],C.prototype,"mode",void 0),e([n()],C.prototype,"orientation",void 0),e([n()],C.prototype,"multipleConversions",null),e([i("viewModel.locationSymbol")],C.prototype,"locationSymbol",void 0),e([i("viewModel.storageEnabled")],C.prototype,"storageEnabled",void 0),e([i("viewModel.storageType")],C.prototype,"storageType",void 0),e([i("viewModel.view")],C.prototype,"view",void 0),e([n({type:l})],C.prototype,"viewModel",void 0),e([n()],C.prototype,"visibleElements",void 0),e([s("visibleElements")],C.prototype,"castVisibleElements",null),e([c()],C.prototype,"_copyCoordinateOutput",null),e([c()],C.prototype,"_removeConversion",null),e([c()],C.prototype,"_setDefaultPattern",null),e([c()],C.prototype,"_toggleExpand",null),e([c()],C.prototype,"_toggleInputVisibility",null),e([c()],C.prototype,"_toggleMode",null),e([c()],C.prototype,"_toggleSettingsVisibility",null),C=e([r("esri.widgets.CoordinateConversion")],C);const f=C;export{f as default};
|