@ni/nimble-components 18.5.3 → 18.5.4
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 +183 -31
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +575 -534
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/esm/table/components/row/styles.js +0 -1
- package/dist/esm/table/components/row/styles.js.map +1 -1
- package/dist/esm/wafer-map/index.d.ts +25 -4
- package/dist/esm/wafer-map/index.js +45 -4
- package/dist/esm/wafer-map/index.js.map +1 -1
- package/dist/esm/wafer-map/modules/data-manager.d.ts +3 -1
- package/dist/esm/wafer-map/modules/data-manager.js +4 -0
- package/dist/esm/wafer-map/modules/data-manager.js.map +1 -1
- package/dist/esm/wafer-map/modules/event-coordinator.d.ts +1 -1
- package/dist/esm/wafer-map/modules/event-coordinator.js +6 -12
- package/dist/esm/wafer-map/modules/event-coordinator.js.map +1 -1
- package/dist/esm/wafer-map/modules/hover-handler.d.ts +12 -0
- package/dist/esm/wafer-map/modules/hover-handler.js +56 -0
- package/dist/esm/wafer-map/modules/hover-handler.js.map +1 -0
- package/dist/esm/wafer-map/modules/rendering.d.ts +2 -1
- package/dist/esm/wafer-map/modules/rendering.js +38 -15
- package/dist/esm/wafer-map/modules/rendering.js.map +1 -1
- package/dist/esm/wafer-map/styles.js +27 -0
- package/dist/esm/wafer-map/styles.js.map +1 -1
- package/dist/esm/wafer-map/template.js +8 -0
- package/dist/esm/wafer-map/template.js.map +1 -1
- package/dist/esm/wafer-map/types.d.ts +9 -0
- package/dist/esm/wafer-map/types.js +4 -0
- package/dist/esm/wafer-map/types.js.map +1 -1
- package/package.json +10 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/table/components/row/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EACH,WAAW,EACX,aAAa,EACb,mBAAmB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;kBAGH,aAAa;+BACA,WAAW,WAAW,mBAAmB
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/table/components/row/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EACH,WAAW,EACX,aAAa,EACb,mBAAmB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;kBAGH,aAAa;+BACA,WAAW,WAAW,mBAAmB;;;;;;;;;;;;;;;;CAgBvE,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { FoundationElement } from '@microsoft/fast-foundation';
|
|
|
2
2
|
import { ZoomTransform } from 'd3-zoom';
|
|
3
3
|
import { DataManager } from './modules/data-manager';
|
|
4
4
|
import { RenderingModule } from './modules/rendering';
|
|
5
|
-
import { WaferMapColorScale, WaferMapColorScaleMode, WaferMapDie, WaferMapOrientation, WaferMapQuadrant } from './types';
|
|
5
|
+
import { HoverDieOpacity, WaferMapColorScale, WaferMapColorScaleMode, WaferMapDie, WaferMapOrientation, WaferMapQuadrant } from './types';
|
|
6
6
|
declare global {
|
|
7
7
|
interface HTMLElementTagNameMap {
|
|
8
8
|
'nimble-wafer-map': WaferMap;
|
|
@@ -25,11 +25,11 @@ export declare class WaferMap extends FoundationElement {
|
|
|
25
25
|
/**
|
|
26
26
|
* @internal
|
|
27
27
|
*/
|
|
28
|
-
|
|
28
|
+
canvasContext: CanvasRenderingContext2D;
|
|
29
29
|
/**
|
|
30
30
|
* @internal
|
|
31
31
|
*/
|
|
32
|
-
readonly
|
|
32
|
+
readonly zoomContainer: HTMLElement;
|
|
33
33
|
/**
|
|
34
34
|
* @internal
|
|
35
35
|
*/
|
|
@@ -54,6 +54,26 @@ export declare class WaferMap extends FoundationElement {
|
|
|
54
54
|
* @internal
|
|
55
55
|
*/
|
|
56
56
|
transform: ZoomTransform;
|
|
57
|
+
/**
|
|
58
|
+
* @internal
|
|
59
|
+
*/
|
|
60
|
+
hoverTransform: string;
|
|
61
|
+
/**
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
hoverOpacity: HoverDieOpacity;
|
|
65
|
+
/**
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
68
|
+
hoverWidth: number;
|
|
69
|
+
/**
|
|
70
|
+
* @internal
|
|
71
|
+
*/
|
|
72
|
+
hoverHeight: number;
|
|
73
|
+
/**
|
|
74
|
+
* @internal
|
|
75
|
+
*/
|
|
76
|
+
hoverDie: WaferMapDie | undefined;
|
|
57
77
|
highlightedValues: string[];
|
|
58
78
|
dies: WaferMapDie[];
|
|
59
79
|
colorScale: WaferMapColorScale;
|
|
@@ -66,9 +86,9 @@ export declare class WaferMap extends FoundationElement {
|
|
|
66
86
|
*/
|
|
67
87
|
render(): void;
|
|
68
88
|
private queueRender;
|
|
89
|
+
private queueRenderHover;
|
|
69
90
|
private initializeInternalModules;
|
|
70
91
|
private createResizeObserver;
|
|
71
|
-
private readonly emitDieSelected;
|
|
72
92
|
private quadrantChanged;
|
|
73
93
|
private orientationChanged;
|
|
74
94
|
private maxCharactersChanged;
|
|
@@ -81,4 +101,5 @@ export declare class WaferMap extends FoundationElement {
|
|
|
81
101
|
private transformChanged;
|
|
82
102
|
private canvasWidthChanged;
|
|
83
103
|
private canvasHeightChanged;
|
|
104
|
+
private hoverDieChanged;
|
|
84
105
|
}
|
|
@@ -7,7 +7,7 @@ import { styles } from './styles';
|
|
|
7
7
|
import { DataManager } from './modules/data-manager';
|
|
8
8
|
import { RenderingModule } from './modules/rendering';
|
|
9
9
|
import { EventCoordinator } from './modules/event-coordinator';
|
|
10
|
-
import { WaferMapColorScaleMode, WaferMapOrientation, WaferMapQuadrant } from './types';
|
|
10
|
+
import { HoverDieOpacity, WaferMapColorScaleMode, WaferMapOrientation, WaferMapQuadrant } from './types';
|
|
11
11
|
/**
|
|
12
12
|
* A nimble-styled WaferMap
|
|
13
13
|
*/
|
|
@@ -28,18 +28,34 @@ export class WaferMap extends FoundationElement {
|
|
|
28
28
|
* @internal
|
|
29
29
|
*/
|
|
30
30
|
this.transform = zoomIdentity;
|
|
31
|
+
/**
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
this.hoverTransform = '';
|
|
35
|
+
/**
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
38
|
+
this.hoverOpacity = HoverDieOpacity.hide;
|
|
39
|
+
/**
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
this.hoverWidth = 0;
|
|
43
|
+
/**
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
this.hoverHeight = 0;
|
|
31
47
|
this.highlightedValues = [];
|
|
32
48
|
this.dies = [];
|
|
33
49
|
this.colorScale = {
|
|
34
50
|
colors: [],
|
|
35
51
|
values: []
|
|
36
52
|
};
|
|
37
|
-
this.emitDieSelected = (die) => {
|
|
38
|
-
this.$emit('die-selected', { detail: { die } });
|
|
39
|
-
};
|
|
40
53
|
}
|
|
41
54
|
connectedCallback() {
|
|
42
55
|
super.connectedCallback();
|
|
56
|
+
this.canvasContext = this.canvas.getContext('2d', {
|
|
57
|
+
willReadFrequently: true
|
|
58
|
+
});
|
|
43
59
|
this.resizeObserver = this.createResizeObserver();
|
|
44
60
|
}
|
|
45
61
|
disconnectedCallback() {
|
|
@@ -63,6 +79,12 @@ export class WaferMap extends FoundationElement {
|
|
|
63
79
|
DOM.queueUpdate(() => this.render());
|
|
64
80
|
}
|
|
65
81
|
}
|
|
82
|
+
queueRenderHover() {
|
|
83
|
+
if (!this.$fastController.isConnected) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
DOM.queueUpdate(() => this.renderer?.renderHover());
|
|
87
|
+
}
|
|
66
88
|
initializeInternalModules() {
|
|
67
89
|
this.eventCoordinator?.detachEvents();
|
|
68
90
|
this.dataManager = new DataManager(this);
|
|
@@ -122,6 +144,10 @@ export class WaferMap extends FoundationElement {
|
|
|
122
144
|
canvasHeightChanged() {
|
|
123
145
|
this.queueRender();
|
|
124
146
|
}
|
|
147
|
+
hoverDieChanged() {
|
|
148
|
+
this.$emit('die-hover', { currentDie: this.hoverDie });
|
|
149
|
+
this.queueRenderHover();
|
|
150
|
+
}
|
|
125
151
|
}
|
|
126
152
|
__decorate([
|
|
127
153
|
attr
|
|
@@ -160,6 +186,21 @@ __decorate([
|
|
|
160
186
|
__decorate([
|
|
161
187
|
observable
|
|
162
188
|
], WaferMap.prototype, "transform", void 0);
|
|
189
|
+
__decorate([
|
|
190
|
+
observable
|
|
191
|
+
], WaferMap.prototype, "hoverTransform", void 0);
|
|
192
|
+
__decorate([
|
|
193
|
+
observable
|
|
194
|
+
], WaferMap.prototype, "hoverOpacity", void 0);
|
|
195
|
+
__decorate([
|
|
196
|
+
observable
|
|
197
|
+
], WaferMap.prototype, "hoverWidth", void 0);
|
|
198
|
+
__decorate([
|
|
199
|
+
observable
|
|
200
|
+
], WaferMap.prototype, "hoverHeight", void 0);
|
|
201
|
+
__decorate([
|
|
202
|
+
observable
|
|
203
|
+
], WaferMap.prototype, "hoverDie", void 0);
|
|
163
204
|
__decorate([
|
|
164
205
|
observable
|
|
165
206
|
], WaferMap.prototype, "highlightedValues", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wafer-map/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,IAAI,EACJ,GAAG,EACH,uBAAuB,EACvB,UAAU,EACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAiB,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wafer-map/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ScaleLinear } from 'd3-scale';
|
|
2
2
|
import type { WaferMap } from '..';
|
|
3
|
-
import type { Dimensions, Margin, DieRenderInfo } from '../types';
|
|
3
|
+
import type { Dimensions, Margin, DieRenderInfo, WaferMapDie, PointCoordinates } from '../types';
|
|
4
4
|
/**
|
|
5
5
|
* Data Manager uses Computations and Prerendering modules in order and exposes the results
|
|
6
6
|
*/
|
|
@@ -15,5 +15,7 @@ export declare class DataManager {
|
|
|
15
15
|
get diesRenderInfo(): DieRenderInfo[];
|
|
16
16
|
private readonly computations;
|
|
17
17
|
private readonly prerendering;
|
|
18
|
+
private readonly dataMap;
|
|
18
19
|
constructor(wafermap: WaferMap);
|
|
20
|
+
getWaferMapDie(point: PointCoordinates): WaferMapDie | undefined;
|
|
19
21
|
}
|
|
@@ -7,6 +7,7 @@ export class DataManager {
|
|
|
7
7
|
constructor(wafermap) {
|
|
8
8
|
this.computations = new Computations(wafermap);
|
|
9
9
|
this.prerendering = new Prerendering(wafermap, this.horizontalScale, this.verticalScale, this.dieDimensions, this.margin);
|
|
10
|
+
this.dataMap = new Map(wafermap.dies.map(die => [`${die.x}_${die.y}`, die]));
|
|
10
11
|
}
|
|
11
12
|
get containerDimensions() {
|
|
12
13
|
return this.computations.containerDimensions;
|
|
@@ -32,5 +33,8 @@ export class DataManager {
|
|
|
32
33
|
get diesRenderInfo() {
|
|
33
34
|
return this.prerendering.diesRenderInfo;
|
|
34
35
|
}
|
|
36
|
+
getWaferMapDie(point) {
|
|
37
|
+
return this.dataMap.get(`${point.x}_${point.y}`);
|
|
38
|
+
}
|
|
35
39
|
}
|
|
36
40
|
//# sourceMappingURL=data-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-manager.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/data-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"data-manager.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/data-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAU9C;;GAEG;AACH,MAAM,OAAO,WAAW;IAqCpB,YAAmB,QAAkB;QACjC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE/C,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAChC,QAAQ,EACR,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,MAAM,CACd,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAClB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CACvD,CAAC;IACN,CAAC;IAlDD,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC;IACjD,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;IAC3C,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;IAC7C,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;IAC3C,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;IAC5C,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;IAC5C,CAAC;IAsBM,cAAc,CAAC,KAAuB;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;CACJ"}
|
|
@@ -9,8 +9,8 @@ export interface EventCoordinatorCallbacks {
|
|
|
9
9
|
export declare class EventCoordinator {
|
|
10
10
|
private readonly wafermap;
|
|
11
11
|
private readonly zoomHandler;
|
|
12
|
+
private readonly hoverHandler;
|
|
12
13
|
constructor(wafermap: WaferMap);
|
|
13
|
-
get selectedDie(): WaferMapDie | undefined;
|
|
14
14
|
detachEvents(): void;
|
|
15
15
|
private readonly onWheelMove;
|
|
16
16
|
private readonly onMouseMove;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ZoomHandler } from './zoom-handler';
|
|
2
|
+
import { HoverHandler } from './hover-handler';
|
|
2
3
|
/**
|
|
3
4
|
* EventCoordinator deals with user interactions and events
|
|
4
5
|
*/
|
|
@@ -8,21 +9,16 @@ export class EventCoordinator {
|
|
|
8
9
|
this.onWheelMove = (event) => {
|
|
9
10
|
event.preventDefault();
|
|
10
11
|
};
|
|
11
|
-
this.onMouseMove = () => {
|
|
12
|
-
|
|
12
|
+
this.onMouseMove = (event) => {
|
|
13
|
+
this.hoverHandler.mousemove(event);
|
|
13
14
|
};
|
|
14
|
-
this.onMouseOut = () => {
|
|
15
|
-
|
|
15
|
+
this.onMouseOut = (event) => {
|
|
16
|
+
this.hoverHandler.mouseout(event);
|
|
16
17
|
};
|
|
17
18
|
this.zoomHandler = new ZoomHandler(wafermap);
|
|
18
|
-
|
|
19
|
-
// TODO HoverHandler - create a hoverDie element
|
|
19
|
+
this.hoverHandler = new HoverHandler(wafermap);
|
|
20
20
|
this.attachEvents();
|
|
21
21
|
}
|
|
22
|
-
get selectedDie() {
|
|
23
|
-
// TODO HoverHandler - return the last selected die when called
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
26
22
|
detachEvents() {
|
|
27
23
|
this.wafermap.removeEventListener('mousemove', this.onMouseMove);
|
|
28
24
|
this.wafermap.removeEventListener('mouseout', this.onMouseOut);
|
|
@@ -34,8 +30,6 @@ export class EventCoordinator {
|
|
|
34
30
|
this.wafermap.canvas.addEventListener('wheel', this.onWheelMove, {
|
|
35
31
|
passive: false
|
|
36
32
|
});
|
|
37
|
-
// Wafermap callbacks
|
|
38
|
-
// TODO HoverHandler - configure the callback to be fired from HoverHandler when a new die is selected
|
|
39
33
|
}
|
|
40
34
|
}
|
|
41
35
|
//# sourceMappingURL=event-coordinator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-coordinator.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/event-coordinator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"event-coordinator.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/event-coordinator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM/C;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAIzB,YAAoC,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAarC,gBAAW,GAAG,CAAC,KAAY,EAAQ,EAAE;YAClD,KAAK,CAAC,cAAc,EAAE,CAAC;QAC3B,CAAC,CAAC;QAEe,gBAAW,GAAG,CAAC,KAAiB,EAAQ,EAAE;YACvD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC;QAEe,eAAU,GAAG,CAAC,KAAiB,EAAQ,EAAE;YACtD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC;QAtBE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE/C,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAEM,YAAY;QACf,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACxE,CAAC;IAcO,YAAY;QAChB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;YAC7D,OAAO,EAAE,KAAK;SACjB,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { WaferMap } from '..';
|
|
2
|
+
/**
|
|
3
|
+
* HoverHandler deals with user interactions and events like hovering
|
|
4
|
+
*/
|
|
5
|
+
export declare class HoverHandler {
|
|
6
|
+
private readonly wafermap;
|
|
7
|
+
constructor(wafermap: WaferMap);
|
|
8
|
+
mousemove(event: MouseEvent): void;
|
|
9
|
+
mouseout(_event: MouseEvent): void;
|
|
10
|
+
private calculateDieCoordinates;
|
|
11
|
+
private hoversOverDie;
|
|
12
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { WaferMapQuadrant } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* HoverHandler deals with user interactions and events like hovering
|
|
4
|
+
*/
|
|
5
|
+
export class HoverHandler {
|
|
6
|
+
constructor(wafermap) {
|
|
7
|
+
this.wafermap = wafermap;
|
|
8
|
+
}
|
|
9
|
+
mousemove(event) {
|
|
10
|
+
const mousePosition = {
|
|
11
|
+
x: event.offsetX,
|
|
12
|
+
y: event.offsetY
|
|
13
|
+
};
|
|
14
|
+
if (!this.hoversOverDie(mousePosition)) {
|
|
15
|
+
this.wafermap.hoverDie = undefined;
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
// get original mouse position in case we are in zoom.
|
|
19
|
+
const invertedPoint = this.wafermap.transform.invert([
|
|
20
|
+
mousePosition.x,
|
|
21
|
+
mousePosition.y
|
|
22
|
+
]);
|
|
23
|
+
const dieCoordinates = this.calculateDieCoordinates({
|
|
24
|
+
x: invertedPoint[0],
|
|
25
|
+
y: invertedPoint[1]
|
|
26
|
+
});
|
|
27
|
+
this.wafermap.hoverDie = this.wafermap.dataManager.getWaferMapDie(dieCoordinates);
|
|
28
|
+
}
|
|
29
|
+
mouseout(_event) {
|
|
30
|
+
this.wafermap.hoverDie = undefined;
|
|
31
|
+
}
|
|
32
|
+
calculateDieCoordinates(mousePosition) {
|
|
33
|
+
const axisLocation = this.wafermap.quadrant;
|
|
34
|
+
const xRoundFunction = axisLocation === WaferMapQuadrant.bottomLeft
|
|
35
|
+
|| axisLocation === WaferMapQuadrant.topLeft
|
|
36
|
+
? Math.floor
|
|
37
|
+
: Math.ceil;
|
|
38
|
+
const yRoundFunction = axisLocation === WaferMapQuadrant.topLeft
|
|
39
|
+
|| axisLocation === WaferMapQuadrant.topRight
|
|
40
|
+
? Math.floor
|
|
41
|
+
: Math.ceil;
|
|
42
|
+
// go to x and y scale to get the x,y values of the die.
|
|
43
|
+
const x = xRoundFunction(this.wafermap.dataManager.horizontalScale.invert(mousePosition.x - this.wafermap.dataManager.margin.left));
|
|
44
|
+
const y = yRoundFunction(this.wafermap.dataManager.verticalScale.invert(mousePosition.y - this.wafermap.dataManager.margin.top));
|
|
45
|
+
return { x, y };
|
|
46
|
+
}
|
|
47
|
+
hoversOverDie(mousePosition) {
|
|
48
|
+
const rgba = this.wafermap.canvasContext.getImageData(mousePosition.x, mousePosition.y, 1, 1).data;
|
|
49
|
+
let rgbaSum = 0;
|
|
50
|
+
for (const color of rgba) {
|
|
51
|
+
rgbaSum += color;
|
|
52
|
+
}
|
|
53
|
+
return rgbaSum > 0;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=hover-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-handler.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/hover-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE9D;;GAEG;AACH,MAAM,OAAO,YAAY;IACrB,YAAoC,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAAG,CAAC;IAEnD,SAAS,CAAC,KAAiB;QAC9B,MAAM,aAAa,GAAqB;YACpC,CAAC,EAAE,KAAK,CAAC,OAAO;YAChB,CAAC,EAAE,KAAK,CAAC,OAAO;SACnB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;YACnC,OAAO;SACV;QAED,sDAAsD;QACtD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;YACjD,aAAa,CAAC,CAAC;YACf,aAAa,CAAC,CAAC;SAClB,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC;YAChD,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;YACnB,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAY,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACvF,CAAC;IAEM,QAAQ,CAAC,MAAkB;QAC9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;IACvC,CAAC;IAEO,uBAAuB,CAC3B,aAA+B;QAE/B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC5C,MAAM,cAAc,GAAG,YAAY,KAAK,gBAAgB,CAAC,UAAU;eAC5D,YAAY,KAAK,gBAAgB,CAAC,OAAO;YAC5C,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAChB,MAAM,cAAc,GAAG,YAAY,KAAK,gBAAgB,CAAC,OAAO;eACzD,YAAY,KAAK,gBAAgB,CAAC,QAAQ;YAC7C,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAChB,wDAAwD;QACxD,MAAM,CAAC,GAAG,cAAc,CACpB,IAAI,CAAC,QAAQ,CAAC,WAAY,CAAC,eAAe,CAAC,MAAM,CAC7C,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAY,CAAC,MAAM,CAAC,IAAI,CAC3D,CACJ,CAAC;QACF,MAAM,CAAC,GAAG,cAAc,CACpB,IAAI,CAAC,QAAQ,CAAC,WAAY,CAAC,aAAa,CAAC,MAAM,CAC3C,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAY,CAAC,MAAM,CAAC,GAAG,CAC1D,CACJ,CAAC;QACF,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpB,CAAC;IAEO,aAAa,CAAC,aAA+B;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CACjD,aAAa,CAAC,CAAC,EACf,aAAa,CAAC,CAAC,EACf,CAAC,EACD,CAAC,CACJ,CAAC,IAAI,CAAC;QAEP,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE;YACtB,OAAO,IAAI,KAAK,CAAC;SACpB;QACD,OAAO,OAAO,GAAG,CAAC,CAAC;IACvB,CAAC;CACJ"}
|
|
@@ -4,12 +4,13 @@ import type { WaferMap } from '..';
|
|
|
4
4
|
*/
|
|
5
5
|
export declare class RenderingModule {
|
|
6
6
|
private readonly wafermap;
|
|
7
|
-
private readonly context;
|
|
8
7
|
private readonly dies;
|
|
9
8
|
private readonly dimensions;
|
|
10
9
|
private readonly labelFontSize;
|
|
11
10
|
constructor(wafermap: WaferMap);
|
|
12
11
|
drawWafer(): void;
|
|
12
|
+
renderHover(): void;
|
|
13
|
+
private calculateHoverTransform;
|
|
13
14
|
private renderDies;
|
|
14
15
|
private renderText;
|
|
15
16
|
private clearCanvas;
|
|
@@ -1,21 +1,44 @@
|
|
|
1
|
+
import { HoverDieOpacity } from '../types';
|
|
1
2
|
/**
|
|
2
3
|
* Responsible for drawing the dies inside the wafer map, adding dieText and scaling the canvas
|
|
3
4
|
*/
|
|
4
5
|
export class RenderingModule {
|
|
5
6
|
constructor(wafermap) {
|
|
6
7
|
this.wafermap = wafermap;
|
|
7
|
-
this.context = wafermap.canvas.getContext('2d');
|
|
8
8
|
this.dies = wafermap.dataManager.diesRenderInfo;
|
|
9
9
|
this.dimensions = wafermap.dataManager.dieDimensions;
|
|
10
10
|
this.labelFontSize = wafermap.dataManager.labelsFontSize;
|
|
11
11
|
}
|
|
12
12
|
drawWafer() {
|
|
13
|
-
this.
|
|
13
|
+
this.wafermap.canvasContext.save();
|
|
14
14
|
this.clearCanvas();
|
|
15
15
|
this.scaleCanvas();
|
|
16
16
|
this.renderDies();
|
|
17
17
|
this.renderText();
|
|
18
|
-
this.
|
|
18
|
+
this.wafermap.canvasContext.restore();
|
|
19
|
+
this.renderHover();
|
|
20
|
+
}
|
|
21
|
+
renderHover() {
|
|
22
|
+
this.wafermap.hoverWidth = this.wafermap.dataManager.dieDimensions.width
|
|
23
|
+
* this.wafermap.transform.k;
|
|
24
|
+
this.wafermap.hoverHeight = this.wafermap.dataManager.dieDimensions.height
|
|
25
|
+
* this.wafermap.transform.k;
|
|
26
|
+
this.wafermap.hoverOpacity = this.wafermap.hoverDie === undefined
|
|
27
|
+
? HoverDieOpacity.hide
|
|
28
|
+
: HoverDieOpacity.show;
|
|
29
|
+
this.wafermap.hoverTransform = this.calculateHoverTransform();
|
|
30
|
+
}
|
|
31
|
+
calculateHoverTransform() {
|
|
32
|
+
if (this.wafermap.hoverDie !== undefined) {
|
|
33
|
+
const scaledX = this.wafermap.dataManager.horizontalScale(this.wafermap.hoverDie.x);
|
|
34
|
+
const scaledY = this.wafermap.dataManager.verticalScale(this.wafermap.hoverDie.y);
|
|
35
|
+
const transformedPoint = this.wafermap.transform.apply([
|
|
36
|
+
scaledX + this.wafermap.dataManager.margin.left,
|
|
37
|
+
scaledY + this.wafermap.dataManager.margin.top
|
|
38
|
+
]);
|
|
39
|
+
return `translate(${transformedPoint[0]}, ${transformedPoint[1]})`;
|
|
40
|
+
}
|
|
41
|
+
return '';
|
|
19
42
|
}
|
|
20
43
|
renderDies() {
|
|
21
44
|
this.dies.sort((a, b) => {
|
|
@@ -30,12 +53,12 @@ export class RenderingModule {
|
|
|
30
53
|
let prev;
|
|
31
54
|
for (const die of this.dies) {
|
|
32
55
|
if (!prev) {
|
|
33
|
-
this.
|
|
56
|
+
this.wafermap.canvasContext.fillStyle = die.fillStyle;
|
|
34
57
|
}
|
|
35
58
|
if (prev && die.fillStyle !== prev.fillStyle && die.fillStyle) {
|
|
36
|
-
this.
|
|
59
|
+
this.wafermap.canvasContext.fillStyle = die.fillStyle;
|
|
37
60
|
}
|
|
38
|
-
this.
|
|
61
|
+
this.wafermap.canvasContext.fillRect(die.x, die.y, this.dimensions.width, this.dimensions.height);
|
|
39
62
|
prev = die;
|
|
40
63
|
}
|
|
41
64
|
}
|
|
@@ -44,25 +67,25 @@ export class RenderingModule {
|
|
|
44
67
|
* this.dimensions.height
|
|
45
68
|
* (this.wafermap.transform.k || 1);
|
|
46
69
|
const fontsize = this.labelFontSize;
|
|
47
|
-
this.
|
|
48
|
-
this.
|
|
49
|
-
this.
|
|
50
|
-
this.
|
|
51
|
-
const approxTextHeight = this.
|
|
70
|
+
this.wafermap.canvasContext.font = `${fontsize.toString()}px sans-serif`;
|
|
71
|
+
this.wafermap.canvasContext.fillStyle = '#ffffff';
|
|
72
|
+
this.wafermap.canvasContext.textAlign = 'center';
|
|
73
|
+
this.wafermap.canvasContext.lineCap = 'butt';
|
|
74
|
+
const approxTextHeight = this.wafermap.canvasContext.measureText('M');
|
|
52
75
|
if (dieSize >= 50) {
|
|
53
76
|
for (const die of this.dies) {
|
|
54
|
-
this.
|
|
77
|
+
this.wafermap.canvasContext.fillText(die.text, die.x + this.dimensions.width / 2, die.y
|
|
55
78
|
+ this.dimensions.height / 2
|
|
56
79
|
+ approxTextHeight.width / 2, this.dimensions.width - (this.dimensions.width / 100) * 20);
|
|
57
80
|
}
|
|
58
81
|
}
|
|
59
82
|
}
|
|
60
83
|
clearCanvas() {
|
|
61
|
-
this.
|
|
84
|
+
this.wafermap.canvasContext.clearRect(0, 0, this.wafermap.canvasWidth * this.wafermap.transform.k, this.wafermap.canvasHeight * this.wafermap.transform.k);
|
|
62
85
|
}
|
|
63
86
|
scaleCanvas() {
|
|
64
|
-
this.
|
|
65
|
-
this.
|
|
87
|
+
this.wafermap.canvasContext.translate(this.wafermap.transform.x, this.wafermap.transform.y);
|
|
88
|
+
this.wafermap.canvasContext.scale(this.wafermap.transform.k, this.wafermap.transform.k);
|
|
66
89
|
}
|
|
67
90
|
}
|
|
68
91
|
//# sourceMappingURL=rendering.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/rendering.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../../../../src/wafer-map/modules/rendering.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { css } from '@microsoft/fast-element';
|
|
2
|
+
import { DigitalGreenLight } from '@ni/nimble-tokens/dist/styledictionary/js/tokens';
|
|
2
3
|
import { borderColor, borderWidth } from '../theme-provider/design-tokens';
|
|
3
4
|
export const styles = css `
|
|
4
5
|
:host {
|
|
@@ -57,5 +58,31 @@ export const styles = css `
|
|
|
57
58
|
display: inline-block;
|
|
58
59
|
position: absolute;
|
|
59
60
|
}
|
|
61
|
+
|
|
62
|
+
.hover-layer {
|
|
63
|
+
position: absolute;
|
|
64
|
+
pointer-events: none;
|
|
65
|
+
width: 100%;
|
|
66
|
+
height: 100%;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.hover-rect {
|
|
70
|
+
fill: transparent;
|
|
71
|
+
stroke: white;
|
|
72
|
+
outline-style: solid;
|
|
73
|
+
outline-color: ${DigitalGreenLight};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.hover-rect.show {
|
|
77
|
+
opacity: 1;
|
|
78
|
+
stroke-width: 2px;
|
|
79
|
+
outline-width: 2px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.hover-rect.hide {
|
|
83
|
+
opacity: 0;
|
|
84
|
+
stroke-width: 0px;
|
|
85
|
+
outline-width: 0px;
|
|
86
|
+
}
|
|
60
87
|
`;
|
|
61
88
|
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/wafer-map/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE3E,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAiDD,WAAW;kBACjB,WAAW
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/wafer-map/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE3E,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAiDD,WAAW;kBACjB,WAAW;;;;;;;;;;;;;;;;;;;yBAmBJ,iBAAiB;;;;;;;;;;;;;;CAczC,CAAC"}
|
|
@@ -20,6 +20,14 @@ export const template = html `
|
|
|
20
20
|
</g>
|
|
21
21
|
</svg>
|
|
22
22
|
<canvas class="wafer-map-canvas" ${ref('canvas')}></canvas>
|
|
23
|
+
<svg class="hover-layer">
|
|
24
|
+
<rect
|
|
25
|
+
class="hover-rect ${x => x.hoverOpacity}"
|
|
26
|
+
transform="${x => x.hoverTransform}"
|
|
27
|
+
width="${x => x.hoverWidth}"
|
|
28
|
+
height="${x => x.hoverHeight}"
|
|
29
|
+
/>
|
|
30
|
+
</svg>
|
|
23
31
|
</div>
|
|
24
32
|
`;
|
|
25
33
|
//# sourceMappingURL=template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/wafer-map/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAGpD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAU;;;iBAGrB,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE;kCAC5C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;;;;;;;;;;;;;;;;2CAgBT,GAAG,CAAC,QAAQ,CAAC
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/wafer-map/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAGpD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAU;;;iBAGrB,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE;kCAC5C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;;;;;;;;;;;;;;;;2CAgBT,GAAG,CAAC,QAAQ,CAAC;;;oCAGpB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;6BAC1B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc;yBACzB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;0BAChB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;;;;CAI3C,CAAC"}
|
|
@@ -13,6 +13,11 @@ export declare const WaferMapOrientation: {
|
|
|
13
13
|
readonly right: "right";
|
|
14
14
|
};
|
|
15
15
|
export declare type WaferMapOrientation = (typeof WaferMapOrientation)[keyof typeof WaferMapOrientation];
|
|
16
|
+
export declare const HoverDieOpacity: {
|
|
17
|
+
readonly show: "show";
|
|
18
|
+
readonly hide: "hide";
|
|
19
|
+
};
|
|
20
|
+
export declare type HoverDieOpacity = (typeof HoverDieOpacity)[keyof typeof HoverDieOpacity];
|
|
16
21
|
export declare const WaferMapColorScaleMode: {
|
|
17
22
|
readonly linear: "linear";
|
|
18
23
|
readonly ordinal: "ordinal";
|
|
@@ -50,3 +55,7 @@ export interface DieRenderInfo {
|
|
|
50
55
|
readonly fillStyle: string;
|
|
51
56
|
readonly text: string;
|
|
52
57
|
}
|
|
58
|
+
export interface PointCoordinates {
|
|
59
|
+
readonly x: number;
|
|
60
|
+
readonly y: number;
|
|
61
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/wafer-map/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,UAAU,EAAE,aAAa;IACzB,WAAW,EAAE,cAAc;IAC3B,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,WAAW;CACf,CAAC;AAKX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACR,CAAC;AAKX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/wafer-map/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,UAAU,EAAE,aAAa;IACzB,WAAW,EAAE,cAAc;IAC3B,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,WAAW;CACf,CAAC;AAKX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACR,CAAC;AAKX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACN,CAAC;AAKX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACZ,CAAC"}
|