@itwin/ecschema-rpcinterface-tests 5.0.0-dev.105 → 5.0.0-dev.106

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.
@@ -69408,6 +69408,168 @@ function propertyTypeToString(type) {
69408
69408
  }
69409
69409
 
69410
69410
 
69411
+ /***/ }),
69412
+
69413
+ /***/ "../../core/ecschema-metadata/lib/esm/SchemaFormatsProvider.js":
69414
+ /*!*********************************************************************!*\
69415
+ !*** ../../core/ecschema-metadata/lib/esm/SchemaFormatsProvider.js ***!
69416
+ \*********************************************************************/
69417
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
69418
+
69419
+ "use strict";
69420
+ __webpack_require__.r(__webpack_exports__);
69421
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
69422
+ /* harmony export */ SchemaFormatsProvider: () => (/* binding */ SchemaFormatsProvider)
69423
+ /* harmony export */ });
69424
+ /* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Context */ "../../core/ecschema-metadata/lib/esm/Context.js");
69425
+ /* harmony import */ var _SchemaKey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SchemaKey */ "../../core/ecschema-metadata/lib/esm/SchemaKey.js");
69426
+ /* harmony import */ var _Metadata_SchemaItem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Metadata/SchemaItem */ "../../core/ecschema-metadata/lib/esm/Metadata/SchemaItem.js");
69427
+ /* harmony import */ var _Metadata_Format__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Metadata/Format */ "../../core/ecschema-metadata/lib/esm/Metadata/Format.js");
69428
+ /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
69429
+ /* harmony import */ var _Metadata_KindOfQuantity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Metadata/KindOfQuantity */ "../../core/ecschema-metadata/lib/esm/Metadata/KindOfQuantity.js");
69430
+ /* harmony import */ var _Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Metadata/OverrideFormat */ "../../core/ecschema-metadata/lib/esm/Metadata/OverrideFormat.js");
69431
+ /*---------------------------------------------------------------------------------------------
69432
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
69433
+ * See LICENSE.md in the project root for license terms and full copyright notice.
69434
+ *--------------------------------------------------------------------------------------------*/
69435
+ /** @packageDocumentation
69436
+ * @module Metadata
69437
+ */
69438
+
69439
+
69440
+
69441
+
69442
+
69443
+
69444
+
69445
+ /**
69446
+ * Provides default formats and kind of quantities from a given SchemaContext or SchemaLocater.
69447
+ * @beta
69448
+ */
69449
+ class SchemaFormatsProvider {
69450
+ _context;
69451
+ _unitSystem;
69452
+ _formatsRetrieved = new Set();
69453
+ onFormatsChanged = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_4__.BeEvent();
69454
+ /**
69455
+ *
69456
+ * @param contextOrLocater The SchemaContext or a different ISchemaLocater implementation used to retrieve the schema. The SchemaContext
69457
+ * class implements the ISchemaLocater interface. If the provided locater is not a SchemaContext instance a new SchemaContext will be
69458
+ * created and the locater will be added.
69459
+ * @param unitSystem Used to lookup a default format through a schema specific algorithm, when the format retrieved is associated with a KindOfQuantity.
69460
+ */
69461
+ constructor(contextOrLocater, unitSystem) {
69462
+ if (contextOrLocater instanceof _Context__WEBPACK_IMPORTED_MODULE_0__.SchemaContext) {
69463
+ this._context = contextOrLocater;
69464
+ }
69465
+ else {
69466
+ this._context = new _Context__WEBPACK_IMPORTED_MODULE_0__.SchemaContext();
69467
+ this._context.addLocater(contextOrLocater);
69468
+ }
69469
+ this._unitSystem = unitSystem;
69470
+ }
69471
+ get context() { return this._context; }
69472
+ get unitSystem() { return this._unitSystem; }
69473
+ set unitSystem(unitSystem) {
69474
+ this._unitSystem = unitSystem;
69475
+ this.clear();
69476
+ }
69477
+ clear() {
69478
+ const formatsChanged = Array.from(this._formatsRetrieved);
69479
+ this._formatsRetrieved.clear();
69480
+ this.onFormatsChanged.raiseEvent({ formatsChanged });
69481
+ }
69482
+ async getKindOfQuantityFormatFromSchema(itemKey) {
69483
+ const kindOfQuantity = await this._context.getSchemaItem(itemKey, _Metadata_KindOfQuantity__WEBPACK_IMPORTED_MODULE_5__.KindOfQuantity);
69484
+ if (!kindOfQuantity) {
69485
+ return undefined;
69486
+ }
69487
+ // Find the first presentation format that matches the provided unit system.
69488
+ const unitSystemGroupNames = getUnitSystemGroupNames(this._unitSystem);
69489
+ const presentationFormats = kindOfQuantity.presentationFormats;
69490
+ for (const system of unitSystemGroupNames) {
69491
+ for (const format of presentationFormats) {
69492
+ const unit = format.units && format.units[0][0];
69493
+ if (!unit) {
69494
+ continue;
69495
+ }
69496
+ const currentUnitSystem = await unit.unitSystem;
69497
+ if (currentUnitSystem && currentUnitSystem.name.toUpperCase() === system) {
69498
+ this._formatsRetrieved.add(itemKey.fullName);
69499
+ return (0,_Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__.getFormatProps)(format);
69500
+ }
69501
+ }
69502
+ }
69503
+ // If no matching presentation format was found, use persistence unit format if it matches unit system.
69504
+ const persistenceUnit = await kindOfQuantity.persistenceUnit;
69505
+ const persistenceUnitSystem = await persistenceUnit?.unitSystem;
69506
+ if (persistenceUnitSystem && unitSystemGroupNames.includes(persistenceUnitSystem.name.toUpperCase())) {
69507
+ this._formatsRetrieved.add(itemKey.fullName);
69508
+ return getPersistenceUnitFormatProps(persistenceUnit);
69509
+ }
69510
+ const defaultFormat = kindOfQuantity.defaultPresentationFormat;
69511
+ if (!defaultFormat) {
69512
+ return undefined;
69513
+ }
69514
+ this._formatsRetrieved.add(itemKey.fullName);
69515
+ return (0,_Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__.getFormatProps)(defaultFormat);
69516
+ }
69517
+ /**
69518
+ * Retrieves a Format from a SchemaContext. If the format is part of a KindOfQuantity, the first presentation format in the KindOfQuantity that matches the current unit system will be retrieved.
69519
+ * If no presentation format matches the current unit system, the persistence unit format will be retrieved if it matches the current unit system.
69520
+ * Else, the default presentation format will be retrieved.
69521
+ * @param name The full name of the Format or KindOfQuantity.
69522
+ * @returns
69523
+ */
69524
+ async getFormat(name) {
69525
+ const [schemaName, schemaItemName] = _Metadata_SchemaItem__WEBPACK_IMPORTED_MODULE_2__.SchemaItem.parseFullName(name);
69526
+ const schemaKey = new _SchemaKey__WEBPACK_IMPORTED_MODULE_1__.SchemaKey(schemaName);
69527
+ const schema = await this._context.getSchema(schemaKey);
69528
+ if (!schema) {
69529
+ return undefined;
69530
+ }
69531
+ const itemKey = new _SchemaKey__WEBPACK_IMPORTED_MODULE_1__.SchemaItemKey(schemaItemName, schema.schemaKey);
69532
+ if (schema.name === "Formats") {
69533
+ const format = await this._context.getSchemaItem(itemKey, _Metadata_Format__WEBPACK_IMPORTED_MODULE_3__.Format);
69534
+ if (!format) {
69535
+ return undefined;
69536
+ }
69537
+ return format.toJSON(true);
69538
+ }
69539
+ return this.getKindOfQuantityFormatFromSchema(itemKey);
69540
+ }
69541
+ }
69542
+ function getUnitSystemGroupNames(unitSystem) {
69543
+ switch (unitSystem) {
69544
+ case "imperial":
69545
+ return ["IMPERIAL", "USCUSTOM", "INTERNATIONAL", "FINANCE"];
69546
+ case "metric":
69547
+ return ["SI", "METRIC", "INTERNATIONAL", "FINANCE"];
69548
+ case "usCustomary":
69549
+ return ["USCUSTOM", "INTERNATIONAL", "FINANCE"];
69550
+ case "usSurvey":
69551
+ return ["USSURVEY", "USCUSTOM", "INTERNATIONAL", "FINANCE"];
69552
+ }
69553
+ return [];
69554
+ }
69555
+ function getPersistenceUnitFormatProps(persistenceUnit) {
69556
+ // Same as Format "DefaultRealU" in Formats ecschema
69557
+ return {
69558
+ formatTraits: ["keepSingleZero", "keepDecimalPoint", "showUnitLabel"],
69559
+ precision: 6,
69560
+ type: "Decimal",
69561
+ composite: {
69562
+ units: [
69563
+ {
69564
+ name: persistenceUnit.fullName,
69565
+ label: persistenceUnit.label,
69566
+ },
69567
+ ],
69568
+ },
69569
+ };
69570
+ }
69571
+
69572
+
69411
69573
  /***/ }),
69412
69574
 
69413
69575
  /***/ "../../core/ecschema-metadata/lib/esm/SchemaJsonLocater.js":
@@ -71006,7 +71168,8 @@ __webpack_require__.r(__webpack_exports__);
71006
71168
  /* harmony export */ Schema: () => (/* reexport safe */ _Metadata_Schema__WEBPACK_IMPORTED_MODULE_25__.Schema),
71007
71169
  /* harmony export */ SchemaCache: () => (/* reexport safe */ _Context__WEBPACK_IMPORTED_MODULE_1__.SchemaCache),
71008
71170
  /* harmony export */ SchemaContext: () => (/* reexport safe */ _Context__WEBPACK_IMPORTED_MODULE_1__.SchemaContext),
71009
- /* harmony export */ SchemaGraph: () => (/* reexport safe */ _utils_SchemaGraph__WEBPACK_IMPORTED_MODULE_38__.SchemaGraph),
71171
+ /* harmony export */ SchemaFormatsProvider: () => (/* reexport safe */ _SchemaFormatsProvider__WEBPACK_IMPORTED_MODULE_38__.SchemaFormatsProvider),
71172
+ /* harmony export */ SchemaGraph: () => (/* reexport safe */ _utils_SchemaGraph__WEBPACK_IMPORTED_MODULE_39__.SchemaGraph),
71010
71173
  /* harmony export */ SchemaGraphUtil: () => (/* reexport safe */ _Deserialization_SchemaGraphUtil__WEBPACK_IMPORTED_MODULE_3__.SchemaGraphUtil),
71011
71174
  /* harmony export */ SchemaItem: () => (/* reexport safe */ _Metadata_SchemaItem__WEBPACK_IMPORTED_MODULE_26__.SchemaItem),
71012
71175
  /* harmony export */ SchemaItemKey: () => (/* reexport safe */ _SchemaKey__WEBPACK_IMPORTED_MODULE_31__.SchemaItemKey),
@@ -71086,7 +71249,8 @@ __webpack_require__.r(__webpack_exports__);
71086
71249
  /* harmony import */ var _UnitProvider_SchemaUnitProvider__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./UnitProvider/SchemaUnitProvider */ "../../core/ecschema-metadata/lib/esm/UnitProvider/SchemaUnitProvider.js");
71087
71250
  /* harmony import */ var _Validation_SchemaWalker__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./Validation/SchemaWalker */ "../../core/ecschema-metadata/lib/esm/Validation/SchemaWalker.js");
71088
71251
  /* harmony import */ var _SchemaPartVisitorDelegate__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./SchemaPartVisitorDelegate */ "../../core/ecschema-metadata/lib/esm/SchemaPartVisitorDelegate.js");
71089
- /* harmony import */ var _utils_SchemaGraph__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./utils/SchemaGraph */ "../../core/ecschema-metadata/lib/esm/utils/SchemaGraph.js");
71252
+ /* harmony import */ var _SchemaFormatsProvider__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./SchemaFormatsProvider */ "../../core/ecschema-metadata/lib/esm/SchemaFormatsProvider.js");
71253
+ /* harmony import */ var _utils_SchemaGraph__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./utils/SchemaGraph */ "../../core/ecschema-metadata/lib/esm/utils/SchemaGraph.js");
71090
71254
  /*---------------------------------------------------------------------------------------------
71091
71255
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
71092
71256
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -71128,6 +71292,7 @@ __webpack_require__.r(__webpack_exports__);
71128
71292
 
71129
71293
 
71130
71294
 
71295
+
71131
71296
 
71132
71297
 
71133
71298
  /** @docs-package-description
@@ -75376,7 +75541,7 @@ class AccuSnap {
75376
75541
  intersect.primitive = tpSegment; // Just save single segment that was intersected for line strings/shapes...
75377
75542
  return intersect;
75378
75543
  }
75379
- static perpendicularPoint(snap) {
75544
+ static doPostProcessSnapMode(snap, snapMode) {
75380
75545
  const accuDraw = _IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.accuDraw;
75381
75546
  if (!accuDraw.isEnabled || accuDraw.isDeactivated)
75382
75547
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Disabled; // AccuDraw is require for this snap mode...
@@ -75388,24 +75553,25 @@ class AccuSnap {
75388
75553
  const rMatrix = _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDraw.getSnapRotation(snap, snap.viewport);
75389
75554
  if (undefined === rMatrix)
75390
75555
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
75391
- // Compute perpendicular from AccuDraw origin when active or set AccuDraw rotation if accepted...
75556
+ // Compute snap from AccuDraw origin when active or set AccuDraw rotation if accepted...
75392
75557
  if (!accuDraw.isActive) {
75393
- const origin = snap.getPoint();
75394
- accuDraw.setContext(_AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawFlags.SetRMatrix | _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawFlags.AlwaysSetOrigin, origin, rMatrix);
75395
- accuDraw.adjustPoint(origin, snap.viewport, false); // Update internals for new snap location...
75396
- snap.setSnapPoint(origin, _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapHeat.InRange); // Force hot snap...
75397
- snap.setSnapMode(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
75558
+ accuDraw.setContext(_AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawFlags.SmartRotation); // Automatically orient compass to snap location if accepted...
75559
+ snap.setSnapMode(snapMode);
75398
75560
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Success;
75399
75561
  }
75400
75562
  const zVec = rMatrix.rowZ(); // This is a row matrix...
75401
75563
  const spacePoint = _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawHintBuilder.projectPointToPlaneInView(accuDraw.origin, snap.getPoint(), zVec, snap.viewport, true);
75402
75564
  if (undefined === spacePoint)
75403
75565
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
75404
- const detail = curve.closestPoint(spacePoint, true);
75566
+ let detail;
75567
+ if (_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint === snapMode)
75568
+ detail = curve.closestPoint(spacePoint, true);
75569
+ else
75570
+ detail = curve.closestTangent(spacePoint, { hintPoint: snap.getPoint(), vectorToEye: zVec, extend: true });
75405
75571
  if (undefined === detail?.curve)
75406
75572
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
75407
- // Close point may not be perpendicular when curve can't be extended (CurveExtendMode.OnTangent isn't supported for all curve types)...
75408
- if (!curve.isExtensibleFractionSpace) {
75573
+ // Close point may not be perpendicular when curve can't be extended...
75574
+ if (_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint === snapMode && !curve.isExtensibleFractionSpace) {
75409
75575
  const curvePlanePoint = _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawHintBuilder.projectPointToPlaneInView(accuDraw.origin, detail.point, zVec, snap.viewport, true);
75410
75576
  if (undefined === curvePlanePoint)
75411
75577
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
@@ -75421,14 +75587,8 @@ class AccuSnap {
75421
75587
  const point = _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawHintBuilder.projectPointToPlaneInView(detail.point, accuDraw.origin, zVec, snap.viewport, true);
75422
75588
  if (undefined === point)
75423
75589
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
75424
- const xVec = new _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Vector3d();
75425
- if (accuDraw.origin.vectorTo(point).normalizeWithLength(xVec).mag < _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallAngleRadians)
75426
- xVec.setFrom(rMatrix.rowX()); // Closest point and compass origin coincide...
75427
- const yVec = xVec.unitCrossProduct(zVec);
75428
- if (undefined === yVec)
75429
- return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
75430
75590
  snap.setSnapPoint(point, _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapHeat.InRange); // Force hot snap...
75431
- snap.setSnapMode(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
75591
+ snap.setSnapMode(snapMode);
75432
75592
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Success;
75433
75593
  }
75434
75594
  /** @internal */
@@ -75467,11 +75627,13 @@ class AccuSnap {
75467
75627
  return undefined;
75468
75628
  }
75469
75629
  }
75470
- const doPerpPointSnap = snapModes.includes(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
75471
- if (doPerpPointSnap) {
75472
- // NOTE: This is not a valid backend snap mode. Instead make the snap request using nearest
75473
- // snap in order to get the candidate curve to use to compute the snap point...
75474
- snapModes = snapModes.filter(snapMode => snapMode !== _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
75630
+ const haveTangentPoint = snapModes.includes(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.TangentPoint);
75631
+ const havePerpendicularPoint = snapModes.includes(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
75632
+ const postProcessSnapMode = (havePerpendicularPoint ? _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint : (haveTangentPoint ? _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.TangentPoint : undefined));
75633
+ if (undefined !== postProcessSnapMode) {
75634
+ // NOTE: These are not valid backend snap modes. Instead make the snap request using nearest
75635
+ // snap in order to get the candidate curve to use to compute the desired snap point...
75636
+ snapModes = snapModes.filter(snapMode => (snapMode !== _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint && snapMode !== _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.TangentPoint));
75475
75637
  if (!snapModes.includes(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.Nearest))
75476
75638
  snapModes.push(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.Nearest);
75477
75639
  }
@@ -75562,8 +75724,8 @@ class AccuSnap {
75562
75724
  displayTransform?.matrix.multiplyVector(snap.normal, snap.normal);
75563
75725
  snap.normal.normalizeInPlace();
75564
75726
  }
75565
- if (doPerpPointSnap && _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.Nearest === result.snapMode) {
75566
- if (_ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Success !== this.perpendicularPoint(snap))
75727
+ if (undefined !== postProcessSnapMode && _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.Nearest === result.snapMode) {
75728
+ if (_ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Success !== this.doPostProcessSnapMode(snap, postProcessSnapMode))
75567
75729
  return undefined;
75568
75730
  return snap;
75569
75731
  }
@@ -82217,6 +82379,7 @@ var SnapMode;
82217
82379
  SnapMode[SnapMode["Bisector"] = 32] = "Bisector";
82218
82380
  SnapMode[SnapMode["Intersection"] = 64] = "Intersection";
82219
82381
  SnapMode[SnapMode["PerpendicularPoint"] = 128] = "PerpendicularPoint";
82382
+ SnapMode[SnapMode["TangentPoint"] = 256] = "TangentPoint";
82220
82383
  })(SnapMode || (SnapMode = {}));
82221
82384
  /**
82222
82385
  * @public
@@ -82588,6 +82751,7 @@ class SnapDetail extends HitDetail {
82588
82751
  case SnapMode.Bisector: return `${_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.publicPath}sprites/SnapBisector.png`;
82589
82752
  case SnapMode.Intersection: return `${_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.publicPath}sprites/SnapIntersection.png`;
82590
82753
  case SnapMode.PerpendicularPoint: return `${_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.publicPath}sprites/SnapPerpendicularPoint.png`;
82754
+ case SnapMode.TangentPoint: return `${_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.publicPath}sprites/SnapTangentPoint.png`;
82591
82755
  }
82592
82756
  return "";
82593
82757
  }
@@ -125429,6 +125593,10 @@ class SurfaceGeometry extends _MeshGeometry__WEBPACK_IMPORTED_MODULE_7__.MeshGeo
125429
125593
  return hasAlpha ? "translucent" : opaquePass;
125430
125594
  }
125431
125595
  _wantWoWReversal(target) {
125596
+ if (this.isGlyph) {
125597
+ // Raster text is always subject to white-on-white reversal.
125598
+ return true;
125599
+ }
125432
125600
  const fillFlags = this.fillFlags;
125433
125601
  if (_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.FillFlags.None !== (fillFlags & _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.FillFlags.Background)) {
125434
125602
  return false; // fill color explicitly from background
@@ -311430,7 +311598,7 @@ var loadLanguages = instance.loadLanguages;
311430
311598
  /***/ ((module) => {
311431
311599
 
311432
311600
  "use strict";
311433
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.0.0-dev.105","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:*"},"//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/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"}}');
311601
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.0.0-dev.106","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:*"},"//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/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"}}');
311434
311602
 
311435
311603
  /***/ })
311436
311604