UNPKG

@arcgis/core

Version:

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

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