fastapi-rtk
Version:
A React component library for FastAPI in combination with FastAPI React Toolkit backend, built with Mantine, JsonForms, and Zustand.
45 lines (44 loc) • 2.27 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const constants = require("fastapi-rtk/constants");
const utils = require("fastapi-rtk/utils");
const hooks = require("@mantine/hooks");
const React = require("react");
const useTranslation = require("../../../../../.external/cjs/react-i18next@15.7.3_i18next@25.5.2_react-dom@18.3.1_react@18.3.1_typescript@5.9.2/react-i18next/dist/es/useTranslation.cjs");
const useProvideLang = (baseMRTLocalization = {}) => {
const translation = useTranslation.useTranslation();
const [localStorageLanguage, setLocalStorageLanguage] = hooks.useLocalStorage(constants.LANG_LOCAL_STORAGE_PROPS);
const setLanguage = React.useCallback(
(lng) => {
translation.i18n.changeLanguage(lng).then(() => setLocalStorageLanguage(lng));
},
[setLocalStorageLanguage, translation.i18n]
);
const [MRTLocalization, setMRTLocalization] = hooks.useSetState(baseMRTLocalization);
React.useEffect(() => {
if (!translation.i18n.language) {
return;
}
if (!(MRTLocalization == null ? void 0 : MRTLocalization[translation.i18n.language])) {
if (!constants.MRT_LOCALIZATION_IMPORT_MAP[translation.i18n.language]) {
utils.FastAPIRTKLogger.error(
`No localization found for '${translation.i18n.language}', consider adding it yourself using 'MRTLocalization' prop within the 'langProps' in 'Provider' component. See here for the keys: https://github.com/KevinVandy/mantine-react-table/blob/v2/packages/mantine-react-table/src/locales/en.ts`
);
return;
}
constants.MRT_LOCALIZATION_IMPORT_MAP[translation.i18n.language]().then((languagePack) => setMRTLocalization({ [translation.i18n.language]: languagePack })).catch(() => utils.FastAPIRTKLogger.error(`Failed to load localization for ${translation.i18n.language}`));
}
}, [translation.i18n.language]);
return {
currentLanguage: translation.i18n.language,
setLanguage,
translation,
useTranslation: useTranslation.useTranslation,
currentMRTLocalization: MRTLocalization[translation.i18n.language],
MRTLocalization,
setMRTLocalization,
localStorageLanguage,
setLocalStorageLanguage
};
};
exports.useProvideLang = useProvideLang;