18 lines
593 B
TypeScript
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';
|
|
}
|