{"version":3,"file":"WithI18n.mjs","names":["React","Component","createContext","createHoc","useAsyncI18nMessages","createIntl","createIntlCache","Context","undefined","I18nProvider","Provider","I18nConsumer","Consumer","messagesCache","getText","dictionaries","locale","key","dictionary","WithI18n","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","_defineProperty","_assertThisInitialized","selfLocale","_this$props","props","contextLocale","context","_createClass","value","render","_ref","children","useI18n","_React$useContext","fallbackDictionary","lang","useContext","resolvedDictionary","intl","useMemo","messages","useCallback","messageId","variables","formatMessage","id"],"sources":["../../src/enhances/WithI18n.tsx"],"sourcesContent":["import React, { Component, createContext } from 'react';\nimport createHoc from '../createHoc';\nimport { useAsyncI18nMessages } from './i18nEnhance';\nimport { UnknownProperties } from '../core';\nimport { createIntl, createIntlCache } from '@formatjs/intl';\n\nexport type LocaleKeys = string;\nexport type DictionaryItem = { [key: string]: string };\nexport type Dictionary = { [locale: string]: DictionaryItem | (() => Promise<DictionaryItem>) };\nexport const Context = createContext<LocaleKeys | undefined>(undefined);\nconst { Provider: I18nProvider, Consumer: I18nConsumer } = Context;\nconst messagesCache = createIntlCache();\n\nfunction getText(dictionaries: Dictionary, locale: LocaleKeys) {\n  return function (key: keyof DictionaryItem) {\n    const dictionary = dictionaries[locale];\n    return dictionary ? (dictionary as any)[key] : (dictionaries as any)['en'][key];\n  };\n}\n\n/** @deprecated */\nexport interface IWithI18nInjectedProps extends WithI18nInjectedProps, UnknownProperties {}\nexport type WithI18nInjectedProps = {\n  getText: WithI18n['getText'];\n};\n\n/** @deprecated */\nexport interface IWithI18nProps extends WithI18nProps, UnknownProperties {}\nexport type WithI18nProps = WithI18nInjectedProps & {\n  locale?: LocaleKeys;\n\n  children?(props: IWithI18nInjectedProps): React.ReactNode;\n};\n\n/**\n * @deprecated use `useI18n` instead\n */\nclass WithI18n extends Component<IWithI18nProps> {\n  /* @ts-ignore */\n  context: LocaleKeys;\n\n  static contextType = Context;\n  static defaultProps = {\n    getText,\n  };\n\n  getText = (dictionary: Dictionary, selfLocale?: string): string => {\n    const { locale, getText } = this.props;\n    const contextLocale = this.context;\n    return getText(dictionary, selfLocale || locale || contextLocale);\n  };\n\n  render() {\n    const { children } = this.props as any;\n    return children({\n      getText: this.getText,\n    });\n  }\n}\n\nconst useI18n = (\n  dictionary: Dictionary,\n  locale: LocaleKeys = 'en',\n  fallbackDictionary?: Dictionary,\n) => {\n  const lang = React.useContext(Context) ?? locale;\n  const resolvedDictionary = useAsyncI18nMessages(dictionary, lang, fallbackDictionary);\n  const intl = React.useMemo(\n    () => createIntl({ locale: lang, messages: resolvedDictionary }, messagesCache),\n    [resolvedDictionary, lang],\n  );\n\n  return React.useCallback(\n    (messageId: string, variables?: { [key: string]: string | number | undefined }) => {\n      return intl.formatMessage({ id: messageId ?? '' }, variables);\n    },\n    [intl],\n  );\n};\n\nexport default createHoc(WithI18n);\nexport { useI18n, I18nProvider, I18nConsumer };\n"],"mappings":"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"}