{"version":3,"file":"tolgee-react-server.esm.min.mjs","sources":["../src/tagsTools.tsx","../src/TBase.tsx","../src/createServerInstance.tsx"],"sourcesContent":["import { TranslateParams } from '@tolgee/web';\nimport React from 'react';\n\nimport { ParamsTags } from './types';\n\nfunction unwrapSingleElementArray(value: any) {\n  if (Array.isArray(value) && value.length === 1) {\n    return value[0];\n  } else {\n    return value;\n  }\n}\n\nexport const wrapTagHandlers = (\n  params: TranslateParams<ParamsTags> | undefined\n) => {\n  if (!params) {\n    return undefined;\n  }\n\n  const result: any = {};\n\n  Object.entries(params || {}).forEach(([key, value]) => {\n    if (typeof value === 'function') {\n      result[key] = (chunk: any) => {\n        return value(addReactKeys(chunk));\n      };\n    } else if (React.isValidElement(value as any)) {\n      const el = value as React.ReactElement;\n      result[key] = (chunk: any) => {\n        return el.props.children === undefined && chunk?.length\n          ? React.cloneElement(el, {}, addReactKeys(chunk))\n          : React.cloneElement(el);\n      };\n    } else {\n      result[key] = value;\n    }\n  });\n\n  return result;\n};\n\nfunction unwrapFunctions(value: any): any {\n  if (typeof value === 'function') {\n    return value();\n  }\n  return value;\n}\n\nexport const addReactKeys = (\n  children: React.ReactNode | React.ReactNode[] | undefined\n) => {\n  const val = unwrapSingleElementArray(children);\n  if (Array.isArray(val)) {\n    return val.map((item, i) => (\n      <React.Fragment key={i}>{unwrapFunctions(item)}</React.Fragment>\n    ));\n  } else {\n    return unwrapFunctions(val);\n  }\n};\n","import React from 'react';\nimport { addReactKeys, wrapTagHandlers } from './tagsTools';\nimport type { PropsWithKeyName, TBaseInterface } from './types';\n\nexport const TBase: TBaseInterface = (props) => {\n  const key = (props as PropsWithKeyName).keyName || props.children;\n  if (key === undefined) {\n    // eslint-disable-next-line no-console\n    console.error('T component: keyName not defined');\n  }\n  const defaultValue =\n    props.defaultValue ||\n    ((props as PropsWithKeyName).keyName ? props.children : undefined);\n\n  const translation = addReactKeys(\n    props.t({\n      key: key!,\n      params: wrapTagHandlers(props.params),\n      defaultValue,\n      noWrap: props.noWrap,\n      ns: props.ns,\n      language: props.language,\n    })\n  );\n\n  return <>{translation}</>;\n};\n","// @ts-ignore\nimport { cache } from 'react';\nimport React from 'react';\nimport { TFnType } from '@tolgee/web';\nimport { TolgeeInstance } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\n\nexport type CreateServerInstanceOptions = {\n  createTolgee: (locale: string) => Promise<TolgeeInstance>;\n  getLocale: () => Promise<string>;\n};\n\nexport const createServerInstance = ({\n  createTolgee,\n  getLocale,\n}: CreateServerInstanceOptions) => {\n  const getTolgeeInstance: (locale: string) => Promise<TolgeeInstance> = cache(\n    async (locale: string) => {\n      const tolgee = await createTolgee(locale);\n      await tolgee.run();\n      return tolgee;\n    }\n  );\n\n  const getTolgee = async () => {\n    const locale = await getLocale();\n    const tolgee = await getTolgeeInstance(locale);\n    return tolgee;\n  };\n\n  const getTranslate = async () => {\n    const tolgee = await getTolgee();\n    return tolgee.t;\n  };\n\n  async function T(props: TProps) {\n    const t = await getTranslate();\n    return <TBase t={t as TFnType<ParamsTags>} {...props} />;\n  }\n\n  return {\n    getTolgee,\n    getTranslate,\n    T,\n  };\n};\n"],"names":["wrapTagHandlers","params","result","Object","entries","forEach","key","value","chunk","addReactKeys","React","isValidElement","el","undefined","props","children","length","cloneElement","unwrapFunctions","val","Array","isArray","map","item","i","createElement","Fragment","TBase","keyName","console","error","defaultValue","translation","t","noWrap","ns","language","createServerInstance","createTolgee","getLocale","getTolgeeInstance","cache","async","locale","tolgee","run","getTolgee","getTranslate","T","assign"],"mappings":"0DAaO,MAAMA,EACXC,IAEA,IAAKA,EACH,OAGF,MAAMC,EAAc,CAAA,EAmBpB,OAjBAC,OAAOC,QAAQH,GAAU,CAAE,GAAEI,SAAQ,EAAEC,EAAKC,MAC1C,GAAqB,mBAAVA,EACTL,EAAOI,GAAQE,GACND,EAAME,EAAaD,SAEvB,GAAIE,EAAMC,eAAeJ,GAAe,CAC7C,MAAMK,EAAKL,EACXL,EAAOI,GAAQE,QACgBK,IAAtBD,EAAGE,MAAMC,WAA0BP,aAAK,EAALA,EAAOQ,QAC7CN,EAAMO,aAAaL,EAAI,CAAE,EAAEH,EAAaD,IACxCE,EAAMO,aAAaL,EAE1B,MACCV,EAAOI,GAAOC,CACf,IAGIL,CAAM,EAGf,SAASgB,EAAgBX,GACvB,MAAqB,mBAAVA,EACFA,IAEFA,CACT,CAEO,MAAME,EACXM,IAEA,MAAMI,GA/C0BZ,EA+CKQ,EA9CjCK,MAAMC,QAAQd,IAA2B,IAAjBA,EAAMS,OACzBT,EAAM,GAENA,GAJX,IAAkCA,EAgDhC,OAAIa,MAAMC,QAAQF,GACTA,EAAIG,KAAI,CAACC,EAAMC,IACpBd,EAACe,cAAAf,EAAMgB,SAAS,CAAApB,IAAKkB,GAAIN,EAAgBK,MAGpCL,EAAgBC,EACxB,ECvDUQ,EAAyBb,IACpC,MAAMR,EAAOQ,EAA2Bc,SAAWd,EAAMC,cAC7CF,IAARP,GAEFuB,QAAQC,MAAM,oCAEhB,MAAMC,EACJjB,EAAMiB,eACJjB,EAA2Bc,QAAUd,EAAMC,cAAWF,GAEpDmB,EAAcvB,EAClBK,EAAMmB,EAAE,CACN3B,IAAKA,EACLL,OAAQD,EAAgBc,EAAMb,QAC9B8B,eACAG,OAAQpB,EAAMoB,OACdC,GAAIrB,EAAMqB,GACVC,SAAUtB,EAAMsB,YAIpB,OAAO1B,EAAAe,cAAAf,EAAAgB,SAAA,KAAGM,EAAe,ECXdK,EAAuB,EAClCC,eACAC,gBAEA,MAAMC,EAAiEC,GACrEC,MAAOC,IACL,MAAMC,QAAeN,EAAaK,GAElC,aADMC,EAAOC,MACND,CAAM,IAIXE,EAAYJ,UAChB,MAAMC,QAAeJ,IAErB,aADqBC,EAAkBG,EAC1B,EAGTI,EAAeL,gBACEI,KACPb,EAQhB,MAAO,CACLa,YACAC,eACAC,EARFN,eAAiB5B,GACf,MAAMmB,QAAUc,IAChB,OAAOrC,EAAAe,cAACE,EAAMxB,OAAA8C,OAAA,CAAAhB,EAAGA,GAA8BnB,GAChD,EAMA"}