@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 7.5 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{__decorate as e}from"tslib";import{deprecateWidget as t}from"../core/deprecate.js";import i from"../core/Logger.js";import{watch as s,syncAndInitial as o}from"../core/reactiveUtils.js";import{property as l,subclass as a}from"../core/accessorSupport/decorators.js";import{onLocaleChange as n}from"../intl/locale.js";import r from"./Widget.js";import{css as d}from"./Daylight/css.js";import c from"./Daylight/DaylightViewModel.js";import p from"./Daylight/VisibleElements.js";import{orderedSeasons as h}from"./Daylight/support/daylightUtils.js";import g from"./Daylight/support/SliderWithDropdown.js";import{css as m}from"./Slider/css.js";import{loadCalciteComponents as u}from"./support/componentsUtils.js";import{globalCss as y}from"./support/globalCss.js";import{Heading as b}from"./support/Heading.js";import{onPrimaryTickCreated as v,onSecondaryTickCreated as S,adjustTimeSliderForLocale as w,useAmPm as k}from"./support/timeWidgetUtils.js";import{messageBundle as _,vmEvent as C,tsx as D,tsxFragment as M}from"./support/widget.js";const f="date";let P=class extends r{constructor(e,s){super(e,s),this.headingLevel=3,this.viewModel=new c({suppressDeprecationWarning:!0}),this.visibleElements=new p,this.dateOrSeason=f,this._timeSlider=new g({viewModel:this.viewModel.timeSliderViewModel,steps:this.timeSliderSteps,labelInputsEnabled:!1,visibleElements:{labels:!0},tickConfigs:[{mode:"position",values:[0,360,720,1080,1439],labelsVisible:!0,tickCreatedFunction:(e,t,i)=>v({tickElement:t,labelElement:i,tickClasses:E,onClick:this._makeGoToTime(e)})},{mode:"position",values:[120,240,480,600,840,960,1200,1320],tickCreatedFunction:(e,t)=>S({tickElement:t,tickClasses:E,onClick:this._makeGoToTime(e)})}]}),this._onPlayDayClick=()=>{this.viewModel.toggleDayPlaying()},this._onDateChange=e=>{const t=e.currentTarget.valueAsDate;this.viewModel.onDateChange(Array.isArray(t)?t[0]:t)},this._onYearPlayClick=()=>{this.viewModel.toggleYearPlaying()},this._onSeasonChange=e=>{this.viewModel.currentSeason=e.currentTarget.value},this._onSunLightingCheckboxChange=()=>{this.viewModel.toggleSunLightingEnabled()},this._onShadowCheckboxChange=()=>{this.viewModel.toggleDirectShadowsEnabled()},t(i.getLogger(this),"Daylight","arcgis-daylight",{version:"4.34"})}get icon(){return"brightness"}set icon(e){this._overrideIfSome("icon",e)}get label(){return this.messages?.title??""}set label(e){this._overrideIfSome("label",e)}get playSpeedMultiplier(){return this.viewModel.playSpeedMultiplier}set playSpeedMultiplier(e){this.viewModel.playSpeedMultiplier=e}get timeSliderSteps(){return this._timeSlider?.steps??5}set timeSliderSteps(e){this._timeSlider.steps=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}postInitialize(){this.viewModel.isSupported&&(this.addHandles([s(()=>this.viewModel.timeSliderViewModel,e=>this._timeSlider.viewModel=e,o),s(()=>this.visibleElements?.timezone,e=>this._timeSlider.showDropDown=e,o),s(()=>!this.viewModel.sunLightingEnabled,e=>{this._timeSlider.disabled=e},o),n(()=>this._adjustTimeSliderPadding())]),this._adjustTimeSliderPadding())}destroy(){this._timeSlider.destroy()}render(){const{messages:e,viewModel:t,visibleElements:i}=this,s=t.isSupported;return D("div",{class:this.classes(d.base,y.widget)},s?D(M,null,i.header?D(b,{level:this.headingLevel},e.title):null,this._renderTimeOptions(),i.datePicker?this._renderDateOrSeason():null,i.sunLightingToggle?this._renderSunLightingToggle():null,i.shadowsToggle?this._renderShadowsToggle():null):D("div",{class:d.panelError,key:"unsupported"},D("p",null,e.unsupported)))}loadDependencies(){return u({button:()=>import("@esri/calcite-components/dist/components/calcite-button"),checkbox:()=>import("@esri/calcite-components/dist/components/calcite-checkbox"),label:()=>import("@esri/calcite-components/dist/components/calcite-label"),"input-date-picker":()=>import("@esri/calcite-components/dist/components/calcite-input-date-picker"),option:()=>import("@esri/calcite-components/dist/components/calcite-option"),select:()=>import("@esri/calcite-components/dist/components/calcite-select")})}_adjustTimeSliderPadding(){w(this.domNode?.querySelector(`.${m.base}`))}_renderTimeOptions(){const{viewModel:e,visibleElements:t,messages:i}=this,{dayPlaying:s}=e,o=!e.sunLightingEnabled;return D("div",{class:this.classes(d.dayContainer,{[d.sliderDateOn]:t.datePicker,[d.sliderDateOff]:!t.datePicker,[d.sliderAmPmOn]:k(),[d.containerDisabled]:o}),key:"daylight-time-options"},this._timeSlider.render(),t.playButtons?this._renderPlayPauseButton({playing:s,disabled:o,label:i.playDay,onClick:this._onPlayDayClick}):null)}_renderDateOptions(){const{viewModel:e,visibleElements:t,messages:i}=this,{yearPlaying:s}=e,o=!e.sunLightingEnabled;return D("div",{class:this.classes(d.dateContainer,o&&d.containerDisabled),key:d.dateContainer},D("calcite-input-date-picker",{class:d.datePicker,"data-testid":"daylight-date-picker",disabled:o,key:d.datePicker,overlayPositioning:"fixed",placement:"bottom",topLayerDisabled:this.topLayerDisabled,valueAsDate:e.localDate,onCalciteInputDatePickerChange:this._onDateChange}),t.playButtons?this._renderPlayPauseButton({playing:s,disabled:o,label:i.playYear,onClick:this._onYearPlayClick}):null)}_renderPlayPauseButton({playing:e,disabled:t,label:i,onClick:s}){return D("calcite-button",{appearance:"solid",class:d.playPauseButton,disabled:t,iconStart:e?"pause-f":"play-f",label:i,onclick:s,round:!0,title:i,type:"button"})}_renderSeasonSelect(){const{messages:e,viewModel:t}=this,i=!t.sunLightingEnabled;return D("calcite-select",{class:this.classes(d.seasonPicker),disabled:i,label:e.season,onCalciteSelectChange:this._onSeasonChange},h.map(i=>D("calcite-option",{selected:t.currentSeason===i,value:i},e[i])))}_renderDateOrSeason(){return"date"===this.dateOrSeason?this._renderDateOptions():this._renderSeasonSelect()}_renderSunLightingToggle(){const e=this.messages?.sunLightingToggle;return D("calcite-label",{key:"date-time-toggle",layout:"inline",scale:"s",title:e?.tooltip},D("calcite-checkbox",{checked:this.viewModel.sunLightingEnabled,class:d.sunLightingCheckbox,onCalciteCheckboxChange:this._onSunLightingCheckboxChange}),e?.label)}_renderShadowsToggle(){const e=this.messages.shadowsToggle;return D("calcite-label",{key:"shadow-toggle",layout:"inline",scale:"s",title:e?.tooltip},D("calcite-checkbox",{checked:this.viewModel.directShadowsEnabled,class:d.shadowsCheckbox,onCalciteCheckboxChange:this._onShadowCheckboxChange}),e.label)}_makeGoToTime(e){return()=>{this.viewModel.timeSliderPosition=e}}};e([l(),_("esri/widgets/Daylight/t9n/Daylight")],P.prototype,"messages",void 0),e([l(),_("esri/widgets/support/t9n/timezone")],P.prototype,"timezoneMessages",void 0),e([l()],P.prototype,"headingLevel",void 0),e([l()],P.prototype,"icon",null),e([l()],P.prototype,"label",null),e([l()],P.prototype,"playSpeedMultiplier",null),e([l()],P.prototype,"timeSliderSteps",null),e([l()],P.prototype,"view",null),e([C("user-date-time-change"),l({type:c})],P.prototype,"viewModel",void 0),e([l({type:p,nonNullable:!0})],P.prototype,"visibleElements",void 0),e([l({cast(e){return"season"===e||"date"===e?e:(i.getLogger(this).warn(`"${e}" is not a valid option. Acceptable values are only "date" or "season". Defaulting to "${f}".`),f)}})],P.prototype,"dateOrSeason",void 0),e([l()],P.prototype,"_timeSlider",void 0),P=e([a("esri.widgets.Daylight")],P);const E=[y.interactive,y.anchor],L=P;export{L as default};