UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

129 lines (127 loc) 4.04 kB
import { getColorBlindClass, useAccessibilityStore } from "./chunk-7CD5FIDV.mjs"; // src/hooks/useA11yPreferences.ts import { useEffect } from "react"; var CONTRAST_CLASS = { normal: null, high: "a11y-contrast-high", inverted: "a11y-contrast-inverted" }; var SATURATION_CLASS = { normal: null, grayscale: "a11y-saturation-grayscale", low: "a11y-saturation-low" }; var LEVEL_PREFIX = { fontSize: "a11y-font-", letterSpacing: "a11y-letter-spacing-", lineSpacing: "a11y-line-spacing-" }; var ALL_A11Y_CLASSES = [ "a11y-contrast-high", "a11y-contrast-inverted", "a11y-saturation-grayscale", "a11y-saturation-low", "a11y-font-1", "a11y-font-2", "a11y-font-3", "a11y-letter-spacing-1", "a11y-letter-spacing-2", "a11y-letter-spacing-3", "a11y-line-spacing-1", "a11y-line-spacing-2", "a11y-line-spacing-3", "a11y-highlight-links", "a11y-no-animations", "a11y-big-cursor", "a11y-dyslexia-font", "a11y-cb-protanopia", "a11y-cb-deuteranopia", "a11y-cb-tritanopia" ]; var buildLevelClass = (prefix, level) => { if (level === 0) return null; return `${prefix}${level}`; }; var buildClassMap = (prefs) => ({ contrastMode: CONTRAST_CLASS[prefs.contrastMode] ?? void 0, saturationMode: SATURATION_CLASS[prefs.saturationMode] ?? void 0, fontSize: buildLevelClass(LEVEL_PREFIX.fontSize, prefs.fontSize) ?? void 0, letterSpacing: buildLevelClass(LEVEL_PREFIX.letterSpacing, prefs.letterSpacing) ?? void 0, lineSpacing: buildLevelClass(LEVEL_PREFIX.lineSpacing, prefs.lineSpacing) ?? void 0, highlightLinks: prefs.highlightLinks ? "a11y-highlight-links" : void 0, pauseAnimations: prefs.pauseAnimations ? "a11y-no-animations" : void 0, bigCursor: prefs.bigCursor ? "a11y-big-cursor" : void 0, dyslexiaFont: prefs.dyslexiaFont ? "a11y-dyslexia-font" : void 0, colorBlindMode: getColorBlindClass(prefs.colorBlindMode) ?? void 0 }); var syncDom = (prefs) => { if (typeof document === "undefined") return; const root = document.documentElement; ALL_A11Y_CLASSES.forEach((cls) => root.classList.remove(cls)); const classMap = buildClassMap(prefs); Object.values(classMap).forEach((cls) => { if (cls) root.classList.add(cls); }); }; var useA11yPreferences = () => { const contrastMode = useAccessibilityStore((s) => s.contrastMode); const saturationMode = useAccessibilityStore((s) => s.saturationMode); const fontSize = useAccessibilityStore((s) => s.fontSize); const letterSpacing = useAccessibilityStore((s) => s.letterSpacing); const lineSpacing = useAccessibilityStore((s) => s.lineSpacing); const highlightLinks = useAccessibilityStore((s) => s.highlightLinks); const pauseAnimations = useAccessibilityStore((s) => s.pauseAnimations); const bigCursor = useAccessibilityStore((s) => s.bigCursor); const dyslexiaFont = useAccessibilityStore((s) => s.dyslexiaFont); const readingAid = useAccessibilityStore((s) => s.readingAid); const keyboardShortcut = useAccessibilityStore((s) => s.keyboardShortcut); const colorBlindMode = useAccessibilityStore((s) => s.colorBlindMode); const ttsMode = useAccessibilityStore((s) => s.ttsMode); const ttsRate = useAccessibilityStore((s) => s.ttsRate); const ttsVoiceId = useAccessibilityStore((s) => s.ttsVoiceId); const librasEnabled = useAccessibilityStore((s) => s.librasEnabled); useEffect(() => { syncDom({ contrastMode, saturationMode, fontSize, letterSpacing, lineSpacing, highlightLinks, pauseAnimations, bigCursor, dyslexiaFont, readingAid, keyboardShortcut, colorBlindMode, ttsMode, ttsRate, ttsVoiceId, librasEnabled }); }, [ contrastMode, saturationMode, fontSize, letterSpacing, lineSpacing, highlightLinks, pauseAnimations, bigCursor, dyslexiaFont, colorBlindMode ]); }; var __testing = { buildClassMap, syncDom, ALL_A11Y_CLASSES }; export { useA11yPreferences, __testing }; //# sourceMappingURL=chunk-XNZR6CNJ.mjs.map