UNPKG

react-intlayer

Version:

Easily internationalize i18n your React applications with type-safe multilingual content management.

62 lines (59 loc) 2.98 kB
'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