| 273 | } |
| 274 | |
| 275 | function getPointerGridCell(metrics: ContainerMetrics, clientX: number, clientY: number) { |
| 276 | const colUnit = metrics.cellWidth + metrics.colGap; |
| 277 | const rowUnit = metrics.rowHeight + metrics.rowGap; |
| 278 | const localX = clientX - metrics.rect.left - metrics.paddingLeft + metrics.scrollLeft; |
| 279 | const localY = clientY - metrics.rect.top - metrics.paddingTop + metrics.scrollTop; |
| 280 | |
| 281 | const col = Math.max(0, Math.floor(localX / Math.max(1, colUnit))); |
| 282 | const row = Math.max(0, Math.floor(localY / Math.max(1, rowUnit))); |
| 283 | |
| 284 | return { row, col }; |
| 285 | } |
| 286 | |
| 287 | function candidateContainsCell(candidate: PreviewCandidate, row: number, col: number) { |
| 288 | return ( |