Referência: src/hooks/use-grid-layout.ts
Dado um número de colunas desejado e uma viewport de W × H, calcular quantos slots 16:9 cabem na tela e qual o tamanho de cada um.
Dividimos a largura da viewport pelo número de colunas:
playerWidth = floor(W / cols)Exemplo: viewport 1920×1080, cols=2:
A altura é derivada da largura para manter a proporção:
playerHeight = floor(playerWidth / (16/9))Exemplo:
Dividimos a altura da viewport pela altura do player:
rows = floor(H / playerHeight)Exemplo:
totalSlots = cols × rowsExemplo:
Viewport: 1920×1080
| cols | playerWidth | playerHeight | rows | totalSlots |
|---|---|---|---|---|
| 1 | 1920 | 1080 | 1 | 1 |
| 2 | 960 | 540 | 2 | 4 |
| 3 | 640 | 360 | 3 | 9 |
| 4 | 480 | 270 | 4 | 16 |
Os slots são posições fixas no grid. Cada slot pode:
Arrastar um player sobre outro troca suas posições (swap).