UNPKG

@vineyardbovines/react-native-nitro-stylesheet

Version:
143 lines (138 loc) 5.45 kB
import { useEffect, useState } from "react"; import { NitroAccessibilityModule } from "../modules/Accessibility"; import type { AccessibilitySettings } from "../types/a11y"; export function useAccessibilitySettings() { const [settings, setSettings] = useState<AccessibilitySettings>({ isReduceMotionEnabled: NitroAccessibilityModule.getIsReduceMotionEnabled(), isReduceTransparencyEnabled: NitroAccessibilityModule.getIsReduceTransparencyEnabled(), isGrayscaleEnabled: NitroAccessibilityModule.getIsGrayscaleEnabled(), isBoldTextEnabled: NitroAccessibilityModule.getIsBoldTextEnabled(), isVoiceOverEnabled: NitroAccessibilityModule.getIsVoiceOverEnabled(), isSwitchControlEnabled: NitroAccessibilityModule.getIsSwitchControlEnabled(), isVideoAutoplayEnabled: NitroAccessibilityModule.getIsVideoAutoplayEnabled(), isClosedCaptioningEnabled: NitroAccessibilityModule.getIsClosedCaptioningEnabled(), isDarkerSystemColorsEnabled: NitroAccessibilityModule.getIsDarkerSystemColorsEnabled(), isMonoAudioEnabled: NitroAccessibilityModule.getIsMonoAudioEnabled(), isShakeToUndoEnabled: NitroAccessibilityModule.getIsShakeToUndoEnabled(), isDifferentiateWithoutColorEnabled: NitroAccessibilityModule.getIsDifferentiateWithoutColorEnabled(), isInvertColorsEnabled: NitroAccessibilityModule.getIsInvertColorsEnabled(), isShowButtonShapesEnabled: NitroAccessibilityModule.getIsShowButtonShapesEnabled(), prefersCrossFadeTransitions: NitroAccessibilityModule.getPrefersCrossFadeTransitionsEnabled(), isSpeakScreenEnabled: NitroAccessibilityModule.getIsSpeakScreenEnabled(), isSpeakSelectionEnabled: NitroAccessibilityModule.getIsSpeakSelectionEnabled(), isOnOffSwitchLabelsEnabled: NitroAccessibilityModule.getIsOnOffSwitchLabelsEnabled(), }); useEffect(() => { NitroAccessibilityModule.addReduceMotionListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isReduceMotionEnabled: isEnabled, })) ); NitroAccessibilityModule.addReduceTransparencyListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isReduceTransparencyEnabled: isEnabled, })) ); NitroAccessibilityModule.addGrayscaleListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isGrayscaleEnabled: isEnabled, })) ); NitroAccessibilityModule.addBoldTextListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isBoldTextEnabled: isEnabled, })) ); NitroAccessibilityModule.addVoiceOverListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isVoiceOverEnabled: isEnabled, })) ); NitroAccessibilityModule.addSwitchControlListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isSwitchControlEnabled: isEnabled, })) ); NitroAccessibilityModule.addVideoAutoplayListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isVideoAutoplayEnabled: isEnabled, })) ); NitroAccessibilityModule.addClosedCaptioningListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isClosedCaptioningEnabled: isEnabled, })) ); NitroAccessibilityModule.addDarkerSystemColorsListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isDarkerSystemColorsEnabled: isEnabled, })) ); NitroAccessibilityModule.addMonoAudioListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isMonoAudioEnabled: isEnabled, })) ); NitroAccessibilityModule.addShakeToUndoListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isShakeToUndoEnabled: isEnabled, })) ); NitroAccessibilityModule.addDifferentiateWithoutColorListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isDifferentiateWithoutColorEnabled: isEnabled, })) ); NitroAccessibilityModule.addInvertColorsListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isInvertColorsEnabled: isEnabled, })) ); NitroAccessibilityModule.addShowButtonShapesListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isShowButtonShapesEnabled: isEnabled, })) ); NitroAccessibilityModule.addPrefersCrossFadeTransitionsListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, prefersCrossFadeTransitions: isEnabled, })) ); NitroAccessibilityModule.addSpeakScreenListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isSpeakScreenEnabled: isEnabled, })) ); NitroAccessibilityModule.addSpeakSelectionListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isSpeakSelectionEnabled: isEnabled, })) ); NitroAccessibilityModule.addOnOffSwitchLabelsListener((isEnabled) => setSettings((prevSettings) => ({ ...prevSettings, isOnOffSwitchLabelsEnabled: isEnabled, })) ); return (): void => NitroAccessibilityModule.removeListeners(); }, []); return settings; }