@itwin/rpcinterface-full-stack-tests 5.0.0-dev.112 → 5.0.0-dev.113

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)
@@ -99543,6 +99549,7 @@ __webpack_require__.r(__webpack_exports__);
99543
99549
 
99544
99550
 
99545
99551
 
99552
+ const loggerCategory = "SchemaFormatsProvider";
99546
99553
  /**
99547
99554
  * Provides default formats and kind of quantities from a given SchemaContext or SchemaLocater.
99548
99555
  * @beta
@@ -99581,7 +99588,14 @@ class SchemaFormatsProvider {
99581
99588
  this.onFormatsChanged.raiseEvent({ formatsChanged });
99582
99589
  }
99583
99590
  async getKindOfQuantityFormatFromSchema(itemKey) {
99584
- const kindOfQuantity = await this._context.getSchemaItem(itemKey, _Metadata_KindOfQuantity__WEBPACK_IMPORTED_MODULE_5__.KindOfQuantity);
99591
+ let kindOfQuantity;
99592
+ try {
99593
+ kindOfQuantity = await this._context.getSchemaItem(itemKey, _Metadata_KindOfQuantity__WEBPACK_IMPORTED_MODULE_5__.KindOfQuantity);
99594
+ }
99595
+ catch {
99596
+ _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_4__.Logger.logError(loggerCategory, `Failed to find KindOfQuantity ${itemKey.fullName}`);
99597
+ return undefined;
99598
+ }
99585
99599
  if (!kindOfQuantity) {
99586
99600
  return undefined;
99587
99601
  }
@@ -99626,13 +99640,27 @@ class SchemaFormatsProvider {
99626
99640
  async getFormat(name) {
99627
99641
  const [schemaName, schemaItemName] = _Metadata_SchemaItem__WEBPACK_IMPORTED_MODULE_2__.SchemaItem.parseFullName(name);
99628
99642
  const schemaKey = new _SchemaKey__WEBPACK_IMPORTED_MODULE_1__.SchemaKey(schemaName);
99629
- const schema = await this._context.getSchema(schemaKey);
99643
+ let schema;
99644
+ try {
99645
+ schema = await this._context.getSchema(schemaKey);
99646
+ }
99647
+ catch {
99648
+ _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_4__.Logger.logError(loggerCategory, `Failed to find schema ${schemaName}`);
99649
+ return undefined;
99650
+ }
99630
99651
  if (!schema) {
99631
99652
  return undefined;
99632
99653
  }
99633
99654
  const itemKey = new _SchemaKey__WEBPACK_IMPORTED_MODULE_1__.SchemaItemKey(schemaItemName, schema.schemaKey);
99634
99655
  if (schema.name === "Formats") {
99635
- const format = await this._context.getSchemaItem(itemKey, _Metadata_Format__WEBPACK_IMPORTED_MODULE_3__.Format);
99656
+ let format;
99657
+ try {
99658
+ format = await this._context.getSchemaItem(itemKey, _Metadata_Format__WEBPACK_IMPORTED_MODULE_3__.Format);
99659
+ }
99660
+ catch {
99661
+ _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_4__.Logger.logError(loggerCategory, `Failed to find Format ${itemKey.fullName}`);
99662
+ return undefined;
99663
+ }
99636
99664
  if (!format) {
99637
99665
  return undefined;
99638
99666
  }
@@ -113214,7 +113242,7 @@ __webpack_require__.r(__webpack_exports__);
113214
113242
 
113215
113243
  /** @public */
113216
113244
  const ITWINJS_CORE_VERSION = _package_json__WEBPACK_IMPORTED_MODULE_0__.version;
113217
- const COPYRIGHT_NOTICE = 'Copyright © 2017-2024 <a href="https://www.bentley.com" target="_blank" rel="noopener noreferrer">Bentley Systems, Inc.</a>';
113245
+ const COPYRIGHT_NOTICE = `Copyright © 2017-${new Date().getFullYear()} <a href="https://www.bentley.com" target="_blank" rel="noopener noreferrer">Bentley Systems, Inc.</a>`;
113218
113246
 
113219
113247
 
113220
113248
 
@@ -113290,6 +113318,7 @@ class IModelApp {
113290
113318
  static _hubAccess;
113291
113319
  static _realityDataAccess;
113292
113320
  static _publicPath;
113321
+ static _formatsProviderManager;
113293
113322
  // No instances of IModelApp may be created. All members are static and must be on the singleton object IModelApp.
113294
113323
  constructor() { }
113295
113324
  /** Event raised just before the frontend IModelApp is to be [[shutdown]]. */
@@ -113364,6 +113393,14 @@ class IModelApp {
113364
113393
  * The path should always end with a trailing `/`.
113365
113394
  */
113366
113395
  static get publicPath() { return this._publicPath; }
113396
+ /** The [[FormatsProvider]] for this session.
113397
+ * @param provider The provider to use for formatting quantities.
113398
+ * @beta
113399
+ */
113400
+ static get formatsProvider() { return this._formatsProviderManager; }
113401
+ static set formatsProvider(provider) {
113402
+ this._formatsProviderManager.formatsProvider = provider;
113403
+ }
113367
113404
  /** @alpha */
113368
113405
  static extensionAdmin = this._createExtensionAdmin();
113369
113406
  /** Map of classFullName to EntityState class */
@@ -113464,6 +113501,7 @@ class IModelApp {
113464
113501
  this._terrainProviderRegistry = new _tile_internal__WEBPACK_IMPORTED_MODULE_26__.TerrainProviderRegistry();
113465
113502
  this._realityDataSourceProviders = new _RealityDataSource__WEBPACK_IMPORTED_MODULE_25__.RealityDataSourceProviderRegistry();
113466
113503
  this._realityDataAccess = opts.realityDataAccess;
113504
+ this._formatsProviderManager = new _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_19__.FormatsProviderManager(opts.formatsProvider ?? new _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_19__.QuantityTypeFormatsProvider());
113467
113505
  this._publicPath = opts.publicPath ?? "";
113468
113506
  [
113469
113507
  this.renderSystem,
@@ -113495,6 +113533,8 @@ class IModelApp {
113495
113533
  this._entityClasses.clear();
113496
113534
  this.authorizationClient = undefined;
113497
113535
  this._initialized = false;
113536
+ this.quantityFormatter[Symbol.dispose]();
113537
+ this.resetFormatsProvider();
113498
113538
  this.onAfterStartup.clear();
113499
113539
  }
113500
113540
  /** Controls how frequently the application polls for changes that may require a new animation frame to be requested.
@@ -113745,6 +113785,13 @@ class IModelApp {
113745
113785
  }
113746
113786
  return this.localization.getLocalizedString(`iModelJs:${key.scope}.${key.val}`, key);
113747
113787
  }
113788
+ /**
113789
+ * Resets the formatsProvider back to the default [[QuantityTypeFormatsProvider]].
113790
+ * @beta
113791
+ */
113792
+ static resetFormatsProvider() {
113793
+ this.formatsProvider = new _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_19__.QuantityTypeFormatsProvider();
113794
+ }
113748
113795
  /**
113749
113796
  * Creates an instance of the ExtensionAdmin
113750
113797
  * and registers an event to execute after startup is complete
@@ -125965,6 +126012,10 @@ class Viewport {
125965
126012
  changeBackgroundMapProvider(props) {
125966
126013
  this.displayStyle.changeBackgroundMapProvider(props);
125967
126014
  }
126015
+ /** A reference to the [[TileTree]] used to display the background map in this viewport, if the background map is being displayed. */
126016
+ get backgroundMapTileTreeReference() {
126017
+ return this.backgroundMap;
126018
+ }
125968
126019
  /** @internal */
125969
126020
  get backgroundMap() { return this._mapTiledGraphicsProvider?.backgroundMap; }
125970
126021
  /** @internal */
@@ -136636,6 +136687,7 @@ __webpack_require__.r(__webpack_exports__);
136636
136687
  /* harmony export */ FlashMode: () => (/* reexport safe */ _FlashSettings__WEBPACK_IMPORTED_MODULE_22__.FlashMode),
136637
136688
  /* harmony export */ FlashSettings: () => (/* reexport safe */ _FlashSettings__WEBPACK_IMPORTED_MODULE_22__.FlashSettings),
136638
136689
  /* harmony export */ FlyViewTool: () => (/* reexport safe */ _tools_ViewTool__WEBPACK_IMPORTED_MODULE_114__.FlyViewTool),
136690
+ /* harmony export */ FormatsProviderManager: () => (/* reexport safe */ _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_72__.FormatsProviderManager),
136639
136691
  /* harmony export */ FormattedQuantityDescription: () => (/* reexport safe */ _properties_FormattedQuantityDescription__WEBPACK_IMPORTED_MODULE_70__.FormattedQuantityDescription),
136640
136692
  /* harmony export */ FrontendLoggerCategory: () => (/* reexport safe */ _common__WEBPACK_IMPORTED_MODULE_10__.FrontendLoggerCategory),
136641
136693
  /* harmony export */ Frustum2d: () => (/* reexport safe */ _Frustum2d__WEBPACK_IMPORTED_MODULE_24__.Frustum2d),
@@ -136764,6 +136816,7 @@ __webpack_require__.r(__webpack_exports__);
136764
136816
  /* harmony export */ QuadId: () => (/* reexport safe */ _tile_internal__WEBPACK_IMPORTED_MODULE_99__.QuadId),
136765
136817
  /* harmony export */ QuantityFormatter: () => (/* reexport safe */ _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_72__.QuantityFormatter),
136766
136818
  /* harmony export */ QuantityType: () => (/* reexport safe */ _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_72__.QuantityType),
136819
+ /* harmony export */ QuantityTypeFormatsProvider: () => (/* reexport safe */ _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_72__.QuantityTypeFormatsProvider),
136767
136820
  /* harmony export */ RealityDataError: () => (/* reexport safe */ _RealityDataSource__WEBPACK_IMPORTED_MODULE_121__.RealityDataError),
136768
136821
  /* harmony export */ RealityDataSource: () => (/* reexport safe */ _RealityDataSource__WEBPACK_IMPORTED_MODULE_121__.RealityDataSource),
136769
136822
  /* harmony export */ RealityDataSourceProviderRegistry: () => (/* reexport safe */ _RealityDataSource__WEBPACK_IMPORTED_MODULE_121__.RealityDataSourceProviderRegistry),
@@ -137835,7 +137888,7 @@ __webpack_require__.r(__webpack_exports__);
137835
137888
  * @internal
137836
137889
  */
137837
137890
  async function loadScript(jsUrl) {
137838
- const module = await __webpack_require__("../../core/frontend/lib/esm/extension/providers lazy recursive")(jsUrl);
137891
+ const module = await import(/* webpackIgnore: true */ /* @vite-ignore */ jsUrl);
137839
137892
  return execute(module);
137840
137893
  }
137841
137894
  /** attempts to execute an extension module */
@@ -170176,8 +170229,9 @@ function createClassifierTileTreeReference(classifiers, classifiedTree, iModel,
170176
170229
  return new ClassifierTreeReference(classifiers, classifiedTree, iModel, source);
170177
170230
  }
170178
170231
  function createClassifierId(classifier, source) {
170232
+ const disablePolyfaceDecimation = _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.tileAdmin.disablePolyfaceDecimation;
170179
170233
  if (undefined === classifier)
170180
- 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 };
170234
+ 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 };
170181
170235
  const type = classifier.flags.isVolumeClassifier ? _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.VolumeClassifier : _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.PlanarClassifier;
170182
170236
  const scriptInfo = _IModelApp__WEBPACK_IMPORTED_MODULE_2__.IModelApp.tileAdmin.getScriptInfoForTreeId(classifier.modelId, source ? source[_common_internal_Symbols__WEBPACK_IMPORTED_MODULE_5__._scheduleScriptReference] : undefined);
170183
170237
  return {
@@ -170186,6 +170240,7 @@ function createClassifierId(classifier, source) {
170186
170240
  expansion: classifier.expand,
170187
170241
  animationId: scriptInfo?.animationId,
170188
170242
  timeline: scriptInfo?.timeline,
170243
+ disablePolyfaceDecimation,
170189
170244
  };
170190
170245
  }
170191
170246
 
@@ -174182,7 +174237,8 @@ class PrimaryTreeReference extends _tile_internal__WEBPACK_IMPORTED_MODULE_6__.T
174182
174237
  const edgesRequired = visibleEdges || _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.RenderMode.SmoothShade !== renderMode || _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.tileAdmin.alwaysRequestEdges;
174183
174238
  const edges = edgesRequired ? _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.tileAdmin.edgeOptions : false;
174184
174239
  const sectionCut = this._sectionClip?.clipString;
174185
- return { type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.Primary, edges, animationId, sectionCut };
174240
+ const disablePolyfaceDecimation = _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.tileAdmin.disablePolyfaceDecimation;
174241
+ return { type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.Primary, edges, animationId, sectionCut, disablePolyfaceDecimation };
174186
174242
  }
174187
174243
  computeBaseTransform(tree) {
174188
174244
  return super.computeTransform(tree);
@@ -174335,7 +174391,7 @@ class MaskTreeReference extends _tile_internal__WEBPACK_IMPORTED_MODULE_6__.Tile
174335
174391
  return this._owner;
174336
174392
  }
174337
174393
  createTreeId() {
174338
- return { type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.Primary, edges: false };
174394
+ return { type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.Primary, edges: false, disablePolyfaceDecimation: _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.tileAdmin.disablePolyfaceDecimation };
174339
174395
  }
174340
174396
  }
174341
174397
  function createMaskTreeReference(view, model) {
@@ -174361,7 +174417,7 @@ class ModelMapLayerTileTreeReference extends _tile_internal__WEBPACK_IMPORTED_MO
174361
174417
  this._owner = primaryTreeSupplier.getOwner(this._id, this.iModel);
174362
174418
  }
174363
174419
  createTreeId() {
174364
- return { type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.Primary, edges: false };
174420
+ return { type: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.BatchType.Primary, edges: false, disablePolyfaceDecimation: _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.tileAdmin.disablePolyfaceDecimation };
174365
174421
  }
174366
174422
  get treeOwner() {
174367
174423
  const newId = this.createTreeId();
@@ -179653,11 +179709,19 @@ __webpack_require__.r(__webpack_exports__);
179653
179709
  * @beta
179654
179710
  */
179655
179711
  class AngleDescription extends _FormattedQuantityDescription__WEBPACK_IMPORTED_MODULE_2__.FormattedQuantityDescription {
179656
- constructor(name, displayLabel, iconSpec) {
179712
+ constructor(name, displayLabel, iconSpec, kindOfQuantityName) {
179657
179713
  const defaultName = "angle";
179658
- super(name ? name : defaultName, displayLabel ? displayLabel : _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.localization.getLocalizedString("iModelJs:Properties.Angle"), iconSpec);
179714
+ super({
179715
+ name: name ? name : defaultName,
179716
+ displayLabel: displayLabel ? displayLabel : _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.localization.getLocalizedString("iModelJs:Properties.Angle"),
179717
+ kindOfQuantityName: kindOfQuantityName ? kindOfQuantityName : "AecUnits.ANGLE",
179718
+ iconSpec
179719
+ });
179659
179720
  }
179660
179721
  get formatterQuantityType() { return _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_1__.QuantityType.Angle; }
179722
+ /**
179723
+ * @deprecated in 5.0. Use the `kindOfQuantityName` property instead.
179724
+ */
179661
179725
  get quantityType() { return "Angle"; }
179662
179726
  get parseError() { return _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.localization.getLocalizedString("iModelJs:Properties.UnableToParseAngle"); }
179663
179727
  }
@@ -179696,8 +179760,14 @@ __webpack_require__.r(__webpack_exports__);
179696
179760
  class FormattedQuantityDescription extends _itwin_appui_abstract__WEBPACK_IMPORTED_MODULE_1__.BaseQuantityDescription {
179697
179761
  _formatterSpec;
179698
179762
  _parserSpec;
179699
- constructor(name, displayLabel, iconSpec) {
179700
- super(name, displayLabel, iconSpec);
179763
+ constructor(argsOrName, displayLabel, iconSpec, kindOfQuantityName) {
179764
+ if (typeof argsOrName === "string") {
179765
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
179766
+ super(argsOrName, displayLabel, iconSpec, kindOfQuantityName);
179767
+ }
179768
+ else {
179769
+ super(argsOrName.name, argsOrName.displayLabel, argsOrName.iconSpec, argsOrName.kindOfQuantityName);
179770
+ }
179701
179771
  }
179702
179772
  formatValue(numberValue) {
179703
179773
  if (this.formatterSpec) {
@@ -179773,11 +179843,19 @@ __webpack_require__.r(__webpack_exports__);
179773
179843
  * @beta
179774
179844
  */
179775
179845
  class LengthDescription extends _FormattedQuantityDescription__WEBPACK_IMPORTED_MODULE_2__.FormattedQuantityDescription {
179776
- constructor(name, displayLabel, iconSpec) {
179846
+ constructor(name, displayLabel, iconSpec, kindOfQuantityName) {
179777
179847
  const defaultName = "length";
179778
- super(name ? name : defaultName, displayLabel ? displayLabel : _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.localization.getLocalizedString("iModelJs:Properties.Length"), iconSpec);
179848
+ super({
179849
+ name: name ? name : defaultName,
179850
+ displayLabel: displayLabel ? displayLabel : _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.localization.getLocalizedString("iModelJs:Properties.Length"),
179851
+ kindOfQuantityName: kindOfQuantityName ? kindOfQuantityName : "AecUnits.LENGTH",
179852
+ iconSpec,
179853
+ });
179779
179854
  }
179780
179855
  get formatterQuantityType() { return _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_1__.QuantityType.Length; }
179856
+ /**
179857
+ * @deprecated in 5.0. Use the `kindOfQuantityName` property instead.
179858
+ */
179781
179859
  get quantityType() { return "Length"; }
179782
179860
  get parseError() { return _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.localization.getLocalizedString("iModelJs:Properties.UnableToParseLength"); }
179783
179861
  }
@@ -179786,11 +179864,19 @@ class LengthDescription extends _FormattedQuantityDescription__WEBPACK_IMPORTED_
179786
179864
  * @beta
179787
179865
  */
179788
179866
  class SurveyLengthDescription extends _FormattedQuantityDescription__WEBPACK_IMPORTED_MODULE_2__.FormattedQuantityDescription {
179789
- constructor(name, displayLabel, iconSpec) {
179867
+ constructor(name, displayLabel, iconSpec, kindOfQuantityName) {
179790
179868
  const defaultName = "surveyLength";
179791
- super(name ? name : defaultName, displayLabel ? displayLabel : _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.localization.getLocalizedString("iModelJs:Properties.Length"), iconSpec);
179869
+ super({
179870
+ name: name ? name : defaultName,
179871
+ displayLabel: displayLabel ? displayLabel : _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.localization.getLocalizedString("iModelJs:Properties.Length"),
179872
+ kindOfQuantityName: kindOfQuantityName ? kindOfQuantityName : "AecUnits.LENGTH",
179873
+ iconSpec,
179874
+ });
179792
179875
  }
179793
179876
  get formatterQuantityType() { return _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_1__.QuantityType.LengthSurvey; }
179877
+ /**
179878
+ * @deprecated in 5.0. Use the `kindOfQuantityName` property instead.
179879
+ */
179794
179880
  get quantityType() { return "LengthSurvey"; }
179795
179881
  get parseError() { return _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.localization.getLocalizedString("iModelJs:Properties.UnableToParseLength"); }
179796
179882
  }
@@ -179799,11 +179885,19 @@ class SurveyLengthDescription extends _FormattedQuantityDescription__WEBPACK_IMP
179799
179885
  * @beta
179800
179886
  */
179801
179887
  class EngineeringLengthDescription extends _FormattedQuantityDescription__WEBPACK_IMPORTED_MODULE_2__.FormattedQuantityDescription {
179802
- constructor(name, displayLabel, iconSpec) {
179888
+ constructor(name, displayLabel, iconSpec, kindOfQuantityName) {
179803
179889
  const defaultName = "engineeringLength";
179804
- super(name ? name : defaultName, displayLabel ? displayLabel : _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.localization.getLocalizedString("iModelJs:Properties.Length"), iconSpec);
179890
+ super({
179891
+ name: name ? name : defaultName,
179892
+ displayLabel: displayLabel ? displayLabel : _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.localization.getLocalizedString("iModelJs:Properties.Length"),
179893
+ kindOfQuantityName: kindOfQuantityName ? kindOfQuantityName : "AecUnits.LENGTH",
179894
+ iconSpec,
179895
+ });
179805
179896
  }
179806
179897
  get formatterQuantityType() { return _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_1__.QuantityType.LengthEngineering; }
179898
+ /**
179899
+ * @deprecated in 5.0. Use the `kindOfQuantityName` property instead.
179900
+ */
179807
179901
  get quantityType() { return "LengthEngineering"; }
179808
179902
  get parseError() { return _IModelApp__WEBPACK_IMPORTED_MODULE_0__.IModelApp.localization.getLocalizedString("iModelJs:Properties.UnableToParseLength"); }
179809
179903
  }
@@ -180218,8 +180312,10 @@ class LocalUnitFormatProvider extends _BaseUnitFormattingSettingsProvider__WEBPA
180218
180312
  __webpack_require__.r(__webpack_exports__);
180219
180313
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
180220
180314
  /* harmony export */ AlternateUnitLabelsRegistry: () => (/* binding */ AlternateUnitLabelsRegistry),
180315
+ /* harmony export */ FormatsProviderManager: () => (/* binding */ FormatsProviderManager),
180221
180316
  /* harmony export */ QuantityFormatter: () => (/* binding */ QuantityFormatter),
180222
180317
  /* harmony export */ QuantityType: () => (/* binding */ QuantityType),
180318
+ /* harmony export */ QuantityTypeFormatsProvider: () => (/* binding */ QuantityTypeFormatsProvider),
180223
180319
  /* harmony export */ getQuantityTypeKey: () => (/* binding */ getQuantityTypeKey),
180224
180320
  /* harmony export */ isCustomQuantityTypeDefinition: () => (/* binding */ isCustomQuantityTypeDefinition)
180225
180321
  /* harmony export */ });
@@ -180365,12 +180461,66 @@ class StandardQuantityTypeDefinition {
180365
180461
  return _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.ParserSpec.create(format, unitsProvider, this.persistenceUnit, alternateUnitLabelsProvider);
180366
180462
  }
180367
180463
  }
180464
+ /**
180465
+ * A default formatsProvider, that provides a limited set of [[FormatDefinition]], associated to a few [[KindOfQuantity]].
180466
+ * Maps each KindOfQuantity to a [[QuantityType]].
180467
+ * When retrieving a valid [[KindOfQuantity]], returns the [[FormatProps]] for the associated [[QuantityType]].
180468
+ * @internal
180469
+ */
180470
+ class QuantityTypeFormatsProvider {
180471
+ onFormatsChanged = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
180472
+ constructor() {
180473
+ _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.addListener(() => {
180474
+ this.onFormatsChanged.raiseEvent({ formatsChanged: "all" });
180475
+ });
180476
+ }
180477
+ _kindOfQuantityMap = new Map([
180478
+ ["AecUnits.LENGTH", QuantityType.Length],
180479
+ ["AecUnits.ANGLE", QuantityType.Angle],
180480
+ ["AecUnits.AREA", QuantityType.Area],
180481
+ ["AecUnits.VOLUME", QuantityType.Volume],
180482
+ ["RoadRailUnits.STATION", QuantityType.Stationing],
180483
+ ["RoadRailUnits.LENGTH", QuantityType.LengthSurvey],
180484
+ ]);
180485
+ async getFormat(name) {
180486
+ const quantityType = this._kindOfQuantityMap.get(name);
180487
+ if (!quantityType)
180488
+ return undefined;
180489
+ return _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.quantityFormatter.getFormatPropsByQuantityType(quantityType);
180490
+ }
180491
+ }
180492
+ /**
180493
+ * An implementation of the [[FormatsProvider]] interface that forwards calls to getFormats to the underlying FormatsProvider.
180494
+ * Also fires the onFormatsChanged event when the underlying FormatsProvider fires its own onFormatsChanged event.
180495
+ * @internal
180496
+ */
180497
+ class FormatsProviderManager {
180498
+ _formatsProvider;
180499
+ onFormatsChanged = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
180500
+ constructor(_formatsProvider) {
180501
+ this._formatsProvider = _formatsProvider;
180502
+ this._formatsProvider.onFormatsChanged.addListener((args) => {
180503
+ this.onFormatsChanged.raiseEvent(args);
180504
+ });
180505
+ }
180506
+ async getFormat(name) {
180507
+ return this._formatsProvider.getFormat(name);
180508
+ }
180509
+ get formatsProvider() { return this; }
180510
+ set formatsProvider(formatsProvider) {
180511
+ this._formatsProvider = formatsProvider;
180512
+ this._formatsProvider.onFormatsChanged.addListener((args) => {
180513
+ this.onFormatsChanged.raiseEvent(args);
180514
+ });
180515
+ this.onFormatsChanged.raiseEvent({ formatsChanged: "all" });
180516
+ }
180517
+ }
180368
180518
  /** Class that supports formatting quantity values into strings and parsing strings into quantity values. This class also maintains
180369
180519
  * the "active" unit system and caches FormatterSpecs and ParserSpecs for the "active" unit system to allow synchronous access to
180370
180520
  * parsing and formatting values. The support unit systems are defined by [[UnitSystemKey]] and is kept in synch with the unit systems
180371
180521
  * provided by the Presentation Manager on the backend. The QuantityFormatter contains a registry of quantity type definitions. These definitions implement
180372
- * the [[QuantityTypeDefinition]] interface, which among other things, provide default [FormatProps]$(core-quantity), and provide methods
180373
- * to generate both a [FormatterSpec]$(core-quantity) and a [ParserSpec]$(core-quantity). There are built-in quantity types that are
180522
+ * the [[QuantityTypeDefinition]] interface, which among other things, provide default [[FormatProps]], and provide methods
180523
+ * to generate both a [[FormatterSpec]] and a [[ParserSpec]]. There are built-in quantity types that are
180374
180524
  * identified by the [[QuantityType]] enum. [[CustomQuantityTypeDefinition]] can be registered to extend the available quantity types available
180375
180525
  * by frontend tools. The QuantityFormatter also allows the default formats to be overriden.
180376
180526
  *
@@ -180381,6 +180531,10 @@ class QuantityFormatter {
180381
180531
  _alternateUnitLabelsRegistry = new AlternateUnitLabelsRegistry((0,_BasicUnitsProvider__WEBPACK_IMPORTED_MODULE_4__.getDefaultAlternateUnitLabels)());
180382
180532
  /** Registry containing available quantity type definitions. */
180383
180533
  _quantityTypeRegistry = new Map();
180534
+ /** Registry containing available FormatterSpec and ParserSpec, mapped by keys.
180535
+ * @beta
180536
+ */
180537
+ _formatSpecsRegistry = new Map();
180384
180538
  /** Active UnitSystem key - must be one of "imperial", "metric", "usCustomary", or "usSurvey". */
180385
180539
  _activeUnitSystem = "imperial";
180386
180540
  /** Map of FormatSpecs for all available QuantityTypes and the active Unit System */
@@ -180407,6 +180561,7 @@ class QuantityFormatter {
180407
180561
  onQuantityFormatsChanged = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeUiEvent();
180408
180562
  /** Fired when the active UnitsProvider is updated. This will allow cached Formatter and Parser specs to be updated if necessary. */
180409
180563
  onUnitsProviderChanged = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeUiEvent();
180564
+ _removeFormatsProviderListener;
180410
180565
  /**
180411
180566
  * constructor
180412
180567
  * @param showMetricOrUnitSystem - Pass in `true` to show Metric formatted quantity values. Defaults to Imperial. To explicitly
@@ -180420,6 +180575,12 @@ class QuantityFormatter {
180420
180575
  this._activeUnitSystem = showMetricOrUnitSystem;
180421
180576
  }
180422
180577
  }
180578
+ [Symbol.dispose]() {
180579
+ if (this._removeFormatsProviderListener) {
180580
+ this._removeFormatsProviderListener();
180581
+ this._removeFormatsProviderListener = undefined;
180582
+ }
180583
+ }
180423
180584
  getOverrideFormatPropsByQuantityType(quantityTypeKey, unitSystem) {
180424
180585
  const requestedUnitSystem = unitSystem ?? this.activeUnitSystem;
180425
180586
  const overrideMap = this._overrideFormatPropsByUnitSystem.get(requestedUnitSystem);
@@ -180545,6 +180706,46 @@ class QuantityFormatter {
180545
180706
  */
180546
180707
  async onInitialized() {
180547
180708
  await this.initializeQuantityTypesRegistry();
180709
+ const initialKoQs = [["AecUnits.LENGTH", "Units.M"], ["AecUnits.ANGLE", "Units.RAD"], ["AecUnits.AREA", "Units.SQ_M"], ["AecUnits.VOLUME", "Units.CUB_M"], ["RoadRailUnits.STATION", "Units.M"], ["RoadRailUnits.LENGTH", "Units.M"]];
180710
+ for (const entry of initialKoQs) {
180711
+ try {
180712
+ await this.addFormattingSpecsToRegistry(entry[0], entry[1]);
180713
+ }
180714
+ catch (err) {
180715
+ _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.Logger.logWarning(`${_common_FrontendLoggerCategory__WEBPACK_IMPORTED_MODULE_2__.FrontendLoggerCategory.Package}.QuantityFormatter`, err.toString());
180716
+ }
180717
+ }
180718
+ this._removeFormatsProviderListener = _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.formatsProvider.onFormatsChanged.addListener(async (args) => {
180719
+ if (args.formatsChanged === "all") {
180720
+ for (const [name, entry] of this._formatSpecsRegistry.entries()) {
180721
+ const formatProps = await _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.formatsProvider.getFormat(name);
180722
+ if (formatProps) {
180723
+ const persistenceUnitName = entry.formatterSpec.persistenceUnit.name;
180724
+ await this.addFormattingSpecsToRegistry(name, persistenceUnitName, formatProps);
180725
+ }
180726
+ else {
180727
+ this._formatSpecsRegistry.delete(name); // clear the specs if format was removed, or no longer exists.
180728
+ }
180729
+ }
180730
+ }
180731
+ else {
180732
+ for (const name of args.formatsChanged) {
180733
+ if (this._formatSpecsRegistry.has(name)) {
180734
+ const formatProps = await _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.formatsProvider.getFormat(name);
180735
+ if (formatProps) {
180736
+ const existingEntry = this._formatSpecsRegistry.get(name);
180737
+ if (existingEntry) {
180738
+ const persistenceUnitName = existingEntry.formatterSpec.persistenceUnit.name;
180739
+ await this.addFormattingSpecsToRegistry(name, persistenceUnitName, formatProps);
180740
+ }
180741
+ }
180742
+ else {
180743
+ this._formatSpecsRegistry.delete(name);
180744
+ }
180745
+ }
180746
+ }
180747
+ }
180748
+ });
180548
180749
  // initialize default format and parsing specs
180549
180750
  await this.loadFormatAndParsingMapsForSystem();
180550
180751
  }
@@ -180774,26 +180975,51 @@ class QuantityFormatter {
180774
180975
  requestedSystem = isImperial ? "imperial" : "metric";
180775
180976
  return this.getParserSpecByQuantityTypeAndSystem(type, requestedSystem);
180776
180977
  }
180777
- /** Generates a formatted string for a quantity given its format spec.
180778
- * @param magnitude The magnitude of the quantity.
180779
- * @param formatSpec The format specification. See methods getFormatterSpecByQuantityType and findFormatterSpecByQuantityType.
180780
- * @return the formatted string.
180781
- */
180782
- formatQuantity(magnitude, formatSpec) {
180783
- /** Format a quantity value. Default FormatterSpec implementation uses Formatter.formatQuantity. */
180784
- if (formatSpec)
180785
- return formatSpec.applyFormatting(magnitude);
180786
- return magnitude.toString();
180978
+ // eslint-disable-next-line @typescript-eslint/promise-function-async
180979
+ formatQuantity(args, spec) {
180980
+ if (typeof args === "number") {
180981
+ /** Format a quantity value. Default FormatterSpec implementation uses Formatter.formatQuantity. */
180982
+ const magnitude = args;
180983
+ if (spec)
180984
+ return spec.applyFormatting(magnitude);
180985
+ return magnitude.toString();
180986
+ }
180987
+ return this.formatQuantityAsync(args);
180988
+ }
180989
+ async formatQuantityAsync(args) {
180990
+ const { value, valueUnitName, kindOfQuantityName } = args;
180991
+ const formatProps = await _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.formatsProvider.getFormat(kindOfQuantityName);
180992
+ if (!formatProps)
180993
+ return value.toString();
180994
+ const formatSpec = await this.createFormatterSpec({
180995
+ persistenceUnitName: valueUnitName,
180996
+ formatProps,
180997
+ formatName: kindOfQuantityName,
180998
+ });
180999
+ return formatSpec.applyFormatting(value);
180787
181000
  }
180788
- /** Parse input string into quantity given the ParserSpec
180789
- * @param inString The magnitude of the quantity.
180790
- * @param parserSpec The parse specification the defines the expected format of the string and the conversion to the output unit.
180791
- * @return QuantityParseResult object containing either the parsed value or an error value if unsuccessful.
180792
- */
180793
- parseToQuantityValue(inString, parserSpec) {
180794
- if (parserSpec)
180795
- return parserSpec.parseToQuantityValue(inString);
180796
- return { ok: false, error: _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.ParseError.InvalidParserSpec };
181001
+ // eslint-disable-next-line @typescript-eslint/promise-function-async
181002
+ parseToQuantityValue(args, parserSpec) {
181003
+ if (typeof args === "string") {
181004
+ /** Parse a quantity value. Default ParserSpec implementation uses ParserSpec.parseToQuantityValue. */
181005
+ const inString = args;
181006
+ if (parserSpec)
181007
+ return parserSpec.parseToQuantityValue(inString);
181008
+ return { ok: false, error: _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.ParseError.InvalidParserSpec };
181009
+ }
181010
+ return this.parseToQuantityValueAsync(args);
181011
+ }
181012
+ async parseToQuantityValueAsync(args) {
181013
+ const { value, valueUnitName, kindOfQuantityName } = args;
181014
+ const formatProps = await _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.formatsProvider.getFormat(kindOfQuantityName);
181015
+ if (!formatProps)
181016
+ return { ok: false, error: _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.ParseError.InvalidParserSpec };
181017
+ const parserSpec = await this.createParserSpec({
181018
+ persistenceUnitName: valueUnitName,
181019
+ formatProps,
181020
+ formatName: kindOfQuantityName,
181021
+ });
181022
+ return parserSpec.parseToQuantityValue(value);
180797
181023
  }
180798
181024
  /**
180799
181025
  * Get a UnitSystemKey from a string that may have been entered via a key-in. Supports different variation of
@@ -180863,6 +181089,63 @@ class QuantityFormatter {
180863
181089
  async getConversion(fromUnit, toUnit) {
180864
181090
  return this._unitsProvider.getConversion(fromUnit, toUnit);
180865
181091
  }
181092
+ /**
181093
+ * Creates a [[FormatterSpec]] for a given persistence unit name and format properties, using the [[UnitsProvider]] to resolve the persistence unit.
181094
+ * @beta
181095
+ * @param props - A [[CreateFormattingSpecProps]] interface.
181096
+ */
181097
+ async createFormatterSpec(props) {
181098
+ const { persistenceUnitName, formatProps, formatName } = props;
181099
+ const persistenceUnitProps = await this._unitsProvider.findUnitByName(persistenceUnitName);
181100
+ const format = await _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.Format.createFromJSON(formatName ?? "temp", this._unitsProvider, formatProps);
181101
+ return _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.FormatterSpec.create(`${format.name}_format_spec`, format, this._unitsProvider, persistenceUnitProps);
181102
+ }
181103
+ /**
181104
+ * Creates a [[ParserSpec]] for a given persistence unit name and format properties, using the [[UnitsProvider]] to resolve the persistence unit.
181105
+ * @beta
181106
+ * @param props - A [[CreateFormattingSpecProps]] object.
181107
+ */
181108
+ async createParserSpec(props) {
181109
+ const { persistenceUnitName, formatProps, formatName } = props;
181110
+ const persistenceUnitProps = await this._unitsProvider.findUnitByName(persistenceUnitName);
181111
+ const format = await _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.Format.createFromJSON(formatName ?? "temp", this._unitsProvider, formatProps);
181112
+ return _itwin_core_quantity__WEBPACK_IMPORTED_MODULE_1__.ParserSpec.create(format, this._unitsProvider, persistenceUnitProps);
181113
+ }
181114
+ /**
181115
+ * @beta
181116
+ * Returns a [[FormattingSpecEntry]] for a given name, typically a KindOfQuantity full name.
181117
+ */
181118
+ getSpecsByName(name) {
181119
+ return this._formatSpecsRegistry.get(name);
181120
+ }
181121
+ /**
181122
+ * Populates the registry with a new FormatterSpec and ParserSpec entry for the given format name.
181123
+ * @beta
181124
+ * @param name The key used to identify the formatter and parser spec
181125
+ * @param persistenceUnitName The name of the persistence unit
181126
+ * @param formatProps If not supplied, tries to retrieve the [[FormatProps]] from [[IModelApp.formatsProvider]]
181127
+ */
181128
+ async addFormattingSpecsToRegistry(name, persistenceUnitName, formatProps) {
181129
+ if (!formatProps) {
181130
+ formatProps = await _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.formatsProvider.getFormat(name);
181131
+ }
181132
+ if (formatProps) {
181133
+ const formatterSpec = await this.createFormatterSpec({
181134
+ persistenceUnitName,
181135
+ formatProps,
181136
+ formatName: name,
181137
+ });
181138
+ const parserSpec = await this.createParserSpec({
181139
+ persistenceUnitName,
181140
+ formatProps,
181141
+ formatName: name,
181142
+ });
181143
+ this._formatSpecsRegistry.set(name, { formatterSpec, parserSpec });
181144
+ }
181145
+ else {
181146
+ throw new Error(`Unable to find format properties for ${name} with persistence unit ${persistenceUnitName}`);
181147
+ }
181148
+ }
180866
181149
  }
180867
181150
  // ========================================================================================================================================
180868
181151
  // Default Data
@@ -187903,6 +188186,8 @@ class TileAdmin {
187903
188186
  /** @internal */
187904
188187
  optimizeBRepProcessing;
187905
188188
  /** @internal */
188189
+ disablePolyfaceDecimation;
188190
+ /** @internal */
187906
188191
  useLargerTiles;
187907
188192
  /** @internal */
187908
188193
  maximumLevelsToSkip;
@@ -187991,6 +188276,7 @@ class TileAdmin {
187991
188276
  this.useProjectExtents = options.useProjectExtents ?? _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.defaultTileOptions.useProjectExtents;
187992
188277
  this.expandProjectExtents = options.expandProjectExtents ?? _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.defaultTileOptions.expandProjectExtents;
187993
188278
  this.optimizeBRepProcessing = options.optimizeBRepProcessing ?? _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.defaultTileOptions.optimizeBRepProcessing;
188279
+ this.disablePolyfaceDecimation = options.disablePolyfaceDecimation ?? _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.defaultTileOptions.disablePolyfaceDecimation;
187994
188280
  this.useLargerTiles = options.useLargerTiles ?? _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.defaultTileOptions.useLargerTiles;
187995
188281
  this.mobileRealityTileMinToleranceRatio = Math.max(options.mobileRealityTileMinToleranceRatio ?? 3.0, 1.0);
187996
188282
  this.cesiumIonKey = options.cesiumIonKey;
@@ -201267,11 +201553,10 @@ __webpack_require__.r(__webpack_exports__);
201267
201553
  /* harmony import */ var _IModelApp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../IModelApp */ "../../core/frontend/lib/esm/IModelApp.js");
201268
201554
  /* harmony import */ var _Marker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Marker */ "../../core/frontend/lib/esm/Marker.js");
201269
201555
  /* harmony import */ var _NotificationManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../NotificationManager */ "../../core/frontend/lib/esm/NotificationManager.js");
201270
- /* harmony import */ var _quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../quantity-formatting/QuantityFormatter */ "../../core/frontend/lib/esm/quantity-formatting/QuantityFormatter.js");
201271
- /* harmony import */ var _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./PrimitiveTool */ "../../core/frontend/lib/esm/tools/PrimitiveTool.js");
201272
- /* harmony import */ var _Tool__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Tool */ "../../core/frontend/lib/esm/tools/Tool.js");
201273
- /* harmony import */ var _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ToolAssistance */ "../../core/frontend/lib/esm/tools/ToolAssistance.js");
201274
- /* harmony import */ var _common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../common/render/GraphicType */ "../../core/frontend/lib/esm/common/render/GraphicType.js");
201556
+ /* harmony import */ var _PrimitiveTool__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PrimitiveTool */ "../../core/frontend/lib/esm/tools/PrimitiveTool.js");
201557
+ /* harmony import */ var _Tool__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Tool */ "../../core/frontend/lib/esm/tools/Tool.js");
201558
+ /* harmony import */ var _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ToolAssistance */ "../../core/frontend/lib/esm/tools/ToolAssistance.js");
201559
+ /* harmony import */ var _common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../common/render/GraphicType */ "../../core/frontend/lib/esm/common/render/GraphicType.js");
201275
201560
  /*---------------------------------------------------------------------------------------------
201276
201561
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
201277
201562
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -201292,9 +201577,18 @@ __webpack_require__.r(__webpack_exports__);
201292
201577
 
201293
201578
 
201294
201579
 
201295
-
201296
201580
  function translateBold(key) {
201297
- return `<b>${_Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(`Measure.Labels.${key}`)}:</b> `;
201581
+ return `<b>${_Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(`Measure.Labels.${key}`)}:</b> `;
201582
+ }
201583
+ async function getFormatterSpecByKoQAndPersistenceUnit(koq, persistenceUnitName) {
201584
+ const formatProps = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.formatsProvider.getFormat(koq);
201585
+ if (undefined === formatProps)
201586
+ return undefined;
201587
+ return _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.createFormatterSpec({
201588
+ persistenceUnitName,
201589
+ formatProps,
201590
+ formatName: koq
201591
+ });
201298
201592
  }
201299
201593
  /** @internal */
201300
201594
  class MeasureLabel {
@@ -201358,7 +201652,7 @@ class MeasureMarker extends _Marker__WEBPACK_IMPORTED_MODULE_7__.Marker {
201358
201652
  onMouseButton(_ev) { return true; } // Never forward event to active tool...
201359
201653
  onMouseEnter(ev) {
201360
201654
  super.onMouseEnter(ev);
201361
- if (this.title && _Tool__WEBPACK_IMPORTED_MODULE_11__.InputSource.Touch === ev.inputSource && ev.viewport)
201655
+ if (this.title && _Tool__WEBPACK_IMPORTED_MODULE_10__.InputSource.Touch === ev.inputSource && ev.viewport)
201362
201656
  ev.viewport.openToolTip(this.title, ev.viewPoint, this.tooltipOptions);
201363
201657
  }
201364
201658
  onMouseLeave() {
@@ -201395,7 +201689,7 @@ function adjustPoint(ev, segments, locations) {
201395
201689
  /** Report distance between 2 points using current quantity formatter for length.
201396
201690
  * @public
201397
201691
  */
201398
- class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.PrimitiveTool {
201692
+ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_9__.PrimitiveTool {
201399
201693
  static toolId = "Measure.Distance";
201400
201694
  static iconSpec = "icon-measure-distance";
201401
201695
  /** @internal */
@@ -201413,6 +201707,12 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201413
201707
  /** @internal */
201414
201708
  _lastMotionAdjustedPt;
201415
201709
  /** @internal */
201710
+ _lengthFormatterSpec;
201711
+ /** @internal */
201712
+ _angleFormatterSpec;
201713
+ /** @internal */
201714
+ _removeFormatterListener;
201715
+ /** @internal */
201416
201716
  allowView(vp) { return vp.view.isSpatialView() || vp.view.isDrawingView(); }
201417
201717
  /** @internal */
201418
201718
  isCompatibleViewport(vp, isSelectedViewChange) { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && this.allowView(vp)); }
@@ -201423,34 +201723,50 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201423
201723
  /** @internal */
201424
201724
  async onPostInstall() {
201425
201725
  await super.onPostInstall();
201726
+ this._lengthFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
201727
+ this._angleFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.ANGLE", "Units.RAD");
201728
+ this._removeFormatterListener = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.formatsProvider.onFormatsChanged.addListener(async (args) => {
201729
+ if (args.formatsChanged === "all" || args.formatsChanged.includes("AecUnits.LENGTH"))
201730
+ this._lengthFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
201731
+ if (args.formatsChanged === "all" || args.formatsChanged.includes("AecUnits.ANGLE"))
201732
+ this._angleFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.ANGLE", "Units.RAD");
201733
+ });
201426
201734
  this.setupAndPromptForNextAction();
201427
201735
  }
201428
201736
  /** @internal */
201737
+ async onCleanup() {
201738
+ if (this._removeFormatterListener) {
201739
+ this._removeFormatterListener();
201740
+ this._removeFormatterListener = undefined;
201741
+ }
201742
+ await super.onCleanup();
201743
+ }
201744
+ /** @internal */
201429
201745
  async onUnsuspend() { this.showPrompt(); }
201430
201746
  /** @internal */
201431
201747
  showPrompt() {
201432
- 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"));
201748
+ 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"));
201433
201749
  const mouseInstructions = [];
201434
201750
  const touchInstructions = [];
201435
- if (!_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createTouchCursorInstructions(touchInstructions))
201436
- 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));
201437
- 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));
201751
+ if (!_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createTouchCursorInstructions(touchInstructions))
201752
+ 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));
201753
+ 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));
201438
201754
  if (0 === this._locationData.length) {
201439
201755
  if (this._acceptedSegments.length > 0) {
201440
- 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));
201441
- 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));
201756
+ 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));
201757
+ 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));
201442
201758
  }
201443
201759
  }
201444
201760
  else {
201445
- 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));
201446
- 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));
201447
- 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));
201448
- 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));
201761
+ 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));
201762
+ 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));
201763
+ 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));
201764
+ 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));
201449
201765
  }
201450
201766
  const sections = [];
201451
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
201452
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
201453
- const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstructions(mainInstruction, sections);
201767
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
201768
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
201769
+ const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstructions(mainInstruction, sections);
201454
201770
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.setToolAssistance(instructions);
201455
201771
  }
201456
201772
  /** @internal */
@@ -201496,8 +201812,8 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201496
201812
  totalDistance += adjustedPoints[i].distance(adjustedPoints[i + 1]);
201497
201813
  if (0.0 === totalDistance)
201498
201814
  return;
201499
- const formatterSpec = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.findFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
201500
- if (undefined === formatterSpec)
201815
+ const formatterSpec = this._lengthFormatterSpec;
201816
+ if (formatterSpec === undefined)
201501
201817
  return;
201502
201818
  const formattedTotalDistance = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(totalDistance, formatterSpec);
201503
201819
  const distDyn = new MeasureLabel(points[points.length - 1], formattedTotalDistance);
@@ -201511,7 +201827,7 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201511
201827
  seg.refAxes.multiplyVectorInPlace(xVec);
201512
201828
  seg.refAxes.multiplyVectorInPlace(yVec);
201513
201829
  seg.refAxes.multiplyVectorInPlace(zVec);
201514
- const builderAxes = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldOverlay);
201830
+ const builderAxes = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldOverlay);
201515
201831
  let basePt = seg.start.clone();
201516
201832
  if (xVec.magnitude() > 1.0e-5) {
201517
201833
  const segPoints = [];
@@ -201558,12 +201874,12 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201558
201874
  }
201559
201875
  tmpPoints.push(this._lastMotionPt);
201560
201876
  tmpAdjustedPoints.push(this._lastMotionAdjustedPt);
201561
- const builderDynVis = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldDecoration);
201877
+ const builderDynVis = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldDecoration);
201562
201878
  const colorDynVis = context.viewport.hilite.color;
201563
201879
  builderDynVis.setSymbology(colorDynVis, _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.black, 3);
201564
201880
  builderDynVis.addLineString(tmpPoints);
201565
201881
  context.addDecorationFromBuilder(builderDynVis);
201566
- const builderDynHid = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldOverlay);
201882
+ const builderDynHid = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldOverlay);
201567
201883
  const colorDynHid = colorDynVis.withAlpha(100);
201568
201884
  builderDynHid.setSymbology(colorDynHid, _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.black, 1, _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.LinePixels.Code2);
201569
201885
  builderDynHid.addLineString(tmpPoints);
@@ -201571,8 +201887,8 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201571
201887
  this.displayDynamicDistance(context, tmpPoints, tmpAdjustedPoints);
201572
201888
  }
201573
201889
  if (this._acceptedSegments.length > 0) {
201574
- const builderAccVis = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldDecoration);
201575
- const builderAccHid = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldOverlay);
201890
+ const builderAccVis = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldDecoration);
201891
+ const builderAccHid = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldOverlay);
201576
201892
  const colorAccVis = _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.white.adjustedForContrast(context.viewport.view.backgroundColor);
201577
201893
  const colorAccHid = colorAccVis.withAlpha(100);
201578
201894
  builderAccVis.setSymbology(colorAccVis, _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.black, 3);
@@ -201594,7 +201910,7 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201594
201910
  return;
201595
201911
  if (undefined === this._snapGeomId)
201596
201912
  this._snapGeomId = this.iModel.transientIds.getNext();
201597
- const builderSnapPts = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldOverlay, undefined, this._snapGeomId);
201913
+ const builderSnapPts = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldOverlay, undefined, this._snapGeomId);
201598
201914
  const colorAccPts = _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.white.adjustedForContrast(context.viewport.view.backgroundColor);
201599
201915
  builderSnapPts.setSymbology(colorAccPts, _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.black, 7);
201600
201916
  builderSnapPts.addPointString(snapPoints);
@@ -201623,7 +201939,7 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201623
201939
  reportMeasurements() {
201624
201940
  if (undefined === this._totalDistanceMarker)
201625
201941
  return;
201626
- const briefMsg = `${_Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(this._acceptedSegments.length > 1 ? "Measure.Labels.CumulativeDistance" : "Measure.Labels.Distance")}: ${this._totalDistanceMarker.label}`;
201942
+ const briefMsg = `${_Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(this._acceptedSegments.length > 1 ? "Measure.Labels.CumulativeDistance" : "Measure.Labels.Distance")}: ${this._totalDistanceMarker.label}`;
201627
201943
  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);
201628
201944
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.outputMessage(msgDetail);
201629
201945
  }
@@ -201634,7 +201950,7 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201634
201950
  this._totalDistance += seg.distance;
201635
201951
  if (0.0 === this._totalDistance)
201636
201952
  return;
201637
- const formatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
201953
+ const formatterSpec = this._lengthFormatterSpec;
201638
201954
  if (undefined === formatterSpec)
201639
201955
  return;
201640
201956
  const formattedTotalDistance = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._totalDistance, formatterSpec);
@@ -201645,20 +201961,20 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201645
201961
  const is3d = (undefined === this.targetView || this.targetView.view.is3d());
201646
201962
  const isSpatial = (undefined !== this.targetView && this.targetView.view.isSpatialView());
201647
201963
  const toolTip = document.createElement("div");
201648
- const distanceFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
201964
+ const distanceFormatterSpec = this._lengthFormatterSpec;
201649
201965
  if (undefined === distanceFormatterSpec)
201650
201966
  return toolTip;
201651
201967
  let toolTipHtml = "";
201652
201968
  const formattedDistance = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(distance, distanceFormatterSpec);
201653
201969
  toolTipHtml += `${translateBold("Distance") + formattedDistance}<br>`;
201654
201970
  if (is3d) {
201655
- const angleFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Angle);
201971
+ const angleFormatterSpec = this._angleFormatterSpec;
201656
201972
  if (undefined !== angleFormatterSpec) {
201657
201973
  const formattedSlope = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(slope, angleFormatterSpec);
201658
201974
  toolTipHtml += `${translateBold("Slope") + formattedSlope}<br>`;
201659
201975
  }
201660
201976
  }
201661
- const coordFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Coordinate);
201977
+ const coordFormatterSpec = this._lengthFormatterSpec;
201662
201978
  if (undefined !== coordFormatterSpec) {
201663
201979
  let startAdjusted = start;
201664
201980
  let endAdjusted = end;
@@ -201803,19 +202119,19 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201803
202119
  this.setupAndPromptForNextAction();
201804
202120
  if (undefined !== ev.viewport)
201805
202121
  ev.viewport.invalidateDecorations();
201806
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202122
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
201807
202123
  }
201808
202124
  /** @internal */
201809
202125
  async onResetButtonUp(ev) {
201810
202126
  if (0 === this._locationData.length) {
201811
202127
  await this.onReinitialize();
201812
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202128
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
201813
202129
  }
201814
202130
  await this.acceptNewSegments();
201815
202131
  this.setupAndPromptForNextAction();
201816
202132
  if (undefined !== ev.viewport)
201817
202133
  ev.viewport.invalidateDecorations();
201818
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202134
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
201819
202135
  }
201820
202136
  /** @internal */
201821
202137
  async onUndoPreviousStep() {
@@ -201846,7 +202162,7 @@ class MeasureDistanceTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201846
202162
  /** Report spatial coordinate at a point as well as cartographic location for geolocated models using current quantity formatters.
201847
202163
  * @public
201848
202164
  */
201849
- class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.PrimitiveTool {
202165
+ class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_9__.PrimitiveTool {
201850
202166
  static toolId = "Measure.Location";
201851
202167
  static iconSpec = "icon-measure-location";
201852
202168
  /** @internal */
@@ -201868,20 +202184,20 @@ class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201868
202184
  async onUnsuspend() { this.showPrompt(); }
201869
202185
  /** @internal */
201870
202186
  showPrompt() {
201871
- const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("Measure.Location.Prompts.EnterPoint"));
202187
+ const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("Measure.Location.Prompts.EnterPoint"));
201872
202188
  const mouseInstructions = [];
201873
202189
  const touchInstructions = [];
201874
- if (!_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createTouchCursorInstructions(touchInstructions))
201875
- 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));
201876
- 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));
202190
+ if (!_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createTouchCursorInstructions(touchInstructions))
202191
+ 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));
202192
+ 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));
201877
202193
  if (0 !== this._acceptedLocations.length) {
201878
- 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));
201879
- 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));
202194
+ 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));
202195
+ 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));
201880
202196
  }
201881
202197
  const sections = [];
201882
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
201883
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
201884
- const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstructions(mainInstruction, sections);
202198
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
202199
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
202200
+ const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstructions(mainInstruction, sections);
201885
202201
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.setToolAssistance(instructions);
201886
202202
  }
201887
202203
  /** @internal */
@@ -201894,7 +202210,7 @@ class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201894
202210
  const isSpatial = (undefined !== this.targetView && this.targetView.view.isSpatialView());
201895
202211
  const toolTip = document.createElement("div");
201896
202212
  let toolTipHtml = "";
201897
- const coordFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Coordinate);
202213
+ const coordFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
201898
202214
  if (undefined !== coordFormatterSpec) {
201899
202215
  let pointAdjusted = point;
201900
202216
  if (isSpatial) {
@@ -201910,15 +202226,15 @@ class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201910
202226
  toolTipHtml += "<br>";
201911
202227
  }
201912
202228
  if (isSpatial) {
201913
- const latLongFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.LatLong);
202229
+ const latLongFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.ANGLE", "Units.RAD");
201914
202230
  if (undefined !== latLongFormatterSpec && undefined !== coordFormatterSpec) {
201915
202231
  try {
201916
202232
  const cartographic = await this.iModel.spatialToCartographic(point);
201917
202233
  const formattedLat = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(Math.abs(cartographic.latitude), latLongFormatterSpec);
201918
202234
  const formattedLong = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(Math.abs(cartographic.longitude), latLongFormatterSpec);
201919
202235
  const formattedHeight = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(cartographic.height, coordFormatterSpec);
201920
- const latDir = _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(cartographic.latitude < 0 ? "Measure.Labels.S" : "Measure.Labels.N");
201921
- const longDir = _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(cartographic.longitude < 0 ? "Measure.Labels.W" : "Measure.Labels.E");
202236
+ const latDir = _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(cartographic.latitude < 0 ? "Measure.Labels.S" : "Measure.Labels.N");
202237
+ const longDir = _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(cartographic.longitude < 0 ? "Measure.Labels.W" : "Measure.Labels.E");
201922
202238
  toolTipHtml += `${translateBold("LatLong") + formattedLat + latDir}, ${formattedLong}${longDir}<br>`;
201923
202239
  toolTipHtml += `${translateBold("Altitude") + formattedHeight}<br>`;
201924
202240
  }
@@ -201956,12 +202272,12 @@ class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201956
202272
  this.setupAndPromptForNextAction();
201957
202273
  if (undefined !== ev.viewport)
201958
202274
  ev.viewport.invalidateDecorations();
201959
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202275
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
201960
202276
  }
201961
202277
  /** @internal */
201962
202278
  async onResetButtonUp(_ev) {
201963
202279
  await this.onReinitialize();
201964
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202280
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
201965
202281
  }
201966
202282
  /** @internal */
201967
202283
  async onUndoPreviousStep() {
@@ -201987,7 +202303,7 @@ class MeasureLocationTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.P
201987
202303
  /** Report area defined by points using current quantity formatter for area.
201988
202304
  * @public
201989
202305
  */
201990
- class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.PrimitiveTool {
202306
+ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_9__.PrimitiveTool {
201991
202307
  static toolId = "Measure.AreaByPoints";
201992
202308
  static iconSpec = "icon-measure-2d";
201993
202309
  /** @internal */
@@ -202016,12 +202332,12 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202016
202332
  /** @internal */
202017
202333
  static _orientationName = "enumAsOrientation";
202018
202334
  /** @internal */
202019
- static enumAsOrientationMessage(str) { return _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(`Settings.Orientation.${str}`); }
202335
+ static enumAsOrientationMessage(str) { return _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(`Settings.Orientation.${str}`); }
202020
202336
  /** @internal */
202021
202337
  static _getEnumAsOrientationDescription = () => {
202022
202338
  return {
202023
202339
  name: MeasureAreaByPointsTool._orientationName,
202024
- displayLabel: _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("Settings.Orientation.Label"),
202340
+ displayLabel: _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("Settings.Orientation.Label"),
202025
202341
  typename: "enum",
202026
202342
  enum: {
202027
202343
  choices: [
@@ -202089,24 +202405,24 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202089
202405
  mainMsg += this._isComplete ? "FirstPoint" : "NextPoint";
202090
202406
  break;
202091
202407
  }
202092
- const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(mainMsg));
202408
+ const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(mainMsg));
202093
202409
  const mouseInstructions = [];
202094
202410
  const touchInstructions = [];
202095
- const acceptMsg = _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(this._isComplete ? "ElementSet.Inputs.Restart" : "ElementSet.Inputs.AcceptPoint");
202096
- if (!_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createTouchCursorInstructions(touchInstructions))
202097
- 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));
202098
- 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));
202099
- const resetMsg = _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("ElementSet.Inputs.Restart");
202100
- 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));
202101
- 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));
202411
+ const acceptMsg = _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(this._isComplete ? "ElementSet.Inputs.Restart" : "ElementSet.Inputs.AcceptPoint");
202412
+ if (!_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createTouchCursorInstructions(touchInstructions))
202413
+ 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));
202414
+ 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));
202415
+ const resetMsg = _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("ElementSet.Inputs.Restart");
202416
+ 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));
202417
+ 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));
202102
202418
  if (this._points.length > 1)
202103
- 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));
202419
+ 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));
202104
202420
  if (0 !== this._points.length)
202105
- 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));
202421
+ 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));
202106
202422
  const sections = [];
202107
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
202108
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
202109
- const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstructions(mainInstruction, sections);
202423
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
202424
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
202425
+ const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstructions(mainInstruction, sections);
202110
202426
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.setToolAssistance(instructions);
202111
202427
  }
202112
202428
  /** @internal */
@@ -202150,7 +202466,7 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202150
202466
  let currentPt = _AccuDraw__WEBPACK_IMPORTED_MODULE_3__.AccuDrawHintBuilder.projectPointToPlaneInView(cursorPt, points[0], normal, this.targetView, true);
202151
202467
  if (undefined === currentPt)
202152
202468
  currentPt = cursorPt.clone();
202153
- if (2 === points.length && 0 === (_IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.toolAdmin.currentInputState.qualifiers & _Tool__WEBPACK_IMPORTED_MODULE_11__.BeModifierKeys.Control)) {
202469
+ if (2 === points.length && 0 === (_IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.toolAdmin.currentInputState.qualifiers & _Tool__WEBPACK_IMPORTED_MODULE_10__.BeModifierKeys.Control)) {
202154
202470
  const xDir = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createStartEnd(points[0], points[1]);
202155
202471
  const xLen = xDir.magnitude();
202156
202472
  xDir.normalizeInPlace();
@@ -202176,8 +202492,8 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202176
202492
  const points = this.getShapePoints(this._lastMotionPt);
202177
202493
  if (points.length < 2)
202178
202494
  return;
202179
- const builderAccVis = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldDecoration);
202180
- const builderAccHid = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_13__.GraphicType.WorldOverlay);
202495
+ const builderAccVis = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldDecoration);
202496
+ const builderAccHid = context.createGraphicBuilder(_common_render_GraphicType__WEBPACK_IMPORTED_MODULE_12__.GraphicType.WorldOverlay);
202181
202497
  const colorAccVis = _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.ColorDef.white.adjustedForContrast(context.viewport.view.backgroundColor);
202182
202498
  const colorAccHid = colorAccVis.withAlpha(100);
202183
202499
  const fillAccVis = context.viewport.hilite.color.withAlpha(50);
@@ -202214,17 +202530,17 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202214
202530
  const isSpatial = (undefined !== this.targetView && this.targetView.view.isSpatialView());
202215
202531
  const toolTip = document.createElement("div");
202216
202532
  let toolTipHtml = "";
202217
- const areaFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Area);
202533
+ const areaFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.AREA", "Units.SQ_M");
202218
202534
  if (undefined !== areaFormatterSpec) {
202219
202535
  const formattedArea = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._area, areaFormatterSpec);
202220
202536
  toolTipHtml += `${translateBold("Area") + formattedArea}<br>`;
202221
202537
  }
202222
- const perimeterFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
202538
+ const perimeterFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
202223
202539
  if (undefined !== perimeterFormatterSpec) {
202224
202540
  const formattedPerimeter = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._perimeter, perimeterFormatterSpec);
202225
202541
  toolTipHtml += `${translateBold("Perimeter") + formattedPerimeter}<br>`;
202226
202542
  }
202227
- const coordFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Coordinate);
202543
+ const coordFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
202228
202544
  if (undefined !== coordFormatterSpec) {
202229
202545
  let pointAdjusted = this._centroid.clone();
202230
202546
  if (isSpatial) {
@@ -202245,7 +202561,7 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202245
202561
  reportMeasurements() {
202246
202562
  if (undefined === this._marker)
202247
202563
  return;
202248
- const briefMsg = `${_Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate("Measure.Labels.Area")}: ${this._marker.label}`;
202564
+ const briefMsg = `${_Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate("Measure.Labels.Area")}: ${this._marker.label}`;
202249
202565
  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);
202250
202566
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.outputMessage(msgDetail);
202251
202567
  }
@@ -202263,7 +202579,7 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202263
202579
  const toolTip = await this.getMarkerToolTip();
202264
202580
  this._acceptedMeasurement = new MeasureMarker("1", toolTip, this._centroid, _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point2d.create(25, 25));
202265
202581
  this._marker = undefined;
202266
- const areaFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Area);
202582
+ const areaFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.AREA", "Units.SQ_M");
202267
202583
  if (undefined === areaFormatterSpec)
202268
202584
  return;
202269
202585
  const formattedTotalArea = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._area, areaFormatterSpec);
@@ -202273,23 +202589,23 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202273
202589
  /** @internal */
202274
202590
  async onDataButtonDown(ev) {
202275
202591
  if (undefined === this.targetView)
202276
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202592
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202277
202593
  if (this._isComplete)
202278
202594
  await this.onReinitialize();
202279
202595
  if (this._points.length > 1 && !ev.isControlKey) {
202280
202596
  const points = this.getShapePoints(ev.point);
202281
202597
  if (points.length < 3)
202282
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202598
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202283
202599
  this._isComplete = true;
202284
202600
  this._points.length = 0;
202285
202601
  for (const pt of points)
202286
202602
  this._points.push(pt);
202287
202603
  await this.updateTotals();
202288
202604
  this.setupAndPromptForNextAction();
202289
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202605
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202290
202606
  }
202291
202607
  if (undefined === this._matrix && undefined === (this._matrix = _AccuDraw__WEBPACK_IMPORTED_MODULE_3__.AccuDrawHintBuilder.getContextRotation(this.orientation, this.targetView)))
202292
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202608
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202293
202609
  const currPt = ev.point.clone();
202294
202610
  if (this._points.length > 0) {
202295
202611
  const planePt = _AccuDraw__WEBPACK_IMPORTED_MODULE_3__.AccuDrawHintBuilder.projectPointToPlaneInView(currPt, this._points[0], this._matrix.getColumn(2), ev.viewport, true);
@@ -202298,14 +202614,14 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202298
202614
  }
202299
202615
  this._points.push(currPt);
202300
202616
  this.setupAndPromptForNextAction();
202301
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202617
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202302
202618
  }
202303
202619
  /** @internal */
202304
202620
  async onResetButtonUp(ev) {
202305
202621
  if (undefined !== ev.viewport)
202306
202622
  ev.viewport.invalidateDecorations();
202307
202623
  await this.onReinitialize();
202308
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202624
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202309
202625
  }
202310
202626
  /** @internal */
202311
202627
  async onReinitialize() {
@@ -202335,7 +202651,7 @@ class MeasureAreaByPointsTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10
202335
202651
  /** Base class for mass properties tools.
202336
202652
  * @public
202337
202653
  */
202338
- class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.PrimitiveTool {
202654
+ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_9__.PrimitiveTool {
202339
202655
  /** @internal */
202340
202656
  _checkedIds = new Map();
202341
202657
  /** @internal */
@@ -202371,33 +202687,33 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202371
202687
  /** @internal */
202372
202688
  showPrompt() {
202373
202689
  const mainMsg = (this._useSelection ? (0 === this._acceptedMeasurements.length ? "ElementSet.Prompts.ConfirmSelection" : "ElementSet.Prompts.InspectResult") : "ElementSet.Prompts.IdentifyElement");
202374
- const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(mainMsg));
202690
+ const mainInstruction = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstruction(this.iconSpec, _Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(mainMsg));
202375
202691
  const mouseInstructions = [];
202376
202692
  const touchInstructions = [];
202377
202693
  if (this._useSelection) {
202378
202694
  if (0 === this._acceptedMeasurements.length) {
202379
- 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));
202380
- 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));
202381
- 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));
202382
- 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));
202695
+ 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));
202696
+ 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));
202697
+ 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));
202698
+ 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));
202383
202699
  }
202384
202700
  else {
202385
- 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));
202386
- 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));
202701
+ 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));
202702
+ 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));
202387
202703
  }
202388
202704
  }
202389
202705
  else {
202390
- 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));
202391
- 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));
202706
+ 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));
202707
+ 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));
202392
202708
  if (0 !== this._acceptedMeasurements.length) {
202393
- 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));
202394
- 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));
202709
+ 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));
202710
+ 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));
202395
202711
  }
202396
202712
  }
202397
202713
  const sections = [];
202398
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
202399
- sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.inputsLabel));
202400
- const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_12__.ToolAssistance.createInstructions(mainInstruction, sections);
202714
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(mouseInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
202715
+ sections.push(_ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createSection(touchInstructions, _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.inputsLabel));
202716
+ const instructions = _ToolAssistance__WEBPACK_IMPORTED_MODULE_11__.ToolAssistance.createInstructions(mainInstruction, sections);
202401
202717
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.setToolAssistance(instructions);
202402
202718
  }
202403
202719
  /** @internal */
@@ -202434,7 +202750,7 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202434
202750
  default:
202435
202751
  return;
202436
202752
  }
202437
- const briefMsg = `${_Tool__WEBPACK_IMPORTED_MODULE_11__.CoreTools.translate(label)}: ${this._totalMarker.label}`;
202753
+ const briefMsg = `${_Tool__WEBPACK_IMPORTED_MODULE_10__.CoreTools.translate(label)}: ${this._totalMarker.label}`;
202438
202754
  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);
202439
202755
  _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.notifications.outputMessage(msgDetail);
202440
202756
  }
@@ -202445,7 +202761,7 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202445
202761
  let toolTipHtml = "";
202446
202762
  switch (this.getOperation()) {
202447
202763
  case _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MassPropertiesOperation.AccumulateLengths: {
202448
- const distanceFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
202764
+ const distanceFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
202449
202765
  if (undefined !== distanceFormatterSpec) {
202450
202766
  const formattedLength = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(responseProps.length ? responseProps.length : 0, distanceFormatterSpec);
202451
202767
  toolTipHtml += `${translateBold("Length") + formattedLength}<br>`;
@@ -202453,13 +202769,13 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202453
202769
  break;
202454
202770
  }
202455
202771
  case _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MassPropertiesOperation.AccumulateAreas: {
202456
- const areaFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Area);
202772
+ const areaFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.AREA", "Units.SQ_M");
202457
202773
  if (undefined !== areaFormatterSpec) {
202458
202774
  const formattedArea = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(responseProps.area ? responseProps.area : 0, areaFormatterSpec);
202459
202775
  toolTipHtml += `${translateBold("Area") + formattedArea}<br>`;
202460
202776
  }
202461
202777
  if (responseProps.perimeter) {
202462
- const perimeterFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
202778
+ const perimeterFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
202463
202779
  if (undefined !== perimeterFormatterSpec) {
202464
202780
  const formattedPerimeter = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(responseProps.perimeter, perimeterFormatterSpec);
202465
202781
  toolTipHtml += `${translateBold("Perimeter") + formattedPerimeter}<br>`;
@@ -202468,13 +202784,13 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202468
202784
  break;
202469
202785
  }
202470
202786
  case _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MassPropertiesOperation.AccumulateVolumes: {
202471
- const volumeFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Volume);
202787
+ const volumeFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.VOLUME", "Units.CUB_M");
202472
202788
  if (undefined !== volumeFormatterSpec) {
202473
202789
  const formattedVolume = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(responseProps.volume ? responseProps.volume : 0, volumeFormatterSpec);
202474
202790
  toolTipHtml += `${translateBold("Volume") + formattedVolume}<br>`;
202475
202791
  }
202476
202792
  if (responseProps.area) {
202477
- const areaFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Area);
202793
+ const areaFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.AREA", "Units.SQ_M");
202478
202794
  if (undefined !== areaFormatterSpec) {
202479
202795
  const formattedArea = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(responseProps.area, areaFormatterSpec);
202480
202796
  toolTipHtml += `${translateBold("Area") + formattedArea}<br>`;
@@ -202484,7 +202800,7 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202484
202800
  }
202485
202801
  }
202486
202802
  if (responseProps.centroid) {
202487
- const coordFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Coordinate);
202803
+ const coordFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
202488
202804
  if (undefined !== coordFormatterSpec) {
202489
202805
  let pointAdjusted = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON(responseProps.centroid);
202490
202806
  if (isSpatial) {
@@ -202535,21 +202851,21 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202535
202851
  return;
202536
202852
  switch (operation) {
202537
202853
  case _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MassPropertiesOperation.AccumulateLengths:
202538
- const distanceFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Length);
202854
+ const distanceFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.LENGTH", "Units.M");
202539
202855
  if (undefined === distanceFormatterSpec)
202540
202856
  return;
202541
202857
  const formattedTotalDistance = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._totalValue, distanceFormatterSpec);
202542
202858
  this._totalMarker = new MeasureLabel(labelPt, formattedTotalDistance);
202543
202859
  break;
202544
202860
  case _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MassPropertiesOperation.AccumulateAreas:
202545
- const areaFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Area);
202861
+ const areaFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.AREA", "Units.SQ_M");
202546
202862
  if (undefined === areaFormatterSpec)
202547
202863
  return;
202548
202864
  const formattedTotalArea = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._totalValue, areaFormatterSpec);
202549
202865
  this._totalMarker = new MeasureLabel(labelPt, formattedTotalArea);
202550
202866
  break;
202551
202867
  case _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MassPropertiesOperation.AccumulateVolumes:
202552
- const volumeFormatterSpec = await _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.getFormatterSpecByQuantityType(_quantity_formatting_QuantityFormatter__WEBPACK_IMPORTED_MODULE_9__.QuantityType.Volume);
202868
+ const volumeFormatterSpec = await getFormatterSpecByKoQAndPersistenceUnit("AecUnits.VOLUME", "Units.CUB_M");
202553
202869
  if (undefined === volumeFormatterSpec)
202554
202870
  return;
202555
202871
  const formattedTotalVolume = _IModelApp__WEBPACK_IMPORTED_MODULE_6__.IModelApp.quantityFormatter.formatQuantity(this._totalValue, volumeFormatterSpec);
@@ -202607,7 +202923,7 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202607
202923
  /** @internal */
202608
202924
  async onResetButtonUp(_ev) {
202609
202925
  await this.onReinitialize();
202610
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202926
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202611
202927
  }
202612
202928
  /** @internal */
202613
202929
  async onDataButtonDown(ev) {
@@ -202615,20 +202931,20 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202615
202931
  if (0 === this._acceptedMeasurements.length && undefined !== ev.viewport) {
202616
202932
  await this.doMeasureSelectedElements(ev.viewport);
202617
202933
  if (0 !== this._acceptedMeasurements.length)
202618
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.Yes;
202619
- _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")));
202934
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.Yes;
202935
+ _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")));
202620
202936
  await this.onReinitialize();
202621
202937
  }
202622
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.Yes;
202938
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.Yes;
202623
202939
  }
202624
202940
  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);
202625
202941
  if (undefined === hit || !hit.isElementHit)
202626
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202942
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202627
202943
  const result = this._checkedIds.get(hit.sourceId);
202628
202944
  if (undefined === result)
202629
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202945
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202630
202946
  if (-1 !== this._acceptedIds.indexOf(hit.sourceId))
202631
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.Yes; // Already accepted, not rejected in filterHit to avoid showing "not" cursor...
202947
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.Yes; // Already accepted, not rejected in filterHit to avoid showing "not" cursor...
202632
202948
  const toolTip = await this.getMarkerToolTip(result);
202633
202949
  const point = result.centroid ? _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON(result.centroid) : ev.point.clone();
202634
202950
  const marker = new MeasureMarker((this._acceptedMeasurements.length + 1).toString(), toolTip, point, _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point2d.create(25, 25));
@@ -202639,7 +202955,7 @@ class MeasureElementTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_10__.Pr
202639
202955
  this.setupAndPromptForNextAction();
202640
202956
  if (undefined !== ev.viewport)
202641
202957
  ev.viewport.invalidateDecorations();
202642
- return _Tool__WEBPACK_IMPORTED_MODULE_11__.EventHandled.No;
202958
+ return _Tool__WEBPACK_IMPORTED_MODULE_10__.EventHandled.No;
202643
202959
  }
202644
202960
  /** @internal */
202645
202961
  async onUndoPreviousStep() {
@@ -210335,12 +210651,14 @@ class SetupCameraTool extends _PrimitiveTool__WEBPACK_IMPORTED_MODULE_17__.Primi
210335
210651
  get targetHeight() { return this.targetHeightProperty.value; }
210336
210652
  set targetHeight(value) { this.targetHeightProperty.value = value; }
210337
210653
  syncCameraHeightState() {
210338
- this.cameraHeightProperty.displayValue = this.cameraHeightProperty.description.format(this.cameraHeight);
210654
+ const specs = _IModelApp__WEBPACK_IMPORTED_MODULE_7__.IModelApp.quantityFormatter.getSpecsByName(this.cameraHeightProperty.description.kindOfQuantityName ?? "AecUnits.LENGTH");
210655
+ this.cameraHeightProperty.displayValue = specs ? specs.formatterSpec.applyFormatting(this.cameraHeight) : this.cameraHeight.toFixed(2);
210339
210656
  this.cameraHeightProperty.isDisabled = !this.useCameraHeight;
210340
210657
  this.syncToolSettingsProperties([this.cameraHeightProperty.syncItem]);
210341
210658
  }
210342
210659
  syncTargetHeightState() {
210343
- this.targetHeightProperty.displayValue = this.targetHeightProperty.description.format(this.targetHeight);
210660
+ const specs = _IModelApp__WEBPACK_IMPORTED_MODULE_7__.IModelApp.quantityFormatter.getSpecsByName(this.targetHeightProperty.description.kindOfQuantityName ?? "AecUnits.LENGTH");
210661
+ this.targetHeightProperty.displayValue = specs ? specs.formatterSpec.applyFormatting(this.targetHeight) : this.targetHeight.toFixed(2);
210344
210662
  this.targetHeightProperty.isDisabled = !this.useTargetHeight;
210345
210663
  this.syncToolSettingsProperties([this.targetHeightProperty.syncItem]);
210346
210664
  }
@@ -329488,7 +329806,7 @@ class TestContext {
329488
329806
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
329489
329807
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
329490
329808
  await core_frontend_1.NoRenderApp.startup({
329491
- applicationVersion: "5.0.0-dev.112",
329809
+ applicationVersion: "5.0.0-dev.113",
329492
329810
  applicationId: this.settings.gprid,
329493
329811
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.serviceAuthToken),
329494
329812
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -331489,9 +331807,11 @@ class BaseQuantityDescription {
331489
331807
  displayLabel;
331490
331808
  typename;
331491
331809
  editor;
331492
- constructor(name, displayLabel, iconSpec) {
331810
+ kindOfQuantityName;
331811
+ constructor(name, displayLabel, iconSpec, kindOfQuantityName) {
331493
331812
  this.name = name;
331494
331813
  this.displayLabel = displayLabel;
331814
+ this.kindOfQuantityName = kindOfQuantityName;
331495
331815
  this.typename = _properties_StandardTypeNames__WEBPACK_IMPORTED_MODULE_1__.StandardTypeNames.Number;
331496
331816
  this.editor = {
331497
331817
  name: _properties_StandardEditorNames__WEBPACK_IMPORTED_MODULE_2__.StandardEditorNames.NumberCustom,
@@ -332028,28 +332348,6 @@ const getClassName = (obj) => {
332028
332348
  };
332029
332349
 
332030
332350
 
332031
- /***/ }),
332032
-
332033
- /***/ "../../core/frontend/lib/esm/extension/providers lazy recursive":
332034
- /*!******************************************************************************!*\
332035
- !*** ../../core/frontend/lib/esm/extension/providers/ lazy namespace object ***!
332036
- \******************************************************************************/
332037
- /***/ ((module) => {
332038
-
332039
- function webpackEmptyAsyncContext(req) {
332040
- // Here Promise.resolve().then() is used instead of new Promise() to prevent
332041
- // uncaught exception popping up in devtools
332042
- return Promise.resolve().then(() => {
332043
- var e = new Error("Cannot find module '" + req + "'");
332044
- e.code = 'MODULE_NOT_FOUND';
332045
- throw e;
332046
- });
332047
- }
332048
- webpackEmptyAsyncContext.keys = () => ([]);
332049
- webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;
332050
- webpackEmptyAsyncContext.id = "../../core/frontend/lib/esm/extension/providers lazy recursive";
332051
- module.exports = webpackEmptyAsyncContext;
332052
-
332053
332351
  /***/ }),
332054
332352
 
332055
332353
  /***/ "?088e":
@@ -354556,7 +354854,7 @@ var loadLanguages = instance.loadLanguages;
354556
354854
  /***/ ((module) => {
354557
354855
 
354558
354856
  "use strict";
354559
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.0.0-dev.112","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"}}');
354857
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.0.0-dev.113","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"}}');
354560
354858
 
354561
354859
  /***/ }),
354562
354860