@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.
Files changed (29) hide show
  1. package/dist/all-components-bundle.js +183 -31
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +575 -534
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/table/components/row/styles.js +0 -1
  6. package/dist/esm/table/components/row/styles.js.map +1 -1
  7. package/dist/esm/wafer-map/index.d.ts +25 -4
  8. package/dist/esm/wafer-map/index.js +45 -4
  9. package/dist/esm/wafer-map/index.js.map +1 -1
  10. package/dist/esm/wafer-map/modules/data-manager.d.ts +3 -1
  11. package/dist/esm/wafer-map/modules/data-manager.js +4 -0
  12. package/dist/esm/wafer-map/modules/data-manager.js.map +1 -1
  13. package/dist/esm/wafer-map/modules/event-coordinator.d.ts +1 -1
  14. package/dist/esm/wafer-map/modules/event-coordinator.js +6 -12
  15. package/dist/esm/wafer-map/modules/event-coordinator.js.map +1 -1
  16. package/dist/esm/wafer-map/modules/hover-handler.d.ts +12 -0
  17. package/dist/esm/wafer-map/modules/hover-handler.js +56 -0
  18. package/dist/esm/wafer-map/modules/hover-handler.js.map +1 -0
  19. package/dist/esm/wafer-map/modules/rendering.d.ts +2 -1
  20. package/dist/esm/wafer-map/modules/rendering.js +38 -15
  21. package/dist/esm/wafer-map/modules/rendering.js.map +1 -1
  22. package/dist/esm/wafer-map/styles.js +27 -0
  23. package/dist/esm/wafer-map/styles.js.map +1 -1
  24. package/dist/esm/wafer-map/template.js +8 -0
  25. package/dist/esm/wafer-map/template.js.map +1 -1
  26. package/dist/esm/wafer-map/types.d.ts +9 -0
  27. package/dist/esm/wafer-map/types.js +4 -0
  28. package/dist/esm/wafer-map/types.js.map +1 -1
  29. package/package.json +10 -6
@@ -19,7 +19,6 @@ export const styles = css `
19
19
  --ni-private-table-cell-action-menu-display: block;
20
20
  }
21
21
 
22
- :host(.hover) nimble-table-cell,
23
22
  :host(:hover) nimble-table-cell {
24
23
  --ni-private-table-cell-action-menu-display: block;
25
24
  }
@@ -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;;;;;;;;;;;;;;;;;CAiBvE,CAAC"}
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
- readonly zoomContainer: HTMLElement;
28
+ canvasContext: CanvasRenderingContext2D;
29
29
  /**
30
30
  * @internal
31
31
  */
32
- readonly rect: HTMLElement;
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":"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"}
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;AAI9C;;GAEG;AACH,MAAM,OAAO,WAAW;IAoCpB,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;IACN,CAAC;IA7CD,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;CAgBJ"}
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
- // TODO HoverHandler - mousemove(e) callback
12
+ this.onMouseMove = (event) => {
13
+ this.hoverHandler.mousemove(event);
13
14
  };
14
- this.onMouseOut = () => {
15
- // TODO HoverHandler - mouseout() callback
15
+ this.onMouseOut = (event) => {
16
+ this.hoverHandler.mouseout(event);
16
17
  };
17
18
  this.zoomHandler = new ZoomHandler(wafermap);
18
- // TODO HoverHandler - initialization
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;AAO7C;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAGzB,YAAoC,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAsBrC,gBAAW,GAAG,CAAC,KAAY,EAAQ,EAAE;YAClD,KAAK,CAAC,cAAc,EAAE,CAAC;QAC3B,CAAC,CAAC;QAEe,gBAAW,GAAG,GAAS,EAAE;YACtC,4CAA4C;QAChD,CAAC,CAAC;QAEe,eAAU,GAAG,GAAS,EAAE;YACrC,0CAA0C;QAC9C,CAAC,CAAC;QA/BE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE7C,qCAAqC;QAErC,iDAAiD;QAEjD,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED,IAAW,WAAW;QAClB,+DAA+D;QAE/D,OAAO,SAAS,CAAC;IACrB,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;QAEH,qBAAqB;QACrB,sGAAsG;IAC1G,CAAC;CACJ"}
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.context.save();
13
+ this.wafermap.canvasContext.save();
14
14
  this.clearCanvas();
15
15
  this.scaleCanvas();
16
16
  this.renderDies();
17
17
  this.renderText();
18
- this.context.restore();
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.context.fillStyle = die.fillStyle;
56
+ this.wafermap.canvasContext.fillStyle = die.fillStyle;
34
57
  }
35
58
  if (prev && die.fillStyle !== prev.fillStyle && die.fillStyle) {
36
- this.context.fillStyle = die.fillStyle;
59
+ this.wafermap.canvasContext.fillStyle = die.fillStyle;
37
60
  }
38
- this.context.fillRect(die.x, die.y, this.dimensions.width, this.dimensions.height);
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.context.font = `${fontsize.toString()}px sans-serif`;
48
- this.context.fillStyle = '#ffffff';
49
- this.context.textAlign = 'center';
50
- this.context.lineCap = 'butt';
51
- const approxTextHeight = this.context.measureText('M');
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.context.fillText(die.text, die.x + this.dimensions.width / 2, die.y
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.context.clearRect(0, 0, this.wafermap.canvasWidth * this.wafermap.transform.k, this.wafermap.canvasHeight * this.wafermap.transform.k);
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.context.translate(this.wafermap.transform.x, this.wafermap.transform.y);
65
- this.context.scale(this.wafermap.transform.k, this.wafermap.transform.k);
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":"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"}
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;;;;;;;CAO5B,CAAC"}
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;;CAEvD,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
+ }
@@ -10,6 +10,10 @@ export const WaferMapOrientation = {
10
10
  left: 'left',
11
11
  right: 'right'
12
12
  };
13
+ export const HoverDieOpacity = {
14
+ show: 'show',
15
+ hide: 'hide'
16
+ };
13
17
  export const WaferMapColorScaleMode = {
14
18
  linear: 'linear',
15
19
  ordinal: 'ordinal'
@@ -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"}