@itwin/rpcinterface-full-stack-tests 5.2.2 → 5.2.3

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.
@@ -117167,6 +117167,10 @@ class IModelApp {
117167
117167
  IModelApp.requestNextAnimation();
117168
117168
  }, IModelApp.animationInterval.milliseconds);
117169
117169
  }
117170
+ /** Return true if the main event processing loop has been started.
117171
+ * @internal
117172
+ */
117173
+ static get isEventLoopStarted() { return IModelApp._wantEventLoop; }
117170
117174
  /** @internal */
117171
117175
  static startEventLoop() {
117172
117176
  if (!IModelApp._wantEventLoop) {
@@ -118740,7 +118744,7 @@ let iModelJsCss = `
118740
118744
  }
118741
118745
 
118742
118746
  .logo-card-logo {
118743
- width:124px;
118747
+ width:144px;
118744
118748
  overflow:hidden;
118745
118749
  vertical-align:text-top;
118746
118750
  text-align:center
@@ -124410,7 +124414,7 @@ class SubCategoriesCache {
124410
124414
  this._request = cache.load(categoryIds);
124411
124415
  if (undefined === this._request) {
124412
124416
  // All requested categories are already loaded.
124413
- func();
124417
+ func(false);
124414
124418
  return;
124415
124419
  }
124416
124420
  else {
@@ -124430,7 +124434,7 @@ class SubCategoriesCache {
124430
124434
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(undefined !== this._current);
124431
124435
  if (completed)
124432
124436
  for (const func of this._current.funcs)
124433
- func();
124437
+ func(true);
124434
124438
  this._request = undefined;
124435
124439
  this._current = undefined;
124436
124440
  // If we have more requests, process them.
@@ -124441,7 +124445,7 @@ class SubCategoriesCache {
124441
124445
  if (undefined === this._request) {
124442
124446
  // All categories loaded.
124443
124447
  for (const func of next.funcs)
124444
- func();
124448
+ func(true);
124445
124449
  }
124446
124450
  else {
124447
124451
  // We need to load the requested categories before invoking the pending functions.
@@ -129874,10 +129878,11 @@ class Viewport {
129874
129878
  this.updateSubCategories(categoryIds, enableAllSubCategories);
129875
129879
  }
129876
129880
  updateSubCategories(categoryIds, enableAllSubCategories) {
129877
- this.subcategories.push(this.iModel.subcategories, categoryIds, () => {
129878
- if (enableAllSubCategories)
129881
+ this.subcategories.push(this.iModel.subcategories, categoryIds, (anySubCategoriesLoaded) => {
129882
+ if (true === enableAllSubCategories)
129879
129883
  this.enableAllSubCategories(categoryIds);
129880
- this._changeFlags.setViewedCategories();
129884
+ if (undefined !== enableAllSubCategories || anySubCategoriesLoaded)
129885
+ this._changeFlags.setViewedCategories();
129881
129886
  });
129882
129887
  }
129883
129888
  enableAllSubCategories(categoryIds) {
@@ -130212,6 +130217,10 @@ class Viewport {
130212
130217
  this.registerViewListeners();
130213
130218
  this.view.attachToViewport(this);
130214
130219
  this._mapTiledGraphicsProvider = new _tile_internal__WEBPACK_IMPORTED_MODULE_21__.MapTiledGraphicsProvider(this.viewportId, this.displayStyle);
130220
+ // ViewState.load loads all the subcategories for the categories in its category selector.
130221
+ // But the set of categories may have changed since loading the view.
130222
+ // Ensure we fill the cache for the current set of categories.
130223
+ this.updateSubCategories(this.view.categorySelector.categories, undefined);
130215
130224
  }
130216
130225
  registerViewListeners() {
130217
130226
  const view = this.view;
@@ -130222,6 +130231,7 @@ class Viewport {
130222
130231
  removals.push(view.details.onClipVectorChanged.addListener(() => this.invalidateRenderPlan()));
130223
130232
  removals.push(view.onViewedCategoriesChanged.addListener(() => {
130224
130233
  this._changeFlags.setViewedCategories();
130234
+ this.updateSubCategories(view.categorySelector.categories, undefined);
130225
130235
  this.maybeInvalidateScene();
130226
130236
  }));
130227
130237
  removals.push(view.onDisplayStyleChanged.addListener((newStyle) => {
@@ -175106,6 +175116,9 @@ class RootTile extends DynamicIModelTile {
175106
175116
  get hiddenElements() {
175107
175117
  return this._hiddenElements.toId64Array();
175108
175118
  }
175119
+ get dynamicElements() {
175120
+ return this._elements.array.map((tile) => tile.contentId);
175121
+ }
175109
175122
  get appearanceProvider() {
175110
175123
  return this;
175111
175124
  }
@@ -176480,6 +176493,11 @@ class IModelTileTree extends _tile_internal__WEBPACK_IMPORTED_MODULE_6__.TileTre
176480
176493
  const state = this._rootTile.tileState;
176481
176494
  return "dynamic" === state.type ? state.rootTile.hiddenElements : [];
176482
176495
  }
176496
+ /** Strictly for tests. */
176497
+ get dynamicElements() {
176498
+ const state = this._rootTile.tileState;
176499
+ return "dynamic" === state.type ? state.rootTile.dynamicElements : [];
176500
+ }
176483
176501
  getTransformNodeRange(nodeId) {
176484
176502
  return this._transformNodeRanges?.get(nodeId);
176485
176503
  }
@@ -202681,37 +202699,93 @@ class AccuDrawViewportUI extends _AccuDraw__WEBPACK_IMPORTED_MODULE_1__.AccuDraw
202681
202699
  simplifiedInput: true,
202682
202700
  /** Enable simple math operations not supported by quantity parser. */
202683
202701
  mathOperations: true,
202684
- /** Number of visible characters to show in text input fields. */
202685
- fieldSize: 12,
202686
- /** Row spacing of text input fields for vertical arrangement. */
202687
- rowSpacingFactor: 1.2,
202688
- /** Column spacing of text input fields and buttons for horizontal arrangement. */
202689
- columnSpacingFactor: 1.1,
202690
- /** Corner radius of text input fields and locks buttons. */
202691
- borderRadius: "0.5em",
202692
- /** Background color of unfocused text input fields and unlocked buttons. */
202693
- backgroundColor: "rgba(150, 150, 150, 0.5)",
202694
- /** Settings specific to text input fields and lock button labels. */
202695
- text: {
202696
- /** Font family to use for text input field values and button labels. */
202697
- fontFamily: "sans-serif",
202698
- /** Font size to use for text input field values and button labels. */
202699
- fontSize: "9pt",
202700
- /** Font color to use for text input field values and button labels. */
202701
- color: "white",
202702
- /** Background color of focused text input field. */
202703
- focusColor: "rgba(50, 50, 200, 0.75)",
202702
+ /** Settings that apply to both text input fields and lock buttons. */
202703
+ field: {
202704
+ /** Number of visible characters to show in text input fields. */
202705
+ size: 12,
202706
+ /** Height of text input fields and lock buttons. */
202707
+ height: "var(--iui-component-height-small, 1.75em)",
202708
+ /** Border settings for text input fields and lock buttons. */
202709
+ border: {
202710
+ /** Border width to use for text input fields and lock buttons. */
202711
+ width: "1px",
202712
+ /** Border style to use for text input fields and lock buttons. */
202713
+ style: "solid",
202714
+ /** Corner radius of text input fields and locks buttons. */
202715
+ radius: "var(--iui-border-radius-1, 0.25rem)",
202716
+ },
202717
+ /** Settings specific to text input fields and lock button labels. */
202718
+ text: {
202719
+ /** Font family to use for text input field values and button labels. */
202720
+ fontFamily: "var(--iui-font-sans, sans-serif)",
202721
+ /** Font size to use for text input field values and button labels. */
202722
+ fontSize: "var(--iui-font-size-1, 0.875rem)",
202723
+ },
202724
+ },
202725
+ /** Settings specific to text input fields. */
202726
+ input: {
202727
+ /** Font color to use for text input field values. */
202728
+ color: "var(--iui-color-white, white)",
202729
+ /** Padding applied to text input fields. */
202730
+ padding: "0 var(--iui-size-s, 0.5rem)",
202731
+ /** Settings applied to text input fields when they have focus. */
202732
+ focused: {
202733
+ /** Background color for focused text input fields. */
202734
+ backgroundColor: "hsl(var(--iui-color-accent-hsl, 166 96% 30.7%) / var(--iui-opacity-2, 85%))",
202735
+ /** Inner stroke for focused text input fields. */
202736
+ innerStroke: `inset 0px 0px 0px 1px var(--iui-color-background, #333c41)`,
202737
+ /** Border settings for focused text input fields. */
202738
+ border: {
202739
+ /** Border color for focused text input fields. */
202740
+ color: "hsl(var(--iui-color-accent-hsl, 166 96% 51%))",
202741
+ },
202742
+ },
202743
+ /** Settings applied to text input fields when they do not have focus. */
202744
+ unfocused: {
202745
+ /** Background color for unfocused text input fields. */
202746
+ backgroundColor: "hsl(var(--iui-color-background-hsl, 203 6% 21.25%) / var(--iui-opacity-2, 85%))",
202747
+ /** Border settings for unfocused text input fields. */
202748
+ border: {
202749
+ /** Border color for unfocused text input fields. */
202750
+ color: "var(--iui-color-border, hsla(215, 8%, 30%))",
202751
+ },
202752
+ },
202704
202753
  },
202705
202754
  /** Settings specific to lock buttons. */
202706
202755
  button: {
202707
- /** Background color of locked buttons. */
202708
- pressedColor: "rgba(50, 50, 50, 0.75)",
202709
- /** Margin to use on left and right to position relative to text input field. */
202710
- margin: "0.25em",
202711
- /** Width of border outline. */
202712
- outlineWidth: "thin",
202713
- /** Shadow shown when unlocked to make it appear raised. */
202714
- shadow: "0.25em 0.25em 0.2em rgb(75, 75, 75)",
202756
+ /** Padding applied to lock buttons. */
202757
+ padding: "var(--iui-size-2xs, 0.25rem)",
202758
+ /** Settings applied to lock buttons when they are unlocked. */
202759
+ unlocked: {
202760
+ /** Text color for unlocked lock buttons. */
202761
+ color: "var(--iui-color-text-muted, #cccccc)",
202762
+ /** Background color for unlocked lock buttons. */
202763
+ backgroundColor: "hsl(var(--iui-color-background-hsl, 203 6% 21.25%) / var(--iui-opacity-2, 85%))",
202764
+ /** Border settings for unlocked lock buttons. */
202765
+ border: {
202766
+ /** Border color for unlocked lock buttons. */
202767
+ color: "var(--iui-color-border, hsla(215, 8%, 30%))",
202768
+ },
202769
+ },
202770
+ /** Settings applied to lock buttons when they are locked. */
202771
+ locked: {
202772
+ /** Text color for locked lock buttons. */
202773
+ color: "hsla(0, 0%, 100%, 1)",
202774
+ /** Background color for locked lock buttons. */
202775
+ backgroundColor: "hsla(0, 0%, 100%, 0.16)",
202776
+ /** Border settings for locked lock buttons. */
202777
+ border: {
202778
+ /** Border color for locked lock buttons. */
202779
+ color: "hsla(0, 0%, 100%, 1)",
202780
+ },
202781
+ },
202782
+ },
202783
+ /** Spacing between fields within a control and between rows of controls. */
202784
+ spacing: {
202785
+ /** Spacing between input field and lock button within each field group. */
202786
+ gap: "var(--iui-size-2xs, 0.25rem)",
202787
+ /** Spacing between field groups (distance/angle, x, y, z controls). */
202788
+ margin: "var(--iui-size-s, 0.75rem)",
202715
202789
  },
202716
202790
  };
202717
202791
  /** Create a new instance of this class to set as [[IModelAppOptions.accuDraw]] for this session. */
@@ -202963,7 +203037,9 @@ class AccuDrawViewportUI extends _AccuDraw__WEBPACK_IMPORTED_MODULE_1__.AccuDraw
202963
203037
  if (itemField.selectionStart !== (moveLeft ? operatorPosIns + this._expression.operator.length : operatorPosIns))
202964
203038
  break;
202965
203039
  // Treat expression operator string as a single character when moving the text insertion cursor...
202966
- itemField.selectionStart = itemField.selectionEnd = (moveLeft ? operatorPosIns : operatorPosIns + this._expression.operator.length);
203040
+ itemField.selectionStart = itemField.selectionEnd = moveLeft
203041
+ ? operatorPosIns
203042
+ : operatorPosIns + this._expression.operator.length;
202967
203043
  ev.preventDefault();
202968
203044
  return true;
202969
203045
  case "Backspace":
@@ -203074,10 +203150,18 @@ class AccuDrawViewportUI extends _AccuDraw__WEBPACK_IMPORTED_MODULE_1__.AccuDraw
203074
203150
  div.className = "accudraw-controls";
203075
203151
  const style = div.style;
203076
203152
  style.pointerEvents = "none";
203077
- style.overflow = "visible"; // Don't clip/hide outline or shadow...
203078
203153
  style.position = "absolute";
203079
- style.top = style.left = "0";
203080
- style.height = style.width = "100%";
203154
+ style.display = "flex";
203155
+ const isHorizontal = AccuDrawViewportUI.controlProps.horizontalArrangement;
203156
+ style.flexDirection = isHorizontal ? "row" : "column";
203157
+ if (isHorizontal) {
203158
+ // Make the space between each control group bigger than the space between fields within a group
203159
+ style.columnGap = AccuDrawViewportUI.controlProps.spacing.margin;
203160
+ }
203161
+ else {
203162
+ // Make the space between each control group equal than the space between fields within a group
203163
+ style.rowGap = AccuDrawViewportUI.controlProps.spacing.gap;
203164
+ }
203081
203165
  return div;
203082
203166
  }
203083
203167
  updateItemFieldKeyinStatus(itemField, item) {
@@ -203093,27 +203177,52 @@ class AccuDrawViewportUI extends _AccuDraw__WEBPACK_IMPORTED_MODULE_1__.AccuDraw
203093
203177
  }
203094
203178
  updateItemFieldLock(itemLock, item) {
203095
203179
  const locked = this.getFieldLock(item);
203096
- itemLock.style.outlineStyle = locked ? "inset" : "outset";
203097
- itemLock.style.boxShadow = locked ? "none" : AccuDrawViewportUI.controlProps.button.shadow;
203098
- itemLock.style.backgroundColor = locked ? AccuDrawViewportUI.controlProps.button.pressedColor : AccuDrawViewportUI.controlProps.backgroundColor;
203180
+ itemLock.style.backgroundColor = locked
203181
+ ? AccuDrawViewportUI.controlProps.button.locked.backgroundColor
203182
+ : AccuDrawViewportUI.controlProps.button.unlocked.backgroundColor;
203183
+ itemLock.style.border = `${AccuDrawViewportUI.controlProps.field.border.width} ${AccuDrawViewportUI.controlProps.field.border.style} ${locked
203184
+ ? AccuDrawViewportUI.controlProps.button.locked.border.color
203185
+ : AccuDrawViewportUI.controlProps.button.unlocked.border.color}`;
203186
+ itemLock.style.color = locked
203187
+ ? AccuDrawViewportUI.controlProps.button.locked.color
203188
+ : AccuDrawViewportUI.controlProps.button.unlocked.color;
203099
203189
  }
203100
203190
  initializeItemStyle(style, isButton) {
203101
203191
  style.pointerEvents = "none"; // Don't receive pointer events...
203102
- style.position = "absolute";
203103
203192
  style.textWrap = "nowrap";
203104
203193
  style.textAnchor = "top";
203105
- style.textAlign = isButton ? "center" : "left";
203194
+ style.boxSizing = "border-box";
203106
203195
  const controlProps = AccuDrawViewportUI.controlProps;
203107
- style.fontFamily = controlProps.text.fontFamily;
203108
- style.fontSize = controlProps.text.fontSize;
203109
- style.color = controlProps.text.color;
203110
- style.backgroundColor = controlProps.backgroundColor;
203111
- style.borderRadius = controlProps.borderRadius;
203196
+ style.height = controlProps.field.height;
203197
+ const baseBorder = `${controlProps.field.border.width} ${controlProps.field.border.style} `;
203198
+ switch (isButton) {
203199
+ case true:
203200
+ style.display = "flex";
203201
+ style.justifyContent = "center";
203202
+ style.alignItems = "center";
203203
+ style.backgroundColor = controlProps.button.unlocked.backgroundColor;
203204
+ style.padding = controlProps.button.padding;
203205
+ style.border = baseBorder + controlProps.button.unlocked.border.color;
203206
+ style.color = controlProps.button.unlocked.color;
203207
+ style.aspectRatio = "1";
203208
+ break;
203209
+ case false:
203210
+ style.backgroundColor = controlProps.input.unfocused.backgroundColor;
203211
+ style.outline = "none";
203212
+ style.padding = controlProps.input.padding;
203213
+ style.border = baseBorder + controlProps.input.unfocused.border.color;
203214
+ style.color = controlProps.input.color;
203215
+ style.width = "120px";
203216
+ break;
203217
+ }
203218
+ style.fontFamily = controlProps.field.text.fontFamily;
203219
+ style.fontSize = controlProps.field.text.fontSize;
203220
+ style.borderRadius = controlProps.field.border.radius;
203112
203221
  }
203113
203222
  createItemField(item) {
203114
203223
  const itemField = document.createElement("input");
203115
203224
  itemField.contentEditable = "true";
203116
- itemField.size = AccuDrawViewportUI.controlProps.fieldSize;
203225
+ itemField.size = AccuDrawViewportUI.controlProps.field.size;
203117
203226
  const style = itemField.style;
203118
203227
  this.initializeItemStyle(style, false);
203119
203228
  this.updateItemFieldValue(itemField, item);
@@ -203121,7 +203230,6 @@ class AccuDrawViewportUI extends _AccuDraw__WEBPACK_IMPORTED_MODULE_1__.AccuDraw
203121
203230
  itemField.onkeyup = async (ev) => { await this.onKeyboardEvent(ev, false); };
203122
203231
  itemField.onfocus = (ev) => { this.onFocusChange(ev, item, true); };
203123
203232
  itemField.onblur = (ev) => { this.onFocusChange(ev, item, false); };
203124
- ;
203125
203233
  return itemField;
203126
203234
  }
203127
203235
  createItemFieldLock(item) {
@@ -203149,10 +203257,6 @@ class AccuDrawViewportUI extends _AccuDraw__WEBPACK_IMPORTED_MODULE_1__.AccuDraw
203149
203257
  const style = itemLock.style;
203150
203258
  this.initializeItemStyle(style, true);
203151
203259
  this.updateItemFieldLock(itemLock, item);
203152
- const button = AccuDrawViewportUI.controlProps.button;
203153
- style.paddingLeft = style.paddingRight = "0";
203154
- style.marginLeft = style.marginRight = button.margin;
203155
- style.outlineWidth = button.outlineWidth;
203156
203260
  return itemLock;
203157
203261
  }
203158
203262
  /** Called after the controls have been removed from the view. */
@@ -203173,18 +203277,23 @@ class AccuDrawViewportUI extends _AccuDraw__WEBPACK_IMPORTED_MODULE_1__.AccuDraw
203173
203277
  updateControlVisibility(isPolar, is3d) {
203174
203278
  if (undefined === this._controls)
203175
203279
  return;
203176
- this._controls.itemFields[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.ANGLE_Item].hidden = !isPolar;
203177
- this._controls.itemLocks[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.ANGLE_Item].hidden = !isPolar;
203178
- this._controls.itemFields[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.DIST_Item].hidden = !isPolar;
203179
- this._controls.itemLocks[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.DIST_Item].hidden = !isPolar;
203180
- this._controls.itemFields[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.X_Item].hidden = isPolar;
203181
- this._controls.itemLocks[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.X_Item].hidden = isPolar;
203182
- this._controls.itemFields[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.Y_Item].hidden = isPolar;
203183
- this._controls.itemLocks[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.Y_Item].hidden = isPolar;
203280
+ const angleWrapper = this._controls.itemFields[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.ANGLE_Item]
203281
+ .parentElement;
203282
+ const distWrapper = this._controls.itemFields[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.DIST_Item]
203283
+ .parentElement;
203284
+ const xWrapper = this._controls.itemFields[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.X_Item]
203285
+ .parentElement;
203286
+ const yWrapper = this._controls.itemFields[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.Y_Item]
203287
+ .parentElement;
203288
+ const zWrapper = this._controls.itemFields[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.Z_Item]
203289
+ .parentElement;
203290
+ angleWrapper.style.display = !isPolar ? "none" : "flex";
203291
+ distWrapper.style.display = !isPolar ? "none" : "flex";
203292
+ xWrapper.style.display = isPolar ? "none" : "flex";
203293
+ yWrapper.style.display = isPolar ? "none" : "flex";
203184
203294
  if (undefined === is3d)
203185
203295
  return;
203186
- this._controls.itemFields[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.Z_Item].hidden = !is3d;
203187
- this._controls.itemLocks[_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.Z_Item].hidden = !is3d;
203296
+ zWrapper.style.display = !is3d ? "none" : "flex";
203188
203297
  }
203189
203298
  updateControls(ev) {
203190
203299
  const vp = ev.viewport;
@@ -203196,43 +203305,28 @@ class AccuDrawViewportUI extends _AccuDraw__WEBPACK_IMPORTED_MODULE_1__.AccuDraw
203196
203305
  if (undefined === this._controls) {
203197
203306
  const overlay = vp.addNewDiv("accudraw-overlay", true, 35);
203198
203307
  const div = this.createControlDiv();
203199
- const is3dLayout = this.is3dCompass(vp);
203200
- const isHorizontalLayout = props.horizontalArrangement;
203201
203308
  overlay.appendChild(div);
203202
203309
  const createFieldAndLock = (item) => {
203203
- const itemField = itemFields[item] = this.createItemField(item);
203204
- itemField.style.top = isHorizontalLayout ? "0" : `${rowOffset}px`;
203205
- itemField.style.left = isHorizontalLayout ? `${columnOffset}px` : "0";
203206
- div.appendChild(itemField);
203207
- if (is3dLayout || _AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.Z_Item !== item)
203208
- rowOffset += itemField.offsetHeight * props.rowSpacingFactor;
203209
- itemWidth = itemField.offsetWidth;
203210
- itemHeight = itemField.offsetHeight;
203211
- const itemLock = itemLocks[item] = this.createItemFieldLock(item);
203212
- itemLock.style.top = itemField.style.top;
203213
- itemLock.style.left = isHorizontalLayout ? `${columnOffset + itemWidth}px` : `${itemWidth}px`;
203214
- itemLock.style.width = itemLock.style.height = `${itemHeight}px`; // Make square of same height as text field...
203215
- div.appendChild(itemLock);
203216
- lockWidth = itemLock.offsetWidth;
203217
- if (is3dLayout || _AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.Z_Item !== item)
203218
- columnOffset += (itemWidth + lockWidth) * props.columnSpacingFactor;
203310
+ const fieldWrapper = document.createElement("div");
203311
+ fieldWrapper.style.display = "flex";
203312
+ fieldWrapper.style.flexDirection = "row";
203313
+ fieldWrapper.style.alignItems = "center";
203314
+ fieldWrapper.style.justifyContent = "center";
203315
+ fieldWrapper.style.columnGap = AccuDrawViewportUI.controlProps.spacing.gap;
203316
+ fieldWrapper.style.rowGap = AccuDrawViewportUI.controlProps.spacing.gap;
203317
+ const itemField = (itemFields[item] = this.createItemField(item));
203318
+ fieldWrapper.appendChild(itemField);
203319
+ const itemLock = (itemLocks[item] = this.createItemFieldLock(item));
203320
+ fieldWrapper.appendChild(itemLock);
203321
+ div.appendChild(fieldWrapper);
203219
203322
  };
203220
- let rowOffset = 0;
203221
- let columnOffset = 0;
203222
- let itemWidth = 0;
203223
- let itemHeight = 0;
203224
- let lockWidth = 0;
203225
203323
  const itemFields = [];
203226
203324
  const itemLocks = [];
203227
203325
  createFieldAndLock(_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.DIST_Item);
203228
203326
  createFieldAndLock(_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.ANGLE_Item);
203229
- rowOffset = 0;
203230
- columnOffset = 0;
203231
203327
  createFieldAndLock(_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.X_Item);
203232
203328
  createFieldAndLock(_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.Y_Item);
203233
203329
  createFieldAndLock(_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.ItemField.Z_Item); // Both polar and rectangular modes support Z in 3d views...
203234
- div.style.width = isHorizontalLayout ? `${columnOffset}px` : `${itemWidth + lockWidth + 5}px`;
203235
- div.style.height = isHorizontalLayout ? `${itemHeight * props.rowSpacingFactor}px` : `${rowOffset}px`;
203236
203330
  this._controls = { overlay, div, itemFields, itemLocks };
203237
203331
  this.updateControlVisibility(_AccuDraw__WEBPACK_IMPORTED_MODULE_1__.CompassMode.Polar === this.compassMode, this.is3dCompass(vp));
203238
203332
  this.setFocusItem(this._focusItem);
@@ -203243,7 +203337,7 @@ class AccuDrawViewportUI extends _AccuDraw__WEBPACK_IMPORTED_MODULE_1__.AccuDraw
203243
203337
  const position = vp.worldToView(ev.point);
203244
203338
  if (props.fixedLocation) {
203245
203339
  position.x = (viewRect.left + ((viewRect.width - this._controls.div.offsetWidth) * 0.5));
203246
- position.y = (viewRect.bottom - this._controls.div.offsetHeight);
203340
+ position.y = (viewRect.bottom - this._controls.div.offsetHeight * 1.2);
203247
203341
  }
203248
203342
  else {
203249
203343
  position.x += Math.floor(vp.pixelsFromInches(props.cursorOffset.x)) + 0.5;
@@ -203310,7 +203404,15 @@ class AccuDrawViewportUI extends _AccuDraw__WEBPACK_IMPORTED_MODULE_1__.AccuDraw
203310
203404
  return;
203311
203405
  // NOTE: Using "setSelectionRange" while value is changing in dynamics isn't pretty, use background+caret color instead...
203312
203406
  const itemField = this._controls.itemFields[item];
203313
- itemField.style.backgroundColor = (focusIn ? AccuDrawViewportUI.controlProps.text.focusColor : AccuDrawViewportUI.controlProps.backgroundColor);
203407
+ itemField.style.backgroundColor = focusIn
203408
+ ? AccuDrawViewportUI.controlProps.input.focused.backgroundColor
203409
+ : AccuDrawViewportUI.controlProps.input.unfocused.backgroundColor;
203410
+ itemField.style.border = focusIn
203411
+ ? `${AccuDrawViewportUI.controlProps.field.border.width} ${AccuDrawViewportUI.controlProps.field.border.style} ${AccuDrawViewportUI.controlProps.input.focused.border.color}`
203412
+ : `${AccuDrawViewportUI.controlProps.field.border.width} ${AccuDrawViewportUI.controlProps.field.border.style} ${AccuDrawViewportUI.controlProps.input.unfocused.border.color}`;
203413
+ itemField.style.boxShadow = focusIn
203414
+ ? AccuDrawViewportUI.controlProps.input.focused.innerStroke
203415
+ : "none";
203314
203416
  this.updateItemFieldKeyinStatus(itemField, item);
203315
203417
  if (!focusIn)
203316
203418
  this.setDynamicKeyinStatus(item);
@@ -210759,6 +210861,9 @@ class ToolAdmin {
210759
210861
  * @internal
210760
210862
  */
210761
210863
  static addEvent(ev, vp) {
210864
+ // Don't add events to queue if event loop hasn't been started to process them...
210865
+ if (!_IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.isEventLoopStarted)
210866
+ return;
210762
210867
  if (!ToolAdmin.tryReplace(ev, vp)) // see if this event replaces the last event in the queue
210763
210868
  this._toolEvents.push({ ev, vp }); // otherwise put it at the end of the queue.
210764
210869
  _IModelApp__WEBPACK_IMPORTED_MODULE_5__.IModelApp.requestNextAnimation(); // wake up event loop, if
@@ -337773,7 +337878,7 @@ class TestContext {
337773
337878
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
337774
337879
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
337775
337880
  await core_frontend_1.NoRenderApp.startup({
337776
- applicationVersion: "5.2.2",
337881
+ applicationVersion: "5.2.3",
337777
337882
  applicationId: this.settings.gprid,
337778
337883
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.serviceAuthToken),
337779
337884
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -363040,7 +363145,7 @@ var loadLanguages = instance.loadLanguages;
363040
363145
  /***/ ((module) => {
363041
363146
 
363042
363147
  "use strict";
363043
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.2.2","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 && npm run -s copy:draco","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","copy:draco":"cpx \\"./node_modules/@loaders.gl/draco/dist/libs/*\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-deprecation":"eslint --fix -f visualstudio --no-inline-config -c ../../common/config/eslint/eslint.config.deprecation-policy.js \\"./src/**/*.ts\\"","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/eslint-plugin":"5.2.2-dev.2","@types/chai-as-promised":"^7","@types/draco3d":"^1.4.10","@types/sinon":"^17.0.2","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.31.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^6.0.1","sinon":"^17.0.2","source-map-loader":"^5.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.2.4","@itwin/object-storage-core":"^2.3.0","@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^4.3.4","@loaders.gl/draco":"^4.3.4","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
363148
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.2.3","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 && npm run -s copy:draco","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","copy:draco":"cpx \\"./node_modules/@loaders.gl/draco/dist/libs/*\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","lint-deprecation":"eslint --fix -f visualstudio --no-inline-config -c ../../common/config/eslint/eslint.config.deprecation-policy.js \\"./src/**/*.ts\\"","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/eslint-plugin":"5.2.2-dev.2","@types/chai-as-promised":"^7","@types/draco3d":"^1.4.10","@types/sinon":"^17.0.2","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.31.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^6.0.1","sinon":"^17.0.2","source-map-loader":"^5.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.2.4","@itwin/object-storage-core":"^2.3.0","@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^4.3.4","@loaders.gl/draco":"^4.3.4","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
363044
363149
 
363045
363150
  /***/ }),
363046
363151