{"version":3,"file":"i18nEnhance.mjs","names":["React","useI18n","useAsyncI18nMessages","primaryContainer","locale","fallbackContainer","container","useMemo","primary","fallback","Promise","all","initStore","store","setStore","useState","lastLoadedLocaleRef","useRef","current","fallbackMessages","Object","values","loadingLocaleRef","useEffect","asyncMessages","then","module","messages","default","catch","err","console","error","props","i18n","getI18nText"],"sources":["../../../src/utils/enhances/i18nEnhance.tsx"],"sourcesContent":["import React from 'react';\n\nimport { type LocaleKeys, useI18n } from './WithI18n';\n\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((err) => {\n          // eslint-disable-next-line no-console\n          console.error(err);\n        });\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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","ignoreList":[]}