@ni/ok-components 0.2.3 → 0.2.5

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.
@@ -14881,9 +14881,9 @@
14881
14881
  const prefix = 'ni-nimble';
14882
14882
  const styleNameFromTokenName = (tokenName) => `${prefix}-${tokenName}`;
14883
14883
 
14884
- const template$W = html `<slot></slot>`;
14884
+ const template$Z = html `<slot></slot>`;
14885
14885
 
14886
- const styles$19 = css `
14886
+ const styles$1c = css `
14887
14887
  ${display$2('contents')}
14888
14888
  `;
14889
14889
 
@@ -14998,8 +14998,8 @@
14998
14998
  ], ThemeProvider.prototype, "theme", void 0);
14999
14999
  const nimbleDesignSystemProvider = ThemeProvider.compose({
15000
15000
  baseName: 'theme-provider',
15001
- styles: styles$19,
15002
- template: template$W
15001
+ styles: styles$1c,
15002
+ template: template$Z
15003
15003
  });
15004
15004
  DesignSystem.getOrCreate()
15005
15005
  .withPrefix('nimble')
@@ -16572,7 +16572,7 @@
16572
16572
  }
16573
16573
  // #endregion
16574
16574
 
16575
- const styles$18 = css `
16575
+ const styles$1b = css `
16576
16576
  @layer base, hover, focusVisible, active, disabled;
16577
16577
 
16578
16578
  @layer base {
@@ -16650,7 +16650,7 @@
16650
16650
  }
16651
16651
  `;
16652
16652
 
16653
- const template$V = (_context, definition) => html `${
16653
+ const template$Y = (_context, definition) => html `${
16654
16654
  /* top-container div is necessary because setting contenteditable directly on the native anchor instead
16655
16655
  leaves it focusable, unlike the behavior you get when the anchor is _within_ a contenteditable element.
16656
16656
  */ ''}<div
@@ -16696,12 +16696,12 @@
16696
16696
  Whitespace intentionally avoided between tags for inline styles */ ''}<span
16697
16697
  part="start"
16698
16698
  ${ref('startContainer')}
16699
- class="${_x => (definition.start ? 'start' : null)}"
16699
+ class="${_x => (definition.start !== undefined ? 'start' : null)}"
16700
16700
  ><slot
16701
16701
  name="start"
16702
16702
  ${ref('start')}
16703
16703
  @slotchange="${x => x.handleStartContentChange()}">
16704
- ${definition.start || ''}
16704
+ ${definition.start ?? ''}
16705
16705
  </slot
16706
16706
  ></span
16707
16707
  ><span
@@ -16714,12 +16714,12 @@
16714
16714
  ><span
16715
16715
  part="end"
16716
16716
  ${ref('endContainer')}
16717
- class=${_x => (definition.end ? 'end' : null)}
16717
+ class=${_x => (definition.end !== undefined ? 'end' : null)}
16718
16718
  ><slot
16719
16719
  name="end"
16720
16720
  ${ref('end')}
16721
16721
  @slotchange="${x => x.handleEndContentChange()}">
16722
- ${definition.end || ''}
16722
+ ${definition.end ?? ''}
16723
16723
  </slot
16724
16724
  ></span></a></div>`;
16725
16725
 
@@ -16753,8 +16753,8 @@
16753
16753
  const nimbleAnchor = Anchor.compose({
16754
16754
  baseName: 'anchor',
16755
16755
  baseClass: Anchor$1,
16756
- template: template$V,
16757
- styles: styles$18,
16756
+ template: template$Y,
16757
+ styles: styles$1b,
16758
16758
  shadowOptions: {
16759
16759
  delegatesFocus: true
16760
16760
  }
@@ -16863,7 +16863,7 @@
16863
16863
  padding: 0;
16864
16864
  `;
16865
16865
 
16866
- const styles$17 = css `
16866
+ const styles$1a = css `
16867
16867
  @layer base, checked, hover, focusVisible, active, disabled, top;
16868
16868
 
16869
16869
  @layer base {
@@ -17147,8 +17147,8 @@
17147
17147
  }
17148
17148
  `));
17149
17149
 
17150
- const styles$16 = css `
17151
- ${styles$17}
17150
+ const styles$19 = css `
17151
+ ${styles$1a}
17152
17152
  ${buttonAppearanceVariantStyles}
17153
17153
 
17154
17154
  .control {
@@ -17168,7 +17168,7 @@
17168
17168
  }
17169
17169
  `;
17170
17170
 
17171
- const template$U = (context, definition) => html `
17171
+ const template$X = (context, definition) => html `
17172
17172
  <a
17173
17173
  class="control"
17174
17174
  part="control"
@@ -17250,8 +17250,8 @@
17250
17250
  ], AnchorButton.prototype, "disabled", void 0);
17251
17251
  const nimbleAnchorButton = AnchorButton.compose({
17252
17252
  baseName: 'anchor-button',
17253
- template: template$U,
17254
- styles: styles$16,
17253
+ template: template$X,
17254
+ styles: styles$19,
17255
17255
  shadowOptions: {
17256
17256
  delegatesFocus: true
17257
17257
  }
@@ -17259,7 +17259,7 @@
17259
17259
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleAnchorButton());
17260
17260
  const anchorButtonTag = 'nimble-anchor-button';
17261
17261
 
17262
- const styles$15 = css `
17262
+ const styles$18 = css `
17263
17263
  ${display$2('grid')}
17264
17264
 
17265
17265
  :host {
@@ -17342,7 +17342,7 @@
17342
17342
  }
17343
17343
  `;
17344
17344
 
17345
- const template$T = (context, definition) => html `
17345
+ const template$W = (context, definition) => html `
17346
17346
  <template
17347
17347
  role="menuitem"
17348
17348
  class="${x => (typeof x.startColumnCount === 'number'
@@ -17443,8 +17443,8 @@
17443
17443
  // FoundationAnchor already applies the StartEnd mixin, so we don't need to do it here.
17444
17444
  const nimbleAnchorMenuItem = AnchorMenuItem.compose({
17445
17445
  baseName: 'anchor-menu-item',
17446
- template: template$T,
17447
- styles: styles$15,
17446
+ template: template$W,
17447
+ styles: styles$18,
17448
17448
  shadowOptions: {
17449
17449
  delegatesFocus: true
17450
17450
  }
@@ -17454,7 +17454,27 @@
17454
17454
  .register(nimbleAnchorMenuItem());
17455
17455
  const anchorMenuItemTag = 'nimble-anchor-menu-item';
17456
17456
 
17457
- const styles$14 = css `
17457
+ const styles$17 = css `
17458
+ ${display$2('flex')}
17459
+ `;
17460
+
17461
+ const template$V = html `
17462
+ <template>anchor step</template>
17463
+ `;
17464
+
17465
+ /**
17466
+ * A nimble-styled anchor step for a stepper
17467
+ */
17468
+ class AnchorStep extends FoundationElement {
17469
+ }
17470
+ const nimbleAnchorStep = AnchorStep.compose({
17471
+ baseName: 'anchor-step',
17472
+ template: template$V,
17473
+ styles: styles$17
17474
+ });
17475
+ DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleAnchorStep());
17476
+
17477
+ const styles$16 = css `
17458
17478
  ${display$2('inline-flex')}
17459
17479
 
17460
17480
  :host {
@@ -17571,7 +17591,7 @@
17571
17591
  }
17572
17592
  `;
17573
17593
 
17574
- const template$S = (context, definition) => html `
17594
+ const template$U = (context, definition) => html `
17575
17595
  <template slot="anchortab" role="tab" aria-disabled="${x => x.disabled}">
17576
17596
  <a
17577
17597
  download="${x => x.download}"
@@ -17623,15 +17643,15 @@
17623
17643
  // FoundationAnchor already applies the StartEnd mixin, so we don't need to do it here.
17624
17644
  const nimbleAnchorTab = AnchorTab.compose({
17625
17645
  baseName: 'anchor-tab',
17626
- template: template$S,
17627
- styles: styles$14,
17646
+ template: template$U,
17647
+ styles: styles$16,
17628
17648
  shadowOptions: {
17629
17649
  delegatesFocus: true
17630
17650
  }
17631
17651
  });
17632
17652
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleAnchorTab());
17633
17653
 
17634
- const styles$13 = css `
17654
+ const styles$15 = css `
17635
17655
  ${display$2('flex')}
17636
17656
 
17637
17657
  :host {
@@ -17671,12 +17691,12 @@
17671
17691
  }
17672
17692
  `;
17673
17693
 
17674
- const styles$12 = css `
17675
- ${styles$17}
17694
+ const styles$14 = css `
17695
+ ${styles$1a}
17676
17696
  ${buttonAppearanceVariantStyles}
17677
17697
  `;
17678
17698
 
17679
- const template$R = (context, definition) => html `
17699
+ const template$T = (context, definition) => html `
17680
17700
  <button
17681
17701
  class="control"
17682
17702
  part="control"
@@ -17767,8 +17787,8 @@
17767
17787
  const nimbleButton = Button$1.compose({
17768
17788
  baseName: 'button',
17769
17789
  baseClass: Button$2,
17770
- template: template$R,
17771
- styles: styles$12,
17790
+ template: template$T,
17791
+ styles: styles$14,
17772
17792
  shadowOptions: {
17773
17793
  delegatesFocus: true
17774
17794
  }
@@ -18715,7 +18735,7 @@
18715
18735
  };
18716
18736
 
18717
18737
  // Avoiding any whitespace in the template because this is an inline element
18718
- const template$Q = html `<div
18738
+ const template$S = html `<div
18719
18739
  class="icon"
18720
18740
  aria-hidden="true"
18721
18741
  :innerHTML=${x => x.icon.data}
@@ -18730,7 +18750,7 @@
18730
18750
  -webkit-user-select: none;
18731
18751
  `;
18732
18752
 
18733
- const styles$11 = css `
18753
+ const styles$13 = css `
18734
18754
  ${display$2('inline-flex')}
18735
18755
 
18736
18756
  :host {
@@ -18793,8 +18813,8 @@
18793
18813
  const registerIconSvg = (baseName, iconClass) => {
18794
18814
  const composedIcon = iconClass.compose({
18795
18815
  baseName,
18796
- template: template$Q,
18797
- styles: styles$11
18816
+ template: template$S,
18817
+ styles: styles$13
18798
18818
  });
18799
18819
  DesignSystem.getOrCreate().withPrefix('nimble').register(composedIcon());
18800
18820
  };
@@ -18889,7 +18909,7 @@
18889
18909
  cssCustomPropertyName: null
18890
18910
  }).withDefault(coreLabelDefaults.itemRemoveLabel);
18891
18911
 
18892
- const template$P = (context, definition) => html `
18912
+ const template$R = (context, definition) => html `
18893
18913
  <div
18894
18914
  class="tab-bar"
18895
18915
  >
@@ -18992,6 +19012,8 @@
18992
19012
  tab.style[gridHorizontalProperty] = `${index + 1}`;
18993
19013
  });
18994
19014
  if (firstFocusableTab
19015
+ // False positive. See: https://github.com/typescript-eslint/typescript-eslint/issues/12036
19016
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
18995
19017
  && (!this.activetab || !this.isFocusableElement(this.activetab))) {
18996
19018
  firstFocusableTab.setAttribute('tabindex', '0');
18997
19019
  }
@@ -19188,15 +19210,15 @@
19188
19210
  applyMixins(AnchorTabs, StartEnd);
19189
19211
  const nimbleAnchorTabs = AnchorTabs.compose({
19190
19212
  baseName: 'anchor-tabs',
19191
- template: template$P,
19192
- styles: styles$13,
19213
+ template: template$R,
19214
+ styles: styles$15,
19193
19215
  shadowOptions: {
19194
19216
  delegatesFocus: false
19195
19217
  }
19196
19218
  });
19197
19219
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleAnchorTabs());
19198
19220
 
19199
- const styles$10 = css `
19221
+ const styles$12 = css `
19200
19222
  ${display$2('block')}
19201
19223
 
19202
19224
  :host {
@@ -19301,7 +19323,7 @@
19301
19323
  }
19302
19324
  `;
19303
19325
 
19304
- const template$O = (context, definition) => html `
19326
+ const template$Q = (context, definition) => html `
19305
19327
  <template
19306
19328
  role="treeitem"
19307
19329
  slot="${x => (x.isNestedItem() ? 'item' : null)}"
@@ -19438,8 +19460,8 @@
19438
19460
  // FoundationAnchor already applies the StartEnd mixin, so we don't need to do it here.
19439
19461
  const nimbleAnchorTreeItem = AnchorTreeItem.compose({
19440
19462
  baseName: 'anchor-tree-item',
19441
- template: template$O,
19442
- styles: styles$10,
19463
+ template: template$Q,
19464
+ styles: styles$12,
19443
19465
  shadowOptions: {
19444
19466
  delegatesFocus: true
19445
19467
  }
@@ -19455,7 +19477,7 @@
19455
19477
  zIndex1000: '1000'
19456
19478
  };
19457
19479
 
19458
- const styles$$ = css `
19480
+ const styles$11 = css `
19459
19481
  ${display$2('block')}
19460
19482
 
19461
19483
  :host {
@@ -19486,7 +19508,7 @@
19486
19508
  baseName: 'anchored-region',
19487
19509
  baseClass: AnchoredRegion$1,
19488
19510
  template: anchoredRegionTemplate,
19489
- styles: styles$$
19511
+ styles: styles$11
19490
19512
  });
19491
19513
  DesignSystem.getOrCreate()
19492
19514
  .withPrefix('nimble')
@@ -19567,7 +19589,7 @@
19567
19589
  const themeBehavior = (theme, styles) => new ThemeStyleSheetBehavior(theme, styles);
19568
19590
  /* eslint-enable max-classes-per-file */
19569
19591
 
19570
- const styles$_ = css `
19592
+ const styles$10 = css `
19571
19593
  ${display$2('flex')}
19572
19594
 
19573
19595
  :host {
@@ -19745,7 +19767,7 @@
19745
19767
  information: 'information'
19746
19768
  };
19747
19769
 
19748
- const template$N = html `
19770
+ const template$P = html `
19749
19771
  <${themeProviderTag} theme="${Theme.color}">
19750
19772
  <div class="container"
19751
19773
  role="status"
@@ -19863,8 +19885,8 @@
19863
19885
  applyMixins(Banner, ARIAGlobalStatesAndProperties);
19864
19886
  const nimbleBanner = Banner.compose({
19865
19887
  baseName: 'banner',
19866
- template: template$N,
19867
- styles: styles$_
19888
+ template: template$P,
19889
+ styles: styles$10
19868
19890
  });
19869
19891
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleBanner());
19870
19892
 
@@ -19905,7 +19927,7 @@
19905
19927
  </template>
19906
19928
  `;
19907
19929
 
19908
- const styles$Z = css `
19930
+ const styles$$ = css `
19909
19931
  ${display$2('inline-flex')}
19910
19932
 
19911
19933
  :host {
@@ -20009,11 +20031,11 @@
20009
20031
  baseName: 'breadcrumb',
20010
20032
  baseClass: Breadcrumb$1,
20011
20033
  template: breadcrumbTemplate,
20012
- styles: styles$Z
20034
+ styles: styles$$
20013
20035
  });
20014
20036
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleBreadcrumb());
20015
20037
 
20016
- const styles$Y = css `
20038
+ const styles$_ = css `
20017
20039
  @layer base, hover, focusVisible, active, disabled;
20018
20040
 
20019
20041
  @layer base {
@@ -20110,14 +20132,14 @@ so this becomes the fallback color for the slot */ ''}
20110
20132
  baseName: 'breadcrumb-item',
20111
20133
  baseClass: BreadcrumbItem$1,
20112
20134
  template: breadcrumbItemTemplate,
20113
- styles: styles$Y,
20135
+ styles: styles$_,
20114
20136
  separator: forwardSlash16X16.data
20115
20137
  });
20116
20138
  DesignSystem.getOrCreate()
20117
20139
  .withPrefix('nimble')
20118
20140
  .register(nimbleBreadcrumbItem());
20119
20141
 
20120
- const styles$X = css `
20142
+ const styles$Z = css `
20121
20143
  ${display$2('flex')}
20122
20144
 
20123
20145
  :host {
@@ -20141,7 +20163,7 @@ so this becomes the fallback color for the slot */ ''}
20141
20163
  }
20142
20164
  `;
20143
20165
 
20144
- const template$M = html `
20166
+ const template$O = html `
20145
20167
  <section aria-labelledby="title-slot">
20146
20168
  <span id="title-slot"><slot name="title"></slot></span>
20147
20169
  <slot></slot>
@@ -20156,12 +20178,12 @@ so this becomes the fallback color for the slot */ ''}
20156
20178
  const nimbleCard = Card.compose({
20157
20179
  baseName: 'card',
20158
20180
  baseClass: Card$1,
20159
- template: template$M,
20160
- styles: styles$X
20181
+ template: template$O,
20182
+ styles: styles$Z
20161
20183
  });
20162
20184
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleCard());
20163
20185
 
20164
- const styles$W = css `
20186
+ const styles$Y = css `
20165
20187
  ${display$2('inline-flex')}
20166
20188
 
20167
20189
  :host {
@@ -20319,14 +20341,14 @@ so this becomes the fallback color for the slot */ ''}
20319
20341
  const nimbleCardButton = CardButton.compose({
20320
20342
  baseName: 'card-button',
20321
20343
  template: buttonTemplate,
20322
- styles: styles$W,
20344
+ styles: styles$Y,
20323
20345
  shadowOptions: {
20324
20346
  delegatesFocus: true
20325
20347
  }
20326
20348
  });
20327
20349
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleCardButton());
20328
20350
 
20329
- const styles$V = css `
20351
+ const styles$X = css `
20330
20352
  .error-icon {
20331
20353
  display: none;
20332
20354
  }
@@ -20360,9 +20382,9 @@ so this becomes the fallback color for the slot */ ''}
20360
20382
  }
20361
20383
  `;
20362
20384
 
20363
- const styles$U = css `
20385
+ const styles$W = css `
20364
20386
  ${display$2('inline-grid')}
20365
- ${styles$V}
20387
+ ${styles$X}
20366
20388
 
20367
20389
  :host {
20368
20390
  font: ${bodyFont};
@@ -20556,7 +20578,7 @@ so this becomes the fallback color for the slot */ ''}
20556
20578
  </div>
20557
20579
  `;
20558
20580
 
20559
- const template$L = (_context, definition) => html `
20581
+ const template$N = (_context, definition) => html `
20560
20582
  <template
20561
20583
  role="checkbox"
20562
20584
  aria-checked="${x => x.checked}"
@@ -20572,15 +20594,15 @@ so this becomes the fallback color for the slot */ ''}
20572
20594
  <div part="container" class="container">
20573
20595
  <div part="control" class="control">
20574
20596
  <slot name="checked-indicator">
20575
- ${definition.checkedIndicator || ''}
20597
+ ${definition.checkedIndicator ?? ''}
20576
20598
  </slot>
20577
20599
  <slot name="indeterminate-indicator">
20578
- ${definition.indeterminateIndicator || ''}
20600
+ ${definition.indeterminateIndicator ?? ''}
20579
20601
  </slot>
20580
20602
  </div>
20581
20603
  <label
20582
20604
  part="label"
20583
- class="${x => (x.defaultSlottedNodes?.length
20605
+ class="${x => (x.defaultSlottedNodes?.length > 0
20584
20606
  ? 'label'
20585
20607
  : 'label label__hidden')}"
20586
20608
  >
@@ -20641,16 +20663,16 @@ so this becomes the fallback color for the slot */ ''}
20641
20663
  const nimbleCheckbox = Checkbox.compose({
20642
20664
  baseName: 'checkbox',
20643
20665
  baseClass: Checkbox$1,
20644
- template: template$L,
20645
- styles: styles$U,
20666
+ template: template$N,
20667
+ styles: styles$W,
20646
20668
  checkedIndicator: check16X16.data,
20647
20669
  indeterminateIndicator: minus16X16.data
20648
20670
  });
20649
20671
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleCheckbox());
20650
20672
  const checkboxTag = 'nimble-checkbox';
20651
20673
 
20652
- const styles$T = css `
20653
- ${styles$17}
20674
+ const styles$V = css `
20675
+ ${styles$1a}
20654
20676
  ${buttonAppearanceVariantStyles}
20655
20677
 
20656
20678
  @layer checked {
@@ -20697,7 +20719,7 @@ so this becomes the fallback color for the slot */ ''}
20697
20719
  }
20698
20720
  `));
20699
20721
 
20700
- const template$K = (context, definition) => html `
20722
+ const template$M = (context, definition) => html `
20701
20723
  <div
20702
20724
  role="button"
20703
20725
  part="control"
@@ -20792,8 +20814,8 @@ so this becomes the fallback color for the slot */ ''}
20792
20814
  applyMixins(ToggleButton, StartEnd, DelegatesARIAButton);
20793
20815
  const nimbleToggleButton = ToggleButton.compose({
20794
20816
  baseName: 'toggle-button',
20795
- template: template$K,
20796
- styles: styles$T,
20817
+ template: template$M,
20818
+ styles: styles$V,
20797
20819
  shadowOptions: {
20798
20820
  delegatesFocus: true
20799
20821
  }
@@ -20823,7 +20845,7 @@ so this becomes the fallback color for the slot */ ''}
20823
20845
  frameless: 'frameless'
20824
20846
  };
20825
20847
 
20826
- const styles$S = css `
20848
+ const styles$U = css `
20827
20849
  ${display$2('inline-flex')}
20828
20850
 
20829
20851
  :host {
@@ -21113,7 +21135,7 @@ so this becomes the fallback color for the slot */ ''}
21113
21135
  }
21114
21136
  `));
21115
21137
 
21116
- const styles$R = css `
21138
+ const styles$T = css `
21117
21139
  .annotated-label {
21118
21140
  display: flex;
21119
21141
  flex-direction: row;
@@ -21140,10 +21162,10 @@ so this becomes the fallback color for the slot */ ''}
21140
21162
  none: undefined,
21141
21163
  standard: 'standard'};
21142
21164
 
21143
- const styles$Q = css `
21144
- ${styles$S}
21145
- ${styles$V}
21146
- ${styles$R}
21165
+ const styles$S = css `
21166
+ ${styles$U}
21167
+ ${styles$X}
21168
+ ${styles$T}
21147
21169
 
21148
21170
  :host {
21149
21171
  --ni-private-hover-bottom-border-width: 2px;
@@ -21264,7 +21286,7 @@ so this becomes the fallback color for the slot */ ''}
21264
21286
  <slot></slot>
21265
21287
  </label>
21266
21288
  `);
21267
- const template$J = (context, definition) => html `
21289
+ const template$L = (context, definition) => html `
21268
21290
  <template
21269
21291
  aria-disabled="${x => x.ariaDisabled}"
21270
21292
  autocomplete="${x => x.autocomplete}"
@@ -21302,7 +21324,7 @@ so this becomes the fallback color for the slot */ ''}
21302
21324
  />
21303
21325
  <div class="indicator" part="indicator" aria-hidden="true">
21304
21326
  <slot name="indicator">
21305
- ${definition.indicator || ''}
21327
+ ${definition.indicator ?? ''}
21306
21328
  </slot>
21307
21329
  </div>
21308
21330
  </slot>
@@ -21435,7 +21457,7 @@ so this becomes the fallback color for the slot */ ''}
21435
21457
  set value(next) {
21436
21458
  const prev = this._value;
21437
21459
  let updatedValue = next;
21438
- if (this.$fastController.isConnected && this.options) {
21460
+ if (this.$fastController.isConnected) {
21439
21461
  const selectedIndex = this.findIndexOfValidOption(next);
21440
21462
  const prevSelectedValue = this.options[this.selectedIndex]?.text;
21441
21463
  const nextSelectedValue = this.options[selectedIndex]?.text;
@@ -21461,7 +21483,7 @@ so this becomes the fallback color for the slot */ ''}
21461
21483
  */
21462
21484
  get options() {
21463
21485
  Observable.track(this, 'options');
21464
- return this.filteredOptions && this.filter
21486
+ return this.filter
21465
21487
  ? this.filteredOptions
21466
21488
  : this._options;
21467
21489
  }
@@ -21575,12 +21597,12 @@ so this becomes the fallback color for the slot */ ''}
21575
21597
  if (!this.isAutocompleteInline) {
21576
21598
  this.selectedIndex = this.findIndexOfValidOption(this.control.value);
21577
21599
  }
21578
- if (!e.inputType.includes('deleteContent') && this.filter.length) {
21600
+ if (!e.inputType.includes('deleteContent') && this.filter.length > 0) {
21579
21601
  if (this.isAutocompleteList && !this.open) {
21580
21602
  this.open = true;
21581
21603
  }
21582
21604
  if (this.isAutocompleteInline) {
21583
- if (this.filteredOptions.length) {
21605
+ if (this.filteredOptions.length > 0) {
21584
21606
  this.selectedOptions = [this.filteredOptions[0]];
21585
21607
  this.selectedIndex = this.options.indexOf(this.firstSelectedOption);
21586
21608
  this.setInlineSelection();
@@ -21719,11 +21741,11 @@ so this becomes the fallback color for the slot */ ''}
21719
21741
  * Overrides `Listbox.setDefaultSelectedOption`
21720
21742
  */
21721
21743
  setDefaultSelectedOption() {
21722
- if (this.$fastController.isConnected && this.options) {
21744
+ if (this.$fastController.isConnected) {
21723
21745
  const selectedIndex = this.options.findIndex(el => !el.disabled
21724
21746
  && (el.getAttribute('selected') !== null || el.selected));
21725
21747
  this.selectedIndex = selectedIndex;
21726
- if (!this.dirtyValue && this.firstSelectedOption) {
21748
+ if (!this.dirtyValue && this.firstSelectedOption !== null) {
21727
21749
  this.value = this.firstSelectedOption.text;
21728
21750
  }
21729
21751
  this.setSelectedOptions();
@@ -21840,7 +21862,7 @@ so this becomes the fallback color for the slot */ ''}
21840
21862
  if (this.open) {
21841
21863
  if (this.contains(document.activeElement)) {
21842
21864
  this.control.focus();
21843
- if (this.firstSelectedOption) {
21865
+ if (this.firstSelectedOption !== null) {
21844
21866
  requestAnimationFrame(() => {
21845
21867
  this.firstSelectedOption?.scrollIntoView({
21846
21868
  block: 'nearest'
@@ -21901,12 +21923,12 @@ so this becomes the fallback color for the slot */ ''}
21901
21923
  this.setPositioning();
21902
21924
  }
21903
21925
  regionChanged(_prev, _next) {
21904
- if (this.region && this.controlWrapper) {
21926
+ if (this.region) {
21905
21927
  this.region.anchorElement = this.controlWrapper;
21906
21928
  }
21907
21929
  }
21908
21930
  controlWrapperChanged(_prev, _next) {
21909
- if (this.region && this.controlWrapper) {
21931
+ if (this.region) {
21910
21932
  this.region.anchorElement = this.controlWrapper;
21911
21933
  }
21912
21934
  }
@@ -21930,7 +21952,7 @@ so this becomes the fallback color for the slot */ ''}
21930
21952
  * Focus and set the content of the control based on the first selected option.
21931
21953
  */
21932
21954
  setInputToSelection() {
21933
- if (this.firstSelectedOption) {
21955
+ if (this.firstSelectedOption !== null) {
21934
21956
  this.control.value = this.firstSelectedOption.text;
21935
21957
  this.control.focus();
21936
21958
  }
@@ -21939,7 +21961,7 @@ so this becomes the fallback color for the slot */ ''}
21939
21961
  * Focus, set and select the content of the control based on the first selected option.
21940
21962
  */
21941
21963
  setInlineSelection() {
21942
- if (this.firstSelectedOption) {
21964
+ if (this.firstSelectedOption !== null) {
21943
21965
  this.setInputToSelection();
21944
21966
  this.control.setSelectionRange(this.filter.length, this.control.value.length, 'backward');
21945
21967
  }
@@ -22039,8 +22061,8 @@ so this becomes the fallback color for the slot */ ''}
22039
22061
  const nimbleCombobox = Combobox.compose({
22040
22062
  baseName: 'combobox',
22041
22063
  baseClass: FormAssociatedCombobox,
22042
- template: template$J,
22043
- styles: styles$Q,
22064
+ template: template$L,
22065
+ styles: styles$S,
22044
22066
  shadowOptions: {
22045
22067
  delegatesFocus: true
22046
22068
  },
@@ -22084,7 +22106,7 @@ so this becomes the fallback color for the slot */ ''}
22084
22106
  */
22085
22107
  const UserDismissed = Symbol('user dismissed');
22086
22108
 
22087
- const styles$P = css `
22109
+ const styles$R = css `
22088
22110
  ${display$2('grid')}
22089
22111
 
22090
22112
  dialog {
@@ -22177,7 +22199,7 @@ so this becomes the fallback color for the slot */ ''}
22177
22199
  }
22178
22200
  `;
22179
22201
 
22180
- const template$I = html `
22202
+ const template$K = html `
22181
22203
  <template>
22182
22204
  <dialog
22183
22205
  ${ref('dialogElement')}
@@ -22267,7 +22289,7 @@ so this becomes the fallback color for the slot */ ''}
22267
22289
  this.doResolveShow(reason);
22268
22290
  }
22269
22291
  slottedFooterElementsChanged(_prev, next) {
22270
- this.footerIsEmpty = !next?.length;
22292
+ this.footerIsEmpty = next === undefined || next.length === 0;
22271
22293
  }
22272
22294
  /**
22273
22295
  * @internal
@@ -22325,13 +22347,13 @@ so this becomes the fallback color for the slot */ ''}
22325
22347
  applyMixins(Dialog, ARIAGlobalStatesAndProperties);
22326
22348
  const nimbleDialog = Dialog.compose({
22327
22349
  baseName: 'dialog',
22328
- template: template$I,
22329
- styles: styles$P,
22350
+ template: template$K,
22351
+ styles: styles$R,
22330
22352
  baseClass: Dialog
22331
22353
  });
22332
22354
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleDialog());
22333
22355
 
22334
- const styles$O = css `
22356
+ const styles$Q = css `
22335
22357
  ${display$2('block')}
22336
22358
 
22337
22359
  :host {
@@ -22474,7 +22496,7 @@ so this becomes the fallback color for the slot */ ''}
22474
22496
  }
22475
22497
  `;
22476
22498
 
22477
- const template$H = html `
22499
+ const template$J = html `
22478
22500
  <dialog
22479
22501
  ${ref('dialog')}
22480
22502
  aria-label="${x => x.ariaLabel}"
@@ -22616,8 +22638,8 @@ so this becomes the fallback color for the slot */ ''}
22616
22638
  applyMixins(Drawer, ARIAGlobalStatesAndProperties);
22617
22639
  const nimbleDrawer = Drawer.compose({
22618
22640
  baseName: 'drawer',
22619
- template: template$H,
22620
- styles: styles$O
22641
+ template: template$J,
22642
+ styles: styles$Q
22621
22643
  });
22622
22644
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleDrawer());
22623
22645
 
@@ -25399,7 +25421,7 @@ so this becomes the fallback color for the slot */ ''}
25399
25421
  }
25400
25422
  }
25401
25423
 
25402
- const styles$N = css `
25424
+ const styles$P = css `
25403
25425
  ${display$2('none')}
25404
25426
  `;
25405
25427
 
@@ -25464,7 +25486,7 @@ so this becomes the fallback color for the slot */ ''}
25464
25486
  ], LabelProviderCore.prototype, "itemRemove", void 0);
25465
25487
  const nimbleLabelProviderCore = LabelProviderCore.compose({
25466
25488
  baseName: 'label-provider-core',
25467
- styles: styles$N
25489
+ styles: styles$P
25468
25490
  });
25469
25491
  DesignSystem.getOrCreate()
25470
25492
  .withPrefix('nimble')
@@ -25631,13 +25653,13 @@ so this becomes the fallback color for the slot */ ''}
25631
25653
  ], LabelProviderTable.prototype, "groupRowPlaceholderEmpty", void 0);
25632
25654
  const nimbleLabelProviderTable = LabelProviderTable.compose({
25633
25655
  baseName: 'label-provider-table',
25634
- styles: styles$N
25656
+ styles: styles$P
25635
25657
  });
25636
25658
  DesignSystem.getOrCreate()
25637
25659
  .withPrefix('nimble')
25638
25660
  .register(nimbleLabelProviderTable());
25639
25661
 
25640
- const styles$M = css `
25662
+ const styles$O = css `
25641
25663
  ${display$2('flex')}
25642
25664
 
25643
25665
  :host {
@@ -25713,7 +25735,7 @@ so this becomes the fallback color for the slot */ ''}
25713
25735
  * The template for the {@link @ni/fast-foundation#(ListboxOption:class)} component.
25714
25736
  * @public
25715
25737
  */
25716
- const template$G = (context, definition) => html `
25738
+ const template$I = (context, definition) => html `
25717
25739
  <template
25718
25740
  aria-checked="${x => x.ariaChecked}"
25719
25741
  aria-disabled="${x => x.ariaDisabled}"
@@ -25826,13 +25848,13 @@ so this becomes the fallback color for the slot */ ''}
25826
25848
  const nimbleListOption = ListOption.compose({
25827
25849
  baseName: 'list-option',
25828
25850
  baseClass: ListboxOption,
25829
- template: template$G,
25830
- styles: styles$M
25851
+ template: template$I,
25852
+ styles: styles$O
25831
25853
  });
25832
25854
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleListOption());
25833
25855
  const listOptionTag = 'nimble-list-option';
25834
25856
 
25835
- const styles$L = css `
25857
+ const styles$N = css `
25836
25858
  ${display$2('flex')}
25837
25859
 
25838
25860
  :host {
@@ -25894,7 +25916,7 @@ so this becomes the fallback color for the slot */ ''}
25894
25916
  const isListOption$1 = (n) => {
25895
25917
  return n instanceof ListOption;
25896
25918
  };
25897
- const template$F = html `
25919
+ const template$H = html `
25898
25920
  <template
25899
25921
  role="group"
25900
25922
  aria-label="${x => x.labelContent}"
@@ -26036,8 +26058,8 @@ so this becomes the fallback color for the slot */ ''}
26036
26058
  const nimbleListOptionGroup = ListOptionGroup.compose({
26037
26059
  baseName: 'list-option-group',
26038
26060
  baseClass: FoundationElement,
26039
- template: template$F,
26040
- styles: styles$L
26061
+ template: template$H,
26062
+ styles: styles$N
26041
26063
  });
26042
26064
  DesignSystem.getOrCreate()
26043
26065
  .withPrefix('nimble')
@@ -26064,9 +26086,9 @@ so this becomes the fallback color for the slot */ ''}
26064
26086
  attr()
26065
26087
  ], Mapping$1.prototype, "key", void 0);
26066
26088
 
26067
- const template$E = html `<template slot="mapping"></template>`;
26089
+ const template$G = html `<template slot="mapping"></template>`;
26068
26090
 
26069
- const styles$K = css `
26091
+ const styles$M = css `
26070
26092
  ${display$2('none')}
26071
26093
  `;
26072
26094
 
@@ -26082,8 +26104,8 @@ so this becomes the fallback color for the slot */ ''}
26082
26104
  ], MappingEmpty.prototype, "text", void 0);
26083
26105
  const emptyMapping = MappingEmpty.compose({
26084
26106
  baseName: 'mapping-empty',
26085
- template: template$E,
26086
- styles: styles$K
26107
+ template: template$G,
26108
+ styles: styles$M
26087
26109
  });
26088
26110
  DesignSystem.getOrCreate().withPrefix('nimble').register(emptyMapping());
26089
26111
 
@@ -26153,8 +26175,8 @@ so this becomes the fallback color for the slot */ ''}
26153
26175
  ], MappingIcon.prototype, "resolvedIcon", void 0);
26154
26176
  const iconMapping = MappingIcon.compose({
26155
26177
  baseName: 'mapping-icon',
26156
- template: template$E,
26157
- styles: styles$K
26178
+ template: template$G,
26179
+ styles: styles$M
26158
26180
  });
26159
26181
  DesignSystem.getOrCreate().withPrefix('nimble').register(iconMapping());
26160
26182
 
@@ -26177,8 +26199,8 @@ so this becomes the fallback color for the slot */ ''}
26177
26199
  ], MappingSpinner.prototype, "textHidden", void 0);
26178
26200
  const spinnerMapping = MappingSpinner.compose({
26179
26201
  baseName: 'mapping-spinner',
26180
- template: template$E,
26181
- styles: styles$K
26202
+ template: template$G,
26203
+ styles: styles$M
26182
26204
  });
26183
26205
  DesignSystem.getOrCreate().withPrefix('nimble').register(spinnerMapping());
26184
26206
 
@@ -26194,8 +26216,8 @@ so this becomes the fallback color for the slot */ ''}
26194
26216
  ], MappingText.prototype, "text", void 0);
26195
26217
  const textMapping = MappingText.compose({
26196
26218
  baseName: 'mapping-text',
26197
- template: template$E,
26198
- styles: styles$K
26219
+ template: template$G,
26220
+ styles: styles$M
26199
26221
  });
26200
26222
  DesignSystem.getOrCreate().withPrefix('nimble').register(textMapping());
26201
26223
 
@@ -26262,7 +26284,7 @@ so this becomes the fallback color for the slot */ ''}
26262
26284
  // closing an expanded item without opening another
26263
26285
  if (this.expandedItem !== null
26264
26286
  && changedItem === this.expandedItem
26265
- && changedItem.expanded === false) {
26287
+ && !changedItem.expanded) {
26266
26288
  this.expandedItem = null;
26267
26289
  return;
26268
26290
  }
@@ -26291,7 +26313,7 @@ so this becomes the fallback color for the slot */ ''}
26291
26313
  this.menuItems = newItems;
26292
26314
  const menuItems = this.menuItems.filter(this.isMenuItemElement);
26293
26315
  // if our focus index is not -1 we have items
26294
- if (menuItems.length) {
26316
+ if (menuItems.length > 0) {
26295
26317
  this.focusIndex = 0;
26296
26318
  }
26297
26319
  function elementIndent(el) {
@@ -26334,7 +26356,7 @@ so this becomes the fallback color for the slot */ ''}
26334
26356
  return;
26335
26357
  }
26336
26358
  if (changedMenuItem.role === 'menuitemradio'
26337
- && changedMenuItem.checked === true) {
26359
+ && changedMenuItem.checked) {
26338
26360
  for (let i = changeItemIndex - 1; i >= 0; --i) {
26339
26361
  const item = this.menuItems[i];
26340
26362
  const role = item.getAttribute('role');
@@ -26497,7 +26519,7 @@ so this becomes the fallback color for the slot */ ''}
26497
26519
  observable
26498
26520
  ], Menu$1.prototype, "itemIcons", void 0);
26499
26521
 
26500
- const template$D = () => html `
26522
+ const template$F = () => html `
26501
26523
  <template
26502
26524
  slot="${x => {
26503
26525
  if (x.slot) {
@@ -26514,7 +26536,7 @@ so this becomes the fallback color for the slot */ ''}
26514
26536
  </template>
26515
26537
  `;
26516
26538
 
26517
- const styles$J = css `
26539
+ const styles$L = css `
26518
26540
  ${display$2('grid')}
26519
26541
 
26520
26542
  :host {
@@ -26585,8 +26607,8 @@ so this becomes the fallback color for the slot */ ''}
26585
26607
  const nimbleMenu = Menu.compose({
26586
26608
  baseName: 'menu',
26587
26609
  baseClass: Menu$1,
26588
- template: template$D,
26589
- styles: styles$J
26610
+ template: template$F,
26611
+ styles: styles$L
26590
26612
  });
26591
26613
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleMenu());
26592
26614
 
@@ -26601,7 +26623,7 @@ so this becomes the fallback color for the slot */ ''}
26601
26623
  auto: 'auto'
26602
26624
  };
26603
26625
 
26604
- const styles$I = css `
26626
+ const styles$K = css `
26605
26627
  ${display$2('inline-block')}
26606
26628
 
26607
26629
  :host {
@@ -26619,7 +26641,7 @@ so this becomes the fallback color for the slot */ ''}
26619
26641
  }
26620
26642
  `;
26621
26643
 
26622
- const template$C = html `
26644
+ const template$E = html `
26623
26645
  <template
26624
26646
  ?open="${x => x.open}"
26625
26647
  @focusout="${(x, c) => x.focusoutHandler(c.event)}"
@@ -26800,7 +26822,7 @@ so this becomes the fallback color for the slot */ ''}
26800
26822
  // Get the menu that is slotted within the menu-button, taking into account
26801
26823
  // that it may be nested within multiple 'slot' elements, such as when used
26802
26824
  // within a table.
26803
- if (!this.slottedMenus?.length) {
26825
+ if (!this.slottedMenus || this.slottedMenus.length === 0) {
26804
26826
  return undefined;
26805
26827
  }
26806
26828
  let currentItem = this.slottedMenus[0];
@@ -26831,7 +26853,7 @@ so this becomes the fallback color for the slot */ ''}
26831
26853
  }
26832
26854
  focusLastMenuItem() {
26833
26855
  const menuItems = this.getMenu()?.querySelectorAll('[role=menuitem]');
26834
- if (menuItems?.length) {
26856
+ if (menuItems && menuItems.length > 0) {
26835
26857
  const lastMenuItem = menuItems[menuItems.length - 1];
26836
26858
  lastMenuItem.focus();
26837
26859
  }
@@ -26869,8 +26891,8 @@ so this becomes the fallback color for the slot */ ''}
26869
26891
  ], MenuButton.prototype, "slottedMenus", void 0);
26870
26892
  const nimbleMenuButton = MenuButton.compose({
26871
26893
  baseName: 'menu-button',
26872
- template: template$C,
26873
- styles: styles$I,
26894
+ template: template$E,
26895
+ styles: styles$K,
26874
26896
  shadowOptions: {
26875
26897
  delegatesFocus: true
26876
26898
  }
@@ -26878,7 +26900,7 @@ so this becomes the fallback color for the slot */ ''}
26878
26900
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleMenuButton());
26879
26901
  const menuButtonTag = 'nimble-menu-button';
26880
26902
 
26881
- const styles$H = css `
26903
+ const styles$J = css `
26882
26904
  ${display$2('grid')}
26883
26905
 
26884
26906
  :host {
@@ -26975,7 +26997,7 @@ so this becomes the fallback color for the slot */ ''}
26975
26997
  baseName: 'menu-item',
26976
26998
  baseClass: MenuItem$1,
26977
26999
  template: menuItemTemplate,
26978
- styles: styles$H,
27000
+ styles: styles$J,
26979
27001
  expandCollapseGlyph: arrowExpanderRight16X16.data
26980
27002
  });
26981
27003
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleMenuItem());
@@ -26990,10 +27012,10 @@ so this becomes the fallback color for the slot */ ''}
26990
27012
  frameless: 'frameless'
26991
27013
  };
26992
27014
 
26993
- const styles$G = css `
27015
+ const styles$I = css `
26994
27016
  ${display$2('inline-block')}
26995
- ${styles$V}
26996
- ${styles$R}
27017
+ ${styles$X}
27018
+ ${styles$T}
26997
27019
 
26998
27020
  :host {
26999
27021
  font: ${bodyFont};
@@ -27208,7 +27230,7 @@ so this becomes the fallback color for the slot */ ''}
27208
27230
  const labelTemplate$4 = createRequiredVisibleLabelTemplate(html `<label
27209
27231
  part="label"
27210
27232
  for="control"
27211
- class="${x => (x.defaultSlottedNodes?.length ? 'label' : 'label label__hidden')}"
27233
+ class="${x => (x.defaultSlottedNodes?.length > 0 ? 'label' : 'label label__hidden')}"
27212
27234
  >
27213
27235
  <slot ${slotted('defaultSlottedNodes')}></slot>
27214
27236
  </label>`);
@@ -27216,7 +27238,7 @@ so this becomes the fallback color for the slot */ ''}
27216
27238
  * The template for the {@link @ni/fast-foundation#(NumberField:class)} component.
27217
27239
  * @public
27218
27240
  */
27219
- const template$B = (context, definition) => html `
27241
+ const template$D = (context, definition) => html `
27220
27242
  <template class="${x => (x.readOnly ? 'readonly' : '')}">
27221
27243
  ${labelTemplate$4}
27222
27244
  <div class="root" part="root">
@@ -27273,7 +27295,7 @@ so this becomes the fallback color for the slot */ ''}
27273
27295
  @click="${x => x.stepUp()}"
27274
27296
  >
27275
27297
  <slot name="step-up-glyph">
27276
- ${definition.stepUpGlyph || ''}
27298
+ ${definition.stepUpGlyph ?? ''}
27277
27299
  </slot>
27278
27300
  </div>
27279
27301
  <div
@@ -27282,7 +27304,7 @@ so this becomes the fallback color for the slot */ ''}
27282
27304
  @click="${x => x.stepDown()}"
27283
27305
  >
27284
27306
  <slot name="step-down-glyph">
27285
- ${definition.stepDownGlyph || ''}
27307
+ ${definition.stepDownGlyph ?? ''}
27286
27308
  </slot>
27287
27309
  </div>
27288
27310
  </div>
@@ -27370,8 +27392,8 @@ so this becomes the fallback color for the slot */ ''}
27370
27392
  const nimbleNumberField = NumberField.compose({
27371
27393
  baseName: 'number-field',
27372
27394
  baseClass: NumberField$1,
27373
- template: template$B,
27374
- styles: styles$G,
27395
+ template: template$D,
27396
+ styles: styles$I,
27375
27397
  shadowOptions: {
27376
27398
  delegatesFocus: true
27377
27399
  },
@@ -27414,7 +27436,7 @@ so this becomes the fallback color for the slot */ ''}
27414
27436
  });
27415
27437
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleNumberField());
27416
27438
 
27417
- const styles$F = css `
27439
+ const styles$H = css `
27418
27440
  ${display$2('inline-flex')}
27419
27441
 
27420
27442
  :host {
@@ -27514,15 +27536,15 @@ so this becomes the fallback color for the slot */ ''}
27514
27536
  baseName: 'radio',
27515
27537
  baseClass: Radio$1,
27516
27538
  template: radioTemplate,
27517
- styles: styles$F,
27539
+ styles: styles$H,
27518
27540
  checkedIndicator: circleFilled16X16.data
27519
27541
  });
27520
27542
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleRadio());
27521
27543
 
27522
- const styles$E = css `
27544
+ const styles$G = css `
27523
27545
  ${display$2('inline-block')}
27524
- ${styles$V}
27525
- ${styles$R}
27546
+ ${styles$X}
27547
+ ${styles$T}
27526
27548
 
27527
27549
  .positioning-region {
27528
27550
  display: flex;
@@ -27561,7 +27583,7 @@ so this becomes the fallback color for the slot */ ''}
27561
27583
  `;
27562
27584
 
27563
27585
  const labelTemplate$3 = createRequiredVisibleLabelTemplate(html `<slot name="label"></slot>`);
27564
- const template$A = html `
27586
+ const template$C = html `
27565
27587
  <template
27566
27588
  role="radiogroup"
27567
27589
  aria-disabled="${x => x.disabled}"
@@ -27601,8 +27623,8 @@ so this becomes the fallback color for the slot */ ''}
27601
27623
  const nimbleRadioGroup = RadioGroup.compose({
27602
27624
  baseName: 'radio-group',
27603
27625
  baseClass: RadioGroup$1,
27604
- template: template$A,
27605
- styles: styles$E,
27626
+ template: template$C,
27627
+ styles: styles$G,
27606
27628
  shadowOptions: {
27607
27629
  delegatesFocus: true
27608
27630
  }
@@ -31538,7 +31560,7 @@ so this becomes the fallback color for the slot */ ''}
31538
31560
  JSON-serialization identifier using
31539
31561
  [`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).
31540
31562
  */
31541
- class Step {
31563
+ let Step$1 = class Step {
31542
31564
  /**
31543
31565
  Get the step map that represents the changes made by this step,
31544
31566
  and which can be used to transform between positions in the old
@@ -31576,7 +31598,7 @@ so this becomes the fallback color for the slot */ ''}
31576
31598
  stepClass.prototype.jsonID = id;
31577
31599
  return stepClass;
31578
31600
  }
31579
- }
31601
+ };
31580
31602
  /**
31581
31603
  The result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a
31582
31604
  new document or a failure value.
@@ -31637,7 +31659,7 @@ so this becomes the fallback color for the slot */ ''}
31637
31659
  /**
31638
31660
  Add a mark to all inline content between two positions.
31639
31661
  */
31640
- class AddMarkStep extends Step {
31662
+ class AddMarkStep extends Step$1 {
31641
31663
  /**
31642
31664
  Create a mark step.
31643
31665
  */
@@ -31698,11 +31720,11 @@ so this becomes the fallback color for the slot */ ''}
31698
31720
  return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));
31699
31721
  }
31700
31722
  }
31701
- Step.jsonID("addMark", AddMarkStep);
31723
+ Step$1.jsonID("addMark", AddMarkStep);
31702
31724
  /**
31703
31725
  Remove a mark from all inline content between two positions.
31704
31726
  */
31705
- class RemoveMarkStep extends Step {
31727
+ class RemoveMarkStep extends Step$1 {
31706
31728
  /**
31707
31729
  Create a mark-removing step.
31708
31730
  */
@@ -31760,11 +31782,11 @@ so this becomes the fallback color for the slot */ ''}
31760
31782
  return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));
31761
31783
  }
31762
31784
  }
31763
- Step.jsonID("removeMark", RemoveMarkStep);
31785
+ Step$1.jsonID("removeMark", RemoveMarkStep);
31764
31786
  /**
31765
31787
  Add a mark to a specific node.
31766
31788
  */
31767
- class AddNodeMarkStep extends Step {
31789
+ class AddNodeMarkStep extends Step$1 {
31768
31790
  /**
31769
31791
  Create a node mark step.
31770
31792
  */
@@ -31817,11 +31839,11 @@ so this becomes the fallback color for the slot */ ''}
31817
31839
  return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));
31818
31840
  }
31819
31841
  }
31820
- Step.jsonID("addNodeMark", AddNodeMarkStep);
31842
+ Step$1.jsonID("addNodeMark", AddNodeMarkStep);
31821
31843
  /**
31822
31844
  Remove a mark from a specific node.
31823
31845
  */
31824
- class RemoveNodeMarkStep extends Step {
31846
+ class RemoveNodeMarkStep extends Step$1 {
31825
31847
  /**
31826
31848
  Create a mark-removing step.
31827
31849
  */
@@ -31867,12 +31889,12 @@ so this becomes the fallback color for the slot */ ''}
31867
31889
  return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));
31868
31890
  }
31869
31891
  }
31870
- Step.jsonID("removeNodeMark", RemoveNodeMarkStep);
31892
+ Step$1.jsonID("removeNodeMark", RemoveNodeMarkStep);
31871
31893
 
31872
31894
  /**
31873
31895
  Replace a part of the document with a slice of new content.
31874
31896
  */
31875
- class ReplaceStep extends Step {
31897
+ class ReplaceStep extends Step$1 {
31876
31898
  /**
31877
31899
  The given `slice` should fit the 'gap' between `from` and
31878
31900
  `to`—the depths must line up, and the surrounding nodes must be
@@ -31956,13 +31978,13 @@ so this becomes the fallback color for the slot */ ''}
31956
31978
  return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure);
31957
31979
  }
31958
31980
  }
31959
- Step.jsonID("replace", ReplaceStep);
31981
+ Step$1.jsonID("replace", ReplaceStep);
31960
31982
  /**
31961
31983
  Replace a part of the document with a slice of content, but
31962
31984
  preserve a range of the replaced content by moving it into the
31963
31985
  slice.
31964
31986
  */
31965
- class ReplaceAroundStep extends Step {
31987
+ class ReplaceAroundStep extends Step$1 {
31966
31988
  /**
31967
31989
  Create a replace-around step with the given range and gap.
31968
31990
  `insert` should be the point in the slice into which the content
@@ -32055,7 +32077,7 @@ so this becomes the fallback color for the slot */ ''}
32055
32077
  return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);
32056
32078
  }
32057
32079
  }
32058
- Step.jsonID("replaceAround", ReplaceAroundStep);
32080
+ Step$1.jsonID("replaceAround", ReplaceAroundStep);
32059
32081
  function contentBetween(doc, from, to) {
32060
32082
  let $from = doc.resolve(from), dist = to - from, depth = $from.depth;
32061
32083
  while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {
@@ -32979,7 +33001,7 @@ so this becomes the fallback color for the slot */ ''}
32979
33001
  /**
32980
33002
  Update an attribute in a specific node.
32981
33003
  */
32982
- class AttrStep extends Step {
33004
+ class AttrStep extends Step$1 {
32983
33005
  /**
32984
33006
  Construct an attribute step.
32985
33007
  */
@@ -33029,11 +33051,11 @@ so this becomes the fallback color for the slot */ ''}
33029
33051
  return new AttrStep(json.pos, json.attr, json.value);
33030
33052
  }
33031
33053
  }
33032
- Step.jsonID("attr", AttrStep);
33054
+ Step$1.jsonID("attr", AttrStep);
33033
33055
  /**
33034
33056
  Update an attribute in the doc node.
33035
33057
  */
33036
- class DocAttrStep extends Step {
33058
+ class DocAttrStep extends Step$1 {
33037
33059
  /**
33038
33060
  Construct an attribute step.
33039
33061
  */
@@ -33074,7 +33096,7 @@ so this becomes the fallback color for the slot */ ''}
33074
33096
  return new DocAttrStep(json.attr, json.value);
33075
33097
  }
33076
33098
  }
33077
- Step.jsonID("docAttr", DocAttrStep);
33099
+ Step$1.jsonID("docAttr", DocAttrStep);
33078
33100
 
33079
33101
  /**
33080
33102
  @internal
@@ -46746,7 +46768,7 @@ ${renderedContent}
46746
46768
  // src/index.ts
46747
46769
  var index_default$7 = HardBreak;
46748
46770
 
46749
- const styles$D = css `
46771
+ const styles$F = css `
46750
46772
  ${display$2('inline')}
46751
46773
 
46752
46774
  .positioning-region {
@@ -46783,7 +46805,7 @@ ${renderedContent}
46783
46805
  baseName: 'toolbar',
46784
46806
  baseClass: Toolbar$1,
46785
46807
  template: toolbarTemplate,
46786
- styles: styles$D
46808
+ styles: styles$F
46787
46809
  });
46788
46810
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleToolbar());
46789
46811
  const toolbarTag = 'nimble-toolbar';
@@ -46812,8 +46834,8 @@ ${renderedContent}
46812
46834
  cssCustomPropertyName: null
46813
46835
  }).withDefault(richTextLabelDefaults.richTextToggleNumberedListLabel);
46814
46836
 
46815
- const styles$C = css `
46816
- ${styles$S}
46837
+ const styles$E = css `
46838
+ ${styles$U}
46817
46839
 
46818
46840
  :host {
46819
46841
  height: auto;
@@ -46831,7 +46853,7 @@ ${renderedContent}
46831
46853
  }
46832
46854
  `;
46833
46855
 
46834
- const template$z = html `
46856
+ const template$B = html `
46835
46857
  <template>
46836
46858
  <${anchoredRegionTag}
46837
46859
  ${ref('region')}
@@ -46932,7 +46954,7 @@ ${renderedContent}
46932
46954
  */
46933
46955
  get options() {
46934
46956
  Observable.track(this, 'options');
46935
- return this.filteredOptions?.length ? this.filteredOptions : [];
46957
+ return this.filteredOptions?.length > 0 ? this.filteredOptions : [];
46936
46958
  }
46937
46959
  set options(value) {
46938
46960
  this._options = value;
@@ -47002,7 +47024,7 @@ ${renderedContent}
47002
47024
  this._options.forEach(o => {
47003
47025
  o.hidden = !this.filteredOptions.includes(o);
47004
47026
  });
47005
- if (this.filteredOptions.length) {
47027
+ if (this.filteredOptions.length > 0) {
47006
47028
  this.selectedOptions = [this.filteredOptions[0]];
47007
47029
  this.selectedIndex = this.options.indexOf(this.firstSelectedOption);
47008
47030
  }
@@ -47092,7 +47114,7 @@ ${renderedContent}
47092
47114
  * Overrides: `Listbox.focusAndScrollOptionIntoView`
47093
47115
  */
47094
47116
  focusAndScrollOptionIntoView() {
47095
- if (this.open && this.firstSelectedOption) {
47117
+ if (this.open && this.firstSelectedOption !== null) {
47096
47118
  requestAnimationFrame(() => {
47097
47119
  this.firstSelectedOption?.scrollIntoView({ block: 'nearest' });
47098
47120
  });
@@ -47119,15 +47141,15 @@ ${renderedContent}
47119
47141
  ], RichTextMentionListbox.prototype, "anchorElement", void 0);
47120
47142
  const nimbleRichTextMentionListbox = RichTextMentionListbox.compose({
47121
47143
  baseName: 'rich-text-mention-listbox',
47122
- template: template$z,
47123
- styles: styles$C
47144
+ template: template$B,
47145
+ styles: styles$E
47124
47146
  });
47125
47147
  DesignSystem.getOrCreate()
47126
47148
  .withPrefix('nimble')
47127
47149
  .register(nimbleRichTextMentionListbox());
47128
47150
  const richTextMentionListboxTag = 'nimble-rich-text-mention-listbox';
47129
47151
 
47130
- const template$y = html `
47152
+ const template$A = html `
47131
47153
  <template
47132
47154
  ${children$1({ property: 'childItems', filter: elements() })}
47133
47155
  @focusout="${x => x.focusoutHandler()}"
@@ -47229,9 +47251,9 @@ ${renderedContent}
47229
47251
  </template>
47230
47252
  `;
47231
47253
 
47232
- const styles$B = css `
47254
+ const styles$D = css `
47233
47255
  ${display$2('inline-flex')}
47234
- ${styles$V}
47256
+ ${styles$X}
47235
47257
 
47236
47258
  :host {
47237
47259
  font: ${bodyFont};
@@ -56890,7 +56912,7 @@ ${renderedContent}
56890
56912
  * https://github.com/ProseMirror/prosemirror-markdown/blob/b7c1fd2fb74c7564bfe5428c7c8141ded7ebdd9f/src/to_markdown.ts#L94C2-L101C7
56891
56913
  */
56892
56914
  const orderedListNode = function orderedList(state, node) {
56893
- const start = node.attrs.start || 1;
56915
+ const start = node.attrs.start ?? 1;
56894
56916
  const maxW = String(start + node.childCount - 1).length;
56895
56917
  const space = state.repeat(' ', maxW + 2);
56896
56918
  state.renderList(node, space, i => {
@@ -57261,7 +57283,7 @@ ${renderedContent}
57261
57283
  };
57262
57284
  }
57263
57285
  isValid() {
57264
- return Object.values(this.getValidity()).every(x => x === false);
57286
+ return Object.values(this.getValidity()).every(x => !x);
57265
57287
  }
57266
57288
  validate(mentions) {
57267
57289
  this.validateDuplicateMentionConfigurations(mentions);
@@ -63004,7 +63026,7 @@ ${nextLine.slice(indentLevel + 2)}`;
63004
63026
  const updatedNodes = [];
63005
63027
  fragment.forEach(node => {
63006
63028
  if (node.isText && node.marks.length > 0) {
63007
- const linkMark = node.marks.find(mark => mark.type.name === 'link' && mark.attrs);
63029
+ const linkMark = node.marks.find(mark => mark.type.name === 'link');
63008
63030
  if (linkMark) {
63009
63031
  // Checks if the link is valid link or not
63010
63032
  // Needing to separately validate the link on paste is a workaround for a tiptap issue
@@ -63129,7 +63151,7 @@ ${nextLine.slice(indentLevel + 2)}`;
63129
63151
  if (node.type.name.startsWith(mentionPluginPrefix)) {
63130
63152
  hasMention = true;
63131
63153
  }
63132
- const continueDescent = hasMention === false;
63154
+ const continueDescent = !hasMention;
63133
63155
  return continueDescent;
63134
63156
  });
63135
63157
  return !hasMention;
@@ -63605,8 +63627,8 @@ ${nextLine.slice(indentLevel + 2)}`;
63605
63627
  applyMixins(RichTextEditor, ARIAGlobalStatesAndProperties);
63606
63628
  const nimbleRichTextEditor = RichTextEditor.compose({
63607
63629
  baseName: 'rich-text-editor',
63608
- template: template$y,
63609
- styles: styles$B,
63630
+ template: template$A,
63631
+ styles: styles$D,
63610
63632
  shadowOptions: {
63611
63633
  delegatesFocus: true
63612
63634
  }
@@ -63615,13 +63637,13 @@ ${nextLine.slice(indentLevel + 2)}`;
63615
63637
  .withPrefix('nimble')
63616
63638
  .register(nimbleRichTextEditor());
63617
63639
 
63618
- const template$x = html `
63640
+ const template$z = html `
63619
63641
  <template ${children$1({ property: 'childItems', filter: elements() })}>
63620
63642
  <div ${ref('viewer')} class="viewer"></div>
63621
63643
  </template>
63622
63644
  `;
63623
63645
 
63624
- const styles$A = css `
63646
+ const styles$C = css `
63625
63647
  ${display$2('flex')}
63626
63648
 
63627
63649
  :host {
@@ -63734,17 +63756,17 @@ ${nextLine.slice(indentLevel + 2)}`;
63734
63756
  ], RichTextViewer.prototype, "markdown", void 0);
63735
63757
  const nimbleRichTextViewer = RichTextViewer.compose({
63736
63758
  baseName: 'rich-text-viewer',
63737
- template: template$x,
63738
- styles: styles$A
63759
+ template: template$z,
63760
+ styles: styles$C
63739
63761
  });
63740
63762
  DesignSystem.getOrCreate()
63741
63763
  .withPrefix('nimble')
63742
63764
  .register(nimbleRichTextViewer());
63743
63765
 
63744
- const styles$z = css `
63745
- ${styles$S}
63746
- ${styles$V}
63747
- ${styles$R}
63766
+ const styles$B = css `
63767
+ ${styles$U}
63768
+ ${styles$X}
63769
+ ${styles$T}
63748
63770
 
63749
63771
  ${
63750
63772
  /* We are using flex `order` to define the visual ordering of the selected value,
@@ -63907,7 +63929,7 @@ ${nextLine.slice(indentLevel + 2)}`;
63907
63929
  }
63908
63930
  `));
63909
63931
 
63910
- const styles$y = css `
63932
+ const styles$A = css `
63911
63933
  ${display$2('inline-grid')}
63912
63934
 
63913
63935
  :host {
@@ -64077,7 +64099,7 @@ ${nextLine.slice(indentLevel + 2)}`;
64077
64099
  }
64078
64100
  `));
64079
64101
 
64080
- const template$w = html `
64102
+ const template$y = html `
64081
64103
  <template role="progressbar">
64082
64104
  ${''
64083
64105
  /**
@@ -64124,8 +64146,8 @@ ${nextLine.slice(indentLevel + 2)}`;
64124
64146
  ], Spinner.prototype, "appearance", void 0);
64125
64147
  const nimbleSpinner = Spinner.compose({
64126
64148
  baseName: 'spinner',
64127
- template: template$w,
64128
- styles: styles$y
64149
+ template: template$y,
64150
+ styles: styles$A
64129
64151
  });
64130
64152
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleSpinner());
64131
64153
  const spinnerTag = 'nimble-spinner';
@@ -64141,7 +64163,7 @@ ${nextLine.slice(indentLevel + 2)}`;
64141
64163
  <slot ${ref('labelSlot')}></slot>
64142
64164
  </label>
64143
64165
  `);
64144
- const template$v = (context, definition) => html `
64166
+ const template$x = (context, definition) => html `
64145
64167
  <template
64146
64168
  class="${x => [
64147
64169
  x.collapsible && 'collapsible',
@@ -64193,7 +64215,7 @@ ${nextLine.slice(indentLevel + 2)}`;
64193
64215
  `)}
64194
64216
  <div aria-hidden="true" class="indicator" part="indicator">
64195
64217
  <slot name="indicator">
64196
- ${definition.indicator || ''}
64218
+ ${definition.indicator ?? ''}
64197
64219
  </slot>
64198
64220
  </div>
64199
64221
  </slot>
@@ -64385,7 +64407,7 @@ ${nextLine.slice(indentLevel + 2)}`;
64385
64407
  set value(next) {
64386
64408
  const prev = this._value;
64387
64409
  let newValue = next;
64388
- if (this.options?.length) {
64410
+ if (this.options !== undefined && this.options.length > 0) {
64389
64411
  const newValueIndex = this.options.findIndex(el => el.value === newValue);
64390
64412
  const prevSelectedValue = this.options[this.selectedIndex]?.value ?? null;
64391
64413
  const nextSelectedValue = this.options[newValueIndex]?.value ?? null;
@@ -64414,7 +64436,7 @@ ${nextLine.slice(indentLevel + 2)}`;
64414
64436
  * @internal
64415
64437
  */
64416
64438
  anchoredRegionChanged(_prev, _next) {
64417
- if (this.anchoredRegion && this.control) {
64439
+ if (this.anchoredRegion !== undefined && this.control !== undefined) {
64418
64440
  this.anchoredRegion.anchorElement = this.control;
64419
64441
  }
64420
64442
  }
@@ -64422,7 +64444,7 @@ ${nextLine.slice(indentLevel + 2)}`;
64422
64444
  * @internal
64423
64445
  */
64424
64446
  controlChanged(_prev, _next) {
64425
- if (this.anchoredRegion && this.control) {
64447
+ if (this.anchoredRegion !== undefined && this.control !== undefined) {
64426
64448
  this.anchoredRegion.anchorElement = this.control;
64427
64449
  }
64428
64450
  }
@@ -64579,9 +64601,7 @@ ${nextLine.slice(indentLevel + 2)}`;
64579
64601
  */
64580
64602
  multipleChanged(prev, next) {
64581
64603
  super.multipleChanged(prev, next);
64582
- if (this.proxy) {
64583
- this.proxy.multiple = next;
64584
- }
64604
+ this.proxy.multiple = next;
64585
64605
  }
64586
64606
  /**
64587
64607
  * @internal
@@ -64638,7 +64658,7 @@ ${nextLine.slice(indentLevel + 2)}`;
64638
64658
  if (this.filterMode !== FilterMode.none) {
64639
64659
  this.emitFilterInputEvent();
64640
64660
  }
64641
- if (e.inputType.includes('deleteContent') || !this.filter.length) {
64661
+ if (e.inputType.includes('deleteContent') || this.filter.length === 0) {
64642
64662
  return true;
64643
64663
  }
64644
64664
  e.stopPropagation();
@@ -64807,7 +64827,7 @@ ${nextLine.slice(indentLevel + 2)}`;
64807
64827
  typeaheadBufferChanged(_, __) {
64808
64828
  if (this.$fastController.isConnected) {
64809
64829
  const typeaheadMatches = this.getTypeaheadMatches();
64810
- if (typeaheadMatches.length) {
64830
+ if (typeaheadMatches.length > 0) {
64811
64831
  const activeOptionIndex = this.options.indexOf(typeaheadMatches[0]);
64812
64832
  if (!(this.open && this.filterMode !== FilterMode.none)) {
64813
64833
  this.setActiveOption(activeOptionIndex);
@@ -64940,9 +64960,7 @@ ${nextLine.slice(indentLevel + 2)}`;
64940
64960
  */
64941
64961
  sizeChanged(prev, next) {
64942
64962
  super.sizeChanged(prev, next);
64943
- if (this.proxy) {
64944
- this.proxy.size = next;
64945
- }
64963
+ this.proxy.size = next;
64946
64964
  }
64947
64965
  openChanged() {
64948
64966
  if (!this.collapsible) {
@@ -65247,14 +65265,14 @@ ${nextLine.slice(indentLevel + 2)}`;
65247
65265
  * @internal
65248
65266
  */
65249
65267
  setProxyOptions() {
65250
- if (this.proxy instanceof HTMLSelectElement && this.options) {
65268
+ if (this.proxy instanceof HTMLSelectElement && this.options !== null) {
65251
65269
  this.proxy.options.length = 0;
65252
65270
  this.options.forEach(option => {
65253
65271
  const proxyOption = option.proxy
65254
- || (option instanceof HTMLOptionElement
65272
+ ?? (option instanceof HTMLOptionElement
65255
65273
  ? option.cloneNode()
65256
65274
  : null);
65257
- if (proxyOption) {
65275
+ if (proxyOption !== null) {
65258
65276
  this.proxy.options.add(proxyOption);
65259
65277
  }
65260
65278
  });
@@ -65282,7 +65300,7 @@ ${nextLine.slice(indentLevel + 2)}`;
65282
65300
  return;
65283
65301
  }
65284
65302
  const selectedOption = this.firstSelectedOption;
65285
- if (selectedOption) {
65303
+ if (selectedOption !== null) {
65286
65304
  this.selectedOptionObserver?.observe(selectedOption, {
65287
65305
  characterData: true,
65288
65306
  subtree: true,
@@ -65357,8 +65375,8 @@ ${nextLine.slice(indentLevel + 2)}`;
65357
65375
  const nimbleSelect = Select.compose({
65358
65376
  baseName: 'select',
65359
65377
  baseClass: Select$2,
65360
- template: template$v,
65361
- styles: styles$z,
65378
+ template: template$x,
65379
+ styles: styles$B,
65362
65380
  indicator: arrowExpanderDown16X16.data,
65363
65381
  end: html `
65364
65382
  <${iconExclamationMarkTag}
@@ -65371,6 +65389,46 @@ ${nextLine.slice(indentLevel + 2)}`;
65371
65389
  applyMixins(Select, StartEnd, DelegatesARIASelect);
65372
65390
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleSelect());
65373
65391
 
65392
+ const styles$z = css `
65393
+ ${display$2('flex')}
65394
+ `;
65395
+
65396
+ const template$w = html `
65397
+ <template>step</template>
65398
+ `;
65399
+
65400
+ /**
65401
+ * A nimble-styled step for a stepper
65402
+ */
65403
+ class Step extends FoundationElement {
65404
+ }
65405
+ const nimbleStep = Step.compose({
65406
+ baseName: 'step',
65407
+ template: template$w,
65408
+ styles: styles$z
65409
+ });
65410
+ DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleStep());
65411
+
65412
+ const styles$y = css `
65413
+ ${display$2('flex')}
65414
+ `;
65415
+
65416
+ const template$v = html `
65417
+ <template>stepper: <slot></slot></template>
65418
+ `;
65419
+
65420
+ /**
65421
+ * A nimble-styled stepper
65422
+ */
65423
+ class Stepper extends FoundationElement {
65424
+ }
65425
+ const nimbleStepper = Stepper.compose({
65426
+ baseName: 'stepper',
65427
+ template: template$v,
65428
+ styles: styles$y
65429
+ });
65430
+ DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleStepper());
65431
+
65374
65432
  const styles$x = css `
65375
65433
  ${display$2('inline-flex')}
65376
65434
 
@@ -65546,7 +65604,7 @@ ${nextLine.slice(indentLevel + 2)}`;
65546
65604
  >
65547
65605
  <label
65548
65606
  part="label"
65549
- class="${x => (x.defaultSlottedNodes?.length ? 'label' : 'label label__hidden')}"
65607
+ class="${x => (x.defaultSlottedNodes?.length > 0 ? 'label' : 'label label__hidden')}"
65550
65608
  >
65551
65609
  <slot ${slotted('defaultSlottedNodes')}></slot>
65552
65610
  </label>
@@ -69348,7 +69406,7 @@ ${nextLine.slice(indentLevel + 2)}`;
69348
69406
  };
69349
69407
  }
69350
69408
  isValid() {
69351
- return Object.values(this.getValidity()).every(x => x === false);
69409
+ return Object.values(this.getValidity()).every(x => !x);
69352
69410
  }
69353
69411
  areRecordIdsValid() {
69354
69412
  const validity = this.getValidity();
@@ -72075,7 +72133,7 @@ focus outline in that case.
72075
72133
  return this.getVisibleColumns()
72076
72134
  .map(column => {
72077
72135
  const { minPixelWidth, currentPixelWidth, currentFractionalWidth } = column.columnInternals;
72078
- if (currentPixelWidth) {
72136
+ if (currentPixelWidth !== undefined) {
72079
72137
  const coercedPixelWidth = Math.max(minPixelWidth, currentPixelWidth);
72080
72138
  return `${coercedPixelWidth}px`;
72081
72139
  }
@@ -72537,7 +72595,7 @@ focus outline in that case.
72537
72595
  const allRows = [];
72538
72596
  for (const row of topLevelRows) {
72539
72597
  allRows.push(row);
72540
- if (row.subRows?.length) {
72598
+ if (row.subRows?.length > 0) {
72541
72599
  allRows.push(...this.getOrderedRows(row.subRows));
72542
72600
  }
72543
72601
  }
@@ -72792,10 +72850,8 @@ focus outline in that case.
72792
72850
  originalIndex: undefined
72793
72851
  };
72794
72852
  }
72795
- // if we track orphans, delete this item from the orphan set if it is in it
72796
- if (orphanIds) {
72797
- orphanIds.delete(itemId);
72798
- }
72853
+ // delete this item from the orphan set if it is in it
72854
+ orphanIds.delete(itemId);
72799
72855
  // add the current item's data to the item in the lookup table
72800
72856
  lookup[itemId].clientRecord = item;
72801
72857
  const treeItem = lookup[itemId];
@@ -72815,16 +72871,14 @@ focus outline in that case.
72815
72871
  clientRecord: undefined,
72816
72872
  originalIndex: undefined
72817
72873
  };
72818
- // if we track orphans, add the generated parent to the orphan list
72819
- if (orphanIds) {
72820
- orphanIds.add(parentId);
72821
- }
72874
+ // add the generated parent to the orphan list
72875
+ orphanIds.add(parentId);
72822
72876
  }
72823
72877
  // add the current item to the parent
72824
72878
  lookup[parentId].subRows.push(treeItem);
72825
72879
  }
72826
72880
  }
72827
- if (orphanIds?.size) {
72881
+ if (orphanIds.size > 0) {
72828
72882
  const orphans = Array.from(orphanIds.values()).join(',');
72829
72883
  throw new Error(`The items array contains orphans that point to the following parentIds: [${orphans}]. These parentIds do not exist in the items array.`);
72830
72884
  }
@@ -72839,7 +72893,7 @@ focus outline in that case.
72839
72893
  * @returns Number of nodes in the tree
72840
72894
  */
72841
72895
  function countNodes(tree) {
72842
- return tree.reduce((sum, n) => sum + 1 + (n.subRows && countNodes(n.subRows)), 0);
72896
+ return tree.reduce((sum, n) => sum + 1 + (n.subRows ? countNodes(n.subRows) : 0), 0);
72843
72897
  }
72844
72898
 
72845
72899
  /**
@@ -74905,7 +74959,7 @@ focus outline in that case.
74905
74959
  calculateTanStackSortState() {
74906
74960
  const sortedColumns = this.getColumnsParticipatingInSorting().sort((x, y) => x.columnInternals.currentSortIndex
74907
74961
  - y.columnInternals.currentSortIndex);
74908
- this.firstSortedColumn = sortedColumns.length
74962
+ this.firstSortedColumn = sortedColumns.length > 0
74909
74963
  ? sortedColumns[0]
74910
74964
  : undefined;
74911
74965
  return sortedColumns.map(column => {
@@ -76109,13 +76163,13 @@ focus outline in that case.
76109
76163
  }
76110
76164
  const hours = Math.floor((milliseconds / millisecondsPerHour) % 24);
76111
76165
  remainingTime -= hours * millisecondsPerHour;
76112
- if (hours) {
76166
+ if (hours !== 0) {
76113
76167
  const formattedHours = this.hoursFormatter.format(hours);
76114
76168
  result.push(formattedHours);
76115
76169
  }
76116
76170
  const minutes = Math.floor((milliseconds / millisecondsPerMinute) % 60);
76117
76171
  remainingTime -= minutes * millisecondsPerMinute;
76118
- if (minutes) {
76172
+ if (minutes !== 0) {
76119
76173
  const formattedMinutes = this.minutesFormatter.format(minutes);
76120
76174
  result.push(formattedMinutes);
76121
76175
  }
@@ -77614,7 +77668,7 @@ focus outline in that case.
77614
77668
  .register(nimbleTableColumnText());
77615
77669
 
77616
77670
  const styles$g = css `
77617
- ${styles$13}
77671
+ ${styles$15}
77618
77672
 
77619
77673
  .tabpanel {
77620
77674
  overflow: auto;
@@ -77695,7 +77749,7 @@ focus outline in that case.
77695
77749
  const nimbleTabs = Tabs.compose({
77696
77750
  baseName: 'tabs',
77697
77751
  baseClass: Tabs$1,
77698
- template: template$P,
77752
+ template: template$R,
77699
77753
  styles: styles$g
77700
77754
  });
77701
77755
  DesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTabs());
@@ -77777,8 +77831,8 @@ focus outline in that case.
77777
77831
 
77778
77832
  const styles$e = css `
77779
77833
  ${display$2('inline-flex')}
77780
- ${styles$V}
77781
- ${styles$R}
77834
+ ${styles$X}
77835
+ ${styles$T}
77782
77836
 
77783
77837
  :host {
77784
77838
  font: ${bodyFont};
@@ -77965,7 +78019,7 @@ focus outline in that case.
77965
78019
  <label
77966
78020
  part="label"
77967
78021
  for="control"
77968
- class="${x => (x.defaultSlottedNodes?.length ? 'label' : 'label label__hidden')}"
78022
+ class="${x => (x.defaultSlottedNodes?.length > 0 ? 'label' : 'label label__hidden')}"
77969
78023
  >
77970
78024
  <slot ${slotted('defaultSlottedNodes')}></slot>
77971
78025
  </label>
@@ -78138,8 +78192,8 @@ focus outline in that case.
78138
78192
 
78139
78193
  const styles$d = css `
78140
78194
  ${display$2('inline-block')}
78141
- ${styles$V}
78142
- ${styles$R}
78195
+ ${styles$X}
78196
+ ${styles$T}
78143
78197
 
78144
78198
  :host {
78145
78199
  font: ${bodyFont};
@@ -78400,7 +78454,7 @@ focus outline in that case.
78400
78454
  const labelTemplate = createRequiredVisibleLabelTemplate(html `<label
78401
78455
  part="label"
78402
78456
  for="control"
78403
- class="${x => (x.defaultSlottedNodes?.length ? 'label' : 'label label__hidden')}"
78457
+ class="${x => (x.defaultSlottedNodes?.length > 0 ? 'label' : 'label label__hidden')}"
78404
78458
  >
78405
78459
  <slot
78406
78460
  ${slotted({
@@ -95117,7 +95171,7 @@ focus outline in that case.
95117
95171
  }
95118
95172
  const dieWidth = this.wafermap.dataManager.dieDimensions.width;
95119
95173
  const dieHeight = this.wafermap.dataManager.dieDimensions.height;
95120
- const dieSize = dieWidth * dieHeight * (this.wafermap.transform.k || 1);
95174
+ const dieSize = dieWidth * dieHeight * (this.wafermap.transform.k !== 0 ? this.wafermap.transform.k : 1);
95121
95175
  if (dieSize >= this.minDieDim) {
95122
95176
  const fontsize = this.wafermap.dataManager.labelsFontSize;
95123
95177
  const context = this.wafermap.canvasContext;
@@ -95311,7 +95365,7 @@ focus outline in that case.
95311
95365
  };
95312
95366
  }
95313
95367
  isValid() {
95314
- return Object.values(this.getValidity()).every(x => x === false);
95368
+ return Object.values(this.getValidity()).every(x => !x);
95315
95369
  }
95316
95370
  validateGridDimensions() {
95317
95371
  this.invalidGridDimensions = false;
@@ -95706,7 +95760,7 @@ focus outline in that case.
95706
95760
  .join("-");
95707
95761
  }
95708
95762
 
95709
- const workerCode = "var MatrixRenderer = (function (exports) {\n 'use strict';\n\n /**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n const proxyMarker = Symbol(\"Comlink.proxy\");\n const createEndpoint = Symbol(\"Comlink.endpoint\");\n const releaseProxy = Symbol(\"Comlink.releaseProxy\");\n const finalizer = Symbol(\"Comlink.finalizer\");\n const throwMarker = Symbol(\"Comlink.thrown\");\n const isObject = (val) => (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n /**\n * Internal transfer handle to handle objects marked to proxy.\n */\n const proxyTransferHandler = {\n canHandle: (val) => isObject(val) && val[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n },\n };\n /**\n * Internal transfer handler to handle thrown exceptions.\n */\n const throwTransferHandler = {\n canHandle: (value) => isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized;\n if (value instanceof Error) {\n serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n };\n }\n else {\n serialized = { isError: false, value };\n }\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) {\n throw Object.assign(new Error(serialized.value.message), serialized.value);\n }\n throw serialized.value;\n },\n };\n /**\n * Allows customizing the serialization of certain values.\n */\n const transferHandlers = new Map([\n [\"proxy\", proxyTransferHandler],\n [\"throw\", throwTransferHandler],\n ]);\n function isAllowedOrigin(allowedOrigins, origin) {\n for (const allowedOrigin of allowedOrigins) {\n if (origin === allowedOrigin || allowedOrigin === \"*\") {\n return true;\n }\n if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n return true;\n }\n }\n return false;\n }\n function expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n ep.addEventListener(\"message\", function callback(ev) {\n if (!ev || !ev.data) {\n return;\n }\n if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n return;\n }\n const { id, type, path } = Object.assign({ path: [] }, ev.data);\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n switch (type) {\n case \"GET\" /* MessageType.GET */:\n {\n returnValue = rawValue;\n }\n break;\n case \"SET\" /* MessageType.SET */:\n {\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n }\n break;\n case \"APPLY\" /* MessageType.APPLY */:\n {\n returnValue = rawValue.apply(parent, argumentList);\n }\n break;\n case \"CONSTRUCT\" /* MessageType.CONSTRUCT */:\n {\n const value = new rawValue(...argumentList);\n returnValue = proxy(value);\n }\n break;\n case \"ENDPOINT\" /* MessageType.ENDPOINT */:\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case \"RELEASE\" /* MessageType.RELEASE */:\n {\n returnValue = undefined;\n }\n break;\n default:\n return;\n }\n }\n catch (value) {\n returnValue = { value, [throwMarker]: 0 };\n }\n Promise.resolve(returnValue)\n .catch((value) => {\n return { value, [throwMarker]: 0 };\n })\n .then((returnValue) => {\n const [wireValue, transferables] = toWireValue(returnValue);\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n if (type === \"RELEASE\" /* MessageType.RELEASE */) {\n // detach and deactive after sending release response above.\n ep.removeEventListener(\"message\", callback);\n closeEndPoint(ep);\n if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n obj[finalizer]();\n }\n }\n })\n .catch((error) => {\n // Send Serialization Error To Caller\n const [wireValue, transferables] = toWireValue({\n value: new TypeError(\"Unserializable return value\"),\n [throwMarker]: 0,\n });\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n });\n });\n if (ep.start) {\n ep.start();\n }\n }\n function isMessagePort(endpoint) {\n return endpoint.constructor.name === \"MessagePort\";\n }\n function closeEndPoint(endpoint) {\n if (isMessagePort(endpoint))\n endpoint.close();\n }\n function wrap(ep, target) {\n const pendingListeners = new Map();\n ep.addEventListener(\"message\", function handleMessage(ev) {\n const { data } = ev;\n if (!data || !data.id) {\n return;\n }\n const resolver = pendingListeners.get(data.id);\n if (!resolver) {\n return;\n }\n try {\n resolver(data);\n }\n finally {\n pendingListeners.delete(data.id);\n }\n });\n return createProxy(ep, pendingListeners, [], target);\n }\n function throwIfProxyReleased(isReleased) {\n if (isReleased) {\n throw new Error(\"Proxy has been released and is not useable\");\n }\n }\n function releaseEndpoint(ep) {\n return requestResponseMessage(ep, new Map(), {\n type: \"RELEASE\" /* MessageType.RELEASE */,\n }).then(() => {\n closeEndPoint(ep);\n });\n }\n const proxyCounter = new WeakMap();\n const proxyFinalizers = \"FinalizationRegistry\" in globalThis &&\n new FinalizationRegistry((ep) => {\n const newCount = (proxyCounter.get(ep) || 0) - 1;\n proxyCounter.set(ep, newCount);\n if (newCount === 0) {\n releaseEndpoint(ep);\n }\n });\n function registerProxy(proxy, ep) {\n const newCount = (proxyCounter.get(ep) || 0) + 1;\n proxyCounter.set(ep, newCount);\n if (proxyFinalizers) {\n proxyFinalizers.register(proxy, ep, proxy);\n }\n }\n function unregisterProxy(proxy) {\n if (proxyFinalizers) {\n proxyFinalizers.unregister(proxy);\n }\n }\n function createProxy(ep, pendingListeners, path = [], target = function () { }) {\n let isProxyReleased = false;\n const proxy = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) {\n return () => {\n unregisterProxy(proxy);\n releaseEndpoint(ep);\n pendingListeners.clear();\n isProxyReleased = true;\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, pendingListeners, {\n type: \"GET\" /* MessageType.GET */,\n path: path.map((p) => p.toString()),\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, pendingListeners, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n // boolean. To show good will, we return true asynchronously ¯\\_(ツ)_/¯\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"SET\" /* MessageType.SET */,\n path: [...path, prop].map((p) => p.toString()),\n value,\n }, transferables).then(fromWireValue);\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if (last === createEndpoint) {\n return requestResponseMessage(ep, pendingListeners, {\n type: \"ENDPOINT\" /* MessageType.ENDPOINT */,\n }).then(fromWireValue);\n }\n // We just pretend that `bind()` didn’t happen.\n if (last === \"bind\") {\n return createProxy(ep, pendingListeners, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"APPLY\" /* MessageType.APPLY */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"CONSTRUCT\" /* MessageType.CONSTRUCT */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n });\n registerProxy(proxy, ep);\n return proxy;\n }\n function myFlat(arr) {\n return Array.prototype.concat.apply([], arr);\n }\n function processArguments(argumentList) {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n }\n const transferCache = new WeakMap();\n function transfer(obj, transfers) {\n transferCache.set(obj, transfers);\n return obj;\n }\n function proxy(obj) {\n return Object.assign(obj, { [proxyMarker]: true });\n }\n function toWireValue(value) {\n for (const [name, handler] of transferHandlers) {\n if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [\n {\n type: \"HANDLER\" /* WireValueType.HANDLER */,\n name,\n value: serializedValue,\n },\n transferables,\n ];\n }\n }\n return [\n {\n type: \"RAW\" /* WireValueType.RAW */,\n value,\n },\n transferCache.get(value) || [],\n ];\n }\n function fromWireValue(value) {\n switch (value.type) {\n case \"HANDLER\" /* WireValueType.HANDLER */:\n return transferHandlers.get(value.name).deserialize(value.value);\n case \"RAW\" /* WireValueType.RAW */:\n return value.value;\n }\n }\n function requestResponseMessage(ep, pendingListeners, msg, transfers) {\n return new Promise((resolve) => {\n const id = generateUUID();\n pendingListeners.set(id, resolve);\n if (ep.start) {\n ep.start();\n }\n ep.postMessage(Object.assign({ id }, msg), transfers);\n });\n }\n function generateUUID() {\n return new Array(4)\n .fill(0)\n .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n .join(\"-\");\n }\n\n /**\n * MatrixRenderer class is meant to be used within a Web Worker context,\n * using Comlink to facilitate communication between the main thread and the worker.\n * The MatrixRenderer class manages a matrix of dies, once an instance of MatrixRenderer is created,\n * it is exposed to the main thread using Comlink's `expose` method.\n * This setup is used in the wafer-map component to perform heavy computational duties\n */\n class MatrixRenderer {\n constructor() {\n this.values = Float64Array.from([]);\n this.scaledColumnIndices = Float64Array.from([]);\n this.scaledRowIndices = Float64Array.from([]);\n this.columnIndicesPositions = Int32Array.from([]);\n this.colorIndices = Int32Array.from([]);\n this.colors = [];\n this.colorValues = Float64Array.from([]);\n this.outsideRangeDieColor = 'rgba(218,223,236,1)';\n this.fontSizeFactor = 0.8;\n this.renderConfig = {\n dieDimensions: {\n width: 0,\n height: 0\n },\n margin: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n verticalCoefficient: 1,\n horizontalCoefficient: 1,\n horizontalConstant: 0,\n verticalConstant: 0,\n gridMinX: 0,\n gridMaxX: 0,\n gridMinY: 0,\n gridMaxY: 0,\n labelsFontSize: 0,\n colorScale: [],\n dieLabelsSuffix: '',\n maxCharacters: 0\n };\n this.transformConfig = {\n transform: {\n k: 1,\n x: 0,\n y: 0\n },\n topLeftCanvasCorner: {\n x: 0,\n y: 0\n },\n bottomRightCanvasCorner: {\n x: 0,\n y: 0\n }\n };\n }\n setMatrixData(columnIndices, rowIndices, valuesBuffer) {\n const scaledColumnIndex = [];\n const columnPositions = [];\n const scaledRowIndices = [];\n const values = [];\n const colorIndices = [];\n let prevXIndex;\n let dieCount = 0;\n for (let i = 0; i < columnIndices.length; i++) {\n const xIndex = columnIndices[i];\n const yIndex = rowIndices[i];\n if (this.isDieInGrid(xIndex, yIndex)) {\n if (xIndex !== prevXIndex) {\n scaledColumnIndex.push(this.calculateHorizontalScaledIndices(xIndex));\n columnPositions.push(dieCount);\n prevXIndex = xIndex;\n }\n scaledRowIndices.push(this.calculateVerticalScaledIndices(yIndex));\n const value = valuesBuffer[i];\n values.push(value);\n colorIndices.push(this.findColorIndex(value));\n dieCount += 1;\n }\n }\n this.scaledColumnIndices = Float64Array.from(scaledColumnIndex);\n this.columnIndicesPositions = Int32Array.from(columnPositions);\n this.scaledRowIndices = Float64Array.from(scaledRowIndices);\n this.values = Float64Array.from(values);\n this.colorIndices = Int32Array.from(colorIndices);\n }\n setRenderConfig(renderConfig) {\n this.renderConfig = renderConfig;\n this.colors = renderConfig.colorScale.map(marker => marker.color);\n this.colorValues = Float64Array.from(renderConfig.colorScale.map(marker => marker.value));\n }\n setTransformConfig(transformData) {\n this.transformConfig = transformData;\n }\n setCanvas(canvas) {\n this.canvas = canvas;\n this.context = canvas.getContext('2d');\n }\n scaleCanvas() {\n this.context.translate(this.transformConfig.transform.x, this.transformConfig.transform.y);\n this.context.scale(this.transformConfig.transform.k, this.transformConfig.transform.k);\n }\n setCanvasDimensions(data) {\n this.canvas.width = data.width;\n this.canvas.height = data.height;\n }\n getCanvasDimensions() {\n return {\n width: this.canvas.width,\n height: this.canvas.height\n };\n }\n clearCanvas() {\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n drawWafer() {\n this.context.restore();\n this.context.save();\n this.clearCanvas();\n this.scaleCanvas();\n for (let i = 0; i < this.scaledColumnIndices.length; i++) {\n const scaledX = this.scaledColumnIndices[i];\n if (!(scaledX >= this.transformConfig.topLeftCanvasCorner.x\n && scaledX < this.transformConfig.bottomRightCanvasCorner.x)) {\n continue;\n }\n // columnIndexPositions is used to get chunks to determine the start and end index of the column, it looks something like [0, 1, 4, 9, 12]\n // This means that the first column has a start index of 0 and an end index of 1, the second column has a start index of 1 and an end index of 4, and so on\n // scaledRowIndices is used when we reach the end of the columnIndexPositions, when columnIndexPositions is [0, 1, 4, 9, 12], scaledRowIndices is 13\n const columnEndIndex = this.columnIndicesPositions[i + 1] !== undefined\n ? this.columnIndicesPositions[i + 1]\n : this.scaledRowIndices.length;\n for (let columnStartIndex = this.columnIndicesPositions[i]; columnStartIndex < columnEndIndex; columnStartIndex++) {\n const scaledY = this.scaledRowIndices[columnStartIndex];\n if (!(scaledY >= this.transformConfig.topLeftCanvasCorner.y\n && scaledY < this.transformConfig.bottomRightCanvasCorner.y)) {\n continue;\n }\n // Fill style is temporary green for all dies, will be replaced with a color based on the value of the die in a future implementation\n this.context.fillStyle = this.colors[this.colorIndices[columnStartIndex]]\n ?? this.outsideRangeDieColor;\n this.context.fillRect(scaledX, scaledY, this.renderConfig.dieDimensions.width, this.renderConfig.dieDimensions.height);\n }\n }\n }\n drawText() {\n this.context.font = `${this.renderConfig.labelsFontSize.toString()}px sans-serif`;\n this.context.fillStyle = '#ffffff';\n this.context.textAlign = 'center';\n this.context.lineCap = 'butt';\n const approximateTextHeight = this.context.measureText('M');\n for (let i = 0; i < this.scaledColumnIndices.length; i++) {\n const scaledX = this.scaledColumnIndices[i];\n if (!(scaledX >= this.transformConfig.topLeftCanvasCorner.x\n && scaledX < this.transformConfig.bottomRightCanvasCorner.x)) {\n continue;\n }\n // columnIndexPositions is used to get chunks to determine the start and end index of the column, it looks something like [0, 1, 4, 9, 12]\n // This means that the first column has a start index of 0 and an end index of 1, the second column has a start index of 1 and an end index of 4, and so on\n // scaledRowIndices is used when we reach the end of the columnIndexPositions, when columnIndexPositions is [0, 1, 4, 9, 12], scaledRowIndices is 13\n const columnEndIndex = this.columnIndicesPositions[i + 1] !== undefined\n ? this.columnIndicesPositions[i + 1]\n : this.scaledRowIndices.length;\n for (let columnStartIndex = this.columnIndicesPositions[i]; columnStartIndex < columnEndIndex; columnStartIndex++) {\n const scaledY = this.scaledRowIndices[columnStartIndex];\n if (!(scaledY >= this.transformConfig.topLeftCanvasCorner.y\n && scaledY < this.transformConfig.bottomRightCanvasCorner.y)) {\n continue;\n }\n let label = `${this.values[columnStartIndex] || 'NaN'}${this.renderConfig.dieLabelsSuffix}`;\n if (label.length >= this.renderConfig.maxCharacters) {\n label = `${label.substring(0, this.renderConfig.maxCharacters)}…`;\n }\n this.context.fillText(label, scaledX + this.renderConfig.dieDimensions.width / 2, scaledY\n + this.renderConfig.dieDimensions.height / 2\n + approximateTextHeight.width / 2, this.renderConfig.dieDimensions.width * this.fontSizeFactor);\n }\n }\n }\n isDieInGrid(x, y) {\n return (x >= this.renderConfig.gridMinX\n && x <= this.renderConfig.gridMaxX\n && y >= this.renderConfig.gridMinY\n && y <= this.renderConfig.gridMaxY);\n }\n calculateHorizontalScaledIndices(columnIndex) {\n return (this.renderConfig.horizontalCoefficient * columnIndex\n + this.renderConfig.horizontalConstant\n + this.renderConfig.margin.left);\n }\n calculateVerticalScaledIndices(rowIndex) {\n return (this.renderConfig.verticalCoefficient * rowIndex\n + this.renderConfig.verticalConstant\n + this.renderConfig.margin.top);\n }\n findColorIndex(value) {\n let index = -1;\n if (this.colorValues.length === 0 || this.colorValues[0] >= value) {\n return index;\n }\n for (let i = 0; i < this.colorValues.length; i++) {\n if (value <= this.colorValues[i]) {\n index = i;\n break;\n }\n }\n return index;\n }\n }\n expose(MatrixRenderer);\n\n exports.MatrixRenderer = MatrixRenderer;\n\n return exports;\n\n})({});\n";
95763
+ const workerCode = "var MatrixRenderer = (function (exports) {\n 'use strict';\n\n /**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n const proxyMarker = Symbol(\"Comlink.proxy\");\n const createEndpoint = Symbol(\"Comlink.endpoint\");\n const releaseProxy = Symbol(\"Comlink.releaseProxy\");\n const finalizer = Symbol(\"Comlink.finalizer\");\n const throwMarker = Symbol(\"Comlink.thrown\");\n const isObject = (val) => (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n /**\n * Internal transfer handle to handle objects marked to proxy.\n */\n const proxyTransferHandler = {\n canHandle: (val) => isObject(val) && val[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n },\n };\n /**\n * Internal transfer handler to handle thrown exceptions.\n */\n const throwTransferHandler = {\n canHandle: (value) => isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized;\n if (value instanceof Error) {\n serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n };\n }\n else {\n serialized = { isError: false, value };\n }\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) {\n throw Object.assign(new Error(serialized.value.message), serialized.value);\n }\n throw serialized.value;\n },\n };\n /**\n * Allows customizing the serialization of certain values.\n */\n const transferHandlers = new Map([\n [\"proxy\", proxyTransferHandler],\n [\"throw\", throwTransferHandler],\n ]);\n function isAllowedOrigin(allowedOrigins, origin) {\n for (const allowedOrigin of allowedOrigins) {\n if (origin === allowedOrigin || allowedOrigin === \"*\") {\n return true;\n }\n if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n return true;\n }\n }\n return false;\n }\n function expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n ep.addEventListener(\"message\", function callback(ev) {\n if (!ev || !ev.data) {\n return;\n }\n if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n return;\n }\n const { id, type, path } = Object.assign({ path: [] }, ev.data);\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n switch (type) {\n case \"GET\" /* MessageType.GET */:\n {\n returnValue = rawValue;\n }\n break;\n case \"SET\" /* MessageType.SET */:\n {\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n }\n break;\n case \"APPLY\" /* MessageType.APPLY */:\n {\n returnValue = rawValue.apply(parent, argumentList);\n }\n break;\n case \"CONSTRUCT\" /* MessageType.CONSTRUCT */:\n {\n const value = new rawValue(...argumentList);\n returnValue = proxy(value);\n }\n break;\n case \"ENDPOINT\" /* MessageType.ENDPOINT */:\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case \"RELEASE\" /* MessageType.RELEASE */:\n {\n returnValue = undefined;\n }\n break;\n default:\n return;\n }\n }\n catch (value) {\n returnValue = { value, [throwMarker]: 0 };\n }\n Promise.resolve(returnValue)\n .catch((value) => {\n return { value, [throwMarker]: 0 };\n })\n .then((returnValue) => {\n const [wireValue, transferables] = toWireValue(returnValue);\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n if (type === \"RELEASE\" /* MessageType.RELEASE */) {\n // detach and deactive after sending release response above.\n ep.removeEventListener(\"message\", callback);\n closeEndPoint(ep);\n if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n obj[finalizer]();\n }\n }\n })\n .catch((error) => {\n // Send Serialization Error To Caller\n const [wireValue, transferables] = toWireValue({\n value: new TypeError(\"Unserializable return value\"),\n [throwMarker]: 0,\n });\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n });\n });\n if (ep.start) {\n ep.start();\n }\n }\n function isMessagePort(endpoint) {\n return endpoint.constructor.name === \"MessagePort\";\n }\n function closeEndPoint(endpoint) {\n if (isMessagePort(endpoint))\n endpoint.close();\n }\n function wrap(ep, target) {\n const pendingListeners = new Map();\n ep.addEventListener(\"message\", function handleMessage(ev) {\n const { data } = ev;\n if (!data || !data.id) {\n return;\n }\n const resolver = pendingListeners.get(data.id);\n if (!resolver) {\n return;\n }\n try {\n resolver(data);\n }\n finally {\n pendingListeners.delete(data.id);\n }\n });\n return createProxy(ep, pendingListeners, [], target);\n }\n function throwIfProxyReleased(isReleased) {\n if (isReleased) {\n throw new Error(\"Proxy has been released and is not useable\");\n }\n }\n function releaseEndpoint(ep) {\n return requestResponseMessage(ep, new Map(), {\n type: \"RELEASE\" /* MessageType.RELEASE */,\n }).then(() => {\n closeEndPoint(ep);\n });\n }\n const proxyCounter = new WeakMap();\n const proxyFinalizers = \"FinalizationRegistry\" in globalThis &&\n new FinalizationRegistry((ep) => {\n const newCount = (proxyCounter.get(ep) || 0) - 1;\n proxyCounter.set(ep, newCount);\n if (newCount === 0) {\n releaseEndpoint(ep);\n }\n });\n function registerProxy(proxy, ep) {\n const newCount = (proxyCounter.get(ep) || 0) + 1;\n proxyCounter.set(ep, newCount);\n if (proxyFinalizers) {\n proxyFinalizers.register(proxy, ep, proxy);\n }\n }\n function unregisterProxy(proxy) {\n if (proxyFinalizers) {\n proxyFinalizers.unregister(proxy);\n }\n }\n function createProxy(ep, pendingListeners, path = [], target = function () { }) {\n let isProxyReleased = false;\n const proxy = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) {\n return () => {\n unregisterProxy(proxy);\n releaseEndpoint(ep);\n pendingListeners.clear();\n isProxyReleased = true;\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, pendingListeners, {\n type: \"GET\" /* MessageType.GET */,\n path: path.map((p) => p.toString()),\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, pendingListeners, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n // boolean. To show good will, we return true asynchronously ¯\\_(ツ)_/¯\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"SET\" /* MessageType.SET */,\n path: [...path, prop].map((p) => p.toString()),\n value,\n }, transferables).then(fromWireValue);\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if (last === createEndpoint) {\n return requestResponseMessage(ep, pendingListeners, {\n type: \"ENDPOINT\" /* MessageType.ENDPOINT */,\n }).then(fromWireValue);\n }\n // We just pretend that `bind()` didn’t happen.\n if (last === \"bind\") {\n return createProxy(ep, pendingListeners, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"APPLY\" /* MessageType.APPLY */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"CONSTRUCT\" /* MessageType.CONSTRUCT */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n });\n registerProxy(proxy, ep);\n return proxy;\n }\n function myFlat(arr) {\n return Array.prototype.concat.apply([], arr);\n }\n function processArguments(argumentList) {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n }\n const transferCache = new WeakMap();\n function transfer(obj, transfers) {\n transferCache.set(obj, transfers);\n return obj;\n }\n function proxy(obj) {\n return Object.assign(obj, { [proxyMarker]: true });\n }\n function toWireValue(value) {\n for (const [name, handler] of transferHandlers) {\n if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [\n {\n type: \"HANDLER\" /* WireValueType.HANDLER */,\n name,\n value: serializedValue,\n },\n transferables,\n ];\n }\n }\n return [\n {\n type: \"RAW\" /* WireValueType.RAW */,\n value,\n },\n transferCache.get(value) || [],\n ];\n }\n function fromWireValue(value) {\n switch (value.type) {\n case \"HANDLER\" /* WireValueType.HANDLER */:\n return transferHandlers.get(value.name).deserialize(value.value);\n case \"RAW\" /* WireValueType.RAW */:\n return value.value;\n }\n }\n function requestResponseMessage(ep, pendingListeners, msg, transfers) {\n return new Promise((resolve) => {\n const id = generateUUID();\n pendingListeners.set(id, resolve);\n if (ep.start) {\n ep.start();\n }\n ep.postMessage(Object.assign({ id }, msg), transfers);\n });\n }\n function generateUUID() {\n return new Array(4)\n .fill(0)\n .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n .join(\"-\");\n }\n\n /**\n * MatrixRenderer class is meant to be used within a Web Worker context,\n * using Comlink to facilitate communication between the main thread and the worker.\n * The MatrixRenderer class manages a matrix of dies, once an instance of MatrixRenderer is created,\n * it is exposed to the main thread using Comlink's `expose` method.\n * This setup is used in the wafer-map component to perform heavy computational duties\n */\n class MatrixRenderer {\n constructor() {\n this.values = Float64Array.from([]);\n this.scaledColumnIndices = Float64Array.from([]);\n this.scaledRowIndices = Float64Array.from([]);\n this.columnIndicesPositions = Int32Array.from([]);\n this.colorIndices = Int32Array.from([]);\n this.colors = [];\n this.colorValues = Float64Array.from([]);\n this.outsideRangeDieColor = 'rgba(218,223,236,1)';\n this.fontSizeFactor = 0.8;\n this.renderConfig = {\n dieDimensions: {\n width: 0,\n height: 0\n },\n margin: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n verticalCoefficient: 1,\n horizontalCoefficient: 1,\n horizontalConstant: 0,\n verticalConstant: 0,\n gridMinX: 0,\n gridMaxX: 0,\n gridMinY: 0,\n gridMaxY: 0,\n labelsFontSize: 0,\n colorScale: [],\n dieLabelsSuffix: '',\n maxCharacters: 0\n };\n this.transformConfig = {\n transform: {\n k: 1,\n x: 0,\n y: 0\n },\n topLeftCanvasCorner: {\n x: 0,\n y: 0\n },\n bottomRightCanvasCorner: {\n x: 0,\n y: 0\n }\n };\n }\n setMatrixData(columnIndices, rowIndices, valuesBuffer) {\n const scaledColumnIndex = [];\n const columnPositions = [];\n const scaledRowIndices = [];\n const values = [];\n const colorIndices = [];\n let prevXIndex;\n let dieCount = 0;\n for (let i = 0; i < columnIndices.length; i++) {\n const xIndex = columnIndices[i];\n const yIndex = rowIndices[i];\n if (this.isDieInGrid(xIndex, yIndex)) {\n if (xIndex !== prevXIndex) {\n scaledColumnIndex.push(this.calculateHorizontalScaledIndices(xIndex));\n columnPositions.push(dieCount);\n prevXIndex = xIndex;\n }\n scaledRowIndices.push(this.calculateVerticalScaledIndices(yIndex));\n const value = valuesBuffer[i];\n values.push(value);\n colorIndices.push(this.findColorIndex(value));\n dieCount += 1;\n }\n }\n this.scaledColumnIndices = Float64Array.from(scaledColumnIndex);\n this.columnIndicesPositions = Int32Array.from(columnPositions);\n this.scaledRowIndices = Float64Array.from(scaledRowIndices);\n this.values = Float64Array.from(values);\n this.colorIndices = Int32Array.from(colorIndices);\n }\n setRenderConfig(renderConfig) {\n this.renderConfig = renderConfig;\n this.colors = renderConfig.colorScale.map(marker => marker.color);\n this.colorValues = Float64Array.from(renderConfig.colorScale.map(marker => marker.value));\n }\n setTransformConfig(transformData) {\n this.transformConfig = transformData;\n }\n setCanvas(canvas) {\n this.canvas = canvas;\n this.context = canvas.getContext('2d');\n }\n scaleCanvas() {\n this.context.translate(this.transformConfig.transform.x, this.transformConfig.transform.y);\n this.context.scale(this.transformConfig.transform.k, this.transformConfig.transform.k);\n }\n setCanvasDimensions(data) {\n this.canvas.width = data.width;\n this.canvas.height = data.height;\n }\n getCanvasDimensions() {\n return {\n width: this.canvas.width,\n height: this.canvas.height\n };\n }\n clearCanvas() {\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n drawWafer() {\n this.context.restore();\n this.context.save();\n this.clearCanvas();\n this.scaleCanvas();\n for (let i = 0; i < this.scaledColumnIndices.length; i++) {\n const scaledX = this.scaledColumnIndices[i];\n if (!(scaledX >= this.transformConfig.topLeftCanvasCorner.x\n && scaledX < this.transformConfig.bottomRightCanvasCorner.x)) {\n continue;\n }\n // columnIndexPositions is used to get chunks to determine the start and end index of the column, it looks something like [0, 1, 4, 9, 12]\n // This means that the first column has a start index of 0 and an end index of 1, the second column has a start index of 1 and an end index of 4, and so on\n // scaledRowIndices is used when we reach the end of the columnIndexPositions, when columnIndexPositions is [0, 1, 4, 9, 12], scaledRowIndices is 13\n const columnEndIndex = this.columnIndicesPositions[i + 1] !== undefined\n ? this.columnIndicesPositions[i + 1]\n : this.scaledRowIndices.length;\n for (let columnStartIndex = this.columnIndicesPositions[i]; columnStartIndex < columnEndIndex; columnStartIndex++) {\n const scaledY = this.scaledRowIndices[columnStartIndex];\n if (!(scaledY >= this.transformConfig.topLeftCanvasCorner.y\n && scaledY < this.transformConfig.bottomRightCanvasCorner.y)) {\n continue;\n }\n // Fill style is temporary green for all dies, will be replaced with a color based on the value of the die in a future implementation\n this.context.fillStyle = this.colors[this.colorIndices[columnStartIndex]]\n ?? this.outsideRangeDieColor;\n this.context.fillRect(scaledX, scaledY, this.renderConfig.dieDimensions.width, this.renderConfig.dieDimensions.height);\n }\n }\n }\n drawText() {\n this.context.font = `${this.renderConfig.labelsFontSize.toString()}px sans-serif`;\n this.context.fillStyle = '#ffffff';\n this.context.textAlign = 'center';\n this.context.lineCap = 'butt';\n const approximateTextHeight = this.context.measureText('M');\n for (let i = 0; i < this.scaledColumnIndices.length; i++) {\n const scaledX = this.scaledColumnIndices[i];\n if (!(scaledX >= this.transformConfig.topLeftCanvasCorner.x\n && scaledX < this.transformConfig.bottomRightCanvasCorner.x)) {\n continue;\n }\n // columnIndexPositions is used to get chunks to determine the start and end index of the column, it looks something like [0, 1, 4, 9, 12]\n // This means that the first column has a start index of 0 and an end index of 1, the second column has a start index of 1 and an end index of 4, and so on\n // scaledRowIndices is used when we reach the end of the columnIndexPositions, when columnIndexPositions is [0, 1, 4, 9, 12], scaledRowIndices is 13\n const columnEndIndex = this.columnIndicesPositions[i + 1] !== undefined\n ? this.columnIndicesPositions[i + 1]\n : this.scaledRowIndices.length;\n for (let columnStartIndex = this.columnIndicesPositions[i]; columnStartIndex < columnEndIndex; columnStartIndex++) {\n const scaledY = this.scaledRowIndices[columnStartIndex];\n if (!(scaledY >= this.transformConfig.topLeftCanvasCorner.y\n && scaledY < this.transformConfig.bottomRightCanvasCorner.y)) {\n continue;\n }\n let label = `${this.values[columnStartIndex] ?? 'NaN'}${this.renderConfig.dieLabelsSuffix}`;\n if (label.length >= this.renderConfig.maxCharacters) {\n label = `${label.substring(0, this.renderConfig.maxCharacters)}…`;\n }\n this.context.fillText(label, scaledX + this.renderConfig.dieDimensions.width / 2, scaledY\n + this.renderConfig.dieDimensions.height / 2\n + approximateTextHeight.width / 2, this.renderConfig.dieDimensions.width * this.fontSizeFactor);\n }\n }\n }\n isDieInGrid(x, y) {\n return (x >= this.renderConfig.gridMinX\n && x <= this.renderConfig.gridMaxX\n && y >= this.renderConfig.gridMinY\n && y <= this.renderConfig.gridMaxY);\n }\n calculateHorizontalScaledIndices(columnIndex) {\n return (this.renderConfig.horizontalCoefficient * columnIndex\n + this.renderConfig.horizontalConstant\n + this.renderConfig.margin.left);\n }\n calculateVerticalScaledIndices(rowIndex) {\n return (this.renderConfig.verticalCoefficient * rowIndex\n + this.renderConfig.verticalConstant\n + this.renderConfig.margin.top);\n }\n findColorIndex(value) {\n let index = -1;\n if (this.colorValues.length === 0 || this.colorValues[0] >= value) {\n return index;\n }\n for (let i = 0; i < this.colorValues.length; i++) {\n if (value <= this.colorValues[i]) {\n index = i;\n break;\n }\n }\n return index;\n }\n }\n expose(MatrixRenderer);\n\n exports.MatrixRenderer = MatrixRenderer;\n\n return exports;\n\n})({});\n";
95710
95764
 
95711
95765
  let url;
95712
95766
  /**
@@ -95767,10 +95821,9 @@ focus outline in that case.
95767
95821
  });
95768
95822
  await this.matrixRenderer.drawWafer();
95769
95823
  if (!snapshot.dieLabelsHidden
95770
- && snapshot.dieDimensions
95771
95824
  && snapshot.dieDimensions.width
95772
95825
  * snapshot.dieDimensions.height
95773
- * (snapshot.transform.k || 1)
95826
+ * (snapshot.transform.k !== 0 ? snapshot.transform.k : 1)
95774
95827
  >= this.minDieDim) {
95775
95828
  await this.matrixRenderer.drawText();
95776
95829
  }
@@ -96728,7 +96781,7 @@ focus outline in that case.
96728
96781
  this.inputEmpty = true;
96729
96782
  }
96730
96783
  slottedInputElementsChanged(_prev, next) {
96731
- this.inputEmpty = !next?.length;
96784
+ this.inputEmpty = next === undefined || next.length === 0;
96732
96785
  }
96733
96786
  }
96734
96787
  __decorate([
@@ -97068,7 +97121,7 @@ focus outline in that case.
97068
97121
  this.footerActionsIsEmpty = true;
97069
97122
  }
97070
97123
  slottedFooterActionsElementsChanged(_prev, next) {
97071
- this.footerActionsIsEmpty = !next?.length;
97124
+ this.footerActionsIsEmpty = next === undefined || next.length === 0;
97072
97125
  }
97073
97126
  }
97074
97127
  __decorate([
@@ -97172,7 +97225,7 @@ focus outline in that case.
97172
97225
  this.footerActionsIsEmpty = true;
97173
97226
  }
97174
97227
  slottedFooterActionsElementsChanged(_prev, next) {
97175
- this.footerActionsIsEmpty = !next?.length;
97228
+ this.footerActionsIsEmpty = next === undefined || next.length === 0;
97176
97229
  }
97177
97230
  }
97178
97231
  __decorate([