analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
109 lines (102 loc) • 4.84 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});// src/store/accessibilityStore.ts
var _zustand = require('zustand');
var _middleware = require('zustand/middleware');
var ColorBlindMode = /* @__PURE__ */ ((ColorBlindMode2) => {
ColorBlindMode2["None"] = "none";
ColorBlindMode2["Protanopia"] = "protanopia";
ColorBlindMode2["Deuteranopia"] = "deuteranopia";
ColorBlindMode2["Tritanopia"] = "tritanopia";
return ColorBlindMode2;
})(ColorBlindMode || {});
var COLOR_BLIND_PREFIX = "a11y-cb-";
var getColorBlindClass = (mode) => mode === "none" /* None */ ? null : `${COLOR_BLIND_PREFIX}${mode}`;
var getColorBlindFilterId = (mode) => `${COLOR_BLIND_PREFIX}${mode}`;
var DEFAULT_ACCESSIBILITY_PREFERENCES = {
contrastMode: "normal",
saturationMode: "normal",
fontSize: 0,
letterSpacing: 0,
lineSpacing: 0,
highlightLinks: false,
pauseAnimations: false,
bigCursor: false,
dyslexiaFont: false,
readingAid: "none",
keyboardShortcut: true,
colorBlindMode: "none" /* None */,
ttsMode: "off",
ttsRate: 1,
ttsVoiceId: null,
librasEnabled: false
};
var useAccessibilityStore = _zustand.create.call(void 0, )(
_middleware.devtools.call(void 0,
_middleware.persist.call(void 0,
(set) => ({
...DEFAULT_ACCESSIBILITY_PREFERENCES,
isPanelOpen: false,
ttsStatus: "idle",
setContrastMode: (contrastMode) => set({ contrastMode }),
setSaturationMode: (saturationMode) => set({ saturationMode }),
setFontSize: (fontSize) => set({ fontSize }),
setLetterSpacing: (letterSpacing) => set({ letterSpacing }),
setLineSpacing: (lineSpacing) => set({ lineSpacing }),
setHighlightLinks: (highlightLinks) => set({ highlightLinks }),
setPauseAnimations: (pauseAnimations) => set({ pauseAnimations }),
setBigCursor: (bigCursor) => set({ bigCursor }),
setDyslexiaFont: (dyslexiaFont) => set({ dyslexiaFont }),
setReadingAid: (readingAid) => set({ readingAid }),
setKeyboardShortcut: (keyboardShortcut) => set({ keyboardShortcut }),
setColorBlindMode: (colorBlindMode) => set({ colorBlindMode }),
setTTSMode: (ttsMode) => set({ ttsMode }),
setTTSRate: (ttsRate) => set({ ttsRate }),
setTTSVoiceId: (ttsVoiceId) => set({ ttsVoiceId }),
setTTSStatus: (ttsStatus) => set({ ttsStatus }),
setLibrasEnabled: (librasEnabled) => set({ librasEnabled }),
resetPreferences: () => set({ ...DEFAULT_ACCESSIBILITY_PREFERENCES }),
openPanel: () => set({ isPanelOpen: true }),
closePanel: () => set({ isPanelOpen: false }),
togglePanel: () => set((state) => ({ isPanelOpen: !state.isPanelOpen }))
}),
{
name: "accessibility-store",
// version 1: removeu `librasEnabled` da persistência (era custoso
// recarregar VLibras a cada refresh). A migração limpa esse valor
// de localStorages antigos para evitar auto-load surpresa.
version: 1,
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- migrate works with arbitrary persisted shapes from older versions
migrate: (persistedState) => {
if (persistedState && typeof persistedState === "object" && "librasEnabled" in persistedState) {
delete persistedState.librasEnabled;
}
return persistedState;
},
partialize: (state) => ({
contrastMode: state.contrastMode,
saturationMode: state.saturationMode,
fontSize: state.fontSize,
letterSpacing: state.letterSpacing,
lineSpacing: state.lineSpacing,
highlightLinks: state.highlightLinks,
pauseAnimations: state.pauseAnimations,
bigCursor: state.bigCursor,
dyslexiaFont: state.dyslexiaFont,
readingAid: state.readingAid,
keyboardShortcut: state.keyboardShortcut,
colorBlindMode: state.colorBlindMode,
ttsRate: state.ttsRate,
ttsVoiceId: state.ttsVoiceId
// ttsMode e librasEnabled NÃO são persistidos:
// - ttsMode: o leitor sempre começa desligado ao recarregar
// a página para evitar comportamento confuso
// - librasEnabled: o VLibras é pesado (~MBs de assets); auto-
// carregar a cada refresh seria custoso e surpreendente. O
// usuário ativa explicitamente quando precisa.
})
}
),
{ name: "accessibility-store" }
)
);
exports.ColorBlindMode = ColorBlindMode; exports.getColorBlindClass = getColorBlindClass; exports.getColorBlindFilterId = getColorBlindFilterId; exports.DEFAULT_ACCESSIBILITY_PREFERENCES = DEFAULT_ACCESSIBILITY_PREFERENCES; exports.useAccessibilityStore = useAccessibilityStore;
//# sourceMappingURL=chunk-ALPGURNK.js.map