Files
Psychotoxical-psysonic/src/hooks/useRemeasureGridVirtualizer.ts
T
Maxim Isaev 7c6d3694d4 feat(ui): shared card grid with max six columns and virtualization
Add cardGridLayout helpers, useCardGridMetrics, useRemeasureGridVirtualizer, and VirtualCardGrid (TanStack row virtualization, always remeasure on layout changes).

Apply to Artists (grid + list unchanged policy), Albums, Composers grid, playlists, radio stations, offline library, and album-heavy browse/detail pages. Respect disableMainstageVirtualLists for a non-virtual grid with the same column rules.

Includes vitest coverage for column cap.
2026-05-15 02:05:34 +03:00

25 lines
710 B
TypeScript

import { useEffect } from 'react';
import type { Virtualizer } from '@tanstack/react-virtual';
/** When grid column count or row height estimate changes, TanStack can keep stale offsets until scroll — force a remeasure. */
export function useRemeasureGridVirtualizer<TScroll extends Element, TItem extends Element>(
virtualizer: Virtualizer<TScroll, TItem>,
args: {
active: boolean;
gridCols: number;
rowHeightEst: number;
virtualRowCount: number;
},
): void {
useEffect(() => {
if (!args.active || args.virtualRowCount === 0) return;
virtualizer.measure();
}, [
args.active,
args.gridCols,
args.rowHeightEst,
args.virtualRowCount,
virtualizer,
]);
}