@ni/nimble-components 18.5.2 → 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 (36) hide show
  1. package/dist/all-components-bundle.js +211 -51
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +597 -552
  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/table/components/row/template.js +19 -17
  8. package/dist/esm/table/components/row/template.js.map +1 -1
  9. package/dist/esm/table/template.js +5 -3
  10. package/dist/esm/table/template.js.map +1 -1
  11. package/dist/esm/table-column/base/index.d.ts +1 -0
  12. package/dist/esm/table-column/base/index.js +4 -0
  13. package/dist/esm/table-column/base/index.js.map +1 -1
  14. package/dist/esm/wafer-map/index.d.ts +25 -4
  15. package/dist/esm/wafer-map/index.js +45 -4
  16. package/dist/esm/wafer-map/index.js.map +1 -1
  17. package/dist/esm/wafer-map/modules/data-manager.d.ts +3 -1
  18. package/dist/esm/wafer-map/modules/data-manager.js +4 -0
  19. package/dist/esm/wafer-map/modules/data-manager.js.map +1 -1
  20. package/dist/esm/wafer-map/modules/event-coordinator.d.ts +1 -1
  21. package/dist/esm/wafer-map/modules/event-coordinator.js +6 -12
  22. package/dist/esm/wafer-map/modules/event-coordinator.js.map +1 -1
  23. package/dist/esm/wafer-map/modules/hover-handler.d.ts +12 -0
  24. package/dist/esm/wafer-map/modules/hover-handler.js +56 -0
  25. package/dist/esm/wafer-map/modules/hover-handler.js.map +1 -0
  26. package/dist/esm/wafer-map/modules/rendering.d.ts +2 -1
  27. package/dist/esm/wafer-map/modules/rendering.js +38 -15
  28. package/dist/esm/wafer-map/modules/rendering.js.map +1 -1
  29. package/dist/esm/wafer-map/styles.js +27 -0
  30. package/dist/esm/wafer-map/styles.js.map +1 -1
  31. package/dist/esm/wafer-map/template.js +8 -0
  32. package/dist/esm/wafer-map/template.js.map +1 -1
  33. package/dist/esm/wafer-map/types.d.ts +9 -0
  34. package/dist/esm/wafer-map/types.js +4 -0
  35. package/dist/esm/wafer-map/types.js.map +1 -1
  36. 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"}
@@ -5,24 +5,26 @@ import { TableCell } from '../cell';
5
5
  export const template = html `
6
6
  <template role="row">
7
7
  ${repeat(x => x.columnStates, html `
8
- <${DesignSystem.tagFor(TableCell)}
9
- class="cell"
10
- :cellTemplate="${x => x.column.cellTemplate}"
11
- :cellStyles="${x => x.column.cellStyles}"
12
- :cellState="${x => x.cellState}"
13
- ?has-action-menu="${x => !!x.column.actionMenuSlot}"
14
- action-menu-label="${x => x.column.actionMenuLabel}"
15
- @cell-action-menu-beforetoggle="${(x, c) => c.parent.onCellActionMenuBeforeToggle(c.event, x.column)}"
16
- @cell-action-menu-toggle="${(x, c) => c.parent.onCellActionMenuToggle(c.event, x.column)}"
17
- >
8
+ ${when(x => !x.column.columnHidden, html `
9
+ <${DesignSystem.tagFor(TableCell)}
10
+ class="cell"
11
+ :cellTemplate="${x => x.column.cellTemplate}"
12
+ :cellStyles="${x => x.column.cellStyles}"
13
+ :cellState="${x => x.cellState}"
14
+ ?has-action-menu="${x => !!x.column.actionMenuSlot}"
15
+ action-menu-label="${x => x.column.actionMenuLabel}"
16
+ @cell-action-menu-beforetoggle="${(x, c) => c.parent.onCellActionMenuBeforeToggle(c.event, x.column)}"
17
+ @cell-action-menu-toggle="${(x, c) => c.parent.onCellActionMenuToggle(c.event, x.column)}"
18
+ >
18
19
 
19
- ${when((x, c) => (c.parent.currentActionMenuColumn === x.column) && x.column.actionMenuSlot, html `
20
- <slot
21
- name="${x => `row-action-menu-${x.column.actionMenuSlot}`}"
22
- slot="cellActionMenu"
23
- ></slot>
24
- `)}
25
- </${DesignSystem.tagFor(TableCell)}>
20
+ ${when((x, c) => (c.parent.currentActionMenuColumn === x.column) && x.column.actionMenuSlot, html `
21
+ <slot
22
+ name="${x => `row-action-menu-${x.column.actionMenuSlot}`}"
23
+ slot="cellActionMenu"
24
+ ></slot>
25
+ `)}
26
+ </${DesignSystem.tagFor(TableCell)}>
27
+ `)}
26
28
  `)}
27
29
  </template>
28
30
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/row/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAU;;UAE5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAuB;eAClD,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;;iCAEZ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;+BAC5B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;8BACzB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;oCACV,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc;qCAC7B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;kDAChB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC,KAAiD,EAAE,CAAC,CAAC,MAAM,CAAC;4CACpH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAiD,EAAE,CAAC,CAAC,MAAM,CAAC;;;kBAGlI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC,MAAmB,CAAC,uBAAuB,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAuB;;gCAEtH,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,cAAe,EAAE;;;iBAGjE,CAAC;gBACF,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;SACrC,CAAC;;CAET,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/row/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAU;;UAE5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAuB;cACnD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAuB;mBACxD,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;;qCAEZ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;mCAC5B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;kCACzB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;wCACV,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc;yCAC7B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;sDAChB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC,KAAiD,EAAE,CAAC,CAAC,MAAM,CAAC;gDACpH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAiD,EAAE,CAAC,CAAC,MAAM,CAAC;;;sBAGlI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC,MAAmB,CAAC,uBAAuB,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAuB;;oCAEtH,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,cAAe,EAAE;;;qBAGjE,CAAC;oBACF,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;aACrC,CAAC;SACL,CAAC;;CAET,CAAC"}
@@ -9,9 +9,11 @@ export const template = html `
9
9
  <div role="rowgroup" class="header-container">
10
10
  <div class="header-row" role="row">
11
11
  ${repeat(x => x.columns, html `
12
- <${DesignSystem.tagFor(TableHeader)} class="header">
13
- <slot name="${x => x.slot}"></slot>
14
- </${DesignSystem.tagFor(TableHeader)}>
12
+ ${when(x => !x.columnHidden, html `
13
+ <${DesignSystem.tagFor(TableHeader)} class="header">
14
+ <slot name="${x => x.slot}"></slot>
15
+ </${DesignSystem.tagFor(TableHeader)}>
16
+ `)}
15
17
  `)}
16
18
  <div class="header-scrollbar-spacer" style="width: ${x => x.virtualizer.headerContainerMarginRight}px;"></div>
17
19
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/table/template.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,GAAG,EACH,MAAM,EACN,IAAI,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAO;6BACN,QAAQ,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;;;;sBAI/D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAa;2BACnC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;0CACjB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;4BACzB,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;qBACvC,CAAC;yEACmD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,0BAA0B;;;0CAG5E,GAAG,CAAC,UAAU,CAAC;2DACE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa;+EACZ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,mBAAmB,KAAK;sBACvG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,CAAO;0BAC1D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAoB;+BAC3D,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;;6CAEf,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;+CACvC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM;4CAChD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;iEACL,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,KAAsD,CAAC;2DAC9G,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAsD,CAAC;iDAC5G,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;;8BAE9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAgB,CAAC,sBAAsB,KAAM,CAAC,CAAC,MAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,CAAoB;kCAC9H,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAgB,CAAC,eAAe,EAAE,IAAI,CAAe;;gDAE3D,CAAC,CAAC,EAAE,CAAC,CAAC;gDACN,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE;;iCAE1C,CAAC;6BACL,CAAC;gCACE,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;yBACpC,CAAC;qBACL,CAAC;;;;;CAKrB,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/table/template.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,GAAG,EACH,MAAM,EACN,IAAI,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAO;6BACN,QAAQ,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;;;;sBAI/D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAa;0BACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAa;+BACvC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;8CACjB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;gCACzB,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;yBACvC,CAAC;qBACL,CAAC;yEACmD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,0BAA0B;;;0CAG5E,GAAG,CAAC,UAAU,CAAC;2DACE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa;+EACZ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,mBAAmB,KAAK;sBACvG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,CAAO;0BAC1D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAoB;+BAC3D,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;;6CAEf,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;+CACvC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM;4CAChD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;iEACL,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,KAAsD,CAAC;2DAC9G,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAsD,CAAC;iDAC5G,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;;8BAE9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAgB,CAAC,sBAAsB,KAAM,CAAC,CAAC,MAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,CAAoB;kCAC9H,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAgB,CAAC,eAAe,EAAE,IAAI,CAAe;;gDAE3D,CAAC,CAAC,EAAE,CAAC,CAAC;gDACN,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE;;iCAE1C,CAAC;6BACL,CAAC;gCACE,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;yBACpC,CAAC;qBACL,CAAC;;;;;CAKrB,CAAC"}
@@ -8,6 +8,7 @@ export declare abstract class TableColumn<TCellRecord extends TableCellRecord =
8
8
  columnId?: string;
9
9
  actionMenuSlot?: string;
10
10
  actionMenuLabel?: string;
11
+ columnHidden: boolean;
11
12
  /**
12
13
  * @internal
13
14
  *
@@ -8,6 +8,7 @@ import { uniqueId } from '@microsoft/fast-web-utilities';
8
8
  export class TableColumn extends FoundationElement {
9
9
  constructor() {
10
10
  super(...arguments);
11
+ this.columnHidden = false;
11
12
  /**
12
13
  * @internal
13
14
  *
@@ -33,6 +34,9 @@ __decorate([
33
34
  __decorate([
34
35
  attr({ attribute: 'action-menu-label' })
35
36
  ], TableColumn.prototype, "actionMenuLabel", void 0);
37
+ __decorate([
38
+ attr({ attribute: 'column-hidden', mode: 'boolean' })
39
+ ], TableColumn.prototype, "columnHidden", void 0);
36
40
  __decorate([
37
41
  observable
38
42
  ], TableColumn.prototype, "dataRecordFieldNames", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/base/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,IAAI,EAEJ,UAAU,EAEb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAOzD;;GAEG;AACH,MAAM,OAAgB,WAGpB,SAAQ,iBAAiB;IAH3B;;QAoCI;;;;;WAKG;QAEI,yBAAoB,GAA4C,EAAE,CAAC;IAkB9E,CAAC;IARG;;OAEG;IACa,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC7D,CAAC;CACJ;AAxDG;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;6CACR;AAGzB;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;mDACT;AAG/B;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;oDACT;AAgChC;IADC,UAAU;yDAC+D;AAQ1E;IADC,UAAU;iDACyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/base/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,IAAI,EAEJ,UAAU,EAEb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAOzD;;GAEG;AACH,MAAM,OAAgB,WAGpB,SAAQ,iBAAiB;IAH3B;;QAcW,iBAAY,GAAG,KAAK,CAAC;QAyB5B;;;;;WAKG;QAEI,yBAAoB,GAA4C,EAAE,CAAC;IAkB9E,CAAC;IARG;;OAEG;IACa,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC7D,CAAC;CACJ;AA3DG;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;6CACR;AAGzB;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;mDACT;AAG/B;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;oDACT;AAGhC;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;iDAC1B;AAgC5B;IADC,UAAU;yDAC+D;AAQ1E;IADC,UAAU;iDACyB"}
@@ -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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"}