{"ast":null,"code":"import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace } from './utils.js';\nconst usePrevious = (value, ignore) => {\n  const ref = useRef();\n  useEffect(() => {\n    ref.current = ignore ? ref.current : value;\n  }, [value, ignore]);\n  return ref.current;\n};\nfunction alwaysNewT(i18n, language, namespace, keyPrefix) {\n  return i18n.getFixedT(language, namespace, keyPrefix);\n}\nfunction useMemoizedT(i18n, language, namespace, keyPrefix) {\n  return useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\n}\nexport function useTranslation(ns) {\n  let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    i18n: i18nFromProps\n  } = props;\n  const {\n    i18n: i18nFromContext,\n    defaultNS: defaultNSFromContext\n  } = useContext(I18nContext) || {};\n  const i18n = i18nFromProps || i18nFromContext || getI18n();\n  if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n  if (!i18n) {\n    warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n    const notReadyT = (k, optsOrDefaultValue) => {\n      if (typeof optsOrDefaultValue === 'string') return optsOrDefaultValue;\n      if (optsOrDefaultValue && typeof optsOrDefaultValue === 'object' && typeof optsOrDefaultValue.defaultValue === 'string') return optsOrDefaultValue.defaultValue;\n      return Array.isArray(k) ? k[k.length - 1] : k;\n    };\n    const retNotReady = [notReadyT, {}, false];\n    retNotReady.t = notReadyT;\n    retNotReady.i18n = {};\n    retNotReady.ready = false;\n    return retNotReady;\n  }\n  if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n  const i18nOptions = {\n    ...getDefaults(),\n    ...i18n.options.react,\n    ...props\n  };\n  const {\n    useSuspense,\n    keyPrefix\n  } = i18nOptions;\n  let namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n  namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n  if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n  const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n  const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  const getT = () => memoGetT;\n  const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  const [t, setT] = useState(getT);\n  let joinedNS = namespaces.join();\n  if (props.lng) joinedNS = \"\".concat(props.lng).concat(joinedNS);\n  const previousJoinedNS = usePrevious(joinedNS);\n  const isMounted = useRef(true);\n  useEffect(() => {\n    const {\n      bindI18n,\n      bindI18nStore\n    } = i18nOptions;\n    isMounted.current = true;\n    if (!ready && !useSuspense) {\n      if (props.lng) {\n        loadLanguages(i18n, props.lng, namespaces, () => {\n          if (isMounted.current) setT(getNewT);\n        });\n      } else {\n        loadNamespaces(i18n, namespaces, () => {\n          if (isMounted.current) setT(getNewT);\n        });\n      }\n    }\n    if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n      setT(getNewT);\n    }\n    function boundReset() {\n      if (isMounted.current) setT(getNewT);\n    }\n    if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n    if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n    return () => {\n      isMounted.current = false;\n      if (bindI18n && i18n) bindI18n.split(' ').forEach(e => i18n.off(e, boundReset));\n      if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n    };\n  }, [i18n, joinedNS]);\n  const isInitial = useRef(true);\n  useEffect(() => {\n    if (isMounted.current && !isInitial.current) {\n      setT(getT);\n    }\n    isInitial.current = false;\n  }, [i18n, keyPrefix]);\n  const ret = [t, i18n, ready];\n  ret.t = t;\n  ret.i18n = i18n;\n  ret.ready = ready;\n  if (ready) return ret;\n  if (!ready && !useSuspense) return ret;\n  throw new Promise(resolve => {\n    if (props.lng) {\n      loadLanguages(i18n, props.lng, namespaces, () => resolve());\n    } else {\n      loadNamespaces(i18n, namespaces, () => resolve());\n    }\n  });\n}","map":{"version":3,"names":["useState","useEffect","useContext","useRef","useCallback","getI18n","getDefaults","ReportNamespaces","I18nContext","warnOnce","loadNamespaces","loadLanguages","hasLoadedNamespace","usePrevious","value","ignore","ref","current","alwaysNewT","i18n","language","namespace","keyPrefix","getFixedT","useMemoizedT","useTranslation","ns","props","arguments","length","undefined","i18nFromProps","i18nFromContext","defaultNS","defaultNSFromContext","reportNamespaces","notReadyT","k","optsOrDefaultValue","defaultValue","Array","isArray","retNotReady","t","ready","options","react","wait","i18nOptions","useSuspense","namespaces","addUsedNamespaces","isInitialized","initializedStoreOnce","every","n","memoGetT","lng","nsMode","getT","getNewT","setT","joinedNS","join","concat","previousJoinedNS","isMounted","bindI18n","bindI18nStore","boundReset","on","store","split","forEach","e","off","isInitial","ret","Promise","resolve"],"sources":["/opt/bitnami/minigames/frasle/node_modules/react-i18next/dist/es/useTranslation.js"],"sourcesContent":["import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace } from './utils.js';\nconst usePrevious = (value, ignore) => {\n  const ref = useRef();\n  useEffect(() => {\n    ref.current = ignore ? ref.current : value;\n  }, [value, ignore]);\n  return ref.current;\n};\nfunction alwaysNewT(i18n, language, namespace, keyPrefix) {\n  return i18n.getFixedT(language, namespace, keyPrefix);\n}\nfunction useMemoizedT(i18n, language, namespace, keyPrefix) {\n  return useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\n}\nexport function useTranslation(ns) {\n  let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    i18n: i18nFromProps\n  } = props;\n  const {\n    i18n: i18nFromContext,\n    defaultNS: defaultNSFromContext\n  } = useContext(I18nContext) || {};\n  const i18n = i18nFromProps || i18nFromContext || getI18n();\n  if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n  if (!i18n) {\n    warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n    const notReadyT = (k, optsOrDefaultValue) => {\n      if (typeof optsOrDefaultValue === 'string') return optsOrDefaultValue;\n      if (optsOrDefaultValue && typeof optsOrDefaultValue === 'object' && typeof optsOrDefaultValue.defaultValue === 'string') return optsOrDefaultValue.defaultValue;\n      return Array.isArray(k) ? k[k.length - 1] : k;\n    };\n    const retNotReady = [notReadyT, {}, false];\n    retNotReady.t = notReadyT;\n    retNotReady.i18n = {};\n    retNotReady.ready = false;\n    return retNotReady;\n  }\n  if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n  const i18nOptions = {\n    ...getDefaults(),\n    ...i18n.options.react,\n    ...props\n  };\n  const {\n    useSuspense,\n    keyPrefix\n  } = i18nOptions;\n  let namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n  namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n  if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n  const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n  const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  const getT = () => memoGetT;\n  const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n  const [t, setT] = useState(getT);\n  let joinedNS = namespaces.join();\n  if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n  const previousJoinedNS = usePrevious(joinedNS);\n  const isMounted = useRef(true);\n  useEffect(() => {\n    const {\n      bindI18n,\n      bindI18nStore\n    } = i18nOptions;\n    isMounted.current = true;\n    if (!ready && !useSuspense) {\n      if (props.lng) {\n        loadLanguages(i18n, props.lng, namespaces, () => {\n          if (isMounted.current) setT(getNewT);\n        });\n      } else {\n        loadNamespaces(i18n, namespaces, () => {\n          if (isMounted.current) setT(getNewT);\n        });\n      }\n    }\n    if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n      setT(getNewT);\n    }\n    function boundReset() {\n      if (isMounted.current) setT(getNewT);\n    }\n    if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n    if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n    return () => {\n      isMounted.current = false;\n      if (bindI18n && i18n) bindI18n.split(' ').forEach(e => i18n.off(e, boundReset));\n      if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n    };\n  }, [i18n, joinedNS]);\n  const isInitial = useRef(true);\n  useEffect(() => {\n    if (isMounted.current && !isInitial.current) {\n      setT(getT);\n    }\n    isInitial.current = false;\n  }, [i18n, keyPrefix]);\n  const ret = [t, i18n, ready];\n  ret.t = t;\n  ret.i18n = i18n;\n  ret.ready = ready;\n  if (ready) return ret;\n  if (!ready && !useSuspense) return ret;\n  throw new Promise(resolve => {\n    if (props.lng) {\n      loadLanguages(i18n, props.lng, namespaces, () => resolve());\n    } else {\n      loadNamespaces(i18n, namespaces, () => resolve());\n    }\n  });\n}"],"mappings":"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"},"metadata":{},"sourceType":"module","externalDependencies":[]}