@itwin/rpcinterface-full-stack-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.
@@ -80593,6 +80593,7 @@ class AccuSnap {
80593
80593
  snapDivisor: keypointDivisor,
80594
80594
  subCategoryId: thisHit.subCategoryId,
80595
80595
  geometryClass: thisHit.geometryClass,
80596
+ modelToWorld: thisHit.transformFromSourceIModel?.toJSON(),
80596
80597
  };
80597
80598
  const thisGeom = (thisHit.isElementHit ? _IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.viewManager.overrideElementGeometry(thisHit) : _IModelApp__WEBPACK_IMPORTED_MODULE_4__.IModelApp.viewManager.getDecorationGeometry(thisHit));
80598
80599
  if (undefined !== thisGeom) {
@@ -80642,12 +80643,15 @@ class AccuSnap {
80642
80643
  const parsed = undefined !== json ? _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.IModelJson.Reader.parse(json) : undefined;
80643
80644
  return parsed instanceof _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.GeometryQuery && "curvePrimitive" === parsed.geometryCategory ? parsed : undefined;
80644
80645
  };
80646
+ let displayTransform;
80647
+ if (undefined !== thisHit.modelId) {
80648
+ displayTransform = thisHit.viewport.view.computeDisplayTransform({
80649
+ modelId: thisHit.modelId,
80650
+ elementId: thisHit.sourceId,
80651
+ viewAttachmentId: thisHit.viewAttachment?.id,
80652
+ });
80653
+ }
80645
80654
  const snapPoint = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Point3d.fromJSON(result.snapPoint);
80646
- const displayTransform = undefined !== thisHit.modelId ? thisHit.viewport.view.computeDisplayTransform({
80647
- modelId: thisHit.modelId,
80648
- elementId: thisHit.sourceId,
80649
- viewAttachmentId: thisHit.viewAttachment?.id,
80650
- }) : undefined;
80651
80655
  displayTransform?.multiplyPoint3d(snapPoint, snapPoint);
80652
80656
  const snap = new _HitDetail__WEBPACK_IMPORTED_MODULE_3__.SnapDetail(thisHit, result.snapMode, result.heat, snapPoint);
80653
80657
  snap.setCurvePrimitive(parseCurve(result.curve), displayTransform, result.geomType);
@@ -87274,6 +87278,8 @@ class HitDetail {
87274
87278
  * @internal
87275
87279
  */
87276
87280
  get sourceIModel() { return this._props.sourceIModel; }
87281
+ /** @internal */
87282
+ get transformFromSourceIModel() { return this._props.transformFromSourceIModel; }
87277
87283
  /** @internal chiefly for debugging */
87278
87284
  get tileId() { return this._props.tileId; }
87279
87285
  /** True if the hit originated from a reality model classifier.
@@ -87322,6 +87328,7 @@ class HitDetail {
87322
87328
  geometryClass: arg0.geometryClass,
87323
87329
  modelId: arg0.modelId,
87324
87330
  sourceIModel: arg0.sourceIModel,
87331
+ transformFromSourceIModel: arg0.transformFromSourceIModel,
87325
87332
  tileId: arg0.tileId,
87326
87333
  isClassifier: arg0.isClassifier,
87327
87334
  viewAttachment: arg0.viewAttachment,
@@ -93377,7 +93384,6 @@ class SheetViewState extends _ViewState__WEBPACK_IMPORTED_MODULE_12__.ViewState2
93377
93384
  context.setViewBackground(border);
93378
93385
  }
93379
93386
  }
93380
- /** @internal */
93381
93387
  computeFitRange() {
93382
93388
  const size = this.sheetSize;
93383
93389
  if (0 >= size.x || 0 >= size.y)
@@ -115032,6 +115038,7 @@ var Pixel;
115032
115038
  this.iModel = args?.iModel;
115033
115039
  this.tileId = args?.tileId;
115034
115040
  this.viewAttachmentId = args?.viewAttachmentId;
115041
+ this.transformFromIModel = args?.transformFromIModel;
115035
115042
  }
115036
115043
  /** The Id of the element that produced the pixel. */
115037
115044
  get elementId() {
@@ -115080,6 +115087,7 @@ var Pixel;
115080
115087
  tileId: this.tileId,
115081
115088
  isClassifier: this.isClassifier,
115082
115089
  sourceIModel: this.iModel,
115090
+ transformFromSourceIModel: this.transformFromIModel,
115083
115091
  viewAttachment,
115084
115092
  };
115085
115093
  }
@@ -118168,6 +118176,7 @@ class BranchState {
118168
118176
  get textureDrape() { return this._opts.textureDrape; }
118169
118177
  get edgeSettings() { return this._opts.edgeSettings; }
118170
118178
  get iModel() { return this._opts.iModel; }
118179
+ get transformFromIModel() { return this._opts.transformFromIModel; }
118171
118180
  get is3d() { return this._opts.is3d; }
118172
118181
  get frustumScale() { return this._opts.frustumScale; }
118173
118182
  get appearanceProvider() { return this._opts.appearanceProvider; }
@@ -118193,6 +118202,7 @@ class BranchState {
118193
118202
  transform: prev.transform.multiplyTransformTransform(branch.localToWorldTransform),
118194
118203
  symbologyOverrides: branch.branch.symbologyOverrides ?? prev.symbologyOverrides,
118195
118204
  iModel: branch.iModel ?? prev.iModel,
118205
+ transformFromIModel: branch.transformFromExternalIModel ?? prev.transformFromIModel,
118196
118206
  planarClassifier: (undefined !== branch.planarClassifier && undefined !== branch.planarClassifier.texture) ? branch.planarClassifier : prev.planarClassifier,
118197
118207
  textureDrape: branch.textureDrape ?? prev.textureDrape,
118198
118208
  clipVolume: branch.clips,
@@ -122563,15 +122573,18 @@ class Batch extends Graphic {
122563
122573
  /** The following are valid only during a draw and reset afterward. */
122564
122574
  get batchId() { return this._context.batchId; }
122565
122575
  get batchIModel() { return this._context.iModel; }
122576
+ get transformFromBatchIModel() { return this._context.transformFromIModel; }
122566
122577
  get viewAttachmentId() { return this._context.viewAttachmentId; }
122567
122578
  setContext(batchId, branch) {
122568
122579
  this._context.batchId = batchId;
122569
122580
  this._context.iModel = branch.iModel;
122581
+ this._context.transformFromIModel = branch.transformFromIModel;
122570
122582
  this._context.viewAttachmentId = branch.viewAttachmentId;
122571
122583
  }
122572
122584
  resetContext() {
122573
122585
  this._context.batchId = 0;
122574
122586
  this._context.iModel = undefined;
122587
+ this._context.transformFromIModel = undefined;
122575
122588
  this._context.viewAttachmentId = undefined;
122576
122589
  }
122577
122590
  constructor(graphic, features, range, options) {
@@ -122636,6 +122649,7 @@ class Branch extends Graphic {
122636
122649
  this.iModel = opts.iModel;
122637
122650
  this.frustum = opts.frustum;
122638
122651
  this.viewAttachmentId = opts.viewAttachmentId;
122652
+ this.transformFromExternalIModel = opts.transformFromIModel;
122639
122653
  if (opts.hline)
122640
122654
  this.edgeSettings = _EdgeSettings__WEBPACK_IMPORTED_MODULE_6__.EdgeSettings.create(opts.hline);
122641
122655
  if (opts.classifierOrDrape instanceof _PlanarClassifier__WEBPACK_IMPORTED_MODULE_8__.PlanarClassifier)
@@ -128414,8 +128428,15 @@ class PixelBuffer {
128414
128428
  const featureId = this.getFeatureId(pixelIndex);
128415
128429
  if (undefined !== featureId) {
128416
128430
  const batch = this._batchState.find(featureId);
128417
- if (undefined !== batch)
128418
- return { featureTable: batch.featureTable, iModel: batch.batchIModel, tileId: batch.tileId, viewAttachmentId: batch.viewAttachmentId };
128431
+ if (undefined !== batch) {
128432
+ return {
128433
+ featureTable: batch.featureTable,
128434
+ iModel: batch.batchIModel,
128435
+ transformFromIModel: batch.transformFromBatchIModel,
128436
+ tileId: batch.tileId,
128437
+ viewAttachmentId: batch.viewAttachmentId,
128438
+ };
128439
+ }
128419
128440
  }
128420
128441
  return undefined;
128421
128442
  }
@@ -128485,10 +128506,11 @@ class PixelBuffer {
128485
128506
  }
128486
128507
  }
128487
128508
  }
128488
- let featureTable, iModel, tileId, viewAttachmentId;
128509
+ let featureTable, iModel, transformToIModel, tileId, viewAttachmentId;
128489
128510
  if (undefined !== batchInfo) {
128490
128511
  featureTable = batchInfo.featureTable;
128491
128512
  iModel = batchInfo.iModel;
128513
+ transformToIModel = batchInfo.transformFromIModel;
128492
128514
  tileId = batchInfo.tileId;
128493
128515
  viewAttachmentId = batchInfo.viewAttachmentId;
128494
128516
  }
@@ -128499,6 +128521,7 @@ class PixelBuffer {
128499
128521
  planarity,
128500
128522
  batchType: featureTable?.type,
128501
128523
  iModel,
128524
+ transformFromIModel: transformToIModel,
128502
128525
  tileId,
128503
128526
  viewAttachmentId,
128504
128527
  });
@@ -156275,6 +156298,7 @@ class TileDrawArgs {
156275
156298
  this.groupNodeId = params.groupNodeId;
156276
156299
  this.boundingRange = params.boundingRange;
156277
156300
  this.maximumScreenSpaceError = params.maximumScreenSpaceError ?? 16; // 16 is Cesium's default.
156301
+ this.transformFromIModel = params.transformFromIModel;
156278
156302
  // Do not cull tiles based on clip volume if tiles outside clip are supposed to be drawn but in a different color.
156279
156303
  if (undefined !== clipVolume && !context.viewport.view.displayStyle.settings.clipStyle.outsideColor)
156280
156304
  this.clipVolume = clipVolume;
@@ -156342,6 +156366,7 @@ class TileDrawArgs {
156342
156366
  return undefined;
156343
156367
  const opts = {
156344
156368
  iModel: this.tree.iModel,
156369
+ transformFromIModel: this.transformFromIModel,
156345
156370
  clipVolume: this.clipVolume,
156346
156371
  classifierOrDrape: this.planarClassifier ?? this.drape,
156347
156372
  appearanceProvider: this.appearanceProvider,
@@ -157597,8 +157622,11 @@ class TileTreeReference /* implements RenderMemory.Consumer */ {
157597
157622
  hiddenLineSettings: this.getHiddenLineSettings(tree),
157598
157623
  animationTransformNodeId: this.getAnimationTransformNodeId(tree),
157599
157624
  groupNodeId: this.getGroupNodeId(tree),
157625
+ transformFromIModel: this.getTransformFromIModel(),
157600
157626
  });
157601
157627
  }
157628
+ /** @beta */
157629
+ getTransformFromIModel() { return undefined; }
157602
157630
  /** @internal */
157603
157631
  getAnimationTransformNodeId(_tree) {
157604
157632
  return undefined;
@@ -194305,7 +194333,12 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
194305
194333
  const otherVector0 = this._matrix.multiplyInverse(other.vector0);
194306
194334
  const otherVector90 = this._matrix.multiplyInverse(other.vector90);
194307
194335
  if (otherOrigin && otherVector0 && otherVector90) {
194308
- return { center: otherOrigin, vector0: otherVector0, vector90: otherVector90, sweep: this.sweep.clone() };
194336
+ return {
194337
+ center: otherOrigin,
194338
+ vector0: otherVector0,
194339
+ vector90: otherVector90,
194340
+ sweep: this.sweep.clone(),
194341
+ };
194309
194342
  }
194310
194343
  return undefined;
194311
194344
  }
@@ -206810,7 +206843,7 @@ class CurveCurveIntersectXY extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
206810
206843
  */
206811
206844
  dispatchArcArcThisOrder(cpA, // arc closer to being circular
206812
206845
  matrixA, extendA0, extendA1, cpB, matrixB, extendB0, extendB1, reversed) {
206813
- // inverseA transforms arcA to its local coordinates, where it is the unit xy-circle.
206846
+ // inverseA transforms arcA to its local coordinates, where it is the unit xy-circle
206814
206847
  const inverseA = matrixA.inverse();
206815
206848
  if (inverseA) {
206816
206849
  // localB defines the arc formed by transforming arcB into the local coordinates of arcA
@@ -221085,7 +221118,8 @@ class Matrix3d {
221085
221118
  static createColumns(vectorU, vectorV, vectorW, result) {
221086
221119
  return Matrix3d.createRowValues(vectorU.x, vectorV.x, vectorW.x, vectorU.y, vectorV.y, vectorW.y, vectorU.z, vectorV.z, vectorW.z, result);
221087
221120
  }
221088
- /** Create a matrix with each column's _x,y_ parts given `XAndY` and separate numeric z values.
221121
+ /**
221122
+ * Create a matrix with each column's _x,y_ parts given `XAndY` and separate numeric z values.
221089
221123
  * ```
221090
221124
  * equation
221091
221125
  * \begin{bmatrix}U_x & V_x & W_x \\ U_y & V_y & W_y \\ u & v & w \end{bmatrix}
@@ -225346,7 +225380,7 @@ class XYZ {
225346
225380
  return defaultValue;
225347
225381
  }
225348
225382
  /**
225349
- * Look for (in order) an x coordinate present as:
225383
+ * Look for (in order) a y coordinate present as:
225350
225384
  * * arg.y
225351
225385
  * * arg[1]
225352
225386
  */
@@ -225358,7 +225392,7 @@ class XYZ {
225358
225392
  return defaultValue;
225359
225393
  }
225360
225394
  /**
225361
- * Look for (in order) an x coordinate present as:
225395
+ * Look for (in order) a z coordinate present as:
225362
225396
  * * arg.z
225363
225397
  * * arg[2]
225364
225398
  */
@@ -226281,8 +226315,8 @@ class Vector3d extends XYZ {
226281
226315
  * the plane of this vector and the target vector.
226282
226316
  * @param target Second vector which defines the plane of rotation.
226283
226317
  * @param result optional preallocated vector for result.
226284
- * @returns rotated vector, or undefined if the cross product of this and
226285
- * the the target cannot be normalized (i.e. if the target and this are colinear)
226318
+ * @returns rotated vector, or undefined if the cross product of this and the target
226319
+ * cannot be normalized (i.e. if the target and this are colinear).
226286
226320
  */
226287
226321
  rotate90Towards(target, result) {
226288
226322
  const normal = this.crossProduct(target).normalize();
@@ -226418,7 +226452,8 @@ class Vector3d extends XYZ {
226418
226452
  return this.crossProduct(vectorB, result).normalize(result);
226419
226453
  }
226420
226454
  /**
226421
- * Compute the cross product of this vector with `vectorB`. Normalize it, using given xyz as default if length is zero.
226455
+ * Compute the cross product of this vector with `vectorB` and normalize it.
226456
+ * * If length is zero, return the vector given by x, y, z.
226422
226457
  * @param vectorB second vector of cross product
226423
226458
  * @param x x value for default result
226424
226459
  * @param y y value for default result
@@ -240452,49 +240487,45 @@ class AnalyticRoots {
240452
240487
  // this.appendCubicRootsUnsorted(c, results);
240453
240488
  results.sort();
240454
240489
  }
240455
- /** Compute roots of quartic 'c[0] + c[1] * x + c[2] * x^2 + c[3] * x^3 + c[4] * x^4 */
240490
+ /** Compute roots of quartic `c[0] + c[1] * x + c[2] * x^2 + c[3] * x^3 + c[4] * x^4` */
240456
240491
  static appendQuarticRoots(c, results) {
240457
- const coffs = new Float64Array(4); // at various times .. coefficients of quadratic an cubic intermediates.
240492
+ const coffs = new Float64Array(4);
240458
240493
  let u;
240459
240494
  let v;
240460
- // normal form: x^4 + Ax^3 + Bx^2 + Cx + D = 0
240461
240495
  const coffScale = new Float64Array(1);
240462
240496
  if (!this.safeDivide(coffScale, 1.0, c[4], 0.0, 0)) {
240463
240497
  this.appendCubicRoots(c, results);
240464
240498
  return;
240465
240499
  }
240500
+ // normal form: x^4 + Ax^3 + Bx^2 + Cx + D = 0
240466
240501
  const A = c[3] * coffScale[0];
240467
240502
  const B = c[2] * coffScale[0];
240468
240503
  const C = c[1] * coffScale[0];
240469
240504
  const D = c[0] * coffScale[0];
240470
240505
  const origin = -0.25 * A;
240471
- /* substitute x = y - A/4 to eliminate cubic term:
240472
- x^4 + px^2 + qx + r = 0 */
240506
+ // substitute x = y - A/4 to eliminate cubic term: y^4 + py^2 + qy + r = 0
240473
240507
  const sq_A = A * A;
240474
- const p = -3.0 / 8 * sq_A + B;
240508
+ const p = -0.375 * sq_A + B;
240475
240509
  const q = 0.125 * sq_A * A - 0.5 * A * B + C;
240476
- const r = -3.0 / 256 * sq_A * sq_A + 1.0 / 16 * sq_A * B - 1.0 / 4 * A * C + D;
240477
- const tempStack = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array();
240478
- if (this.isZero(r)) {
240479
- // no absolute term: y(y^3 + py + q) = 0
240510
+ const r = -0.01171875 * sq_A * sq_A + 0.0625 * sq_A * B - 0.25 * A * C + D;
240511
+ const cubicSolutions = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array();
240512
+ if (this.isZero(r)) { // no absolute term: y(y^3 + py + q) = 0
240480
240513
  coffs[0] = q;
240481
240514
  coffs[1] = p;
240482
240515
  coffs[2] = 0;
240483
240516
  coffs[3] = 1;
240484
240517
  this.appendCubicRoots(coffs, results);
240485
- results.push(0); // APPLY ORIGIN ....
240486
- this.addConstant(origin, results);
240518
+ results.push(0);
240519
+ this.addConstant(origin, results); // apply origin
240487
240520
  return;
240488
240521
  }
240489
- else {
240490
- // Solve the resolvent cubic
240491
- coffs[0] = 1.0 / 2 * r * p - 1.0 / 8 * q * q;
240522
+ else { // solve the resolvent cubic; more info: https://en.wikipedia.org/wiki/Resolvent_cubic#Second_definition
240523
+ coffs[0] = 0.5 * r * p - 0.125 * q * q;
240492
240524
  coffs[1] = -r;
240493
- coffs[2] = -1.0 / 2 * p;
240525
+ coffs[2] = -0.5 * p;
240494
240526
  coffs[3] = 1;
240495
- this.appendCubicRoots(coffs, tempStack);
240496
- const z = this.mostDistantFromMean(tempStack);
240497
- // ... to build two quadric equations
240527
+ this.appendCubicRoots(coffs, cubicSolutions);
240528
+ const z = this.mostDistantFromMean(cubicSolutions);
240498
240529
  u = z * z - r;
240499
240530
  v = 2 * z - p;
240500
240531
  if (this.isSmallRatio(u, r)) {
@@ -240513,11 +240544,9 @@ class AnalyticRoots {
240513
240544
  v = Math.sqrt(v);
240514
240545
  }
240515
240546
  else {
240516
- for (let i = 0; i < tempStack.length; i++) {
240517
- results.push(tempStack.atUncheckedIndex(i));
240518
- }
240519
240547
  return;
240520
240548
  }
240549
+ // the two quadratic equations
240521
240550
  coffs[0] = z - u;
240522
240551
  coffs[1] = ((q < 0) ? (-v) : (v));
240523
240552
  coffs[2] = 1;
@@ -240528,7 +240557,7 @@ class AnalyticRoots {
240528
240557
  this.appendQuadraticRoots(coffs, results);
240529
240558
  }
240530
240559
  // substitute
240531
- this.addConstant(origin, results);
240560
+ this.addConstant(origin, results); // apply origin
240532
240561
  results.sort();
240533
240562
  this.improveRoots(c, 4, results, true);
240534
240563
  return;
@@ -240632,19 +240661,17 @@ class PowerPolynomial {
240632
240661
  return this.degreeKnownEvaluate(coff, degree, x);
240633
240662
  }
240634
240663
  /**
240635
- * * Accumulate Q*scale into P. Both are treated as full degree.
240636
- * * (Expect Address exceptions if P is smaller than Q)
240637
- * * Returns degree of result as determined by comparing trailing coefficients to zero
240664
+ * Accumulate `coffQ*scaleQ` into `coffP`.
240665
+ * * The length of `coffP` must be at least length of `coffQ`.
240666
+ * * Returns degree of result as determined by comparing trailing coefficients to zero.
240638
240667
  */
240639
240668
  static accumulate(coffP, coffQ, scaleQ) {
240640
240669
  let degreeP = coffP.length - 1;
240641
240670
  const degreeQ = coffQ.length - 1;
240642
- for (let i = 0; i <= degreeQ; i++) {
240671
+ for (let i = 0; i <= degreeQ; i++)
240643
240672
  coffP[i] += scaleQ * coffQ[i];
240644
- }
240645
- while (degreeP >= 0 && coffP[degreeP] === 0.0) {
240673
+ while (degreeP >= 0 && coffP[degreeP] === 0.0)
240646
240674
  degreeP--;
240647
- }
240648
240675
  return degreeP;
240649
240676
  }
240650
240677
  /** Zero all coefficients */
@@ -240660,17 +240687,18 @@ class PowerPolynomial {
240660
240687
  */
240661
240688
  class TrigPolynomial {
240662
240689
  /**
240663
- * Solve a polynomial created from trigonometric condition using
240664
- * Trig.S, Trig.C, Trig.W. Solution logic includes inferring angular roots
240665
- * corresponding zero leading coefficients (roots at infinity)
240666
- * @param coff Coefficients
240667
- * @param nominalDegree degree of the polynomial under most complex
240668
- * root case. If there are any zero coefficients up to this degree, a single root
240669
- * "at infinity" is recorded as its corresponding angular parameter at negative pi/2
240670
- * @param referenceCoefficient A number which represents the size of coefficients
240671
- * at various stages of computation. A small fraction of this will be used as a zero
240672
- * tolerance
240673
- * @param radians Roots are placed here
240690
+ * Solve a polynomial created from trigonometric condition using Trig.S, Trig.C, Trig.W.
240691
+ * * Polynomial is of degree 4:
240692
+ * `coff[0] + coff[1] * t + coff[2] * t^2 + coff[3] * t^3 + coff[4] * t^4`
240693
+ * * Solution logic includes inferring angular roots corresponding zero leading coefficients
240694
+ * (roots at infinity).
240695
+ * @param coff coefficients.
240696
+ * @param nominalDegree degree of the polynomial under most complex root case. If there are
240697
+ * any zero coefficients up to this degree, a single root "at infinity" is recorded as its
240698
+ * corresponding angular parameter at negative pi/2.
240699
+ * @param referenceCoefficient a number which represents the size of coefficients at various
240700
+ * stages of computation. A small fraction of this will be used as a zero tolerance
240701
+ * @param radians roots are placed here.
240674
240702
  * @return false if equation is all zeros. This usually means any angle is a solution.
240675
240703
  */
240676
240704
  static solveAngles(coff, nominalDegree, referenceCoefficient, radians) {
@@ -240680,27 +240708,21 @@ class TrigPolynomial {
240680
240708
  const relTol = this._smallAngle;
240681
240709
  for (let i = 0; i <= nominalDegree; i++) {
240682
240710
  a = Math.abs(coff[i]);
240683
- if (a > maxCoff) {
240711
+ if (a > maxCoff)
240684
240712
  maxCoff = a;
240685
- }
240686
240713
  }
240687
240714
  const coffTol = relTol * maxCoff;
240688
240715
  let degree = nominalDegree;
240689
- while (degree > 0 && (Math.abs(coff[degree]) <= coffTol)) {
240716
+ while (degree > 0 && (Math.abs(coff[degree]) <= coffTol))
240690
240717
  degree--;
240691
- }
240692
- // let status = false;
240693
240718
  const roots = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_5__.GrowableFloat64Array();
240694
240719
  if (degree === -1) {
240695
- // Umm. Dunno. Nothing there.
240696
- // status = false;
240720
+ // Umm. Dunno. Nothing there.
240697
240721
  }
240698
240722
  else {
240699
- // status = true;
240700
240723
  if (degree === 0) {
240701
240724
  // p(t) is a nonzero constant
240702
240725
  // No roots, but not degenerate.
240703
- // status = true;
240704
240726
  }
240705
240727
  else if (degree === 1) {
240706
240728
  // p(t) = coff[1] * t + coff[0]
@@ -240716,13 +240738,12 @@ class TrigPolynomial {
240716
240738
  AnalyticRoots.appendQuarticRoots(coff, roots);
240717
240739
  }
240718
240740
  else {
240719
- // TODO: WILL WORK WITH BEZIER SOLVER
240720
- // status = false;
240741
+ // TODO: WORK WITH BEZIER SOLVER
240721
240742
  }
240722
240743
  if (roots.length > 0) {
240723
240744
  // Each solution t represents an angle with
240724
- // Math.Cos(theta)=C(t)/W(t), ,sin(theta)=S(t)/W(t)
240725
- // Division by W has no effect on Atan2 calculations, so we just compute S(t),C(t)
240745
+ // Math.Cos(theta) = C(t)/W(t) and sin(theta) = S(t)/W(t)
240746
+ // Division by W has no effect on atan2 calculations, so we just compute S(t),C(t)
240726
240747
  for (let i = 0; i < roots.length; i++) {
240727
240748
  const ss = PowerPolynomial.evaluate(this.S, roots.atUncheckedIndex(i));
240728
240749
  const cc = PowerPolynomial.evaluate(this.C, roots.atUncheckedIndex(i));
@@ -240731,55 +240752,56 @@ class TrigPolynomial {
240731
240752
  // Each leading zero at the front of the coefficients corresponds to a root at -PI/2.
240732
240753
  // Only make one entry....
240733
240754
  // for (int i = degree; i < nominalDegree; i++)
240734
- if (degree < nominalDegree) {
240755
+ if (degree < nominalDegree)
240735
240756
  radians.push(-0.5 * Math.PI);
240736
- }
240737
240757
  }
240738
240758
  }
240739
240759
  return radians.length > 0;
240740
240760
  }
240741
240761
  /**
240742
240762
  * Compute intersections of unit circle `x^2 + y^2 = 1` with general quadric
240743
- * `axx * x^2 + axy * x * y + ayy * y^2 + ax * x + ay * y + a1 = 0`
240763
+ * `axx * x^2 + axy * x * y + ayy * y^2 + ax * x + ay * y + a = 0`
240744
240764
  * Solutions are returned as angles. Sine and Cosine of the angles are the x, y results.
240745
- * @param axx Coefficient of x^2
240746
- * @param axy Coefficient of xy
240747
- * @param ayy Coefficient of y^2
240748
- * @param ax Coefficient of x
240749
- * @param ay Coefficient of y
240750
- * @param a1 Constant coefficient
240751
- * @param radians solution angles
240752
- */
240753
- static solveUnitCircleImplicitQuadricIntersection(axx, axy, ayy, ax, ay, a1, radians) {
240754
- const Coffs = new Float64Array(5);
240755
- PowerPolynomial.zero(Coffs);
240765
+ * @param axx coefficient of x^2
240766
+ * @param axy coefficient of xy
240767
+ * @param ayy coefficient of y^2
240768
+ * @param ax coefficient of x
240769
+ * @param ay coefficient of y
240770
+ * @param a constant coefficient
240771
+ * @param radians solution angles
240772
+ */
240773
+ static solveUnitCircleImplicitQuadricIntersection(axx, axy, ayy, ax, ay, a, radians) {
240774
+ const coffs = new Float64Array(5);
240775
+ PowerPolynomial.zero(coffs);
240756
240776
  let degree;
240757
- if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(axx, axy, ayy) > TrigPolynomial._coefficientRelTol * _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(ax, ay, a1)) {
240758
- PowerPolynomial.accumulate(Coffs, this.CW, ax);
240759
- PowerPolynomial.accumulate(Coffs, this.SW, ay);
240760
- PowerPolynomial.accumulate(Coffs, this.WW, a1);
240761
- PowerPolynomial.accumulate(Coffs, this.SS, ayy);
240762
- PowerPolynomial.accumulate(Coffs, this.CC, axx);
240763
- PowerPolynomial.accumulate(Coffs, this.SC, axy);
240777
+ // see itwinjs-core\core\geometry\internaldocs\unitCircleEllipseIntersection.md
240778
+ // on how coffs (coefficient array) is built.
240779
+ if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(axx, axy, ayy) > TrigPolynomial._coefficientRelTol * _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.hypotenuseXYZ(ax, ay, a)) {
240780
+ PowerPolynomial.accumulate(coffs, this.CW, ax);
240781
+ PowerPolynomial.accumulate(coffs, this.SW, ay);
240782
+ PowerPolynomial.accumulate(coffs, this.WW, a);
240783
+ PowerPolynomial.accumulate(coffs, this.SS, ayy);
240784
+ PowerPolynomial.accumulate(coffs, this.CC, axx);
240785
+ PowerPolynomial.accumulate(coffs, this.SC, axy);
240764
240786
  degree = 4;
240765
240787
  }
240766
240788
  else {
240767
- PowerPolynomial.accumulate(Coffs, this.C, ax);
240768
- PowerPolynomial.accumulate(Coffs, this.S, ay);
240769
- PowerPolynomial.accumulate(Coffs, this.W, a1);
240789
+ PowerPolynomial.accumulate(coffs, this.C, ax);
240790
+ PowerPolynomial.accumulate(coffs, this.S, ay);
240791
+ PowerPolynomial.accumulate(coffs, this.W, a);
240770
240792
  degree = 2;
240771
240793
  }
240772
- let maxCoff = 0.0;
240773
- maxCoff = Math.max(maxCoff, Math.abs(axx), Math.abs(ayy), Math.abs(axy), Math.abs(ax), Math.abs(ay), Math.abs(a1));
240774
- const b = this.solveAngles(Coffs, degree, maxCoff, radians);
240794
+ const maxCoff = Math.max(Math.abs(axx), Math.abs(ayy), Math.abs(axy), Math.abs(ax), Math.abs(ay), Math.abs(a));
240795
+ const b = this.solveAngles(coffs, degree, maxCoff, radians);
240775
240796
  /*
240776
240797
  for (const theta of angles) {
240777
240798
  const c = theta.cos();
240778
240799
  const s = theta.sin();
240779
240800
  GeometryCoreTestIO.consoleLog({
240780
240801
  angle: theta, co: c, si: s,
240781
- f: axx * c * c + axy * c * s + ayy * s * s + ax * c + ay * s + a1});
240782
- } */
240802
+ f: axx * c * c + axy * c * s + ayy * s * s + ax * c + ay * s + a,
240803
+ });
240804
+ } */
240783
240805
  return b;
240784
240806
  }
240785
240807
  /**
@@ -240814,7 +240836,7 @@ class TrigPolynomial {
240814
240836
  return status;
240815
240837
  }
240816
240838
  /**
240817
- * Compute intersections of unit circle `x^2 + y^2 = w^2` with the ellipse
240839
+ * Compute intersections of unit circle `x^2 + y^2 = w^2` (in homogeneous coordinates) with the ellipse
240818
240840
  * `F(t) = (cx + ux cos(t) + vx sin(t), cy + uy cos(t) + vy sin(t)) / (cw + uw cos(t) + vw sin(t))`.
240819
240841
  * @param cx center x
240820
240842
  * @param cy center y
@@ -240830,13 +240852,15 @@ class TrigPolynomial {
240830
240852
  */
240831
240853
  static solveUnitCircleHomogeneousEllipseIntersection(cx, cy, cw, ux, uy, uw, vx, vy, vw, ellipseRadians, circleRadians) {
240832
240854
  circleRadians.length = 0;
240855
+ // see itwinjs-core\core\geometry\internaldocs\unitCircleEllipseIntersection.md
240856
+ // on how below variables are derived.
240833
240857
  const acc = ux * ux + uy * uy - uw * uw;
240834
240858
  const acs = 2.0 * (ux * vx + uy * vy - uw * vw);
240835
240859
  const ass = vx * vx + vy * vy - vw * vw;
240836
240860
  const ac = 2.0 * (ux * cx + uy * cy - uw * cw);
240837
- const asi = 2.0 * (vx * cx + vy * cy - vw * cw);
240861
+ const as = 2.0 * (vx * cx + vy * cy - vw * cw);
240838
240862
  const a = cx * cx + cy * cy - cw * cw;
240839
- const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac, asi, a, ellipseRadians);
240863
+ const status = this.solveUnitCircleImplicitQuadricIntersection(acc, acs, ass, ac, as, a, ellipseRadians);
240840
240864
  for (const radians of ellipseRadians) {
240841
240865
  const cc = Math.cos(radians);
240842
240866
  const ss = Math.sin(radians);
@@ -240849,25 +240873,27 @@ class TrigPolynomial {
240849
240873
  }
240850
240874
  // tolerance for small angle decision.
240851
240875
  TrigPolynomial._smallAngle = 1.0e-11;
240852
- /** Standard Basis coefficients for rational sine numerator. */
240876
+ // see itwinjs-core\core\geometry\internaldocs\unitCircleEllipseIntersection.md
240877
+ // on how below variables are derived.
240878
+ /** Standard Basis coefficients for the numerator of the y-coordinate y(t) = S(t)/W(t) in the rational semicircle parameterization. */
240853
240879
  TrigPolynomial.S = Float64Array.from([0.0, 2.0, -2.0]);
240854
- /** Standard Basis coefficients for rational cosine numerator. */
240880
+ /** Standard Basis coefficients for the numerator of the x-coordinate x(t) = C(t)/W(t) in the rational semicircle parameterization. */
240855
240881
  TrigPolynomial.C = Float64Array.from([1.0, -2.0]);
240856
- /** Standard Basis coefficients for rational denominator. */
240882
+ /** Standard Basis coefficients for the denominator of x(t) and y(t) in the rational semicircle parameterization. */
240857
240883
  TrigPolynomial.W = Float64Array.from([1.0, -2.0, 2.0]);
240858
- /** Standard Basis coefficients for cosine*weight numerator */
240884
+ /** Standard Basis coefficients for C(t) * W(t). */
240859
240885
  TrigPolynomial.CW = Float64Array.from([1.0, -4.0, 6.0, -4.0]);
240860
- /** Standard Basis coefficients for sine*weight numerator */
240886
+ /** Standard Basis coefficients for S(t) * W(t). */
240861
240887
  TrigPolynomial.SW = Float64Array.from([0.0, 2.0, -6.0, 8.0, -4.0]);
240862
- /** Standard Basis coefficients for sine*cosine numerator */
240888
+ /** Standard Basis coefficients for S(t) * C(t). */
240863
240889
  TrigPolynomial.SC = Float64Array.from([0.0, 2.0, -6.0, 4.0]);
240864
- /** Standard Basis coefficients for sine^2 numerator */
240890
+ /** Standard Basis coefficients for S(t) * S(t). */
240865
240891
  TrigPolynomial.SS = Float64Array.from([0.0, 0.0, 4.0, -8.0, 4.0]);
240866
- /** Standard Basis coefficients for cosine^2 numerator */
240892
+ /** Standard Basis coefficients for C(t) * C(t). */
240867
240893
  TrigPolynomial.CC = Float64Array.from([1.0, -4.0, 4.0]);
240868
- /** Standard Basis coefficients for weight^2 */
240894
+ /** Standard Basis coefficients for W(t) * W(t). */
240869
240895
  TrigPolynomial.WW = Float64Array.from([1.0, -4.0, 8.0, -8.0, 4.0]);
240870
- /** Standard Basis coefficients for (Math.Cos^2 - sine^2) numerator */
240896
+ /** Standard Basis coefficients for C(t) * C(t) - S(t) * S(t). */
240871
240897
  TrigPolynomial.CCminusSS = Float64Array.from([1.0, -4.0, 0.0, 8.0, -4.0]);
240872
240898
  TrigPolynomial._coefficientRelTol = 1.0e-12;
240873
240899
  /**
@@ -291762,7 +291788,7 @@ class BaseFormat {
291762
291788
  set azimuthBaseUnit(azimuthBaseUnit) { this._azimuthBaseUnit = azimuthBaseUnit; }
291763
291789
  get azimuthCounterClockwise() { return this._azimuthCounterClockwise; }
291764
291790
  set azimuthCounterClockwise(azimuthCounterClockwise) { this._azimuthCounterClockwise = azimuthCounterClockwise; }
291765
- get azimuthCounterClockwiseOrDefault() { return this._azimuthCounterClockwise ?? false; }
291791
+ get azimuthClockwiseOrDefault() { return !this._azimuthCounterClockwise; }
291766
291792
  get revolutionUnit() { return this._revolutionUnit; }
291767
291793
  set revolutionUnit(revolutionUnit) { this._revolutionUnit = revolutionUnit; }
291768
291794
  /** 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. */
@@ -292882,35 +292908,35 @@ class Formatter {
292882
292908
  }
292883
292909
  let prefix, suffix;
292884
292910
  // Quadrants are
292885
- // 1 0
292886
- // 2 3
292887
- // For quadrants 0 and 2 we have to subtract the angle from quarterRevolution degrees because they go clockwise
292888
- if (quadrant === 0 || quadrant === 2)
292911
+ // 3 0
292912
+ // 2 1
292913
+ // For quadrants 1 and 3 we have to subtract the angle from quarterRevolution degrees because they go counter-clockwise
292914
+ if (quadrant === 1 || quadrant === 3)
292889
292915
  magnitude = quarterRevolution - magnitude;
292890
292916
  // TODO: at some point we will want to open this for localization, in the first release it's going to be hard coded
292891
- if (quadrant === 0 || quadrant === 1)
292917
+ if (quadrant === 0 || quadrant === 3)
292892
292918
  prefix = "N";
292893
- if (quadrant === 2 || quadrant === 3)
292919
+ if (quadrant === 2 || quadrant === 1)
292894
292920
  prefix = "S";
292895
- if (quadrant === 0 || quadrant === 3)
292921
+ if (quadrant === 0 || quadrant === 1)
292896
292922
  suffix = "E";
292897
- if (quadrant === 1 || quadrant === 2)
292923
+ if (quadrant === 3 || quadrant === 2)
292898
292924
  suffix = "W";
292899
- // 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
292925
+ // 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
292900
292926
  if (quadrant === 2 && spec.unitConversions.length > 0) {
292901
292927
  // To determine if value is small, we need to convert it to the smallest unit presented and use the provided precision on it
292902
292928
  const unitConversion = spec.unitConversions[spec.unitConversions.length - 1].conversion;
292903
- const smallestFormattedValue = (0,_Quantity__WEBPACK_IMPORTED_MODULE_3__.applyConversion)(magnitude, unitConversion) + this.FPV_MINTHRESHOLD;
292929
+ const smallestFormattedDelta = (0,_Quantity__WEBPACK_IMPORTED_MODULE_3__.applyConversion)((quarterRevolution - magnitude), unitConversion) + this.FPV_MINTHRESHOLD;
292904
292930
  const precisionScale = Math.pow(10.0, spec.format.precision);
292905
- const floor = Math.floor((smallestFormattedValue) * precisionScale + FPV_ROUNDFACTOR) / precisionScale;
292931
+ const floor = Math.floor((smallestFormattedDelta) * precisionScale + FPV_ROUNDFACTOR) / precisionScale;
292906
292932
  if (floor === 0) {
292907
- suffix = "E";
292933
+ prefix = "N";
292908
292934
  }
292909
292935
  }
292910
292936
  return { magnitude, prefix, suffix: suffix };
292911
292937
  }
292912
292938
  if (type === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Azimuth) {
292913
- let azimuthBase = quarterRevolution; // default base is North
292939
+ let azimuthBase = 0; // default base is North
292914
292940
  if (spec.format.azimuthBase !== undefined) {
292915
292941
  if (spec.azimuthBaseConversion === undefined) {
292916
292942
  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.`);
@@ -292922,13 +292948,13 @@ class Formatter {
292922
292948
  }
292923
292949
  azimuthBase = this.normalizeAngle(azBaseConverted.magnitude, revolution);
292924
292950
  }
292925
- if (azimuthBase === quarterRevolution && spec.format.azimuthCounterClockwiseOrDefault)
292926
- return { magnitude }; // no conversion necessary, the input is already using the result parameters (east base and counter clockwise)
292951
+ if (azimuthBase === 0.0 && spec.format.azimuthClockwiseOrDefault)
292952
+ return { magnitude }; // no conversion necessary, the input is already using the result parameters (north base and clockwise)
292927
292953
  // subtract the base from the actual value
292928
292954
  magnitude -= azimuthBase;
292929
- if (spec.format.azimuthCounterClockwiseOrDefault)
292955
+ if (spec.format.azimuthClockwiseOrDefault)
292930
292956
  return { magnitude: this.normalizeAngle(magnitude, revolution) };
292931
- // turn it into a clockwise angle
292957
+ // turn it into a counter-clockwise angle
292932
292958
  magnitude = revolution - magnitude;
292933
292959
  // normalize the result as it may have become negative or exceed the revolution
292934
292960
  magnitude = this.normalizeAngle(magnitude, revolution);
@@ -293845,18 +293871,15 @@ class Parser {
293845
293871
  // we have to turn the value into an east base and counter clockwise (NW and SE are already counter clockwise)
293846
293872
  if (matchedPrefix === DirectionLabel.North) {
293847
293873
  if (matchedSuffix === DirectionLabel.West) {
293848
- magnitude = quarterRevolution + magnitude;
293849
- }
293850
- else if (matchedSuffix === DirectionLabel.East) {
293851
- magnitude = quarterRevolution - magnitude;
293874
+ magnitude = revolution - magnitude;
293852
293875
  }
293853
293876
  }
293854
293877
  else if (matchedPrefix === DirectionLabel.South) {
293855
293878
  if (matchedSuffix === DirectionLabel.West) {
293856
- magnitude = (3 * quarterRevolution) - magnitude;
293879
+ magnitude = (2 * quarterRevolution) + magnitude;
293857
293880
  }
293858
293881
  else if (matchedSuffix === DirectionLabel.East) {
293859
- magnitude = (3 * quarterRevolution) + magnitude;
293882
+ magnitude = (2 * quarterRevolution) - magnitude;
293860
293883
  }
293861
293884
  }
293862
293885
  return { ok: true, value: magnitude };
@@ -293869,8 +293892,7 @@ class Parser {
293869
293892
  let magnitude = parsedResult.value;
293870
293893
  const revolution = this.getRevolution(spec);
293871
293894
  magnitude = this.normalizeAngle(magnitude, revolution);
293872
- const quarterRevolution = revolution / 4;
293873
- let azimuthBase = quarterRevolution;
293895
+ let azimuthBase = 0.0;
293874
293896
  if (spec.format.azimuthBase !== undefined) {
293875
293897
  if (spec.azimuthBaseConversion === undefined) {
293876
293898
  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.`);
@@ -293882,12 +293904,12 @@ class Parser {
293882
293904
  }
293883
293905
  azimuthBase = this.normalizeAngle(azBaseConverted.magnitude, revolution);
293884
293906
  }
293885
- const azimuthCounterClockwise = spec.format.azimuthCounterClockwiseOrDefault;
293886
- if (azimuthCounterClockwise && azimuthBase === 0) {
293907
+ const inputIsClockwise = spec.format.azimuthClockwiseOrDefault;
293908
+ if (inputIsClockwise && azimuthBase === 0) {
293887
293909
  // parsed result already has the same base and orientation as our desired output
293888
293910
  return parsedResult;
293889
293911
  }
293890
- if (azimuthCounterClockwise)
293912
+ if (inputIsClockwise)
293891
293913
  magnitude = azimuthBase + magnitude;
293892
293914
  else
293893
293915
  magnitude = azimuthBase - magnitude;
@@ -295425,7 +295447,7 @@ class TestContext {
295425
295447
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
295426
295448
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
295427
295449
  await core_frontend_1.NoRenderApp.startup({
295428
- applicationVersion: "4.10.0-dev.11",
295450
+ applicationVersion: "4.10.0-dev.14",
295429
295451
  applicationId: this.settings.gprid,
295430
295452
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
295431
295453
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -320294,7 +320316,7 @@ function __disposeResources(env) {
320294
320316
  /***/ ((module) => {
320295
320317
 
320296
320318
  "use strict";
320297
- 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"}}');
320319
+ 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"}}');
320298
320320
 
320299
320321
  /***/ }),
320300
320322