Files
jaengseung-made/lib/deepfield-mode.ts

18 lines
593 B
TypeScript

export type FieldMode = 'full' | 'lite' | 'static';
export interface FieldEnv {
reducedMotion: boolean;
webglSupported: boolean;
hardwareConcurrency: number; // 미보고 시 0
viewportWidth: number;
}
/** Deep Field 렌더 모드 판정 — 우선순위: 접근성 > 지원 여부 > 성능 */
export function decideFieldMode(env: FieldEnv): FieldMode {
if (env.reducedMotion) return 'static';
if (!env.webglSupported) return 'static';
if (env.viewportWidth < 768) return 'lite';
if (!env.hardwareConcurrency || env.hardwareConcurrency < 4) return 'lite';
return 'full';
}