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{isSome as o}from"../core/maybe.js";import{memoize as r}from"../core/memoize.js";import{aliasOf as t}from"../core/accessorSupport/decorators/aliasOf.js";import"../core/arrayUtils.js";import"../core/has.js";import"../core/accessorSupport/ensureType.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import{weatherTypesArray as n}from"../views/3d/environment/weather.js";import a from"./Widget.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 h}from"./support/jsxFactory.js";import{CSS as u}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 a{constructor(e){super(e),this.viewModel=new b,this.headingLevel=4,this.visibleElements=new y,this.iconClass=u.widgetIcon,this.label=void 0,this._renderWeatherTypeButton=e=>{const o=this.viewModel,r=this.messages[e].label,t=o.state===g.Disabled,s=!t&&o.current.type===e;return p("calcite-button",{appearance:s?"solid":"outline","aria-checked":s?"true":"false",color:s?"blue":"neutral",disabled:t,"icon-start":w[e],key:`${e}-type-button`,label:r,role:"radio",scale:"l",title:r,onclick:()=>{s||o.setWeatherByType(e)}})},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.target.checked)}})))}render(){const e=this.viewModel.state===g.Disabled;return p("div",{class:this.classes(u.base,u.esriWidget,e&&u.esriWidgetDisabled),role:"region","aria-label":this.messages.widgetLabelAccessible},this._renderContent())}async loadDependencies(){await Promise.all([import("@esri/calcite-components/dist/components/calcite-button.js"),import("@esri/calcite-components/dist/components/calcite-checkbox.js"),import("@esri/calcite-components/dist/components/calcite-icon.js"),import("@esri/calcite-components/dist/components/calcite-label.js"),import("@esri/calcite-components/dist/components/calcite-slider.js")])}get view(){return this.viewModel?.view}set view(e){this.viewModel&&(this.viewModel.view=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 o(this.view)&&"3d"===this.view?.type&&this.view.environment.atmosphereEnabled?this.messages.error.notVisible:null}return null}_renderContent(){const e=this.messages,r=this._warningMessage,t=this.viewModel.state===g.Error;return p(h,null,this.visibleElements.header&&p(l,{level:this.headingLevel},e.widgetLabel),t&&p("div",{key:"error",class:u.error},this._errorMessage),p("div",{key:"content",class:c({[u.content]:!0,[u.hasError]:t})},p("div",{class:u.selector,role:"radiogroup","aria-label":e.weatherType},n.map(this._renderWeatherTypeButton)),p("div",{class:u.options},this._renderOptions()),o(r)&&this._renderWarning(r)))}_renderOptions(){const{viewModel:e,messages:o}=this,r=e.state===g.Disabled,t=e.current,s=this._memoizedCallbacks(t);switch(t.type){case"sunny":return p(v,{key:"sunny-cover",disabled:r,label:o.sunny.cloudCover,value:t.cloudCover,onChange:s.onCloudCoverChange});case"cloudy":return p(v,{key:"cloudy-cover",disabled:r,label:o.cloudy.cloudCover,value:t.cloudCover,onChange:s.onCloudCoverChange});case"rainy":return p(h,null,p(v,{key:"rainy-cover",disabled:r,label:o.rainy.cloudCover,value:t.cloudCover,onChange:s.onCloudCoverChange}),p(v,{key:"rainy-precipitation",disabled:r,debounceDelay:0,label:o.rainy.precipitation,value:t.precipitation,onChange:s.onPrecipitationChange}));case"snowy":return p(h,null,p(v,{key:"snowy-cloud-cover",disabled:r,label:o.snowy.cloudCover,value:t.cloudCover,onChange:s.onCloudCoverChange}),p(v,{key:"snowy-precipitation",disabled:r,debounceDelay:0,label:o.snowy.precipitation,value:t.precipitation,onChange:s.onPrecipitationChange}),p("calcite-label",{key:"snow-cover",scale:"s",disabled:r,layout:"inline",title:o.snowy.snowCoverTooltip},p("calcite-checkbox",{checked:"enabled"===t.snowCover,onCalciteCheckboxChange:s.onSnowCoverChange}),o.snowy.snowCover));case"foggy":return p(v,{key:"foggy-cover",disabled:r,debounceDelay:0,label:o.foggy.fogStrength,value:t.fogStrength,onChange:s.onFogStrengthChange})}}_renderWarning(e){return p("div",{key:"warning",class:u.warning},p("calcite-icon",{icon:"exclamation-mark-triangle",scale:"s"}),e)}};e([s()],C.prototype,"viewModel",void 0),e([s()],C.prototype,"view",null),e([s()],C.prototype,"headingLevel",void 0),e([s({type:y,nonNullable:!0})],C.prototype,"visibleElements",void 0),e([s()],C.prototype,"iconClass",void 0),e([t("messages.widgetLabel",{overridable:!0})],C.prototype,"label",void 0),e([s(),d("esri/widgets/Weather/t9n/Weather")],C.prototype,"messages",void 0),e([s()],C.prototype,"_errorMessage",null),e([s()],C.prototype,"_warningMessage",null),C=e([i("esri.widgets.Weather")],C);const f=C;export{f as default};
|