import { Watchable } from 'apprt-core/Types'; import { SystemOrAreaUnit, SystemOrLengthUnit } from '@arcgis/core/core/units'; /** * Measurement mode. * - `off`: Measurement is disabled. * - `area`: Area measurement is enabled. * - `distance`: Distance measurement is enabled. */ type Measurement3DMode = "off" | "area" | "distance"; /** * Measurement state. * - `disabled`: Measurement is disabled. * - `ready`: Measurement is enabled and ready to start. * - `measuring`: Measurement is in progress. * - `measured`: Measurement is finished. */ type Measurement3DState = "disabled" | "ready" | "measuring" | "measured"; /** * {@link Watchable} properties of {@link Measurement3DModel}. */ interface Measurement3DModelProperties { /** * Measurement mode. */ readonly mode: Measurement3DMode; /** * Measurement state. */ readonly state: Measurement3DState; /** * Measurement unit is either unit system (metric, imperial) or a specific unit. * Available if the {@link mode} is set to `area` or `distance`. */ readonly unit: SystemOrAreaUnit | SystemOrLengthUnit; /** * Locale specific representation of the direct distance including the unit. * Available if the {@link mode} is set to `distance`. */ directDistance: string; /** * Locale specific representation of the horizontal distance including the unit. * Available if the {@link mode} is set to `distance`. */ horizontalDistance: string; /** * Locale specific representation of the vertical distance including the unit. * Available if the {@link mode} is set to `distance`. */ verticalDistance: string; /** * Locale specific representation of the area including the unit. * Available if the {@link mode} is set to `area`. */ readonly area: string; /** * Locale specific representation of the perimeter including the unit. * Available if the {@link mode} is set to `area`. */ readonly perimeter: string; } /** * A model, providing access to the current measurement state. * It is available as service `measurement-3d.Model`. * * See {@link Measurement3DModelProperties} for documentation of class members. */ interface Measurement3DModel extends Measurement3DModelProperties, Watchable { } export type { Measurement3DMode, Measurement3DModel, Measurement3DModelProperties, Measurement3DState };