Files
readest/apps/readest-app/src/utils/grid.ts
T
Huang Xin 9477789db1 layout: apply responsive safe area insets to the reader page, closes #1067 and closes #1212 (#1408)
This also fixes layout glitches when showing status bar on devices without display cutouts
2025-06-17 03:36:23 +02:00

30 lines
897 B
TypeScript

export const getGridTemplate = (count: number, aspectRatio: number) => {
if (count <= 1) {
return { columns: '1fr', rows: '1fr' };
} else if (count === 2) {
return aspectRatio < 1
? { columns: '1fr', rows: '1fr 1fr' }
: { columns: '1fr 1fr', rows: '1fr' };
} else if (count === 3 || count === 4) {
return { columns: '1fr 1fr', rows: '1fr 1fr' };
} else {
return { columns: '1fr 1fr 1fr', rows: '1fr 1fr 1fr' };
}
};
export const getInsetEdges = (index: number, count: number, aspectRatio: number) => {
const gridTemplate = getGridTemplate(count, aspectRatio);
const cols = gridTemplate.columns.split(' ').length;
const rows = gridTemplate.rows.split(' ').length;
const row = Math.floor(index / cols);
const col = index % cols;
return {
top: row === 0,
right: col === cols - 1,
bottom: row === rows - 1,
left: col === 0,
};
};