UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

3 lines (2 loc) 5.61 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{__decorate as e}from"tslib";import{deprecateWidget as o}from"../core/deprecate.js";import t from"../core/Logger.js";import{memoize as r}from"../core/memoize.js";import{property as n,subclass as i}from"../core/accessorSupport/decorators.js";import{weatherTypesArray as s}from"../views/3d/environment/weather.js";import l from"./Widget.js";import{loadCalciteComponents as a}from"./support/componentsUtils.js";import{globalCss as c}from"./support/globalCss.js";import{Heading as d}from"./support/Heading.js";import{messageBundle as p,tsx as u,classes as h,tsxFragment as g}from"./support/widget.js";import{css as v}from"./Weather/css.js";import{LabeledSlider as m}from"./Weather/LabeledSlider.js";import y from"./Weather/VisibleElements.js";import b from"./Weather/WeatherViewModel.js";const w={sunny:"brightness",cloudy:"partly-cloudy",rainy:"rain",snowy:"snow",foggy:"fog"};let C=class extends l{constructor(e){super(e),this.viewModel=new b({suppressDeprecationWarning:!0}),this.headingLevel=4,this.visibleElements=new y,this._renderWeatherTypeButton=e=>{const o=this.viewModel,t=this.messages[e].label,r="disabled"===o.state,n=!r&&o.current.type===e;return u("calcite-button",{appearance:n?"solid":"outline","aria-checked":n?"true":"false",disabled:r,iconStart:w[e],key:`${e}-type-button`,kind:n?"brand":"neutral",label:t,onclick:()=>{n||o.setWeatherByType(e)},scale:"l",title:t})},this._memoizedCallbacks=r(e=>({onCloudCoverChange:o=>{"cloudCover"in e&&(e.cloudCover=o)},onPrecipitationChange:o=>{"precipitation"in e&&(e.precipitation=o)},onFogStrengthChange:o=>{"fogStrength"in e&&(e.fogStrength=o)},onSnowCoverChange:e=>{this.viewModel.setSnowCoverEnabled(e.currentTarget.checked)}})),o(t.getLogger(this),"Weather","arcgis-weather",{version:"4.33"})}render(){const e="disabled"===this.viewModel.state;return u("div",{"aria-label":this.messages.widgetLabelAccessible,class:this.classes(v.base,c.widget,e&&c.widgetDisabled),role:"region"},this._renderContent())}loadDependencies(){return a({button:()=>import("@esri/calcite-components/dist/components/calcite-button"),checkbox:()=>import("@esri/calcite-components/dist/components/calcite-checkbox"),icon:()=>import("@esri/calcite-components/dist/components/calcite-icon"),label:()=>import("@esri/calcite-components/dist/components/calcite-label")})}get view(){return this.viewModel?.view}set view(e){this.viewModel&&(this.viewModel.view=e)}get icon(){return"partly-cloudy"}set icon(e){this._overrideIfSome("icon",e)}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get _errorMessage(){const e=this.messages.error;switch(this.viewModel.error){case"local-scene":return e.localScene;case"no-atmosphere":return e.noAtmosphere;case"unsupported-view":return e.unsupported;default:return null}}get _warningMessage(){if("not-visible"===this.viewModel.error){return null!=this.view&&"3d"===this.view?.type&&this.view.environment.atmosphereEnabled?this.messages.error.notVisible:null}return null}_renderContent(){const{headingLevel:e,messages:o,viewModel:t,visibleElements:r}=this,n=this._warningMessage,i=t.current,l="error"===t.state;return u(g,null,r.header?u(d,{level:e},o.widgetLabel):null,l?u("div",{class:v.error,key:"error"},this._errorMessage):null,u("div",{class:h({[v.content]:!0,[v.hasError]:l}),key:"content"},u("div",{"aria-label":o.weatherType,class:v.selector,key:"type-selector",role:"radiogroup"},s.map(this._renderWeatherTypeButton)),Object.values(t.weatherByType).map(e=>u("div",{class:h({[v.options]:!0,[v.optionsHidden]:e.type!==i?.type}),key:"options-container"},this._renderOptions(e))),null!=n?this._renderWarning(n):null))}_renderOptions(e){const{viewModel:o,messages:t}=this,r="disabled"===o.state,n=this._memoizedCallbacks(e);switch(e.type){case"sunny":return u(m,{disabled:r,key:"sunny-cover",label:t.sunny.cloudCover,value:e.cloudCover,onChange:n.onCloudCoverChange});case"cloudy":return u(m,{disabled:r,key:"cloudy-cover",label:t.cloudy.cloudCover,value:e.cloudCover,onChange:n.onCloudCoverChange});case"rainy":return u(g,null,u(m,{disabled:r,key:"rainy-cover",label:t.rainy.cloudCover,value:e.cloudCover,onChange:n.onCloudCoverChange}),u(m,{disabled:r,key:"rainy-precipitation",label:t.rainy.precipitation,value:e.precipitation,onChange:n.onPrecipitationChange}));case"snowy":return u(g,null,u(m,{disabled:r,key:"snowy-cloud-cover",label:t.snowy.cloudCover,value:e.cloudCover,onChange:n.onCloudCoverChange}),u(m,{disabled:r,key:"snowy-precipitation",label:t.snowy.precipitation,value:e.precipitation,onChange:n.onPrecipitationChange}),u("calcite-label",{key:"snow-cover",layout:"inline",scale:"s",title:t.snowy.snowCoverTooltip},u("calcite-checkbox",{checked:"enabled"===e.snowCover,disabled:r,onCalciteCheckboxChange:n.onSnowCoverChange}),t.snowy.snowCover));case"foggy":return u(m,{disabled:r,key:"foggy-cover",label:t.foggy.fogStrength,value:e.fogStrength,onChange:n.onFogStrengthChange})}}_renderWarning(e){return u("div",{class:v.warning,key:"warning"},u("calcite-icon",{icon:"exclamation-mark-triangle",scale:"s"}),e)}};e([n({type:b})],C.prototype,"viewModel",void 0),e([n()],C.prototype,"view",null),e([n()],C.prototype,"headingLevel",void 0),e([n({type:y,nonNullable:!0})],C.prototype,"visibleElements",void 0),e([n()],C.prototype,"icon",null),e([n()],C.prototype,"label",null),e([n(),p("esri/widgets/Weather/t9n/Weather")],C.prototype,"messages",void 0),e([n()],C.prototype,"_errorMessage",null),e([n()],C.prototype,"_warningMessage",null),C=e([i("esri.widgets.Weather")],C);const f=C;export{f as default};