@tolgee/react 5.33.1 → 5.33.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/tagsTools.d.ts +1 -1
  2. package/dist/tolgee-react-server.cjs.js +11 -2
  3. package/dist/tolgee-react-server.cjs.js.map +1 -1
  4. package/dist/tolgee-react-server.cjs.min.js +1 -1
  5. package/dist/tolgee-react-server.cjs.min.js.map +1 -1
  6. package/dist/tolgee-react-server.esm.js +11 -2
  7. package/dist/tolgee-react-server.esm.js.map +1 -1
  8. package/dist/tolgee-react-server.esm.min.js +1 -1
  9. package/dist/tolgee-react-server.esm.min.js.map +1 -1
  10. package/dist/tolgee-react-server.esm.min.mjs +1 -1
  11. package/dist/tolgee-react-server.esm.min.mjs.map +1 -1
  12. package/dist/tolgee-react-server.esm.mjs +11 -2
  13. package/dist/tolgee-react-server.esm.mjs.map +1 -1
  14. package/dist/tolgee-react-server.umd.js +11 -2
  15. package/dist/tolgee-react-server.umd.js.map +1 -1
  16. package/dist/tolgee-react-server.umd.min.js +1 -1
  17. package/dist/tolgee-react-server.umd.min.js.map +1 -1
  18. package/dist/tolgee-react.cjs.js +11 -2
  19. package/dist/tolgee-react.cjs.js.map +1 -1
  20. package/dist/tolgee-react.cjs.min.js +1 -1
  21. package/dist/tolgee-react.cjs.min.js.map +1 -1
  22. package/dist/tolgee-react.esm.js +11 -2
  23. package/dist/tolgee-react.esm.js.map +1 -1
  24. package/dist/tolgee-react.esm.min.js +1 -1
  25. package/dist/tolgee-react.esm.min.js.map +1 -1
  26. package/dist/tolgee-react.esm.min.mjs +1 -1
  27. package/dist/tolgee-react.esm.min.mjs.map +1 -1
  28. package/dist/tolgee-react.esm.mjs +11 -2
  29. package/dist/tolgee-react.esm.mjs.map +1 -1
  30. package/dist/tolgee-react.umd.js +11 -2
  31. package/dist/tolgee-react.umd.js.map +1 -1
  32. package/dist/tolgee-react.umd.min.js +1 -1
  33. package/dist/tolgee-react.umd.min.js.map +1 -1
  34. package/lib/tagsTools.d.ts +1 -1
  35. package/package.json +6 -6
  36. package/src/TolgeeProvider.spec.tsx +2 -2
  37. package/src/__integration/T.spec.tsx +1 -2
  38. package/src/__integration/TolgeeProvider.spec.tsx +1 -2
  39. package/src/__integration/namespaces.spec.tsx +1 -2
  40. package/src/__integration/useTolgee.spec.tsx +1 -2
  41. package/src/__integration/useTranslation.spec.tsx +1 -2
  42. package/src/tagsTools.tsx +13 -2
@@ -2,4 +2,4 @@ import { TranslateParams } from '@tolgee/web';
2
2
  import React from 'react';
3
3
  import { ParamsTags } from './types';
4
4
  export declare const wrapTagHandlers: (params: TranslateParams<ParamsTags> | undefined) => any;
5
- export declare const addReactKeys: (val: React.ReactNode | React.ReactNode[] | undefined) => React.ReactNode;
5
+ export declare const addReactKeys: (children: React.ReactNode | React.ReactNode[] | undefined) => any;
@@ -9,6 +9,14 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
9
9
 
10
10
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
11
11
 
12
+ function unwrapSingleElementArray(value) {
13
+ if (Array.isArray(value) && value.length === 1) {
14
+ return value[0];
15
+ }
16
+ else {
17
+ return value;
18
+ }
19
+ }
12
20
  const wrapTagHandlers = (params) => {
13
21
  if (!params) {
14
22
  return undefined;
@@ -34,9 +42,10 @@ const wrapTagHandlers = (params) => {
34
42
  });
35
43
  return result;
36
44
  };
37
- const addReactKeys = (val) => {
45
+ const addReactKeys = (children) => {
46
+ const val = unwrapSingleElementArray(children);
38
47
  if (Array.isArray(val)) {
39
- return React__default["default"].Children.toArray(val);
48
+ return val.map((item, i) => (React__default["default"].createElement(React__default["default"].Fragment, { key: i }, item)));
40
49
  }
41
50
  else {
42
51
  return val;
@@ -1 +1 @@
1
- {"version":3,"file":"tolgee-react-server.cjs.js","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\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\nexport const addReactKeys = (\n val: React.ReactNode | React.ReactNode[] | undefined\n) => {\n if (Array.isArray(val)) {\n return React.Children.toArray(val);\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":["React","cache"],"mappings":";;;;;;;;;;;AAKO,MAAM,eAAe,GAAG,CAC7B,MAA+C,KAC7C;IACF,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,SAAS,CAAC;AAClB,KAAA;IAED,MAAM,MAAM,GAAQ,EAAE,CAAC;AAEvB,IAAA,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACpD,QAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AAC/B,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAU,KAAI;AAC3B,gBAAA,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,aAAC,CAAC;AACH,SAAA;AAAM,aAAA,IAAIA,yBAAK,CAAC,cAAc,CAAC,KAAY,CAAC,EAAE;YAC7C,MAAM,EAAE,GAAG,KAA2B,CAAC;AACvC,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAU,KAAI;AAC3B,gBAAA,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,KAAI,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,MAAM,CAAA;AACrD,sBAAEA,yBAAK,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;AACjD,sBAAEA,yBAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAC7B,aAAC,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACrB,SAAA;AACH,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEK,MAAM,YAAY,GAAG,CAC1B,GAAoD,KAClD;AACF,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtB,OAAOA,yBAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACpC,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,GAAG,CAAC;AACZ,KAAA;AACH,CAAC;;ACtCY,MAAA,KAAK,GAAmB,CAAC,KAAK,KAAI;IAC7C,MAAM,GAAG,GAAI,KAA0B,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC;IAClE,IAAI,GAAG,KAAK,SAAS,EAAE;;AAErB,QAAA,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACnD,KAAA;AACD,IAAA,MAAM,YAAY,GAChB,KAAK,CAAC,YAAY;AAClB,SAAE,KAA0B,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;AAErE,IAAA,MAAM,WAAW,GAAG,YAAY,CAC9B,KAAK,CAAC,CAAC,CAAC;AACN,QAAA,GAAG,EAAE,GAAI;AACT,QAAA,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;QACrC,YAAY;QACZ,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;AACzB,KAAA,CAAC,CACH,CAAC;IAEF,OAAOA,yBAAA,CAAA,aAAA,CAAAA,yBAAA,CAAA,QAAA,EAAA,IAAA,EAAG,WAAW,CAAI,CAAC;AAC5B;;AC1BA;AAca,MAAA,oBAAoB,GAAG,CAAC,EACnC,YAAY,EACZ,SAAS,GACmB,KAAI;IAChC,MAAM,iBAAiB,GAAGC,WAAK,CAAC,OAAO,MAAc,KAAI;AACvD,QAAA,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;AAC1C,QAAA,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;AACnB,QAAA,OAAO,MAAM,CAAC;AAChB,KAAC,CAAgD,CAAC;AAElD,IAAA,MAAM,SAAS,GAAG,YAAW;AAC3B,QAAA,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;AACjC,QAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC/C,QAAA,OAAO,MAAM,CAAC;AAChB,KAAC,CAAC;AAEF,IAAA,MAAM,YAAY,GAAG,YAAW;AAC9B,QAAA,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,CAAC,CAAC;AAClB,KAAC,CAAC;IAEF,eAAe,CAAC,CAAC,KAAa,EAAA;AAC5B,QAAA,MAAM,CAAC,GAAG,MAAM,YAAY,EAAE,CAAC;QAC/B,OAAOD,yBAAA,CAAA,aAAA,CAAC,KAAK,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,CAAC,EAAE,CAAwB,EAAA,EAAM,KAAK,CAAA,CAAI,CAAC;KAC1D;IAED,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;AAC3D;;;;;;;;;;;"}
1
+ {"version":3,"file":"tolgee-react-server.cjs.js","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\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}>{item}</React.Fragment>\n ));\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":["React","cache"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@tolgee/web");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=n(e);const r=e=>{if(!e)return;const t={};return Object.entries(e||{}).forEach((([e,n])=>{if("function"==typeof n)t[e]=e=>n(o(e));else if(a.default.isValidElement(n)){const r=n;t[e]=e=>void 0===r.props.children&&(null==e?void 0:e.length)?a.default.cloneElement(r,{},o(e)):a.default.cloneElement(r)}else t[e]=n})),t},o=e=>Array.isArray(e)?a.default.Children.toArray(e):e,l=e=>{const t=e.keyName||e.children;void 0===t&&console.error("T component: keyName not defined");const n=e.defaultValue||(e.keyName?e.children:void 0),l=o(e.t({key:t,params:r(e.params),defaultValue:n,noWrap:e.noWrap,ns:e.ns,language:e.language}));return a.default.createElement(a.default.Fragment,null,l)};exports.TBase=l,exports.createServerInstance=({createTolgee:t,getLocale:n})=>{const r=e.cache((async e=>{const n=await t(e);return await n.run(),n})),o=async()=>{const e=await n();return await r(e)},c=async()=>(await o()).t;return{getTolgeeInstance:r,getTolgee:o,getTranslate:c,T:async function(e){const t=await c();return a.default.createElement(l,Object.assign({t:t},e))}}},Object.keys(t).forEach((function(e){"default"===e||exports.hasOwnProperty(e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return t[e]}})}));
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@tolgee/web");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=n(e);const r=e=>{if(!e)return;const t={};return Object.entries(e||{}).forEach((([e,n])=>{if("function"==typeof n)t[e]=e=>n(o(e));else if(a.default.isValidElement(n)){const r=n;t[e]=e=>void 0===r.props.children&&(null==e?void 0:e.length)?a.default.cloneElement(r,{},o(e)):a.default.cloneElement(r)}else t[e]=n})),t},o=e=>{const t=(n=e,Array.isArray(n)&&1===n.length?n[0]:n);var n;return Array.isArray(t)?t.map(((e,t)=>a.default.createElement(a.default.Fragment,{key:t},e))):t},l=e=>{const t=e.keyName||e.children;void 0===t&&console.error("T component: keyName not defined");const n=e.defaultValue||(e.keyName?e.children:void 0),l=o(e.t({key:t,params:r(e.params),defaultValue:n,noWrap:e.noWrap,ns:e.ns,language:e.language}));return a.default.createElement(a.default.Fragment,null,l)};exports.TBase=l,exports.createServerInstance=({createTolgee:t,getLocale:n})=>{const r=e.cache((async e=>{const n=await t(e);return await n.run(),n})),o=async()=>{const e=await n();return await r(e)},c=async()=>(await o()).t;return{getTolgeeInstance:r,getTolgee:o,getTranslate:c,T:async function(e){const t=await c();return a.default.createElement(l,Object.assign({t:t},e))}}},Object.keys(t).forEach((function(e){"default"===e||exports.hasOwnProperty(e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return t[e]}})}));
2
2
  //# sourceMappingURL=tolgee-react-server.cjs.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tolgee-react-server.cjs.min.js","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\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\nexport const addReactKeys = (\n val: React.ReactNode | React.ReactNode[] | undefined\n) => {\n if (Array.isArray(val)) {\n return React.Children.toArray(val);\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":["wrapTagHandlers","params","result","Object","entries","forEach","key","value","chunk","addReactKeys","React","isValidElement","el","undefined","props","children","length","cloneElement","val","Array","isArray","Children","toArray","TBase","keyName","console","error","defaultValue","translation","t","noWrap","ns","language","createElement","Fragment","createTolgee","getLocale","getTolgeeInstance","cache","async","locale","tolgee","run","getTolgee","getTranslate","T","assign"],"mappings":"uMAKO,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,EAAK,QAACC,eAAeJ,GAAe,CAC7C,MAAMK,EAAKL,EACXL,EAAOI,GAAQE,QACgBK,IAAtBD,EAAGE,MAAMC,WAA0BP,aAAK,EAALA,EAAOQ,QAC7CN,EAAK,QAACO,aAAaL,EAAI,CAAE,EAAEH,EAAaD,IACxCE,UAAMO,aAAaL,EAE1B,MACCV,EAAOI,GAAOC,CACf,IAGIL,CAAM,EAGFO,EACXS,GAEIC,MAAMC,QAAQF,GACTR,UAAMW,SAASC,QAAQJ,GAEvBA,ECpCEK,EAAyBT,IACpC,MAAMR,EAAOQ,EAA2BU,SAAWV,EAAMC,cAC7CF,IAARP,GAEFmB,QAAQC,MAAM,oCAEhB,MAAMC,EACJb,EAAMa,eACJb,EAA2BU,QAAUV,EAAMC,cAAWF,GAEpDe,EAAcnB,EAClBK,EAAMe,EAAE,CACNvB,IAAKA,EACLL,OAAQD,EAAgBc,EAAMb,QAC9B0B,eACAG,OAAQhB,EAAMgB,OACdC,GAAIjB,EAAMiB,GACVC,SAAUlB,EAAMkB,YAIpB,OAAOtB,EAAAA,QAAAuB,cAAAvB,EAAAA,QAAAwB,SAAA,KAAGN,EAAe,+CCXS,EAClCO,eACAC,gBAEA,MAAMC,EAAoBC,SAAMC,MAAOC,IACrC,MAAMC,QAAeN,EAAaK,GAElC,aADMC,EAAOC,MACND,CAAM,IAGTE,EAAYJ,UAChB,MAAMC,QAAeJ,IAErB,aADqBC,EAAkBG,EAC1B,EAGTI,EAAeL,gBACEI,KACPd,EAQhB,MAAO,CAAEQ,oBAAmBM,YAAWC,eAAcC,EALrDN,eAAiBzB,GACf,MAAMe,QAAUe,IAChB,OAAOlC,UAAAuB,cAACV,EAAMpB,OAAA2C,OAAA,CAAAjB,EAAGA,GAA8Bf,GAChD,EAEuD"}
1
+ {"version":3,"file":"tolgee-react-server.cjs.min.js","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\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}>{item}</React.Fragment>\n ));\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":["wrapTagHandlers","params","result","Object","entries","forEach","key","value","chunk","addReactKeys","React","isValidElement","el","undefined","props","children","length","cloneElement","val","Array","isArray","map","item","i","Fragment","TBase","keyName","console","error","defaultValue","translation","t","noWrap","ns","language","createElement","createTolgee","getLocale","getTolgeeInstance","cache","async","locale","tolgee","run","getTolgee","getTranslate","T","assign"],"mappings":"uMAaO,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,EAAK,QAACC,eAAeJ,GAAe,CAC7C,MAAMK,EAAKL,EACXL,EAAOI,GAAQE,QACgBK,IAAtBD,EAAGE,MAAMC,WAA0BP,aAAK,EAALA,EAAOQ,QAC7CN,EAAK,QAACO,aAAaL,EAAI,CAAE,EAAEH,EAAaD,IACxCE,UAAMO,aAAaL,EAE1B,MACCV,EAAOI,GAAOC,CACf,IAGIL,CAAM,EAGFO,EACXM,IAEA,MAAMG,GAxC0BX,EAwCKQ,EAvCjCI,MAAMC,QAAQb,IAA2B,IAAjBA,EAAMS,OACzBT,EAAM,GAENA,GAJX,IAAkCA,EAyChC,OAAIY,MAAMC,QAAQF,GACTA,EAAIG,KAAI,CAACC,EAAMC,IACpBb,wBAACA,EAAK,QAACc,SAAQ,CAAClB,IAAKiB,GAAID,KAGpBJ,CACR,EChDUO,EAAyBX,IACpC,MAAMR,EAAOQ,EAA2BY,SAAWZ,EAAMC,cAC7CF,IAARP,GAEFqB,QAAQC,MAAM,oCAEhB,MAAMC,EACJf,EAAMe,eACJf,EAA2BY,QAAUZ,EAAMC,cAAWF,GAEpDiB,EAAcrB,EAClBK,EAAMiB,EAAE,CACNzB,IAAKA,EACLL,OAAQD,EAAgBc,EAAMb,QAC9B4B,eACAG,OAAQlB,EAAMkB,OACdC,GAAInB,EAAMmB,GACVC,SAAUpB,EAAMoB,YAIpB,OAAOxB,EAAAA,QAAAyB,cAAAzB,EAAAA,QAAAc,SAAA,KAAGM,EAAe,+CCXS,EAClCM,eACAC,gBAEA,MAAMC,EAAoBC,SAAMC,MAAOC,IACrC,MAAMC,QAAeN,EAAaK,GAElC,aADMC,EAAOC,MACND,CAAM,IAGTE,EAAYJ,UAChB,MAAMC,QAAeJ,IAErB,aADqBC,EAAkBG,EAC1B,EAGTI,EAAeL,gBACEI,KACPb,EAQhB,MAAO,CAAEO,oBAAmBM,YAAWC,eAAcC,EALrDN,eAAiB1B,GACf,MAAMiB,QAAUc,IAChB,OAAOnC,UAAAyB,cAACV,EAAMtB,OAAA4C,OAAA,CAAAhB,EAAGA,GAA8BjB,GAChD,EAEuD"}
@@ -1,6 +1,14 @@
1
1
  import React, { cache } from 'react';
2
2
  export * from '@tolgee/web';
3
3
 
4
+ function unwrapSingleElementArray(value) {
5
+ if (Array.isArray(value) && value.length === 1) {
6
+ return value[0];
7
+ }
8
+ else {
9
+ return value;
10
+ }
11
+ }
4
12
  const wrapTagHandlers = (params) => {
5
13
  if (!params) {
6
14
  return undefined;
@@ -26,9 +34,10 @@ const wrapTagHandlers = (params) => {
26
34
  });
27
35
  return result;
28
36
  };
29
- const addReactKeys = (val) => {
37
+ const addReactKeys = (children) => {
38
+ const val = unwrapSingleElementArray(children);
30
39
  if (Array.isArray(val)) {
31
- return React.Children.toArray(val);
40
+ return val.map((item, i) => (React.createElement(React.Fragment, { key: i }, item)));
32
41
  }
33
42
  else {
34
43
  return val;
@@ -1 +1 @@
1
- {"version":3,"file":"tolgee-react-server.esm.js","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\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\nexport const addReactKeys = (\n val: React.ReactNode | React.ReactNode[] | undefined\n) => {\n if (Array.isArray(val)) {\n return React.Children.toArray(val);\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tolgee-react-server.esm.js","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\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}>{item}</React.Fragment>\n ));\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import e,{cache as t}from"react";export*from"@tolgee/web";const n=t=>{if(!t)return;const n={};return Object.entries(t||{}).forEach((([t,r])=>{if("function"==typeof r)n[t]=e=>r(a(e));else if(e.isValidElement(r)){const o=r;n[t]=t=>void 0===o.props.children&&(null==t?void 0:t.length)?e.cloneElement(o,{},a(t)):e.cloneElement(o)}else n[t]=r})),n},a=t=>Array.isArray(t)?e.Children.toArray(t):t,r=t=>{const r=t.keyName||t.children;void 0===r&&console.error("T component: keyName not defined");const o=t.defaultValue||(t.keyName?t.children:void 0),l=a(t.t({key:r,params:n(t.params),defaultValue:o,noWrap:t.noWrap,ns:t.ns,language:t.language}));return e.createElement(e.Fragment,null,l)},o=({createTolgee:n,getLocale:a})=>{const o=t((async e=>{const t=await n(e);return await t.run(),t})),l=async()=>{const e=await a();return await o(e)},c=async()=>(await l()).t;return{getTolgeeInstance:o,getTolgee:l,getTranslate:c,T:async function(t){const n=await c();return e.createElement(r,Object.assign({t:n},t))}}};export{r as TBase,o as createServerInstance};
1
+ import e,{cache as t}from"react";export*from"@tolgee/web";const n=t=>{if(!t)return;const n={};return Object.entries(t||{}).forEach((([t,r])=>{if("function"==typeof r)n[t]=e=>r(a(e));else if(e.isValidElement(r)){const o=r;n[t]=t=>void 0===o.props.children&&(null==t?void 0:t.length)?e.cloneElement(o,{},a(t)):e.cloneElement(o)}else n[t]=r})),n},a=t=>{const n=(a=t,Array.isArray(a)&&1===a.length?a[0]:a);var a;return Array.isArray(n)?n.map(((t,n)=>e.createElement(e.Fragment,{key:n},t))):n},r=t=>{const r=t.keyName||t.children;void 0===r&&console.error("T component: keyName not defined");const o=t.defaultValue||(t.keyName?t.children:void 0),c=a(t.t({key:r,params:n(t.params),defaultValue:o,noWrap:t.noWrap,ns:t.ns,language:t.language}));return e.createElement(e.Fragment,null,c)},o=({createTolgee:n,getLocale:a})=>{const o=t((async e=>{const t=await n(e);return await t.run(),t})),c=async()=>{const e=await a();return await o(e)},l=async()=>(await c()).t;return{getTolgeeInstance:o,getTolgee:c,getTranslate:l,T:async function(t){const n=await l();return e.createElement(r,Object.assign({t:n},t))}}};export{r as TBase,o as createServerInstance};
2
2
  //# sourceMappingURL=tolgee-react-server.esm.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tolgee-react-server.esm.min.js","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\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\nexport const addReactKeys = (\n val: React.ReactNode | React.ReactNode[] | undefined\n) => {\n if (Array.isArray(val)) {\n return React.Children.toArray(val);\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":["wrapTagHandlers","params","result","Object","entries","forEach","key","value","chunk","addReactKeys","React","isValidElement","el","undefined","props","children","length","cloneElement","val","Array","isArray","Children","toArray","TBase","keyName","console","error","defaultValue","translation","t","noWrap","ns","language","createElement","Fragment","createServerInstance","createTolgee","getLocale","getTolgeeInstance","cache","async","locale","tolgee","run","getTolgee","getTranslate","T","assign"],"mappings":"0DAKO,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,EAGFO,EACXS,GAEIC,MAAMC,QAAQF,GACTR,EAAMW,SAASC,QAAQJ,GAEvBA,ECpCEK,EAAyBT,IACpC,MAAMR,EAAOQ,EAA2BU,SAAWV,EAAMC,cAC7CF,IAARP,GAEFmB,QAAQC,MAAM,oCAEhB,MAAMC,EACJb,EAAMa,eACJb,EAA2BU,QAAUV,EAAMC,cAAWF,GAEpDe,EAAcnB,EAClBK,EAAMe,EAAE,CACNvB,IAAKA,EACLL,OAAQD,EAAgBc,EAAMb,QAC9B0B,eACAG,OAAQhB,EAAMgB,OACdC,GAAIjB,EAAMiB,GACVC,SAAUlB,EAAMkB,YAIpB,OAAOtB,EAAAuB,cAAAvB,EAAAwB,SAAA,KAAGN,EAAe,ECXdO,EAAuB,EAClCC,eACAC,gBAEA,MAAMC,EAAoBC,GAAMC,MAAOC,IACrC,MAAMC,QAAeN,EAAaK,GAElC,aADMC,EAAOC,MACND,CAAM,IAGTE,EAAYJ,UAChB,MAAMC,QAAeJ,IAErB,aADqBC,EAAkBG,EAC1B,EAGTI,EAAeL,gBACEI,KACPf,EAQhB,MAAO,CAAES,oBAAmBM,YAAWC,eAAcC,EALrDN,eAAiB1B,GACf,MAAMe,QAAUgB,IAChB,OAAOnC,EAAAuB,cAACV,EAAMpB,OAAA4C,OAAA,CAAAlB,EAAGA,GAA8Bf,GAChD,EAEuD"}
1
+ {"version":3,"file":"tolgee-react-server.esm.min.js","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\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}>{item}</React.Fragment>\n ));\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":["wrapTagHandlers","params","result","Object","entries","forEach","key","value","chunk","addReactKeys","React","isValidElement","el","undefined","props","children","length","cloneElement","val","Array","isArray","map","item","i","Fragment","TBase","keyName","console","error","defaultValue","translation","t","noWrap","ns","language","createElement","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,EAGFO,EACXM,IAEA,MAAMG,GAxC0BX,EAwCKQ,EAvCjCI,MAAMC,QAAQb,IAA2B,IAAjBA,EAAMS,OACzBT,EAAM,GAENA,GAJX,IAAkCA,EAyChC,OAAIY,MAAMC,QAAQF,GACTA,EAAIG,KAAI,CAACC,EAAMC,IACpBb,gBAACA,EAAMc,SAAQ,CAAClB,IAAKiB,GAAID,KAGpBJ,CACR,EChDUO,EAAyBX,IACpC,MAAMR,EAAOQ,EAA2BY,SAAWZ,EAAMC,cAC7CF,IAARP,GAEFqB,QAAQC,MAAM,oCAEhB,MAAMC,EACJf,EAAMe,eACJf,EAA2BY,QAAUZ,EAAMC,cAAWF,GAEpDiB,EAAcrB,EAClBK,EAAMiB,EAAE,CACNzB,IAAKA,EACLL,OAAQD,EAAgBc,EAAMb,QAC9B4B,eACAG,OAAQlB,EAAMkB,OACdC,GAAInB,EAAMmB,GACVC,SAAUpB,EAAMoB,YAIpB,OAAOxB,EAAAyB,cAAAzB,EAAAc,SAAA,KAAGM,EAAe,ECXdM,EAAuB,EAClCC,eACAC,gBAEA,MAAMC,EAAoBC,GAAMC,MAAOC,IACrC,MAAMC,QAAeN,EAAaK,GAElC,aADMC,EAAOC,MACND,CAAM,IAGTE,EAAYJ,UAChB,MAAMC,QAAeJ,IAErB,aADqBC,EAAkBG,EAC1B,EAGTI,EAAeL,gBACEI,KACPd,EAQhB,MAAO,CAAEQ,oBAAmBM,YAAWC,eAAcC,EALrDN,eAAiB3B,GACf,MAAMiB,QAAUe,IAChB,OAAOpC,EAAAyB,cAACV,EAAMtB,OAAA6C,OAAA,CAAAjB,EAAGA,GAA8BjB,GAChD,EAEuD"}
@@ -1,2 +1,2 @@
1
- import e,{cache as t}from"react";export*from"@tolgee/web";const n=t=>{if(!t)return;const n={};return Object.entries(t||{}).forEach((([t,r])=>{if("function"==typeof r)n[t]=e=>r(a(e));else if(e.isValidElement(r)){const o=r;n[t]=t=>void 0===o.props.children&&(null==t?void 0:t.length)?e.cloneElement(o,{},a(t)):e.cloneElement(o)}else n[t]=r})),n},a=t=>Array.isArray(t)?e.Children.toArray(t):t,r=t=>{const r=t.keyName||t.children;void 0===r&&console.error("T component: keyName not defined");const o=t.defaultValue||(t.keyName?t.children:void 0),l=a(t.t({key:r,params:n(t.params),defaultValue:o,noWrap:t.noWrap,ns:t.ns,language:t.language}));return e.createElement(e.Fragment,null,l)},o=({createTolgee:n,getLocale:a})=>{const o=t((async e=>{const t=await n(e);return await t.run(),t})),l=async()=>{const e=await a();return await o(e)},c=async()=>(await l()).t;return{getTolgeeInstance:o,getTolgee:l,getTranslate:c,T:async function(t){const n=await c();return e.createElement(r,Object.assign({t:n},t))}}};export{r as TBase,o as createServerInstance};
1
+ import e,{cache as t}from"react";export*from"@tolgee/web";const n=t=>{if(!t)return;const n={};return Object.entries(t||{}).forEach((([t,r])=>{if("function"==typeof r)n[t]=e=>r(a(e));else if(e.isValidElement(r)){const o=r;n[t]=t=>void 0===o.props.children&&(null==t?void 0:t.length)?e.cloneElement(o,{},a(t)):e.cloneElement(o)}else n[t]=r})),n},a=t=>{const n=(a=t,Array.isArray(a)&&1===a.length?a[0]:a);var a;return Array.isArray(n)?n.map(((t,n)=>e.createElement(e.Fragment,{key:n},t))):n},r=t=>{const r=t.keyName||t.children;void 0===r&&console.error("T component: keyName not defined");const o=t.defaultValue||(t.keyName?t.children:void 0),c=a(t.t({key:r,params:n(t.params),defaultValue:o,noWrap:t.noWrap,ns:t.ns,language:t.language}));return e.createElement(e.Fragment,null,c)},o=({createTolgee:n,getLocale:a})=>{const o=t((async e=>{const t=await n(e);return await t.run(),t})),c=async()=>{const e=await a();return await o(e)},l=async()=>(await c()).t;return{getTolgeeInstance:o,getTolgee:c,getTranslate:l,T:async function(t){const n=await l();return e.createElement(r,Object.assign({t:n},t))}}};export{r as TBase,o as createServerInstance};
2
2
  //# sourceMappingURL=tolgee-react-server.esm.min.mjs.map
@@ -1 +1 @@
1
- {"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\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\nexport const addReactKeys = (\n val: React.ReactNode | React.ReactNode[] | undefined\n) => {\n if (Array.isArray(val)) {\n return React.Children.toArray(val);\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":["wrapTagHandlers","params","result","Object","entries","forEach","key","value","chunk","addReactKeys","React","isValidElement","el","undefined","props","children","length","cloneElement","val","Array","isArray","Children","toArray","TBase","keyName","console","error","defaultValue","translation","t","noWrap","ns","language","createElement","Fragment","createServerInstance","createTolgee","getLocale","getTolgeeInstance","cache","async","locale","tolgee","run","getTolgee","getTranslate","T","assign"],"mappings":"0DAKO,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,EAGFO,EACXS,GAEIC,MAAMC,QAAQF,GACTR,EAAMW,SAASC,QAAQJ,GAEvBA,ECpCEK,EAAyBT,IACpC,MAAMR,EAAOQ,EAA2BU,SAAWV,EAAMC,cAC7CF,IAARP,GAEFmB,QAAQC,MAAM,oCAEhB,MAAMC,EACJb,EAAMa,eACJb,EAA2BU,QAAUV,EAAMC,cAAWF,GAEpDe,EAAcnB,EAClBK,EAAMe,EAAE,CACNvB,IAAKA,EACLL,OAAQD,EAAgBc,EAAMb,QAC9B0B,eACAG,OAAQhB,EAAMgB,OACdC,GAAIjB,EAAMiB,GACVC,SAAUlB,EAAMkB,YAIpB,OAAOtB,EAAAuB,cAAAvB,EAAAwB,SAAA,KAAGN,EAAe,ECXdO,EAAuB,EAClCC,eACAC,gBAEA,MAAMC,EAAoBC,GAAMC,MAAOC,IACrC,MAAMC,QAAeN,EAAaK,GAElC,aADMC,EAAOC,MACND,CAAM,IAGTE,EAAYJ,UAChB,MAAMC,QAAeJ,IAErB,aADqBC,EAAkBG,EAC1B,EAGTI,EAAeL,gBACEI,KACPf,EAQhB,MAAO,CAAES,oBAAmBM,YAAWC,eAAcC,EALrDN,eAAiB1B,GACf,MAAMe,QAAUgB,IAChB,OAAOnC,EAAAuB,cAACV,EAAMpB,OAAA4C,OAAA,CAAAlB,EAAGA,GAA8Bf,GAChD,EAEuD"}
1
+ {"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\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}>{item}</React.Fragment>\n ));\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":["wrapTagHandlers","params","result","Object","entries","forEach","key","value","chunk","addReactKeys","React","isValidElement","el","undefined","props","children","length","cloneElement","val","Array","isArray","map","item","i","Fragment","TBase","keyName","console","error","defaultValue","translation","t","noWrap","ns","language","createElement","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,EAGFO,EACXM,IAEA,MAAMG,GAxC0BX,EAwCKQ,EAvCjCI,MAAMC,QAAQb,IAA2B,IAAjBA,EAAMS,OACzBT,EAAM,GAENA,GAJX,IAAkCA,EAyChC,OAAIY,MAAMC,QAAQF,GACTA,EAAIG,KAAI,CAACC,EAAMC,IACpBb,gBAACA,EAAMc,SAAQ,CAAClB,IAAKiB,GAAID,KAGpBJ,CACR,EChDUO,EAAyBX,IACpC,MAAMR,EAAOQ,EAA2BY,SAAWZ,EAAMC,cAC7CF,IAARP,GAEFqB,QAAQC,MAAM,oCAEhB,MAAMC,EACJf,EAAMe,eACJf,EAA2BY,QAAUZ,EAAMC,cAAWF,GAEpDiB,EAAcrB,EAClBK,EAAMiB,EAAE,CACNzB,IAAKA,EACLL,OAAQD,EAAgBc,EAAMb,QAC9B4B,eACAG,OAAQlB,EAAMkB,OACdC,GAAInB,EAAMmB,GACVC,SAAUpB,EAAMoB,YAIpB,OAAOxB,EAAAyB,cAAAzB,EAAAc,SAAA,KAAGM,EAAe,ECXdM,EAAuB,EAClCC,eACAC,gBAEA,MAAMC,EAAoBC,GAAMC,MAAOC,IACrC,MAAMC,QAAeN,EAAaK,GAElC,aADMC,EAAOC,MACND,CAAM,IAGTE,EAAYJ,UAChB,MAAMC,QAAeJ,IAErB,aADqBC,EAAkBG,EAC1B,EAGTI,EAAeL,gBACEI,KACPd,EAQhB,MAAO,CAAEQ,oBAAmBM,YAAWC,eAAcC,EALrDN,eAAiB3B,GACf,MAAMiB,QAAUe,IAChB,OAAOpC,EAAAyB,cAACV,EAAMtB,OAAA6C,OAAA,CAAAjB,EAAGA,GAA8BjB,GAChD,EAEuD"}
@@ -1,6 +1,14 @@
1
1
  import React, { cache } from 'react';
2
2
  export * from '@tolgee/web';
3
3
 
4
+ function unwrapSingleElementArray(value) {
5
+ if (Array.isArray(value) && value.length === 1) {
6
+ return value[0];
7
+ }
8
+ else {
9
+ return value;
10
+ }
11
+ }
4
12
  const wrapTagHandlers = (params) => {
5
13
  if (!params) {
6
14
  return undefined;
@@ -26,9 +34,10 @@ const wrapTagHandlers = (params) => {
26
34
  });
27
35
  return result;
28
36
  };
29
- const addReactKeys = (val) => {
37
+ const addReactKeys = (children) => {
38
+ const val = unwrapSingleElementArray(children);
30
39
  if (Array.isArray(val)) {
31
- return React.Children.toArray(val);
40
+ return val.map((item, i) => (React.createElement(React.Fragment, { key: i }, item)));
32
41
  }
33
42
  else {
34
43
  return val;
@@ -1 +1 @@
1
- {"version":3,"file":"tolgee-react-server.esm.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\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\nexport const addReactKeys = (\n val: React.ReactNode | React.ReactNode[] | undefined\n) => {\n if (Array.isArray(val)) {\n return React.Children.toArray(val);\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tolgee-react-server.esm.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\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}>{item}</React.Fragment>\n ));\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":[],"mappings":"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"}
@@ -8,6 +8,14 @@
8
8
 
9
9
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
10
10
 
11
+ function unwrapSingleElementArray(value) {
12
+ if (Array.isArray(value) && value.length === 1) {
13
+ return value[0];
14
+ }
15
+ else {
16
+ return value;
17
+ }
18
+ }
11
19
  const wrapTagHandlers = (params) => {
12
20
  if (!params) {
13
21
  return undefined;
@@ -33,9 +41,10 @@
33
41
  });
34
42
  return result;
35
43
  };
36
- const addReactKeys = (val) => {
44
+ const addReactKeys = (children) => {
45
+ const val = unwrapSingleElementArray(children);
37
46
  if (Array.isArray(val)) {
38
- return React__default["default"].Children.toArray(val);
47
+ return val.map((item, i) => (React__default["default"].createElement(React__default["default"].Fragment, { key: i }, item)));
39
48
  }
40
49
  else {
41
50
  return val;
@@ -1 +1 @@
1
- {"version":3,"file":"tolgee-react-server.umd.js","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\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\nexport const addReactKeys = (\n val: React.ReactNode | React.ReactNode[] | undefined\n) => {\n if (Array.isArray(val)) {\n return React.Children.toArray(val);\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":["React","cache"],"mappings":"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"}
1
+ {"version":3,"file":"tolgee-react-server.umd.js","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\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}>{item}</React.Fragment>\n ));\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":["React","cache"],"mappings":";;;;;;;;;;IAKA,SAAS,wBAAwB,CAAC,KAAU,EAAA;IAC1C,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;IAC9C,QAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,KAAA;IAAM,SAAA;IACL,QAAA,OAAO,KAAK,CAAC;IACd,KAAA;IACH,CAAC;IAEM,MAAM,eAAe,GAAG,CAC7B,MAA+C,KAC7C;QACF,IAAI,CAAC,MAAM,EAAE;IACX,QAAA,OAAO,SAAS,CAAC;IAClB,KAAA;QAED,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,IAAA,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;IACpD,QAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;IAC/B,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAU,KAAI;IAC3B,gBAAA,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACpC,aAAC,CAAC;IACH,SAAA;IAAM,aAAA,IAAIA,yBAAK,CAAC,cAAc,CAAC,KAAY,CAAC,EAAE;gBAC7C,MAAM,EAAE,GAAG,KAA2B,CAAC;IACvC,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAU,KAAI;IAC3B,gBAAA,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,KAAI,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,MAAM,CAAA;IACrD,sBAAEA,yBAAK,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IACjD,sBAAEA,yBAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC7B,aAAC,CAAC;IACH,SAAA;IAAM,aAAA;IACL,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACrB,SAAA;IACH,KAAC,CAAC,CAAC;IAEH,IAAA,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEK,MAAM,YAAY,GAAG,CAC1B,QAAyD,KACvD;IACF,IAAA,MAAM,GAAG,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MACrBA,wCAACA,yBAAK,CAAC,QAAQ,EAAA,EAAC,GAAG,EAAE,CAAC,EAAA,EAAG,IAAI,CAAkB,CAChD,CAAC,CAAC;IACJ,KAAA;IAAM,SAAA;IACL,QAAA,OAAO,GAAG,CAAC;IACZ,KAAA;IACH,CAAC;;ACjDY,UAAA,KAAK,GAAmB,CAAC,KAAK,KAAI;QAC7C,MAAM,GAAG,GAAI,KAA0B,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC;QAClE,IAAI,GAAG,KAAK,SAAS,EAAE;;IAErB,QAAA,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACnD,KAAA;IACD,IAAA,MAAM,YAAY,GAChB,KAAK,CAAC,YAAY;IAClB,SAAE,KAA0B,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;IAErE,IAAA,MAAM,WAAW,GAAG,YAAY,CAC9B,KAAK,CAAC,CAAC,CAAC;IACN,QAAA,GAAG,EAAE,GAAI;IACT,QAAA,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;YACrC,YAAY;YACZ,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACzB,KAAA,CAAC,CACH,CAAC;QAEF,OAAOA,yBAAA,CAAA,aAAA,CAAAA,yBAAA,CAAA,QAAA,EAAA,IAAA,EAAG,WAAW,CAAI,CAAC;IAC5B;;IC1BA;AAca,UAAA,oBAAoB,GAAG,CAAC,EACnC,YAAY,EACZ,SAAS,GACmB,KAAI;QAChC,MAAM,iBAAiB,GAAGC,WAAK,CAAC,OAAO,MAAc,KAAI;IACvD,QAAA,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAA,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IACnB,QAAA,OAAO,MAAM,CAAC;IAChB,KAAC,CAAgD,CAAC;IAElD,IAAA,MAAM,SAAS,GAAG,YAAW;IAC3B,QAAA,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,QAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAA,OAAO,MAAM,CAAC;IAChB,KAAC,CAAC;IAEF,IAAA,MAAM,YAAY,GAAG,YAAW;IAC9B,QAAA,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;YACjC,OAAO,MAAM,CAAC,CAAC,CAAC;IAClB,KAAC,CAAC;QAEF,eAAe,CAAC,CAAC,KAAa,EAAA;IAC5B,QAAA,MAAM,CAAC,GAAG,MAAM,YAAY,EAAE,CAAC;YAC/B,OAAOD,yBAAA,CAAA,aAAA,CAAC,KAAK,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,CAAC,EAAE,CAAwB,EAAA,EAAM,KAAK,CAAA,CAAI,CAAC;SAC1D;QAED,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAC3D;;;;;;;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("@tolgee/web")):"function"==typeof define&&define.amd?define(["exports","react","@tolgee/web"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@tolgee/react"]={},e.React,e["@tolgee/web"])}(this,(function(e,t,n){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=a(t);const o=e=>{if(!e)return;const t={};return Object.entries(e||{}).forEach((([e,n])=>{if("function"==typeof n)t[e]=e=>n(l(e));else if(r.default.isValidElement(n)){const a=n;t[e]=e=>void 0===a.props.children&&(null==e?void 0:e.length)?r.default.cloneElement(a,{},l(e)):r.default.cloneElement(a)}else t[e]=n})),t},l=e=>Array.isArray(e)?r.default.Children.toArray(e):e,c=e=>{const t=e.keyName||e.children;void 0===t&&console.error("T component: keyName not defined");const n=e.defaultValue||(e.keyName?e.children:void 0),a=l(e.t({key:t,params:o(e.params),defaultValue:n,noWrap:e.noWrap,ns:e.ns,language:e.language}));return r.default.createElement(r.default.Fragment,null,a)};e.TBase=c,e.createServerInstance=({createTolgee:e,getLocale:n})=>{const a=t.cache((async t=>{const n=await e(t);return await n.run(),n})),o=async()=>{const e=await n();return await a(e)},l=async()=>(await o()).t;return{getTolgeeInstance:a,getTolgee:o,getTranslate:l,T:async function(e){const t=await l();return r.default.createElement(c,Object.assign({t:t},e))}}},Object.keys(n).forEach((function(t){"default"===t||e.hasOwnProperty(t)||Object.defineProperty(e,t,{enumerable:!0,get:function(){return n[t]}})})),Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("@tolgee/web")):"function"==typeof define&&define.amd?define(["exports","react","@tolgee/web"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@tolgee/react"]={},e.React,e["@tolgee/web"])}(this,(function(e,t,n){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=a(t);const o=e=>{if(!e)return;const t={};return Object.entries(e||{}).forEach((([e,n])=>{if("function"==typeof n)t[e]=e=>n(l(e));else if(r.default.isValidElement(n)){const a=n;t[e]=e=>void 0===a.props.children&&(null==e?void 0:e.length)?r.default.cloneElement(a,{},l(e)):r.default.cloneElement(a)}else t[e]=n})),t},l=e=>{const t=(n=e,Array.isArray(n)&&1===n.length?n[0]:n);var n;return Array.isArray(t)?t.map(((e,t)=>r.default.createElement(r.default.Fragment,{key:t},e))):t},c=e=>{const t=e.keyName||e.children;void 0===t&&console.error("T component: keyName not defined");const n=e.defaultValue||(e.keyName?e.children:void 0),a=l(e.t({key:t,params:o(e.params),defaultValue:n,noWrap:e.noWrap,ns:e.ns,language:e.language}));return r.default.createElement(r.default.Fragment,null,a)};e.TBase=c,e.createServerInstance=({createTolgee:e,getLocale:n})=>{const a=t.cache((async t=>{const n=await e(t);return await n.run(),n})),o=async()=>{const e=await n();return await a(e)},l=async()=>(await o()).t;return{getTolgeeInstance:a,getTolgee:o,getTranslate:l,T:async function(e){const t=await l();return r.default.createElement(c,Object.assign({t:t},e))}}},Object.keys(n).forEach((function(t){"default"===t||e.hasOwnProperty(t)||Object.defineProperty(e,t,{enumerable:!0,get:function(){return n[t]}})})),Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=tolgee-react-server.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tolgee-react-server.umd.min.js","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\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\nexport const addReactKeys = (\n val: React.ReactNode | React.ReactNode[] | undefined\n) => {\n if (Array.isArray(val)) {\n return React.Children.toArray(val);\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":["wrapTagHandlers","params","result","Object","entries","forEach","key","value","chunk","addReactKeys","React","isValidElement","el","undefined","props","children","length","cloneElement","val","Array","isArray","Children","toArray","TBase","keyName","console","error","defaultValue","translation","t","noWrap","ns","language","createElement","Fragment","createTolgee","getLocale","getTolgeeInstance","cache","async","locale","tolgee","run","getTolgee","getTranslate","T","assign"],"mappings":"saAKO,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,EAAK,QAACC,eAAeJ,GAAe,CAC7C,MAAMK,EAAKL,EACXL,EAAOI,GAAQE,QACgBK,IAAtBD,EAAGE,MAAMC,WAA0BP,aAAK,EAALA,EAAOQ,QAC7CN,EAAK,QAACO,aAAaL,EAAI,CAAE,EAAEH,EAAaD,IACxCE,UAAMO,aAAaL,EAE1B,MACCV,EAAOI,GAAOC,CACf,IAGIL,CAAM,EAGFO,EACXS,GAEIC,MAAMC,QAAQF,GACTR,UAAMW,SAASC,QAAQJ,GAEvBA,ECpCEK,EAAyBT,IACpC,MAAMR,EAAOQ,EAA2BU,SAAWV,EAAMC,cAC7CF,IAARP,GAEFmB,QAAQC,MAAM,oCAEhB,MAAMC,EACJb,EAAMa,eACJb,EAA2BU,QAAUV,EAAMC,cAAWF,GAEpDe,EAAcnB,EAClBK,EAAMe,EAAE,CACNvB,IAAKA,EACLL,OAAQD,EAAgBc,EAAMb,QAC9B0B,eACAG,OAAQhB,EAAMgB,OACdC,GAAIjB,EAAMiB,GACVC,SAAUlB,EAAMkB,YAIpB,OAAOtB,EAAAA,QAAAuB,cAAAvB,EAAAA,QAAAwB,SAAA,KAAGN,EAAe,mCCXS,EAClCO,eACAC,gBAEA,MAAMC,EAAoBC,SAAMC,MAAOC,IACrC,MAAMC,QAAeN,EAAaK,GAElC,aADMC,EAAOC,MACND,CAAM,IAGTE,EAAYJ,UAChB,MAAMC,QAAeJ,IAErB,aADqBC,EAAkBG,EAC1B,EAGTI,EAAeL,gBACEI,KACPd,EAQhB,MAAO,CAAEQ,oBAAmBM,YAAWC,eAAcC,EALrDN,eAAiBzB,GACf,MAAMe,QAAUe,IAChB,OAAOlC,UAAAuB,cAACV,EAAMpB,OAAA2C,OAAA,CAAAjB,EAAGA,GAA8Bf,GAChD,EAEuD"}
1
+ {"version":3,"file":"tolgee-react-server.umd.min.js","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\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}>{item}</React.Fragment>\n ));\n } else {\n return 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 { TFnType } from '@tolgee/web';\n\nimport { TBase } from './TBase';\nimport { TProps, ParamsTags } from './types';\nimport React from 'react';\nimport { TolgeeInstance } from '@tolgee/web';\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 = cache(async (locale: string) => {\n const tolgee = await createTolgee(locale);\n await tolgee.run();\n return tolgee;\n }) as (locale: string) => Promise<TolgeeInstance>;\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 { getTolgeeInstance, getTolgee, getTranslate, T };\n};\n"],"names":["wrapTagHandlers","params","result","Object","entries","forEach","key","value","chunk","addReactKeys","React","isValidElement","el","undefined","props","children","length","cloneElement","val","Array","isArray","map","item","i","Fragment","TBase","keyName","console","error","defaultValue","translation","t","noWrap","ns","language","createElement","createTolgee","getLocale","getTolgeeInstance","cache","async","locale","tolgee","run","getTolgee","getTranslate","T","assign"],"mappings":"saAaO,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,EAAK,QAACC,eAAeJ,GAAe,CAC7C,MAAMK,EAAKL,EACXL,EAAOI,GAAQE,QACgBK,IAAtBD,EAAGE,MAAMC,WAA0BP,aAAK,EAALA,EAAOQ,QAC7CN,EAAK,QAACO,aAAaL,EAAI,CAAE,EAAEH,EAAaD,IACxCE,UAAMO,aAAaL,EAE1B,MACCV,EAAOI,GAAOC,CACf,IAGIL,CAAM,EAGFO,EACXM,IAEA,MAAMG,GAxC0BX,EAwCKQ,EAvCjCI,MAAMC,QAAQb,IAA2B,IAAjBA,EAAMS,OACzBT,EAAM,GAENA,GAJX,IAAkCA,EAyChC,OAAIY,MAAMC,QAAQF,GACTA,EAAIG,KAAI,CAACC,EAAMC,IACpBb,wBAACA,EAAK,QAACc,SAAQ,CAAClB,IAAKiB,GAAID,KAGpBJ,CACR,EChDUO,EAAyBX,IACpC,MAAMR,EAAOQ,EAA2BY,SAAWZ,EAAMC,cAC7CF,IAARP,GAEFqB,QAAQC,MAAM,oCAEhB,MAAMC,EACJf,EAAMe,eACJf,EAA2BY,QAAUZ,EAAMC,cAAWF,GAEpDiB,EAAcrB,EAClBK,EAAMiB,EAAE,CACNzB,IAAKA,EACLL,OAAQD,EAAgBc,EAAMb,QAC9B4B,eACAG,OAAQlB,EAAMkB,OACdC,GAAInB,EAAMmB,GACVC,SAAUpB,EAAMoB,YAIpB,OAAOxB,EAAAA,QAAAyB,cAAAzB,EAAAA,QAAAc,SAAA,KAAGM,EAAe,mCCXS,EAClCM,eACAC,gBAEA,MAAMC,EAAoBC,SAAMC,MAAOC,IACrC,MAAMC,QAAeN,EAAaK,GAElC,aADMC,EAAOC,MACND,CAAM,IAGTE,EAAYJ,UAChB,MAAMC,QAAeJ,IAErB,aADqBC,EAAkBG,EAC1B,EAGTI,EAAeL,gBACEI,KACPb,EAQhB,MAAO,CAAEO,oBAAmBM,YAAWC,eAAcC,EALrDN,eAAiB1B,GACf,MAAMiB,QAAUc,IAChB,OAAOnC,UAAAyB,cAACV,EAAMtB,OAAA4C,OAAA,CAAAhB,EAAGA,GAA8BjB,GAChD,EAEuD"}
@@ -187,6 +187,14 @@ const useTranslate = (ns, options) => {
187
187
  return { t, isLoading };
188
188
  };
189
189
 
190
+ function unwrapSingleElementArray(value) {
191
+ if (Array.isArray(value) && value.length === 1) {
192
+ return value[0];
193
+ }
194
+ else {
195
+ return value;
196
+ }
197
+ }
190
198
  const wrapTagHandlers = (params) => {
191
199
  if (!params) {
192
200
  return undefined;
@@ -212,9 +220,10 @@ const wrapTagHandlers = (params) => {
212
220
  });
213
221
  return result;
214
222
  };
215
- const addReactKeys = (val) => {
223
+ const addReactKeys = (children) => {
224
+ const val = unwrapSingleElementArray(children);
216
225
  if (Array.isArray(val)) {
217
- return React__default["default"].Children.toArray(val);
226
+ return val.map((item, i) => (React__default["default"].createElement(React__default["default"].Fragment, { key: i }, item)));
218
227
  }
219
228
  else {
220
229
  return val;
@@ -1 +1 @@
1
- {"version":3,"file":"tolgee-react.cjs.js","sources":["../src/useTolgeeSSR.ts","../src/TolgeeProvider.tsx","../src/GlobalContextPlugin.tsx","../src/useTolgeeContext.ts","../src/hooks.ts","../src/useTranslateInternal.ts","../src/useTranslate.ts","../src/tagsTools.tsx","../src/TBase.tsx","../src/T.tsx","../src/useTolgee.ts"],"sourcesContent":["import {\n getTranslateProps,\n TolgeeInstance,\n TolgeeStaticData,\n} from '@tolgee/web';\nimport { useEffect, useMemo, useState } from 'react';\n\nfunction getTolgeeWithDeactivatedWrapper(\n tolgee: TolgeeInstance\n): TolgeeInstance {\n return {\n ...tolgee,\n t(...args) {\n // @ts-ignore\n const props = getTranslateProps(...args);\n return tolgee.t({ ...props, noWrap: true });\n },\n };\n}\n\n/**\n * Updates tolgee static data and language, to be ready right away for the first render\n * and therefore compatible with SSR.\n *\n * It also ensures that the first render is done without wrapping and so it avoids\n * \"client different than server\" issues.\n * *\n * @param tolgeeInstance initialized Tolgee instance\n * @param language language that is obtained outside of Tolgee on the server and client\n * @param staticData static data for the language\n * @param enabled if set to false, no action is taken\n */\nexport function useTolgeeSSR(\n tolgeeInstance: TolgeeInstance,\n language?: string,\n staticData?: TolgeeStaticData | undefined,\n enabled = true\n) {\n const [noWrappingTolgee] = useState(() =>\n getTolgeeWithDeactivatedWrapper(tolgeeInstance)\n );\n\n const [initialRender, setInitialRender] = useState(enabled);\n\n useEffect(() => {\n setInitialRender(false);\n }, []);\n\n useMemo(() => {\n if (enabled) {\n // we have to prepare tolgee before rendering children\n // so translations are available right away\n // events emitting must be off, to not trigger re-render while rendering\n tolgeeInstance.setEmitterActive(false);\n tolgeeInstance.addStaticData(staticData);\n tolgeeInstance.changeLanguage(language!);\n tolgeeInstance.setEmitterActive(true);\n }\n }, [language, staticData, tolgeeInstance]);\n\n useState(() => {\n // running this function only on first render\n if (!tolgeeInstance.isLoaded() && enabled) {\n // warning user, that static data provided are not sufficient\n // for proper SSR render\n const missingRecords = tolgeeInstance\n .getRequiredRecords(language)\n .map(({ namespace, language }) =>\n namespace ? `${namespace}:${language}` : language\n )\n .filter((key) => !staticData?.[key]);\n\n // eslint-disable-next-line no-console\n console.warn(\n `Tolgee: Missing records in \"staticData\" for proper SSR functionality: ${missingRecords.map((key) => `\"${key}\"`).join(', ')}`\n );\n }\n });\n\n return initialRender ? noWrappingTolgee : tolgeeInstance;\n}\n","import React, { Suspense, useEffect, useState } from 'react';\nimport { TolgeeInstance, TolgeeStaticData } from '@tolgee/web';\nimport { ReactOptions, TolgeeReactContext } from './types';\nimport { useTolgeeSSR } from './useTolgeeSSR';\n\nexport const DEFAULT_REACT_OPTIONS: ReactOptions = {\n useSuspense: true,\n};\n\nlet ProviderInstance: React.Context<TolgeeReactContext | undefined>;\n\nexport const getProviderInstance = () => {\n if (!ProviderInstance) {\n ProviderInstance = React.createContext<TolgeeReactContext | undefined>(\n undefined\n );\n }\n\n return ProviderInstance;\n};\n\nlet LAST_TOLGEE_INSTANCE: TolgeeInstance | undefined = undefined;\n\nexport type SSROptions = {\n /**\n * Hard set language to this value, use together with `staticData`\n */\n language?: string;\n /**\n * If provided, static data will be hard set to Tolgee cache for initial render\n */\n staticData?: TolgeeStaticData;\n};\n\nexport interface TolgeeProviderProps {\n children?: React.ReactNode;\n tolgee: TolgeeInstance;\n options?: ReactOptions;\n fallback?: React.ReactNode;\n /**\n * use this option if you use SSR\n *\n * You can pass staticData and language\n * which will be set to tolgee instance for the initial render\n *\n * Don't switch between ssr and non-ssr dynamically\n */\n ssr?: SSROptions | boolean;\n}\n\nexport const TolgeeProvider: React.FC<TolgeeProviderProps> = ({\n tolgee,\n options,\n children,\n fallback,\n ssr,\n}) => {\n // prevent restarting tolgee unnecesarly\n // however if the instance change on hot-reloading\n // we want to restart\n useEffect(() => {\n if (LAST_TOLGEE_INSTANCE?.run !== tolgee.run) {\n if (LAST_TOLGEE_INSTANCE) {\n LAST_TOLGEE_INSTANCE.stop();\n }\n LAST_TOLGEE_INSTANCE = tolgee;\n tolgee\n .run()\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n })\n .finally(() => {\n setLoading(false);\n });\n }\n }, [tolgee]);\n\n let tolgeeSSR = tolgee;\n\n const { language, staticData } = (\n typeof ssr !== 'object' ? {} : ssr\n ) as SSROptions;\n tolgeeSSR = useTolgeeSSR(tolgee, language, staticData, Boolean(ssr));\n\n const [loading, setLoading] = useState(!tolgeeSSR.isLoaded());\n\n const optionsWithDefault = { ...DEFAULT_REACT_OPTIONS, ...options };\n\n const TolgeeProviderContext = getProviderInstance();\n\n if (optionsWithDefault.useSuspense) {\n return (\n <TolgeeProviderContext.Provider\n value={{ tolgee: tolgeeSSR, options: optionsWithDefault }}\n >\n {loading ? (\n fallback\n ) : (\n <Suspense fallback={fallback || null}>{children}</Suspense>\n )}\n </TolgeeProviderContext.Provider>\n );\n }\n\n return (\n <TolgeeProviderContext.Provider\n value={{ tolgee: tolgeeSSR, options: optionsWithDefault }}\n >\n {loading ? fallback : children}\n </TolgeeProviderContext.Provider>\n );\n};\n","import type { TolgeePlugin } from '@tolgee/web';\nimport { DEFAULT_REACT_OPTIONS } from './TolgeeProvider';\nimport type { ReactOptions, TolgeeReactContext } from './types';\n\nlet globalContext: TolgeeReactContext | undefined;\n\nexport const GlobalContextPlugin =\n (options?: Partial<ReactOptions>): TolgeePlugin =>\n (tolgee) => {\n globalContext = {\n tolgee,\n options: { ...DEFAULT_REACT_OPTIONS, ...options },\n };\n return tolgee;\n };\n\nexport function getGlobalContext() {\n return globalContext;\n}\n","import { useContext } from 'react';\nimport { getGlobalContext } from './GlobalContextPlugin';\nimport { getProviderInstance } from './TolgeeProvider';\n\nexport const useTolgeeContext = () => {\n const TolgeeProviderContext = getProviderInstance();\n const context = useContext(TolgeeProviderContext) || getGlobalContext();\n if (!context) {\n throw new Error(\n \"Couldn't find tolgee instance, did you forgot to use `TolgeeProvider`?\"\n );\n }\n return context;\n};\n","import { useCallback, useState } from 'react';\n\nexport const useRerender = () => {\n const [instance, setCounter] = useState(0);\n\n const rerender = useCallback(() => {\n setCounter((num) => num + 1);\n }, [setCounter]);\n return { instance, rerender };\n};\n","import { useCallback, useEffect, useRef } from 'react';\nimport {\n SubscriptionSelective,\n TranslateProps,\n NsFallback,\n getFallbackArray,\n getFallback,\n} from '@tolgee/web';\n\nimport { useTolgeeContext } from './useTolgeeContext';\nimport { ReactOptions } from './types';\nimport { useRerender } from './hooks';\n\nexport const useTranslateInternal = (\n ns?: NsFallback,\n options?: ReactOptions\n) => {\n const { tolgee, options: defaultOptions } = useTolgeeContext();\n const namespaces = getFallback(ns);\n const namespacesJoined = getFallbackArray(namespaces).join(':');\n\n const currentOptions = {\n ...defaultOptions,\n ...options,\n };\n\n // dummy state to enable re-rendering\n const { rerender, instance } = useRerender();\n\n const subscriptionRef = useRef<SubscriptionSelective>();\n\n const subscriptionQueue = useRef([] as NsFallback[]);\n subscriptionQueue.current = [];\n\n const subscribeToNs = (ns: NsFallback) => {\n subscriptionQueue.current.push(ns);\n subscriptionRef.current?.subscribeNs(ns);\n };\n\n const isLoaded = tolgee.isLoaded(namespaces);\n\n useEffect(() => {\n const subscription = tolgee.onNsUpdate(rerender);\n subscriptionRef.current = subscription;\n subscription.subscribeNs(namespaces);\n subscriptionQueue.current.forEach((ns) => {\n subscription!.subscribeNs(ns);\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [namespacesJoined, tolgee]);\n\n useEffect(() => {\n tolgee.addActiveNs(namespaces);\n return () => tolgee.removeActiveNs(namespaces);\n }, [namespacesJoined, tolgee]);\n\n const t = useCallback(\n (props: TranslateProps<any>) => {\n const fallbackNs = props.ns ?? namespaces?.[0];\n subscribeToNs(fallbackNs);\n return tolgee.t({ ...props, ns: fallbackNs }) as any;\n },\n [tolgee, instance]\n );\n\n if (currentOptions.useSuspense && !isLoaded) {\n throw tolgee.addActiveNs(namespaces, true);\n }\n\n return { t, isLoading: !isLoaded };\n};\n","import { useCallback } from 'react';\nimport {\n TFnType,\n getTranslateProps,\n DefaultParamType,\n TranslationKey,\n} from '@tolgee/web';\n\nimport { useTranslateInternal } from './useTranslateInternal';\nimport { ReactOptions } from './types';\n\nexport interface UseTranslateResult {\n t: TFnType<DefaultParamType, string, TranslationKey>;\n isLoading: boolean;\n}\n\nexport const useTranslate = (\n ns?: string[] | string,\n options?: ReactOptions\n): UseTranslateResult => {\n const { t: tInternal, isLoading } = useTranslateInternal(ns, options);\n\n const t = useCallback(\n (...params: any) => {\n // @ts-ignore\n const props = getTranslateProps(...params);\n return tInternal(props);\n },\n [tInternal]\n );\n\n return { t, isLoading };\n};\n","import { TranslateParams } from '@tolgee/web';\nimport React from 'react';\n\nimport { ParamsTags } from './types';\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\nexport const addReactKeys = (\n val: React.ReactNode | React.ReactNode[] | undefined\n) => {\n if (Array.isArray(val)) {\n return React.Children.toArray(val);\n } else {\n return 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","import React from 'react';\nimport { ParamsTags, TProps } from './types';\n\nimport { useTranslateInternal } from './useTranslateInternal';\nimport { TFnType } from '@tolgee/web';\nimport { TBase } from './TBase';\n\ninterface TInterface {\n (props: TProps): JSX.Element;\n}\n\nexport const T: TInterface = (props) => {\n const { t } = useTranslateInternal();\n\n return <TBase t={t as TFnType<ParamsTags>} {...props} />;\n};\n","import { TolgeeEvent, TolgeeInstance } from '@tolgee/web';\nimport { useEffect } from 'react';\nimport { useRerender } from './hooks';\nimport { useTolgeeContext } from './useTolgeeContext';\n\nexport const useTolgee = (events?: TolgeeEvent[]): TolgeeInstance => {\n const { tolgee } = useTolgeeContext();\n\n const { rerender } = useRerender();\n\n useEffect(() => {\n const listeners = events?.map((e) => tolgee.on(e, rerender));\n return () => {\n listeners?.forEach((listener) => listener.unsubscribe());\n };\n }, [events?.join(':')]);\n\n return tolgee;\n};\n"],"names":["getTranslateProps","useState","useEffect","useMemo","React","Suspense","useContext","useCallback","getFallback","getFallbackArray","useRef"],"mappings":"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"}
1
+ {"version":3,"file":"tolgee-react.cjs.js","sources":["../src/useTolgeeSSR.ts","../src/TolgeeProvider.tsx","../src/GlobalContextPlugin.tsx","../src/useTolgeeContext.ts","../src/hooks.ts","../src/useTranslateInternal.ts","../src/useTranslate.ts","../src/tagsTools.tsx","../src/TBase.tsx","../src/T.tsx","../src/useTolgee.ts"],"sourcesContent":["import {\n getTranslateProps,\n TolgeeInstance,\n TolgeeStaticData,\n} from '@tolgee/web';\nimport { useEffect, useMemo, useState } from 'react';\n\nfunction getTolgeeWithDeactivatedWrapper(\n tolgee: TolgeeInstance\n): TolgeeInstance {\n return {\n ...tolgee,\n t(...args) {\n // @ts-ignore\n const props = getTranslateProps(...args);\n return tolgee.t({ ...props, noWrap: true });\n },\n };\n}\n\n/**\n * Updates tolgee static data and language, to be ready right away for the first render\n * and therefore compatible with SSR.\n *\n * It also ensures that the first render is done without wrapping and so it avoids\n * \"client different than server\" issues.\n * *\n * @param tolgeeInstance initialized Tolgee instance\n * @param language language that is obtained outside of Tolgee on the server and client\n * @param staticData static data for the language\n * @param enabled if set to false, no action is taken\n */\nexport function useTolgeeSSR(\n tolgeeInstance: TolgeeInstance,\n language?: string,\n staticData?: TolgeeStaticData | undefined,\n enabled = true\n) {\n const [noWrappingTolgee] = useState(() =>\n getTolgeeWithDeactivatedWrapper(tolgeeInstance)\n );\n\n const [initialRender, setInitialRender] = useState(enabled);\n\n useEffect(() => {\n setInitialRender(false);\n }, []);\n\n useMemo(() => {\n if (enabled) {\n // we have to prepare tolgee before rendering children\n // so translations are available right away\n // events emitting must be off, to not trigger re-render while rendering\n tolgeeInstance.setEmitterActive(false);\n tolgeeInstance.addStaticData(staticData);\n tolgeeInstance.changeLanguage(language!);\n tolgeeInstance.setEmitterActive(true);\n }\n }, [language, staticData, tolgeeInstance]);\n\n useState(() => {\n // running this function only on first render\n if (!tolgeeInstance.isLoaded() && enabled) {\n // warning user, that static data provided are not sufficient\n // for proper SSR render\n const missingRecords = tolgeeInstance\n .getRequiredRecords(language)\n .map(({ namespace, language }) =>\n namespace ? `${namespace}:${language}` : language\n )\n .filter((key) => !staticData?.[key]);\n\n // eslint-disable-next-line no-console\n console.warn(\n `Tolgee: Missing records in \"staticData\" for proper SSR functionality: ${missingRecords.map((key) => `\"${key}\"`).join(', ')}`\n );\n }\n });\n\n return initialRender ? noWrappingTolgee : tolgeeInstance;\n}\n","import React, { Suspense, useEffect, useState } from 'react';\nimport { TolgeeInstance, TolgeeStaticData } from '@tolgee/web';\nimport { ReactOptions, TolgeeReactContext } from './types';\nimport { useTolgeeSSR } from './useTolgeeSSR';\n\nexport const DEFAULT_REACT_OPTIONS: ReactOptions = {\n useSuspense: true,\n};\n\nlet ProviderInstance: React.Context<TolgeeReactContext | undefined>;\n\nexport const getProviderInstance = () => {\n if (!ProviderInstance) {\n ProviderInstance = React.createContext<TolgeeReactContext | undefined>(\n undefined\n );\n }\n\n return ProviderInstance;\n};\n\nlet LAST_TOLGEE_INSTANCE: TolgeeInstance | undefined = undefined;\n\nexport type SSROptions = {\n /**\n * Hard set language to this value, use together with `staticData`\n */\n language?: string;\n /**\n * If provided, static data will be hard set to Tolgee cache for initial render\n */\n staticData?: TolgeeStaticData;\n};\n\nexport interface TolgeeProviderProps {\n children?: React.ReactNode;\n tolgee: TolgeeInstance;\n options?: ReactOptions;\n fallback?: React.ReactNode;\n /**\n * use this option if you use SSR\n *\n * You can pass staticData and language\n * which will be set to tolgee instance for the initial render\n *\n * Don't switch between ssr and non-ssr dynamically\n */\n ssr?: SSROptions | boolean;\n}\n\nexport const TolgeeProvider: React.FC<TolgeeProviderProps> = ({\n tolgee,\n options,\n children,\n fallback,\n ssr,\n}) => {\n // prevent restarting tolgee unnecesarly\n // however if the instance change on hot-reloading\n // we want to restart\n useEffect(() => {\n if (LAST_TOLGEE_INSTANCE?.run !== tolgee.run) {\n if (LAST_TOLGEE_INSTANCE) {\n LAST_TOLGEE_INSTANCE.stop();\n }\n LAST_TOLGEE_INSTANCE = tolgee;\n tolgee\n .run()\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n })\n .finally(() => {\n setLoading(false);\n });\n }\n }, [tolgee]);\n\n let tolgeeSSR = tolgee;\n\n const { language, staticData } = (\n typeof ssr !== 'object' ? {} : ssr\n ) as SSROptions;\n tolgeeSSR = useTolgeeSSR(tolgee, language, staticData, Boolean(ssr));\n\n const [loading, setLoading] = useState(!tolgeeSSR.isLoaded());\n\n const optionsWithDefault = { ...DEFAULT_REACT_OPTIONS, ...options };\n\n const TolgeeProviderContext = getProviderInstance();\n\n if (optionsWithDefault.useSuspense) {\n return (\n <TolgeeProviderContext.Provider\n value={{ tolgee: tolgeeSSR, options: optionsWithDefault }}\n >\n {loading ? (\n fallback\n ) : (\n <Suspense fallback={fallback || null}>{children}</Suspense>\n )}\n </TolgeeProviderContext.Provider>\n );\n }\n\n return (\n <TolgeeProviderContext.Provider\n value={{ tolgee: tolgeeSSR, options: optionsWithDefault }}\n >\n {loading ? fallback : children}\n </TolgeeProviderContext.Provider>\n );\n};\n","import type { TolgeePlugin } from '@tolgee/web';\nimport { DEFAULT_REACT_OPTIONS } from './TolgeeProvider';\nimport type { ReactOptions, TolgeeReactContext } from './types';\n\nlet globalContext: TolgeeReactContext | undefined;\n\nexport const GlobalContextPlugin =\n (options?: Partial<ReactOptions>): TolgeePlugin =>\n (tolgee) => {\n globalContext = {\n tolgee,\n options: { ...DEFAULT_REACT_OPTIONS, ...options },\n };\n return tolgee;\n };\n\nexport function getGlobalContext() {\n return globalContext;\n}\n","import { useContext } from 'react';\nimport { getGlobalContext } from './GlobalContextPlugin';\nimport { getProviderInstance } from './TolgeeProvider';\n\nexport const useTolgeeContext = () => {\n const TolgeeProviderContext = getProviderInstance();\n const context = useContext(TolgeeProviderContext) || getGlobalContext();\n if (!context) {\n throw new Error(\n \"Couldn't find tolgee instance, did you forgot to use `TolgeeProvider`?\"\n );\n }\n return context;\n};\n","import { useCallback, useState } from 'react';\n\nexport const useRerender = () => {\n const [instance, setCounter] = useState(0);\n\n const rerender = useCallback(() => {\n setCounter((num) => num + 1);\n }, [setCounter]);\n return { instance, rerender };\n};\n","import { useCallback, useEffect, useRef } from 'react';\nimport {\n SubscriptionSelective,\n TranslateProps,\n NsFallback,\n getFallbackArray,\n getFallback,\n} from '@tolgee/web';\n\nimport { useTolgeeContext } from './useTolgeeContext';\nimport { ReactOptions } from './types';\nimport { useRerender } from './hooks';\n\nexport const useTranslateInternal = (\n ns?: NsFallback,\n options?: ReactOptions\n) => {\n const { tolgee, options: defaultOptions } = useTolgeeContext();\n const namespaces = getFallback(ns);\n const namespacesJoined = getFallbackArray(namespaces).join(':');\n\n const currentOptions = {\n ...defaultOptions,\n ...options,\n };\n\n // dummy state to enable re-rendering\n const { rerender, instance } = useRerender();\n\n const subscriptionRef = useRef<SubscriptionSelective>();\n\n const subscriptionQueue = useRef([] as NsFallback[]);\n subscriptionQueue.current = [];\n\n const subscribeToNs = (ns: NsFallback) => {\n subscriptionQueue.current.push(ns);\n subscriptionRef.current?.subscribeNs(ns);\n };\n\n const isLoaded = tolgee.isLoaded(namespaces);\n\n useEffect(() => {\n const subscription = tolgee.onNsUpdate(rerender);\n subscriptionRef.current = subscription;\n subscription.subscribeNs(namespaces);\n subscriptionQueue.current.forEach((ns) => {\n subscription!.subscribeNs(ns);\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [namespacesJoined, tolgee]);\n\n useEffect(() => {\n tolgee.addActiveNs(namespaces);\n return () => tolgee.removeActiveNs(namespaces);\n }, [namespacesJoined, tolgee]);\n\n const t = useCallback(\n (props: TranslateProps<any>) => {\n const fallbackNs = props.ns ?? namespaces?.[0];\n subscribeToNs(fallbackNs);\n return tolgee.t({ ...props, ns: fallbackNs }) as any;\n },\n [tolgee, instance]\n );\n\n if (currentOptions.useSuspense && !isLoaded) {\n throw tolgee.addActiveNs(namespaces, true);\n }\n\n return { t, isLoading: !isLoaded };\n};\n","import { useCallback } from 'react';\nimport {\n TFnType,\n getTranslateProps,\n DefaultParamType,\n TranslationKey,\n} from '@tolgee/web';\n\nimport { useTranslateInternal } from './useTranslateInternal';\nimport { ReactOptions } from './types';\n\nexport interface UseTranslateResult {\n t: TFnType<DefaultParamType, string, TranslationKey>;\n isLoading: boolean;\n}\n\nexport const useTranslate = (\n ns?: string[] | string,\n options?: ReactOptions\n): UseTranslateResult => {\n const { t: tInternal, isLoading } = useTranslateInternal(ns, options);\n\n const t = useCallback(\n (...params: any) => {\n // @ts-ignore\n const props = getTranslateProps(...params);\n return tInternal(props);\n },\n [tInternal]\n );\n\n return { t, isLoading };\n};\n","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\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}>{item}</React.Fragment>\n ));\n } else {\n return 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","import React from 'react';\nimport { ParamsTags, TProps } from './types';\n\nimport { useTranslateInternal } from './useTranslateInternal';\nimport { TFnType } from '@tolgee/web';\nimport { TBase } from './TBase';\n\ninterface TInterface {\n (props: TProps): JSX.Element;\n}\n\nexport const T: TInterface = (props) => {\n const { t } = useTranslateInternal();\n\n return <TBase t={t as TFnType<ParamsTags>} {...props} />;\n};\n","import { TolgeeEvent, TolgeeInstance } from '@tolgee/web';\nimport { useEffect } from 'react';\nimport { useRerender } from './hooks';\nimport { useTolgeeContext } from './useTolgeeContext';\n\nexport const useTolgee = (events?: TolgeeEvent[]): TolgeeInstance => {\n const { tolgee } = useTolgeeContext();\n\n const { rerender } = useRerender();\n\n useEffect(() => {\n const listeners = events?.map((e) => tolgee.on(e, rerender));\n return () => {\n listeners?.forEach((listener) => listener.unsubscribe());\n };\n }, [events?.join(':')]);\n\n return tolgee;\n};\n"],"names":["getTranslateProps","useState","useEffect","useMemo","React","Suspense","useContext","useCallback","getFallback","getFallbackArray","useRef"],"mappings":"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"}