@ni/nimble-components 18.3.4 → 18.3.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.
- package/dist/all-components-bundle.js +152 -110
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +439 -454
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/esm/table/index.d.ts +14 -1
- package/dist/esm/table/index.js +49 -6
- package/dist/esm/table/index.js.map +1 -1
- package/dist/esm/table/models/table-validator.d.ts +3 -0
- package/dist/esm/table/models/table-validator.js +25 -1
- package/dist/esm/table/models/table-validator.js.map +1 -1
- package/dist/esm/table/models/table-validator.spec.js +267 -195
- package/dist/esm/table/models/table-validator.spec.js.map +1 -1
- package/dist/esm/table/types.d.ts +2 -0
- package/dist/esm/table-column/base/index.d.ts +2 -1
- package/dist/esm/table-column/base/index.js +5 -0
- package/dist/esm/table-column/base/index.js.map +1 -1
- package/dist/esm/wafer-map/index.d.ts +8 -3
- package/dist/esm/wafer-map/index.js +17 -15
- package/dist/esm/wafer-map/index.js.map +1 -1
- package/dist/esm/wafer-map/modules/computations.d.ts +6 -6
- package/dist/esm/wafer-map/modules/computations.js +39 -35
- package/dist/esm/wafer-map/modules/computations.js.map +1 -1
- package/dist/esm/wafer-map/modules/data-manager.d.ts +0 -4
- package/dist/esm/wafer-map/modules/data-manager.js +2 -11
- package/dist/esm/wafer-map/modules/data-manager.js.map +1 -1
- package/dist/esm/wafer-map/modules/prerendering.d.ts +3 -3
- package/dist/esm/wafer-map/modules/prerendering.js +6 -6
- package/dist/esm/wafer-map/modules/prerendering.js.map +1 -1
- package/dist/esm/wafer-map/modules/rendering.d.ts +0 -1
- package/dist/esm/wafer-map/modules/rendering.js +5 -5
- package/dist/esm/wafer-map/modules/rendering.js.map +1 -1
- package/dist/esm/wafer-map/modules/zoom-handler.js +3 -4
- package/dist/esm/wafer-map/modules/zoom-handler.js.map +1 -1
- package/dist/esm/wafer-map/styles.js +2 -20
- package/dist/esm/wafer-map/styles.js.map +1 -1
- package/dist/esm/wafer-map/template.js +2 -8
- package/dist/esm/wafer-map/template.js.map +1 -1
- package/package.json +1 -1
|
@@ -26577,6 +26577,9 @@
|
|
|
26577
26577
|
this.setAttribute('slot', uniqueId('table-column-slot'));
|
|
26578
26578
|
}
|
|
26579
26579
|
}
|
|
26580
|
+
__decorate$1([
|
|
26581
|
+
attr({ attribute: 'column-id' })
|
|
26582
|
+
], TableColumn.prototype, "columnId", void 0);
|
|
26580
26583
|
|
|
26581
26584
|
/**
|
|
26582
26585
|
* Helper class for the nimble-table to validate that the table's configuration
|
|
@@ -26587,12 +26590,16 @@
|
|
|
26587
26590
|
this.duplicateRecordId = false;
|
|
26588
26591
|
this.missingRecordId = false;
|
|
26589
26592
|
this.invalidRecordId = false;
|
|
26593
|
+
this.duplicateColumnId = false;
|
|
26594
|
+
this.missingColumnId = false;
|
|
26590
26595
|
}
|
|
26591
26596
|
getValidity() {
|
|
26592
26597
|
return {
|
|
26593
26598
|
duplicateRecordId: this.duplicateRecordId,
|
|
26594
26599
|
missingRecordId: this.missingRecordId,
|
|
26595
|
-
invalidRecordId: this.invalidRecordId
|
|
26600
|
+
invalidRecordId: this.invalidRecordId,
|
|
26601
|
+
duplicateColumnId: this.duplicateColumnId,
|
|
26602
|
+
missingColumnId: this.missingColumnId
|
|
26596
26603
|
};
|
|
26597
26604
|
}
|
|
26598
26605
|
isValid() {
|
|
@@ -26626,6 +26633,26 @@
|
|
|
26626
26633
|
&& !this.invalidRecordId
|
|
26627
26634
|
&& !this.duplicateRecordId);
|
|
26628
26635
|
}
|
|
26636
|
+
validateColumnIds(columnIds) {
|
|
26637
|
+
this.missingColumnId = false;
|
|
26638
|
+
this.duplicateColumnId = false;
|
|
26639
|
+
const anyColumnsHaveIds = columnIds.some(id => id);
|
|
26640
|
+
if (!anyColumnsHaveIds) {
|
|
26641
|
+
return true;
|
|
26642
|
+
}
|
|
26643
|
+
const idSet = new Set();
|
|
26644
|
+
for (const columnId of columnIds) {
|
|
26645
|
+
if (!columnId) {
|
|
26646
|
+
this.missingColumnId = true;
|
|
26647
|
+
continue;
|
|
26648
|
+
}
|
|
26649
|
+
if (idSet.has(columnId)) {
|
|
26650
|
+
this.duplicateColumnId = true;
|
|
26651
|
+
}
|
|
26652
|
+
idSet.add(columnId);
|
|
26653
|
+
}
|
|
26654
|
+
return !this.missingColumnId && !this.duplicateColumnId;
|
|
26655
|
+
}
|
|
26629
26656
|
}
|
|
26630
26657
|
|
|
26631
26658
|
const styles$d = css `
|
|
@@ -27680,6 +27707,7 @@
|
|
|
27680
27707
|
*/
|
|
27681
27708
|
this.canRenderRows = true;
|
|
27682
27709
|
this.tableValidator = new TableValidator();
|
|
27710
|
+
this.columnNotifiers = [];
|
|
27683
27711
|
this.update = (state) => {
|
|
27684
27712
|
this.table.setOptions(prev => ({
|
|
27685
27713
|
...prev,
|
|
@@ -27712,24 +27740,66 @@
|
|
|
27712
27740
|
this.generateTanStackColumns(newData);
|
|
27713
27741
|
this.setTableData(newData);
|
|
27714
27742
|
}
|
|
27715
|
-
idFieldNameChanged(_prev, _next) {
|
|
27716
|
-
// Force TanStack to detect a data update because a row's ID is only
|
|
27717
|
-
// generated when creating a new row model.
|
|
27718
|
-
this.setTableData(this.table.options.data);
|
|
27719
|
-
}
|
|
27720
27743
|
connectedCallback() {
|
|
27721
27744
|
super.connectedCallback();
|
|
27722
27745
|
this.virtualizer.connectedCallback();
|
|
27746
|
+
this.validateAndObserveColumns();
|
|
27723
27747
|
}
|
|
27724
27748
|
disconnectedCallback() {
|
|
27749
|
+
super.disconnectedCallback();
|
|
27725
27750
|
this.virtualizer.disconnectedCallback();
|
|
27751
|
+
this.removeColumnObservers();
|
|
27726
27752
|
}
|
|
27727
27753
|
checkValidity() {
|
|
27728
27754
|
return this.tableValidator.isValid();
|
|
27729
27755
|
}
|
|
27756
|
+
/**
|
|
27757
|
+
* @internal
|
|
27758
|
+
*
|
|
27759
|
+
* The event handler that is called when a notifier detects a change. Notifiers are added
|
|
27760
|
+
* to each column, so `source` is expected to be an instance of `TableColumn`, and `args`
|
|
27761
|
+
* is the string name of the property that changed on that column.
|
|
27762
|
+
*/
|
|
27763
|
+
handleChange(source, args) {
|
|
27764
|
+
if (source instanceof TableColumn) {
|
|
27765
|
+
if (args === 'columnId') {
|
|
27766
|
+
this.validateColumnIds();
|
|
27767
|
+
}
|
|
27768
|
+
}
|
|
27769
|
+
}
|
|
27730
27770
|
childItemsChanged() {
|
|
27731
27771
|
void this.updateColumnsFromChildItems();
|
|
27732
27772
|
}
|
|
27773
|
+
idFieldNameChanged(_prev, _next) {
|
|
27774
|
+
// Force TanStack to detect a data update because a row's ID is only
|
|
27775
|
+
// generated when creating a new row model.
|
|
27776
|
+
this.setTableData(this.table.options.data);
|
|
27777
|
+
}
|
|
27778
|
+
columnsChanged(_prev, _next) {
|
|
27779
|
+
if (!this.$fastController.isConnected) {
|
|
27780
|
+
return;
|
|
27781
|
+
}
|
|
27782
|
+
this.validateAndObserveColumns();
|
|
27783
|
+
}
|
|
27784
|
+
removeColumnObservers() {
|
|
27785
|
+
this.columnNotifiers.forEach(notifier => {
|
|
27786
|
+
notifier.unsubscribe(this);
|
|
27787
|
+
});
|
|
27788
|
+
this.columnNotifiers = [];
|
|
27789
|
+
}
|
|
27790
|
+
validateAndObserveColumns() {
|
|
27791
|
+
this.removeColumnObservers();
|
|
27792
|
+
for (const column of this.columns) {
|
|
27793
|
+
const notifier = Observable.getNotifier(column);
|
|
27794
|
+
notifier.subscribe(this);
|
|
27795
|
+
this.columnNotifiers.push(notifier);
|
|
27796
|
+
}
|
|
27797
|
+
this.validateColumnIds();
|
|
27798
|
+
}
|
|
27799
|
+
validateColumnIds() {
|
|
27800
|
+
this.tableValidator.validateColumnIds(this.columns.map(x => x.columnId));
|
|
27801
|
+
this.canRenderRows = this.checkValidity();
|
|
27802
|
+
}
|
|
27733
27803
|
async updateColumnsFromChildItems() {
|
|
27734
27804
|
const definedElements = this.childItems.map(async (item) => (item.matches(':not(:defined)')
|
|
27735
27805
|
? customElements.whenDefined(item.localName)
|
|
@@ -32361,11 +32431,7 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
32361
32431
|
const template = html `
|
|
32362
32432
|
<div class="wafer-map-container">
|
|
32363
32433
|
<svg class="svg-root">
|
|
32364
|
-
<g
|
|
32365
|
-
class="zoom-container"
|
|
32366
|
-
${ref('zoomContainer')}
|
|
32367
|
-
transform=${x => x.transform.toString()}
|
|
32368
|
-
>
|
|
32434
|
+
<g ${ref('zoomContainer')} transform=${x => x.transform.toString()}>
|
|
32369
32435
|
<g class="notch ${x => x.orientation}">
|
|
32370
32436
|
<svg
|
|
32371
32437
|
class="circle-base"
|
|
@@ -32382,9 +32448,7 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
32382
32448
|
</g>
|
|
32383
32449
|
</g>
|
|
32384
32450
|
</svg>
|
|
32385
|
-
<
|
|
32386
|
-
<canvas class="wafer-map-canvas" ${ref('canvas')}></canvas>
|
|
32387
|
-
</div>
|
|
32451
|
+
<canvas class="wafer-map-canvas" ${ref('canvas')}></canvas>
|
|
32388
32452
|
</div>
|
|
32389
32453
|
`;
|
|
32390
32454
|
|
|
@@ -32397,7 +32461,7 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
32397
32461
|
|
|
32398
32462
|
.wafer-map-container {
|
|
32399
32463
|
width: 100%;
|
|
32400
|
-
|
|
32464
|
+
height: 100%;
|
|
32401
32465
|
position: relative;
|
|
32402
32466
|
display: inline-block;
|
|
32403
32467
|
justify-content: center;
|
|
@@ -32430,16 +32494,7 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
32430
32494
|
transform: rotate(90deg);
|
|
32431
32495
|
}
|
|
32432
32496
|
|
|
32433
|
-
.zoom-container {
|
|
32434
|
-
width: 100%;
|
|
32435
|
-
height: 100%;
|
|
32436
|
-
position: absolute;
|
|
32437
|
-
}
|
|
32438
|
-
|
|
32439
32497
|
.circle-base {
|
|
32440
|
-
width: 100%;
|
|
32441
|
-
height: 100%;
|
|
32442
|
-
position: absolute;
|
|
32443
32498
|
fill: white;
|
|
32444
32499
|
}
|
|
32445
32500
|
|
|
@@ -32450,18 +32505,9 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
32450
32505
|
stroke: ${borderColor};
|
|
32451
32506
|
}
|
|
32452
32507
|
|
|
32453
|
-
.wafer-map-area {
|
|
32454
|
-
position: absolute;
|
|
32455
|
-
justify-content: center;
|
|
32456
|
-
align-items: center;
|
|
32457
|
-
width: 100%;
|
|
32458
|
-
height: 100%;
|
|
32459
|
-
}
|
|
32460
|
-
|
|
32461
32508
|
.wafer-map-canvas {
|
|
32462
32509
|
display: inline-block;
|
|
32463
|
-
|
|
32464
|
-
height: 100%;
|
|
32510
|
+
position: absolute;
|
|
32465
32511
|
}
|
|
32466
32512
|
`;
|
|
32467
32513
|
|
|
@@ -33360,43 +33406,47 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33360
33406
|
* Computations calculates and stores different measures which are used in the Wafermap
|
|
33361
33407
|
*/
|
|
33362
33408
|
class Computations {
|
|
33363
|
-
constructor(
|
|
33409
|
+
constructor(wafermap) {
|
|
33364
33410
|
this.baseMargin = {
|
|
33365
|
-
top:
|
|
33366
|
-
right:
|
|
33367
|
-
bottom:
|
|
33368
|
-
left:
|
|
33411
|
+
top: 0,
|
|
33412
|
+
right: 0,
|
|
33413
|
+
bottom: 0,
|
|
33414
|
+
left: 0
|
|
33369
33415
|
};
|
|
33370
|
-
this.dieSizeFactor = 1.5;
|
|
33371
33416
|
this.defaultAlign = 0.5;
|
|
33372
|
-
this.
|
|
33373
|
-
const
|
|
33374
|
-
|
|
33375
|
-
|
|
33376
|
-
this.dieDimensions = {
|
|
33377
|
-
width: this.calculateGridWidth(gridMapDimensions.cols, this.containerDimensions.width),
|
|
33378
|
-
height: 0
|
|
33417
|
+
this.baseMarginPercentage = 0.04;
|
|
33418
|
+
const canvasDimensions = {
|
|
33419
|
+
width: wafermap.canvasWidth,
|
|
33420
|
+
height: wafermap.canvasHeight
|
|
33379
33421
|
};
|
|
33380
|
-
|
|
33381
|
-
|
|
33382
|
-
|
|
33383
|
-
|
|
33384
|
-
|
|
33385
|
-
|
|
33386
|
-
|
|
33387
|
-
|
|
33388
|
-
|
|
33389
|
-
|
|
33390
|
-
|
|
33391
|
-
|
|
33392
|
-
|
|
33393
|
-
|
|
33422
|
+
const gridDimensions = this.calculateGridDimensions(wafermap.dies);
|
|
33423
|
+
const canvasDiameter = Math.min(canvasDimensions.width, canvasDimensions.height);
|
|
33424
|
+
const canvasMargin = {
|
|
33425
|
+
top: (canvasDimensions.height - canvasDiameter) / 2,
|
|
33426
|
+
right: (canvasDimensions.width - canvasDiameter) / 2,
|
|
33427
|
+
bottom: (canvasDimensions.height - canvasDiameter) / 2,
|
|
33428
|
+
left: (canvasDimensions.width - canvasDiameter) / 2
|
|
33429
|
+
};
|
|
33430
|
+
const baseMargin = {
|
|
33431
|
+
top: canvasDiameter * this.baseMarginPercentage,
|
|
33432
|
+
right: canvasDiameter * this.baseMarginPercentage,
|
|
33433
|
+
bottom: canvasDiameter * this.baseMarginPercentage,
|
|
33434
|
+
left: canvasDiameter * this.baseMarginPercentage
|
|
33435
|
+
};
|
|
33436
|
+
this.margin = this.calculateMarginAddition(baseMargin, canvasMargin);
|
|
33437
|
+
this.containerDimensions = this.calculateContainerDimensions(canvasDimensions, this.margin);
|
|
33438
|
+
const containerDiameter = Math.min(this.containerDimensions.width, this.containerDimensions.height);
|
|
33439
|
+
// this scale is used for positioning the dies on the canvas
|
|
33440
|
+
this.horizontalScale = this.createHorizontalScale(wafermap.quadrant, gridDimensions, containerDiameter);
|
|
33441
|
+
// this scale is used for positioning the dies on the canvas
|
|
33442
|
+
this.verticalScale = this.createVerticalScale(wafermap.quadrant, gridDimensions, containerDiameter);
|
|
33394
33443
|
this.dieDimensions = {
|
|
33395
|
-
width: this.
|
|
33396
|
-
height: this.calculateGridHeight(
|
|
33444
|
+
width: this.calculateGridWidth(gridDimensions.cols, this.containerDimensions.width),
|
|
33445
|
+
height: this.calculateGridHeight(gridDimensions.rows, this.containerDimensions.height)
|
|
33397
33446
|
};
|
|
33447
|
+
this.radius = containerDiameter / 2;
|
|
33398
33448
|
}
|
|
33399
|
-
|
|
33449
|
+
calculateGridDimensions(dies) {
|
|
33400
33450
|
if (dies.length === 0 || dies[0] === undefined) {
|
|
33401
33451
|
return { origin: { x: 0, y: 0 }, rows: 0, cols: 0 };
|
|
33402
33452
|
}
|
|
@@ -33466,12 +33516,12 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33466
33516
|
.range([0, containerHeight])
|
|
33467
33517
|
.bandwidth();
|
|
33468
33518
|
}
|
|
33469
|
-
|
|
33519
|
+
calculateMarginAddition(baseMargin, addedMargin) {
|
|
33470
33520
|
return {
|
|
33471
|
-
top:
|
|
33472
|
-
right:
|
|
33473
|
-
bottom:
|
|
33474
|
-
left:
|
|
33521
|
+
top: baseMargin.top + addedMargin.top,
|
|
33522
|
+
right: baseMargin.right + addedMargin.right,
|
|
33523
|
+
bottom: baseMargin.bottom + addedMargin.bottom,
|
|
33524
|
+
left: baseMargin.left + addedMargin.left
|
|
33475
33525
|
};
|
|
33476
33526
|
}
|
|
33477
33527
|
}
|
|
@@ -33480,20 +33530,20 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33480
33530
|
* Prerendering prepares render-ready dies data to be used by the rendering module
|
|
33481
33531
|
*/
|
|
33482
33532
|
class Prerendering {
|
|
33483
|
-
constructor(
|
|
33533
|
+
constructor(wafermap, horizontalScale, verticalScale, dieDimensions, margin) {
|
|
33484
33534
|
this.fontSizeFactor = 0.8;
|
|
33485
33535
|
this.nonHighlightedOpacity = 0.3;
|
|
33486
33536
|
this.emptyDieColor = 'rgba(218,223,236,1)';
|
|
33487
33537
|
this.nanDieColor = 'rgba(122,122,122,1)';
|
|
33488
|
-
this.d3ColorScale = this.createD3ColorScale(colorScale, colorScaleMode);
|
|
33489
|
-
this.labelsFontSize = this.calculateLabelsFontSize(dieDimensions, maxCharacters);
|
|
33538
|
+
this.d3ColorScale = this.createD3ColorScale(wafermap.colorScale, wafermap.colorScaleMode);
|
|
33539
|
+
this.labelsFontSize = this.calculateLabelsFontSize(dieDimensions, wafermap.maxCharacters);
|
|
33490
33540
|
this.diesRenderInfo = [];
|
|
33491
|
-
for (const die of dies) {
|
|
33541
|
+
for (const die of wafermap.dies) {
|
|
33492
33542
|
this.diesRenderInfo.push({
|
|
33493
33543
|
x: horizontalScale(die.x) + margin.right,
|
|
33494
33544
|
y: verticalScale(die.y) + margin.top,
|
|
33495
|
-
fillStyle: this.calculateFillStyle(die.value, colorScaleMode, highlightedValues),
|
|
33496
|
-
text: this.buildLabel(die.value, maxCharacters, dieLabelsHidden, dieLabelsSuffix)
|
|
33545
|
+
fillStyle: this.calculateFillStyle(die.value, wafermap.colorScaleMode, wafermap.highlightedValues),
|
|
33546
|
+
text: this.buildLabel(die.value, wafermap.maxCharacters, wafermap.dieLabelsHidden, wafermap.dieLabelsSuffix)
|
|
33497
33547
|
});
|
|
33498
33548
|
}
|
|
33499
33549
|
}
|
|
@@ -33566,11 +33616,8 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33566
33616
|
*/
|
|
33567
33617
|
class DataManager {
|
|
33568
33618
|
constructor(wafermap) {
|
|
33569
|
-
this.computations = new Computations(wafermap
|
|
33570
|
-
|
|
33571
|
-
height: wafermap.canvasSideLength
|
|
33572
|
-
});
|
|
33573
|
-
this.prerendering = new Prerendering(wafermap.dies, wafermap.colorScale, wafermap.highlightedValues, this.computations.horizontalScale, this.computations.verticalScale, wafermap.colorScaleMode, wafermap.dieLabelsHidden, wafermap.dieLabelsSuffix, wafermap.maxCharacters, this.computations.dieDimensions, this.computations.margin);
|
|
33619
|
+
this.computations = new Computations(wafermap);
|
|
33620
|
+
this.prerendering = new Prerendering(wafermap, this.horizontalScale, this.verticalScale, this.dieDimensions, this.margin);
|
|
33574
33621
|
}
|
|
33575
33622
|
get containerDimensions() {
|
|
33576
33623
|
return this.computations.containerDimensions;
|
|
@@ -33596,12 +33643,6 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33596
33643
|
get diesRenderInfo() {
|
|
33597
33644
|
return this.prerendering.diesRenderInfo;
|
|
33598
33645
|
}
|
|
33599
|
-
get mainCircleLocation() {
|
|
33600
|
-
return {
|
|
33601
|
-
x: this.computations.containerDimensions.width / 2,
|
|
33602
|
-
y: this.computations.containerDimensions.height / 2
|
|
33603
|
-
};
|
|
33604
|
-
}
|
|
33605
33646
|
}
|
|
33606
33647
|
|
|
33607
33648
|
/**
|
|
@@ -33646,7 +33687,7 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33646
33687
|
}
|
|
33647
33688
|
}
|
|
33648
33689
|
renderText() {
|
|
33649
|
-
|
|
33690
|
+
const dieSize = this.dimensions.width
|
|
33650
33691
|
* this.dimensions.height
|
|
33651
33692
|
* (this.wafermap.transform.k || 1);
|
|
33652
33693
|
const fontsize = this.labelFontSize;
|
|
@@ -33654,17 +33695,17 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33654
33695
|
this.context.fillStyle = '#ffffff';
|
|
33655
33696
|
this.context.textAlign = 'center';
|
|
33656
33697
|
this.context.lineCap = 'butt';
|
|
33657
|
-
const
|
|
33658
|
-
if (
|
|
33698
|
+
const approxTextHeight = this.context.measureText('M');
|
|
33699
|
+
if (dieSize >= 50) {
|
|
33659
33700
|
for (const die of this.dies) {
|
|
33660
33701
|
this.context.fillText(die.text, die.x + this.dimensions.width / 2, die.y
|
|
33661
33702
|
+ this.dimensions.height / 2
|
|
33662
|
-
+
|
|
33703
|
+
+ approxTextHeight.width / 2, this.dimensions.width - (this.dimensions.width / 100) * 20);
|
|
33663
33704
|
}
|
|
33664
33705
|
}
|
|
33665
33706
|
}
|
|
33666
33707
|
clearCanvas() {
|
|
33667
|
-
this.context.clearRect(0, 0, this.wafermap.
|
|
33708
|
+
this.context.clearRect(0, 0, this.wafermap.canvasWidth * this.wafermap.transform.k, this.wafermap.canvasHeight * this.wafermap.transform.k);
|
|
33668
33709
|
}
|
|
33669
33710
|
scaleCanvas() {
|
|
33670
33711
|
this.context.translate(this.wafermap.transform.x, this.wafermap.transform.y);
|
|
@@ -33700,15 +33741,14 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33700
33741
|
const zoomBehavior = zoom()
|
|
33701
33742
|
.scaleExtent([
|
|
33702
33743
|
1.1,
|
|
33703
|
-
this.getZoomMax(this.wafermap.
|
|
33704
|
-
* this.wafermap.canvasSideLength, this.wafermap.dataManager.containerDimensions.width
|
|
33744
|
+
this.getZoomMax(this.wafermap.canvasWidth * this.wafermap.canvasHeight, this.wafermap.dataManager.containerDimensions.width
|
|
33705
33745
|
* this.wafermap.dataManager.containerDimensions.height)
|
|
33706
33746
|
])
|
|
33707
33747
|
.translateExtent([
|
|
33708
33748
|
this.minExtentPoint,
|
|
33709
33749
|
[
|
|
33710
|
-
this.wafermap.
|
|
33711
|
-
this.wafermap.
|
|
33750
|
+
this.wafermap.canvasWidth + this.extentPadding,
|
|
33751
|
+
this.wafermap.canvasHeight + this.extentPadding
|
|
33712
33752
|
]
|
|
33713
33753
|
])
|
|
33714
33754
|
.filter((event) => {
|
|
@@ -33784,10 +33824,6 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33784
33824
|
* @internal
|
|
33785
33825
|
*/
|
|
33786
33826
|
this.renderQueued = false;
|
|
33787
|
-
/**
|
|
33788
|
-
* @internal
|
|
33789
|
-
*/
|
|
33790
|
-
this.canvasSideLength = 0;
|
|
33791
33827
|
/**
|
|
33792
33828
|
* @internal
|
|
33793
33829
|
*/
|
|
@@ -33815,7 +33851,7 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33815
33851
|
*/
|
|
33816
33852
|
render() {
|
|
33817
33853
|
this.renderQueued = false;
|
|
33818
|
-
this.
|
|
33854
|
+
this.initializeInternalModules();
|
|
33819
33855
|
this.renderer?.drawWafer();
|
|
33820
33856
|
}
|
|
33821
33857
|
queueRender() {
|
|
@@ -33827,7 +33863,7 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33827
33863
|
DOM.queueUpdate(() => this.render());
|
|
33828
33864
|
}
|
|
33829
33865
|
}
|
|
33830
|
-
|
|
33866
|
+
initializeInternalModules() {
|
|
33831
33867
|
this.eventCoordinator?.detachEvents();
|
|
33832
33868
|
this.dataManager = new DataManager(this);
|
|
33833
33869
|
this.renderer = new RenderingModule(this);
|
|
@@ -33840,7 +33876,12 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33840
33876
|
return;
|
|
33841
33877
|
}
|
|
33842
33878
|
const { height, width } = entry.contentRect;
|
|
33843
|
-
|
|
33879
|
+
// Updating the canvas size clears its contents so update it explicitly instead of
|
|
33880
|
+
// via template bindings so we can confirm that it happens before render
|
|
33881
|
+
this.canvas.width = width;
|
|
33882
|
+
this.canvas.height = height;
|
|
33883
|
+
this.canvasWidth = width;
|
|
33884
|
+
this.canvasHeight = height;
|
|
33844
33885
|
});
|
|
33845
33886
|
resizeObserver.observe(this);
|
|
33846
33887
|
return resizeObserver;
|
|
@@ -33875,13 +33916,11 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33875
33916
|
transformChanged() {
|
|
33876
33917
|
this.queueRender();
|
|
33877
33918
|
}
|
|
33878
|
-
|
|
33879
|
-
|
|
33880
|
-
|
|
33881
|
-
|
|
33882
|
-
|
|
33883
|
-
this.queueRender();
|
|
33884
|
-
}
|
|
33919
|
+
canvasWidthChanged() {
|
|
33920
|
+
this.queueRender();
|
|
33921
|
+
}
|
|
33922
|
+
canvasHeightChanged() {
|
|
33923
|
+
this.queueRender();
|
|
33885
33924
|
}
|
|
33886
33925
|
}
|
|
33887
33926
|
__decorate$1([
|
|
@@ -33914,7 +33953,10 @@ Instead styling against the role which is more general and likely a better appro
|
|
|
33914
33953
|
], WaferMap.prototype, "colorScaleMode", void 0);
|
|
33915
33954
|
__decorate$1([
|
|
33916
33955
|
observable
|
|
33917
|
-
], WaferMap.prototype, "
|
|
33956
|
+
], WaferMap.prototype, "canvasWidth", void 0);
|
|
33957
|
+
__decorate$1([
|
|
33958
|
+
observable
|
|
33959
|
+
], WaferMap.prototype, "canvasHeight", void 0);
|
|
33918
33960
|
__decorate$1([
|
|
33919
33961
|
observable
|
|
33920
33962
|
], WaferMap.prototype, "transform", void 0);
|