/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.25/esri/copyright.txt for details. */ import{_ as e}from"../../chunks/tslib.es6.js";import i from"../../core/Accessor.js";import{watch as a,initial as t}from"../../core/reactiveUtils.js";import{property as l}from"../../core/accessorSupport/decorators/property.js";import"../../core/arrayUtils.js";import"../../core/accessorSupport/ensureType.js";import{subclass as s}from"../../core/accessorSupport/decorators/subclass.js";import r from"./ScaleRanges.js";import n from"../Slider/SliderViewModel.js";let c=class extends i{constructor(e){super(e),this.layer=null,this.scaleRanges=r.fromScaleRange({minScale:0,maxScale:0}),this.sliderViewModel=(()=>{const{max:e}=this._getSliderIndexRange(this.scaleRanges.length-1);return new n({precision:10,min:0,max:e,values:[0,e]})})()}initialize(){this.own([a((()=>({loaded:this.layer?.loaded,ready:this.view?.ready})),(({loaded:e,ready:i})=>{if(e&&i){if(this._hasTiledLayer()){const e=this._getLayerResampling()?void 0:this.mapScaleToSlider(this._getTiledLayerMaxScale()),i=this.mapScaleToSlider(this._getTiledLayerMinScale());this.sliderViewModel.effectiveMax=e,this.sliderViewModel.effectiveMin=i}"minScale"in this.layer&&"maxScale"in this.layer?(this.minScale=this.layer.minScale,this.maxScale=this.layer.maxScale):(this.minScale=void 0,this.maxScale=void 0)}}),t)])}get effectiveMaxScale(){return 0===this.maxScale?this.maxScaleLimit:this.maxScale}get effectiveMinScale(){return 0===this.minScale?this.minScaleLimit:this.minScale}get effectiveMaxScaleLimit(){return this.mapSliderToScale(this._hasTiledLayer()&&!this._getLayerResampling()?this.sliderViewModel.effectiveMax:this.sliderViewModel.max)}get effectiveMinScaleLimit(){return this.mapSliderToScale(this._hasTiledLayer()?this.sliderViewModel.effectiveMin:this.sliderViewModel.min)}get maxScale(){const e=this.mapSliderToScale(this.sliderViewModel.values[1]);return this._normalizeScale("max",e)}set maxScale(e){this._setMaxScaleOnSlider(e)}get maxScaleLimit(){return this.mapSliderToScale(this.sliderViewModel.max)}set maxScaleLimit(e){this._setSliderRange({maxScale:e,minScale:this.minScaleLimit})}get minScale(){const e=this.mapSliderToScale(this.sliderViewModel.values[0]);return this._normalizeScale("min",e)}set minScale(e){this._setMinScaleOnSlider(e)}get minScaleLimit(){return this.mapSliderToScale(this.sliderViewModel.min)}set minScaleLimit(e){this._setSliderRange({maxScale:this.maxScaleLimit,minScale:e})}get state(){const{view:e,layer:i}=this;return!e&&!i||!e&&i&&i.loaded||!i&&e&&e.ready||e&&e.ready&&i&&i.loaded?"ready":"disabled"}set view(e){this._set("view",e)}mapScaleToSlider(e){const i=this.scaleRanges.scaleToRangeIndex(e),a=this.scaleRanges.findScaleRangeByIndex(i),{maxScale:t,minScale:l}=a,{max:s,min:r}=this._getSliderIndexRange(i);return this._mapToRange(e,l,t,r,s)}mapSliderToScale(e){const i=this.scaleRanges.findScaleRangeByIndex(e),{maxScale:a,minScale:t}=i,{max:l,min:s}=this._getSliderIndexRange(e);return this._mapToRange(e,s,l,t,a)}_setSliderRange(e){this.scaleRanges=r.fromScaleRange(e);const{max:i}=this._getSliderIndexRange(this.scaleRanges.length-1);this.sliderViewModel.max=i,this.sliderViewModel.min=0,this.notifyChange("maxScaleLimit"),this.notifyChange("minScaleLimit")}_getSliderIndexRange(e){const i=Math.floor(e);return{min:i,max:i+.99999}}_mapToRange(e,i,a,t,l){return t+(e-i)*(l-t)/(a-i)}_setMaxScaleOnSlider(e){const{scaleRanges:i,sliderViewModel:a}=this;if(void 0!==e){const t=this.mapScaleToSlider(this._constrainMaxScaleToLayer(i.clampMaxScale(e)));a.values=[a.values[0],t]}}_setMinScaleOnSlider(e){const{scaleRanges:i,sliderViewModel:a}=this;if(void 0!==e){const t=this.mapScaleToSlider(this._constrainMinScaleToLayer(i.clampMinScale(e)));a.values=[t,a.values[1]]}}_constrainMinScaleToLayer(e){const{scaleRanges:i}=this;if(this._hasTiledLayer()){const{firstRange:a}=i,t=this._getTiledLayerMinScale(),l=.85;e=this._mapToRange(e,a.maxScale,a.minScale,0,1)>l||e>t?t:e}return e}_constrainMaxScaleToLayer(e){if(this._hasTiledLayer()&&!this._getLayerResampling()){const i=this._getTiledLayerMaxScale();e=e