|
|
|
|
|
|
|
|
}, |
|
|
}, |
|
|
} |
|
|
} |
|
|
const StreamContainer = { |
|
|
const StreamContainer = { |
|
|
getColumns() { |
|
|
|
|
|
const n = State.online.length |
|
|
|
|
|
if(n > 5 * 5) return '1fr 1fr 1fr 1fr 1fr 1fr' |
|
|
|
|
|
if(n > 4 * 4) return '1fr 1fr 1fr 1fr 1fr' |
|
|
|
|
|
if(n > 3 * 3) return '1fr 1fr 1fr 1fr' |
|
|
|
|
|
if(n > 2 * 2) return '1fr 1fr 1fr' |
|
|
|
|
|
if(n > 1 * 1) return '1fr 1fr' |
|
|
|
|
|
return '1fr' |
|
|
|
|
|
}, |
|
|
|
|
|
getRows() { |
|
|
|
|
|
const n = State.online.length |
|
|
|
|
|
if(n > 5 * 6) return '1fr 1fr 1fr 1fr 1fr 1fr' |
|
|
|
|
|
if(n > 4 * 5) return '1fr 1fr 1fr 1fr 1fr' |
|
|
|
|
|
if(n > 3 * 4) return '1fr 1fr 1fr 1fr' |
|
|
|
|
|
if(n > 2 * 3) return '1fr 1fr 1fr' |
|
|
|
|
|
if(n > 1 * 2) return '1fr 1fr' |
|
|
|
|
|
return '1fr' |
|
|
|
|
|
}, |
|
|
|
|
|
view() { |
|
|
view() { |
|
|
const dims = [StreamContainer.getRows(), StreamContainer.getColumns()] |
|
|
|
|
|
|
|
|
const dims = [ |
|
|
|
|
|
Math.floor((1 + Math.sqrt(4 * State.online.length - 3)) / 2), |
|
|
|
|
|
Math.ceil(Math.sqrt(State.online.length)), |
|
|
|
|
|
].map(n => Array(n).fill('1fr').join(' ')) |
|
|
|
|
|
|
|
|
if(innerHeight > innerWidth) dims.reverse() |
|
|
if(innerHeight > innerWidth) dims.reverse() |
|
|
const style = { |
|
|
const style = { |
|
|
backgroundColor: 'black', |
|
|
backgroundColor: 'black', |