react-intlayer
Version:
Easily internationalize i18n your React applications with type-safe multilingual content management.
62 lines (59 loc) • 2.98 kB
JavaScript
'use client';
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
const require_editor_IntlayerEditorProvider = require('../editor/IntlayerEditorProvider.cjs');
const require_client_useLocaleStorage = require('./useLocaleStorage.cjs');
let react = require("react");
let react_jsx_runtime = require("react/jsx-runtime");
let _intlayer_core = require("@intlayer/core");
let _intlayer_editor_react = require("@intlayer/editor-react");
let _intlayer_config_built = require("@intlayer/config/built");
_intlayer_config_built = require_rolldown_runtime.__toESM(_intlayer_config_built);
//#region src/client/IntlayerProvider.tsx
/**
* Context that store the current locale on the client side
*/
const IntlayerClientContext = (0, react.createContext)({
locale: require_client_useLocaleStorage.localeInStorage ?? _intlayer_config_built.default?.internationalization?.defaultLocale,
setLocale: () => null,
isCookieEnabled: true,
disableEditor: false
});
/**
* Hook that provides the current locale
*/
const useIntlayerContext = () => (0, react.useContext)(IntlayerClientContext);
/**
* Provider that store the current locale on the client side
*/
const IntlayerProviderContent = ({ locale: localeProp, defaultLocale: defaultLocaleProp, children, setLocale: setLocaleProp, disableEditor, isCookieEnabled }) => {
const { internationalization } = _intlayer_config_built.default ?? {};
const { defaultLocale: defaultLocaleConfig, locales: availableLocales } = internationalization ?? {};
const defaultLocale = localeProp ?? require_client_useLocaleStorage.localeInStorage ?? defaultLocaleProp ?? defaultLocaleConfig;
const [currentLocale, setCurrentLocale] = (0, _intlayer_editor_react.useCrossFrameState)(_intlayer_editor_react.MessageKey.INTLAYER_CURRENT_LOCALE, defaultLocale);
const setLocaleBase = (newLocale) => {
if (currentLocale.toString() === newLocale.toString()) return;
if (!availableLocales?.map(String).includes(newLocale)) {
console.error(`Locale ${newLocale} is not available`);
return;
}
setCurrentLocale(newLocale);
require_client_useLocaleStorage.setLocaleInStorage(newLocale, isCookieEnabled);
};
const setLocale = setLocaleProp ?? setLocaleBase;
const resolvedLocale = (0, _intlayer_core.localeResolver)(localeProp ?? currentLocale);
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IntlayerClientContext.Provider, {
value: {
locale: resolvedLocale,
setLocale,
disableEditor
},
children
});
};
const IntlayerProvider = (props) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_editor_IntlayerEditorProvider.IntlayerEditorProvider, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IntlayerProviderContent, { ...props }) });
//#endregion
exports.IntlayerClientContext = IntlayerClientContext;
exports.IntlayerProvider = IntlayerProvider;
exports.IntlayerProviderContent = IntlayerProviderContent;
exports.useIntlayerContext = useIntlayerContext;
//# sourceMappingURL=IntlayerProvider.cjs.map