@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 7.93 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{__decorate as e}from"tslib";import{onLocaleChange as i,formatDate as t}from"../intl.js";import{deprecateWidget as o}from"../core/deprecate.js";import"../core/has.js";import s from"../core/Logger.js";import{destroyMaybe as l}from"../core/maybe.js";import{watch as n,syncAndInitial as r}from"../core/reactiveUtils.js";import{convertTime as a}from"../core/timeUtils.js";import{property as d,subclass as c}from"../core/accessorSupport/decorators.js";import{substitute as m}from"../intl/substitute.js";import p from"./Slider.js";import h from"./Widget.js";import{css as u}from"./ShadowCast/css.js";import v from"./ShadowCast/ShadowCastViewModel.js";import g from"./ShadowCast/ShadowCastVisibleElements.js";import{DiscreteConfigurator as w}from"./ShadowCast/components/DiscreteConfigurator.js";import{DurationConfigurator as b}from"./ShadowCast/components/DurationConfigurator.js";import{ShadowTooltip as f}from"./ShadowCast/components/ShadowTooltip.js";import{ThresholdConfigurator as C}from"./ShadowCast/components/ThresholdConfigurator.js";import{loadCalciteComponents as y}from"./support/componentsUtils.js";import{globalCss as _}from"./support/globalCss.js";import{Heading as S}from"./support/Heading.js";import{formatSliderLabel as k,timeStringFormattingOptions as M,adjustTimeSliderForLocale as T,onPrimaryTickCreated as D,onSecondaryTickCreated as V}from"./support/timeWidgetUtils.js";import{TimezonePicker as j}from"./support/TimezonePicker.js";import{messageBundle as z,tsx as O}from"./support/widget.js";const P={labelFormatFunction:k,min:0,max:1439,steps:15,rangeLabelInputsEnabled:!1,visibleElements:{labels:!1,rangeLabels:!1},tickConfigs:[{mode:"position",values:[0,360,720,1080,1439],labelsVisible:!0,tickCreatedFunction:(e,i,t)=>D({tickElement:i,labelElement:t})},{mode:"position",values:[120,240,480,600,840,960,1200,1320],tickCreatedFunction:(e,i)=>V({tickElement:i})}]};let E=class extends h{constructor(e,i){super(e,i),this.viewModel=null,this.headingLevel=4,this.visibleElements=new g,this._defaultViewModel=null,this._timeSlider=new p({suppressDeprecationWarning:!0,...P,container:document.createElement("div")}),this._tooltip=null,this._onTimezoneChange=e=>{this.viewModel.utcOffset=e},this._onDateChange=e=>{const i=e.currentTarget.valueAsDate;this.viewModel.date=Array.isArray(i)?i[0]:i},o(s.getLogger(this),"Shadow Cast","arcgis-shadow-cast",{version:"5.0"}),e?.viewModel||(this._defaultViewModel=new v({view:e?.view,suppressDeprecationWarning:!0}),this.viewModel=this._defaultViewModel)}initialize(){this.addHandles([n(()=>({viewModel:this.viewModel,slider:this._timeSlider}),e=>this._connectTimeSlider(e),r),n(()=>({container:this.view?.surface,viewModel:this.viewModel,tooltipVisible:this.visibleElements.tooltip}),({container:e,viewModel:i,tooltipVisible:t})=>{this._tooltip=l(this._tooltip),null!=e&&t&&(this._tooltip=new f({viewModel:i,container:e}))},r),n(()=>({viewModel:this.viewModel,visible:this.visible}),({viewModel:e,visible:i})=>e.setRunning(i),r)])}destroy(){this._timeSlider=l(this._timeSlider),this._tooltip=l(this._tooltip),null!=this._defaultViewModel&&this.viewModel!==this._defaultViewModel&&this._defaultViewModel.destroy()}loadDependencies(){return y({"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")})}render(){const{visibleElements:e,viewModel:i}=this,t="disabled"===i.state;return O("div",{class:this.classes(u.base,_.widget,_.panel,{[_.widgetDisabled]:t}),key:this},this._renderTimeRangeSection(),e.visualizationOptions?this._renderVisualizationOptionsSection():null)}get view(){return this.viewModel?.view}set view(e){this.viewModel&&(this.viewModel.view=e)}get icon(){return"measure-building-height-shadow"}set icon(e){this._overrideIfSome("icon",e)}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get testData(){}_connectTimeSlider({viewModel:e,slider:t}){if(this.removeHandles("slider"),null==t)return;const o=e=>a(e,"milliseconds","minutes"),s=e=>a(e,"minutes","milliseconds"),l=({index:i,value:t})=>{0===i?e.startTimeOfDay=s(t):e.endTimeOfDay=s(t)},d=()=>T(t.domNode);d(),this.addHandles([n(()=>[e.startTimeOfDay,e.endTimeOfDay],e=>{t.values=e.map(o)},r),t.on("thumb-change",l),t.on("thumb-drag",l),t.on("segment-drag",()=>{[e.startTimeOfDay,e.endTimeOfDay]=t.values.map(s)}),i(d)],"slider")}_renderTimeRangeSection(){const{visibleElements:e}=this;return e.timeRangeSlider||e.datePicker?O("section",{class:u.timeRange,key:"time-range"},O(S,{level:this.headingLevel},this.messages.timeLabel),e.timeRangeSlider?this._renderTimeRange():null,e.datePicker?this._renderDatePicker():null):null}_renderTimeRange(){const{messages:e,viewModel:i,visibleElements:o}=this,{startTimeOfDay:s,endTimeOfDay:l}=i,[n,r]=[s,l].map(e=>t(new Date(e),M));return[O("div",{class:u.timeRangeIndicator,key:"time-range-indicator"},m(e.timeRange,{start:n,end:r}),o.timezone?O(j,{disabled:this._timeSlider?.disabled,value:i.utcOffset,onChange:this._onTimezoneChange}):null),O("div",{afterCreate:this._timeSliderContainerAfterCreate,afterRemoved:this._timeSliderContainerAfterRemoved,bind:this,key:"time-slider-container"})]}_timeSliderContainerAfterCreate(e){const i=this._timeSlider?.container;i&&e.appendChild(i)}_timeSliderContainerAfterRemoved(e){const i=this._timeSlider?.container;i&&e.removeChild(i)}_renderDatePicker(){return O("div",{class:u.datePickerContainer,key:u.datePickerContainer},O("calcite-input-date-picker",{class:u.datePicker,"data-testid":"date-picker",key:u.datePicker,overlayPositioning:"fixed",placement:"bottom",scale:"s",topLayerDisabled:this.topLayerDisabled,valueAsDate:this.viewModel.date,onCalciteInputDatePickerChange:this._onDateChange}))}_renderVisualizationOptionsSection(){const{headingLevel:e,messages:i,viewModel:t,visibleElements:o}=this,{colorPicker:s,thresholdContext:l,thresholdContextToggle:n,thresholdContextTimeInterval:r,thresholdContextColor:a}=o,d=e=>this.classes(t.visualizationType===e?null:u.visualizationConfigHidden);return O("section",{class:u.visualization,key:"visualization"},O(S,{level:e},i.visualizationLabel),this._renderVisualizationSelect(),O("div",{class:d("threshold"),key:"threshold-configurator"},O(C,{colorPickerVisible:s,contextColorPickerVisible:a,contextTimeIntervalVisible:r,contextToggleVisible:n,contextVisible:l,options:t.thresholdOptions})),O("div",{class:d("duration"),key:"duration-configurator"},O(b,{colorPickerVisible:s,options:t.durationOptions})),O("div",{class:d("discrete"),key:"discrete-configurator"},O(w,{colorPickerVisible:s,options:t.discreteOptions})))}_renderVisualizationSelect(){const e=this.messages,i=this.viewModel.visualizationType;return O("calcite-select",{bind:this,class:u.visualizationSelect,key:"visualization-select",label:e.visualizationLabel,scale:"s",onCalciteSelectChange:this._onVisualizationTypeChange},[{type:"threshold",label:e.threshold.label},{type:"duration",label:e.duration.label},{type:"discrete",label:e.discrete.label}].map(({type:e,label:t})=>O("calcite-option",{selected:e===i,value:e},t)))}_onVisualizationTypeChange(e){const i=e.currentTarget.selectedOption?.value;this.viewModel.visualizationType=i??"threshold"}};e([d({type:v})],E.prototype,"viewModel",void 0),e([d()],E.prototype,"view",null),e([d()],E.prototype,"headingLevel",void 0),e([d()],E.prototype,"icon",null),e([d()],E.prototype,"label",null),e([d({type:g,nonNullable:!0})],E.prototype,"visibleElements",void 0),e([d(),z("esri/widgets/ShadowCast/t9n/ShadowCast")],E.prototype,"messages",void 0),e([d()],E.prototype,"_defaultViewModel",void 0),e([d()],E.prototype,"_timeSlider",void 0),e([d()],E.prototype,"_tooltip",void 0),E=e([c("esri.widgets.ShadowCast")],E);const L=E;export{L as default};