UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 5.97 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{_ as e}from"../chunks/tslib.es6.js";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 s}from"../core/accessorSupport/decorators/property.js";import"../core/has.js";import"../core/RandomLCG.js";import{subclass as n}from"../core/accessorSupport/decorators/subclass.js";import{weatherTypesArray as i}from"../views/3d/environment/weather.js";import a from"./Widget.js";import{loadCalciteComponents as l}from"./support/componentsUtils.js";import{globalCss as c}from"./support/globalCss.js";import{Heading as d}from"./support/Heading.js";import{classes as p}from"./support/widgetUtils.js";import{messageBundle as u}from"./support/decorators/messageBundle.js";import{tsx as h,tsxFragment as g}from"./support/jsxFactory.js";import{css as m}from"./Weather/css.js";import{WeatherState as v,WeatherError as y}from"./Weather/enums.js";import{LabeledSlider as b}from"./Weather/LabeledSlider.js";import w from"./Weather/VisibleElements.js";import C from"./Weather/WeatherViewModel.js";const f={sunny:"brightness",cloudy:"partly-cloudy",rainy:"rain",snowy:"snow",foggy:"fog"};let k=class extends a{constructor(e){super(e),this.viewModel=new C({isDefaultViewModel:!0}),this.headingLevel=4,this.visibleElements=new w,this._renderWeatherTypeButton=e=>{const o=this.viewModel,t=this.messages[e].label,r=o.state===v.Disabled,s=!r&&o.current.type===e;return h("calcite-button",{appearance:s?"solid":"outline","aria-checked":s?"true":"false",disabled:r,iconStart:f[e],key:`${e}-type-button`,kind:s?"brand":"neutral",label:t,onclick:()=>{s||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=this.viewModel.state===v.Disabled;return h("div",{"aria-label":this.messages.widgetLabelAccessible,class:this.classes(m.base,c.widget,e&&c.widgetDisabled),role:"region"},this._renderContent())}loadDependencies(){return l({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 y.LocalScene:return e.localScene;case y.NoAtmosphere:return e.noAtmosphere;case y.UnsupportedView:return e.unsupported;default:return null}}get _warningMessage(){if(this.viewModel.error===y.NotVisible){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,s=this._warningMessage,n=t.current,a=t.state===v.Error;return h(g,null,r.header?h(d,{level:e},o.widgetLabel):null,a?h("div",{class:m.error,key:"error"},this._errorMessage):null,h("div",{class:p({[m.content]:!0,[m.hasError]:a}),key:"content"},h("div",{"aria-label":o.weatherType,class:m.selector,key:"type-selector",role:"radiogroup"},i.map(this._renderWeatherTypeButton)),Object.values(t.weatherByType).map((e=>h("div",{class:p({[m.options]:!0,[m.optionsHidden]:e.type!==n?.type}),key:"options-container"},this._renderOptions(e)))),null!=s?this._renderWarning(s):null))}_renderOptions(e){const{viewModel:o,messages:t}=this,r=o.state===v.Disabled,s=this._memoizedCallbacks(e);switch(e.type){case"sunny":return h(b,{disabled:r,key:"sunny-cover",label:t.sunny.cloudCover,value:e.cloudCover,onChange:s.onCloudCoverChange});case"cloudy":return h(b,{disabled:r,key:"cloudy-cover",label:t.cloudy.cloudCover,value:e.cloudCover,onChange:s.onCloudCoverChange});case"rainy":return h(g,null,h(b,{disabled:r,key:"rainy-cover",label:t.rainy.cloudCover,value:e.cloudCover,onChange:s.onCloudCoverChange}),h(b,{disabled:r,key:"rainy-precipitation",label:t.rainy.precipitation,value:e.precipitation,onChange:s.onPrecipitationChange}));case"snowy":return h(g,null,h(b,{disabled:r,key:"snowy-cloud-cover",label:t.snowy.cloudCover,value:e.cloudCover,onChange:s.onCloudCoverChange}),h(b,{disabled:r,key:"snowy-precipitation",label:t.snowy.precipitation,value:e.precipitation,onChange:s.onPrecipitationChange}),h("calcite-label",{key:"snow-cover",layout:"inline",scale:"s",title:t.snowy.snowCoverTooltip},h("calcite-checkbox",{checked:"enabled"===e.snowCover,disabled:r,onCalciteCheckboxChange:s.onSnowCoverChange}),t.snowy.snowCover));case"foggy":return h(b,{disabled:r,key:"foggy-cover",label:t.foggy.fogStrength,value:e.fogStrength,onChange:s.onFogStrengthChange})}}_renderWarning(e){return h("div",{class:m.warning,key:"warning"},h("calcite-icon",{icon:"exclamation-mark-triangle",scale:"s"}),e)}};e([s()],k.prototype,"viewModel",void 0),e([s()],k.prototype,"view",null),e([s()],k.prototype,"headingLevel",void 0),e([s({type:w,nonNullable:!0})],k.prototype,"visibleElements",void 0),e([s()],k.prototype,"icon",null),e([s()],k.prototype,"label",null),e([s(),u("esri/widgets/Weather/t9n/Weather")],k.prototype,"messages",void 0),e([s()],k.prototype,"_errorMessage",null),e([s()],k.prototype,"_warningMessage",null),k=e([n("esri.widgets.Weather")],k);const j=k;export{j as default};