mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 15:25:46 +00:00
refactor(lib): relocate cardGridLayout → lib/util (store-free)
cardGridLayout's only store dep was three grid-column constants it imported from authStoreDefaults. Flipped ownership: the constants now live in lib/util/cardGridLayout (pure layout config) and authStoreDefaults re-exports them (store→lib), so the auth settings clamp/default and every existing consumer are unchanged. cardGridLayout is now store-free and homes in lib/util alongside the other pure helpers — consumed cleanly by ui/VirtualCardGrid + cover/layoutSizes. Resolves the documented store-free-lib block for the card-grid layout helper. Pure move + constant relocation; tests pass unmodified.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { computeCardGridColumnCount, computeCellWidthPx } from '../utils/cardGridLayout';
|
||||
import { computeCardGridColumnCount, computeCellWidthPx } from '@/lib/util/cardGridLayout';
|
||||
|
||||
export const COVER_DENSE_SEARCH_CSS_PX = 40;
|
||||
/** Artist detail top-track thumb (32×32 CSS px). */
|
||||
|
||||
@@ -7,7 +7,7 @@ import { albumGridWarmCovers, coverDisplayCssPxForAlbumGrid } from '@/cover/layo
|
||||
import { useLibraryCoverPrefetch } from '@/cover/useLibraryCoverPrefetch';
|
||||
import { useAuthStore } from '@/store/authStore';
|
||||
import { clampLibraryGridMaxColumns } from '@/store/authStoreHelpers';
|
||||
import { computeCardGridColumnCount } from '@/utils/cardGridLayout';
|
||||
import { computeCardGridColumnCount } from '@/lib/util/cardGridLayout';
|
||||
import GenreFilterBar from '@/ui/GenreFilterBar';
|
||||
import YearFilterButton from '@/ui/YearFilterButton';
|
||||
import StarFilterButton from '@/ui/StarFilterButton';
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
computeCardGridColumnCount,
|
||||
computeCellWidthPx,
|
||||
estimateRowHeightPx,
|
||||
} from '../utils/cardGridLayout';
|
||||
} from '@/lib/util/cardGridLayout';
|
||||
|
||||
/**
|
||||
* ResizeObserver-driven column count (capped by Settings → Library) and
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { computeCardGridColumnCount, estimateRowHeightPx } from './cardGridLayout';
|
||||
import { LIBRARY_GRID_MAX_COLUMNS_MAX, LIBRARY_GRID_MAX_COLUMNS_MIN } from '../store/authStoreDefaults';
|
||||
import { computeCardGridColumnCount, estimateRowHeightPx } from '@/lib/util/cardGridLayout';
|
||||
import { LIBRARY_GRID_MAX_COLUMNS_MAX, LIBRARY_GRID_MAX_COLUMNS_MIN } from '@/store/authStoreDefaults';
|
||||
|
||||
describe('estimateRowHeightPx', () => {
|
||||
describe('composer variant', () => {
|
||||
@@ -3,16 +3,17 @@
|
||||
* and row-height estimates derived from measured cell width (TanStack virtual rows).
|
||||
*/
|
||||
|
||||
import {
|
||||
DEFAULT_LIBRARY_GRID_MAX_COLUMNS,
|
||||
LIBRARY_GRID_MAX_COLUMNS_MAX,
|
||||
LIBRARY_GRID_MAX_COLUMNS_MIN,
|
||||
} from '../store/authStoreDefaults';
|
||||
// Library grid column config. Owned here (pure layout math) and re-exported by
|
||||
// authStoreDefaults, which clamps/defaults the user's libraryGridMaxColumns
|
||||
// setting against them — keeps this module store-free so ui/ + cover/ can use it.
|
||||
export const DEFAULT_LIBRARY_GRID_MAX_COLUMNS = 6;
|
||||
export const LIBRARY_GRID_MAX_COLUMNS_MIN = 4;
|
||||
export const LIBRARY_GRID_MAX_COLUMNS_MAX = 12;
|
||||
|
||||
export const CARD_GRID_GAP_PX = 16;
|
||||
export const CARD_GRID_MIN_TILE_PX = 140;
|
||||
|
||||
/** @deprecated use `DEFAULT_LIBRARY_GRID_MAX_COLUMNS` from `authStoreDefaults` */
|
||||
/** @deprecated use `DEFAULT_LIBRARY_GRID_MAX_COLUMNS` */
|
||||
export const CARD_GRID_MAX_COLS = DEFAULT_LIBRARY_GRID_MAX_COLUMNS;
|
||||
|
||||
export function computeCardGridColumnCount(containerWidthPx: number, maxColumns: number): number {
|
||||
@@ -42,7 +42,13 @@ export const MIX_MIN_RATING_FILTER_MAX_STARS = 3;
|
||||
|
||||
export const RANDOM_MIX_SIZE_OPTIONS: readonly number[] = [50, 75, 100, 125, 150];
|
||||
|
||||
/** Default max columns for album/artist/playlist card grids (Settings → Library). */
|
||||
export const DEFAULT_LIBRARY_GRID_MAX_COLUMNS = 6;
|
||||
export const LIBRARY_GRID_MAX_COLUMNS_MIN = 4;
|
||||
export const LIBRARY_GRID_MAX_COLUMNS_MAX = 12;
|
||||
/**
|
||||
* Default + clamp bounds for album/artist/playlist card grids (Settings → Library).
|
||||
* Defined in lib/util/cardGridLayout (store-free layout math) and re-exported here
|
||||
* so the auth-store settings clamp/default and all existing consumers are unchanged.
|
||||
*/
|
||||
export {
|
||||
DEFAULT_LIBRARY_GRID_MAX_COLUMNS,
|
||||
LIBRARY_GRID_MAX_COLUMNS_MIN,
|
||||
LIBRARY_GRID_MAX_COLUMNS_MAX,
|
||||
} from '@/lib/util/cardGridLayout';
|
||||
|
||||
@@ -7,7 +7,7 @@ import { useElementClientHeightById } from '@/lib/hooks/useResizeClientHeight';
|
||||
import { useCardGridMetrics } from '@/hooks/useCardGridMetrics';
|
||||
import { useRemeasureGridVirtualizer } from '@/lib/hooks/useRemeasureGridVirtualizer';
|
||||
import { useVirtualizerScrollMargin } from '@/lib/hooks/useVirtualizerScrollMargin';
|
||||
import type { CardGridRowHeightVariant } from '@/utils/cardGridLayout';
|
||||
import type { CardGridRowHeightVariant } from '@/lib/util/cardGridLayout';
|
||||
|
||||
export type VirtualCardGridProps<T> = {
|
||||
items: readonly T[];
|
||||
|
||||
Reference in New Issue
Block a user