UNPKG

@arcgis/core

Version:

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

1,028 lines (986 loc) 28.6 kB
import type Color from "../Color.js"; import type Point from "../geometry/Point.js"; import type Polygon from "../geometry/Polygon.js"; import type Polyline from "../geometry/Polyline.js"; import type Layer from "../layers/Layer.js"; import type Sublayer from "../layers/support/Sublayer.js"; import type LayerView from "../views/layers/LayerView.js"; import type { RelationshipFocus } from "../renderers/support/types.js"; import type { SymbolUnion } from "../symbols/types.js"; /** * The z axis orientation. * * @since 5.0 */ export interface Axes { /** * z axis orientation. * * @since 5.0 */ z?: number; } /** * Describes a point in terms of a location, a [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/), and a coordinate, a string. * * @since 5.0 */ export interface Position { /** * A point geometry representing the location described by the conversion. * * @since 5.0 */ location?: Point | null; /** * A string representing the location. * * @since 5.0 */ coordinate?: string | null; } /** @since 5.0 */ export type Mode = "live" | "capture"; /** * This object describes how a Format should be projected and formatted for display. Used to define * custom Formats that require custom conversion and/or projection logic. * * @since 5.0 */ export interface ConversionInfo { /** * A function that takes a point and returns a [Position](https://developers.arcgis.com/javascript/latest/references/core/widgets/types/#Position). * * @since 5.0 */ convert?: ConvertFunction; /** * A function that takes a string and returns a Point. * * @since 5.0 */ reverseConvert?: ReverseConvertFunction; } /** * A user-provided function that converts a [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/) into a * [Position](https://developers.arcgis.com/javascript/latest/references/core/widgets/types/#Position). This function may * be necessary to provide as part of [ConversionInfo](https://developers.arcgis.com/javascript/latest/references/core/widgets/types/#ConversionInfo) * when creating a custom [Format](https://developers.arcgis.com/javascript/latest/references/core/widgets/CoordinateConversion/support/Format/). * * @param point - A point to be converted. * @returns The returned position. * @since 5.0 */ export type ConvertFunction = (point: Point) => Position; /** * A user-provided function that converts a coordinate string into a [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/). * This function may be necessary to provide as part of [ConversionInfo](https://developers.arcgis.com/javascript/latest/references/core/widgets/types/#ConversionInfo) * when creating a custom [Format](https://developers.arcgis.com/javascript/latest/references/core/widgets/CoordinateConversion/support/Format/). * * @param coordinate - The string to be reversed. * @returns The returned point * @since 5.0 */ export type ReverseConvertFunction = (coordinate: string) => Point; /** * A coordinate segment represents one piece of a coordinate string. * * > [!WARNING] * > * > A MGRS coordinate, for example `30UVG898998`, is described by four segments: * > 1. Alias `Z`, the gridzone: `30U` * > 2. Alias `S`, the 100,000 meter square designator: `VG` * > 3. Alias `X`, the easting (x coordinate with respect to the 10,000 meter square): `898` * > 4. Alias `Y`, the northing (y coordinate with respect to the 10,000 meter square): `998` * * @since 5.0 */ export interface CoordinateSegment { /** * A string that provides the name for this segment of a coordinate string. * * @since 5.0 */ alias: string; /** * A string that describes the role of this segment. * * @since 5.0 */ description: string; /** * A regular expression that should extract this segment from the complete coordinate. * * @since 5.0 */ searchPattern: RegExp; } /** * An object that defines a layer, optional sublayer IDs, and a custom title for legend display. * Use this to specify which layers and sublayers appear in the legend and how they are labeled with * [layerInfos](https://developers.arcgis.com/javascript/latest/references/core/widgets/Legend/LegendViewModel/). * * @since 5.0 */ export interface LayerInfo { /** * A layer to display in the legend. * * @since 5.0 */ layer: Layer | Sublayer; /** * Specifies a title for the layer to display above its symbols and descriptions. * If no title is specified the service name is used. * * @since 5.0 */ title: string; /** * The IDs of the sublayers for which to display legend information. * Only applicable if the `layer` is a [MapImageLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/MapImageLayer/), [SubtypeGroupLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SubtypeGroupLayer/) * or [WMSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/WMSLayer/). * * @since 5.0 */ sublayerIds?: number[]; } /** * Properties defining the scheme of each of the supported [legendElement](https://developers.arcgis.com/javascript/latest/references/core/widgets/Legend/support/ActiveLayerInfo/#legendElements). * * @since 5.0 */ export type LegendElement = SymbolTableElement | ColorRampElement | StretchRampElement | OpacityRampElement | SizeRampElement | HeatmapRampElement | RelationshipRampElement | UnivariateColorSizeRampElement | PieChartRampElement; /** * Properties defining the scheme of each SymbolTableElementType. * * @since 5.0 */ export type SymbolTableElementType = ImageSymbolTableElementInfo | SymbolTableElementInfo | LegendElement; /** * Describes the schema of the SymbolTableElement used as a [legendElement](https://developers.arcgis.com/javascript/latest/references/core/widgets/Legend/support/ActiveLayerInfo/#legendElements). This * legend element is used for [UniqueValueRenderer](https://developers.arcgis.com/javascript/latest/references/core/renderers/UniqueValueRenderer/) and * [ClassBreaksRenderer](https://developers.arcgis.com/javascript/latest/references/core/renderers/ClassBreaksRenderer/). * * @since 5.0 */ export interface SymbolTableElement { /** * The type of this element is always `symbol-table`. * * @since 5.0 */ type: "symbol-table"; /** * The title of the renderer as displayed in the legend. * * @since 5.0 */ title?: RendererTitle | DotDensityTitle | string | null; /** * An * array of each symbol/category/break rendered for the symbol table. For example, this may be individual * breaks for a ClassBreaksRenderer, or unique values for a UniqueValueRenderer. * * @since 5.0 */ infos: SymbolTableElementType[]; /** * Only used for renderers set to ImageryLayers. Indicates the type of * renderer set on the layer (e.g. `stretched` or `Unique Values`). * * @since 5.0 */ legendType?: string | null; } /** * Properties defining the scheme of the SymbolTableElementInfo. * * @since 5.0 */ export interface SymbolTableElementInfo { /** * The symbol for the corresponding `value` in the legend. * * @since 5.0 */ symbol: SymbolUnion; /** * The * title of the renderer as displayed in the Legend. * * @since 5.0 */ label?: RampTitle | string | null; /** * The value corresponding with the given `symbol` in the legend. * * @since 5.0 */ value?: any; /** * The size of the symbol in points. * * @since 5.0 */ size?: number | null; /** * A preview of the symbol element as displayed in the legend. * * @since 5.0 */ preview?: HTMLElement | null; /** * The aria-label for the preview element. * * @since 5.0 */ previewAriaLabel?: RendererTitle | DotDensityTitle | string | null; } /** * Properties defining the scheme of each of the ImageSymbolTableElementInfo. This applies only to * ImageryLayer renderers. * * @since 5.0 */ export interface ImageSymbolTableElementInfo { /** * The label of the category corresponding to the given image. * * @since 5.0 */ label?: StretchMultibandTitle | string | null; /** * The data URI of the image representing a colored pixel in the renderer. * * @since 5.0 */ src: string; /** * The aria-label for the preview element. * * @since 5.0 */ previewAriaLabel?: RendererTitle | DotDensityTitle | string | null; /** * The opacity of the image (`0` to `1`). * * @since 5.0 */ opacity?: number | null; /** * The width of the image in pixels. * * @since 5.0 */ width?: number | null; /** * The height of the image in pixels. * * @since 5.0 */ height?: number | null; } /** * Describes the schema of the ColorRampElement used as a [legendElement](https://developers.arcgis.com/javascript/latest/references/core/widgets/Legend/support/ActiveLayerInfo/#legendElements). * * @since 5.0 */ export interface ColorRampElement { /** * The type of this element is always `color-ramp`. * * @since 5.0 */ type: "color-ramp"; /** * The title of the color ramp as displayed in the legend. * * @since 5.0 */ title?: RampTitle | string | null; /** * The * individual color stops rendered in the legend that correspond to the color visual variable in the renderer. * * @since 5.0 */ infos: ColorRampStop[]; /** * A preview of the element as displayed in the legend. * * @since 5.0 */ preview?: HTMLElement | null; } /** * Describes the schema of the StretchRampElement used as a [legendElement](https://developers.arcgis.com/javascript/latest/references/core/widgets/Legend/support/ActiveLayerInfo/#legendElements). * * @since 5.0 */ export interface StretchRampElement { /** * The type of this element is always `stretch-ramp`. * * @since 5.0 */ type: "stretch-ramp"; /** * The title of the color ramp as displayed in the legend. * * @since 5.0 */ title?: RampTitle | string | null; /** * The * individual color stops rendered in the legend that correspond to the color visual variable in the renderer. * * @since 5.0 */ infos: ColorRampStop[]; /** * A preview of the element as displayed in the legend. * * @since 5.0 */ preview?: HTMLElement | null; } /** * Describes the schema of the OpacityRampElement used as a [legendElement](https://developers.arcgis.com/javascript/latest/references/core/widgets/Legend/support/ActiveLayerInfo/#legendElements). * * @since 5.0 */ export interface OpacityRampElement { /** * The type of this element is always `opacity-ramp`. * * @since 5.0 */ type: "opacity-ramp"; /** * The title of the opacity ramp as displayed in the legend. * * @since 5.0 */ title?: RampTitle | string | null; /** * The * individual opacity stops rendered in the legend that correspond to the opacity visual variable in the renderer. * * @since 5.0 */ infos: OpacityRampStop[]; /** * A preview of the element as displayed in the legend. * * @since 5.0 */ preview?: HTMLElement | null; } /** * Describes the schema of the SizeRampElement used as a [legendElement](https://developers.arcgis.com/javascript/latest/references/core/widgets/Legend/support/ActiveLayerInfo/#legendElements). * * @since 5.0 */ export interface SizeRampElement { /** * The type of this element is always `size-ramp`. * * @since 5.0 */ type: "size-ramp"; /** * The title of the size ramp as displayed in the legend. * * @since 5.0 */ title?: ClusterTitle | RampTitle | string | null; /** * The * individual size stops rendered in the legend that correspond to the size visual variable in the renderer. * * @since 5.0 */ infos: SizeRampStop[]; /** * The theme of this element. * * @since 5.0 */ theme?: "spike" | null; } /** * Describes the schema of the HeatmapRampElement used as a [legendElement](https://developers.arcgis.com/javascript/latest/references/core/widgets/Legend/support/ActiveLayerInfo/#legendElements). * * @since 5.0 */ export interface HeatmapRampElement { /** * The type of this element is always `heatmap-ramp`. * * @since 5.0 */ type: "heatmap-ramp"; /** * The title of the heatmap ramp as displayed in the legend. * * @since 5.0 */ title?: RendererTitle | string | null; /** * The * individual color stops rendered in the legend that correspond to the heatmap colorStops in the renderer. * * @since 5.0 */ infos: HeatmapRampStop[]; /** * A preview of the element as displayed in the legend. * * @since 5.0 */ preview?: HTMLElement | null; } /** * Describes the schema of the RelationshipRampElement used as a [legendElement](https://developers.arcgis.com/javascript/latest/references/core/widgets/Legend/support/ActiveLayerInfo/#legendElements). * * @since 5.0 */ export interface RelationshipRampElement { /** * The type of this element is always `relationship-ramp`. * * @since 5.0 */ type: "relationship-ramp"; /** * The number of classes for each field comprising the renderer. Can either * be 2, 3, or 4. * * @since 5.0 */ numClasses: number; /** * Determines the orientation of the Legend. Values can be `HH`, `HL`, `LH`, `LL`. * * @since 5.0 */ focus: RelationshipFocus; /** * A 2-dimensional array of colors as displayed in the legend grid. * * @since 5.0 */ colors: Color[][]; /** * The labels for * each corner of the legend. * * @since 5.0 */ labels: RelationshipLabels; /** * The rotation of the legend in degrees (0-360). `0` degrees displays the legend * as a square with the `LL` cell in the bottom left corner of the legend and the `HH` cell in the top right corner. * * @since 5.0 */ rotation: number; /** * The title of the renderer as displayed in the legend. * * @since 5.0 */ title?: string | null; /** * Info objects associated with the relationship renderer. * * @since 5.0 */ infos?: any[] | null; } /** * Describes the schema of the UnivariateColorSizeRampElement used as a [legendElement](https://developers.arcgis.com/javascript/latest/references/core/widgets/Legend/support/ActiveLayerInfo/#legendElements). * * @since 5.0 */ export interface UnivariateColorSizeRampElement { /** * The type of this element is `univariate-above-and-below-ramp` or `univariate-color-size-ramp`. * * @since 5.0 */ type: "univariate-above-and-below-ramp" | "univariate-color-size-ramp"; /** * The title of the color ramp as displayed in the legend. * * @since 5.0 */ title?: ClusterTitle | RampTitle | string | null; /** * The * individual color stops rendered in the legend that correspond to the color visual variable in the renderer. * * @since 5.0 */ infos: (SizeRampElement | ColorRampElement)[]; } /** * Describes the schema of the UnivariateColorSizeRampElement used as a [legendElement](https://developers.arcgis.com/javascript/latest/references/core/widgets/Legend/support/ActiveLayerInfo/#legendElements). * * @since 5.0 */ export interface PieChartRampElement { /** * The type of this element is always `pie-chart-ramp`. * * @since 5.0 */ type: "pie-chart-ramp"; /** * The title of the color ramp as displayed in the legend. * * @since 5.0 */ title?: RendererTitle | string | null; /** * The * individual color stops rendered in the legend that correspond to the color visual variable in the renderer. * * @since 5.0 */ infos: SymbolTableElementInfo[]; /** * A preview of the element as displayed in the legend. * * @since 5.0 */ preview?: HTMLElement | null; } /** * Describes the schema of the RendererTitle element. * * @since 5.0 */ export interface RendererTitle { /** * The title of the renderer as displayed in the legend. * * @since 5.0 */ title?: string | null; /** * The field name used in the renderer. This is used in the * generated title of the renderer in the legend. * * @since 5.0 */ field?: string | null; /** * If a normalization field is provided to the renderer, this field * is also used in the generated title for the renderer in the legend. * * @since 5.0 */ normField?: string | null; /** * Indicates if a percentage is used in the normalization of the * renderer. This is used to create a more readable legend for that scenario. * * @since 5.0 */ normByPct?: boolean | null; } /** * Describes the schema of the DotDensityTitle element. * * @since 5.0 */ export interface DotDensityTitle { /** * The value. * * @since 5.0 */ value: number; /** * The unit. * * @since 5.0 */ unit?: string | null; } /** * Describes the schema of the ClusterTitle element. * * @since 5.0 */ export interface ClusterTitle { /** * Whether to show the count. * * @since 5.0 */ showCount: boolean; } /** * Describes the schema of the RampTitle element. * * @since 5.0 */ export interface RampTitle { /** * The field name used in a visual variable of a renderer. This is used in the * generated title of the corresponding ramp in the legend. * * @since 5.0 */ field?: string | null; /** * If provided, the normalization field name used in a visual variable of a renderer. * This is used in the generated title of the corresponding ramp in the legend. * * @since 5.0 */ normField?: string | null; /** * If `true`, the legend formats to display the field and normalization field as a ratio. * * @since 5.0 */ ratio: boolean; /** * If `true`, the legend formats to display the field and normalization field as a percentage. * * @since 5.0 */ ratioPercent: boolean; /** * If `true`, the legend formats to display the field and normalization field as a percentage of total. * * @since 5.0 */ ratioPercentTotal: boolean; } /** * Describes the schema of the StretchMultibandTitle element. * * @since 5.0 */ export interface StretchMultibandTitle { /** * The color name. * * @since 5.0 */ colorName: string; /** * The band name. * * @since 5.0 */ bandName: string; } /** * Describes the schema of the SizeRampStop element. Each SizeRampStop represents a single stop of the * [SizeVariable](https://developers.arcgis.com/javascript/latest/references/core/renderers/visualVariables/SizeVariable/) referenced in the renderer. * * @since 5.0 */ export interface SizeRampStop { /** * The label in the legend describing features with the given `symbol` and `value`. * * @since 5.0 */ label: string; /** * The value of the size visual variable [stop](https://developers.arcgis.com/javascript/latest/references/core/renderers/visualVariables/SizeVariable/#stops). * * @since 5.0 */ value?: any | null; /** * The symbol corresponding to the value of the stop in the renderer. * * @since 5.0 */ symbol: SymbolUnion; /** * The size of the visual variable [stop](https://developers.arcgis.com/javascript/latest/references/core/renderers/visualVariables/ColorVariable/#stops) in points. * * @since 5.0 */ size?: number | { width: number; height: number; } | null; /** * The width of the outline in points. * * @since 5.0 */ outlineSize?: number | null; /** * The HTML element rendered in the legend representing features with the given value. * * @since 5.0 */ preview?: HTMLElement | null; } /** * Describes the schema of the ColorRampStop element. Each ColorRampStop represents a single stop of the * [ColorVariable](https://developers.arcgis.com/javascript/latest/references/core/renderers/visualVariables/ColorVariable/) referenced in the renderer. * * @since 5.0 */ export interface ColorRampStop { /** * The value of the color visual variable [stop](https://developers.arcgis.com/javascript/latest/references/core/renderers/visualVariables/ColorVariable/#stops). * * @since 5.0 */ value: number | string | null; /** * The color of the visual variable [stop](https://developers.arcgis.com/javascript/latest/references/core/renderers/visualVariables/ColorVariable/#stops). * * @since 5.0 */ color: Color; /** * The label in the legend describing features with the given `color` and `value`. * * @since 5.0 */ label: string | null; } /** * Describes the schema of the OpacityRampStop element. Each OpacityRampStop represents a single stop of the * [OpacityVariable](https://developers.arcgis.com/javascript/latest/references/core/renderers/visualVariables/OpacityVariable/) referenced in the renderer. The opacity value of * each stop is indicated in the [alpha](https://developers.arcgis.com/javascript/latest/references/core/Color/#a) property of the `color` object. * * @since 5.0 */ export interface OpacityRampStop { /** * The value of the opacity visual variable [stop](https://developers.arcgis.com/javascript/latest/references/core/renderers/visualVariables/OpacityVariable/#stops). * * @since 5.0 */ value: number; /** * The color of the visual variable [stop](https://developers.arcgis.com/javascript/latest/references/core/renderers/visualVariables/OpacityVariable/#stops). * The opacity corresponding to the given `value` is indicated in the [alpha](https://developers.arcgis.com/javascript/latest/references/core/Color/#a) property of the color object. * * @since 5.0 */ color: Color; /** * The label in the legend describing features with the given `color` and `value`. * * @since 5.0 */ label: string; } /** * Describes the schema of the HeatmapRampStop element. Each HeatmapRampStop represents a single `colorStop` of the * [Heatmap color stops](https://developers.arcgis.com/javascript/latest/references/core/renderers/HeatmapRenderer/#colorStops) referenced in the renderer. * * @since 5.0 */ export interface HeatmapRampStop { /** * The color of the pixel corresponding to the appropriate pixel `ratio`. This value is typically * between `0` and `1`. * * @since 5.0 */ color: Color; /** * The ratio of a pixel's intensity value to the minPixelIntensity of the renderer. * The ratio of each pixel is matched to the corresponding color. * * @since 5.0 */ ratio: number; /** * The label of the color stop displayed in the legend. Typically only the first and last * stops have labels. * * @since 5.0 */ label: string; } /** * Describes the schema of the RelationshipLabels element. These labels are rendered in the corners of the square * that represent the relationship renderer in the legend. * * @since 5.0 */ export interface RelationshipLabels { /** * The label corresponding with the top corner of the legend if the focus * is set to `HH`. This * describes values that are considered high in both field 1 and field 2 (HH). * * @since 5.0 */ top: string; /** * The label corresponding with the bottom corner of the legend if the focus is * set to `HH`. This * describes values that are considered low in both field 1 and field 2 (LL). * * @since 5.0 */ bottom: string; /** * The label corresponding with the left corner of the legend (if the focus * is set to `HH`). This describes features where the value of field 1 is high and the value of field 2 is low (HL). * * @since 5.0 */ left: string; /** * The label corresponding with the right corner of the legend (if the focus * is set to `HH`). This describes features where the value of field 2 is high and the value of field 1 is low (LH). * * @since 5.0 */ right: string; } /** * The following properties define an attribution item that contains the attribution text for a layer. * * @since 5.0 */ export interface AttributionItem { /** * The attribution text. * * @since 5.0 */ readonly text: string; /** * The layer view that has the attribution text. * * @since 5.0 */ readonly layerView: LayerView; } /** @since 5.0 */ export type MeasurementState = "disabled" | "ready" | "measuring" | "measured"; /** @since 5.0 */ export interface AreaMeasurement { /** * Measurement area. * * @since 5.0 */ geometry: Polygon; /** * The area (m²). * * @since 5.0 */ area: number; /** * The perimeter (m). * * @since 5.0 */ perimeter: number; } /** @since 5.0 */ export interface AreaMeasurementLabel { /** * The area (m²). * * @since 5.0 */ area: string; /** * The perimeter (m). * * @since 5.0 */ perimeter: string; } /** @since 5.0 */ export interface LinearMeasurement { /** * Measurement line. * * @since 5.0 */ geometry: Polyline; /** * Line length (m). * * @since 5.0 */ length: number; } /** * A dom node owner. * * @since 5.0 */ export interface DomNodeOwner { /** * The dom node. * * @since 5.0 */ domNode: HTMLElement; } /** @since 5.0 */ export type SliderFormatType = "average" | "min" | "max" | "tick" | "value"; /** * Function used to format labels. This function should be set to the * [Histogram.labelFormatFunction](https://developers.arcgis.com/javascript/latest/references/core/widgets/Histogram/#labelFormatFunction) property. This function fires * every time a label is created or updated on the histogram. * * @param value - The value for the line on the data axis. * @param type - The label type. Currently, the only supported type is `average`. * @param index - The index of the data line. * @returns The formatted value of the label. * @since 5.0 */ export type HistogramLabelFormatFunction = (value: number, type?: "average", index?: number) => string; /** * Function used to format labels. This function should be set to the * [Slider.labelFormatFunction](https://developers.arcgis.com/javascript/latest/references/core/widgets/Slider/#labelFormatFunction) property. It fires * each time a label is created or updated on the slider. * * @param value - The value of the thumb to be labeled. * @param type - The label type. Valid types include `average`, `min`, `max`, `tick`, and `value`. * @param index - The index of the thumb (or [value](https://developers.arcgis.com/javascript/latest/references/core/widgets/Slider/#values)). * @returns The formatted value of the label. * @since 5.0 */ export type LabelFormatFunction = (value: number, type?: SliderFormatType, index?: number) => string; /** * Function used to format thumb labels. This function should be set to the * [SmartMappingSliderBase.labelFormatFunction](https://developers.arcgis.com/javascript/latest/references/core/widgets/smartMapping/SmartMappingSliderBase/#labelFormatFunction) property. This function fires * every time a label is created or updated on the slider. * * @since 5.0 * @param value - The value of the thumb. * @param type - The label type. Valid types include `average`, `min`, `max`, and `value`. * @param index - The index of the thumb (or [value](https://developers.arcgis.com/javascript/latest/references/core/widgets/smartMapping/SmartMappingSliderViewModel/#values)). * @returns The formatted value for the label. */ export type InputFormatFunction = LabelFormatFunction; /** * Function definition for the * [Slider.inputParseFunction](https://developers.arcgis.com/javascript/latest/references/core/widgets/Slider/#inputParseFunction) property. It fires * each time the user modifies slider input by key entry. * * @param value - The formatted input value of the thumb to be parsed. * @param type - The label type. Valid types include `average`, `min`, `max`, `tick`, and `value`. * @param index - The index of the thumb (or [value](https://developers.arcgis.com/javascript/latest/references/core/widgets/Slider/#values)). * @returns The parsed number value of the thumb. * @since 5.0 */ export type InputParseFunction = (value: string, type?: "average" | "min" | "max" | "tick" | "value", index?: number) => number;