@itwin/rpcinterface-full-stack-tests 5.1.0-dev.12 → 5.1.0-dev.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -88818,13 +88818,13 @@ var CurrentImdlVersion;
88818
88818
  * front-end is not capable of reading the tile content. Otherwise, this front-end can read the tile content even if the header specifies a
88819
88819
  * greater minor version than CurrentVersion.Minor, although some data may be skipped.
88820
88820
  */
88821
- CurrentImdlVersion[CurrentImdlVersion["Major"] = 36] = "Major";
88821
+ CurrentImdlVersion[CurrentImdlVersion["Major"] = 37] = "Major";
88822
88822
  /** The unsigned 16-bit minor version number. If the major version in the tile header is equal to CurrentVersion.Major, then this package can
88823
88823
  * read the tile content even if the minor version in the tile header is greater than this value, although some data may be skipped.
88824
88824
  */
88825
88825
  CurrentImdlVersion[CurrentImdlVersion["Minor"] = 0] = "Minor";
88826
88826
  /** The unsigned 32-bit version number derived from the 16-bit major and minor version numbers. */
88827
- CurrentImdlVersion[CurrentImdlVersion["Combined"] = 2359296] = "Combined";
88827
+ CurrentImdlVersion[CurrentImdlVersion["Combined"] = 2424832] = "Combined";
88828
88828
  })(CurrentImdlVersion || (CurrentImdlVersion = {}));
88829
88829
  /** Header embedded at the beginning of binary tile data in iMdl format describing its contents.
88830
88830
  * @internal
@@ -89169,6 +89169,7 @@ var TileOptions;
89169
89169
  disableMagnification: false,
89170
89170
  alwaysSubdivideIncompleteTiles: false,
89171
89171
  edgeOptions,
89172
+ disablePolyfaceDecimation: 0 !== (tree.flags & TreeFlags.DisablePolyfaceDecimation),
89172
89173
  };
89173
89174
  }
89174
89175
  TileOptions.fromTreeIdAndContentId = fromTreeIdAndContentId;
@@ -89203,14 +89204,15 @@ class Parser {
89203
89204
  }
89204
89205
  if (Object.keys(parsedContentId).some((key) => parsedContentId.hasOwnProperty(key) && typeof parsedContentId[key] === "number" && !Number.isFinite(parsedContentId[key])))
89205
89206
  throw new Error("Invalid content Id");
89207
+ const disablePolyfaceDecimation = options.disablePolyfaceDecimation;
89206
89208
  let treeId;
89207
89209
  if (classifier) {
89208
- treeId = { ...classifier, animationId };
89210
+ treeId = { ...classifier, animationId, disablePolyfaceDecimation };
89209
89211
  }
89210
89212
  else {
89211
89213
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(undefined !== primary);
89212
89214
  const enforceDisplayPriority = (treeFlags & TreeFlags.EnforceDisplayPriority) !== 0 ? true : undefined;
89213
- treeId = { ...primary, animationId, type: _FeatureTable__WEBPACK_IMPORTED_MODULE_2__.BatchType.Primary, enforceDisplayPriority };
89215
+ treeId = { ...primary, animationId, type: _FeatureTable__WEBPACK_IMPORTED_MODULE_2__.BatchType.Primary, enforceDisplayPriority, disablePolyfaceDecimation };
89214
89216
  }
89215
89217
  return {
89216
89218
  contentId: parsedContentId,
@@ -89313,6 +89315,7 @@ const defaultTileOptions = Object.freeze({
89313
89315
  useLargerTiles: true,
89314
89316
  disableMagnification: false,
89315
89317
  alwaysSubdivideIncompleteTiles: false,
89318
+ disablePolyfaceDecimation: false,
89316
89319
  edgeOptions: {
89317
89320
  type: "compact",
89318
89321
  smooth: true,
@@ -89408,7 +89411,8 @@ var TreeFlags;
89408
89411
  TreeFlags[TreeFlags["EnforceDisplayPriority"] = 2] = "EnforceDisplayPriority";
89409
89412
  TreeFlags[TreeFlags["OptimizeBRepProcessing"] = 4] = "OptimizeBRepProcessing";
89410
89413
  TreeFlags[TreeFlags["UseLargerTiles"] = 8] = "UseLargerTiles";
89411
- TreeFlags[TreeFlags["ExpandProjectExtents"] = 16] = "ExpandProjectExtents"; // If UseProjectExtents, round them up/down to nearest powers of ten.
89414
+ TreeFlags[TreeFlags["ExpandProjectExtents"] = 16] = "ExpandProjectExtents";
89415
+ TreeFlags[TreeFlags["DisablePolyfaceDecimation"] = 32] = "DisablePolyfaceDecimation";
89412
89416
  })(TreeFlags || (TreeFlags = {}));
89413
89417
  function animationIdToString(animationId) {
89414
89418
  return `A:${animationId}_`;
@@ -89421,6 +89425,8 @@ function iModelTileTreeIdToString(modelId, treeId, options) {
89421
89425
  let flags = options.useProjectExtents ? TreeFlags.UseProjectExtents : TreeFlags.None;
89422
89426
  if (options.optimizeBRepProcessing)
89423
89427
  flags |= TreeFlags.OptimizeBRepProcessing;
89428
+ if (options.disablePolyfaceDecimation)
89429
+ flags |= TreeFlags.DisablePolyfaceDecimation;
89424
89430
  if (options.useLargerTiles)
89425
89431
  flags |= TreeFlags.UseLargerTiles;
89426
89432
  if (options.expandProjectExtents)
@@ -100025,11 +100031,14 @@ __webpack_require__.r(__webpack_exports__);
100025
100031
  * The SchemaLoader object should be held in memory if multiple calls to [[getSchema]] or [[tryGetSchema]]
100026
100032
  * is a possibility, thereby avoiding unnecessary schema retrievals from the function.
100027
100033
  *
100034
+ * Since the development of this class, the IModelDb class has been enhanced to include a schema context.
100035
+ * In most cases, that is sufficient so a SchemaLoader is not needed. This class is likely to be removed in the future.
100036
+ *
100028
100037
  * ** Example **
100029
100038
  * ```ts
100030
100039
  * [[include:IModelSchemas.loadFromDb]]
100031
100040
  * ```
100032
- * @beta Is this concept needed no that backend and frontend will have contexts cached on the iModel?
100041
+ * @beta This will no longer be needed as of 5.0.0 since IModelDb now has a schema context.
100033
100042
  */
100034
100043
  class SchemaLoader {
100035
100044
  _context;
@@ -113225,7 +113234,7 @@ __webpack_require__.r(__webpack_exports__);
113225
113234
 
113226
113235
  /** @public */
113227
113236
  const ITWINJS_CORE_VERSION = _package_json__WEBPACK_IMPORTED_MODULE_0__.version;
113228
- const COPYRIGHT_NOTICE = 'Copyright © 2017-2024 <a href="https://www.bentley.com" target="_blank" rel="noopener noreferrer">Bentley Systems, Inc.</a>';
113237
+ const COPYRIGHT_NOTICE = `Copyright © 2017-${new Date().getFullYear()} <a href="https://www.bentley.com" target="_blank" rel="noopener noreferrer">Bentley Systems, Inc.</a>`;
113229
113238
 
113230
113239
 
113231
113240
 
@@ -113301,6 +113310,7 @@ class IModelApp {
113301
113310
  static _hubAccess;
113302
113311
  static _realityDataAccess;
113303
113312
  static _publicPath;
113313
+ static _formatsProviderManager;
113304
113314
  // No instances of IModelApp may be created. All members are static and must be on the singleton object IModelApp.
113305
113315
  constructor() { }
113306
113316
  /** Event raised just before the frontend IModelApp is to be [[shutdown]]. */
@@ -113375,6 +113385,14 @@ class IModelApp {
113375
113385
  * The path should always end with a trailing `/`.
113376
113386
  */
113377
113387
  static get publicPath() { return this._publicPath; }
113388
+ /** The [[FormatsProvider]] for this session.
113389
+ * @param provider The provider to use for formatting quantities.
113390
+ * @beta
113391
+ */
113392
+ static get formatsProvider() { return this._formatsProviderManager; }
113393
+ static set formatsProvider(provider) {
113394
+ this._formatsProviderManager.formatsProvider = provider;
113395
+ }
113378
113396
  /** @alpha */
113379
113397
  static extensionAdmin = this._createExtensionAdmin();
113380
113398
  /** Map of classFullName to EntityState class */
@@ -113475,6 +113493,7 @@ class IModelApp {
113475
113493
  this._terrainProviderRegistry = new _tile_internal__WEBPACK_IMPORTED_MODULE_26__.TerrainProviderRegistry();
113476
113494
  this._realityDataSourceProviders = new _RealityDataSource__WEBPACK_IMPORTED_MODULE_25__.RealityDataSourceProviderRegistry();
113477
113495
  this._realityDataAccess = opts.realityDataAccess;
113496
+ this._formatsProviderManager = new _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_19__.FormatsProviderManager(opts.formatsProvider ?? new _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_19__.QuantityTypeFormatsProvider());
113478
113497
  this._publicPath = opts.publicPath ?? "";
113479
113498
  [
113480
113499
  this.renderSystem,
@@ -113506,6 +113525,7 @@ class IModelApp {
113506
113525
  this._entityClasses.clear();
113507
113526
  this.authorizationClient = undefined;
113508
113527
  this._initialized = false;
113528
+ this.resetFormatsProvider();
113509
113529
  this.onAfterStartup.clear();
113510
113530
  }
113511
113531
  /** Controls how frequently the application polls for changes that may require a new animation frame to be requested.
@@ -113756,6 +113776,13 @@ class IModelApp {
113756
113776
  }
113757
113777
  return this.localization.getLocalizedString(`iModelJs:${key.scope}.${key.val}`, key);
113758
113778
  }
113779
+ /**
113780
+ * Resets the formatsProvider back to the default [[QuantityTypeFormatsProvider]].
113781
+ * @beta
113782
+ */
113783
+ static resetFormatsProvider() {
113784
+ this.formatsProvider = new _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_19__.QuantityTypeFormatsProvider();
113785
+ }
113759
113786
  /**
113760
113787
  * Creates an instance of the ExtensionAdmin
113761
113788
  * and registers an event to execute after startup is complete
@@ -115109,6 +115136,7 @@ __webpack_require__.r(__webpack_exports__);
115109
115136
  */
115110
115137
  class IpcApp {
115111
115138
  static _ipc;
115139
+ static _removeAppNotify;
115112
115140
  /** Get the implementation of the [[IpcSocketFrontend]] interface. */
115113
115141
  static get ipc() { return this._ipc; }
115114
115142
  /** Determine whether Ipc is available for this frontend. This will only be true if [[startup]] has been called on this class. */
@@ -115215,11 +115243,12 @@ class IpcApp {
115215
115243
  * @note this should not be called directly. It is called by NativeApp.startup */
115216
115244
  static async startup(ipc, opts) {
115217
115245
  this._ipc = ipc;
115218
- IpcAppNotifyHandler.register(); // receives notifications from backend
115246
+ this._removeAppNotify = IpcAppNotifyHandler.register(); // receives notifications from backend
115219
115247
  await _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.startup(opts?.iModelApp);
115220
115248
  }
115221
115249
  /** @internal */
115222
115250
  static async shutdown() {
115251
+ this._removeAppNotify?.();
115223
115252
  this._ipc = undefined;
115224
115253
  await _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.shutdown();
115225
115254
  }
@@ -136669,6 +136698,7 @@ __webpack_require__.r(__webpack_exports__);
136669
136698
  /* harmony export */ FlashMode: () => (/* reexport safe */ _FlashSettings__WEBPACK_IMPORTED_MODULE_22__.FlashMode),
136670
136699
  /* harmony export */ FlashSettings: () => (/* reexport safe */ _FlashSettings__WEBPACK_IMPORTED_MODULE_22__.FlashSettings),
136671
136700
  /* harmony export */ FlyViewTool: () => (/* reexport safe */ _tools_ViewTool__WEBPACK_IMPORTED_MODULE_114__.FlyViewTool),
136701
+ /* harmony export */ FormatsProviderManager: () => (/* reexport safe */ _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_72__.FormatsProviderManager),
136672
136702
  /* harmony export */ FormattedQuantityDescription: () => (/* reexport safe */ _properties_FormattedQuantityDescription__WEBPACK_IMPORTED_MODULE_70__.FormattedQuantityDescription),
136673
136703
  /* harmony export */ FrontendLoggerCategory: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_10__.FrontendLoggerCategory),
136674
136704
  /* harmony export */ Frustum2d: () => (/* reexport safe */ _Frustum2d__WEBPACK_IMPORTED_MODULE_24__.Frustum2d),
@@ -136797,6 +136827,7 @@ __webpack_require__.r(__webpack_exports__);
136797
136827
  /* harmony export */ QuadId: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_99__.QuadId),
136798
136828
  /* harmony export */ QuantityFormatter: () => (/* reexport safe */ _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_72__.QuantityFormatter),
136799
136829
  /* harmony export */ QuantityType: () => (/* reexport safe */ _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_72__.QuantityType),
136830
+ /* harmony export */ QuantityTypeFormatsProvider: () => (/* reexport safe */ _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_72__.QuantityTypeFormatsProvider),
136800
136831
  /* harmony export */ RealityDataError: () => (/* reexport safe */ _RealityDataSource__WEBPACK_IMPORTED_MODULE_121__.RealityDataError),
136801
136832
  /* harmony export */ RealityDataSource: () => (/* reexport safe */ _RealityDataSource__WEBPACK_IMPORTED_MODULE_121__.RealityDataSource),
136802
136833
  /* harmony export */ RealityDataSourceProviderRegistry: () => (/* reexport safe */ _RealityDataSource__WEBPACK_IMPORTED_MODULE_121__.RealityDataSourceProviderRegistry),
@@ -170209,8 +170240,9 @@ function createClassifierTileTreeReference(classifiers, classifiedTree, iModel,
170209
170240
  return new ClassifierTreeReference(classifiers, classifiedTree, iModel, source);
170210
170241
  }
170211
170242
  function createClassifierId(classifier, source) {
170243
+ const disablePolyfaceDecimation = _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.tileAdmin.disablePolyfaceDecimation;
170212
170244
  if (undefined === classifier)
170213
- return { modelId: _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Id64.invalid, type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.PlanarClassifier, expansion: 0, animationId: undefined };
170245
+ return { modelId: _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Id64.invalid, type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.PlanarClassifier, expansion: 0, animationId: undefined, disablePolyfaceDecimation };
170214
170246
  const type = classifier.flags.isVolumeClassifier ? _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.VolumeClassifier : _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.PlanarClassifier;
170215
170247
  const scriptInfo = _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.tileAdmin.getScriptInfoForTreeId(classifier.modelId, source ? source[_common_internal_Symbols__WEBPACK_IMPORTED_MODULE_5__._scheduleScriptReference] : undefined);
170216
170248
  return {
@@ -170219,6 +170251,7 @@ function createClassifierId(classifier, source) {
170219
170251
  expansion: classifier.expand,
170220
170252
  animationId: scriptInfo?.animationId,
170221
170253
  timeline: scriptInfo?.timeline,
170254
+ disablePolyfaceDecimation,
170222
170255
  };
170223
170256
  }
170224
170257
 
@@ -171275,6 +171308,10 @@ class IModelTile extends _tile_internal__WEBPACK_IMPORTED_MODULE_4__.Tile {
171275
171308
  args.insertMissing(this);
171276
171309
  return this.isParentDisplayable ? SelectParent.Yes : SelectParent.No;
171277
171310
  }
171311
+ clearLayers() {
171312
+ super.clearLayers();
171313
+ this.disposeChildren();
171314
+ }
171278
171315
  }
171279
171316
 
171280
171317
 
@@ -174223,7 +174260,8 @@ class PrimaryTreeReference extends _tile_internal__WEBPACK_IMPORTED_MODULE_6__.T
174223
174260
  const edgesRequired = visibleEdges || _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.RenderMode.SmoothShade !== renderMode || _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.tileAdmin.alwaysRequestEdges;
174224
174261
  const edges = edgesRequired ? _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.tileAdmin.edgeOptions : false;
174225
174262
  const sectionCut = this._sectionClip?.clipString;
174226
- return { type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.Primary, edges, animationId, sectionCut };
174263
+ const disablePolyfaceDecimation = _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.tileAdmin.disablePolyfaceDecimation;
174264
+ return { type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.Primary, edges, animationId, sectionCut, disablePolyfaceDecimation };
174227
174265
  }
174228
174266
  computeBaseTransform(tree) {
174229
174267
  return super.computeTransform(tree);
@@ -174376,7 +174414,7 @@ class MaskTreeReference extends _tile_internal__WEBPACK_IMPORTED_MODULE_6__.Tile
174376
174414
  return this._owner;
174377
174415
  }
174378
174416
  createTreeId() {
174379
- return { type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.Primary, edges: false };
174417
+ return { type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.Primary, edges: false, disablePolyfaceDecimation: _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.tileAdmin.disablePolyfaceDecimation };
174380
174418
  }
174381
174419
  }
174382
174420
  function createMaskTreeReference(view, model) {
@@ -174402,7 +174440,7 @@ class ModelMapLayerTileTreeReference extends _tile_internal__WEBPACK_IMPORTED_MO
174402
174440
  this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);
174403
174441
  }
174404
174442
  createTreeId() {
174405
- return { type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.Primary, edges: false };
174443
+ return { type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.Primary, edges: false, disablePolyfaceDecimation: _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.tileAdmin.disablePolyfaceDecimation };
174406
174444
  }
174407
174445
  get treeOwner() {
174408
174446
  const newId = this.createTreeId();
@@ -180259,8 +180297,10 @@ class LocalUnitFormatProvider extends _BaseUnitFormattingSettingsProvider__WEBPA
180259
180297
  __webpack_require__.r(__webpack_exports__);
180260
180298
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
180261
180299
  /* harmony export */ AlternateUnitLabelsRegistry: () => (/* binding */ AlternateUnitLabelsRegistry),
180300
+ /* harmony export */ FormatsProviderManager: () => (/* binding */ FormatsProviderManager),
180262
180301
  /* harmony export */ QuantityFormatter: () => (/* binding */ QuantityFormatter),
180263
180302
  /* harmony export */ QuantityType: () => (/* binding */ QuantityType),
180303
+ /* harmony export */ QuantityTypeFormatsProvider: () => (/* binding */ QuantityTypeFormatsProvider),
180264
180304
  /* harmony export */ getQuantityTypeKey: () => (/* binding */ getQuantityTypeKey),
180265
180305
  /* harmony export */ isCustomQuantityTypeDefinition: () => (/* binding */ isCustomQuantityTypeDefinition)
180266
180306
  /* harmony export */ });
@@ -180406,12 +180446,66 @@ class StandardQuantityTypeDefinition {
180406
180446
  return _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.ParserSpec.create(format, unitsProvider, this.persistenceUnit, alternateUnitLabelsProvider);
180407
180447
  }
180408
180448
  }
180449
+ /**
180450
+ * A default formatsProvider, that provides a limited set of [[FormatDefinition]], associated to a few [[KindOfQuantity]].
180451
+ * Maps each KindOfQuantity to a [[QuantityType]].
180452
+ * When retrieving a valid [[KindOfQuantity]], returns the [[FormatProps]] for the associated [[QuantityType]].
180453
+ * @internal
180454
+ */
180455
+ class QuantityTypeFormatsProvider {
180456
+ onFormatsChanged = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
180457
+ constructor() {
180458
+ _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.addListener(() => {
180459
+ this.onFormatsChanged.raiseEvent({ formatsChanged: "all" });
180460
+ });
180461
+ }
180462
+ _kindOfQuantityMap = new Map([
180463
+ ["AecUnits.LENGTH", QuantityType.Length],
180464
+ ["AecUnits.ANGLE", QuantityType.Angle],
180465
+ ["AecUnits.AREA", QuantityType.Area],
180466
+ ["AecUnits.VOLUME", QuantityType.Volume],
180467
+ ["RoadRailUnits.STATION", QuantityType.Stationing],
180468
+ ["RoadRailUnits.LENGTH", QuantityType.LengthSurvey],
180469
+ ]);
180470
+ async getFormat(name) {
180471
+ const quantityType = this._kindOfQuantityMap.get(name);
180472
+ if (!quantityType)
180473
+ return undefined;
180474
+ return _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.quantityFormatter.getFormatPropsByQuantityType(quantityType);
180475
+ }
180476
+ }
180477
+ /**
180478
+ * An implementation of the [[FormatsProvider]] interface that forwards calls to getFormats to the underlying FormatsProvider.
180479
+ * Also fires the onFormatsChanged event when the underlying FormatsProvider fires its own onFormatsChanged event.
180480
+ * @internal
180481
+ */
180482
+ class FormatsProviderManager {
180483
+ _formatsProvider;
180484
+ onFormatsChanged = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
180485
+ constructor(_formatsProvider) {
180486
+ this._formatsProvider = _formatsProvider;
180487
+ this._formatsProvider.onFormatsChanged.addListener((args) => {
180488
+ this.onFormatsChanged.raiseEvent(args);
180489
+ });
180490
+ }
180491
+ async getFormat(name) {
180492
+ return this._formatsProvider.getFormat(name);
180493
+ }
180494
+ get formatsProvider() { return this; }
180495
+ set formatsProvider(formatsProvider) {
180496
+ this._formatsProvider = formatsProvider;
180497
+ this._formatsProvider.onFormatsChanged.addListener((args) => {
180498
+ this.onFormatsChanged.raiseEvent(args);
180499
+ });
180500
+ this.onFormatsChanged.raiseEvent({ formatsChanged: "all" });
180501
+ }
180502
+ }
180409
180503
  /** Class that supports formatting quantity values into strings and parsing strings into quantity values. This class also maintains
180410
180504
  * the "active" unit system and caches FormatterSpecs and ParserSpecs for the "active" unit system to allow synchronous access to
180411
180505
  * parsing and formatting values. The support unit systems are defined by [[UnitSystemKey]] and is kept in synch with the unit systems
180412
180506
  * provided by the Presentation Manager on the backend. The QuantityFormatter contains a registry of quantity type definitions. These definitions implement
180413
- * the [[QuantityTypeDefinition]] interface, which among other things, provide default [FormatProps]$(core-quantity), and provide methods
180414
- * to generate both a [FormatterSpec]$(core-quantity) and a [ParserSpec]$(core-quantity). There are built-in quantity types that are
180507
+ * the [[QuantityTypeDefinition]] interface, which among other things, provide default [[FormatProps]], and provide methods
180508
+ * to generate both a [[FormatterSpec]] and a [[ParserSpec]]. There are built-in quantity types that are
180415
180509
  * identified by the [[QuantityType]] enum. [[CustomQuantityTypeDefinition]] can be registered to extend the available quantity types available
180416
180510
  * by frontend tools. The QuantityFormatter also allows the default formats to be overriden.
180417
180511
  *
@@ -180815,26 +180909,51 @@ class QuantityFormatter {
180815
180909
  requestedSystem = isImperial ? "imperial" : "metric";
180816
180910
  return this.getParserSpecByQuantityTypeAndSystem(type, requestedSystem);
180817
180911
  }
180818
- /** Generates a formatted string for a quantity given its format spec.
180819
- * @param magnitude The magnitude of the quantity.
180820
- * @param formatSpec The format specification. See methods getFormatterSpecByQuantityType and findFormatterSpecByQuantityType.
180821
- * @return the formatted string.
180822
- */
180823
- formatQuantity(magnitude, formatSpec) {
180824
- /** Format a quantity value. Default FormatterSpec implementation uses Formatter.formatQuantity. */
180825
- if (formatSpec)
180826
- return formatSpec.applyFormatting(magnitude);
180827
- return magnitude.toString();
180912
+ // eslint-disable-next-line @typescript-eslint/promise-function-async
180913
+ formatQuantity(args, spec) {
180914
+ if (typeof args === "number") {
180915
+ /** Format a quantity value. Default FormatterSpec implementation uses Formatter.formatQuantity. */
180916
+ const magnitude = args;
180917
+ if (spec)
180918
+ return spec.applyFormatting(magnitude);
180919
+ return magnitude.toString();
180920
+ }
180921
+ return this.formatQuantityAsync(args);
180922
+ }
180923
+ async formatQuantityAsync(args) {
180924
+ const { value, valueUnitName, kindOfQuantityName } = args;
180925
+ const formatProps = await _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.formatsProvider.getFormat(kindOfQuantityName);
180926
+ if (!formatProps)
180927
+ return value.toString();
180928
+ const formatSpec = await this.createFormatterSpec({
180929
+ persistenceUnitName: valueUnitName,
180930
+ formatProps,
180931
+ formatName: kindOfQuantityName,
180932
+ });
180933
+ return formatSpec.applyFormatting(value);
180828
180934
  }
180829
- /** Parse input string into quantity given the ParserSpec
180830
- * @param inString The magnitude of the quantity.
180831
- * @param parserSpec The parse specification the defines the expected format of the string and the conversion to the output unit.
180832
- * @return QuantityParseResult object containing either the parsed value or an error value if unsuccessful.
180833
- */
180834
- parseToQuantityValue(inString, parserSpec) {
180835
- if (parserSpec)
180836
- return parserSpec.parseToQuantityValue(inString);
180837
- return { ok: false, error: _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.ParseError.InvalidParserSpec };
180935
+ // eslint-disable-next-line @typescript-eslint/promise-function-async
180936
+ parseToQuantityValue(args, parserSpec) {
180937
+ if (typeof args === "string") {
180938
+ /** Parse a quantity value. Default ParserSpec implementation uses ParserSpec.parseToQuantityValue. */
180939
+ const inString = args;
180940
+ if (parserSpec)
180941
+ return parserSpec.parseToQuantityValue(inString);
180942
+ return { ok: false, error: _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.ParseError.InvalidParserSpec };
180943
+ }
180944
+ return this.parseToQuantityValueAsync(args);
180945
+ }
180946
+ async parseToQuantityValueAsync(args) {
180947
+ const { value, valueUnitName, kindOfQuantityName } = args;
180948
+ const formatProps = await _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.formatsProvider.getFormat(kindOfQuantityName);
180949
+ if (!formatProps)
180950
+ return { ok: false, error: _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.ParseError.InvalidParserSpec };
180951
+ const parserSpec = await this.createParserSpec({
180952
+ persistenceUnitName: valueUnitName,
180953
+ formatProps,
180954
+ formatName: kindOfQuantityName,
180955
+ });
180956
+ return parserSpec.parseToQuantityValue(value);
180838
180957
  }
180839
180958
  /**
180840
180959
  * Get a UnitSystemKey from a string that may have been entered via a key-in. Supports different variation of
@@ -180904,6 +181023,28 @@ class QuantityFormatter {
180904
181023
  async getConversion(fromUnit, toUnit) {
180905
181024
  return this._unitsProvider.getConversion(fromUnit, toUnit);
180906
181025
  }
181026
+ /**
181027
+ * Creates a [[FormatterSpec]] for a given persistence unit name and format properties, using the [[UnitsProvider]] to resolve the persistence unit.
181028
+ * @beta
181029
+ * @param props - A [[CreateFormattingSpecProps]] interface.
181030
+ */
181031
+ async createFormatterSpec(props) {
181032
+ const { persistenceUnitName, formatProps, formatName } = props;
181033
+ const persistenceUnitProps = await this._unitsProvider.findUnitByName(persistenceUnitName);
181034
+ const format = await _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.Format.createFromJSON(formatName ?? "temp", this._unitsProvider, formatProps);
181035
+ return _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.FormatterSpec.create(`${format.name}_format_spec`, format, this._unitsProvider, persistenceUnitProps);
181036
+ }
181037
+ /**
181038
+ * Creates a [[ParserSpec]] for a given persistence unit name and format properties, using the [[UnitsProvider]] to resolve the persistence unit.
181039
+ * @beta
181040
+ * @param props - A [[CreateFormattingSpecProps]] object.
181041
+ */
181042
+ async createParserSpec(props) {
181043
+ const { persistenceUnitName, formatProps, formatName } = props;
181044
+ const persistenceUnitProps = await this._unitsProvider.findUnitByName(persistenceUnitName);
181045
+ const format = await _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.Format.createFromJSON(formatName ?? "temp", this._unitsProvider, formatProps);
181046
+ return _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.ParserSpec.create(format, this._unitsProvider, persistenceUnitProps);
181047
+ }
180907
181048
  }
180908
181049
  // ========================================================================================================================================
180909
181050
  // Default Data
@@ -187944,6 +188085,8 @@ class TileAdmin {
187944
188085
  /** @internal */
187945
188086
  optimizeBRepProcessing;
187946
188087
  /** @internal */
188088
+ disablePolyfaceDecimation;
188089
+ /** @internal */
187947
188090
  useLargerTiles;
187948
188091
  /** @internal */
187949
188092
  maximumLevelsToSkip;
@@ -188032,6 +188175,7 @@ class TileAdmin {
188032
188175
  this.useProjectExtents = options.useProjectExtents ?? _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.defaultTileOptions.useProjectExtents;
188033
188176
  this.expandProjectExtents = options.expandProjectExtents ?? _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.defaultTileOptions.expandProjectExtents;
188034
188177
  this.optimizeBRepProcessing = options.optimizeBRepProcessing ?? _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.defaultTileOptions.optimizeBRepProcessing;
188178
+ this.disablePolyfaceDecimation = options.disablePolyfaceDecimation ?? _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.defaultTileOptions.disablePolyfaceDecimation;
188035
188179
  this.useLargerTiles = options.useLargerTiles ?? _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.defaultTileOptions.useLargerTiles;
188036
188180
  this.mobileRealityTileMinToleranceRatio = Math.max(options.mobileRealityTileMinToleranceRatio ?? 3.0, 1.0);
188037
188181
  this.cesiumIonKey = options.cesiumIonKey;
@@ -201308,11 +201452,10 @@ __webpack_require__.r(__webpack_exports__);
201308
201452
  /* harmony import */ var _IModelApp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../IModelApp */ "../../core/frontend/lib/esm/IModelApp.js");
201309
201453
  /* harmony import */ var _Marker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Marker */ "../../core/frontend/lib/esm/Marker.js");
201310
201454
  /* harmony import */ var _NotificationManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../NotificationManager */ "../../core/frontend/lib/esm/NotificationManager.js");
201311
- /* harmony import */ var _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../quantity-formatting/QuantityFormatter */ "../../core/frontend/lib/esm/quantity-formatting/QuantityFormatter.js");
201312
- /* harmony import */ var _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./PrimitiveTool */ "../../core/frontend/lib/esm/tools/PrimitiveTool.js");
201313
- /* harmony import */ var _Tool__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Tool */ "../../core/frontend/lib/esm/tools/Tool.js");
201314
- /* harmony import */ var _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ToolAssistance */ "../../core/frontend/lib/esm/tools/ToolAssistance.js");
201315
- /* harmony import */ var _common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../common/render/GraphicType */ "../../core/frontend/lib/esm/common/render/GraphicType.js");
201455
+ /* harmony import */ var _PrimitiveTool__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PrimitiveTool */ "../../core/frontend/lib/esm/tools/PrimitiveTool.js");
201456
+ /* harmony import */ var _Tool__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Tool */ "../../core/frontend/lib/esm/tools/Tool.js");
201457
+ /* harmony import */ var _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ToolAssistance */ "../../core/frontend/lib/esm/tools/ToolAssistance.js");
201458
+ /* harmony import */ var _common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../common/render/GraphicType */ "../../core/frontend/lib/esm/common/render/GraphicType.js");
201316
201459
  /*---------------------------------------------------------------------------------------------
201317
201460
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
201318
201461
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -201333,9 +201476,18 @@ __webpack_require__.r(__webpack_exports__);
201333
201476
 
201334
201477
 
201335
201478
 
201336
-
201337
201479
  function translateBold(key) {
201338
- return `<b>${_Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(`Measure.Labels.${key}`)}:</b> `;
201480
+ return `<b>${_Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(`Measure.Labels.${key}`)}:</b> `;
201481
+ }
201482
+ async function getFormatterSpecByKoQAndPersistenceUnit(koq, persistenceUnitName) {
201483
+ const formatProps = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.formatsProvider.getFormat(koq);
201484
+ if (undefined === formatProps)
201485
+ return undefined;
201486
+ return _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.createFormatterSpec({
201487
+ persistenceUnitName,
201488
+ formatProps,
201489
+ formatName: koq
201490
+ });
201339
201491
  }
201340
201492
  /** @internal */
201341
201493
  class MeasureLabel {
@@ -201399,7 +201551,7 @@ class MeasureMarker extends _Marker__WEBPACK_IMPORTED_MODULE_7__.Marker {
201399
201551
  onMouseButton(_ev) { return true; } // Never forward event to active tool...
201400
201552
  onMouseEnter(ev) {
201401
201553
  super.onMouseEnter(ev);
201402
- if (this.title && _Tool__WEBPACK_IMPORTED_MODULE_11__.InputSource.Touch === ev.inputSource && ev.viewport)
201554
+ if (this.title && _Tool__WEBPACK_IMPORTED_MODULE_10__.InputSource.Touch === ev.inputSource && ev.viewport)
201403
201555
  ev.viewport.openToolTip(this.title, ev.viewPoint, this.tooltipOptions);
201404
201556
  }
201405
201557
  onMouseLeave() {
@@ -201436,7 +201588,7 @@ function adjustPoint(ev, segments, locations) {
201436
201588
  /** Report distance between 2 points using current quantity formatter for length.
201437
201589
  * @public
201438
201590
  */
201439
- class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.PrimitiveTool {
201591
+ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_9__.PrimitiveTool {
201440
201592
  static toolId = "Measure.Distance";
201441
201593
  static iconSpec = "icon-measure-distance";
201442
201594
  /** @internal */
@@ -201454,6 +201606,12 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201454
201606
  /** @internal */
201455
201607
  _lastMotionAdjustedPt;
201456
201608
  /** @internal */
201609
+ _lengthFormatterSpec;
201610
+ /** @internal */
201611
+ _angleFormatterSpec;
201612
+ /** @internal */
201613
+ _removeFormatterListener;
201614
+ /** @internal */
201457
201615
  allowView(vp) { return vp.view.isSpatialView() || vp.view.isDrawingView(); }
201458
201616
  /** @internal */
201459
201617
  isCompatibleViewport(vp, isSelectedViewChange) { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && this.allowView(vp)); }
@@ -201464,34 +201622,50 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201464
201622
  /** @internal */
201465
201623
  async onPostInstall() {
201466
201624
  await super.onPostInstall();
201625
+ this._lengthFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
201626
+ this._angleFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.ANGLE", "Units.RAD");
201627
+ this._removeFormatterListener = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.formatsProvider.onFormatsChanged.addListener(async (args) => {
201628
+ if (args.formatsChanged === "all" || args.formatsChanged.includes("AecUnits.LENGTH"))
201629
+ this._lengthFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
201630
+ if (args.formatsChanged === "all" || args.formatsChanged.includes("AecUnits.ANGLE"))
201631
+ this._angleFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.ANGLE", "Units.RAD");
201632
+ });
201467
201633
  this.setupAndPromptForNextAction();
201468
201634
  }
201469
201635
  /** @internal */
201636
+ async onCleanup() {
201637
+ if (this._removeFormatterListener) {
201638
+ this._removeFormatterListener();
201639
+ this._removeFormatterListener = undefined;
201640
+ }
201641
+ await super.onCleanup();
201642
+ }
201643
+ /** @internal */
201470
201644
  async onUnsuspend() { this.showPrompt(); }
201471
201645
  /** @internal */
201472
201646
  showPrompt() {
201473
- const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(0 === this._locationData.length ? "Measure.Distance.Prompts.FirstPoint" : "Measure.Distance.Prompts.NextPoint"));
201647
+ const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(0 === this._locationData.length ? "Measure.Distance.Prompts.FirstPoint" : "Measure.Distance.Prompts.NextPoint"));
201474
201648
  const mouseInstructions = [];
201475
201649
  const touchInstructions = [];
201476
- if (!_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createTouchCursorInstructions(touchInstructions))
201477
- touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.OneTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.AcceptPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Touch));
201478
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.LeftClick, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.AcceptPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
201650
+ if (!_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createTouchCursorInstructions(touchInstructions))
201651
+ touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.OneTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.AcceptPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Touch));
201652
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.LeftClick, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.AcceptPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
201479
201653
  if (0 === this._locationData.length) {
201480
201654
  if (this._acceptedSegments.length > 0) {
201481
- touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.TwoTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.Restart"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Touch));
201482
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.RightClick, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.Restart"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
201655
+ touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.TwoTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.Restart"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Touch));
201656
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.RightClick, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.Restart"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
201483
201657
  }
201484
201658
  }
201485
201659
  else {
201486
- touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.TwoTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.Cancel"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Touch));
201487
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.RightClick, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.Cancel"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
201488
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createModifierKeyInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.ctrlKey, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.LeftClick, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.AdditionalPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
201489
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createKeyboardInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createKeyboardInfo([_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.ctrlKey, "Z"]), _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.UndoLastPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
201660
+ touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.TwoTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.Cancel"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Touch));
201661
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.RightClick, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.Cancel"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
201662
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createModifierKeyInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.ctrlKey, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.LeftClick, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.AdditionalPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
201663
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createKeyboardInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createKeyboardInfo([_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.ctrlKey, "Z"]), _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.UndoLastPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
201490
201664
  }
201491
201665
  const sections = [];
201492
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
201493
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
201494
- const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstructions(mainInstruction, sections);
201666
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
201667
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
201668
+ const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstructions(mainInstruction, sections);
201495
201669
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.setToolAssistance(instructions);
201496
201670
  }
201497
201671
  /** @internal */
@@ -201537,8 +201711,8 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201537
201711
  totalDistance += adjustedPoints[i].distance(adjustedPoints[i + 1]);
201538
201712
  if (0.0 === totalDistance)
201539
201713
  return;
201540
- const formatterSpec = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.findFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
201541
- if (undefined === formatterSpec)
201714
+ const formatterSpec = this._lengthFormatterSpec;
201715
+ if (formatterSpec === undefined)
201542
201716
  return;
201543
201717
  const formattedTotalDistance = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(totalDistance, formatterSpec);
201544
201718
  const distDyn = new MeasureLabel(points[points.length - 1], formattedTotalDistance);
@@ -201552,7 +201726,7 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201552
201726
  seg.refAxes.multiplyVectorInPlace(xVec);
201553
201727
  seg.refAxes.multiplyVectorInPlace(yVec);
201554
201728
  seg.refAxes.multiplyVectorInPlace(zVec);
201555
- const builderAxes = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldOverlay);
201729
+ const builderAxes = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldOverlay);
201556
201730
  let basePt = seg.start.clone();
201557
201731
  if (xVec.magnitude() > 1.0e-5) {
201558
201732
  const segPoints = [];
@@ -201599,12 +201773,12 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201599
201773
  }
201600
201774
  tmpPoints.push(this._lastMotionPt);
201601
201775
  tmpAdjustedPoints.push(this._lastMotionAdjustedPt);
201602
- const builderDynVis = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldDecoration);
201776
+ const builderDynVis = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldDecoration);
201603
201777
  const colorDynVis = context.viewport.hilite.color;
201604
201778
  builderDynVis.setSymbology(colorDynVis, _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.black, 3);
201605
201779
  builderDynVis.addLineString(tmpPoints);
201606
201780
  context.addDecorationFromBuilder(builderDynVis);
201607
- const builderDynHid = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldOverlay);
201781
+ const builderDynHid = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldOverlay);
201608
201782
  const colorDynHid = colorDynVis.withAlpha(100);
201609
201783
  builderDynHid.setSymbology(colorDynHid, _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.black, 1, _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.LinePixels.Code2);
201610
201784
  builderDynHid.addLineString(tmpPoints);
@@ -201612,8 +201786,8 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201612
201786
  this.displayDynamicDistance(context, tmpPoints, tmpAdjustedPoints);
201613
201787
  }
201614
201788
  if (this._acceptedSegments.length > 0) {
201615
- const builderAccVis = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldDecoration);
201616
- const builderAccHid = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldOverlay);
201789
+ const builderAccVis = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldDecoration);
201790
+ const builderAccHid = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldOverlay);
201617
201791
  const colorAccVis = _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.white.adjustedForContrast(context.viewport.view.backgroundColor);
201618
201792
  const colorAccHid = colorAccVis.withAlpha(100);
201619
201793
  builderAccVis.setSymbology(colorAccVis, _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.black, 3);
@@ -201635,7 +201809,7 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201635
201809
  return;
201636
201810
  if (undefined === this._snapGeomId)
201637
201811
  this._snapGeomId = this.iModel.transientIds.getNext();
201638
- const builderSnapPts = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldOverlay, undefined, this._snapGeomId);
201812
+ const builderSnapPts = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldOverlay, undefined, this._snapGeomId);
201639
201813
  const colorAccPts = _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.white.adjustedForContrast(context.viewport.view.backgroundColor);
201640
201814
  builderSnapPts.setSymbology(colorAccPts, _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.black, 7);
201641
201815
  builderSnapPts.addPointString(snapPoints);
@@ -201664,7 +201838,7 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201664
201838
  reportMeasurements() {
201665
201839
  if (undefined === this._totalDistanceMarker)
201666
201840
  return;
201667
- const briefMsg = `${_Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(this._acceptedSegments.length > 1 ? "Measure.Labels.CumulativeDistance" : "Measure.Labels.Distance")}: ${this._totalDistanceMarker.label}`;
201841
+ const briefMsg = `${_Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(this._acceptedSegments.length > 1 ? "Measure.Labels.CumulativeDistance" : "Measure.Labels.Distance")}: ${this._totalDistanceMarker.label}`;
201668
201842
  const msgDetail = new _NotificationManager__WEBPACK_IMPORTED_MODULE_8__.NotifyMessageDetails(_NotificationManager__WEBPACK_IMPORTED_MODULE_8__.OutputMessagePriority.Info, briefMsg, undefined, _NotificationManager__WEBPACK_IMPORTED_MODULE_8__.OutputMessageType.Sticky);
201669
201843
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.outputMessage(msgDetail);
201670
201844
  }
@@ -201675,7 +201849,7 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201675
201849
  this._totalDistance += seg.distance;
201676
201850
  if (0.0 === this._totalDistance)
201677
201851
  return;
201678
- const formatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
201852
+ const formatterSpec = this._lengthFormatterSpec;
201679
201853
  if (undefined === formatterSpec)
201680
201854
  return;
201681
201855
  const formattedTotalDistance = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._totalDistance, formatterSpec);
@@ -201686,20 +201860,20 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201686
201860
  const is3d = (undefined === this.targetView || this.targetView.view.is3d());
201687
201861
  const isSpatial = (undefined !== this.targetView && this.targetView.view.isSpatialView());
201688
201862
  const toolTip = document.createElement("div");
201689
- const distanceFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
201863
+ const distanceFormatterSpec = this._lengthFormatterSpec;
201690
201864
  if (undefined === distanceFormatterSpec)
201691
201865
  return toolTip;
201692
201866
  let toolTipHtml = "";
201693
201867
  const formattedDistance = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(distance, distanceFormatterSpec);
201694
201868
  toolTipHtml += `${translateBold("Distance") + formattedDistance}<br>`;
201695
201869
  if (is3d) {
201696
- const angleFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Angle);
201870
+ const angleFormatterSpec = this._angleFormatterSpec;
201697
201871
  if (undefined !== angleFormatterSpec) {
201698
201872
  const formattedSlope = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(slope, angleFormatterSpec);
201699
201873
  toolTipHtml += `${translateBold("Slope") + formattedSlope}<br>`;
201700
201874
  }
201701
201875
  }
201702
- const coordFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Coordinate);
201876
+ const coordFormatterSpec = this._lengthFormatterSpec;
201703
201877
  if (undefined !== coordFormatterSpec) {
201704
201878
  let startAdjusted = start;
201705
201879
  let endAdjusted = end;
@@ -201844,19 +202018,19 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201844
202018
  this.setupAndPromptForNextAction();
201845
202019
  if (undefined !== ev.viewport)
201846
202020
  ev.viewport.invalidateDecorations();
201847
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202021
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
201848
202022
  }
201849
202023
  /** @internal */
201850
202024
  async onResetButtonUp(ev) {
201851
202025
  if (0 === this._locationData.length) {
201852
202026
  await this.onReinitialize();
201853
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202027
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
201854
202028
  }
201855
202029
  await this.acceptNewSegments();
201856
202030
  this.setupAndPromptForNextAction();
201857
202031
  if (undefined !== ev.viewport)
201858
202032
  ev.viewport.invalidateDecorations();
201859
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202033
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
201860
202034
  }
201861
202035
  /** @internal */
201862
202036
  async onUndoPreviousStep() {
@@ -201887,7 +202061,7 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201887
202061
  /** Report spatial coordinate at a point as well as cartographic location for geolocated models using current quantity formatters.
201888
202062
  * @public
201889
202063
  */
201890
- class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.PrimitiveTool {
202064
+ class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_9__.PrimitiveTool {
201891
202065
  static toolId = "Measure.Location";
201892
202066
  static iconSpec = "icon-measure-location";
201893
202067
  /** @internal */
@@ -201909,20 +202083,20 @@ class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201909
202083
  async onUnsuspend() { this.showPrompt(); }
201910
202084
  /** @internal */
201911
202085
  showPrompt() {
201912
- const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("Measure.Location.Prompts.EnterPoint"));
202086
+ const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("Measure.Location.Prompts.EnterPoint"));
201913
202087
  const mouseInstructions = [];
201914
202088
  const touchInstructions = [];
201915
- if (!_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createTouchCursorInstructions(touchInstructions))
201916
- touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.OneTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.AcceptPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Touch));
201917
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.LeftClick, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.AcceptPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
202089
+ if (!_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createTouchCursorInstructions(touchInstructions))
202090
+ touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.OneTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.AcceptPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Touch));
202091
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.LeftClick, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.AcceptPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
201918
202092
  if (0 !== this._acceptedLocations.length) {
201919
- touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.TwoTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.Restart"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Touch));
201920
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.RightClick, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.Restart"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
202093
+ touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.TwoTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.Restart"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Touch));
202094
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.RightClick, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.Restart"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
201921
202095
  }
201922
202096
  const sections = [];
201923
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
201924
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
201925
- const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstructions(mainInstruction, sections);
202097
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
202098
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
202099
+ const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstructions(mainInstruction, sections);
201926
202100
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.setToolAssistance(instructions);
201927
202101
  }
201928
202102
  /** @internal */
@@ -201935,7 +202109,7 @@ class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201935
202109
  const isSpatial = (undefined !== this.targetView && this.targetView.view.isSpatialView());
201936
202110
  const toolTip = document.createElement("div");
201937
202111
  let toolTipHtml = "";
201938
- const coordFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Coordinate);
202112
+ const coordFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
201939
202113
  if (undefined !== coordFormatterSpec) {
201940
202114
  let pointAdjusted = point;
201941
202115
  if (isSpatial) {
@@ -201951,15 +202125,15 @@ class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201951
202125
  toolTipHtml += "<br>";
201952
202126
  }
201953
202127
  if (isSpatial) {
201954
- const latLongFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.LatLong);
202128
+ const latLongFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.ANGLE", "Units.RAD");
201955
202129
  if (undefined !== latLongFormatterSpec && undefined !== coordFormatterSpec) {
201956
202130
  try {
201957
202131
  const cartographic = await this.iModel.spatialToCartographic(point);
201958
202132
  const formattedLat = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(Math.abs(cartographic.latitude), latLongFormatterSpec);
201959
202133
  const formattedLong = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(Math.abs(cartographic.longitude), latLongFormatterSpec);
201960
202134
  const formattedHeight = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(cartographic.height, coordFormatterSpec);
201961
- const latDir = _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(cartographic.latitude < 0 ? "Measure.Labels.S" : "Measure.Labels.N");
201962
- const longDir = _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(cartographic.longitude < 0 ? "Measure.Labels.W" : "Measure.Labels.E");
202135
+ const latDir = _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(cartographic.latitude < 0 ? "Measure.Labels.S" : "Measure.Labels.N");
202136
+ const longDir = _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(cartographic.longitude < 0 ? "Measure.Labels.W" : "Measure.Labels.E");
201963
202137
  toolTipHtml += `${translateBold("LatLong") + formattedLat + latDir}, ${formattedLong}${longDir}<br>`;
201964
202138
  toolTipHtml += `${translateBold("Altitude") + formattedHeight}<br>`;
201965
202139
  }
@@ -201997,12 +202171,12 @@ class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201997
202171
  this.setupAndPromptForNextAction();
201998
202172
  if (undefined !== ev.viewport)
201999
202173
  ev.viewport.invalidateDecorations();
202000
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202174
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202001
202175
  }
202002
202176
  /** @internal */
202003
202177
  async onResetButtonUp(_ev) {
202004
202178
  await this.onReinitialize();
202005
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202179
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202006
202180
  }
202007
202181
  /** @internal */
202008
202182
  async onUndoPreviousStep() {
@@ -202028,7 +202202,7 @@ class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
202028
202202
  /** Report area defined by points using current quantity formatter for area.
202029
202203
  * @public
202030
202204
  */
202031
- class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.PrimitiveTool {
202205
+ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_9__.PrimitiveTool {
202032
202206
  static toolId = "Measure.AreaByPoints";
202033
202207
  static iconSpec = "icon-measure-2d";
202034
202208
  /** @internal */
@@ -202057,12 +202231,12 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202057
202231
  /** @internal */
202058
202232
  static _orientationName = "enumAsOrientation";
202059
202233
  /** @internal */
202060
- static enumAsOrientationMessage(str) { return _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(`Settings.Orientation.${str}`); }
202234
+ static enumAsOrientationMessage(str) { return _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(`Settings.Orientation.${str}`); }
202061
202235
  /** @internal */
202062
202236
  static _getEnumAsOrientationDescription = () => {
202063
202237
  return {
202064
202238
  name: MeasureAreaByPointsTool._orientationName,
202065
- displayLabel: _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("Settings.Orientation.Label"),
202239
+ displayLabel: _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("Settings.Orientation.Label"),
202066
202240
  typename: "enum",
202067
202241
  enum: {
202068
202242
  choices: [
@@ -202130,24 +202304,24 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202130
202304
  mainMsg += this._isComplete ? "FirstPoint" : "NextPoint";
202131
202305
  break;
202132
202306
  }
202133
- const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(mainMsg));
202307
+ const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(mainMsg));
202134
202308
  const mouseInstructions = [];
202135
202309
  const touchInstructions = [];
202136
- const acceptMsg = _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(this._isComplete ? "ElementSet.Inputs.Restart" : "ElementSet.Inputs.AcceptPoint");
202137
- if (!_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createTouchCursorInstructions(touchInstructions))
202138
- touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.OneTouchTap, acceptMsg, false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Touch));
202139
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.LeftClick, acceptMsg, false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
202140
- const resetMsg = _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.Restart");
202141
- touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.TwoTouchTap, resetMsg, false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Touch));
202142
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.RightClick, resetMsg, false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
202310
+ const acceptMsg = _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(this._isComplete ? "ElementSet.Inputs.Restart" : "ElementSet.Inputs.AcceptPoint");
202311
+ if (!_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createTouchCursorInstructions(touchInstructions))
202312
+ touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.OneTouchTap, acceptMsg, false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Touch));
202313
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.LeftClick, acceptMsg, false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
202314
+ const resetMsg = _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.Restart");
202315
+ touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.TwoTouchTap, resetMsg, false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Touch));
202316
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.RightClick, resetMsg, false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
202143
202317
  if (this._points.length > 1)
202144
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createModifierKeyInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.ctrlKey, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.LeftClick, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.AdditionalPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
202318
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createModifierKeyInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.ctrlKey, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.LeftClick, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.AdditionalPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
202145
202319
  if (0 !== this._points.length)
202146
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createKeyboardInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createKeyboardInfo([_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.ctrlKey, "Z"]), _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.UndoLastPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
202320
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createKeyboardInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createKeyboardInfo([_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.ctrlKey, "Z"]), _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.UndoLastPoint"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
202147
202321
  const sections = [];
202148
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
202149
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
202150
- const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstructions(mainInstruction, sections);
202322
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
202323
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
202324
+ const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstructions(mainInstruction, sections);
202151
202325
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.setToolAssistance(instructions);
202152
202326
  }
202153
202327
  /** @internal */
@@ -202191,7 +202365,7 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202191
202365
  let currentPt = _AccuDraw__WEBPACK_IMPORTED_MODULE_3__.AccuDrawHintBuilder.projectPointToPlaneInView(cursorPt, points[0], normal, this.targetView, true);
202192
202366
  if (undefined === currentPt)
202193
202367
  currentPt = cursorPt.clone();
202194
- if (2 === points.length && 0 === (_IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.toolAdmin.currentInputState.qualifiers & _Tool__WEBPACK_IMPORTED_MODULE_11__.BeModifierKeys.Control)) {
202368
+ if (2 === points.length && 0 === (_IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.toolAdmin.currentInputState.qualifiers & _Tool__WEBPACK_IMPORTED_MODULE_10__.BeModifierKeys.Control)) {
202195
202369
  const xDir = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createStartEnd(points[0], points[1]);
202196
202370
  const xLen = xDir.magnitude();
202197
202371
  xDir.normalizeInPlace();
@@ -202217,8 +202391,8 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202217
202391
  const points = this.getShapePoints(this._lastMotionPt);
202218
202392
  if (points.length < 2)
202219
202393
  return;
202220
- const builderAccVis = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldDecoration);
202221
- const builderAccHid = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldOverlay);
202394
+ const builderAccVis = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldDecoration);
202395
+ const builderAccHid = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldOverlay);
202222
202396
  const colorAccVis = _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.white.adjustedForContrast(context.viewport.view.backgroundColor);
202223
202397
  const colorAccHid = colorAccVis.withAlpha(100);
202224
202398
  const fillAccVis = context.viewport.hilite.color.withAlpha(50);
@@ -202255,17 +202429,17 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202255
202429
  const isSpatial = (undefined !== this.targetView && this.targetView.view.isSpatialView());
202256
202430
  const toolTip = document.createElement("div");
202257
202431
  let toolTipHtml = "";
202258
- const areaFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Area);
202432
+ const areaFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.AREA", "Units.SQ_M");
202259
202433
  if (undefined !== areaFormatterSpec) {
202260
202434
  const formattedArea = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._area, areaFormatterSpec);
202261
202435
  toolTipHtml += `${translateBold("Area") + formattedArea}<br>`;
202262
202436
  }
202263
- const perimeterFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
202437
+ const perimeterFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
202264
202438
  if (undefined !== perimeterFormatterSpec) {
202265
202439
  const formattedPerimeter = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._perimeter, perimeterFormatterSpec);
202266
202440
  toolTipHtml += `${translateBold("Perimeter") + formattedPerimeter}<br>`;
202267
202441
  }
202268
- const coordFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Coordinate);
202442
+ const coordFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
202269
202443
  if (undefined !== coordFormatterSpec) {
202270
202444
  let pointAdjusted = this._centroid.clone();
202271
202445
  if (isSpatial) {
@@ -202286,7 +202460,7 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202286
202460
  reportMeasurements() {
202287
202461
  if (undefined === this._marker)
202288
202462
  return;
202289
- const briefMsg = `${_Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("Measure.Labels.Area")}: ${this._marker.label}`;
202463
+ const briefMsg = `${_Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("Measure.Labels.Area")}: ${this._marker.label}`;
202290
202464
  const msgDetail = new _NotificationManager__WEBPACK_IMPORTED_MODULE_8__.NotifyMessageDetails(_NotificationManager__WEBPACK_IMPORTED_MODULE_8__.OutputMessagePriority.Info, briefMsg, undefined, _NotificationManager__WEBPACK_IMPORTED_MODULE_8__.OutputMessageType.Sticky);
202291
202465
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.outputMessage(msgDetail);
202292
202466
  }
@@ -202304,7 +202478,7 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202304
202478
  const toolTip = await this.getMarkerToolTip();
202305
202479
  this._acceptedMeasurement = new MeasureMarker("1", toolTip, this._centroid, _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point2d.create(25, 25));
202306
202480
  this._marker = undefined;
202307
- const areaFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Area);
202481
+ const areaFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.AREA", "Units.SQ_M");
202308
202482
  if (undefined === areaFormatterSpec)
202309
202483
  return;
202310
202484
  const formattedTotalArea = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._area, areaFormatterSpec);
@@ -202314,23 +202488,23 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202314
202488
  /** @internal */
202315
202489
  async onDataButtonDown(ev) {
202316
202490
  if (undefined === this.targetView)
202317
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202491
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202318
202492
  if (this._isComplete)
202319
202493
  await this.onReinitialize();
202320
202494
  if (this._points.length > 1 && !ev.isControlKey) {
202321
202495
  const points = this.getShapePoints(ev.point);
202322
202496
  if (points.length < 3)
202323
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202497
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202324
202498
  this._isComplete = true;
202325
202499
  this._points.length = 0;
202326
202500
  for (const pt of points)
202327
202501
  this._points.push(pt);
202328
202502
  await this.updateTotals();
202329
202503
  this.setupAndPromptForNextAction();
202330
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202504
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202331
202505
  }
202332
202506
  if (undefined === this._matrix && undefined === (this._matrix = _AccuDraw__WEBPACK_IMPORTED_MODULE_3__.AccuDrawHintBuilder.getContextRotation(this.orientation, this.targetView)))
202333
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202507
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202334
202508
  const currPt = ev.point.clone();
202335
202509
  if (this._points.length > 0) {
202336
202510
  const planePt = _AccuDraw__WEBPACK_IMPORTED_MODULE_3__.AccuDrawHintBuilder.projectPointToPlaneInView(currPt, this._points[0], this._matrix.getColumn(2), ev.viewport, true);
@@ -202339,14 +202513,14 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202339
202513
  }
202340
202514
  this._points.push(currPt);
202341
202515
  this.setupAndPromptForNextAction();
202342
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202516
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202343
202517
  }
202344
202518
  /** @internal */
202345
202519
  async onResetButtonUp(ev) {
202346
202520
  if (undefined !== ev.viewport)
202347
202521
  ev.viewport.invalidateDecorations();
202348
202522
  await this.onReinitialize();
202349
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202523
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202350
202524
  }
202351
202525
  /** @internal */
202352
202526
  async onReinitialize() {
@@ -202376,7 +202550,7 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202376
202550
  /** Base class for mass properties tools.
202377
202551
  * @public
202378
202552
  */
202379
- class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.PrimitiveTool {
202553
+ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_9__.PrimitiveTool {
202380
202554
  /** @internal */
202381
202555
  _checkedIds = new Map();
202382
202556
  /** @internal */
@@ -202412,33 +202586,33 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202412
202586
  /** @internal */
202413
202587
  showPrompt() {
202414
202588
  const mainMsg = (this._useSelection ? (0 === this._acceptedMeasurements.length ? "ElementSet.Prompts.ConfirmSelection" : "ElementSet.Prompts.InspectResult") : "ElementSet.Prompts.IdentifyElement");
202415
- const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(mainMsg));
202589
+ const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(mainMsg));
202416
202590
  const mouseInstructions = [];
202417
202591
  const touchInstructions = [];
202418
202592
  if (this._useSelection) {
202419
202593
  if (0 === this._acceptedMeasurements.length) {
202420
- touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.OneTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.AcceptSelection"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Touch));
202421
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.LeftClick, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.AcceptSelection"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
202422
- touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.TwoTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.RejectSelection"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Touch));
202423
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.RightClick, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.RejectSelection"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
202594
+ touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.OneTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.AcceptSelection"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Touch));
202595
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.LeftClick, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.AcceptSelection"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
202596
+ touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.TwoTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.RejectSelection"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Touch));
202597
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.RightClick, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.RejectSelection"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
202424
202598
  }
202425
202599
  else {
202426
- touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.TwoTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.Exit"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Touch));
202427
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.RightClick, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.Exit"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
202600
+ touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.TwoTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.Exit"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Touch));
202601
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.RightClick, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.Exit"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
202428
202602
  }
202429
202603
  }
202430
202604
  else {
202431
- touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.OneTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.AcceptElement"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Touch));
202432
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.LeftClick, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.AcceptElement"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
202605
+ touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.OneTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.AcceptElement"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Touch));
202606
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.LeftClick, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.AcceptElement"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
202433
202607
  if (0 !== this._acceptedMeasurements.length) {
202434
- touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.TwoTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.Restart"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Touch));
202435
- mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceImage.RightClick, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.Restart"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistanceInputMethod.Mouse));
202608
+ touchInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.TwoTouchTap, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.Restart"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Touch));
202609
+ mouseInstructions.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceImage.RightClick, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.Restart"), false, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistanceInputMethod.Mouse));
202436
202610
  }
202437
202611
  }
202438
202612
  const sections = [];
202439
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
202440
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
202441
- const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstructions(mainInstruction, sections);
202613
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
202614
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
202615
+ const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstructions(mainInstruction, sections);
202442
202616
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.setToolAssistance(instructions);
202443
202617
  }
202444
202618
  /** @internal */
@@ -202475,7 +202649,7 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202475
202649
  default:
202476
202650
  return;
202477
202651
  }
202478
- const briefMsg = `${_Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(label)}: ${this._totalMarker.label}`;
202652
+ const briefMsg = `${_Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(label)}: ${this._totalMarker.label}`;
202479
202653
  const msgDetail = new _NotificationManager__WEBPACK_IMPORTED_MODULE_8__.NotifyMessageDetails(_NotificationManager__WEBPACK_IMPORTED_MODULE_8__.OutputMessagePriority.Info, briefMsg, undefined, _NotificationManager__WEBPACK_IMPORTED_MODULE_8__.OutputMessageType.Sticky);
202480
202654
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.outputMessage(msgDetail);
202481
202655
  }
@@ -202486,7 +202660,7 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202486
202660
  let toolTipHtml = "";
202487
202661
  switch (this.getOperation()) {
202488
202662
  case _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MassPropertiesOperation.AccumulateLengths: {
202489
- const distanceFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
202663
+ const distanceFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
202490
202664
  if (undefined !== distanceFormatterSpec) {
202491
202665
  const formattedLength = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(responseProps.length ? responseProps.length : 0, distanceFormatterSpec);
202492
202666
  toolTipHtml += `${translateBold("Length") + formattedLength}<br>`;
@@ -202494,13 +202668,13 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202494
202668
  break;
202495
202669
  }
202496
202670
  case _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MassPropertiesOperation.AccumulateAreas: {
202497
- const areaFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Area);
202671
+ const areaFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.AREA", "Units.SQ_M");
202498
202672
  if (undefined !== areaFormatterSpec) {
202499
202673
  const formattedArea = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(responseProps.area ? responseProps.area : 0, areaFormatterSpec);
202500
202674
  toolTipHtml += `${translateBold("Area") + formattedArea}<br>`;
202501
202675
  }
202502
202676
  if (responseProps.perimeter) {
202503
- const perimeterFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
202677
+ const perimeterFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
202504
202678
  if (undefined !== perimeterFormatterSpec) {
202505
202679
  const formattedPerimeter = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(responseProps.perimeter, perimeterFormatterSpec);
202506
202680
  toolTipHtml += `${translateBold("Perimeter") + formattedPerimeter}<br>`;
@@ -202509,13 +202683,13 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202509
202683
  break;
202510
202684
  }
202511
202685
  case _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MassPropertiesOperation.AccumulateVolumes: {
202512
- const volumeFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Volume);
202686
+ const volumeFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.VOLUME", "Units.CUB_M");
202513
202687
  if (undefined !== volumeFormatterSpec) {
202514
202688
  const formattedVolume = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(responseProps.volume ? responseProps.volume : 0, volumeFormatterSpec);
202515
202689
  toolTipHtml += `${translateBold("Volume") + formattedVolume}<br>`;
202516
202690
  }
202517
202691
  if (responseProps.area) {
202518
- const areaFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Area);
202692
+ const areaFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.AREA", "Units.SQ_M");
202519
202693
  if (undefined !== areaFormatterSpec) {
202520
202694
  const formattedArea = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(responseProps.area, areaFormatterSpec);
202521
202695
  toolTipHtml += `${translateBold("Area") + formattedArea}<br>`;
@@ -202525,7 +202699,7 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202525
202699
  }
202526
202700
  }
202527
202701
  if (responseProps.centroid) {
202528
- const coordFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Coordinate);
202702
+ const coordFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
202529
202703
  if (undefined !== coordFormatterSpec) {
202530
202704
  let pointAdjusted = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON(responseProps.centroid);
202531
202705
  if (isSpatial) {
@@ -202576,21 +202750,21 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202576
202750
  return;
202577
202751
  switch (operation) {
202578
202752
  case _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MassPropertiesOperation.AccumulateLengths:
202579
- const distanceFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
202753
+ const distanceFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
202580
202754
  if (undefined === distanceFormatterSpec)
202581
202755
  return;
202582
202756
  const formattedTotalDistance = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._totalValue, distanceFormatterSpec);
202583
202757
  this._totalMarker = new MeasureLabel(labelPt, formattedTotalDistance);
202584
202758
  break;
202585
202759
  case _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MassPropertiesOperation.AccumulateAreas:
202586
- const areaFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Area);
202760
+ const areaFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.AREA", "Units.SQ_M");
202587
202761
  if (undefined === areaFormatterSpec)
202588
202762
  return;
202589
202763
  const formattedTotalArea = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._totalValue, areaFormatterSpec);
202590
202764
  this._totalMarker = new MeasureLabel(labelPt, formattedTotalArea);
202591
202765
  break;
202592
202766
  case _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MassPropertiesOperation.AccumulateVolumes:
202593
- const volumeFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Volume);
202767
+ const volumeFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.VOLUME", "Units.CUB_M");
202594
202768
  if (undefined === volumeFormatterSpec)
202595
202769
  return;
202596
202770
  const formattedTotalVolume = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._totalValue, volumeFormatterSpec);
@@ -202648,7 +202822,7 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202648
202822
  /** @internal */
202649
202823
  async onResetButtonUp(_ev) {
202650
202824
  await this.onReinitialize();
202651
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202825
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202652
202826
  }
202653
202827
  /** @internal */
202654
202828
  async onDataButtonDown(ev) {
@@ -202656,20 +202830,20 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202656
202830
  if (0 === this._acceptedMeasurements.length && undefined !== ev.viewport) {
202657
202831
  await this.doMeasureSelectedElements(ev.viewport);
202658
202832
  if (0 !== this._acceptedMeasurements.length)
202659
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.Yes;
202660
- _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.outputMessage(new _NotificationManager__WEBPACK_IMPORTED_MODULE_8__.NotifyMessageDetails(_NotificationManager__WEBPACK_IMPORTED_MODULE_8__.OutputMessagePriority.Error, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Error.NotSupportedElmType")));
202833
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.Yes;
202834
+ _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.outputMessage(new _NotificationManager__WEBPACK_IMPORTED_MODULE_8__.NotifyMessageDetails(_NotificationManager__WEBPACK_IMPORTED_MODULE_8__.OutputMessagePriority.Error, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Error.NotSupportedElmType")));
202661
202835
  await this.onReinitialize();
202662
202836
  }
202663
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.Yes;
202837
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.Yes;
202664
202838
  }
202665
202839
  const hit = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.locateManager.doLocate(new _ElementLocateManager__WEBPACK_IMPORTED_MODULE_4__.LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);
202666
202840
  if (undefined === hit || !hit.isElementHit)
202667
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202841
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202668
202842
  const result = this._checkedIds.get(hit.sourceId);
202669
202843
  if (undefined === result)
202670
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202844
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202671
202845
  if (-1 !== this._acceptedIds.indexOf(hit.sourceId))
202672
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.Yes; // Already accepted, not rejected in filterHit to avoid showing "not" cursor...
202846
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.Yes; // Already accepted, not rejected in filterHit to avoid showing "not" cursor...
202673
202847
  const toolTip = await this.getMarkerToolTip(result);
202674
202848
  const point = result.centroid ? _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON(result.centroid) : ev.point.clone();
202675
202849
  const marker = new MeasureMarker((this._acceptedMeasurements.length + 1).toString(), toolTip, point, _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point2d.create(25, 25));
@@ -202680,7 +202854,7 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202680
202854
  this.setupAndPromptForNextAction();
202681
202855
  if (undefined !== ev.viewport)
202682
202856
  ev.viewport.invalidateDecorations();
202683
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202857
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202684
202858
  }
202685
202859
  /** @internal */
202686
202860
  async onUndoPreviousStep() {
@@ -329385,18 +329559,18 @@ class Settings {
329385
329559
  }
329386
329560
  }
329387
329561
  toString() {
329388
- return `Configurations:
329389
- backend location: ${this.Backend.location},
329390
- backend name: ${this.Backend.name},
329391
- backend version: ${this.Backend.version},
329392
- oidc client id: ${this.oidcClientId},
329393
- oidc scopes: ${this.oidcScopes},
329394
- applicationId: ${this.gprid},
329395
- log level: ${this.logLevel},
329396
- testing iModelTileRpcTests: ${this.runiModelTileRpcTests},
329397
- testing PresentationRpcTest: ${this.runPresentationRpcTests},
329398
- testing iModelReadRpcTests: ${this.runiModelReadRpcTests},
329399
- testing DevToolsRpcTests: ${this.runDevToolsRpcTests},
329562
+ return `Configurations:
329563
+ backend location: ${this.Backend.location},
329564
+ backend name: ${this.Backend.name},
329565
+ backend version: ${this.Backend.version},
329566
+ oidc client id: ${this.oidcClientId},
329567
+ oidc scopes: ${this.oidcScopes},
329568
+ applicationId: ${this.gprid},
329569
+ log level: ${this.logLevel},
329570
+ testing iModelTileRpcTests: ${this.runiModelTileRpcTests},
329571
+ testing PresentationRpcTest: ${this.runPresentationRpcTests},
329572
+ testing iModelReadRpcTests: ${this.runiModelReadRpcTests},
329573
+ testing DevToolsRpcTests: ${this.runDevToolsRpcTests},
329400
329574
  testing iModelWriteRpcTests: ${this.runiModelWriteRpcTests}`;
329401
329575
  }
329402
329576
  }
@@ -329610,7 +329784,7 @@ class TestContext {
329610
329784
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
329611
329785
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
329612
329786
  await core_frontend_1.NoRenderApp.startup({
329613
- applicationVersion: "5.1.0-dev.12",
329787
+ applicationVersion: "5.1.0-dev.14",
329614
329788
  applicationId: this.settings.gprid,
329615
329789
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.serviceAuthToken),
329616
329790
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -342731,13 +342905,13 @@ class FavoritePropertiesManager {
342731
342905
  if (missingClasses.size === 0) {
342732
342906
  return baseClasses;
342733
342907
  }
342734
- const query = `
342735
- SELECT (derivedSchema.Name || ':' || derivedClass.Name) AS "ClassFullName", (baseSchema.Name || ':' || baseClass.Name) AS "BaseClassFullName"
342736
- FROM ECDbMeta.ClassHasAllBaseClasses baseClassRels
342737
- INNER JOIN ECDbMeta.ECClassDef derivedClass ON derivedClass.ECInstanceId = baseClassRels.SourceECInstanceId
342738
- INNER JOIN ECDbMeta.ECSchemaDef derivedSchema ON derivedSchema.ECInstanceId = derivedClass.Schema.Id
342739
- INNER JOIN ECDbMeta.ECClassDef baseClass ON baseClass.ECInstanceId = baseClassRels.TargetECInstanceId
342740
- INNER JOIN ECDbMeta.ECSchemaDef baseSchema ON baseSchema.ECInstanceId = baseClass.Schema.Id
342908
+ const query = `
342909
+ SELECT (derivedSchema.Name || ':' || derivedClass.Name) AS "ClassFullName", (baseSchema.Name || ':' || baseClass.Name) AS "BaseClassFullName"
342910
+ FROM ECDbMeta.ClassHasAllBaseClasses baseClassRels
342911
+ INNER JOIN ECDbMeta.ECClassDef derivedClass ON derivedClass.ECInstanceId = baseClassRels.SourceECInstanceId
342912
+ INNER JOIN ECDbMeta.ECSchemaDef derivedSchema ON derivedSchema.ECInstanceId = derivedClass.Schema.Id
342913
+ INNER JOIN ECDbMeta.ECClassDef baseClass ON baseClass.ECInstanceId = baseClassRels.TargetECInstanceId
342914
+ INNER JOIN ECDbMeta.ECSchemaDef baseSchema ON baseSchema.ECInstanceId = baseClass.Schema.Id
342741
342915
  WHERE (derivedSchema.Name || ':' || derivedClass.Name) IN (${[...missingClasses].map((className) => `'${className}'`).join(",")})`;
342742
342916
  const reader = imodel.createQueryReader(query, undefined, { rowFormat: core_common_1.QueryRowFormat.UseJsPropertyNames });
342743
342917
  while (await reader.step()) {
@@ -354678,7 +354852,7 @@ var loadLanguages = instance.loadLanguages;
354678
354852
  /***/ ((module) => {
354679
354853
 
354680
354854
  "use strict";
354681
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.1.0-dev.12","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^6.0.1","source-map-loader":"^5.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.2.4","@itwin/object-storage-core":"^2.3.0","@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
354855
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.1.0-dev.14","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^6.0.1","source-map-loader":"^5.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.2.4","@itwin/object-storage-core":"^2.3.0","@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
354682
354856
 
354683
354857
  /***/ }),
354684
354858