feat(deepfield): 렌더 모드 판정(TDD) + useFieldMode 훅
This commit is contained in:
17
lib/deepfield-mode.ts
Normal file
17
lib/deepfield-mode.ts
Normal 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';
|
||||
}
|
||||
Reference in New Issue
Block a user