@itwin/rpcinterface-full-stack-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.
@@ -99043,6 +99043,168 @@ function propertyTypeToString(type) {
99043
99043
  }
99044
99044
 
99045
99045
 
99046
+ /***/ }),
99047
+
99048
+ /***/ "../../core/ecschema-metadata/lib/esm/SchemaFormatsProvider.js":
99049
+ /*!*********************************************************************!*\
99050
+ !*** ../../core/ecschema-metadata/lib/esm/SchemaFormatsProvider.js ***!
99051
+ \*********************************************************************/
99052
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
99053
+
99054
+ "use strict";
99055
+ __webpack_require__.r(__webpack_exports__);
99056
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
99057
+ /* harmony export */ SchemaFormatsProvider: () => (/* binding */ SchemaFormatsProvider)
99058
+ /* harmony export */ });
99059
+ /* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Context */ "../../core/ecschema-metadata/lib/esm/Context.js");
99060
+ /* harmony import */ var _SchemaKey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SchemaKey */ "../../core/ecschema-metadata/lib/esm/SchemaKey.js");
99061
+ /* harmony import */ var _Metadata_SchemaItem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Metadata/SchemaItem */ "../../core/ecschema-metadata/lib/esm/Metadata/SchemaItem.js");
99062
+ /* harmony import */ var _Metadata_Format__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Metadata/Format */ "../../core/ecschema-metadata/lib/esm/Metadata/Format.js");
99063
+ /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
99064
+ /* harmony import */ var _Metadata_KindOfQuantity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Metadata/KindOfQuantity */ "../../core/ecschema-metadata/lib/esm/Metadata/KindOfQuantity.js");
99065
+ /* harmony import */ var _Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Metadata/OverrideFormat */ "../../core/ecschema-metadata/lib/esm/Metadata/OverrideFormat.js");
99066
+ /*---------------------------------------------------------------------------------------------
99067
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
99068
+ * See LICENSE.md in the project root for license terms and full copyright notice.
99069
+ *--------------------------------------------------------------------------------------------*/
99070
+ /** @packageDocumentation
99071
+ * @module Metadata
99072
+ */
99073
+
99074
+
99075
+
99076
+
99077
+
99078
+
99079
+
99080
+ /**
99081
+ * Provides default formats and kind of quantities from a given SchemaContext or SchemaLocater.
99082
+ * @beta
99083
+ */
99084
+ class SchemaFormatsProvider {
99085
+ _context;
99086
+ _unitSystem;
99087
+ _formatsRetrieved = new Set();
99088
+ onFormatsChanged = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_4__.BeEvent();
99089
+ /**
99090
+ *
99091
+ * @param contextOrLocater The SchemaContext or a different ISchemaLocater implementation used to retrieve the schema. The SchemaContext
99092
+ * class implements the ISchemaLocater interface. If the provided locater is not a SchemaContext instance a new SchemaContext will be
99093
+ * created and the locater will be added.
99094
+ * @param unitSystem Used to lookup a default format through a schema specific algorithm, when the format retrieved is associated with a KindOfQuantity.
99095
+ */
99096
+ constructor(contextOrLocater, unitSystem) {
99097
+ if (contextOrLocater instanceof _Context__WEBPACK_IMPORTED_MODULE_0__.SchemaContext) {
99098
+ this._context = contextOrLocater;
99099
+ }
99100
+ else {
99101
+ this._context = new _Context__WEBPACK_IMPORTED_MODULE_0__.SchemaContext();
99102
+ this._context.addLocater(contextOrLocater);
99103
+ }
99104
+ this._unitSystem = unitSystem;
99105
+ }
99106
+ get context() { return this._context; }
99107
+ get unitSystem() { return this._unitSystem; }
99108
+ set unitSystem(unitSystem) {
99109
+ this._unitSystem = unitSystem;
99110
+ this.clear();
99111
+ }
99112
+ clear() {
99113
+ const formatsChanged = Array.from(this._formatsRetrieved);
99114
+ this._formatsRetrieved.clear();
99115
+ this.onFormatsChanged.raiseEvent({ formatsChanged });
99116
+ }
99117
+ async getKindOfQuantityFormatFromSchema(itemKey) {
99118
+ const kindOfQuantity = await this._context.getSchemaItem(itemKey, _Metadata_KindOfQuantity__WEBPACK_IMPORTED_MODULE_5__.KindOfQuantity);
99119
+ if (!kindOfQuantity) {
99120
+ return undefined;
99121
+ }
99122
+ // Find the first presentation format that matches the provided unit system.
99123
+ const unitSystemGroupNames = getUnitSystemGroupNames(this._unitSystem);
99124
+ const presentationFormats = kindOfQuantity.presentationFormats;
99125
+ for (const system of unitSystemGroupNames) {
99126
+ for (const format of presentationFormats) {
99127
+ const unit = format.units && format.units[0][0];
99128
+ if (!unit) {
99129
+ continue;
99130
+ }
99131
+ const currentUnitSystem = await unit.unitSystem;
99132
+ if (currentUnitSystem && currentUnitSystem.name.toUpperCase() === system) {
99133
+ this._formatsRetrieved.add(itemKey.fullName);
99134
+ return (0,_Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__.getFormatProps)(format);
99135
+ }
99136
+ }
99137
+ }
99138
+ // If no matching presentation format was found, use persistence unit format if it matches unit system.
99139
+ const persistenceUnit = await kindOfQuantity.persistenceUnit;
99140
+ const persistenceUnitSystem = await persistenceUnit?.unitSystem;
99141
+ if (persistenceUnitSystem && unitSystemGroupNames.includes(persistenceUnitSystem.name.toUpperCase())) {
99142
+ this._formatsRetrieved.add(itemKey.fullName);
99143
+ return getPersistenceUnitFormatProps(persistenceUnit);
99144
+ }
99145
+ const defaultFormat = kindOfQuantity.defaultPresentationFormat;
99146
+ if (!defaultFormat) {
99147
+ return undefined;
99148
+ }
99149
+ this._formatsRetrieved.add(itemKey.fullName);
99150
+ return (0,_Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__.getFormatProps)(defaultFormat);
99151
+ }
99152
+ /**
99153
+ * 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.
99154
+ * If no presentation format matches the current unit system, the persistence unit format will be retrieved if it matches the current unit system.
99155
+ * Else, the default presentation format will be retrieved.
99156
+ * @param name The full name of the Format or KindOfQuantity.
99157
+ * @returns
99158
+ */
99159
+ async getFormat(name) {
99160
+ const [schemaName, schemaItemName] = _Metadata_SchemaItem__WEBPACK_IMPORTED_MODULE_2__.SchemaItem.parseFullName(name);
99161
+ const schemaKey = new _SchemaKey__WEBPACK_IMPORTED_MODULE_1__.SchemaKey(schemaName);
99162
+ const schema = await this._context.getSchema(schemaKey);
99163
+ if (!schema) {
99164
+ return undefined;
99165
+ }
99166
+ const itemKey = new _SchemaKey__WEBPACK_IMPORTED_MODULE_1__.SchemaItemKey(schemaItemName, schema.schemaKey);
99167
+ if (schema.name === "Formats") {
99168
+ const format = await this._context.getSchemaItem(itemKey, _Metadata_Format__WEBPACK_IMPORTED_MODULE_3__.Format);
99169
+ if (!format) {
99170
+ return undefined;
99171
+ }
99172
+ return format.toJSON(true);
99173
+ }
99174
+ return this.getKindOfQuantityFormatFromSchema(itemKey);
99175
+ }
99176
+ }
99177
+ function getUnitSystemGroupNames(unitSystem) {
99178
+ switch (unitSystem) {
99179
+ case "imperial":
99180
+ return ["IMPERIAL", "USCUSTOM", "INTERNATIONAL", "FINANCE"];
99181
+ case "metric":
99182
+ return ["SI", "METRIC", "INTERNATIONAL", "FINANCE"];
99183
+ case "usCustomary":
99184
+ return ["USCUSTOM", "INTERNATIONAL", "FINANCE"];
99185
+ case "usSurvey":
99186
+ return ["USSURVEY", "USCUSTOM", "INTERNATIONAL", "FINANCE"];
99187
+ }
99188
+ return [];
99189
+ }
99190
+ function getPersistenceUnitFormatProps(persistenceUnit) {
99191
+ // Same as Format "DefaultRealU" in Formats ecschema
99192
+ return {
99193
+ formatTraits: ["keepSingleZero", "keepDecimalPoint", "showUnitLabel"],
99194
+ precision: 6,
99195
+ type: "Decimal",
99196
+ composite: {
99197
+ units: [
99198
+ {
99199
+ name: persistenceUnit.fullName,
99200
+ label: persistenceUnit.label,
99201
+ },
99202
+ ],
99203
+ },
99204
+ };
99205
+ }
99206
+
99207
+
99046
99208
  /***/ }),
99047
99209
 
99048
99210
  /***/ "../../core/ecschema-metadata/lib/esm/SchemaJsonLocater.js":
@@ -100641,7 +100803,8 @@ __webpack_require__.r(__webpack_exports__);
100641
100803
  /* harmony export */ Schema: () => (/* reexport safe */ _Metadata_Schema__WEBPACK_IMPORTED_MODULE_25__.Schema),
100642
100804
  /* harmony export */ SchemaCache: () => (/* reexport safe */ _Context__WEBPACK_IMPORTED_MODULE_1__.SchemaCache),
100643
100805
  /* harmony export */ SchemaContext: () => (/* reexport safe */ _Context__WEBPACK_IMPORTED_MODULE_1__.SchemaContext),
100644
- /* harmony export */ SchemaGraph: () => (/* reexport safe */ _utils_SchemaGraph__WEBPACK_IMPORTED_MODULE_38__.SchemaGraph),
100806
+ /* harmony export */ SchemaFormatsProvider: () => (/* reexport safe */ _SchemaFormatsProvider__WEBPACK_IMPORTED_MODULE_38__.SchemaFormatsProvider),
100807
+ /* harmony export */ SchemaGraph: () => (/* reexport safe */ _utils_SchemaGraph__WEBPACK_IMPORTED_MODULE_39__.SchemaGraph),
100645
100808
  /* harmony export */ SchemaGraphUtil: () => (/* reexport safe */ _Deserialization_SchemaGraphUtil__WEBPACK_IMPORTED_MODULE_3__.SchemaGraphUtil),
100646
100809
  /* harmony export */ SchemaItem: () => (/* reexport safe */ _Metadata_SchemaItem__WEBPACK_IMPORTED_MODULE_26__.SchemaItem),
100647
100810
  /* harmony export */ SchemaItemKey: () => (/* reexport safe */ _SchemaKey__WEBPACK_IMPORTED_MODULE_31__.SchemaItemKey),
@@ -100721,7 +100884,8 @@ __webpack_require__.r(__webpack_exports__);
100721
100884
  /* harmony import */ var _UnitProvider_SchemaUnitProvider__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./UnitProvider/SchemaUnitProvider */ "../../core/ecschema-metadata/lib/esm/UnitProvider/SchemaUnitProvider.js");
100722
100885
  /* harmony import */ var _Validation_SchemaWalker__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./Validation/SchemaWalker */ "../../core/ecschema-metadata/lib/esm/Validation/SchemaWalker.js");
100723
100886
  /* harmony import */ var _SchemaPartVisitorDelegate__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./SchemaPartVisitorDelegate */ "../../core/ecschema-metadata/lib/esm/SchemaPartVisitorDelegate.js");
100724
- /* harmony import */ var _utils_SchemaGraph__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./utils/SchemaGraph */ "../../core/ecschema-metadata/lib/esm/utils/SchemaGraph.js");
100887
+ /* harmony import */ var _SchemaFormatsProvider__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./SchemaFormatsProvider */ "../../core/ecschema-metadata/lib/esm/SchemaFormatsProvider.js");
100888
+ /* harmony import */ var _utils_SchemaGraph__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./utils/SchemaGraph */ "../../core/ecschema-metadata/lib/esm/utils/SchemaGraph.js");
100725
100889
  /*---------------------------------------------------------------------------------------------
100726
100890
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
100727
100891
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -100763,6 +100927,7 @@ __webpack_require__.r(__webpack_exports__);
100763
100927
 
100764
100928
 
100765
100929
 
100930
+
100766
100931
 
100767
100932
 
100768
100933
  /** @docs-package-description
@@ -104844,7 +105009,7 @@ class AccuSnap {
104844
105009
  intersect.primitive = tpSegment; // Just save single segment that was intersected for line strings/shapes...
104845
105010
  return intersect;
104846
105011
  }
104847
- static perpendicularPoint(snap) {
105012
+ static doPostProcessSnapMode(snap, snapMode) {
104848
105013
  const accuDraw = _IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.accuDraw;
104849
105014
  if (!accuDraw.isEnabled || accuDraw.isDeactivated)
104850
105015
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Disabled; // AccuDraw is require for this snap mode...
@@ -104856,24 +105021,25 @@ class AccuSnap {
104856
105021
  const rMatrix = _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDraw.getSnapRotation(snap, snap.viewport);
104857
105022
  if (undefined === rMatrix)
104858
105023
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
104859
- // Compute perpendicular from AccuDraw origin when active or set AccuDraw rotation if accepted...
105024
+ // Compute snap from AccuDraw origin when active or set AccuDraw rotation if accepted...
104860
105025
  if (!accuDraw.isActive) {
104861
- const origin = snap.getPoint();
104862
- accuDraw.setContext(_AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawFlags.SetRMatrix | _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawFlags.AlwaysSetOrigin, origin, rMatrix);
104863
- accuDraw.adjustPoint(origin, snap.viewport, false); // Update internals for new snap location...
104864
- snap.setSnapPoint(origin, _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapHeat.InRange); // Force hot snap...
104865
- snap.setSnapMode(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
105026
+ accuDraw.setContext(_AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawFlags.SmartRotation); // Automatically orient compass to snap location if accepted...
105027
+ snap.setSnapMode(snapMode);
104866
105028
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Success;
104867
105029
  }
104868
105030
  const zVec = rMatrix.rowZ(); // This is a row matrix...
104869
105031
  const spacePoint = _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawHintBuilder.projectPointToPlaneInView(accuDraw.origin, snap.getPoint(), zVec, snap.viewport, true);
104870
105032
  if (undefined === spacePoint)
104871
105033
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
104872
- const detail = curve.closestPoint(spacePoint, true);
105034
+ let detail;
105035
+ if (_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint === snapMode)
105036
+ detail = curve.closestPoint(spacePoint, true);
105037
+ else
105038
+ detail = curve.closestTangent(spacePoint, { hintPoint: snap.getPoint(), vectorToEye: zVec, extend: true });
104873
105039
  if (undefined === detail?.curve)
104874
105040
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
104875
- // Close point may not be perpendicular when curve can't be extended (CurveExtendMode.OnTangent isn't supported for all curve types)...
104876
- if (!curve.isExtensibleFractionSpace) {
105041
+ // Close point may not be perpendicular when curve can't be extended...
105042
+ if (_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint === snapMode && !curve.isExtensibleFractionSpace) {
104877
105043
  const curvePlanePoint = _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawHintBuilder.projectPointToPlaneInView(accuDraw.origin, detail.point, zVec, snap.viewport, true);
104878
105044
  if (undefined === curvePlanePoint)
104879
105045
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
@@ -104889,14 +105055,8 @@ class AccuSnap {
104889
105055
  const point = _AccuDraw__WEBPACK_IMPORTED_MODULE_9__.AccuDrawHintBuilder.projectPointToPlaneInView(detail.point, accuDraw.origin, zVec, snap.viewport, true);
104890
105056
  if (undefined === point)
104891
105057
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
104892
- const xVec = new _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Vector3d();
104893
- if (accuDraw.origin.vectorTo(point).normalizeWithLength(xVec).mag < _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Geometry.smallAngleRadians)
104894
- xVec.setFrom(rMatrix.rowX()); // Closest point and compass origin coincide...
104895
- const yVec = xVec.unitCrossProduct(zVec);
104896
- if (undefined === yVec)
104897
- return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.NoSnapPossible;
104898
105058
  snap.setSnapPoint(point, _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapHeat.InRange); // Force hot snap...
104899
- snap.setSnapMode(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
105059
+ snap.setSnapMode(snapMode);
104900
105060
  return _ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Success;
104901
105061
  }
104902
105062
  /** @internal */
@@ -104935,11 +105095,13 @@ class AccuSnap {
104935
105095
  return undefined;
104936
105096
  }
104937
105097
  }
104938
- const doPerpPointSnap = snapModes.includes(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
104939
- if (doPerpPointSnap) {
104940
- // NOTE: This is not a valid backend snap mode. Instead make the snap request using nearest
104941
- // snap in order to get the candidate curve to use to compute the snap point...
104942
- snapModes = snapModes.filter(snapMode => snapMode !== _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
105098
+ const haveTangentPoint = snapModes.includes(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.TangentPoint);
105099
+ const havePerpendicularPoint = snapModes.includes(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint);
105100
+ const postProcessSnapMode = (havePerpendicularPoint ? _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint : (haveTangentPoint ? _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.TangentPoint : undefined));
105101
+ if (undefined !== postProcessSnapMode) {
105102
+ // NOTE: These are not valid backend snap modes. Instead make the snap request using nearest
105103
+ // snap in order to get the candidate curve to use to compute the desired snap point...
105104
+ snapModes = snapModes.filter(snapMode => (snapMode !== _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.PerpendicularPoint && snapMode !== _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.TangentPoint));
104943
105105
  if (!snapModes.includes(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.Nearest))
104944
105106
  snapModes.push(_HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.Nearest);
104945
105107
  }
@@ -105030,8 +105192,8 @@ class AccuSnap {
105030
105192
  displayTransform?.matrix.multiplyVector(snap.normal, snap.normal);
105031
105193
  snap.normal.normalizeInPlace();
105032
105194
  }
105033
- if (doPerpPointSnap && _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.Nearest === result.snapMode) {
105034
- if (_ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Success !== this.perpendicularPoint(snap))
105195
+ if (undefined !== postProcessSnapMode && _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapMode.Nearest === result.snapMode) {
105196
+ if (_ElementLocateManager__WEBPACK_IMPORTED_MODULE_2__.SnapStatus.Success !== this.doPostProcessSnapMode(snap, postProcessSnapMode))
105035
105197
  return undefined;
105036
105198
  return snap;
105037
105199
  }
@@ -111685,6 +111847,7 @@ var SnapMode;
111685
111847
  SnapMode[SnapMode["Bisector"] = 32] = "Bisector";
111686
111848
  SnapMode[SnapMode["Intersection"] = 64] = "Intersection";
111687
111849
  SnapMode[SnapMode["PerpendicularPoint"] = 128] = "PerpendicularPoint";
111850
+ SnapMode[SnapMode["TangentPoint"] = 256] = "TangentPoint";
111688
111851
  })(SnapMode || (SnapMode = {}));
111689
111852
  /**
111690
111853
  * @public
@@ -112056,6 +112219,7 @@ class SnapDetail extends HitDetail {
112056
112219
  case SnapMode.Bisector: return `${_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.publicPath}sprites/SnapBisector.png`;
112057
112220
  case SnapMode.Intersection: return `${_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.publicPath}sprites/SnapIntersection.png`;
112058
112221
  case SnapMode.PerpendicularPoint: return `${_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.publicPath}sprites/SnapPerpendicularPoint.png`;
112222
+ case SnapMode.TangentPoint: return `${_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.publicPath}sprites/SnapTangentPoint.png`;
112059
112223
  }
112060
112224
  return "";
112061
112225
  }
@@ -154897,6 +155061,10 @@ class SurfaceGeometry extends _MeshGeometry__WEBPACK_IMPORTED_MODULE_7__.MeshGeo
154897
155061
  return hasAlpha ? "translucent" : opaquePass;
154898
155062
  }
154899
155063
  _wantWoWReversal(target) {
155064
+ if (this.isGlyph) {
155065
+ // Raster text is always subject to white-on-white reversal.
155066
+ return true;
155067
+ }
154900
155068
  const fillFlags = this.fillFlags;
154901
155069
  if (_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.FillFlags.None !== (fillFlags & _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.FillFlags.Background)) {
154902
155070
  return false; // fill color explicitly from background
@@ -328353,7 +328521,7 @@ class TestContext {
328353
328521
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
328354
328522
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
328355
328523
  await core_frontend_1.NoRenderApp.startup({
328356
- applicationVersion: "5.0.0-dev.105",
328524
+ applicationVersion: "5.0.0-dev.106",
328357
328525
  applicationId: this.settings.gprid,
328358
328526
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.serviceAuthToken),
328359
328527
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -353397,7 +353565,7 @@ var loadLanguages = instance.loadLanguages;
353397
353565
  /***/ ((module) => {
353398
353566
 
353399
353567
  "use strict";
353400
- 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"}}');
353568
+ 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"}}');
353401
353569
 
353402
353570
  /***/ }),
353403
353571