@itwin/ecschema-rpcinterface-tests 4.10.0-dev.11 → 4.10.0-dev.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -74509,6 +74509,7 @@ class AccuSnap {
74509
74509
  snapDivisor: keypointDivisor,
74510
74510
  subCategoryId: thisHit.subCategoryId,
74511
74511
  geometryClass: thisHit.geometryClass,
74512
+ modelToWorld: thisHit.transformFromSourceIModel?.toJSON(),
74512
74513
  };
74513
74514
  const thisGeom = (thisHit.isElementHit ? _IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.viewManager.overrideElementGeometry(thisHit) : _IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.viewManager.getDecorationGeometry(thisHit));
74514
74515
  if (undefined !== thisGeom) {
@@ -74558,12 +74559,15 @@ class AccuSnap {
74558
74559
  const parsed = undefined !== json ? _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.IModelJson.Reader.parse(json) : undefined;
74559
74560
  return parsed instanceof _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.GeometryQuery && "curvePrimitive" === parsed.geometryCategory ? parsed : undefined;
74560
74561
  };
74562
+ let displayTransform;
74563
+ if (undefined !== thisHit.modelId) {
74564
+ displayTransform = thisHit.viewport.view.computeDisplayTransform({
74565
+ modelId: thisHit.modelId,
74566
+ elementId: thisHit.sourceId,
74567
+ viewAttachmentId: thisHit.viewAttachment?.id,
74568
+ });
74569
+ }
74561
74570
  const snapPoint = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON(result.snapPoint);
74562
- const displayTransform = undefined !== thisHit.modelId ? thisHit.viewport.view.computeDisplayTransform({
74563
- modelId: thisHit.modelId,
74564
- elementId: thisHit.sourceId,
74565
- viewAttachmentId: thisHit.viewAttachment?.id,
74566
- }) : undefined;
74567
74571
  displayTransform?.multiplyPoint3d(snapPoint, snapPoint);
74568
74572
  const snap = new _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapDetail(thisHit, result.snapMode, result.heat, snapPoint);
74569
74573
  snap.setCurvePrimitive(parseCurve(result.curve), displayTransform, result.geomType);
@@ -81190,6 +81194,8 @@ class HitDetail {
81190
81194
  * @internal
81191
81195
  */
81192
81196
  get sourceIModel() { return this._props.sourceIModel; }
81197
+ /** @internal */
81198
+ get transformFromSourceIModel() { return this._props.transformFromSourceIModel; }
81193
81199
  /** @internal chiefly for debugging */
81194
81200
  get tileId() { return this._props.tileId; }
81195
81201
  /** True if the hit originated from a reality model classifier.
@@ -81238,6 +81244,7 @@ class HitDetail {
81238
81244
  geometryClass: arg0.geometryClass,
81239
81245
  modelId: arg0.modelId,
81240
81246
  sourceIModel: arg0.sourceIModel,
81247
+ transformFromSourceIModel: arg0.transformFromSourceIModel,
81241
81248
  tileId: arg0.tileId,
81242
81249
  isClassifier: arg0.isClassifier,
81243
81250
  viewAttachment: arg0.viewAttachment,
@@ -87293,7 +87300,6 @@ class SheetViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_12__.ViewState2
87293
87300
  context.setViewBackground(border);
87294
87301
  }
87295
87302
  }
87296
- /** @internal */
87297
87303
  computeFitRange() {
87298
87304
  const size = this.sheetSize;
87299
87305
  if (0 >= size.x || 0 >= size.y)
@@ -108948,6 +108954,7 @@ var Pixel;
108948
108954
  this.iModel = args?.iModel;
108949
108955
  this.tileId = args?.tileId;
108950
108956
  this.viewAttachmentId = args?.viewAttachmentId;
108957
+ this.transformFromIModel = args?.transformFromIModel;
108951
108958
  }
108952
108959
  /** The Id of the element that produced the pixel. */
108953
108960
  get elementId() {
@@ -108996,6 +109003,7 @@ var Pixel;
108996
109003
  tileId: this.tileId,
108997
109004
  isClassifier: this.isClassifier,
108998
109005
  sourceIModel: this.iModel,
109006
+ transformFromSourceIModel: this.transformFromIModel,
108999
109007
  viewAttachment,
109000
109008
  };
109001
109009
  }
@@ -112084,6 +112092,7 @@ class BranchState {
112084
112092
  get textureDrape() { return this._opts.textureDrape; }
112085
112093
  get edgeSettings() { return this._opts.edgeSettings; }
112086
112094
  get iModel() { return this._opts.iModel; }
112095
+ get transformFromIModel() { return this._opts.transformFromIModel; }
112087
112096
  get is3d() { return this._opts.is3d; }
112088
112097
  get frustumScale() { return this._opts.frustumScale; }
112089
112098
  get appearanceProvider() { return this._opts.appearanceProvider; }
@@ -112109,6 +112118,7 @@ class BranchState {
112109
112118
  transform: prev.transform.multiplyTransformTransform(branch.localToWorldTransform),
112110
112119
  symbologyOverrides: branch.branch.symbologyOverrides ?? prev.symbologyOverrides,
112111
112120
  iModel: branch.iModel ?? prev.iModel,
112121
+ transformFromIModel: branch.transformFromExternalIModel ?? prev.transformFromIModel,
112112
112122
  planarClassifier: (undefined !== branch.planarClassifier && undefined !== branch.planarClassifier.texture) ? branch.planarClassifier : prev.planarClassifier,
112113
112123
  textureDrape: branch.textureDrape ?? prev.textureDrape,
112114
112124
  clipVolume: branch.clips,
@@ -116479,15 +116489,18 @@ class Batch extends Graphic {
116479
116489
  /** The following are valid only during a draw and reset afterward. */
116480
116490
  get batchId() { return this._context.batchId; }
116481
116491
  get batchIModel() { return this._context.iModel; }
116492
+ get transformFromBatchIModel() { return this._context.transformFromIModel; }
116482
116493
  get viewAttachmentId() { return this._context.viewAttachmentId; }
116483
116494
  setContext(batchId, branch) {
116484
116495
  this._context.batchId = batchId;
116485
116496
  this._context.iModel = branch.iModel;
116497
+ this._context.transformFromIModel = branch.transformFromIModel;
116486
116498
  this._context.viewAttachmentId = branch.viewAttachmentId;
116487
116499
  }
116488
116500
  resetContext() {
116489
116501
  this._context.batchId = 0;
116490
116502
  this._context.iModel = undefined;
116503
+ this._context.transformFromIModel = undefined;
116491
116504
  this._context.viewAttachmentId = undefined;
116492
116505
  }
116493
116506
  constructor(graphic, features, range, options) {
@@ -116552,6 +116565,7 @@ class Branch extends Graphic {
116552
116565
  this.iModel = opts.iModel;
116553
116566
  this.frustum = opts.frustum;
116554
116567
  this.viewAttachmentId = opts.viewAttachmentId;
116568
+ this.transformFromExternalIModel = opts.transformFromIModel;
116555
116569
  if (opts.hline)
116556
116570
  this.edgeSettings = _EdgeSettings__WEBPACK_IMPORTED_MODULE_6__.EdgeSettings.create(opts.hline);
116557
116571
  if (opts.classifierOrDrape instanceof _PlanarClassifier__WEBPACK_IMPORTED_MODULE_8__.PlanarClassifier)
@@ -122330,8 +122344,15 @@ class PixelBuffer {
122330
122344
  const featureId = this.getFeatureId(pixelIndex);
122331
122345
  if (undefined !== featureId) {
122332
122346
  const batch = this._batchState.find(featureId);
122333
- if (undefined !== batch)
122334
- return { featureTable: batch.featureTable, iModel: batch.batchIModel, tileId: batch.tileId, viewAttachmentId: batch.viewAttachmentId };
122347
+ if (undefined !== batch) {
122348
+ return {
122349
+ featureTable: batch.featureTable,
122350
+ iModel: batch.batchIModel,
122351
+ transformFromIModel: batch.transformFromBatchIModel,
122352
+ tileId: batch.tileId,
122353
+ viewAttachmentId: batch.viewAttachmentId,
122354
+ };
122355
+ }
122335
122356
  }
122336
122357
  return undefined;
122337
122358
  }
@@ -122401,10 +122422,11 @@ class PixelBuffer {
122401
122422
  }
122402
122423
  }
122403
122424
  }
122404
- let featureTable, iModel, tileId, viewAttachmentId;
122425
+ let featureTable, iModel, transformToIModel, tileId, viewAttachmentId;
122405
122426
  if (undefined !== batchInfo) {
122406
122427
  featureTable = batchInfo.featureTable;
122407
122428
  iModel = batchInfo.iModel;
122429
+ transformToIModel = batchInfo.transformFromIModel;
122408
122430
  tileId = batchInfo.tileId;
122409
122431
  viewAttachmentId = batchInfo.viewAttachmentId;
122410
122432
  }
@@ -122415,6 +122437,7 @@ class PixelBuffer {
122415
122437
  planarity,
122416
122438
  batchType: featureTable?.type,
122417
122439
  iModel,
122440
+ transformFromIModel: transformToIModel,
122418
122441
  tileId,
122419
122442
  viewAttachmentId,
122420
122443
  });
@@ -150191,6 +150214,7 @@ class TileDrawArgs {
150191
150214
  this.groupNodeId = params.groupNodeId;
150192
150215
  this.boundingRange = params.boundingRange;
150193
150216
  this.maximumScreenSpaceError = params.maximumScreenSpaceError ?? 16; // 16 is Cesium's default.
150217
+ this.transformFromIModel = params.transformFromIModel;
150194
150218
  // Do not cull tiles based on clip volume if tiles outside clip are supposed to be drawn but in a different color.
150195
150219
  if (undefined !== clipVolume && !context.viewport.view.displayStyle.settings.clipStyle.outsideColor)
150196
150220
  this.clipVolume = clipVolume;
@@ -150258,6 +150282,7 @@ class TileDrawArgs {
150258
150282
  return undefined;
150259
150283
  const opts = {
150260
150284
  iModel: this.tree.iModel,
150285
+ transformFromIModel: this.transformFromIModel,
150261
150286
  clipVolume: this.clipVolume,
150262
150287
  classifierOrDrape: this.planarClassifier ?? this.drape,
150263
150288
  appearanceProvider: this.appearanceProvider,
@@ -151513,8 +151538,11 @@ class TileTreeReference /* implements RenderMemory.Consumer */ {
151513
151538
  hiddenLineSettings: this.getHiddenLineSettings(tree),
151514
151539
  animationTransformNodeId: this.getAnimationTransformNodeId(tree),
151515
151540
  groupNodeId: this.getGroupNodeId(tree),
151541
+ transformFromIModel: this.getTransformFromIModel(),
151516
151542
  });
151517
151543
  }
151544
+ /** @beta */
151545
+ getTransformFromIModel() { return undefined; }
151518
151546
  /** @internal */
151519
151547
  getAnimationTransformNodeId(_tree) {
151520
151548
  return undefined;
@@ -188221,7 +188249,12 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
188221
188249
  const otherVector0 = this._matrix.multiplyInverse(other.vector0);
188222
188250
  const otherVector90 = this._matrix.multiplyInverse(other.vector90);
188223
188251
  if (otherOrigin && otherVector0 && otherVector90) {
188224
- return { center: otherOrigin, vector0: otherVector0, vector90: otherVector90, sweep: this.sweep.clone() };
188252
+ return {
188253
+ center: otherOrigin,
188254
+ vector0: otherVector0,
188255
+ vector90: otherVector90,
188256
+ sweep: this.sweep.clone(),
188257
+ };
188225
188258
  }
188226
188259
  return undefined;
188227
188260
  }
@@ -200726,7 +200759,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
200726
200759
  */
200727
200760
  dispatchArcArcThisOrder(cpA, // arc closer to being circular
200728
200761
  matrixA, extendA0, extendA1, cpB, matrixB, extendB0, extendB1, reversed) {
200729
- // inverseA transforms arcA to its local coordinates, where it is the unit xy-circle.
200762
+ // inverseA transforms arcA to its local coordinates, where it is the unit xy-circle
200730
200763
  const inverseA = matrixA.inverse();
200731
200764
  if (inverseA) {
200732
200765
  // localB defines the arc formed by transforming arcB into the local coordinates of arcA
@@ -215001,7 +215034,8 @@ class Matrix3d {
215001
215034
  static createColumns(vectorU, vectorV, vectorW, result) {
215002
215035
  return Matrix3d.createRowValues(vectorU.x, vectorV.x, vectorW.x, vectorU.y, vectorV.y, vectorW.y, vectorU.z, vectorV.z, vectorW.z, result);
215003
215036
  }
215004
- /** Create a matrix with each column's _x,y_ parts given `XAndY` and separate numeric z values.
215037
+ /**
215038
+ * Create a matrix with each column's _x,y_ parts given `XAndY` and separate numeric z values.
215005
215039
  * ```
215006
215040
  * equation
215007
215041
  * \begin{bmatrix}U_x & V_x & W_x \\ U_y & V_y & W_y \\ u & v & w \end{bmatrix}
@@ -219262,7 +219296,7 @@ class XYZ {
219262
219296
  return defaultValue;
219263
219297
  }
219264
219298
  /**
219265
- * Look for (in order) an x coordinate present as:
219299
+ * Look for (in order) a y coordinate present as:
219266
219300
  * * arg.y
219267
219301
  * * arg[1]
219268
219302
  */
@@ -219274,7 +219308,7 @@ class XYZ {
219274
219308
  return defaultValue;
219275
219309
  }
219276
219310
  /**
219277
- * Look for (in order) an x coordinate present as:
219311
+ * Look for (in order) a z coordinate present as:
219278
219312
  * * arg.z
219279
219313
  * * arg[2]
219280
219314
  */
@@ -220197,8 +220231,8 @@ class Vector3d extends XYZ {
220197
220231
  * the plane of this vector and the target vector.
220198
220232
  * @param target Second vector which defines the plane of rotation.
220199
220233
  * @param result optional preallocated vector for result.
220200
- * @returns rotated vector, or undefined if the cross product of this and
220201
- * the the target cannot be normalized (i.e. if the target and this are colinear)
220234
+ * @returns rotated vector, or undefined if the cross product of this and the target
220235
+ * cannot be normalized (i.e. if the target and this are colinear).
220202
220236
  */
220203
220237
  rotate90Towards(target, result) {
220204
220238
  const normal = this.crossProduct(target).normalize();
@@ -220334,7 +220368,8 @@ class Vector3d extends XYZ {
220334
220368
  return this.crossProduct(vectorB, result).normalize(result);
220335
220369
  }
220336
220370
  /**
220337
- * Compute the cross product of this vector with `vectorB`. Normalize it, using given xyz as default if length is zero.
220371
+ * Compute the cross product of this vector with `vectorB` and normalize it.
220372
+ * * If length is zero, return the vector given by x, y, z.
220338
220373
  * @param vectorB second vector of cross product
220339
220374
  * @param x x value for default result
220340
220375
  * @param y y value for default result
@@ -234368,49 +234403,45 @@ class AnalyticRoots {
234368
234403
  // this.appendCubicRootsUnsorted(c, results);
234369
234404
  results.sort();
234370
234405
  }
234371
- /** Compute roots of quartic 'c[0] + c[1] * x + c[2] * x^2 + c[3] * x^3 + c[4] * x^4 */
234406
+ /** Compute roots of quartic `c[0] + c[1] * x + c[2] * x^2 + c[3] * x^3 + c[4] * x^4` */
234372
234407
  static appendQuarticRoots(c, results) {
234373
- const coffs = new Float64Array(4); // at various times .. coefficients of quadratic an cubic intermediates.
234408
+ const coffs = new Float64Array(4);
234374
234409
  let u;
234375
234410
  let v;
234376
- // normal form: x^4 + Ax^3 + Bx^2 + Cx + D = 0
234377
234411
  const coffScale = new Float64Array(1);
234378
234412
  if (!this.safeDivide(coffScale, 1.0, c[4], 0.0, 0)) {
234379
234413
  this.appendCubicRoots(c, results);
234380
234414
  return;
234381
234415
  }
234416
+ // normal form: x^4 + Ax^3 + Bx^2 + Cx + D = 0
234382
234417
  const A = c[3] * coffScale[0];
234383
234418
  const B = c[2] * coffScale[0];
234384
234419
  const C = c[1] * coffScale[0];
234385
234420
  const D = c[0] * coffScale[0];
234386
234421
  const origin = -0.25 * A;
234387
- /* substitute x = y - A/4 to eliminate cubic term:
234388
- x^4 + px^2 + qx + r = 0 */
234422
+ // substitute x = y - A/4 to eliminate cubic term: y^4 + py^2 + qy + r = 0
234389
234423
  const sq_A = A * A;
234390
- const p = -3.0 / 8 * sq_A + B;
234424
+ const p = -0.375 * sq_A + B;
234391
234425
  const q = 0.125 * sq_A * A - 0.5 * A * B + C;
234392
- const r = -3.0 / 256 * sq_A * sq_A + 1.0 / 16 * sq_A * B - 1.0 / 4 * A * C + D;
234393
- const tempStack = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array();
234394
- if (this.isZero(r)) {
234395
- // no absolute term: y(y^3 + py + q) = 0
234426
+ const r = -0.01171875 * sq_A * sq_A + 0.0625 * sq_A * B - 0.25 * A * C + D;
234427
+ const cubicSolutions = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array();
234428
+ if (this.isZero(r)) { // no absolute term: y(y^3 + py + q) = 0
234396
234429
  coffs[0] = q;
234397
234430
  coffs[1] = p;
234398
234431
  coffs[2] = 0;
234399
234432
  coffs[3] = 1;
234400
234433
  this.appendCubicRoots(coffs, results);
234401
- results.push(0); // APPLY ORIGIN ....
234402
- this.addConstant(origin, results);
234434
+ results.push(0);
234435
+ this.addConstant(origin, results); // apply origin
234403
234436
  return;
234404
234437
  }
234405
- else {
234406
- // Solve the resolvent cubic
234407
- coffs[0] = 1.0 / 2 * r * p - 1.0 / 8 * q * q;
234438
+ else { // solve the resolvent cubic; more info: https://en.wikipedia.org/wiki/Resolvent_cubic#Second_definition
234439
+ coffs[0] = 0.5 * r * p - 0.125 * q * q;
234408
234440
  coffs[1] = -r;
234409
- coffs[2] = -1.0 / 2 * p;
234441
+ coffs[2] = -0.5 * p;
234410
234442
  coffs[3] = 1;
234411
- this.appendCubicRoots(coffs, tempStack);
234412
- const z = this.mostDistantFromMean(tempStack);
234413
- // ... to build two quadric equations
234443
+ this.appendCubicRoots(coffs, cubicSolutions);
234444
+ const z = this.mostDistantFromMean(cubicSolutions);
234414
234445
  u = z * z - r;
234415
234446
  v = 2 * z - p;
234416
234447
  if (this.isSmallRatio(u, r)) {
@@ -234429,11 +234460,9 @@ class AnalyticRoots {
234429
234460
  v = Math.sqrt(v);
234430
234461
  }
234431
234462
  else {
234432
- for (let i = 0; i < tempStack.length; i++) {
234433
- results.push(tempStack.atUncheckedIndex(i));
234434
- }
234435
234463
  return;
234436
234464
  }
234465
+ // the two quadratic equations
234437
234466
  coffs[0] = z - u;
234438
234467
  coffs[1] = ((q < 0) ? (-v) : (v));
234439
234468
  coffs[2] = 1;
@@ -234444,7 +234473,7 @@ class AnalyticRoots {
234444
234473
  this.appendQuadraticRoots(coffs, results);
234445
234474
  }
234446
234475
  // substitute
234447
- this.addConstant(origin, results);
234476
+ this.addConstant(origin, results); // apply origin
234448
234477
  results.sort();
234449
234478
  this.improveRoots(c, 4, results, true);
234450
234479
  return;
@@ -234548,19 +234577,17 @@ class PowerPolynomial {
234548
234577
  return this.degreeKnownEvaluate(coff, degree, x);
234549
234578
  }
234550
234579
  /**
234551
- * * Accumulate Q*scale into P. Both are treated as full degree.
234552
- * * (Expect Address exceptions if P is smaller than Q)
234553
- * * Returns degree of result as determined by comparing trailing coefficients to zero
234580
+ * Accumulate `coffQ*scaleQ` into `coffP`.
234581
+ * * The length of `coffP` must be at least length of `coffQ`.
234582
+ * * Returns degree of result as determined by comparing trailing coefficients to zero.
234554
234583
  */
234555
234584
  static accumulate(coffP, coffQ, scaleQ) {
234556
234585
  let degreeP = coffP.length - 1;
234557
234586
  const degreeQ = coffQ.length - 1;
234558
- for (let i = 0; i <= degreeQ; i++) {
234587
+ for (let i = 0; i <= degreeQ; i++)
234559
234588
  coffP[i] += scaleQ * coffQ[i];
234560
- }
234561
- while (degreeP >= 0 && coffP[degreeP] === 0.0) {
234589
+ while (degreeP >= 0 && coffP[degreeP] === 0.0)
234562
234590
  degreeP--;
234563
- }
234564
234591
  return degreeP;
234565
234592
  }
234566
234593
  /** Zero all coefficients */
@@ -234576,17 +234603,18 @@ class PowerPolynomial {
234576
234603
  */
234577
234604
  class TrigPolynomial {
234578
234605
  /**
234579
- * Solve a polynomial created from trigonometric condition using
234580
- * Trig.S, Trig.C, Trig.W. Solution logic includes inferring angular roots
234581
- * corresponding zero leading coefficients (roots at infinity)
234582
- * @param coff Coefficients
234583
- * @param nominalDegree degree of the polynomial under most complex
234584
- * root case. If there are any zero coefficients up to this degree, a single root
234585
- * "at infinity" is recorded as its corresponding angular parameter at negative pi/2
234586
- * @param referenceCoefficient A number which represents the size of coefficients
234587
- * at various stages of computation. A small fraction of this will be used as a zero
234588
- * tolerance
234589
- * @param radians Roots are placed here
234606
+ * Solve a polynomial created from trigonometric condition using Trig.S, Trig.C, Trig.W.
234607
+ * * Polynomial is of degree 4:
234608
+ * `coff[0] + coff[1] * t + coff[2] * t^2 + coff[3] * t^3 + coff[4] * t^4`
234609
+ * * Solution logic includes inferring angular roots corresponding zero leading coefficients
234610
+ * (roots at infinity).
234611
+ * @param coff coefficients.
234612
+ * @param nominalDegree degree of the polynomial under most complex root case. If there are
234613
+ * any zero coefficients up to this degree, a single root "at infinity" is recorded as its
234614
+ * corresponding angular parameter at negative pi/2.
234615
+ * @param referenceCoefficient a number which represents the size of coefficients at various
234616
+ * stages of computation. A small fraction of this will be used as a zero tolerance
234617
+ * @param radians roots are placed here.
234590
234618
  * @return false if equation is all zeros. This usually means any angle is a solution.
234591
234619
  */
234592
234620
  static solveAngles(coff, nominalDegree, referenceCoefficient, radians) {
@@ -234596,27 +234624,21 @@ class TrigPolynomial {
234596
234624
  const relTol = this._smallAngle;
234597
234625
  for (let i = 0; i <= nominalDegree; i++) {
234598
234626
  a = Math.abs(coff[i]);
234599
- if (a > maxCoff) {
234627
+ if (a > maxCoff)
234600
234628
  maxCoff = a;
234601
- }
234602
234629
  }
234603
234630
  const coffTol = relTol * maxCoff;
234604
234631
  let degree = nominalDegree;
234605
- while (degree > 0 && (Math.abs(coff[degree]) <= coffTol)) {
234632
+ while (degree > 0 && (Math.abs(coff[degree]) <= coffTol))
234606
234633
  degree--;
234607
- }
234608
- // let status = false;
234609
234634
  const roots = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array();
234610
234635
  if (degree === -1) {
234611
- // Umm. Dunno. Nothing there.
234612
- // status = false;
234636
+ // Umm. Dunno. Nothing there.
234613
234637
  }
234614
234638
  else {
234615
- // status = true;
234616
234639
  if (degree === 0) {
234617
234640
  // p(t) is a nonzero constant
234618
234641
  // No roots, but not degenerate.
234619
- // status = true;
234620
234642
  }
234621
234643
  else if (degree === 1) {
234622
234644
  // p(t) = coff[1] * t + coff[0]
@@ -234632,13 +234654,12 @@ class TrigPolynomial {
234632
234654
  AnalyticRoots.appendQuarticRoots(coff, roots);
234633
234655
  }
234634
234656
  else {
234635
- // TODO: WILL WORK WITH BEZIER SOLVER
234636
- // status = false;
234657
+ // TODO: WORK WITH BEZIER SOLVER
234637
234658
  }
234638
234659
  if (roots.length > 0) {
234639
234660
  // Each solution t represents an angle with
234640
- // Math.Cos(theta)=C(t)/W(t), ,sin(theta)=S(t)/W(t)
234641
- // Division by W has no effect on Atan2 calculations, so we just compute S(t),C(t)
234661
+ // Math.Cos(theta) = C(t)/W(t) and sin(theta) = S(t)/W(t)
234662
+ // Division by W has no effect on atan2 calculations, so we just compute S(t),C(t)
234642
234663
  for (let i = 0; i < roots.length; i++) {
234643
234664
  const ss = PowerPolynomial.evaluate(this.S, roots.atUncheckedIndex(i));
234644
234665
  const cc = PowerPolynomial.evaluate(this.C, roots.atUncheckedIndex(i));
@@ -234647,55 +234668,56 @@ class TrigPolynomial {
234647
234668
  // Each leading zero at the front of the coefficients corresponds to a root at -PI/2.
234648
234669
  // Only make one entry....
234649
234670
  // for (int i = degree; i < nominalDegree; i++)
234650
- if (degree < nominalDegree) {
234671
+ if (degree < nominalDegree)
234651
234672
  radians.push(-0.5 * Math.PI);
234652
- }
234653
234673
  }
234654
234674
  }
234655
234675
  return radians.length > 0;
234656
234676
  }
234657
234677
  /**
234658
234678
  * Compute intersections of unit circle `x^2 + y^2 = 1` with general quadric
234659
- * `axx * x^2 + axy * x * y + ayy * y^2 + ax * x + ay * y + a1 = 0`
234679
+ * `axx * x^2 + axy * x * y + ayy * y^2 + ax * x + ay * y + a = 0`
234660
234680
  * Solutions are returned as angles. Sine and Cosine of the angles are the x, y results.
234661
- * @param axx Coefficient of x^2
234662
- * @param axy Coefficient of xy
234663
- * @param ayy Coefficient of y^2
234664
- * @param ax Coefficient of x
234665
- * @param ay Coefficient of y
234666
- * @param a1 Constant coefficient
234667
- * @param radians solution angles
234668
- */
234669
- static solveUnitCircleImplicitQuadricIntersection(axx, axy, ayy, ax, ay, a1, radians) {
234670
- const Coffs = new Float64Array(5);
234671
- PowerPolynomial.zero(Coffs);
234681
+ * @param axx coefficient of x^2
234682
+ * @param axy coefficient of xy
234683
+ * @param ayy coefficient of y^2
234684
+ * @param ax coefficient of x
234685
+ * @param ay coefficient of y
234686
+ * @param a constant coefficient
234687
+ * @param radians solution angles
234688
+ */
234689
+ static solveUnitCircleImplicitQuadricIntersection(axx, axy, ayy, ax, ay, a, radians) {
234690
+ const coffs = new Float64Array(5);
234691
+ PowerPolynomial.zero(coffs);
234672
234692
  let degree;
234673
- if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(axx, axy, ayy) > TrigPolynomial._coefficientRelTol * _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(ax, ay, a1)) {
234674
- PowerPolynomial.accumulate(Coffs, this.CW, ax);
234675
- PowerPolynomial.accumulate(Coffs, this.SW, ay);
234676
- PowerPolynomial.accumulate(Coffs, this.WW, a1);
234677
- PowerPolynomial.accumulate(Coffs, this.SS, ayy);
234678
- PowerPolynomial.accumulate(Coffs, this.CC, axx);
234679
- PowerPolynomial.accumulate(Coffs, this.SC, axy);
234693
+ // see itwinjs-core\core\geometry\internaldocs\unitCircleEllipseIntersection.md
234694
+ // on how coffs (coefficient array) is built.
234695
+ if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(axx, axy, ayy) > TrigPolynomial._coefficientRelTol * _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(ax, ay, a)) {
234696
+ PowerPolynomial.accumulate(coffs, this.CW, ax);
234697
+ PowerPolynomial.accumulate(coffs, this.SW, ay);
234698
+ PowerPolynomial.accumulate(coffs, this.WW, a);
234699
+ PowerPolynomial.accumulate(coffs, this.SS, ayy);
234700
+ PowerPolynomial.accumulate(coffs, this.CC, axx);
234701
+ PowerPolynomial.accumulate(coffs, this.SC, axy);
234680
234702
  degree = 4;
234681
234703
  }
234682
234704
  else {
234683
- PowerPolynomial.accumulate(Coffs, this.C, ax);
234684
- PowerPolynomial.accumulate(Coffs, this.S, ay);
234685
- PowerPolynomial.accumulate(Coffs, this.W, a1);
234705
+ PowerPolynomial.accumulate(coffs, this.C, ax);
234706
+ PowerPolynomial.accumulate(coffs, this.S, ay);
234707
+ PowerPolynomial.accumulate(coffs, this.W, a);
234686
234708
  degree = 2;
234687
234709
  }
234688
- let maxCoff = 0.0;
234689
- maxCoff = Math.max(maxCoff, Math.abs(axx), Math.abs(ayy), Math.abs(axy), Math.abs(ax), Math.abs(ay), Math.abs(a1));
234690
- const b = this.solveAngles(Coffs, degree, maxCoff, radians);
234710
+ const maxCoff = Math.max(Math.abs(axx), Math.abs(ayy), Math.abs(axy), Math.abs(ax), Math.abs(ay), Math.abs(a));
234711
+ const b = this.solveAngles(coffs, degree, maxCoff, radians);
234691
234712
  /*
234692
234713
  for (const theta of angles) {
234693
234714
  const c = theta.cos();
234694
234715
  const s = theta.sin();
234695
234716
  GeometryCoreTestIO.consoleLog({
234696
234717
  angle: theta, co: c, si: s,
234697
- f: axx * c * c + axy * c * s + ayy * s * s + ax * c + ay * s + a1});
234698
- } */
234718
+ f: axx * c * c + axy * c * s + ayy * s * s + ax * c + ay * s + a,
234719
+ });
234720
+ } */
234699
234721
  return b;
234700
234722
  }
234701
234723
  /**
@@ -234730,7 +234752,7 @@ class TrigPolynomial {
234730
234752
  return status;
234731
234753
  }
234732
234754
  /**
234733
- * Compute intersections of unit circle `x^2 + y^2 = w^2` with the ellipse
234755
+ * Compute intersections of unit circle `x^2 + y^2 = w^2` (in homogeneous coordinates) with the ellipse
234734
234756
  * `F(t) = (cx + ux cos(t) + vx sin(t), cy + uy cos(t) + vy sin(t)) / (cw + uw cos(t) + vw sin(t))`.
234735
234757
  * @param cx center x
234736
234758
  * @param cy center y
@@ -234746,13 +234768,15 @@ class TrigPolynomial {
234746
234768
  */
234747
234769
  static solveUnitCircleHomogeneousEllipseIntersection(cx, cy, cw, ux, uy, uw, vx, vy, vw, ellipseRadians, circleRadians) {
234748
234770
  circleRadians.length = 0;
234771
+ // see itwinjs-core\core\geometry\internaldocs\unitCircleEllipseIntersection.md
234772
+ // on how below variables are derived.
234749
234773
  const acc = ux * ux + uy * uy - uw * uw;
234750
234774
  const acs = 2.0 * (ux * vx + uy * vy - uw * vw);
234751
234775
  const ass = vx * vx + vy * vy - vw * vw;
234752
234776
  const ac = 2.0 * (ux * cx + uy * cy - uw * cw);
234753
- const asi = 2.0 * (vx * cx + vy * cy - vw * cw);
234777
+ const as = 2.0 * (vx * cx + vy * cy - vw * cw);
234754
234778
  const a = cx * cx + cy * cy - cw * cw;
234755
- const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac, asi, a, ellipseRadians);
234779
+ const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac, as, a, ellipseRadians);
234756
234780
  for (const radians of ellipseRadians) {
234757
234781
  const cc = Math.cos(radians);
234758
234782
  const ss = Math.sin(radians);
@@ -234765,25 +234789,27 @@ class TrigPolynomial {
234765
234789
  }
234766
234790
  // tolerance for small angle decision.
234767
234791
  TrigPolynomial._smallAngle = 1.0e-11;
234768
- /** Standard Basis coefficients for rational sine numerator. */
234792
+ // see itwinjs-core\core\geometry\internaldocs\unitCircleEllipseIntersection.md
234793
+ // on how below variables are derived.
234794
+ /** Standard Basis coefficients for the numerator of the y-coordinate y(t) = S(t)/W(t) in the rational semicircle parameterization. */
234769
234795
  TrigPolynomial.S = Float64Array.from([0.0, 2.0, -2.0]);
234770
- /** Standard Basis coefficients for rational cosine numerator. */
234796
+ /** Standard Basis coefficients for the numerator of the x-coordinate x(t) = C(t)/W(t) in the rational semicircle parameterization. */
234771
234797
  TrigPolynomial.C = Float64Array.from([1.0, -2.0]);
234772
- /** Standard Basis coefficients for rational denominator. */
234798
+ /** Standard Basis coefficients for the denominator of x(t) and y(t) in the rational semicircle parameterization. */
234773
234799
  TrigPolynomial.W = Float64Array.from([1.0, -2.0, 2.0]);
234774
- /** Standard Basis coefficients for cosine*weight numerator */
234800
+ /** Standard Basis coefficients for C(t) * W(t). */
234775
234801
  TrigPolynomial.CW = Float64Array.from([1.0, -4.0, 6.0, -4.0]);
234776
- /** Standard Basis coefficients for sine*weight numerator */
234802
+ /** Standard Basis coefficients for S(t) * W(t). */
234777
234803
  TrigPolynomial.SW = Float64Array.from([0.0, 2.0, -6.0, 8.0, -4.0]);
234778
- /** Standard Basis coefficients for sine*cosine numerator */
234804
+ /** Standard Basis coefficients for S(t) * C(t). */
234779
234805
  TrigPolynomial.SC = Float64Array.from([0.0, 2.0, -6.0, 4.0]);
234780
- /** Standard Basis coefficients for sine^2 numerator */
234806
+ /** Standard Basis coefficients for S(t) * S(t). */
234781
234807
  TrigPolynomial.SS = Float64Array.from([0.0, 0.0, 4.0, -8.0, 4.0]);
234782
- /** Standard Basis coefficients for cosine^2 numerator */
234808
+ /** Standard Basis coefficients for C(t) * C(t). */
234783
234809
  TrigPolynomial.CC = Float64Array.from([1.0, -4.0, 4.0]);
234784
- /** Standard Basis coefficients for weight^2 */
234810
+ /** Standard Basis coefficients for W(t) * W(t). */
234785
234811
  TrigPolynomial.WW = Float64Array.from([1.0, -4.0, 8.0, -8.0, 4.0]);
234786
- /** Standard Basis coefficients for (Math.Cos^2 - sine^2) numerator */
234812
+ /** Standard Basis coefficients for C(t) * C(t) - S(t) * S(t). */
234787
234813
  TrigPolynomial.CCminusSS = Float64Array.from([1.0, -4.0, 0.0, 8.0, -4.0]);
234788
234814
  TrigPolynomial._coefficientRelTol = 1.0e-12;
234789
234815
  /**
@@ -285678,7 +285704,7 @@ class BaseFormat {
285678
285704
  set azimuthBaseUnit(azimuthBaseUnit) { this._azimuthBaseUnit = azimuthBaseUnit; }
285679
285705
  get azimuthCounterClockwise() { return this._azimuthCounterClockwise; }
285680
285706
  set azimuthCounterClockwise(azimuthCounterClockwise) { this._azimuthCounterClockwise = azimuthCounterClockwise; }
285681
- get azimuthCounterClockwiseOrDefault() { return this._azimuthCounterClockwise ?? false; }
285707
+ get azimuthClockwiseOrDefault() { return !this._azimuthCounterClockwise; }
285682
285708
  get revolutionUnit() { return this._revolutionUnit; }
285683
285709
  set revolutionUnit(revolutionUnit) { this._revolutionUnit = revolutionUnit; }
285684
285710
  /** This method parses input string that is typically extracted for persisted JSON data and validates that the string is a valid FormatType. Throws exception if not valid. */
@@ -286798,35 +286824,35 @@ class Formatter {
286798
286824
  }
286799
286825
  let prefix, suffix;
286800
286826
  // Quadrants are
286801
- // 1 0
286802
- // 2 3
286803
- // For quadrants 0 and 2 we have to subtract the angle from quarterRevolution degrees because they go clockwise
286804
- if (quadrant === 0 || quadrant === 2)
286827
+ // 3 0
286828
+ // 2 1
286829
+ // For quadrants 1 and 3 we have to subtract the angle from quarterRevolution degrees because they go counter-clockwise
286830
+ if (quadrant === 1 || quadrant === 3)
286805
286831
  magnitude = quarterRevolution - magnitude;
286806
286832
  // TODO: at some point we will want to open this for localization, in the first release it's going to be hard coded
286807
- if (quadrant === 0 || quadrant === 1)
286833
+ if (quadrant === 0 || quadrant === 3)
286808
286834
  prefix = "N";
286809
- if (quadrant === 2 || quadrant === 3)
286835
+ if (quadrant === 2 || quadrant === 1)
286810
286836
  prefix = "S";
286811
- if (quadrant === 0 || quadrant === 3)
286837
+ if (quadrant === 0 || quadrant === 1)
286812
286838
  suffix = "E";
286813
- if (quadrant === 1 || quadrant === 2)
286839
+ if (quadrant === 3 || quadrant === 2)
286814
286840
  suffix = "W";
286815
- // special case, if in quadrant 2 and value is very small, turn suffix to E because S00:00:00E is preferred over S00:00:00W
286841
+ // special case, if in quadrant 2 and value is very close to quarter revolution (90°), turn prefix to N because N90:00:00W is preferred over S90:00:00W
286816
286842
  if (quadrant === 2 && spec.unitConversions.length > 0) {
286817
286843
  // To determine if value is small, we need to convert it to the smallest unit presented and use the provided precision on it
286818
286844
  const unitConversion = spec.unitConversions[spec.unitConversions.length - 1].conversion;
286819
- const smallestFormattedValue = (0,_Quantity__WEBPACK_IMPORTED_MODULE_3__.applyConversion)(magnitude, unitConversion) + this.FPV_MINTHRESHOLD;
286845
+ const smallestFormattedDelta = (0,_Quantity__WEBPACK_IMPORTED_MODULE_3__.applyConversion)((quarterRevolution - magnitude), unitConversion) + this.FPV_MINTHRESHOLD;
286820
286846
  const precisionScale = Math.pow(10.0, spec.format.precision);
286821
- const floor = Math.floor((smallestFormattedValue) * precisionScale + FPV_ROUNDFACTOR) / precisionScale;
286847
+ const floor = Math.floor((smallestFormattedDelta) * precisionScale + FPV_ROUNDFACTOR) / precisionScale;
286822
286848
  if (floor === 0) {
286823
- suffix = "E";
286849
+ prefix = "N";
286824
286850
  }
286825
286851
  }
286826
286852
  return { magnitude, prefix, suffix: suffix };
286827
286853
  }
286828
286854
  if (type === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Azimuth) {
286829
- let azimuthBase = quarterRevolution; // default base is North
286855
+ let azimuthBase = 0; // default base is North
286830
286856
  if (spec.format.azimuthBase !== undefined) {
286831
286857
  if (spec.azimuthBaseConversion === undefined) {
286832
286858
  throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.MissingRequiredProperty, `Missing azimuth base conversion for interpreting ${spec.name}'s azimuth base.`);
@@ -286838,13 +286864,13 @@ class Formatter {
286838
286864
  }
286839
286865
  azimuthBase = this.normalizeAngle(azBaseConverted.magnitude, revolution);
286840
286866
  }
286841
- if (azimuthBase === quarterRevolution && spec.format.azimuthCounterClockwiseOrDefault)
286842
- return { magnitude }; // no conversion necessary, the input is already using the result parameters (east base and counter clockwise)
286867
+ if (azimuthBase === 0.0 && spec.format.azimuthClockwiseOrDefault)
286868
+ return { magnitude }; // no conversion necessary, the input is already using the result parameters (north base and clockwise)
286843
286869
  // subtract the base from the actual value
286844
286870
  magnitude -= azimuthBase;
286845
- if (spec.format.azimuthCounterClockwiseOrDefault)
286871
+ if (spec.format.azimuthClockwiseOrDefault)
286846
286872
  return { magnitude: this.normalizeAngle(magnitude, revolution) };
286847
- // turn it into a clockwise angle
286873
+ // turn it into a counter-clockwise angle
286848
286874
  magnitude = revolution - magnitude;
286849
286875
  // normalize the result as it may have become negative or exceed the revolution
286850
286876
  magnitude = this.normalizeAngle(magnitude, revolution);
@@ -287761,18 +287787,15 @@ class Parser {
287761
287787
  // we have to turn the value into an east base and counter clockwise (NW and SE are already counter clockwise)
287762
287788
  if (matchedPrefix === DirectionLabel.North) {
287763
287789
  if (matchedSuffix === DirectionLabel.West) {
287764
- magnitude = quarterRevolution + magnitude;
287765
- }
287766
- else if (matchedSuffix === DirectionLabel.East) {
287767
- magnitude = quarterRevolution - magnitude;
287790
+ magnitude = revolution - magnitude;
287768
287791
  }
287769
287792
  }
287770
287793
  else if (matchedPrefix === DirectionLabel.South) {
287771
287794
  if (matchedSuffix === DirectionLabel.West) {
287772
- magnitude = (3 * quarterRevolution) - magnitude;
287795
+ magnitude = (2 * quarterRevolution) + magnitude;
287773
287796
  }
287774
287797
  else if (matchedSuffix === DirectionLabel.East) {
287775
- magnitude = (3 * quarterRevolution) + magnitude;
287798
+ magnitude = (2 * quarterRevolution) - magnitude;
287776
287799
  }
287777
287800
  }
287778
287801
  return { ok: true, value: magnitude };
@@ -287785,8 +287808,7 @@ class Parser {
287785
287808
  let magnitude = parsedResult.value;
287786
287809
  const revolution = this.getRevolution(spec);
287787
287810
  magnitude = this.normalizeAngle(magnitude, revolution);
287788
- const quarterRevolution = revolution / 4;
287789
- let azimuthBase = quarterRevolution;
287811
+ let azimuthBase = 0.0;
287790
287812
  if (spec.format.azimuthBase !== undefined) {
287791
287813
  if (spec.azimuthBaseConversion === undefined) {
287792
287814
  throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.MissingRequiredProperty, `Missing azimuth base conversion for interpreting ${spec.format.name}'s azimuth base.`);
@@ -287798,12 +287820,12 @@ class Parser {
287798
287820
  }
287799
287821
  azimuthBase = this.normalizeAngle(azBaseConverted.magnitude, revolution);
287800
287822
  }
287801
- const azimuthCounterClockwise = spec.format.azimuthCounterClockwiseOrDefault;
287802
- if (azimuthCounterClockwise && azimuthBase === 0) {
287823
+ const inputIsClockwise = spec.format.azimuthClockwiseOrDefault;
287824
+ if (inputIsClockwise && azimuthBase === 0) {
287803
287825
  // parsed result already has the same base and orientation as our desired output
287804
287826
  return parsedResult;
287805
287827
  }
287806
- if (azimuthCounterClockwise)
287828
+ if (inputIsClockwise)
287807
287829
  magnitude = azimuthBase + magnitude;
287808
287830
  else
287809
287831
  magnitude = azimuthBase - magnitude;
@@ -303251,7 +303273,7 @@ var loadLanguages = instance.loadLanguages;
303251
303273
  /***/ ((module) => {
303252
303274
 
303253
303275
  "use strict";
303254
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.10.0-dev.11","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 ES2020 --outDir lib/esm","clean":"rimraf 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 --includes=../../generated-docs/extract --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 -f visualstudio \\"./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 -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","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:^4.10.0-dev.11","@itwin/core-bentley":"workspace:^4.10.0-dev.11","@itwin/core-common":"workspace:^4.10.0-dev.11","@itwin/core-geometry":"workspace:^4.10.0-dev.11","@itwin/core-orbitgt":"workspace:^4.10.0-dev.11","@itwin/core-quantity":"workspace:^4.10.0-dev.11"},"//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/certa":"workspace:*","@itwin/eslint-plugin":"^4.0.2","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^10.0.6","@types/sinon":"^17.0.2","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.3.10","chai-as-promised":"^7.1.1","cpx2":"^3.0.0","eslint":"^8.56.0","glob":"^10.3.12","mocha":"^10.2.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^17.0.2","source-map-loader":"^4.0.0","typescript":"~5.3.3","typemoq":"^2.1.0","webpack":"^5.76.0"},"//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.2.5","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","meshoptimizer":"~0.20.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
303276
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"4.10.0-dev.14","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf 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 --includes=../../generated-docs/extract --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 -f visualstudio \\"./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 -s webpackTests && certa -r chrome","cover":"npm -s test","test:debug":"certa -r chrome --debug","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:^4.10.0-dev.14","@itwin/core-bentley":"workspace:^4.10.0-dev.14","@itwin/core-common":"workspace:^4.10.0-dev.14","@itwin/core-geometry":"workspace:^4.10.0-dev.14","@itwin/core-orbitgt":"workspace:^4.10.0-dev.14","@itwin/core-quantity":"workspace:^4.10.0-dev.14"},"//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/certa":"workspace:*","@itwin/eslint-plugin":"^4.0.2","@types/chai":"4.3.1","@types/chai-as-promised":"^7","@types/mocha":"^10.0.6","@types/sinon":"^17.0.2","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","chai":"^4.3.10","chai-as-promised":"^7.1.1","cpx2":"^3.0.0","eslint":"^8.56.0","glob":"^10.3.12","mocha":"^10.2.0","nyc":"^15.1.0","rimraf":"^3.0.2","sinon":"^17.0.2","source-map-loader":"^4.0.0","typescript":"~5.3.3","typemoq":"^2.1.0","webpack":"^5.76.0"},"//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.2.5","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","meshoptimizer":"~0.20.0","wms-capabilities":"0.4.0"},"nyc":{"extends":"./node_modules/@itwin/build-tools/.nycrc"}}');
303255
303277
 
303256
303278
  /***/ })
303257
303279