@ni/nimble-components 26.0.0 → 27.0.1

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.
Files changed (41) hide show
  1. package/dist/all-components-bundle.js +498 -112
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +7825 -7751
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/src/theme-provider/design-token-comments.d.ts +1 -1
  6. package/dist/esm/src/theme-provider/design-tokens.d.ts +23 -23
  7. package/dist/esm/src/wafer-map/index.d.ts +9 -1
  8. package/dist/esm/src/wafer-map/modules/experimental/worker-renderer.d.ts +3 -1
  9. package/dist/esm/src/wafer-map/modules/zoom-handler.d.ts +2 -0
  10. package/dist/esm/src/wafer-map/workers/matrix-renderer.d.ts +1 -1
  11. package/dist/esm/theme-provider/design-token-comments.d.ts +1 -1
  12. package/dist/esm/theme-provider/design-token-comments.js +1 -24
  13. package/dist/esm/theme-provider/design-token-comments.js.map +1 -1
  14. package/dist/esm/theme-provider/design-token-names.js +1 -24
  15. package/dist/esm/theme-provider/design-token-names.js.map +1 -1
  16. package/dist/esm/theme-provider/design-tokens.d.ts +23 -23
  17. package/dist/esm/theme-provider/design-tokens.js +32 -55
  18. package/dist/esm/theme-provider/design-tokens.js.map +1 -1
  19. package/dist/esm/wafer-map/index.d.ts +9 -1
  20. package/dist/esm/wafer-map/index.js +6 -11
  21. package/dist/esm/wafer-map/index.js.map +1 -1
  22. package/dist/esm/wafer-map/modules/experimental/worker-renderer.d.ts +3 -1
  23. package/dist/esm/wafer-map/modules/experimental/worker-renderer.js +52 -2
  24. package/dist/esm/wafer-map/modules/experimental/worker-renderer.js.map +1 -1
  25. package/dist/esm/wafer-map/modules/prerendering.js +5 -3
  26. package/dist/esm/wafer-map/modules/prerendering.js.map +1 -1
  27. package/dist/esm/wafer-map/modules/wafer-map-update-tracker.js +14 -3
  28. package/dist/esm/wafer-map/modules/wafer-map-update-tracker.js.map +1 -1
  29. package/dist/esm/wafer-map/modules/zoom-handler.d.ts +2 -0
  30. package/dist/esm/wafer-map/modules/zoom-handler.js +10 -0
  31. package/dist/esm/wafer-map/modules/zoom-handler.js.map +1 -1
  32. package/dist/esm/wafer-map/styles.js +10 -5
  33. package/dist/esm/wafer-map/styles.js.map +1 -1
  34. package/dist/esm/wafer-map/template.js +2 -1
  35. package/dist/esm/wafer-map/template.js.map +1 -1
  36. package/dist/esm/wafer-map/workers/matrix-renderer.d.ts +1 -1
  37. package/dist/esm/wafer-map/workers/matrix-renderer.js +1 -1
  38. package/dist/esm/wafer-map/workers/matrix-renderer.js.map +1 -1
  39. package/dist/tokens-internal.scss +0 -138
  40. package/dist/tokens.scss +0 -69
  41. package/package.json +2 -1
@@ -4532,7 +4532,7 @@
4532
4532
  const context = this.context;
4533
4533
  for (let i = 0, ii = params.length; i < ii; ++i) {
4534
4534
  current = params[i];
4535
- if (!isObject$1(current)) {
4535
+ if (!isObject$2(current)) {
4536
4536
  continue;
4537
4537
  }
4538
4538
  if (isRegistry(current)) {
@@ -4547,7 +4547,7 @@
4547
4547
  jj = keys.length;
4548
4548
  for (; j < jj; ++j) {
4549
4549
  value = current[keys[j]];
4550
- if (!isObject$1(value)) {
4550
+ if (!isObject$2(value)) {
4551
4551
  continue;
4552
4552
  }
4553
4553
  // note: we could remove this if-branch and call this.register directly
@@ -4882,7 +4882,7 @@
4882
4882
  return [resolver.resolve(handler, requestor)];
4883
4883
  }
4884
4884
  const defaultFriendlyName = "(anonymous)";
4885
- function isObject$1(value) {
4885
+ function isObject$2(value) {
4886
4886
  return (typeof value === "object" && value !== null) || typeof value === "function";
4887
4887
  }
4888
4888
  /**
@@ -16333,7 +16333,7 @@
16333
16333
 
16334
16334
  /**
16335
16335
  * Do not edit directly
16336
- * Generated on Mon, 22 Apr 2024 14:57:19 GMT
16336
+ * Generated on Fri, 26 Apr 2024 07:57:56 GMT
16337
16337
  */
16338
16338
 
16339
16339
  const Information100DarkUi = "#a46eff";
@@ -16531,7 +16531,6 @@
16531
16531
  headlinePlus1FontSize: 'headline-plus-1-font-size',
16532
16532
  headlinePlus1FontWeight: 'headline-plus-1-font-weight',
16533
16533
  headlinePlus1FontLineHeight: 'headline-plus-1-font-line-height',
16534
- headlinePlus1FallbackFontFamily: 'headline-plus-1-fallback-font-family',
16535
16534
  headlineFont: 'headline-font',
16536
16535
  headlineFontColor: 'headline-font-color',
16537
16536
  headlineDisabledFontColor: 'headline-disabled-font-color',
@@ -16539,7 +16538,6 @@
16539
16538
  headlineFontSize: 'headline-font-size',
16540
16539
  headlineFontWeight: 'headline-font-weight',
16541
16540
  headlineFontLineHeight: 'headline-font-line-height',
16542
- headlineFallbackFontFamily: 'headline-fallback-font-family',
16543
16541
  tableHeaderFont: 'table-header-font',
16544
16542
  tableHeaderFontColor: 'table-header-font-color',
16545
16543
  tableHeaderDisabledFontColor: 'table-header-disabled-font-color',
@@ -16547,7 +16545,6 @@
16547
16545
  tableHeaderFontSize: 'table-header-font-size',
16548
16546
  tableHeaderFontWeight: 'table-header-font-weight',
16549
16547
  tableHeaderFontLineHeight: 'table-header-font-line-height',
16550
- tableHeaderFallbackFontFamily: 'table-header-fallback-font-family',
16551
16548
  titlePlus2Font: 'title-plus-2-font',
16552
16549
  titlePlus2FontColor: 'title-plus-2-font-color',
16553
16550
  titlePlus2DisabledFontColor: 'title-plus-2-disabled-font-color',
@@ -16555,7 +16552,6 @@
16555
16552
  titlePlus2FontSize: 'title-plus-2-font-size',
16556
16553
  titlePlus2FontWeight: 'title-plus-2-font-weight',
16557
16554
  titlePlus2FontLineHeight: 'title-plus-2-font-line-height',
16558
- titlePlus2FallbackFontFamily: 'title-plus-2-fallback-font-family',
16559
16555
  titlePlus1Font: 'title-plus-1-font',
16560
16556
  titlePlus1FontColor: 'title-plus-1-font-color',
16561
16557
  titlePlus1DisabledFontColor: 'title-plus-1-disabled-font-color',
@@ -16563,7 +16559,6 @@
16563
16559
  titlePlus1FontSize: 'title-plus-1-font-size',
16564
16560
  titlePlus1FontWeight: 'title-plus-1-font-weight',
16565
16561
  titlePlus1FontLineHeight: 'title-plus-1-font-line-height',
16566
- titlePlus1FallbackFontFamily: 'title-plus-1-fallback-font-family',
16567
16562
  titleFont: 'title-font',
16568
16563
  titleFontColor: 'title-font-color',
16569
16564
  titleDisabledFontColor: 'title-disabled-font-color',
@@ -16571,7 +16566,6 @@
16571
16566
  titleFontSize: 'title-font-size',
16572
16567
  titleFontWeight: 'title-font-weight',
16573
16568
  titleFontLineHeight: 'title-font-line-height',
16574
- titleFallbackFontFamily: 'title-fallback-font-family',
16575
16569
  subtitlePlus1Font: 'subtitle-plus-1-font',
16576
16570
  subtitlePlus1FontColor: 'subtitle-plus-1-font-color',
16577
16571
  subtitlePlus1DisabledFontColor: 'subtitle-plus-1-disabled-font-color',
@@ -16579,7 +16573,6 @@
16579
16573
  subtitlePlus1FontSize: 'subtitle-plus-1-font-size',
16580
16574
  subtitlePlus1FontWeight: 'subtitle-plus-1-font-weight',
16581
16575
  subtitlePlus1FontLineHeight: 'subtitle-plus-1-font-line-height',
16582
- subtitlePlus1FallbackFontFamily: 'subtitle-plus-1-fallback-font-family',
16583
16576
  subtitleFont: 'subtitle-font',
16584
16577
  subtitleFontColor: 'subtitle-font-color',
16585
16578
  subtitleDisabledFontColor: 'subtitle-disabled-font-color',
@@ -16587,7 +16580,6 @@
16587
16580
  subtitleFontSize: 'subtitle-font-size',
16588
16581
  subtitleFontWeight: 'subtitle-font-weight',
16589
16582
  subtitleFontLineHeight: 'subtitle-font-line-height',
16590
- subtitleFallbackFontFamily: 'subtitle-fallback-font-family',
16591
16583
  linkFont: 'link-font',
16592
16584
  linkFontColor: 'link-font-color',
16593
16585
  linkDisabledFontColor: 'link-disabled-font-color',
@@ -16595,7 +16587,6 @@
16595
16587
  linkFontSize: 'link-font-size',
16596
16588
  linkFontWeight: 'link-font-weight',
16597
16589
  linkFontLineHeight: 'link-font-line-height',
16598
- linkFallbackFontFamily: 'link-fallback-font-family',
16599
16590
  linkActiveFont: 'link-active-font',
16600
16591
  linkActiveFontColor: 'link-active-font-color',
16601
16592
  linkActiveDisabledFontColor: 'link-active-disabled-font-color',
@@ -16603,7 +16594,6 @@
16603
16594
  linkActiveFontSize: 'link-active-font-size',
16604
16595
  linkActiveFontWeight: 'link-active-font-weight',
16605
16596
  linkActiveFontLineHeight: 'link-active-font-line-height',
16606
- linkActiveFallbackFontFamily: 'link-active-fallback-font-family',
16607
16597
  linkProminentFont: 'link-prominent-font',
16608
16598
  linkProminentFontColor: 'link-prominent-font-color',
16609
16599
  linkProminentDisabledFontColor: 'link-prominent-disabled-font-color',
@@ -16611,7 +16601,6 @@
16611
16601
  linkProminentFontSize: 'link-prominent-font-size',
16612
16602
  linkProminentFontWeight: 'link-prominent-font-weight',
16613
16603
  linkProminentFontLineHeight: 'link-prominent-font-line-height',
16614
- linkProminentFallbackFontFamily: 'link-prominent-fallback-font-family',
16615
16604
  linkActiveProminentFont: 'link-active-prominent-font',
16616
16605
  linkActiveProminentFontColor: 'link-active-prominent-font-color',
16617
16606
  linkActiveProminentDisabledFontColor: 'link-active-prominent-disabled-font-color',
@@ -16619,7 +16608,6 @@
16619
16608
  linkActiveProminentFontSize: 'link-active-prominent-font-size',
16620
16609
  linkActiveProminentFontWeight: 'link-active-prominent-font-weight',
16621
16610
  linkActiveProminentFontLineHeight: 'link-active-prominent-font-line-height',
16622
- linkActiveProminentFallbackFontFamily: 'link-active-prominent-fallback-font-family',
16623
16611
  placeholderFont: 'placeholder-font',
16624
16612
  placeholderFontColor: 'placeholder-font-color',
16625
16613
  placeholderDisabledFontColor: 'placeholder-disabled-font-color',
@@ -16627,7 +16615,6 @@
16627
16615
  placeholderFontSize: 'placeholder-font-size',
16628
16616
  placeholderFontWeight: 'placeholder-font-weight',
16629
16617
  placeholderFontLineHeight: 'placeholder-font-line-height',
16630
- placeholderFallbackFontFamily: 'placeholder-fallback-font-family',
16631
16618
  bodyFont: 'body-font',
16632
16619
  bodyFontColor: 'body-font-color',
16633
16620
  bodyDisabledFontColor: 'body-disabled-font-color',
@@ -16635,7 +16622,6 @@
16635
16622
  bodyFontSize: 'body-font-size',
16636
16623
  bodyFontWeight: 'body-font-weight',
16637
16624
  bodyFontLineHeight: 'body-font-line-height',
16638
- bodyFallbackFontFamily: 'body-fallback-font-family',
16639
16625
  bodyEmphasizedFont: 'body-emphasized-font',
16640
16626
  bodyEmphasizedFontColor: 'body-emphasized-font-color',
16641
16627
  bodyEmphasizedDisabledFontColor: 'body-emphasized-disabled-font-color',
@@ -16643,7 +16629,6 @@
16643
16629
  bodyEmphasizedFontSize: 'body-emphasized-font-size',
16644
16630
  bodyEmphasizedFontWeight: 'body-emphasized-font-weight',
16645
16631
  bodyEmphasizedFontLineHeight: 'body-emphasized-font-line-height',
16646
- bodyEmphasizedFallbackFontFamily: 'body-emphasized-fallback-font-family',
16647
16632
  bodyPlus1Font: 'body-plus-1-font',
16648
16633
  bodyPlus1FontColor: 'body-plus-1-font-color',
16649
16634
  bodyPlus1DisabledFontColor: 'body-plus-1-disabled-font-color',
@@ -16651,7 +16636,6 @@
16651
16636
  bodyPlus1FontSize: 'body-plus-1-font-size',
16652
16637
  bodyPlus1FontWeight: 'body-plus-1-font-weight',
16653
16638
  bodyPlus1FontLineHeight: 'body-plus-1-font-line-height',
16654
- bodyPlus1FallbackFontFamily: 'body-plus-1-fallback-font-family',
16655
16639
  bodyPlus1EmphasizedFont: 'body-plus-1-emphasized-font',
16656
16640
  bodyPlus1EmphasizedFontColor: 'body-plus-1-emphasized-font-color',
16657
16641
  bodyPlus1EmphasizedDisabledFontColor: 'body-plus-1-emphasized-disabled-font-color',
@@ -16659,7 +16643,6 @@
16659
16643
  bodyPlus1EmphasizedFontSize: 'body-plus-1-emphasized-font-size',
16660
16644
  bodyPlus1EmphasizedFontWeight: 'body-plus-1-emphasized-font-weight',
16661
16645
  bodyPlus1EmphasizedFontLineHeight: 'body-plus-1-emphasized-font-line-height',
16662
- bodyPlus1EmphasizedFallbackFontFamily: 'body-plus-1-emphasized-fallback-font-family',
16663
16646
  groupHeaderFont: 'group-header-font',
16664
16647
  groupHeaderFontColor: 'group-header-font-color',
16665
16648
  groupHeaderDisabledFontColor: 'group-header-disabled-font-color',
@@ -16667,7 +16650,6 @@
16667
16650
  groupHeaderFontSize: 'group-header-font-size',
16668
16651
  groupHeaderFontWeight: 'group-header-font-weight',
16669
16652
  groupHeaderFontLineHeight: 'group-header-font-line-height',
16670
- groupHeaderFallbackFontFamily: 'group-header-fallback-font-family',
16671
16653
  controlLabelFont: 'control-label-font',
16672
16654
  controlLabelFontColor: 'control-label-font-color',
16673
16655
  controlLabelDisabledFontColor: 'control-label-disabled-font-color',
@@ -16675,7 +16657,6 @@
16675
16657
  controlLabelFontSize: 'control-label-font-size',
16676
16658
  controlLabelFontWeight: 'control-label-font-weight',
16677
16659
  controlLabelFontLineHeight: 'control-label-font-line-height',
16678
- controlLabelFallbackFontFamily: 'control-label-fallback-font-family',
16679
16660
  buttonLabelFont: 'button-label-font',
16680
16661
  buttonLabelFontColor: 'button-label-font-color',
16681
16662
  buttonLabelDisabledFontColor: 'button-label-disabled-font-color',
@@ -16683,7 +16664,6 @@
16683
16664
  buttonLabelFontSize: 'button-label-font-size',
16684
16665
  buttonLabelFontWeight: 'button-label-font-weight',
16685
16666
  buttonLabelFontLineHeight: 'button-label-font-line-height',
16686
- buttonLabelFallbackFontFamily: 'button-label-fallback-font-family',
16687
16667
  tooltipCaptionFont: 'tooltip-caption-font',
16688
16668
  tooltipCaptionFontColor: 'tooltip-caption-font-color',
16689
16669
  tooltipCaptionDisabledFontColor: 'tooltip-caption-disabled-font-color',
@@ -16691,7 +16671,6 @@
16691
16671
  tooltipCaptionFontSize: 'tooltip-caption-font-size',
16692
16672
  tooltipCaptionFontWeight: 'tooltip-caption-font-weight',
16693
16673
  tooltipCaptionFontLineHeight: 'tooltip-caption-font-line-height',
16694
- tooltipCaptionFallbackFontFamily: 'tooltip-caption-fallback-font-family',
16695
16674
  tooltipBackgroundColor: 'tooltip-background-color',
16696
16675
  errorTextFont: 'error-text-font',
16697
16676
  errorTextFontColor: 'error-text-font-color',
@@ -16700,7 +16679,6 @@
16700
16679
  errorTextFontSize: 'error-text-font-size',
16701
16680
  errorTextFontWeight: 'error-text-font-weight',
16702
16681
  errorTextFontLineHeight: 'error-text-font-line-height',
16703
- errorTextFallbackFontFamily: 'error-text-fallback-font-family',
16704
16682
  tableRowBorderColor: 'table-row-border-color',
16705
16683
  elevation1BoxShadow: 'elevation-1-box-shadow',
16706
16684
  elevation2BoxShadow: 'elevation-2-box-shadow',
@@ -16712,8 +16690,7 @@
16712
16690
  mentionFontFamily: 'mention-font-family',
16713
16691
  mentionFontSize: 'mention-font-size',
16714
16692
  mentionFontWeight: 'mention-font-weight',
16715
- mentionFontLineHeight: 'mention-font-line-height',
16716
- mentionFallbackFontFamily: 'mention-fallback-font-family'
16693
+ mentionFontLineHeight: 'mention-font-line-height'
16717
16694
  };
16718
16695
  const prefix = 'ni-nimble';
16719
16696
  const styleNameFromTokenName = (tokenName) => `${prefix}-${tokenName}`;
@@ -16897,27 +16874,6 @@
16897
16874
  .register(nimbleDesignSystemProvider());
16898
16875
  const themeProviderTag = 'nimble-theme-provider';
16899
16876
 
16900
- /* eslint-disable @typescript-eslint/naming-convention */
16901
- const Headline1FallbackFontFamily = 'Noto Serif Fallback';
16902
- const Headline2FallbackFontFamily = 'Noto Serif Fallback';
16903
- const Title1FallbackFontFamily = 'Source Sans Pro Fallback';
16904
- const Title2FallbackFontFamily = 'Source Sans Pro Fallback';
16905
- const Title3FallbackFontFamily = 'Source Sans Pro Fallback';
16906
- const Subtitle1FallbackFontFamily = 'Source Sans Pro Fallback';
16907
- const Subtitle2FallbackFontFamily = 'Source Sans Pro Fallback';
16908
- const LinkFallbackFontFamily = 'Source Sans Pro Fallback';
16909
- const PlaceholderFallbackFontFamily = 'Source Sans Pro Fallback';
16910
- const BodyFallbackFontFamily = 'Source Sans Pro Fallback';
16911
- const Body2FallbackFontFamily = 'Source Sans Pro Fallback';
16912
- const BodyEmphasizedFallbackFontFamily = 'Source Sans Pro Fallback';
16913
- const BodyEmphasized2FallbackFontFamily = 'Source Sans Pro Fallback';
16914
- const GroupLabel1FallbackFontFamily = 'Source Sans Pro Fallback';
16915
- const ControlLabel1FallbackFontFamily = 'Source Sans Pro Fallback';
16916
- const ButtonLabel1FallbackFontFamily = 'Source Sans Pro Fallback';
16917
- const TooltipCaptionFallbackFontFamily = 'Source Sans Pro Fallback';
16918
- const ErrorLightUiFallbackFontFamily = 'Source Sans Pro Fallback';
16919
- const GridHeaderFallbackFontFamily = 'Source Sans Pro Fallback';
16920
- /* eslint-enable @typescript-eslint/naming-convention */
16921
16877
  // Color Tokens
16922
16878
  const actionRgbPartialColor = DesignToken.create(styleNameFromTokenName(tokenNames.actionRgbPartialColor)).withDefault((element) => hexToRgbPartial(getColorForTheme(element, Black91, Black15, White)));
16923
16879
  const applicationBackgroundColor = DesignToken.create(styleNameFromTokenName(tokenNames.applicationBackgroundColor)).withDefault((element) => getColorForTheme(element, White, Black85, ForestGreen));
@@ -16978,29 +16934,29 @@
16978
16934
  const elevation2BoxShadow = DesignToken.create(styleNameFromTokenName(tokenNames.elevation2BoxShadow)).withDefault((element) => `0px 2px 4px ${hexToRgbaCssColor(getColorForTheme(element, Black, Black, Black), 0.16)}`);
16979
16935
  const elevation3BoxShadow = DesignToken.create(styleNameFromTokenName(tokenNames.elevation3BoxShadow)).withDefault((element) => `0px 4px 8px ${hexToRgbaCssColor(getColorForTheme(element, Black, Black, Black), 0.3)}`);
16980
16936
  // Font Tokens
16981
- createFontTokens(tokenNames.headlineFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Headline1Family, Headline1Weight, Headline1Size, Headline1LineHeight, Headline1FallbackFontFamily);
16982
- createFontTokens(tokenNames.headlinePlus1Font, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Headline2Family, Headline2Weight, Headline2Size, Headline2LineHeight, Headline2FallbackFontFamily);
16983
- createFontTokens(tokenNames.titlePlus2Font, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Title3Family, Title3Weight, Title3Size, Title3LineHeight, Title3FallbackFontFamily);
16984
- const [titlePlus1Font, titlePlus1FontColor, titlePlus1DisabledFontColor, titlePlus1FontFamily, titlePlus1FontWeight, titlePlus1FontSize, titlePlus1FontLineHeight, titlePlus1FallbackFontFamily] = createFontTokens(tokenNames.titlePlus1Font, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Title2Family, Title2Weight, Title2Size, Title2LineHeight, Title2FallbackFontFamily);
16985
- createFontTokens(tokenNames.titleFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Title1Family, Title1Weight, Title1Size, Title1LineHeight, Title1FallbackFontFamily);
16986
- const [subtitlePlus1Font, subtitlePlus1FontColor, subtitlePlus1DisabledFontColor, subtitlePlus1FontFamily, subtitlePlus1FontWeight, subtitlePlus1FontSize, subtitlePlus1FontLineHeight, subtitlePlus1FallbackFontFamily] = createFontTokens(tokenNames.subtitlePlus1Font, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Subtitle2Family, Subtitle2Weight, Subtitle2Size, Subtitle2LineHeight, Subtitle2FallbackFontFamily);
16987
- const [subtitleFont, subtitleFontColor, subtitleDisabledFontColor, subtitleFontFamily, subtitleFontWeight, subtitleFontSize, subtitleFontLineHeight, subtitleFallbackFontFamily] = createFontTokens(tokenNames.subtitleFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Subtitle1Family, Subtitle1Weight, Subtitle1Size, Subtitle1LineHeight, Subtitle1FallbackFontFamily);
16988
- const [linkFont, linkFontColor, linkDisabledFontColor, linkFontFamily, linkFontWeight, linkFontSize, linkFontLineHeight, linkFallbackFontFamily] = createFontTokens(tokenNames.linkFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), LinkLightUiFamily, LinkLightUiWeight, LinkLightUiSize, LinkLineHeight, LinkFallbackFontFamily);
16989
- const [linkActiveFont, linkActiveFontColor, linkActiveDisabledFontColor, linkActiveFontFamily, linkActiveFontWeight, linkActiveFontSize, linkActiveFontLineHeight, linkActiveFallbackFontFamily] = createFontTokens(tokenNames.linkActiveFont, (element) => getColorForTheme(element, DigitalGreenLight, DigitalGreenLight, hexToRgbaCssColor(White, 0.6)), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), LinkLightUiFamily, LinkLightUiWeight, LinkLightUiSize, LinkLineHeight, LinkFallbackFontFamily);
16990
- const [linkProminentFont, linkProminentFontColor, linkProminentDisabledFontColor, linkProminentFontFamily, linkProminentFontWeight, linkProminentFontSize, linkProminentFontLineHeight, linkProminentFallbackFontFamily] = createFontTokens(tokenNames.linkProminentFont, (element) => getColorForTheme(element, DigitalGreenDark105, PowerGreen, PowerGreen), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), LinkLightUiFamily, LinkLightUiWeight, LinkLightUiSize, LinkLineHeight, LinkFallbackFontFamily);
16991
- const [linkActiveProminentFont, linkActiveProminentFontColor, linkActiveProminentDisabledFontColor, linkActiveProminentFontFamily, linkActiveProminentFontWeight, linkActiveProminentFontSize, linkActiveProminentFontLineHeight, linkActiveProminentFallbackFontFamily] = createFontTokens(tokenNames.linkActiveProminentFont, (element) => getColorForTheme(element, DigitalGreenLight, DigitalGreenLight, hexToRgbaCssColor(White, 0.6)), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), LinkLightUiFamily, LinkLightUiWeight, LinkLightUiSize, LinkLineHeight, LinkFallbackFontFamily);
16992
- const [placeholderFont, placeholderFontColor, placeholderDisabledFontColor, placeholderFontFamily, placeholderFontWeight, placeholderFontSize, placeholderFontLineHeight, placeholderFallbackFontFamily] = createFontTokens(tokenNames.placeholderFont, (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.6), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), PlaceholderFamily, PlaceholderWeight, PlaceholderSize, PlaceholderLineHeight, PlaceholderFallbackFontFamily);
16993
- const [bodyFont, bodyFontColor, bodyDisabledFontColor, bodyFontFamily, bodyFontWeight, bodyFontSize, bodyFontLineHeight, bodyFallbackFontFamily] = createFontTokens(tokenNames.bodyFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), BodyFamily, BodyWeight, BodySize, BodyLineHeight, BodyFallbackFontFamily);
16994
- const [bodyEmphasizedFont, bodyEmphasizedFontColor, bodyEmphasizedDisabledFontColor, bodyEmphasizedFontFamily, bodyEmphasizedFontWeight, bodyEmphasizedFontSize, bodyEmphasizedFontLineHeight, bodyEmphasizedFallbackFontFamily] = createFontTokens(tokenNames.bodyEmphasizedFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), BodyEmphasizedFamily, BodyEmphasizedWeight, BodyEmphasizedSize, BodyEmphasizedLineHeight, BodyEmphasizedFallbackFontFamily);
16995
- createFontTokens(tokenNames.bodyPlus1Font, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Body2Family, Body2Weight, Body2Size, Body2LineHeight, Body2FallbackFontFamily);
16996
- createFontTokens(tokenNames.bodyPlus1EmphasizedFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), BodyEmphasized2Family, BodyEmphasized2Weight, BodyEmphasized2Size, BodyEmphasized2LineHeight, BodyEmphasized2FallbackFontFamily);
16997
- const [groupHeaderFont, groupHeaderFontColor, groupHeaderDisabledFontColor, groupHeaderFontFamily, groupHeaderFontWeight, groupHeaderFontSize, groupHeaderFontLineHeight, groupHeaderFallbackFontFamily] = createFontTokens(tokenNames.groupHeaderFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), GroupLabel1Family, GroupLabel1Weight, GroupLabel1Size, GroupLabel1LineHeight, GroupLabel1FallbackFontFamily);
16998
- const [controlLabelFont, controlLabelFontColor, controlLabelDisabledFontColor, controlLabelFontFamily, controlLabelFontWeight, controlLabelFontSize, controlLabelFontLineHeight, controlLabelFallbackFontFamily] = createFontTokens(tokenNames.controlLabelFont, (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.6), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), ControlLabel1Family, ControlLabel1Weight, ControlLabel1Size, ControlLabel1LineHeight, ControlLabel1FallbackFontFamily);
16999
- const [buttonLabelFont, buttonLabelFontColor, buttonLabelDisabledFontColor, buttonLabelFontFamily, buttonLabelFontWeight, buttonLabelFontSize, buttonLabelFontLineHeight, buttonLabelFallbackFontFamily] = createFontTokens(tokenNames.buttonLabelFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), ButtonLabel1Family, ButtonLabel1Weight, ButtonLabel1Size, ButtonLabel1LineHeight, ButtonLabel1FallbackFontFamily);
17000
- const [tooltipCaptionFont, tooltipCaptionFontColor, tooltipCaptionDisabledFontColor, tooltipCaptionFontFamily, tooltipCaptionFontWeight, tooltipCaptionFontSize, tooltipCaptionFontLineHeight, tooltipCaptionFallbackFontFamily] = createFontTokens(tokenNames.tooltipCaptionFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), TooltipCaptionFamily, TooltipCaptionWeight, TooltipCaptionSize, TooltipCaptionLineHeight, TooltipCaptionFallbackFontFamily);
17001
- const [errorTextFont, errorTextFontColor, errorTextDisabledFontColor, errorTextFontFamily, errorTextFontWeight, errorTextFontSize, errorTextFontLineHeight, errorTextFallbackFontFamily] = createFontTokens(tokenNames.errorTextFont, (element) => getFailColorForTheme(element), (element) => hexToRgbaCssColor(getFailColorForTheme(element), 0.3), ErrorLightUiFamily, ErrorLightUiWeight, ErrorLightUiSize, TooltipCaptionLineHeight, ErrorLightUiFallbackFontFamily);
17002
- const [tableHeaderFont, tableHeaderFontColor, tableHeaderDisabledFontColor, tableHeaderFontFamily, tableHeaderFontWeight, tableHeaderFontSize, tableHeaderFontLineHeight, tableHeaderFallbackFontFamily] = createFontTokens(tokenNames.tableHeaderFont, (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.6), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), GridHeaderFamily, GridHeaderWeight, GridHeaderSize, TooltipCaptionLineHeight, GridHeaderFallbackFontFamily);
17003
- createFontTokens(tokenNames.mentionFont, (element) => getColorForTheme(element, DigitalGreenDark, PowerGreen, PowerGreen), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), BodyFamily, BodyEmphasizedWeight, BodySize, BodyLineHeight, BodyFallbackFontFamily);
16937
+ createFontTokens(tokenNames.headlineFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Headline1Family, Headline1Weight, Headline1Size, Headline1LineHeight);
16938
+ createFontTokens(tokenNames.headlinePlus1Font, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Headline2Family, Headline2Weight, Headline2Size, Headline2LineHeight);
16939
+ createFontTokens(tokenNames.titlePlus2Font, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Title3Family, Title3Weight, Title3Size, Title3LineHeight);
16940
+ const [titlePlus1Font, titlePlus1FontColor, titlePlus1DisabledFontColor, titlePlus1FontFamily, titlePlus1FontWeight, titlePlus1FontSize, titlePlus1FontLineHeight] = createFontTokens(tokenNames.titlePlus1Font, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Title2Family, Title2Weight, Title2Size, Title2LineHeight);
16941
+ createFontTokens(tokenNames.titleFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Title1Family, Title1Weight, Title1Size, Title1LineHeight);
16942
+ const [subtitlePlus1Font, subtitlePlus1FontColor, subtitlePlus1DisabledFontColor, subtitlePlus1FontFamily, subtitlePlus1FontWeight, subtitlePlus1FontSize, subtitlePlus1FontLineHeight] = createFontTokens(tokenNames.subtitlePlus1Font, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Subtitle2Family, Subtitle2Weight, Subtitle2Size, Subtitle2LineHeight);
16943
+ const [subtitleFont, subtitleFontColor, subtitleDisabledFontColor, subtitleFontFamily, subtitleFontWeight, subtitleFontSize, subtitleFontLineHeight] = createFontTokens(tokenNames.subtitleFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Subtitle1Family, Subtitle1Weight, Subtitle1Size, Subtitle1LineHeight);
16944
+ const [linkFont, linkFontColor, linkDisabledFontColor, linkFontFamily, linkFontWeight, linkFontSize, linkFontLineHeight] = createFontTokens(tokenNames.linkFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), LinkLightUiFamily, LinkLightUiWeight, LinkLightUiSize, LinkLineHeight);
16945
+ const [linkActiveFont, linkActiveFontColor, linkActiveDisabledFontColor, linkActiveFontFamily, linkActiveFontWeight, linkActiveFontSize, linkActiveFontLineHeight] = createFontTokens(tokenNames.linkActiveFont, (element) => getColorForTheme(element, DigitalGreenLight, DigitalGreenLight, hexToRgbaCssColor(White, 0.6)), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), LinkLightUiFamily, LinkLightUiWeight, LinkLightUiSize, LinkLineHeight);
16946
+ const [linkProminentFont, linkProminentFontColor, linkProminentDisabledFontColor, linkProminentFontFamily, linkProminentFontWeight, linkProminentFontSize, linkProminentFontLineHeight] = createFontTokens(tokenNames.linkProminentFont, (element) => getColorForTheme(element, DigitalGreenDark105, PowerGreen, PowerGreen), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), LinkLightUiFamily, LinkLightUiWeight, LinkLightUiSize, LinkLineHeight);
16947
+ const [linkActiveProminentFont, linkActiveProminentFontColor, linkActiveProminentDisabledFontColor, linkActiveProminentFontFamily, linkActiveProminentFontWeight, linkActiveProminentFontSize, linkActiveProminentFontLineHeight] = createFontTokens(tokenNames.linkActiveProminentFont, (element) => getColorForTheme(element, DigitalGreenLight, DigitalGreenLight, hexToRgbaCssColor(White, 0.6)), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), LinkLightUiFamily, LinkLightUiWeight, LinkLightUiSize, LinkLineHeight);
16948
+ const [placeholderFont, placeholderFontColor, placeholderDisabledFontColor, placeholderFontFamily, placeholderFontWeight, placeholderFontSize, placeholderFontLineHeight] = createFontTokens(tokenNames.placeholderFont, (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.6), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), PlaceholderFamily, PlaceholderWeight, PlaceholderSize, PlaceholderLineHeight);
16949
+ const [bodyFont, bodyFontColor, bodyDisabledFontColor, bodyFontFamily, bodyFontWeight, bodyFontSize, bodyFontLineHeight] = createFontTokens(tokenNames.bodyFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), BodyFamily, BodyWeight, BodySize, BodyLineHeight);
16950
+ const [bodyEmphasizedFont, bodyEmphasizedFontColor, bodyEmphasizedDisabledFontColor, bodyEmphasizedFontFamily, bodyEmphasizedFontWeight, bodyEmphasizedFontSize, bodyEmphasizedFontLineHeight] = createFontTokens(tokenNames.bodyEmphasizedFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), BodyEmphasizedFamily, BodyEmphasizedWeight, BodyEmphasizedSize, BodyEmphasizedLineHeight);
16951
+ createFontTokens(tokenNames.bodyPlus1Font, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), Body2Family, Body2Weight, Body2Size, Body2LineHeight);
16952
+ createFontTokens(tokenNames.bodyPlus1EmphasizedFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), BodyEmphasized2Family, BodyEmphasized2Weight, BodyEmphasized2Size, BodyEmphasized2LineHeight);
16953
+ const [groupHeaderFont, groupHeaderFontColor, groupHeaderDisabledFontColor, groupHeaderFontFamily, groupHeaderFontWeight, groupHeaderFontSize, groupHeaderFontLineHeight] = createFontTokens(tokenNames.groupHeaderFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), GroupLabel1Family, GroupLabel1Weight, GroupLabel1Size, GroupLabel1LineHeight);
16954
+ const [controlLabelFont, controlLabelFontColor, controlLabelDisabledFontColor, controlLabelFontFamily, controlLabelFontWeight, controlLabelFontSize, controlLabelFontLineHeight] = createFontTokens(tokenNames.controlLabelFont, (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.6), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), ControlLabel1Family, ControlLabel1Weight, ControlLabel1Size, ControlLabel1LineHeight);
16955
+ const [buttonLabelFont, buttonLabelFontColor, buttonLabelDisabledFontColor, buttonLabelFontFamily, buttonLabelFontWeight, buttonLabelFontSize, buttonLabelFontLineHeight] = createFontTokens(tokenNames.buttonLabelFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), ButtonLabel1Family, ButtonLabel1Weight, ButtonLabel1Size, ButtonLabel1LineHeight);
16956
+ const [tooltipCaptionFont, tooltipCaptionFontColor, tooltipCaptionDisabledFontColor, tooltipCaptionFontFamily, tooltipCaptionFontWeight, tooltipCaptionFontSize, tooltipCaptionFontLineHeight] = createFontTokens(tokenNames.tooltipCaptionFont, (element) => getDefaultFontColorForTheme(element), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), TooltipCaptionFamily, TooltipCaptionWeight, TooltipCaptionSize, TooltipCaptionLineHeight);
16957
+ const [errorTextFont, errorTextFontColor, errorTextDisabledFontColor, errorTextFontFamily, errorTextFontWeight, errorTextFontSize, errorTextFontLineHeight] = createFontTokens(tokenNames.errorTextFont, (element) => getFailColorForTheme(element), (element) => hexToRgbaCssColor(getFailColorForTheme(element), 0.3), ErrorLightUiFamily, ErrorLightUiWeight, ErrorLightUiSize, TooltipCaptionLineHeight);
16958
+ const [tableHeaderFont, tableHeaderFontColor, tableHeaderDisabledFontColor, tableHeaderFontFamily, tableHeaderFontWeight, tableHeaderFontSize, tableHeaderFontLineHeight] = createFontTokens(tokenNames.tableHeaderFont, (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.6), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), GridHeaderFamily, GridHeaderWeight, GridHeaderSize, TooltipCaptionLineHeight);
16959
+ createFontTokens(tokenNames.mentionFont, (element) => getColorForTheme(element, DigitalGreenDark, PowerGreen, PowerGreen), (element) => hexToRgbaCssColor(getDefaultFontColorForTheme(element), 0.3), BodyFamily, BodyEmphasizedWeight, BodySize, BodyLineHeight);
17004
16960
  // Font Transform Tokens
17005
16961
  const groupHeaderTextTransform = DesignToken.create(styleNameFromTokenName(tokenNames.groupHeaderTextTransform)).withDefault('uppercase');
17006
16962
  // Animation Tokens
@@ -17012,16 +16968,16 @@
17012
16968
  const { r, g, b } = parseColorHexRGB(hexValue);
17013
16969
  return `${r * 255}, ${g * 255}, ${b * 255}`;
17014
16970
  }
17015
- function createFontTokens(fontTokenName, colorFunction, disabledColorFunction, family, weight, size, lineHeight, fallbackFamily) {
16971
+ function createFontTokens(fontTokenName, colorFunction, disabledColorFunction, family, weight, size, lineHeight) {
17016
16972
  if (fontTokenName === ''
17017
16973
  || family === ''
17018
16974
  || weight === ''
17019
16975
  || size === ''
17020
- || lineHeight === ''
17021
- || fallbackFamily === '') {
16976
+ || lineHeight === '') {
17022
16977
  throw new Error('createFontTokens parameter unexpectedly set to empty string');
17023
16978
  }
17024
- const fontToken = DesignToken.create(styleNameFromTokenName(fontTokenName)).withDefault(`${weight} ${size}/${lineHeight} ${family}, ${fallbackFamily}`);
16979
+ const familyWithFallback = `${family}, ${family} Fallback`;
16980
+ const fontToken = DesignToken.create(styleNameFromTokenName(fontTokenName)).withDefault(`${weight} ${size}/${lineHeight} ${familyWithFallback}`);
17025
16981
  const fontNameParts = fontTokenName.split('-font');
17026
16982
  const tokenPrefixWithoutFont = fontNameParts[0];
17027
16983
  if (tokenPrefixWithoutFont === undefined || fontNameParts[1] !== '') {
@@ -17029,11 +16985,10 @@
17029
16985
  }
17030
16986
  const fontColorToken = DesignToken.create(styleNameFromTokenName(`${tokenPrefixWithoutFont}-font-color`)).withDefault((element) => colorFunction(element));
17031
16987
  const fontDisabledColorToken = DesignToken.create(styleNameFromTokenName(`${tokenPrefixWithoutFont}-disabled-font-color`)).withDefault((element) => disabledColorFunction(element));
17032
- const fontFamilyToken = DesignToken.create(styleNameFromTokenName(`${tokenPrefixWithoutFont}-font-family`)).withDefault(`${family}`);
17033
- const fontWeightToken = DesignToken.create(styleNameFromTokenName(`${tokenPrefixWithoutFont}-font-weight`)).withDefault(`${weight}`);
17034
- const fontSizeToken = DesignToken.create(styleNameFromTokenName(`${tokenPrefixWithoutFont}-font-size`)).withDefault(`${size}`);
17035
- const fontLineHeightToken = DesignToken.create(styleNameFromTokenName(`${tokenPrefixWithoutFont}-font-line-height`)).withDefault(`${lineHeight}`);
17036
- const fontFallbackFamilyToken = DesignToken.create(styleNameFromTokenName(`${tokenPrefixWithoutFont}-fallback-font-family`)).withDefault(`${fallbackFamily}`);
16988
+ const fontFamilyToken = DesignToken.create(styleNameFromTokenName(`${tokenPrefixWithoutFont}-font-family`)).withDefault(familyWithFallback);
16989
+ const fontWeightToken = DesignToken.create(styleNameFromTokenName(`${tokenPrefixWithoutFont}-font-weight`)).withDefault(weight);
16990
+ const fontSizeToken = DesignToken.create(styleNameFromTokenName(`${tokenPrefixWithoutFont}-font-size`)).withDefault(size);
16991
+ const fontLineHeightToken = DesignToken.create(styleNameFromTokenName(`${tokenPrefixWithoutFont}-font-line-height`)).withDefault(lineHeight);
17037
16992
  return [
17038
16993
  fontToken,
17039
16994
  fontColorToken,
@@ -17041,8 +16996,7 @@
17041
16996
  fontFamilyToken,
17042
16997
  fontWeightToken,
17043
16998
  fontSizeToken,
17044
- fontLineHeightToken,
17045
- fontFallbackFamilyToken
16999
+ fontLineHeightToken
17046
17000
  ];
17047
17001
  }
17048
17002
  function getColorForTheme(element, lightThemeColor, darkThemeColor, colorThemeColor) {
@@ -30531,7 +30485,7 @@
30531
30485
  return null;
30532
30486
  return inside;
30533
30487
  }
30534
- function wrap(tr, range, wrappers) {
30488
+ function wrap$1(tr, range, wrappers) {
30535
30489
  let content = Fragment.empty;
30536
30490
  for (let i = wrappers.length - 1; i >= 0; i--) {
30537
30491
  if (content.size) {
@@ -31449,7 +31403,7 @@
31449
31403
  probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).
31450
31404
  */
31451
31405
  wrap(range, wrappers) {
31452
- wrap(this, range, wrappers);
31406
+ wrap$1(this, range, wrappers);
31453
31407
  return this;
31454
31408
  }
31455
31409
  /**
@@ -50686,7 +50640,7 @@ img.ProseMirror-separator {
50686
50640
 
50687
50641
  function _class (obj) { return Object.prototype.toString.call(obj) }
50688
50642
  function isString (obj) { return _class(obj) === '[object String]' }
50689
- function isObject (obj) { return _class(obj) === '[object Object]' }
50643
+ function isObject$1 (obj) { return _class(obj) === '[object Object]' }
50690
50644
  function isRegExp (obj) { return _class(obj) === '[object RegExp]' }
50691
50645
  function isFunction$1 (obj) { return _class(obj) === '[object Function]' }
50692
50646
 
@@ -50848,7 +50802,7 @@ img.ProseMirror-separator {
50848
50802
 
50849
50803
  self.__compiled__[name] = compiled;
50850
50804
 
50851
- if (isObject(val)) {
50805
+ if (isObject$1(val)) {
50852
50806
  if (isRegExp(val.validate)) {
50853
50807
  compiled.validate = createValidator(val.validate);
50854
50808
  } else if (isFunction$1(val.validate)) {
@@ -74793,7 +74747,8 @@ img.ProseMirror-separator {
74793
74747
  </g>
74794
74748
  </g>
74795
74749
  </svg>
74796
- <canvas class="wafer-map-canvas" ${ref('canvas')}></canvas>
74750
+ <canvas class="main-wafer" ${ref('canvas')}></canvas>
74751
+ <canvas class="worker-wafer" ${ref('workerCanvas')}></canvas>
74797
74752
  <svg class="hover-layer">
74798
74753
  <rect
74799
74754
  class="hover-rect ${x => x.hoverOpacity}"
@@ -74812,6 +74767,16 @@ img.ProseMirror-separator {
74812
74767
  height: 500px;
74813
74768
  }
74814
74769
 
74770
+ .main-wafer {
74771
+ display: inline-block;
74772
+ position: absolute;
74773
+ }
74774
+
74775
+ .worker-wafer {
74776
+ display: inline-block;
74777
+ position: absolute;
74778
+ }
74779
+
74815
74780
  .wafer-map-container {
74816
74781
  width: 100%;
74817
74782
  height: 100%;
@@ -74858,11 +74823,6 @@ img.ProseMirror-separator {
74858
74823
  stroke: ${borderColor};
74859
74824
  }
74860
74825
 
74861
- .wafer-map-canvas {
74862
- display: inline-block;
74863
- position: absolute;
74864
- }
74865
-
74866
74826
  .hover-layer {
74867
74827
  position: absolute;
74868
74828
  pointer-events: none;
@@ -76057,9 +76017,11 @@ img.ProseMirror-separator {
76057
76017
  updateDiesRenderInfo() {
76058
76018
  this.d3ColorScale = this.createD3ColorScale(this.wafermap.colorScale, this.wafermap.colorScaleMode);
76059
76019
  const isDieRenderInfo = (info) => info !== null;
76060
- this._diesRenderInfo = this.wafermap.dies
76061
- .map(die => this.computeDieRenderInfo(die))
76062
- .filter(isDieRenderInfo);
76020
+ if (this.wafermap.diesTable === undefined) {
76021
+ this._diesRenderInfo = this.wafermap.dies
76022
+ .map(die => this.computeDieRenderInfo(die))
76023
+ .filter(isDieRenderInfo);
76024
+ }
76063
76025
  }
76064
76026
  computeDieRenderInfo(die) {
76065
76027
  const margin = this.wafermap.dataManager.margin;
@@ -76661,17 +76623,28 @@ img.ProseMirror-separator {
76661
76623
  * After the update is finished, all the tracked items are reset.
76662
76624
  */
76663
76625
  queueUpdate() {
76664
- if (!this.wafermap.$fastController.isConnected) {
76626
+ if (!this.wafermap.$fastController.isConnected || this.updateQueued) {
76665
76627
  return;
76666
76628
  }
76667
- if (!this.updateQueued) {
76668
- this.updateQueued = true;
76629
+ this.updateQueued = true;
76630
+ if (this.wafermap.currentTask === undefined) {
76669
76631
  DOM.queueUpdate(() => {
76670
76632
  this.wafermap.update();
76671
76633
  this.untrackAll();
76672
76634
  this.updateQueued = false;
76673
76635
  });
76674
76636
  }
76637
+ else {
76638
+ void (async () => {
76639
+ await this.wafermap.currentTask;
76640
+ DOM.queueUpdate(() => {
76641
+ this.wafermap.update();
76642
+ this.untrackAll();
76643
+ this.updateQueued = false;
76644
+ this.wafermap.currentTask = undefined;
76645
+ });
76646
+ })();
76647
+ }
76675
76648
  }
76676
76649
  }
76677
76650
 
@@ -77331,6 +77304,367 @@ img.ProseMirror-separator {
77331
77304
  }
77332
77305
  }
77333
77306
 
77307
+ /**
77308
+ * @license
77309
+ * Copyright 2019 Google LLC
77310
+ * SPDX-License-Identifier: Apache-2.0
77311
+ */
77312
+ const proxyMarker = Symbol("Comlink.proxy");
77313
+ const createEndpoint = Symbol("Comlink.endpoint");
77314
+ const releaseProxy = Symbol("Comlink.releaseProxy");
77315
+ const finalizer = Symbol("Comlink.finalizer");
77316
+ const throwMarker = Symbol("Comlink.thrown");
77317
+ const isObject = (val) => (typeof val === "object" && val !== null) || typeof val === "function";
77318
+ /**
77319
+ * Internal transfer handle to handle objects marked to proxy.
77320
+ */
77321
+ const proxyTransferHandler = {
77322
+ canHandle: (val) => isObject(val) && val[proxyMarker],
77323
+ serialize(obj) {
77324
+ const { port1, port2 } = new MessageChannel();
77325
+ expose(obj, port1);
77326
+ return [port2, [port2]];
77327
+ },
77328
+ deserialize(port) {
77329
+ port.start();
77330
+ return wrap(port);
77331
+ },
77332
+ };
77333
+ /**
77334
+ * Internal transfer handler to handle thrown exceptions.
77335
+ */
77336
+ const throwTransferHandler = {
77337
+ canHandle: (value) => isObject(value) && throwMarker in value,
77338
+ serialize({ value }) {
77339
+ let serialized;
77340
+ if (value instanceof Error) {
77341
+ serialized = {
77342
+ isError: true,
77343
+ value: {
77344
+ message: value.message,
77345
+ name: value.name,
77346
+ stack: value.stack,
77347
+ },
77348
+ };
77349
+ }
77350
+ else {
77351
+ serialized = { isError: false, value };
77352
+ }
77353
+ return [serialized, []];
77354
+ },
77355
+ deserialize(serialized) {
77356
+ if (serialized.isError) {
77357
+ throw Object.assign(new Error(serialized.value.message), serialized.value);
77358
+ }
77359
+ throw serialized.value;
77360
+ },
77361
+ };
77362
+ /**
77363
+ * Allows customizing the serialization of certain values.
77364
+ */
77365
+ const transferHandlers = new Map([
77366
+ ["proxy", proxyTransferHandler],
77367
+ ["throw", throwTransferHandler],
77368
+ ]);
77369
+ function isAllowedOrigin(allowedOrigins, origin) {
77370
+ for (const allowedOrigin of allowedOrigins) {
77371
+ if (origin === allowedOrigin || allowedOrigin === "*") {
77372
+ return true;
77373
+ }
77374
+ if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {
77375
+ return true;
77376
+ }
77377
+ }
77378
+ return false;
77379
+ }
77380
+ function expose(obj, ep = globalThis, allowedOrigins = ["*"]) {
77381
+ ep.addEventListener("message", function callback(ev) {
77382
+ if (!ev || !ev.data) {
77383
+ return;
77384
+ }
77385
+ if (!isAllowedOrigin(allowedOrigins, ev.origin)) {
77386
+ console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);
77387
+ return;
77388
+ }
77389
+ const { id, type, path } = Object.assign({ path: [] }, ev.data);
77390
+ const argumentList = (ev.data.argumentList || []).map(fromWireValue);
77391
+ let returnValue;
77392
+ try {
77393
+ const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);
77394
+ const rawValue = path.reduce((obj, prop) => obj[prop], obj);
77395
+ switch (type) {
77396
+ case "GET" /* MessageType.GET */:
77397
+ {
77398
+ returnValue = rawValue;
77399
+ }
77400
+ break;
77401
+ case "SET" /* MessageType.SET */:
77402
+ {
77403
+ parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);
77404
+ returnValue = true;
77405
+ }
77406
+ break;
77407
+ case "APPLY" /* MessageType.APPLY */:
77408
+ {
77409
+ returnValue = rawValue.apply(parent, argumentList);
77410
+ }
77411
+ break;
77412
+ case "CONSTRUCT" /* MessageType.CONSTRUCT */:
77413
+ {
77414
+ const value = new rawValue(...argumentList);
77415
+ returnValue = proxy(value);
77416
+ }
77417
+ break;
77418
+ case "ENDPOINT" /* MessageType.ENDPOINT */:
77419
+ {
77420
+ const { port1, port2 } = new MessageChannel();
77421
+ expose(obj, port2);
77422
+ returnValue = transfer(port1, [port1]);
77423
+ }
77424
+ break;
77425
+ case "RELEASE" /* MessageType.RELEASE */:
77426
+ {
77427
+ returnValue = undefined;
77428
+ }
77429
+ break;
77430
+ default:
77431
+ return;
77432
+ }
77433
+ }
77434
+ catch (value) {
77435
+ returnValue = { value, [throwMarker]: 0 };
77436
+ }
77437
+ Promise.resolve(returnValue)
77438
+ .catch((value) => {
77439
+ return { value, [throwMarker]: 0 };
77440
+ })
77441
+ .then((returnValue) => {
77442
+ const [wireValue, transferables] = toWireValue(returnValue);
77443
+ ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);
77444
+ if (type === "RELEASE" /* MessageType.RELEASE */) {
77445
+ // detach and deactive after sending release response above.
77446
+ ep.removeEventListener("message", callback);
77447
+ closeEndPoint(ep);
77448
+ if (finalizer in obj && typeof obj[finalizer] === "function") {
77449
+ obj[finalizer]();
77450
+ }
77451
+ }
77452
+ })
77453
+ .catch((error) => {
77454
+ // Send Serialization Error To Caller
77455
+ const [wireValue, transferables] = toWireValue({
77456
+ value: new TypeError("Unserializable return value"),
77457
+ [throwMarker]: 0,
77458
+ });
77459
+ ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);
77460
+ });
77461
+ });
77462
+ if (ep.start) {
77463
+ ep.start();
77464
+ }
77465
+ }
77466
+ function isMessagePort(endpoint) {
77467
+ return endpoint.constructor.name === "MessagePort";
77468
+ }
77469
+ function closeEndPoint(endpoint) {
77470
+ if (isMessagePort(endpoint))
77471
+ endpoint.close();
77472
+ }
77473
+ function wrap(ep, target) {
77474
+ return createProxy(ep, [], target);
77475
+ }
77476
+ function throwIfProxyReleased(isReleased) {
77477
+ if (isReleased) {
77478
+ throw new Error("Proxy has been released and is not useable");
77479
+ }
77480
+ }
77481
+ function releaseEndpoint(ep) {
77482
+ return requestResponseMessage(ep, {
77483
+ type: "RELEASE" /* MessageType.RELEASE */,
77484
+ }).then(() => {
77485
+ closeEndPoint(ep);
77486
+ });
77487
+ }
77488
+ const proxyCounter = new WeakMap();
77489
+ const proxyFinalizers = "FinalizationRegistry" in globalThis &&
77490
+ new FinalizationRegistry((ep) => {
77491
+ const newCount = (proxyCounter.get(ep) || 0) - 1;
77492
+ proxyCounter.set(ep, newCount);
77493
+ if (newCount === 0) {
77494
+ releaseEndpoint(ep);
77495
+ }
77496
+ });
77497
+ function registerProxy(proxy, ep) {
77498
+ const newCount = (proxyCounter.get(ep) || 0) + 1;
77499
+ proxyCounter.set(ep, newCount);
77500
+ if (proxyFinalizers) {
77501
+ proxyFinalizers.register(proxy, ep, proxy);
77502
+ }
77503
+ }
77504
+ function unregisterProxy(proxy) {
77505
+ if (proxyFinalizers) {
77506
+ proxyFinalizers.unregister(proxy);
77507
+ }
77508
+ }
77509
+ function createProxy(ep, path = [], target = function () { }) {
77510
+ let isProxyReleased = false;
77511
+ const proxy = new Proxy(target, {
77512
+ get(_target, prop) {
77513
+ throwIfProxyReleased(isProxyReleased);
77514
+ if (prop === releaseProxy) {
77515
+ return () => {
77516
+ unregisterProxy(proxy);
77517
+ releaseEndpoint(ep);
77518
+ isProxyReleased = true;
77519
+ };
77520
+ }
77521
+ if (prop === "then") {
77522
+ if (path.length === 0) {
77523
+ return { then: () => proxy };
77524
+ }
77525
+ const r = requestResponseMessage(ep, {
77526
+ type: "GET" /* MessageType.GET */,
77527
+ path: path.map((p) => p.toString()),
77528
+ }).then(fromWireValue);
77529
+ return r.then.bind(r);
77530
+ }
77531
+ return createProxy(ep, [...path, prop]);
77532
+ },
77533
+ set(_target, prop, rawValue) {
77534
+ throwIfProxyReleased(isProxyReleased);
77535
+ // FIXME: ES6 Proxy Handler `set` methods are supposed to return a
77536
+ // boolean. To show good will, we return true asynchronously ¯\_(ツ)_/¯
77537
+ const [value, transferables] = toWireValue(rawValue);
77538
+ return requestResponseMessage(ep, {
77539
+ type: "SET" /* MessageType.SET */,
77540
+ path: [...path, prop].map((p) => p.toString()),
77541
+ value,
77542
+ }, transferables).then(fromWireValue);
77543
+ },
77544
+ apply(_target, _thisArg, rawArgumentList) {
77545
+ throwIfProxyReleased(isProxyReleased);
77546
+ const last = path[path.length - 1];
77547
+ if (last === createEndpoint) {
77548
+ return requestResponseMessage(ep, {
77549
+ type: "ENDPOINT" /* MessageType.ENDPOINT */,
77550
+ }).then(fromWireValue);
77551
+ }
77552
+ // We just pretend that `bind()` didn’t happen.
77553
+ if (last === "bind") {
77554
+ return createProxy(ep, path.slice(0, -1));
77555
+ }
77556
+ const [argumentList, transferables] = processArguments(rawArgumentList);
77557
+ return requestResponseMessage(ep, {
77558
+ type: "APPLY" /* MessageType.APPLY */,
77559
+ path: path.map((p) => p.toString()),
77560
+ argumentList,
77561
+ }, transferables).then(fromWireValue);
77562
+ },
77563
+ construct(_target, rawArgumentList) {
77564
+ throwIfProxyReleased(isProxyReleased);
77565
+ const [argumentList, transferables] = processArguments(rawArgumentList);
77566
+ return requestResponseMessage(ep, {
77567
+ type: "CONSTRUCT" /* MessageType.CONSTRUCT */,
77568
+ path: path.map((p) => p.toString()),
77569
+ argumentList,
77570
+ }, transferables).then(fromWireValue);
77571
+ },
77572
+ });
77573
+ registerProxy(proxy, ep);
77574
+ return proxy;
77575
+ }
77576
+ function myFlat(arr) {
77577
+ return Array.prototype.concat.apply([], arr);
77578
+ }
77579
+ function processArguments(argumentList) {
77580
+ const processed = argumentList.map(toWireValue);
77581
+ return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];
77582
+ }
77583
+ const transferCache = new WeakMap();
77584
+ function transfer(obj, transfers) {
77585
+ transferCache.set(obj, transfers);
77586
+ return obj;
77587
+ }
77588
+ function proxy(obj) {
77589
+ return Object.assign(obj, { [proxyMarker]: true });
77590
+ }
77591
+ function toWireValue(value) {
77592
+ for (const [name, handler] of transferHandlers) {
77593
+ if (handler.canHandle(value)) {
77594
+ const [serializedValue, transferables] = handler.serialize(value);
77595
+ return [
77596
+ {
77597
+ type: "HANDLER" /* WireValueType.HANDLER */,
77598
+ name,
77599
+ value: serializedValue,
77600
+ },
77601
+ transferables,
77602
+ ];
77603
+ }
77604
+ }
77605
+ return [
77606
+ {
77607
+ type: "RAW" /* WireValueType.RAW */,
77608
+ value,
77609
+ },
77610
+ transferCache.get(value) || [],
77611
+ ];
77612
+ }
77613
+ function fromWireValue(value) {
77614
+ switch (value.type) {
77615
+ case "HANDLER" /* WireValueType.HANDLER */:
77616
+ return transferHandlers.get(value.name).deserialize(value.value);
77617
+ case "RAW" /* WireValueType.RAW */:
77618
+ return value.value;
77619
+ }
77620
+ }
77621
+ function requestResponseMessage(ep, msg, transfers) {
77622
+ return new Promise((resolve) => {
77623
+ const id = generateUUID();
77624
+ ep.addEventListener("message", function l(ev) {
77625
+ if (!ev.data || !ev.data.id || ev.data.id !== id) {
77626
+ return;
77627
+ }
77628
+ ep.removeEventListener("message", l);
77629
+ resolve(ev.data);
77630
+ });
77631
+ if (ep.start) {
77632
+ ep.start();
77633
+ }
77634
+ ep.postMessage(Object.assign({ id }, msg), transfers);
77635
+ });
77636
+ }
77637
+ function generateUUID() {
77638
+ return new Array(4)
77639
+ .fill(0)
77640
+ .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))
77641
+ .join("-");
77642
+ }
77643
+
77644
+ // eslint-disable-next-line no-template-curly-in-string
77645
+ 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 return createProxy(ep, [], 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, {\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, 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 isProxyReleased = true;\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, {\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, [...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, {\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, {\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, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, {\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, {\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, msg, transfers) {\n return new Promise((resolve) => {\n const id = generateUUID();\n ep.addEventListener(\"message\", function l(ev) {\n if (!ev.data || !ev.data.id || ev.data.id !== id) {\n return;\n }\n ep.removeEventListener(\"message\", l);\n resolve(ev.data);\n });\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.columnIndexes = Int32Array.from([]);\n this.rowIndexes = Int32Array.from([]);\n this.values = Float64Array.from([]);\n this.scaledColumnIndex = Float64Array.from([]);\n this.scaledRowIndex = Float64Array.from([]);\n this.columnIndexPositions = Int32Array.from([]);\n this.scaleX = 1;\n this.scaleY = 1;\n this.baseX = 1;\n this.baseY = 1;\n this.dieDimensions = { width: 1, height: 1 };\n this.transform = { k: 1, x: 0, y: 0 };\n this.smallestMarginPossible = 20;\n this.margin = {\n top: this.smallestMarginPossible,\n right: this.smallestMarginPossible,\n bottom: this.smallestMarginPossible,\n left: this.smallestMarginPossible\n };\n }\n calculateXScaledIndex(columnIndex) {\n return this.scaleX * columnIndex + this.baseX + this.margin.left;\n }\n calculateYScaledIndex(rowIndex) {\n return this.scaleY * rowIndex + this.baseY + this.margin.top;\n }\n setColumnIndexes(columnIndexes) {\n this.columnIndexes = columnIndexes;\n if (columnIndexes.length === 0 || this.columnIndexes[0] === undefined) {\n return;\n }\n const scaledColumnIndex = [\n this.calculateXScaledIndex(this.columnIndexes[0])\n ];\n const columnPositions = [0];\n let prev = this.columnIndexes[0];\n for (let i = 1; i < this.columnIndexes.length; i++) {\n const xIndex = this.columnIndexes[i];\n if (xIndex && xIndex !== prev) {\n const scaledX = this.calculateXScaledIndex(this.columnIndexes[i]);\n scaledColumnIndex.push(scaledX);\n columnPositions.push(i);\n prev = xIndex;\n }\n }\n this.scaledColumnIndex = Float64Array.from(scaledColumnIndex);\n this.columnIndexPositions = Int32Array.from(columnPositions);\n }\n setRowIndexes(rowIndexesBuffer) {\n this.rowIndexes = rowIndexesBuffer;\n this.scaledRowIndex = new Float64Array(this.rowIndexes.length);\n for (let i = 0; i < this.rowIndexes.length; i++) {\n this.scaledRowIndex[i] = this.calculateYScaledIndex(this.rowIndexes[i]);\n }\n }\n setMargin(margin) {\n this.margin = margin;\n }\n setCanvasCorners(topLeft, bottomRight) {\n this.topLeftCanvasCorner = topLeft;\n this.bottomRightCanvasCorner = bottomRight;\n }\n setDiesDimensions(data) {\n this.dieDimensions = { width: data.width, height: data.height };\n }\n setScaling(scaleX, scaleY) {\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n }\n setBases(baseX, baseY) {\n this.baseX = baseX;\n this.baseY = baseY;\n }\n setTransform(transform) {\n this.transform = transform;\n }\n setCanvas(canvas) {\n this.canvas = canvas;\n this.context = canvas.getContext('2d');\n }\n getMatrix() {\n return {\n columnIndexes: this.columnIndexes,\n rowIndexes: this.rowIndexes,\n values: this.values\n };\n }\n emptyMatrix() {\n this.columnIndexes = Int32Array.from([]);\n this.rowIndexes = Int32Array.from([]);\n this.values = Float64Array.from([]);\n }\n scaleCanvas() {\n this.context.translate(this.transform.x, this.transform.y);\n this.context.scale(this.transform.k, this.transform.k);\n }\n updateMatrix(data) {\n this.columnIndexes = Int32Array.from(data.columnIndexes);\n this.rowIndexes = Int32Array.from(data.rowIndexes);\n this.values = Float64Array.from(data.values);\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 if (this.topLeftCanvasCorner === undefined\n || this.bottomRightCanvasCorner === undefined) {\n throw new Error('Canvas corners are not set');\n }\n for (let i = 0; i < this.scaledColumnIndex.length; i++) {\n const scaledX = this.scaledColumnIndex[i];\n if (!(scaledX >= this.topLeftCanvasCorner.x\n && scaledX < this.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 // scaledRowIndex is used when we reach the end of the columnIndexPositions, when columnIndexPositions is [0, 1, 4, 9, 12], scaledRowIndex is 13\n const columnEndIndex = this.columnIndexPositions[i + 1] !== undefined\n ? this.columnIndexPositions[i + 1]\n : this.scaledRowIndex.length;\n for (let columnStartIndex = this.columnIndexPositions[i]; columnStartIndex < columnEndIndex; columnStartIndex++) {\n const scaledY = this.scaledRowIndex[columnStartIndex];\n if (!(scaledY >= this.topLeftCanvasCorner.y\n && scaledY < this.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 = 'Green';\n this.context.fillRect(scaledX, scaledY, this.dieDimensions.width, this.dieDimensions.height);\n }\n }\n }\n }\n expose(MatrixRenderer);\n\n exports.MatrixRenderer = MatrixRenderer;\n\n return exports;\n\n})({});\n";
77646
+
77647
+ let url;
77648
+ /**
77649
+ * Asynchronously creates and returns a Remote<MatrixRenderer> instance.
77650
+ * This function simplifies the process of creating and accessing MatrixRenderer instances.
77651
+ */
77652
+ const createMatrixRenderer = async () => {
77653
+ if (url === undefined) {
77654
+ const blob = new Blob([workerCode], { type: 'text/javascript' });
77655
+ url = URL.createObjectURL(blob);
77656
+ }
77657
+ const worker = new Worker(url);
77658
+ // eslint-disable-next-line @typescript-eslint/naming-convention
77659
+ const RemoteMatrixRenderer = wrap(worker);
77660
+ const matrixRenderer = await new RemoteMatrixRenderer();
77661
+ const terminate = () => worker.terminate();
77662
+ return {
77663
+ matrixRenderer,
77664
+ terminate
77665
+ };
77666
+ };
77667
+
77334
77668
  /**
77335
77669
  * Responsible for drawing the dies inside the wafer map, adding dieText and scaling the canvas
77336
77670
  */
@@ -77338,8 +77672,56 @@ img.ProseMirror-separator {
77338
77672
  constructor(wafermap) {
77339
77673
  this.wafermap = wafermap;
77340
77674
  }
77341
- drawWafer() {
77342
- // rendering will be implemented in a future PR
77675
+ async setupWafer() {
77676
+ if (this.matrixRenderer === undefined) {
77677
+ const { matrixRenderer } = await createMatrixRenderer();
77678
+ this.matrixRenderer = matrixRenderer;
77679
+ const offscreenCanvas = this.wafermap.workerCanvas.transferControlToOffscreen();
77680
+ await this.matrixRenderer.setCanvas(transfer(offscreenCanvas, [offscreenCanvas]));
77681
+ }
77682
+ await this.matrixRenderer.setCanvasDimensions({
77683
+ width: this.wafermap.canvasWidth ?? 0,
77684
+ height: this.wafermap.canvasHeight ?? 0
77685
+ });
77686
+ await this.matrixRenderer.setDiesDimensions(this.wafermap.experimentalDataManager.dieDimensions);
77687
+ const scaleX = this.wafermap.experimentalDataManager.horizontalScale(1)
77688
+ - this.wafermap.experimentalDataManager.horizontalScale(0);
77689
+ const scaleY = this.wafermap.experimentalDataManager.verticalScale(1)
77690
+ - this.wafermap.experimentalDataManager.verticalScale(0);
77691
+ await this.matrixRenderer.setScaling(scaleX, scaleY);
77692
+ await this.matrixRenderer.setBases(this.wafermap.experimentalDataManager.horizontalScale(0), this.wafermap.experimentalDataManager.verticalScale(0));
77693
+ await this.matrixRenderer.setMargin(this.wafermap.experimentalDataManager.margin);
77694
+ if (this.wafermap.diesTable === undefined) {
77695
+ await this.matrixRenderer.setColumnIndexes(Int32Array.from([]));
77696
+ await this.matrixRenderer.setRowIndexes(Int32Array.from([]));
77697
+ return;
77698
+ }
77699
+ const columnIndexes = this.wafermap.diesTable
77700
+ .getChild('colIndex')
77701
+ .toArray();
77702
+ await this.matrixRenderer.setColumnIndexes(columnIndexes);
77703
+ const rowIndexes = this.wafermap.diesTable
77704
+ .getChild('rowIndex')
77705
+ .toArray();
77706
+ await this.matrixRenderer.setRowIndexes(rowIndexes);
77707
+ }
77708
+ async drawWafer() {
77709
+ await this.matrixRenderer.setTransform(this.wafermap.transform);
77710
+ const topLeftCanvasCorner = this.wafermap.transform.invert([0, 0]);
77711
+ const bottomRightCanvasCorner = this.wafermap.transform.invert([
77712
+ this.wafermap.canvasWidth,
77713
+ this.wafermap.canvasHeight
77714
+ ]);
77715
+ await this.matrixRenderer.setCanvasCorners({
77716
+ x: topLeftCanvasCorner[0]
77717
+ - this.wafermap.experimentalDataManager.dieDimensions.width,
77718
+ y: topLeftCanvasCorner[1]
77719
+ - this.wafermap.experimentalDataManager.dieDimensions.height
77720
+ }, {
77721
+ x: bottomRightCanvasCorner[0],
77722
+ y: bottomRightCanvasCorner[1]
77723
+ });
77724
+ await this.matrixRenderer.drawWafer();
77343
77725
  this.renderHover();
77344
77726
  }
77345
77727
  renderHover() {
@@ -77545,6 +77927,9 @@ img.ProseMirror-separator {
77545
77927
  this.onWheelMove = (event) => {
77546
77928
  event.preventDefault();
77547
77929
  };
77930
+ this.wafermapNotifier = Observable.getNotifier(this.wafermap);
77931
+ this.wafermapNotifier.subscribe(this, 'canvasWidth');
77932
+ this.wafermapNotifier.subscribe(this, 'canvasHeight');
77548
77933
  }
77549
77934
  /**
77550
77935
  * @internal
@@ -77562,6 +77947,12 @@ img.ProseMirror-separator {
77562
77947
  zoom().on('zoom', null)(select(this.wafermap));
77563
77948
  this.wafermap.removeEventListener('wheel', this.onWheelMove);
77564
77949
  }
77950
+ handleChange(source, propertyName) {
77951
+ if (source === this.wafermap
77952
+ && (propertyName === 'canvasWidth' || propertyName === 'canvasHeight')) {
77953
+ this.createZoomBehavior();
77954
+ }
77955
+ }
77565
77956
  createZoomBehavior() {
77566
77957
  zoom()
77567
77958
  .scaleExtent(this.scaleExtent)
@@ -77663,27 +78054,25 @@ img.ProseMirror-separator {
77663
78054
  * @internal
77664
78055
  * Experimental update function called when an update is queued.
77665
78056
  */
77666
- experimentalUpdate() {
78057
+ async experimentalUpdate() {
77667
78058
  if (this.validity.invalidDiesTableSchema) {
77668
78059
  return;
77669
78060
  }
77670
78061
  if (this.waferMapUpdateTracker.requiresEventsUpdate) {
77671
- // zoom translateExtent needs to be recalculated when canvas size changes
77672
- this.zoomHandler.disconnect();
77673
78062
  if (this.waferMapUpdateTracker.requiresContainerDimensionsUpdate
77674
78063
  || this.waferMapUpdateTracker.requiresScalesUpdate) {
77675
78064
  this.experimentalDataManager.updateComputations();
77676
- this.workerRenderer.drawWafer();
78065
+ await this.workerRenderer.setupWafer();
78066
+ await this.workerRenderer.drawWafer();
77677
78067
  }
77678
78068
  else if (this.waferMapUpdateTracker.requiresLabelsFontSizeUpdate
77679
78069
  || this.waferMapUpdateTracker.requiresDiesRenderInfoUpdate) {
77680
78070
  this.experimentalDataManager.updatePrerendering();
77681
- this.workerRenderer.drawWafer();
78071
+ await this.workerRenderer.drawWafer();
77682
78072
  }
77683
78073
  else if (this.waferMapUpdateTracker.requiresDrawnWaferUpdate) {
77684
- this.workerRenderer.drawWafer();
78074
+ await this.workerRenderer.drawWafer();
77685
78075
  }
77686
- this.zoomHandler.connect();
77687
78076
  }
77688
78077
  else if (this.waferMapUpdateTracker.requiresRenderHoverUpdate) {
77689
78078
  this.workerRenderer.renderHover();
@@ -77700,12 +78089,10 @@ img.ProseMirror-separator {
77700
78089
  update() {
77701
78090
  this.validate();
77702
78091
  if (this.isExperimentalUpdate()) {
77703
- this.experimentalUpdate();
78092
+ this.currentTask = this.experimentalUpdate();
77704
78093
  return;
77705
78094
  }
77706
78095
  if (this.waferMapUpdateTracker.requiresEventsUpdate) {
77707
- // zoom translateExtent needs to be recalculated when canvas size changes
77708
- this.zoomHandler.disconnect();
77709
78096
  if (this.waferMapUpdateTracker.requiresContainerDimensionsUpdate) {
77710
78097
  this.dataManager.updateContainerDimensions();
77711
78098
  this.renderer.updateSortedDiesAndDrawWafer();
@@ -77725,7 +78112,6 @@ img.ProseMirror-separator {
77725
78112
  else if (this.waferMapUpdateTracker.requiresDrawnWaferUpdate) {
77726
78113
  this.renderer.drawWafer();
77727
78114
  }
77728
- this.zoomHandler.connect();
77729
78115
  }
77730
78116
  else if (this.waferMapUpdateTracker.requiresRenderHoverUpdate) {
77731
78117
  this.renderer.renderHover();