UNPKG

@itwin/measure-tools-react

Version:
82 lines 4.21 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ import { BeUiEvent } from "@itwin/core-bentley"; /** Enumerates measurement properties for change events. */ export var MeasurementPreferencesProperty; (function (MeasurementPreferencesProperty) { MeasurementPreferencesProperty[MeasurementPreferencesProperty["displayMeasurementAxes"] = 1] = "displayMeasurementAxes"; MeasurementPreferencesProperty[MeasurementPreferencesProperty["displayLocationAltitude"] = 2] = "displayLocationAltitude"; MeasurementPreferencesProperty[MeasurementPreferencesProperty["displayMeasurementLabels"] = 3] = "displayMeasurementLabels"; })(MeasurementPreferencesProperty || (MeasurementPreferencesProperty = {})); /** Measurement preferences singleton that manages the application/user's preferences for measurements. Each property when modified will emit a change event. */ export class MeasurementPreferences { /** Gets the measurement preferences singleton. */ static get current() { if (!MeasurementPreferences._instance) MeasurementPreferences._instance = new MeasurementPreferences(); return MeasurementPreferences._instance; } /** Gets or sets if measurement axes should be displayed on newly created measurements. */ get displayMeasurementAxes() { return this._displayMeasurementAxes; } set displayMeasurementAxes(v) { if (this._displayMeasurementAxes !== v) { this._displayMeasurementAxes = v; this.onPreferenceChanged.emit(MeasurementPreferencesProperty.displayMeasurementAxes); } } /** Gets or sets if location measurements display Altitude (Z) in the measurement widget. */ get displayLocationAltitude() { return this._displayLocationAltitude; } set displayLocationAltitude(v) { if (this._displayLocationAltitude !== v) { this._displayLocationAltitude = v; this.onPreferenceChanged.emit(MeasurementPreferencesProperty.displayLocationAltitude); } } /** Gets or sets if measurement labels should be displayed on newly created measurements. */ get displayMeasurementLabels() { return this._displayMeasurementLabels; } set displayMeasurementLabels(v) { if (this._displayMeasurementLabels !== v) { this._displayMeasurementLabels = v; this.onPreferenceChanged.emit(MeasurementPreferencesProperty.displayMeasurementLabels); } } constructor() { this._displayMeasurementAxes = false; this._displayLocationAltitude = true; this._displayMeasurementLabels = true; /** Event for when a preference property changes value. */ this.onPreferenceChanged = new BeUiEvent(); this.loadDefaults(); } loadDefaults() { this._displayMeasurementAxes = false; this._displayLocationAltitude = true; this._displayMeasurementLabels = true; } load(props, setDefaultsIfMissing = true) { if (props.displayMeasurementAxes !== undefined) this._displayMeasurementAxes = props.displayMeasurementAxes; else if (setDefaultsIfMissing) this._displayMeasurementAxes = false; if (props.displayLocationAltitude !== undefined) this._displayLocationAltitude = props.displayLocationAltitude; else if (setDefaultsIfMissing) this._displayLocationAltitude = true; if (props.displayMeasurementLabels !== undefined) this._displayMeasurementLabels = props.displayMeasurementLabels; else if (setDefaultsIfMissing) this._displayMeasurementLabels = true; } save() { return { displayMeasurementAxes: this._displayMeasurementAxes, displayLocationAltitude: this._displayLocationAltitude, displayMeasurementLabels: this._displayMeasurementLabels }; } } //# sourceMappingURL=MeasurementPreferences.js.map