@neuroequality/neuroadapt-core
Version:
Core sensory, cognitive, and preference management for NeuroAdapt SDK
76 lines (75 loc) • 2.35 kB
TypeScript
import { EventEmitter } from 'eventemitter3';
import { SensoryPreferences } from '../preferences/schemas.js';
/**
* Events emitted by VisualAdapter
*/
export interface VisualAdapterEvents {
'adaptation-applied': (type: string, details: Record<string, unknown>) => void;
'adaptation-removed': (type: string) => void;
'error': (error: Error) => void;
}
/**
* Configuration options for VisualAdapter
*/
export interface VisualAdapterOptions {
targetElement?: HTMLElement;
autoApply?: boolean;
prefix?: string;
}
/**
* Color vision filter types for accessibility
*/
export type ColorVisionFilter = 'none' | 'protanopia' | 'deuteranopia' | 'tritanopia';
/**
* Visual adaptation types that can be applied
*/
export interface VisualAdaptations {
motionReduction: boolean;
highContrast: boolean;
colorVisionFilter: ColorVisionFilter;
fontSize: number;
reducedFlashing: boolean;
darkMode: boolean;
}
/**
* VisualAdapter applies real-time visual adaptations to the DOM
* based on user sensory preferences
*/
export declare class VisualAdapter extends EventEmitter<VisualAdapterEvents> {
private readonly targetElement;
private readonly prefix;
private readonly appliedAdaptations;
private styleElement?;
private currentAdaptations;
constructor(preferences: SensoryPreferences, options?: VisualAdapterOptions);
/**
* Apply visual adaptations based on sensory preferences
*/
applyAdaptations(preferences: SensoryPreferences): void;
/**
* Remove all applied visual adaptations
*/
disable(): void;
/**
* Get currently applied adaptations
*/
getCurrentAdaptations(): Readonly<Partial<VisualAdaptations>>;
/**
* Check if a specific adaptation is currently applied
*/
isAdaptationApplied(adaptation: keyof VisualAdaptations): boolean;
private initializeStyleElement;
private applyMotionReduction;
private removeMotionReduction;
private applyHighContrast;
private removeHighContrast;
private applyColorVisionFilter;
private removeColorVisionFilter;
private applyFontSizeScaling;
private removeFontSizeScaling;
private applyReducedFlashing;
private removeReducedFlashing;
private applyDarkMode;
private removeDarkMode;
}
//# sourceMappingURL=visual-adapter.d.ts.map