UNPKG

@itwin/frontend-devtools

Version:

Debug menu and supporting UI widgets

212 lines • 10.1 kB
"use strict"; /*--------------------------------------------------------------------------------------------- * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ Object.defineProperty(exports, "__esModule", { value: true }); exports.ToolSettingsTracker = void 0; /** @packageDocumentation * @module Widgets */ const core_bentley_1 = require("@itwin/core-bentley"); const core_frontend_1 = require("@itwin/core-frontend"); const CheckBox_1 = require("../ui/CheckBox"); const NestedMenu_1 = require("../ui/NestedMenu"); const NumericInput_1 = require("../ui/NumericInput"); /** Allows the global settings controlling the behavior of viewing tools to be customized. * @alpha */ class ToolSettingsTracker { static _expandToolSettings = false; constructor(parent, _vp) { const settingsDiv = document.createElement("div"); settingsDiv.style.display = "block"; settingsDiv.style.textAlign = "left"; (0, NestedMenu_1.createNestedMenu)({ label: "Tool Settings", parent, expand: ToolSettingsTracker._expandToolSettings, handler: (expanded) => ToolSettingsTracker._expandToolSettings = expanded, body: settingsDiv, }); let div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv }); (0, CheckBox_1.createCheckBox)({ parent: div, name: "Preserve World Up When Rotating", id: "ts_preserveWorldUp", isChecked: core_frontend_1.ToolSettings.preserveWorldUp, handler: (_cb) => { core_frontend_1.ToolSettings.preserveWorldUp = !core_frontend_1.ToolSettings.preserveWorldUp; // eslint-disable-next-line @typescript-eslint/no-floating-promises core_frontend_1.IModelApp.toolAdmin.exitViewTool(); }, }); div.style.textAlign = "left"; // We use a static so the expand/collapse state persists after closing and reopening the drop-down. settingsDiv.style.display = ToolSettingsTracker._expandToolSettings ? "block" : "none"; div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv }); let label = core_frontend_1.IModelApp.makeHTMLElement("label", { innerText: "Animation Duration (ms): ", parent: div }); label.style.display = "inline"; label.htmlFor = "ts_animationTime"; (0, NumericInput_1.createNumericInput)({ parent: div, id: "ts_animationTime", display: "inline", min: 0, step: 1, value: core_frontend_1.ScreenViewport.animation.time.normal.milliseconds, handler: (value, _input) => { core_frontend_1.ScreenViewport.animation.time.normal = core_bentley_1.BeDuration.fromMilliseconds(value); // eslint-disable-next-line @typescript-eslint/no-floating-promises core_frontend_1.IModelApp.toolAdmin.exitViewTool(); }, }); div.style.display = "block"; div.style.textAlign = "left"; div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv }); label = core_frontend_1.IModelApp.makeHTMLElement("label", { innerText: "Pick Radius (inches): ", parent: div }); label.style.display = "inline"; label.htmlFor = "ts_viewToolPickRadiusInches"; label.innerText = "Pick Radius (inches): "; (0, NumericInput_1.createNumericInput)({ parent: div, id: "ts_viewToolPickRadiusInches", display: "inline", min: 0, step: 0.01, value: core_frontend_1.ToolSettings.viewToolPickRadiusInches, handler: (value, _input) => { core_frontend_1.ToolSettings.viewToolPickRadiusInches = value; // eslint-disable-next-line @typescript-eslint/no-floating-promises core_frontend_1.IModelApp.toolAdmin.exitViewTool(); }, parseAsFloat: true, }, true); div.style.display = "block"; div.style.textAlign = "left"; div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv }); (0, CheckBox_1.createCheckBox)({ parent: div, name: "Walk Enforce Z Up", id: "ts_walkEnforceZUp", isChecked: core_frontend_1.ToolSettings.walkEnforceZUp, handler: (_cb) => { core_frontend_1.ToolSettings.walkEnforceZUp = !core_frontend_1.ToolSettings.walkEnforceZUp; // eslint-disable-next-line @typescript-eslint/no-floating-promises core_frontend_1.IModelApp.toolAdmin.exitViewTool(); }, }); div.style.display = "block"; div.style.textAlign = "left"; div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv }); label = core_frontend_1.IModelApp.makeHTMLElement("label", { innerText: "Walk Camera Angle (degrees): ", parent: div }); label.style.display = "inline"; label.htmlFor = "ts_walkCameraAngle"; (0, NumericInput_1.createNumericInput)({ parent: div, id: "ts_walkCameraAngle", display: "inline", min: 0, step: 0.1, value: core_frontend_1.ToolSettings.walkCameraAngle.degrees, handler: (value, _input) => { core_frontend_1.ToolSettings.walkCameraAngle.setDegrees(value); // eslint-disable-next-line @typescript-eslint/no-floating-promises core_frontend_1.IModelApp.toolAdmin.exitViewTool(); }, parseAsFloat: true, }, true); div.style.display = "block"; div.style.textAlign = "left"; div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv }); label = core_frontend_1.IModelApp.makeHTMLElement("label", { innerText: "Walk Velocity (meters per second): ", parent: div }); label.style.display = "inline"; label.htmlFor = "ts_walkVelocity"; (0, NumericInput_1.createNumericInput)({ parent: div, id: "ts_walkVelocity", display: "inline", min: 0, step: 0.1, value: core_frontend_1.ToolSettings.walkVelocity, handler: (value, _input) => { core_frontend_1.ToolSettings.walkVelocity = value; // eslint-disable-next-line @typescript-eslint/no-floating-promises core_frontend_1.IModelApp.toolAdmin.exitViewTool(); }, parseAsFloat: true, }, true); div.style.display = "block"; div.style.textAlign = "left"; div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv }); label = core_frontend_1.IModelApp.makeHTMLElement("label", { innerText: "Wheel Zoom Bump Distance (meters): ", parent: div }); label.style.display = "inline"; label.htmlFor = "ts_wheelZoomBumpDistance"; (0, NumericInput_1.createNumericInput)({ parent: div, id: "ts_wheelZoomBumpDistance", display: "inline", min: 0, step: 0.025, value: core_frontend_1.ToolSettings.wheelZoomBumpDistance, handler: (value, _input) => { core_frontend_1.ToolSettings.wheelZoomBumpDistance = value; // eslint-disable-next-line @typescript-eslint/no-floating-promises core_frontend_1.IModelApp.toolAdmin.exitViewTool(); }, parseAsFloat: true, }, true); div.style.display = "block"; div.style.textAlign = "left"; div = core_frontend_1.IModelApp.makeHTMLElement("div", { parent: settingsDiv }); label = core_frontend_1.IModelApp.makeHTMLElement("label", { innerText: "Wheel Zoom Ratio: ", parent: div }); label.style.display = "inline"; label.htmlFor = "ts_wheelZoomRatio"; (0, NumericInput_1.createNumericInput)({ parent: div, id: "ts_wheelZoomRatio", display: "inline", min: 1.0, step: 0.025, value: core_frontend_1.ToolSettings.wheelZoomRatio, handler: async (value, _input) => { core_frontend_1.ToolSettings.wheelZoomRatio = value; return core_frontend_1.IModelApp.toolAdmin.exitViewTool(); }, parseAsFloat: true, }, true); div.style.display = "block"; div.style.textAlign = "left"; (0, NumericInput_1.createLabeledNumericInput)({ id: "num_inertiaDamping", parent: settingsDiv, value: core_frontend_1.ToolSettings.viewingInertia.damping, handler: async (value, _) => { core_frontend_1.ToolSettings.viewingInertia.damping = value; return core_frontend_1.IModelApp.toolAdmin.exitViewTool(); }, min: 0, max: 1, step: 0.05, parseAsFloat: true, name: "Inertial damping: ", }); (0, NumericInput_1.createLabeledNumericInput)({ id: "num_inertiaDuration", parent: settingsDiv, value: core_frontend_1.ToolSettings.viewingInertia.duration.milliseconds / 1000, handler: async (value, _) => { core_frontend_1.ToolSettings.viewingInertia.duration = core_bentley_1.BeDuration.fromMilliseconds(value * 1000); return core_frontend_1.IModelApp.toolAdmin.exitViewTool(); }, min: 0, max: 10, step: 0.5, parseAsFloat: true, name: "Inertial duration (seconds): ", }); } [Symbol.dispose]() { } } exports.ToolSettingsTracker = ToolSettingsTracker; //# sourceMappingURL=ToolSettingsTracker.js.map