{"version":3,"file":"i18nEnhance.mjs","names":["React","useI18n","useAsyncI18nMessages","primaryContainer","locale","fallbackContainer","_store$locale","container","useMemo","_loop","_locale","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_yield$Promise$all","_yield$Promise$all2","primary","fallback","wrap","_callee$","_context","prev","next","Promise","all","sent","_slicedToArray","abrupt","_objectSpread","stop","_primaryContainer$_lo","_fallbackContainer$_l","initStore","store","_typeof","_React$useState","useState","_React$useState2","setStore","lastLoadedLocaleRef","useRef","current","fallbackMessages","Object","values","loadingLocaleRef","useEffect","asyncMessages","then","module","messages","_defineProperty","console","error","props","i18n","getI18nText"],"sources":["../../src/enhances/i18nEnhance.tsx"],"sourcesContent":["import React from 'react';\nimport { LocaleKeys, useI18n } from './WithI18n';\nimport { UnknownProperties } from '../core';\n\n/** @deprecated */\nexport interface IWithI18nEnhanceProps extends WithI18nEnhanceProps, UnknownProperties {}\nexport type WithI18nEnhanceProps = {\n  /* Function for getting the required field from the translation dictionary */\n  getI18nText?: (key?: string, variables?: {}) => any;\n  /* Object with translations */\n  i18n?: {\n    [locale: string]: {\n      [key: string]: string;\n    };\n  };\n  /* Locale for translations */\n  locale?: LocaleKeys;\n};\n\ntype Messages = { [messageId: string]: string };\ntype MessagesContainer = { [locale: string]: Messages | (() => Promise<Messages>) };\ntype MessagesStore = { [locale: string]: Messages };\nexport const useAsyncI18nMessages = (\n  primaryContainer: MessagesContainer,\n  locale: string,\n  fallbackContainer?: MessagesContainer,\n) => {\n  const container = React.useMemo(() => {\n    if (!fallbackContainer) return primaryContainer;\n    if (!primaryContainer) return fallbackContainer;\n    if (primaryContainer === fallbackContainer) return primaryContainer;\n    const container: MessagesContainer = {};\n    for (const locale in primaryContainer) {\n      if (\n        typeof primaryContainer[locale] === 'function' ||\n        typeof fallbackContainer[locale] === 'function'\n      ) {\n        container[locale] = async () => {\n          const [primary, fallback] = await Promise.all([\n            primaryContainer[locale],\n            fallbackContainer[locale],\n          ]);\n          return { ...primary, ...fallback };\n        };\n      } else {\n        container[locale] = {\n          ...(primaryContainer[locale] ?? {}),\n          ...(fallbackContainer[locale] ?? {}),\n        };\n      }\n    }\n    return container;\n  }, [primaryContainer, fallbackContainer]);\n  const initStore = React.useMemo(() => {\n    const store: MessagesStore = {};\n    for (const locale in container) {\n      if (typeof container[locale] === 'object') {\n        store[locale] = container[locale] as Messages;\n      }\n    }\n    return store;\n  }, [container]);\n  const [store, setStore] = React.useState(initStore);\n  const lastLoadedLocaleRef = React.useRef<string | null>(null);\n  if (store[locale]) lastLoadedLocaleRef.current = locale;\n  const fallbackMessages = React.useMemo(() => Object.values(store)[0], [store]);\n\n  const loadingLocaleRef = React.useRef<string | null>(null);\n  React.useEffect(() => {\n    loadingLocaleRef.current = locale;\n    const asyncMessages = container[locale];\n    if (typeof asyncMessages === 'function') {\n      asyncMessages()\n        .then((module) => {\n          if (loadingLocaleRef.current !== locale) return;\n          let messages = module;\n          if ('default' in module && typeof module.default === 'object') messages = module.default;\n          setStore((store) => ({\n            ...store,\n            [locale]: messages,\n          }));\n        })\n\n        .catch(console.error);\n    }\n  }, [container, locale]);\n\n  return store[locale] ?? fallbackMessages;\n};\nexport default (container?: MessagesContainer) => {\n  return (props: any): { getI18nText: ReturnType<typeof useI18n> } => {\n    const { i18n, locale } = props;\n    const getI18nText = useI18n(i18n, locale, container);\n\n    return { ...props, getI18nText };\n  };\n};\n"],"mappings":"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"}