UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

101 lines (98 loc) 5.75 kB
import type Layer from "../../layers/Layer.js"; import type Accessor from "../../core/Accessor.js"; import type Sublayer from "../../layers/support/Sublayer.js"; import type ScaleRanges from "./ScaleRanges.js"; import type SliderViewModel from "../Slider/SliderViewModel.js"; import type { MapViewOrSceneView } from "../../views/MapViewOrSceneView.js"; import type { SliderViewModelProperties } from "../Slider/SliderViewModel.js"; export interface ScaleRangeSliderViewModelProperties extends Partial<Pick<ScaleRangeSliderViewModel, "layer" | "maxScaleLimit" | "minScaleLimit" | "view">> { /** * The maximum scale of the active scale range. When the maxScale * reaches the [maxScaleLimit](https://developers.arcgis.com/javascript/latest/references/core/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel/#maxScaleLimit), the maxScale * value becomes 0 and there is no maximum scale set. */ maxScale?: number; /** * The minimum scale of the active scale range. When the minScale * reaches the [minScaleLimit](https://developers.arcgis.com/javascript/latest/references/core/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel/#minScaleLimit), the minScale * value becomes 0 and there is no minimum scale set. */ minScale?: number; /** * The [SliderViewModel][SliderViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/Slider/SliderViewModel/) * for supporting the scale range slider widget. */ sliderViewModel?: SliderViewModelProperties; } export type ScaleRangeSliderViewModelState = "disabled" | "ready"; /** * Provides the logic for the [ScaleRangeSlider](https://developers.arcgis.com/javascript/latest/references/core/widgets/ScaleRangeSlider/) widget and [component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-scale-range-slider/). * * @since 4.13 * @see [ScaleRangeSlider](https://developers.arcgis.com/javascript/latest/references/core/widgets/ScaleRangeSlider/) widget * @see [Scale Range Slider component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-scale-range-slider/) * @see [ScaleRanges](https://developers.arcgis.com/javascript/latest/references/core/widgets/ScaleRangeSlider/ScaleRanges/) * @see [Programming patterns: Widget viewModel pattern](https://developers.arcgis.com/javascript/latest/programming-patterns/#widget-viewmodel-pattern) */ export default class ScaleRangeSliderViewModel extends Accessor { constructor(properties?: ScaleRangeSliderViewModelProperties); /** * When provided, the initial [minScale](https://developers.arcgis.com/javascript/latest/references/core/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel/#minScale) and [maxScale](https://developers.arcgis.com/javascript/latest/references/core/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel/#maxScale) values will match the layer's. * * When a tiled layer is used, the slider will be restricted from moving the slider thumbs past the `lods` of the layer's tiling scheme. * Since version 4.28, when a [MapImageLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/MapImageLayer/) is used, the slider will be restricted from moving past the min/max scale defined on the map service. * The unavailable scale range will be designated with a dashed line. */ accessor layer: Layer | Sublayer | null | undefined; /** * The maximum scale of the active scale range. When the maxScale * reaches the [maxScaleLimit](https://developers.arcgis.com/javascript/latest/references/core/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel/#maxScaleLimit), the maxScale * value becomes 0 and there is no maximum scale set. */ get maxScale(): number; set maxScale(value: number | undefined); /** The lowest possible maximum scale value from the slider. */ accessor maxScaleLimit: number; /** * The minimum scale of the active scale range. When the minScale * reaches the [minScaleLimit](https://developers.arcgis.com/javascript/latest/references/core/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel/#minScaleLimit), the minScale * value becomes 0 and there is no minimum scale set. */ get minScale(): number; set minScale(value: number | undefined); /** The highest possible minimum scale value from the slider. */ accessor minScaleLimit: number; /** The valid scale ranges available based on the slider position. */ get scaleRanges(): ReturnType<typeof ScaleRanges.fromScaleRange>; /** * The [SliderViewModel][SliderViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/Slider/SliderViewModel/) * for supporting the scale range slider widget. */ get sliderViewModel(): SliderViewModel; set sliderViewModel(value: SliderViewModelProperties); /** * The current state of the widget. * * @default "disabled" */ get state(): ScaleRangeSliderViewModelState; /** * A reference to the [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/) or [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). * Set this to link the widget to a specific view. */ accessor view: MapViewOrSceneView | null | undefined; /** * Utility method for converting scale-to-slider values. * * @param scale - The map scale to be converted. * @returns The value of the slider. */ mapScaleToSlider(scale: number): number; /** * Utility method for converting slider-to-scale values. * * @param value - The value of the slider. * @returns The map scale that corresponds to the value of the slider. */ mapSliderToScale(value: number): number; }