@ni/nimble-components 20.1.5 → 20.1.7

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.
@@ -16288,7 +16288,7 @@
16288
16288
 
16289
16289
  /**
16290
16290
  * Do not edit directly
16291
- * Generated on Fri, 11 Aug 2023 21:45:08 GMT
16291
+ * Generated on Mon, 14 Aug 2023 14:20:26 GMT
16292
16292
  */
16293
16293
 
16294
16294
  const Information100DarkUi = "#a46eff";
@@ -40234,10 +40234,9 @@
40234
40234
  font: ${bodyFont};
40235
40235
  outline: none;
40236
40236
  color: ${bodyFontColor};
40237
- inline-size: auto;
40237
+ width: auto;
40238
40238
  overflow: auto;
40239
- block-size: 100%;
40240
- min-block-size: 36px;
40239
+ height: 100%;
40241
40240
  }
40242
40241
 
40243
40242
  .viewer {
@@ -55044,11 +55043,22 @@
55044
55043
  this.wafermap = wafermap;
55045
55044
  this.minDieDim = 50;
55046
55045
  }
55046
+ updateSortedDiesAndDrawWafer() {
55047
+ this.dies = this.wafermap.dataManager.diesRenderInfo.sort((a, b) => {
55048
+ if (a.fillStyle > b.fillStyle) {
55049
+ return 1;
55050
+ }
55051
+ if (b.fillStyle > a.fillStyle) {
55052
+ return -1;
55053
+ }
55054
+ return 0;
55055
+ });
55056
+ this.drawWafer();
55057
+ }
55047
55058
  drawWafer() {
55048
55059
  this.wafermap.canvasContext.save();
55049
55060
  this.clearCanvas();
55050
55061
  this.scaleCanvas();
55051
- this.sortDies();
55052
55062
  this.renderDies();
55053
55063
  this.renderText();
55054
55064
  this.wafermap.canvasContext.restore();
@@ -55076,56 +55086,70 @@
55076
55086
  }
55077
55087
  return '';
55078
55088
  }
55079
- sortDies() {
55080
- this.dies = this.wafermap.dataManager.diesRenderInfo.sort((a, b) => {
55081
- if (a.fillStyle > b.fillStyle) {
55082
- return 1;
55083
- }
55084
- if (b.fillStyle > a.fillStyle) {
55085
- return -1;
55086
- }
55087
- return 0;
55088
- });
55089
- }
55090
55089
  renderDies() {
55091
- let prev;
55090
+ const context = this.wafermap.canvasContext;
55091
+ const dieWidth = this.wafermap.dataManager.dieDimensions.width;
55092
+ const dieHeight = this.wafermap.dataManager.dieDimensions.height;
55093
+ const transformedCanvasMinPoint = this.wafermap.transform.invert([
55094
+ 0, 0
55095
+ ]);
55096
+ const transformedCanvasMaxPoint = this.wafermap.transform.invert([
55097
+ this.wafermap.canvas.width,
55098
+ this.wafermap.canvas.height
55099
+ ]);
55100
+ transformedCanvasMinPoint[0] -= dieWidth;
55101
+ transformedCanvasMinPoint[1] -= dieHeight;
55092
55102
  for (const die of this.dies) {
55093
- if (!prev) {
55094
- this.wafermap.canvasContext.fillStyle = die.fillStyle;
55095
- }
55096
- if (prev && die.fillStyle !== prev.fillStyle && die.fillStyle) {
55097
- this.wafermap.canvasContext.fillStyle = die.fillStyle;
55103
+ if (this.isDieVisible(die, transformedCanvasMinPoint, transformedCanvasMaxPoint)) {
55104
+ context.fillStyle = die.fillStyle;
55105
+ context.fillRect(die.x, die.y, dieWidth, dieHeight);
55098
55106
  }
55099
- this.wafermap.canvasContext.fillRect(die.x, die.y, this.wafermap.dataManager.dieDimensions.width, this.wafermap.dataManager.dieDimensions.height);
55100
- prev = die;
55101
55107
  }
55102
55108
  }
55103
55109
  renderText() {
55104
- const dieSize = this.wafermap.dataManager.dieDimensions.width
55105
- * this.wafermap.dataManager.dieDimensions.height
55106
- * (this.wafermap.transform.k || 1);
55107
- const fontsize = this.wafermap.dataManager.labelsFontSize;
55108
- this.wafermap.canvasContext.font = `${fontsize.toString()}px sans-serif`;
55109
- this.wafermap.canvasContext.fillStyle = '#ffffff';
55110
- this.wafermap.canvasContext.textAlign = 'center';
55111
- this.wafermap.canvasContext.lineCap = 'butt';
55112
- const approxTextHeight = this.wafermap.canvasContext.measureText('M');
55113
- const dieDimensions = this.wafermap.dataManager.dieDimensions;
55110
+ if (this.wafermap.dieLabelsHidden) {
55111
+ return;
55112
+ }
55113
+ const dieWidth = this.wafermap.dataManager.dieDimensions.width;
55114
+ const dieHeight = this.wafermap.dataManager.dieDimensions.height;
55115
+ const dieSize = dieWidth * dieHeight * (this.wafermap.transform.k || 1);
55114
55116
  if (dieSize >= this.minDieDim) {
55117
+ const fontsize = this.wafermap.dataManager.labelsFontSize;
55118
+ const context = this.wafermap.canvasContext;
55119
+ context.font = `${fontsize.toString()}px sans-serif`;
55120
+ context.fillStyle = '#ffffff';
55121
+ context.textAlign = 'center';
55122
+ context.lineCap = 'butt';
55123
+ const approximateTextHeight = context.measureText('M');
55124
+ const transformedCanvasMinPoint = this.wafermap.transform.invert([
55125
+ 0, 0
55126
+ ]);
55127
+ const transformedCanvasMaxPoint = this.wafermap.transform.invert([
55128
+ this.wafermap.canvas.width,
55129
+ this.wafermap.canvas.height
55130
+ ]);
55131
+ transformedCanvasMinPoint[0] -= dieWidth;
55132
+ transformedCanvasMinPoint[1] -= dieHeight;
55115
55133
  for (const die of this.dies) {
55116
- this.wafermap.canvasContext.fillText(die.text, die.x + dieDimensions.width / 2, die.y
55117
- + dieDimensions.height / 2
55118
- + approxTextHeight.width / 2, dieDimensions.width - (dieDimensions.width / 100) * 20);
55134
+ if (this.isDieVisible(die, transformedCanvasMinPoint, transformedCanvasMaxPoint)) {
55135
+ context.fillText(die.text, die.x + dieWidth / 2, die.y + dieHeight / 2 + approximateTextHeight.width / 2, dieWidth - (dieWidth / 100) * 20);
55136
+ }
55119
55137
  }
55120
55138
  }
55121
55139
  }
55122
55140
  clearCanvas() {
55123
- this.wafermap.canvasContext.clearRect(0, 0, this.wafermap.canvasWidth * this.wafermap.transform.k, this.wafermap.canvasHeight * this.wafermap.transform.k);
55141
+ this.wafermap.canvasContext.clearRect(0, 0, this.wafermap.canvas.width, this.wafermap.canvas.height);
55124
55142
  }
55125
55143
  scaleCanvas() {
55126
55144
  this.wafermap.canvasContext.translate(this.wafermap.transform.x, this.wafermap.transform.y);
55127
55145
  this.wafermap.canvasContext.scale(this.wafermap.transform.k, this.wafermap.transform.k);
55128
55146
  }
55147
+ isDieVisible(die, minPoint, maxPoint) {
55148
+ return (die.x >= minPoint[0]
55149
+ && die.x < maxPoint[0]
55150
+ && die.y >= minPoint[1]
55151
+ && die.y < maxPoint[1]);
55152
+ }
55129
55153
  }
55130
55154
 
55131
55155
  /**
@@ -55322,6 +55346,9 @@
55322
55346
  || this.isTracked('dieLabelsHidden')
55323
55347
  || this.isTracked('dieLabelsSuffix'));
55324
55348
  }
55349
+ get requiresDrawnWaferUpdate() {
55350
+ return this.isTracked('transform');
55351
+ }
55325
55352
  get requiresRenderHoverUpdate() {
55326
55353
  return this.isTracked('hoverDie');
55327
55354
  }
@@ -55427,17 +55454,23 @@
55427
55454
  this.eventCoordinator.detachEvents();
55428
55455
  if (this.waferMapUpdateTracker.requiresContainerDimensionsUpdate) {
55429
55456
  this.dataManager.updateContainerDimensions();
55457
+ this.renderer.updateSortedDiesAndDrawWafer();
55430
55458
  }
55431
55459
  else if (this.waferMapUpdateTracker.requiresScalesUpdate) {
55432
55460
  this.dataManager.updateScales();
55461
+ this.renderer.updateSortedDiesAndDrawWafer();
55433
55462
  }
55434
55463
  else if (this.waferMapUpdateTracker.requiresLabelsFontSizeUpdate) {
55435
55464
  this.dataManager.updateLabelsFontSize();
55465
+ this.renderer.updateSortedDiesAndDrawWafer();
55436
55466
  }
55437
55467
  else if (this.waferMapUpdateTracker.requiresDiesRenderInfoUpdate) {
55438
55468
  this.dataManager.updateDiesRenderInfo();
55469
+ this.renderer.updateSortedDiesAndDrawWafer();
55470
+ }
55471
+ else if (this.waferMapUpdateTracker.requiresDrawnWaferUpdate) {
55472
+ this.renderer.drawWafer();
55439
55473
  }
55440
- this.renderer.drawWafer();
55441
55474
  this.eventCoordinator.attachEvents();
55442
55475
  }
55443
55476
  else if (this.waferMapUpdateTracker.requiresRenderHoverUpdate) {