@ni/nimble-components 24.1.4 → 24.1.6

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 (38) hide show
  1. package/dist/all-components-bundle.js +121 -94
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +6091 -6088
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/combobox/index.d.ts +2 -7
  6. package/dist/esm/combobox/index.js +0 -15
  7. package/dist/esm/combobox/index.js.map +1 -1
  8. package/dist/esm/src/combobox/index.d.ts +2 -7
  9. package/dist/esm/src/wafer-map/index.d.ts +8 -17
  10. package/dist/esm/src/wafer-map/modules/experimental/computations.d.ts +1 -2
  11. package/dist/esm/src/wafer-map/modules/experimental/data-manager.d.ts +4 -10
  12. package/dist/esm/src/wafer-map/modules/experimental/hover-handler.d.ts +1 -5
  13. package/dist/esm/src/wafer-map/modules/experimental/prerendering.d.ts +18 -0
  14. package/dist/esm/src/wafer-map/modules/experimental/worker-renderer.d.ts +0 -1
  15. package/dist/esm/src/wafer-map/types.d.ts +6 -0
  16. package/dist/esm/wafer-map/index.d.ts +8 -17
  17. package/dist/esm/wafer-map/index.js +35 -24
  18. package/dist/esm/wafer-map/index.js.map +1 -1
  19. package/dist/esm/wafer-map/modules/experimental/computations.d.ts +1 -2
  20. package/dist/esm/wafer-map/modules/experimental/computations.js +1 -4
  21. package/dist/esm/wafer-map/modules/experimental/computations.js.map +1 -1
  22. package/dist/esm/wafer-map/modules/experimental/data-manager.d.ts +4 -10
  23. package/dist/esm/wafer-map/modules/experimental/data-manager.js +8 -26
  24. package/dist/esm/wafer-map/modules/experimental/data-manager.js.map +1 -1
  25. package/dist/esm/wafer-map/modules/experimental/hover-handler.d.ts +1 -5
  26. package/dist/esm/wafer-map/modules/experimental/hover-handler.js +6 -10
  27. package/dist/esm/wafer-map/modules/experimental/hover-handler.js.map +1 -1
  28. package/dist/esm/wafer-map/modules/experimental/prerendering.d.ts +18 -0
  29. package/dist/esm/wafer-map/modules/experimental/prerendering.js +63 -0
  30. package/dist/esm/wafer-map/modules/experimental/prerendering.js.map +1 -0
  31. package/dist/esm/wafer-map/modules/experimental/worker-renderer.d.ts +0 -1
  32. package/dist/esm/wafer-map/modules/experimental/worker-renderer.js +6 -10
  33. package/dist/esm/wafer-map/modules/experimental/worker-renderer.js.map +1 -1
  34. package/dist/esm/wafer-map/modules/hover-handler.js +2 -4
  35. package/dist/esm/wafer-map/modules/hover-handler.js.map +1 -1
  36. package/dist/esm/wafer-map/types.d.ts +6 -0
  37. package/dist/esm/wafer-map/types.js.map +1 -1
  38. package/package.json +1 -1
@@ -16301,7 +16301,7 @@
16301
16301
 
16302
16302
  /**
16303
16303
  * Do not edit directly
16304
- * Generated on Tue, 02 Apr 2024 16:52:55 GMT
16304
+ * Generated on Thu, 04 Apr 2024 14:40:58 GMT
16305
16305
  */
16306
16306
 
16307
16307
  const Information100DarkUi = "#a46eff";
@@ -21202,21 +21202,6 @@
21202
21202
  this.emitChangeIfValueUpdated();
21203
21203
  return returnValue;
21204
21204
  }
21205
- /**
21206
- * @internal
21207
- */
21208
- registerOption(option) {
21209
- if (this.options.includes(option)) {
21210
- return;
21211
- }
21212
- // Adding an option to the end, ultimately, isn't the correct
21213
- // thing to do, as this will mean the option's index in the options,
21214
- // at least temporarily, does not match the DOM order. However, it
21215
- // is expected that a successive run of `slottedOptionsChanged` will
21216
- // correct this order issue. See 'https://github.com/ni/nimble/issues/1915'
21217
- // for more info.
21218
- this.options.push(option);
21219
- }
21220
21205
  focusAndScrollOptionIntoView() {
21221
21206
  if (this.open) {
21222
21207
  super.focusAndScrollOptionIntoView();
@@ -75360,7 +75345,7 @@ img.ProseMirror-separator {
75360
75345
  /**
75361
75346
  * Prerendering prepares render-ready dies data to be used by the rendering module
75362
75347
  */
75363
- class Prerendering {
75348
+ let Prerendering$1 = class Prerendering {
75364
75349
  get labelsFontSize() {
75365
75350
  return this._labelsFontSize;
75366
75351
  }
@@ -75465,7 +75450,7 @@ img.ProseMirror-separator {
75465
75450
  rgbColor = new ColorRGBA64(rgbColor.r, rgbColor.g, rgbColor.b, this.calculateOpacity(dieTags, highlightedTags));
75466
75451
  return rgbColor.toStringWebRGBA();
75467
75452
  }
75468
- }
75453
+ };
75469
75454
 
75470
75455
  /**
75471
75456
  * Data Manager uses Computations and Prerendering modules in order and exposes the results
@@ -75507,7 +75492,7 @@ img.ProseMirror-separator {
75507
75492
  constructor(wafermap) {
75508
75493
  this.wafermap = wafermap;
75509
75494
  this.computations = new Computations$1(wafermap);
75510
- this.prerendering = new Prerendering(wafermap);
75495
+ this.prerendering = new Prerendering$1(wafermap);
75511
75496
  }
75512
75497
  updateContainerDimensions() {
75513
75498
  this.computations.updateContainerDimensions();
@@ -75557,7 +75542,7 @@ img.ProseMirror-separator {
75557
75542
  this.defaultPadding = 0;
75558
75543
  this.baseMarginPercentage = 0.04;
75559
75544
  }
75560
- updateContainerDimensions() {
75545
+ update() {
75561
75546
  const canvasDimensions = {
75562
75547
  width: this.wafermap.canvasWidth,
75563
75548
  height: this.wafermap.canvasHeight
@@ -75577,9 +75562,6 @@ img.ProseMirror-separator {
75577
75562
  };
75578
75563
  this._margin = this.calculateMarginAddition(baseMargin, canvasMargin);
75579
75564
  this._containerDimensions = this.calculateContainerDimensions(canvasDimensions, this._margin);
75580
- this.updateScales();
75581
- }
75582
- updateScales() {
75583
75565
  const containerDiameter = Math.min(this._containerDimensions.width, this._containerDimensions.height);
75584
75566
  const gridDimensions = this.gridDimensionsValidAndDefined()
75585
75567
  ? this.calculateGridDimensionsFromBoundingBox()
@@ -75689,6 +75671,66 @@ img.ProseMirror-separator {
75689
75671
  }
75690
75672
  }
75691
75673
 
75674
+ /**
75675
+ * Prerendering prepares render-ready dies data to be used by the rendering module
75676
+ */
75677
+ class Prerendering {
75678
+ get labelsFontSize() {
75679
+ return this._labelsFontSize;
75680
+ }
75681
+ get colorScale() {
75682
+ return this._colorScale;
75683
+ }
75684
+ constructor(wafermap) {
75685
+ this.wafermap = wafermap;
75686
+ this.fontSizeFactor = 0.8;
75687
+ this.colorScaleResolution = 10;
75688
+ }
75689
+ update() {
75690
+ this._labelsFontSize = this.calculateLabelsFontSize(this.wafermap.experimentalDataManager.dieDimensions, this.wafermap.maxCharacters);
75691
+ this._colorScale = this.calculateColorScale();
75692
+ }
75693
+ calculateColorScale() {
75694
+ if (this.wafermap.colorScaleMode === WaferMapColorScaleMode.linear) {
75695
+ const values = this.wafermap.colorScale.values.map(item => +item);
75696
+ const d3ColorScale = linear()
75697
+ .domain(values)
75698
+ .range(this.wafermap.colorScale.colors);
75699
+ let min = values[0];
75700
+ let max = values[0];
75701
+ values.forEach(value => {
75702
+ if (value < min) {
75703
+ min = value;
75704
+ }
75705
+ if (value > max) {
75706
+ max = value;
75707
+ }
75708
+ });
75709
+ // the linear color scale will not be infinite but will be limited by the color scale resolution
75710
+ const valueSamples = ticks(min, max, values.length * this.colorScaleResolution);
75711
+ return valueSamples.map(value => {
75712
+ return {
75713
+ color: d3ColorScale(value),
75714
+ value
75715
+ };
75716
+ });
75717
+ }
75718
+ // ordinal color categories have to be sorted by value
75719
+ return this.wafermap.colorScale.colors
75720
+ .map((color, index) => {
75721
+ return {
75722
+ color,
75723
+ value: +this.wafermap.colorScale.values[index]
75724
+ };
75725
+ })
75726
+ .sort((a, b) => a.value - b.value);
75727
+ }
75728
+ calculateLabelsFontSize(dieDimensions, maxCharacters) {
75729
+ return Math.min(dieDimensions.height, (dieDimensions.width / (Math.max(2, maxCharacters) * 0.5))
75730
+ * this.fontSizeFactor);
75731
+ }
75732
+ }
75733
+
75692
75734
  /**
75693
75735
  * Data Manager uses Computations and Prerendering modules in order and exposes the results
75694
75736
  */
@@ -75711,38 +75753,20 @@ img.ProseMirror-separator {
75711
75753
  get labelsFontSize() {
75712
75754
  return this.prerendering.labelsFontSize;
75713
75755
  }
75714
- get diesRenderInfo() {
75715
- return this.prerendering.diesRenderInfo;
75716
- }
75717
- get data() {
75718
- return this.dataMap;
75756
+ get colorScale() {
75757
+ return this.prerendering.colorScale;
75719
75758
  }
75720
75759
  constructor(wafermap) {
75721
75760
  this.wafermap = wafermap;
75722
75761
  this.computations = new Computations(wafermap);
75723
75762
  this.prerendering = new Prerendering(wafermap);
75724
75763
  }
75725
- updateContainerDimensions() {
75726
- this.computations.updateContainerDimensions();
75727
- this.updateDataMap();
75728
- this.updateLabelsFontSize();
75729
- }
75730
- updateScales() {
75731
- this.computations.updateScales();
75732
- this.updateDataMap();
75733
- this.updateLabelsFontSize();
75734
- }
75735
- updateLabelsFontSize() {
75736
- this.prerendering.updateLabelsFontSize();
75737
- }
75738
- updateDiesRenderInfo() {
75739
- this.prerendering.updateDiesRenderInfo();
75764
+ updateComputations() {
75765
+ this.computations.update();
75766
+ this.prerendering.update();
75740
75767
  }
75741
- getWaferMapDie(point) {
75742
- return this.dataMap.get(`${point.x}_${point.y}`);
75743
- }
75744
- updateDataMap() {
75745
- this.dataMap = new Map(this.wafermap.dies.map(die => [`${die.x}_${die.y}`, die]));
75768
+ updatePrerendering() {
75769
+ this.prerendering.update();
75746
75770
  }
75747
75771
  }
75748
75772
 
@@ -76623,18 +76647,14 @@ img.ProseMirror-separator {
76623
76647
  constructor(wafermap) {
76624
76648
  this.wafermap = wafermap;
76625
76649
  }
76626
- updateSortedDiesAndDrawWafer() {
76627
- // redundant function for backwards compatibility
76628
- this.drawWafer();
76629
- }
76630
76650
  drawWafer() {
76631
76651
  // rendering will be implemented in a future PR
76632
76652
  this.renderHover();
76633
76653
  }
76634
76654
  renderHover() {
76635
- this.wafermap.hoverWidth = this.wafermap.dataManager.dieDimensions.width
76655
+ this.wafermap.hoverWidth = this.wafermap.experimentalDataManager.dieDimensions.width
76636
76656
  * this.wafermap.transform.k;
76637
- this.wafermap.hoverHeight = this.wafermap.dataManager.dieDimensions.height
76657
+ this.wafermap.hoverHeight = this.wafermap.experimentalDataManager.dieDimensions.height
76638
76658
  * this.wafermap.transform.k;
76639
76659
  this.wafermap.hoverOpacity = this.wafermap.hoverDie === undefined
76640
76660
  ? HoverDieOpacity.hide
@@ -76643,17 +76663,17 @@ img.ProseMirror-separator {
76643
76663
  }
76644
76664
  calculateHoverTransform() {
76645
76665
  if (this.wafermap.hoverDie !== undefined) {
76646
- const scaledX = this.wafermap.dataManager.horizontalScale(this.wafermap.hoverDie.x);
76666
+ const scaledX = this.wafermap.experimentalDataManager.horizontalScale(this.wafermap.hoverDie.x);
76647
76667
  if (scaledX === undefined) {
76648
76668
  return '';
76649
76669
  }
76650
- const scaledY = this.wafermap.dataManager.verticalScale(this.wafermap.hoverDie.y);
76670
+ const scaledY = this.wafermap.experimentalDataManager.verticalScale(this.wafermap.hoverDie.y);
76651
76671
  if (scaledY === undefined) {
76652
76672
  return '';
76653
76673
  }
76654
76674
  const transformedPoint = this.wafermap.transform.apply([
76655
- scaledX + this.wafermap.dataManager.margin.left,
76656
- scaledY + this.wafermap.dataManager.margin.top
76675
+ scaledX + this.wafermap.experimentalDataManager.margin.left,
76676
+ scaledY + this.wafermap.experimentalDataManager.margin.top
76657
76677
  ]);
76658
76678
  return `translate(${transformedPoint[0]}, ${transformedPoint[1]})`;
76659
76679
  }
@@ -76668,7 +76688,7 @@ img.ProseMirror-separator {
76668
76688
  constructor(wafermap) {
76669
76689
  this.wafermap = wafermap;
76670
76690
  this.onMouseMove = (event) => {
76671
- if (this.wafermap.isExperimentalRenderer()) {
76691
+ if (this.wafermap.isExperimentalUpdate()) {
76672
76692
  return;
76673
76693
  }
76674
76694
  const mousePosition = {
@@ -76713,8 +76733,7 @@ img.ProseMirror-separator {
76713
76733
  this.wafermap.removeEventListener('mouseout', this.onMouseOut);
76714
76734
  }
76715
76735
  calculateDieCoordinates(mousePosition) {
76716
- if (!this.wafermap.isExperimentalRenderer()
76717
- && this.wafermap.dataManager instanceof DataManager$1) {
76736
+ if (!this.wafermap.isExperimentalUpdate()) {
76718
76737
  const originLocation = this.wafermap.originLocation;
76719
76738
  const xRoundFunction = originLocation === WaferMapOriginLocation.bottomLeft
76720
76739
  || originLocation === WaferMapOriginLocation.topLeft
@@ -76747,12 +76766,8 @@ img.ProseMirror-separator {
76747
76766
  class HoverHandler {
76748
76767
  constructor(wafermap) {
76749
76768
  this.wafermap = wafermap;
76750
- /**
76751
- * @internal
76752
- * keep public for testing until data manager refactor
76753
- */
76754
76769
  this.onMouseMove = (event) => {
76755
- if (!this.wafermap.isExperimentalRenderer()) {
76770
+ if (!this.wafermap.isExperimentalUpdate()) {
76756
76771
  return;
76757
76772
  }
76758
76773
  // get original mouse position in case we are in zoom.
@@ -76807,8 +76822,7 @@ img.ProseMirror-separator {
76807
76822
  this.wafermap.removeEventListener('mouseout', this.onMouseOut);
76808
76823
  }
76809
76824
  calculateDieCoordinates(mousePosition) {
76810
- if (this.wafermap.isExperimentalRenderer()
76811
- && this.wafermap.dataManager instanceof DataManager) {
76825
+ if (this.wafermap.isExperimentalUpdate()) {
76812
76826
  const originLocation = this.wafermap.originLocation;
76813
76827
  const xRoundFunction = originLocation === WaferMapOriginLocation.bottomLeft
76814
76828
  || originLocation === WaferMapOriginLocation.topLeft
@@ -76819,8 +76833,10 @@ img.ProseMirror-separator {
76819
76833
  ? Math.ceil
76820
76834
  : Math.floor;
76821
76835
  // go to x and y scale to get the x,y values of the die.
76822
- const x = xRoundFunction(this.wafermap.dataManager.horizontalScale.invert(mousePosition.x - this.wafermap.dataManager.margin.left));
76823
- const y = yRoundFunction(this.wafermap.dataManager.verticalScale.invert(mousePosition.y - this.wafermap.dataManager.margin.top));
76836
+ const x = xRoundFunction(this.wafermap.experimentalDataManager.horizontalScale.invert(mousePosition.x
76837
+ - this.wafermap.experimentalDataManager.margin.left));
76838
+ const y = yRoundFunction(this.wafermap.experimentalDataManager.verticalScale.invert(mousePosition.y
76839
+ - this.wafermap.experimentalDataManager.margin.top));
76824
76840
  return { x, y };
76825
76841
  }
76826
76842
  return undefined;
@@ -76891,24 +76907,10 @@ img.ProseMirror-separator {
76891
76907
  this.dieLabelsHidden = false;
76892
76908
  this.dieLabelsSuffix = '';
76893
76909
  this.colorScaleMode = WaferMapColorScaleMode.linear;
76894
- /**
76895
- * @internal
76896
- */
76897
- this.stableDataManager = new DataManager$1(this.asRequiredFieldsWaferMap);
76898
- /**
76899
- * @internal
76900
- */
76901
76910
  this.experimentalDataManager = new DataManager(this.asRequiredFieldsWaferMap);
76902
- this.dataManager = this.stableDataManager;
76903
- /**
76904
- * @internal
76905
- */
76906
- this.mainRenderer = new RenderingModule(this.asRequiredFieldsWaferMap);
76907
- /**
76908
- * @internal
76909
- */
76911
+ this.dataManager = new DataManager$1(this.asRequiredFieldsWaferMap);
76910
76912
  this.workerRenderer = new WorkerRenderer(this.asRequiredFieldsWaferMap);
76911
- this.renderer = this.mainRenderer;
76913
+ this.renderer = new RenderingModule(this.asRequiredFieldsWaferMap);
76912
76914
  /**
76913
76915
  * @internal
76914
76916
  */
@@ -76966,6 +76968,36 @@ img.ProseMirror-separator {
76966
76968
  this.zoomHandler.disconnect();
76967
76969
  this.resizeObserver.unobserve(this);
76968
76970
  }
76971
+ /**
76972
+ * @internal
76973
+ * Experimental update function called when an update is queued.
76974
+ */
76975
+ experimentalUpdate() {
76976
+ if (this.validity.invalidDiesTableSchema) {
76977
+ return;
76978
+ }
76979
+ if (this.waferMapUpdateTracker.requiresEventsUpdate) {
76980
+ // zoom translateExtent needs to be recalculated when canvas size changes
76981
+ this.zoomHandler.disconnect();
76982
+ if (this.waferMapUpdateTracker.requiresContainerDimensionsUpdate
76983
+ || this.waferMapUpdateTracker.requiresScalesUpdate) {
76984
+ this.experimentalDataManager.updateComputations();
76985
+ this.workerRenderer.drawWafer();
76986
+ }
76987
+ else if (this.waferMapUpdateTracker.requiresLabelsFontSizeUpdate
76988
+ || this.waferMapUpdateTracker.requiresDiesRenderInfoUpdate) {
76989
+ this.experimentalDataManager.updatePrerendering();
76990
+ this.workerRenderer.drawWafer();
76991
+ }
76992
+ else if (this.waferMapUpdateTracker.requiresDrawnWaferUpdate) {
76993
+ this.workerRenderer.drawWafer();
76994
+ }
76995
+ this.zoomHandler.connect();
76996
+ }
76997
+ else if (this.waferMapUpdateTracker.requiresRenderHoverUpdate) {
76998
+ this.workerRenderer.renderHover();
76999
+ }
77000
+ }
76969
77001
  /**
76970
77002
  * @internal
76971
77003
  * Update function called when an update is queued.
@@ -76976,18 +77008,13 @@ img.ProseMirror-separator {
76976
77008
  */
76977
77009
  update() {
76978
77010
  this.validate();
76979
- if (this.validity.invalidDiesTableSchema) {
77011
+ if (this.isExperimentalUpdate()) {
77012
+ this.experimentalUpdate();
76980
77013
  return;
76981
77014
  }
76982
- this.renderer = this.isExperimentalRenderer()
76983
- ? this.workerRenderer
76984
- : this.mainRenderer;
76985
77015
  if (this.waferMapUpdateTracker.requiresEventsUpdate) {
76986
77016
  // zoom translateExtent needs to be recalculated when canvas size changes
76987
77017
  this.zoomHandler.disconnect();
76988
- this.dataManager = this.isExperimentalRenderer()
76989
- ? this.experimentalDataManager
76990
- : this.stableDataManager;
76991
77018
  if (this.waferMapUpdateTracker.requiresContainerDimensionsUpdate) {
76992
77019
  this.dataManager.updateContainerDimensions();
76993
77020
  this.renderer.updateSortedDiesAndDrawWafer();
@@ -77016,7 +77043,7 @@ img.ProseMirror-separator {
77016
77043
  /**
77017
77044
  * @internal
77018
77045
  */
77019
- isExperimentalRenderer() {
77046
+ isExperimentalUpdate() {
77020
77047
  return this.diesTable !== undefined;
77021
77048
  }
77022
77049
  validate() {