feat(deepfield): 렌더 모드 판정(TDD) + useFieldMode 훅

This commit is contained in:
2026-06-13 00:05:17 +09:00
parent 5cfa124d38
commit bd13641f5e
3 changed files with 72 additions and 0 deletions

17
lib/deepfield-mode.ts Normal file
View File

@@ -0,0 +1,17 @@
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';
}