You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
17 lines
7.0 KiB
17 lines
7.0 KiB
// All material copyright Esri, All Rights Reserved, unless otherwise specified. |
|
// See https://js.arcgis.com/4.30/esri/copyright.txt for details. |
|
//>>built |
|
define("../../chunks/tslib.es6 ../../core/Accessor ../../core/reactiveUtils ../../core/accessorSupport/decorators/property ../../core/has ../../core/Logger ../../core/RandomLCG ../../core/accessorSupport/decorators/subclass ./ScaleRanges ../Slider/SliderViewModel".split(" "),function(e,d,l,f,r,t,u,n,m,p){d=class extends d{constructor(a){super(a);this.layer=null;this.mode="range";this.scaleRanges=m.fromScaleRange({minScale:0,maxScale:0});this.sliderViewModel=(()=>{const {max:b}=this._getSliderIndexRange(this.scaleRanges.length- |
|
1);return new p({precision:10,min:0,max:b,values:[0,b]})})()}initialize(){this.addHandles([l.watch(()=>this.layer,a=>a?.load().catch(()=>{})),l.watch(()=>this.mode,a=>{"range"===a&&1===this.sliderViewModel.values?.length?this.sliderViewModel.values=[this.sliderViewModel.min,this.sliderViewModel.values[0]]:2===this.sliderViewModel.values?.length&&("min-scale-only"===a?this.sliderViewModel.values=[this.sliderViewModel.values[0]]:"max-scale-only"===a&&(this.sliderViewModel.values=[this.sliderViewModel.values[1]]))}), |
|
l.watch(()=>({loaded:this.layer?.loaded,ready:this.view?.ready}),({loaded:a,ready:b})=>{if(a&&b){if(this._hasTiledLayer())a=this._getLayerResampling()?void 0:this.mapScaleToSlider(this._getTiledLayerMaxScale()),b=this.mapScaleToSlider(this._getTiledLayerMinScale()),this.sliderViewModel.effectiveMax=a,this.sliderViewModel.effectiveMin=b;else{const {minScale:c=0,maxScale:g=0}=(this.layer&&"maxScaleRange"in this.layer?this.layer.maxScaleRange:null)??{};this.sliderViewModel.effectiveMax=0===g?void 0: |
|
this.mapScaleToSlider(g);this.sliderViewModel.effectiveMin=0===c?void 0:this.mapScaleToSlider(c)}(a=this.layer)&&"minScale"in a&&"maxScale"in a?(this.minScale=a.minScale,this.maxScale=a.maxScale):this.maxScale=this.minScale=void 0}},l.initial)])}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.sliderViewModel.effectiveMax?? |
|
this.sliderViewModel.max)}get effectiveMinScaleLimit(){return this.mapSliderToScale(this.sliderViewModel.effectiveMin??this.sliderViewModel.min)}get maxScale(){return this._getScale("max")}set maxScale(a){this._setMaxScaleOnSlider(a)}get maxScaleLimit(){return this.mapSliderToScale(this.sliderViewModel.max)}set maxScaleLimit(a){this._setSliderRange({maxScale:a,minScale:this.minScaleLimit})}get minScale(){return this._getScale("min")}set minScale(a){this._setMinScaleOnSlider(a)}get minScaleLimit(){return this.mapSliderToScale(this.sliderViewModel.min)}set minScaleLimit(a){this._setSliderRange({maxScale:this.maxScaleLimit, |
|
minScale:a})}get state(){const {view:a,layer:b}=this;return!a&&!b||!a&&b?.loaded||!b&&a?.ready||a&&a.ready&&b?.loaded?"ready":"disabled"}set view(a){this._set("view",a)}mapScaleToSlider(a){const b=this.scaleRanges.scaleToRangeIndex(a),c=this.scaleRanges.findScaleRangeByIndex(b),{maxScale:g,minScale:h}=c,{max:k,min:q}=this._getSliderIndexRange(b);return this._mapToRange(a,h,g,q,k)}mapSliderToScale(a){const b=this.scaleRanges.findScaleRangeByIndex(a),{maxScale:c,minScale:g}=b,{max:h,min:k}=this._getSliderIndexRange(a); |
|
return this._mapToRange(a,k,h,g,c)}_setSliderRange(a){this.scaleRanges=m.fromScaleRange(a);({max:a}=this._getSliderIndexRange(this.scaleRanges.length-1));this.sliderViewModel.max=a;this.sliderViewModel.min=0;this.notifyChange("maxScaleLimit");this.notifyChange("minScaleLimit")}_getSliderIndexRange(a){a=Math.floor(a);return{min:a,max:a+.99999}}_mapToRange(a,b,c,g,h){return g+(a-b)*(h-g)/(c-b)}_getSliderValue(a){const {min:b,max:c,values:g}=this.sliderViewModel,[h,k]=g;switch(this.mode){case "max-scale-only":return"min"=== |
|
a?b:h;case "min-scale-only":return"min"===a?h:c;default:return"min"===a?h??b:k??c}}_getScale(a){const b=this.mapSliderToScale(this._getSliderValue(a));return this._normalizeScale(a,b)}_setMaxScaleOnSlider(a){const {scaleRanges:b,sliderViewModel:c}=this;if(void 0!==a)switch(a=this.mapScaleToSlider(this._constrainMaxScaleToLayer(b.clampMaxScale(a))),this.mode){case "range":c.values=[c.values[0],a];break;case "max-scale-only":c.values=[a]}}_setMinScaleOnSlider(a){const {scaleRanges:b,sliderViewModel:c}= |
|
this;if(void 0!==a)switch(a=this.mapScaleToSlider(this._constrainMinScaleToLayer(b.clampMinScale(a))),this.mode){case "range":c.values=[a,c.values[1]];break;case "min-scale-only":c.values=[a]}}_constrainMinScaleToLayer(a){var {scaleRanges:b}=this;if(this._hasTiledLayer()){({firstRange:b}=b);const c=this._getTiledLayerMinScale();a=.85<this._mapToRange(a,b.maxScale,b.minScale,0,1)?c:a>c?c:a}return a}_constrainMaxScaleToLayer(a){if(this._hasTiledLayer()&&!this._getLayerResampling()){const b=this._getTiledLayerMaxScale(); |
|
a=a<b?b:a}return a}_normalizeScale(a,b){var c="max"===a?"maxScale":"minScale";c=this._hasTiledLayer()?"min"===a?this._getTiledLayerMinScale():this._getTiledLayerMaxScale():this.scaleRanges[c];a=this._hasTiledLayer()?"min"===a?this._getTiledLayerRealMinScale():this._getTiledLayerRealMaxScale():c;return Number((0===b||a===b||1E-6>=Math.abs(a-b)?0:b).toFixed(6))}_getLayerLODS(){return this.layer?.loaded&&"tileInfo"in this.layer?"imagery-tile"===this.layer?.type&&"Raster"===this.layer.raster?.tileType? |
|
null:this.layer.tileInfo?.lods:null}_getLayerResampling(){return this.layer?.loaded?"resampling"in this.layer?this.layer.resampling:!0:!1}_getTiledLayerMinScale(){const a=this._getLayerLODS();return this.scaleRanges.clampMinScale(a[0].scale)}_getTiledLayerMaxScale(){const a=this._getLayerLODS();return a[a.length-1].scale}_getTiledLayerRealMinScale(){const a=this._getLayerLODS(),b=this.layer;return this.scaleRanges.clampMinScale((b&&"sourceJSON"in b?b.sourceJSON?.tileInfo?.lods??a:a)[0].scale)}_getTiledLayerRealMaxScale(){var a= |
|
this._getLayerLODS();const b=this.layer;a=b&&"sourceJSON"in b?b.sourceJSON?.tileInfo?.lods??a:a;return a[a.length-1].scale}_hasTiledLayer(){return!!this._getLayerLODS()}};e.__decorate([f.property({readOnly:!0})],d.prototype,"effectiveMaxScale",null);e.__decorate([f.property({readOnly:!0})],d.prototype,"effectiveMinScale",null);e.__decorate([f.property()],d.prototype,"effectiveMaxScaleLimit",null);e.__decorate([f.property()],d.prototype,"effectiveMinScaleLimit",null);e.__decorate([f.property()],d.prototype, |
|
"layer",void 0);e.__decorate([f.property()],d.prototype,"maxScale",null);e.__decorate([f.property()],d.prototype,"maxScaleLimit",null);e.__decorate([f.property()],d.prototype,"mode",void 0);e.__decorate([f.property()],d.prototype,"minScale",null);e.__decorate([f.property()],d.prototype,"minScaleLimit",null);e.__decorate([f.property()],d.prototype,"scaleRanges",void 0);e.__decorate([f.property()],d.prototype,"sliderViewModel",void 0);e.__decorate([f.property({readOnly:!0})],d.prototype,"state",null); |
|
e.__decorate([f.property()],d.prototype,"view",null);return d=e.__decorate([n.subclass("esri.widgets.ScaleRangeSlider.ScaleRangeSliderViewModel")],d)}); |