@itwin/measure-tools-react
Version:
Frontend framework and tools for measurements
78 lines • 3.49 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
import { IModelApp } from "@itwin/core-frontend";
import { MeasureDistanceTool } from "./tools/MeasureDistanceTool.js";
import { MeasureAreaTool } from "./tools/MeasureAreaTool.js";
import { MeasureLocationTool } from "./tools/MeasureLocationTool.js";
import { ClearMeasurementsTool } from "./tools/ClearMeasurementsTool.js";
import { ToggleDisplayMeasurementAxesTool } from "./tools/ToggleDisplayMeasurementAxesTool.js";
import { MeasurementManager } from "./api/MeasurementManager.js";
import { MeasureRadiusTool } from "./tools/MeasureRadiusTool.js";
import { MeasureAngleTool } from "./tools/MeasureAngleTool.js";
import { MeasurePerpendicularTool } from "./tools/MeasurePerpendicularTool.js";
import { DrawingDataCache } from "./api/DrawingTypeDataCache.js";
export class MeasureTools {
static get isInitialized() {
return MeasureTools._isInitialized;
}
static get localization() {
return MeasureTools._localization;
}
static get featureFlags() {
return MeasureTools._featureFlags;
}
static async startup(options) {
if (MeasureTools.isInitialized)
return;
MeasureTools._localization =
options?.localization ?? IModelApp.localization;
await MeasureTools._localization.registerNamespace(MeasureTools._i18nNamespace);
const { featureFlags } = options ?? {};
MeasureTools._featureFlags = featureFlags;
const toolsToRegister = [];
if (!featureFlags?.hideDistanceTool) {
toolsToRegister.push(MeasureDistanceTool);
}
if (!featureFlags?.hideDistanceTool) {
toolsToRegister.push(MeasureDistanceTool);
}
if (!featureFlags?.hideAreaTool) {
toolsToRegister.push(MeasureAreaTool);
}
if (!featureFlags?.hideLocationTool) {
toolsToRegister.push(MeasureLocationTool);
}
if (!featureFlags?.hideRadiusTool) {
toolsToRegister.push(MeasureRadiusTool);
}
if (!featureFlags?.hideAngleTool) {
toolsToRegister.push(MeasureAngleTool);
}
if (!featureFlags?.hidePerpendicularTool) {
toolsToRegister.push(MeasurePerpendicularTool);
}
if (!featureFlags?.hideToggleDisplayAxesTool) {
toolsToRegister.push(ToggleDisplayMeasurementAxesTool);
}
if (toolsToRegister.length > 0) {
toolsToRegister.push(ClearMeasurementsTool);
}
for (const tool of toolsToRegister) {
tool.register(MeasureTools._i18nNamespace);
}
// Register measurement decoration
MeasurementManager.instance.startDecorator();
// Initialize the measurementDrawingDataCache
DrawingDataCache.getInstance();
MeasureTools._isInitialized = true;
}
/** Unregisters internationalization service namespace and UiItemManager */
static terminate() {
IModelApp.localization.unregisterNamespace(MeasureTools._i18nNamespace);
}
}
MeasureTools._isInitialized = false;
MeasureTools._i18nNamespace = "MeasureTools";
//# sourceMappingURL=MeasureTools.js.map