react-i18next 11.6.0 → 11.7.3

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.
package/react-i18next.js CHANGED
@@ -7,6 +7,8 @@
7
7
  var React__default = 'default' in React ? React['default'] : React;
8
8
 
9
9
  function _typeof(obj) {
10
+ "@babel/helpers - typeof";
11
+
10
12
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
11
13
  _typeof = function (obj) {
12
14
  return typeof obj;
@@ -76,13 +78,13 @@
76
78
  var source = arguments[i] != null ? arguments[i] : {};
77
79
 
78
80
  if (i % 2) {
79
- ownKeys(source, true).forEach(function (key) {
81
+ ownKeys(Object(source), true).forEach(function (key) {
80
82
  _defineProperty(target, key, source[key]);
81
83
  });
82
84
  } else if (Object.getOwnPropertyDescriptors) {
83
85
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
84
86
  } else {
85
- ownKeys(source).forEach(function (key) {
87
+ ownKeys(Object(source)).forEach(function (key) {
86
88
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
87
89
  });
88
90
  }
@@ -128,7 +130,7 @@
128
130
  }
129
131
 
130
132
  function _slicedToArray(arr, i) {
131
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
133
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
132
134
  }
133
135
 
134
136
  function _arrayWithHoles(arr) {
@@ -136,10 +138,7 @@
136
138
  }
137
139
 
138
140
  function _iterableToArrayLimit(arr, i) {
139
- if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
140
- return;
141
- }
142
-
141
+ if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
143
142
  var _arr = [];
144
143
  var _n = true;
145
144
  var _d = false;
@@ -165,8 +164,25 @@
165
164
  return _arr;
166
165
  }
167
166
 
167
+ function _unsupportedIterableToArray(o, minLen) {
168
+ if (!o) return;
169
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
170
+ var n = Object.prototype.toString.call(o).slice(8, -1);
171
+ if (n === "Object" && o.constructor) n = o.constructor.name;
172
+ if (n === "Map" || n === "Set") return Array.from(o);
173
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
174
+ }
175
+
176
+ function _arrayLikeToArray(arr, len) {
177
+ if (len == null || len > arr.length) len = arr.length;
178
+
179
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
180
+
181
+ return arr2;
182
+ }
183
+
168
184
  function _nonIterableRest() {
169
- throw new TypeError("Invalid attempt to destructure non-iterable instance");
185
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
170
186
  }
171
187
 
172
188
  var voidElements = {
@@ -381,7 +397,7 @@
381
397
  var I18nContext = React__default.createContext();
382
398
  function setDefaults() {
383
399
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
384
- defaultOptions = _objectSpread2({}, defaultOptions, {}, options);
400
+ defaultOptions = _objectSpread2(_objectSpread2({}, defaultOptions), options);
385
401
  }
386
402
  function getDefaults() {
387
403
  return defaultOptions;
@@ -431,7 +447,7 @@
431
447
 
432
448
  if (ForComponent.getInitialProps) {
433
449
  ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {
434
- resolve(_objectSpread2({}, componentsInitialProps, {}, i18nInitialProps));
450
+ resolve(_objectSpread2(_objectSpread2({}, componentsInitialProps), i18nInitialProps));
435
451
  });
436
452
  } else {
437
453
  resolve(i18nInitialProps);
@@ -612,9 +628,22 @@
612
628
  }
613
629
 
614
630
  getData(children);
615
- var interpolatedString = i18n.services.interpolator.interpolate(targetString, _objectSpread2({}, data, {}, combinedTOpts), i18n.language);
631
+ var interpolatedString = i18n.services.interpolator.interpolate(targetString, _objectSpread2(_objectSpread2({}, data), combinedTOpts), i18n.language);
616
632
  var ast = htmlParseStringify2.parse("<0>".concat(interpolatedString, "</0>"));
617
633
 
634
+ function renderInner(child, node, rootReactNode) {
635
+ var childs = getChildren(child);
636
+ var mappedChildren = mapAST(childs, node.children, rootReactNode);
637
+ return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;
638
+ }
639
+
640
+ function pushTranslatedJSX(child, inner, mem, i) {
641
+ if (child.dummy) child.children = inner;
642
+ mem.push(React__default.cloneElement(child, _objectSpread2(_objectSpread2({}, child.props), {}, {
643
+ key: i
644
+ }), inner));
645
+ }
646
+
618
647
  function mapAST(reactNode, astNode, rootReactNode) {
619
648
  var reactNodes = getAsArray(reactNode);
620
649
  var astNodes = getAsArray(astNode);
@@ -629,52 +658,54 @@
629
658
  props: node.attrs
630
659
  }, tmp) : tmp;
631
660
  var isElement = React__default.isValidElement(child);
661
+ var isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;
662
+ var isEmptyTransWithHTML = emptyChildrenButNeedsHandling && _typeof(child) === 'object' && child.dummy && !isElement;
663
+ var isKnownComponent = _typeof(children) === 'object' && children !== null && Object.hasOwnProperty.call(children, node.name);
632
664
 
633
665
  if (typeof child === 'string') {
634
666
  mem.push(child);
635
- } else if (hasChildren(child) || isElement && hasChildren(node, true) && !node.voidElement) {
636
- var childs = getChildren(child);
637
- var mappedChildren = mapAST(childs, node.children, rootReactNode);
638
- var inner = hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;
639
- if (child.dummy) child.children = inner;
640
- mem.push(React__default.cloneElement(child, _objectSpread2({}, child.props, {
641
- key: i
642
- }), inner));
643
- } else if (emptyChildrenButNeedsHandling && _typeof(child) === 'object' && child.dummy && !isElement) {
667
+ } else if (hasChildren(child) || isValidTranslationWithChildren) {
668
+ var inner = renderInner(child, node, rootReactNode);
669
+ pushTranslatedJSX(child, inner, mem, i);
670
+ } else if (isEmptyTransWithHTML) {
644
671
  var _inner = mapAST(reactNodes, node.children, rootReactNode);
645
672
 
646
- mem.push(React__default.cloneElement(child, _objectSpread2({}, child.props, {
673
+ mem.push(React__default.cloneElement(child, _objectSpread2(_objectSpread2({}, child.props), {}, {
647
674
  key: i
648
675
  }), _inner));
649
676
  } else if (Number.isNaN(parseFloat(node.name))) {
650
- if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {
677
+ if (isKnownComponent) {
678
+ var _inner2 = renderInner(child, node, rootReactNode);
679
+
680
+ pushTranslatedJSX(child, _inner2, mem, i);
681
+ } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {
651
682
  if (node.voidElement) {
652
683
  mem.push(React__default.createElement(node.name, {
653
684
  key: "".concat(node.name, "-").concat(i)
654
685
  }));
655
686
  } else {
656
- var _inner2 = mapAST(reactNodes, node.children, rootReactNode);
687
+ var _inner3 = mapAST(reactNodes, node.children, rootReactNode);
657
688
 
658
689
  mem.push(React__default.createElement(node.name, {
659
690
  key: "".concat(node.name, "-").concat(i)
660
- }, _inner2));
691
+ }, _inner3));
661
692
  }
662
693
  } else if (node.voidElement) {
663
694
  mem.push("<".concat(node.name, " />"));
664
695
  } else {
665
- var _inner3 = mapAST(reactNodes, node.children, rootReactNode);
696
+ var _inner4 = mapAST(reactNodes, node.children, rootReactNode);
666
697
 
667
- mem.push("<".concat(node.name, ">").concat(_inner3, "</").concat(node.name, ">"));
698
+ mem.push("<".concat(node.name, ">").concat(_inner4, "</").concat(node.name, ">"));
668
699
  }
669
700
  } else if (_typeof(child) === 'object' && !isElement) {
670
701
  var content = node.children[0] ? translationContent : null;
671
702
  if (content) mem.push(content);
672
703
  } else if (node.children.length === 1 && translationContent) {
673
- mem.push(React__default.cloneElement(child, _objectSpread2({}, child.props, {
704
+ mem.push(React__default.cloneElement(child, _objectSpread2(_objectSpread2({}, child.props), {}, {
674
705
  key: i
675
706
  }), translationContent));
676
707
  } else {
677
- mem.push(React__default.cloneElement(child, _objectSpread2({}, child.props, {
708
+ mem.push(React__default.cloneElement(child, _objectSpread2(_objectSpread2({}, child.props), {}, {
678
709
  key: i
679
710
  })));
680
711
  }
@@ -714,7 +745,7 @@
714
745
  var i18n = i18nFromProps || i18nFromContext || getI18n();
715
746
 
716
747
  if (!i18n) {
717
- warnOnce('You will need pass in an i18next instance by using i18nextReactModule');
748
+ warnOnce('You will need to pass in an i18next instance by using i18nextReactModule');
718
749
  return children;
719
750
  }
720
751
 
@@ -722,7 +753,7 @@
722
753
  return k;
723
754
  };
724
755
 
725
- var reactI18nextOptions = _objectSpread2({}, getDefaults(), {}, i18n.options && i18n.options.react);
756
+ var reactI18nextOptions = _objectSpread2(_objectSpread2({}, getDefaults()), i18n.options && i18n.options.react);
726
757
 
727
758
  var namespaces = ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;
728
759
  namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];
@@ -736,9 +767,9 @@
736
767
  }
737
768
  };
738
769
 
739
- var combinedTOpts = _objectSpread2({}, tOptions, {
770
+ var combinedTOpts = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, tOptions), {}, {
740
771
  count: count
741
- }, values, {}, interpolationOverride, {
772
+ }, values), interpolationOverride), {}, {
742
773
  defaultValue: defaultValue,
743
774
  ns: namespaces
744
775
  });
@@ -761,7 +792,7 @@
761
792
  if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();
762
793
 
763
794
  if (!i18n) {
764
- warnOnce('You will need pass in an i18next instance by using initReactI18next');
795
+ warnOnce('You will need to pass in an i18next instance by using initReactI18next');
765
796
 
766
797
  var notReadyT = function notReadyT(k) {
767
798
  return Array.isArray(k) ? k[k.length - 1] : k;
@@ -774,7 +805,7 @@
774
805
  return retNotReady;
775
806
  }
776
807
 
777
- var i18nOptions = _objectSpread2({}, getDefaults(), {}, i18n.options.react, {}, props);
808
+ var i18nOptions = _objectSpread2(_objectSpread2(_objectSpread2({}, getDefaults()), i18n.options.react), props);
778
809
 
779
810
  var useSuspense = i18nOptions.useSuspense;
780
811
  var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;
@@ -831,7 +862,6 @@
831
862
  if (!ready && !useSuspense) return ret;
832
863
  throw new Promise(function (resolve) {
833
864
  loadNamespaces(i18n, namespaces, function () {
834
- if (isMounted.current) setT(getT());
835
865
  resolve();
836
866
  });
837
867
  });
@@ -850,7 +880,7 @@
850
880
  i18n = _useTranslation2[1],
851
881
  ready = _useTranslation2[2];
852
882
 
853
- var passDownProps = _objectSpread2({}, rest, {
883
+ var passDownProps = _objectSpread2(_objectSpread2({}, rest), {}, {
854
884
  t: t,
855
885
  i18n: i18n,
856
886
  tReady: ready
@@ -899,11 +929,14 @@
899
929
  var i18n = _ref.i18n,
900
930
  defaultNS = _ref.defaultNS,
901
931
  children = _ref.children;
902
- return React.createElement(I18nContext.Provider, {
903
- value: {
932
+ var value = React.useMemo(function () {
933
+ return {
904
934
  i18n: i18n,
905
935
  defaultNS: defaultNS
906
- }
936
+ };
937
+ }, [i18n, defaultNS]);
938
+ return React.createElement(I18nContext.Provider, {
939
+ value: value
907
940
  }, children);
908
941
  }
909
942
 
@@ -1 +1 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],n):n((e=e||self).ReactI18next={},e.React)}(this,(function(e,n){"use strict";var t="default"in n?n.default:n;function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function c(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(t,!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(t).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}function u(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var t=[],r=!0,i=!1,a=void 0;try{for(var o,c=e[Symbol.iterator]();!(r=(o=c.next()).done)&&(t.push(o.value),!n||t.length!==n);r=!0);}catch(e){i=!0,a=e}finally{try{r||null==c.return||c.return()}finally{if(i)throw a}}return t}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var l={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},f=/([\w-]+)|=|(['"])([.\s\S]*?)\2/g,p=/(?:<!--[\S\s]*?-->|<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>)/g,d=Object.create?Object.create(null):{};function g(e,n,t,r,i){var a=n.indexOf("<",r),o=n.slice(r,-1===a?void 0:a);/^\s*$/.test(o)&&(o=" "),(!i&&a>-1&&t+e.length>=0||" "!==o)&&e.push({type:"text",content:o})}function m(e,n){switch(n.type){case"text":return e+n.content;case"tag":return e+="<"+n.name+(n.attrs?function(e){var n=[];for(var t in e)n.push(t+'="'+e[t]+'"');return n.length?" "+n.join(" "):""}(n.attrs):"")+(n.voidElement?"/>":">"),n.voidElement?e:e+n.children.reduce(m,"")+"</"+n.name+">"}}var h,y={parse:function(e,n){n||(n={}),n.components||(n.components=d);var t,r=[],i=-1,a=[],o={},c=!1;return e.replace(p,(function(s,u){if(c){if(s!=="</"+t.name+">")return;c=!1}var p,d="/"!==s.charAt(1),m=0===s.indexOf("\x3c!--"),h=u+s.length,y=e.charAt(h);d&&!m&&(i++,"tag"===(t=function(e){var n,t=0,r=!0,i={type:"tag",name:"",voidElement:!1,attrs:{},children:[]};return e.replace(f,(function(a){if("="===a)return r=!0,void t++;r?0===t?((l[a]||"/"===e.charAt(e.length-2))&&(i.voidElement=!0),i.name=a):(i.attrs[n]=a.replace(/^['"]|['"]$/g,""),n=void 0):(n&&(i.attrs[n]=n),n=a),t++,r=!1})),i}(s)).type&&n.components[t.name]&&(t.type="component",c=!0),t.voidElement||c||!y||"<"===y||g(t.children,e,i,h,n.ignoreWhitespace),o[t.tagName]=t,0===i&&r.push(t),(p=a[i-1])&&p.children.push(t),a[i]=t),(m||!d||t.voidElement)&&(m||i--,!c&&"<"!==y&&y&&g(p=-1===i?r:a[i].children,e,i,h,n.ignoreWhitespace))})),!r.length&&e.length&&g(r,e,0,0,n.ignoreWhitespace),r},stringify:function(e){return e.reduce((function(e,n){return e+m("",n)}),"")}},v={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0},b=t.createContext();function O(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};v=c({},v,{},e)}function w(){return v}var j=function(){function e(){!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.usedNamespaces={}}var n,t,r;return n=e,(t=[{key:"addUsedNamespaces",value:function(e){var n=this;e.forEach((function(e){n.usedNamespaces[e]||(n.usedNamespaces[e]=!0)}))}},{key:"getUsedNamespaces",value:function(){return Object.keys(this.usedNamespaces)}}])&&i(n.prototype,t),r&&i(n,r),e}();function E(e){h=e}function S(){return h}var x={type:"3rdParty",init:function(e){O(e.options.react),E(e)}};function N(e){return function(n){return new Promise((function(t){var r=k();e.getInitialProps?e.getInitialProps(n).then((function(e){t(c({},e,{},r))})):t(r)}))}}function k(){var e=S(),n=e.reportNamespaces?e.reportNamespaces.getUsedNamespaces():[],t={},r={};return e.languages.forEach((function(t){r[t]={},n.forEach((function(n){r[t][n]=e.getResourceBundle(t,n)||{}}))})),t.initialI18nStore=r,t.initialLanguage=e.language,t}function I(){if(console&&console.warn){for(var e,n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];"string"==typeof t[0]&&(t[0]="react-i18next:: ".concat(t[0])),(e=console).warn.apply(e,t)}}var P={};function R(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&P[n[0]]||("string"==typeof n[0]&&(P[n[0]]=new Date),I.apply(void 0,n))}function C(e,n,t){e.loadNamespaces(n,(function(){if(e.isInitialized)t();else{e.on("initialized",(function n(){setTimeout((function(){e.off("initialized",n)}),0),t()}))}}))}function T(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}function A(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function L(e){return e?e&&e.children?e.children:e.props&&e.props.children:[]}function z(e){return Array.isArray(e)?e:[e]}function D(e,n,i,a,o){if(""===n)return[];var s=a.transKeepBasicHtmlNodesFor||[],u=n&&new RegExp(s.join("|")).test(n);if(!e&&!u)return[n];var l={};!function e(n){z(n).forEach((function(n){"string"!=typeof n&&(A(n)?e(L(n)):"object"!==r(n)||t.isValidElement(n)||Object.assign(l,n))}))}(e);var f=i.services.interpolator.interpolate(n,c({},l,{},o),i.language);var p=function e(n,i,o){var l=z(n);return z(i).reduce((function(n,i,f){var p,d,g,m=i.children&&i.children[0]&&i.children[0].content;if("tag"===i.type){var h=l[parseInt(i.name,10)];!h&&1===o.length&&o[0][i.name]&&(h=o[0][i.name]),h||(h={});var y=0!==Object.keys(i.attrs).length?(p={props:i.attrs},(g=c({},d=h)).props=Object.assign(p.props,d.props),g):h,v=t.isValidElement(y);if("string"==typeof y)n.push(y);else if(A(y)||v&&A(i,!0)&&!i.voidElement){var b=L(y),O=e(b,i.children,o),w=function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return t.isValidElement(e)}))}(b)&&0===O.length?b:O;y.dummy&&(y.children=w),n.push(t.cloneElement(y,c({},y.props,{key:f}),w))}else if(u&&"object"===r(y)&&y.dummy&&!v){var j=e(l,i.children,o);n.push(t.cloneElement(y,c({},y.props,{key:f}),j))}else if(Number.isNaN(parseFloat(i.name)))if(a.transSupportBasicHtmlNodes&&s.indexOf(i.name)>-1)if(i.voidElement)n.push(t.createElement(i.name,{key:"".concat(i.name,"-").concat(f)}));else{var E=e(l,i.children,o);n.push(t.createElement(i.name,{key:"".concat(i.name,"-").concat(f)},E))}else if(i.voidElement)n.push("<".concat(i.name," />"));else{var S=e(l,i.children,o);n.push("<".concat(i.name,">").concat(S,"</").concat(i.name,">"))}else if("object"!==r(y)||v)1===i.children.length&&m?n.push(t.cloneElement(y,c({},y.props,{key:f}),m)):n.push(t.cloneElement(y,c({},y.props,{key:f})));else{var x=i.children[0]?m:null;x&&n.push(x)}}else"text"===i.type&&n.push(i.content);return n}),[])}([{dummy:!0,children:e}],y.parse("<0>".concat(f,"</0>")),z(e||[]));return L(p[0])}function B(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.i18n,i=n.useContext(b)||{},a=i.i18n,o=i.defaultNS,s=r||a||S();if(s&&!s.reportNamespaces&&(s.reportNamespaces=new j),!s){R("You will need pass in an i18next instance by using initReactI18next");var l=function(e){return Array.isArray(e)?e[e.length-1]:e},f=[l,{},!1];return f.t=l,f.i18n={},f.ready=!1,f}var p=c({},w(),{},s.options.react,{},t),d=p.useSuspense,g=e||o||s.options&&s.options.defaultNS;g="string"==typeof g?[g]:g||["translation"],s.reportNamespaces.addUsedNamespaces&&s.reportNamespaces.addUsedNamespaces(g);var m=(s.isInitialized||s.initializedStoreOnce)&&g.every((function(e){return function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return R("i18n.languages were undefined or empty",n.languages),!0;var r=n.languages[0],i=!!n.options&&n.options.fallbackLng,a=n.languages[n.languages.length-1];if("cimode"===r.toLowerCase())return!0;var o=function(e,t){var r=n.services.backendConnector.state["".concat(e,"|").concat(t)];return-1===r||2===r};return!(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!o(n.isLanguageChangingTo,e))&&(!!n.hasResourceBundle(r,e)||(!n.services.backendConnector.backend||!(!o(r,e)||i&&!o(a,e))))}(e,s,p)}));function h(){return{t:s.getFixedT(null,"fallback"===p.nsMode?g:g[0])}}var y=u(n.useState(h()),2),v=y[0],O=y[1],E=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){E.current&&O(h())}return E.current=!0,m||d||C(s,g,(function(){E.current&&O(h())})),e&&s&&s.on(e,t),n&&s&&s.store.on(n,t),function(){E.current=!1,e&&s&&e.split(" ").forEach((function(e){return s.off(e,t)})),n&&s&&n.split(" ").forEach((function(e){return s.store.off(e,t)}))}}),[g.join()]);var x=[v.t,s,m];if(x.t=v.t,x.i18n=s,x.ready=m,m)return x;if(!m&&!d)return x;throw new Promise((function(e){C(s,g,(function(){E.current&&O(h()),e()}))}))}function V(e,t){var r=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).i18n,i=(n.useContext(b)||{}).i18n,a=r||i||S();a.options&&a.options.isClone||(e&&!a.initializedStoreOnce&&(a.services.resourceStore.data=e,a.options.ns=Object.values(e).reduce((function(e,n){return Object.keys(n).forEach((function(n){e.indexOf(n)<0&&e.push(n)})),e}),a.options.ns),a.initializedStoreOnce=!0,a.isInitialized=!0),t&&!a.initializedLanguageOnce&&(a.changeLanguage(t),a.initializedLanguageOnce=!0))}e.I18nContext=b,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,i=e.children;return n.createElement(b.Provider,{value:{i18n:t,defaultNS:r}},i)},e.Trans=function(e){var i=e.children,a=e.count,o=e.parent,u=e.i18nKey,l=e.tOptions,f=e.values,p=e.defaults,d=e.components,g=e.ns,m=e.i18n,h=e.t,y=s(e,["children","count","parent","i18nKey","tOptions","values","defaults","components","ns","i18n","t"]),v=n.useContext(b)||{},O=v.i18n,j=v.defaultNS,E=m||O||S();if(!E)return R("You will need pass in an i18next instance by using i18nextReactModule"),i;var x=h||E.t.bind(E)||function(e){return e},N=c({},w(),{},E.options&&E.options.react),k=g||x.ns||j||E.options&&E.options.defaultNS;k="string"==typeof k?[k]:k||["translation"];var P=p||function e(n,i){if(!n)return"";var a="",o=z(n),c=i.transKeepBasicHtmlNodesFor||[];return o.forEach((function(n,o){if("string"==typeof n)a+="".concat(n);else if(t.isValidElement(n)){var u=Object.keys(n.props).length,l=c.indexOf(n.type)>-1,f=n.props.children;if(!f&&l&&0===u)a+="<".concat(n.type,"/>");else if(f||l&&0===u)if(n.props.i18nIsDynamicList)a+="<".concat(o,"></").concat(o,">");else if(l&&1===u&&"string"==typeof f)a+="<".concat(n.type,">").concat(f,"</").concat(n.type,">");else{var p=e(f,i);a+="<".concat(o,">").concat(p,"</").concat(o,">")}else a+="<".concat(o,"></").concat(o,">")}else if("object"===r(n)){var d=n.format,g=s(n,["format"]),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];a+="{{".concat(h,"}}")}else I("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",n)}else I("Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.",n)})),a}(i,N)||N.transEmptyNodeValue||u,C=N.hashTransKey,T=u||(C?C(P):P),A=c({},l,{count:a},f,{},f?{}:{interpolation:{prefix:"#$?",suffix:"?$#"}},{defaultValue:P,ns:k}),L=D(d||i,T?x(T,A):P,E,N,A),B=void 0!==o?o:N.defaultTransParent;return B?t.createElement(B,y,L):L},e.Translation=function(e){var n=e.ns,t=e.children,r=u(B(n,s(e,["ns","children"])),3),i=r[0],a=r[1],o=r[2];return t(i,{i18n:a,lng:a.language},o)},e.composeInitialProps=N,e.getDefaults=w,e.getI18n=S,e.getInitialProps=k,e.initReactI18next=x,e.setDefaults=O,e.setI18n=E,e.useSSR=V,e.useTranslation=B,e.withSSR=function(){return function(e){function n(n){var r=n.initialI18nStore,i=n.initialLanguage,a=s(n,["initialI18nStore","initialLanguage"]);return V(r,i),t.createElement(e,c({},a))}return n.getInitialProps=N(e),n.displayName="withI18nextSSR(".concat(T(e),")"),n.WrappedComponent=e,n}},e.withTranslation=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(r){function i(i){var a=i.forwardedRef,o=s(i,["forwardedRef"]),l=u(B(e,o),3),f=c({},o,{t:l[0],i18n:l[1],tReady:l[2]});return n.withRef&&a?f.ref=a:!n.withRef&&a&&(f.forwardedRef=a),t.createElement(r,f)}i.displayName="withI18nextTranslation(".concat(T(r),")"),i.WrappedComponent=r;return n.withRef?t.forwardRef((function(e,n){return t.createElement(i,Object.assign({},e,{forwardedRef:n}))})):i}},Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],n):n((e=e||self).ReactI18next={},e.React)}(this,(function(e,n){"use strict";var t="default"in n?n.default:n;function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function c(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}function u(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var t=[],r=!0,i=!1,a=void 0;try{for(var o,c=e[Symbol.iterator]();!(r=(o=c.next()).done)&&(t.push(o.value),!n||t.length!==n);r=!0);}catch(e){i=!0,a=e}finally{try{r||null==c.return||c.return()}finally{if(i)throw a}}return t}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return l(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return l(e,n)}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var f={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},p=/([\w-]+)|=|(['"])([.\s\S]*?)\2/g,d=/(?:<!--[\S\s]*?-->|<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>)/g,g=Object.create?Object.create(null):{};function m(e,n,t,r,i){var a=n.indexOf("<",r),o=n.slice(r,-1===a?void 0:a);/^\s*$/.test(o)&&(o=" "),(!i&&a>-1&&t+e.length>=0||" "!==o)&&e.push({type:"text",content:o})}var y,h=function(e,n){n||(n={}),n.components||(n.components=g);var t,r=[],i=-1,a=[],o={},c=!1;return e.replace(d,(function(s,u){if(c){if(s!=="</"+t.name+">")return;c=!1}var l,d="/"!==s.charAt(1),g=0===s.indexOf("\x3c!--"),y=u+s.length,h=e.charAt(y);d&&!g&&(i++,"tag"===(t=function(e){var n,t=0,r=!0,i={type:"tag",name:"",voidElement:!1,attrs:{},children:[]};return e.replace(p,(function(a){if("="===a)return r=!0,void t++;r?0===t?((f[a]||"/"===e.charAt(e.length-2))&&(i.voidElement=!0),i.name=a):(i.attrs[n]=a.replace(/^['"]|['"]$/g,""),n=void 0):(n&&(i.attrs[n]=n),n=a),t++,r=!1})),i}(s)).type&&n.components[t.name]&&(t.type="component",c=!0),t.voidElement||c||!h||"<"===h||m(t.children,e,i,y,n.ignoreWhitespace),o[t.tagName]=t,0===i&&r.push(t),(l=a[i-1])&&l.children.push(t),a[i]=t),(g||!d||t.voidElement)&&(g||i--,!c&&"<"!==h&&h&&m(l=-1===i?r:a[i].children,e,i,y,n.ignoreWhitespace))})),!r.length&&e.length&&m(r,e,0,0,n.ignoreWhitespace),r},v={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0},b=t.createContext();function O(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};v=c(c({},v),e)}function j(){return v}var w=function(){function e(){!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.usedNamespaces={}}var n,t,r;return n=e,(t=[{key:"addUsedNamespaces",value:function(e){var n=this;e.forEach((function(e){n.usedNamespaces[e]||(n.usedNamespaces[e]=!0)}))}},{key:"getUsedNamespaces",value:function(){return Object.keys(this.usedNamespaces)}}])&&i(n.prototype,t),r&&i(n,r),e}();function S(e){y=e}function E(){return y}var N={type:"3rdParty",init:function(e){O(e.options.react),S(e)}};function x(e){return function(n){return new Promise((function(t){var r=I();e.getInitialProps?e.getInitialProps(n).then((function(e){t(c(c({},e),r))})):t(r)}))}}function I(){var e=E(),n=e.reportNamespaces?e.reportNamespaces.getUsedNamespaces():[],t={},r={};return e.languages.forEach((function(t){r[t]={},n.forEach((function(n){r[t][n]=e.getResourceBundle(t,n)||{}}))})),t.initialI18nStore=r,t.initialLanguage=e.language,t}function k(){if(console&&console.warn){for(var e,n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];"string"==typeof t[0]&&(t[0]="react-i18next:: ".concat(t[0])),(e=console).warn.apply(e,t)}}var P={};function R(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&P[n[0]]||("string"==typeof n[0]&&(P[n[0]]=new Date),k.apply(void 0,n))}function C(e,n,t){e.loadNamespaces(n,(function(){if(e.isInitialized)t();else{e.on("initialized",(function n(){setTimeout((function(){e.off("initialized",n)}),0),t()}))}}))}function A(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return R("i18n.languages were undefined or empty",n.languages),!0;var r=n.languages[0],i=!!n.options&&n.options.fallbackLng,a=n.languages[n.languages.length-1];if("cimode"===r.toLowerCase())return!0;var o=function(e,t){var r=n.services.backendConnector.state["".concat(e,"|").concat(t)];return-1===r||2===r};return!(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!o(n.isLanguageChangingTo,e))&&(!!n.hasResourceBundle(r,e)||(!n.services.backendConnector.backend||!(!o(r,e)||i&&!o(a,e))))}function T(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}function L(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function z(e){return e?e&&e.children?e.children:e.props&&e.props.children:[]}function D(e){return Array.isArray(e)?e:[e]}function B(e,n,i,a,o){if(""===n)return[];var s=a.transKeepBasicHtmlNodesFor||[],u=n&&new RegExp(s.join("|")).test(n);if(!e&&!u)return[n];var l={};!function e(n){D(n).forEach((function(n){"string"!=typeof n&&(L(n)?e(z(n)):"object"!==r(n)||t.isValidElement(n)||Object.assign(l,n))}))}(e);var f=i.services.interpolator.interpolate(n,c(c({},l),o),i.language),p=h("<0>".concat(f,"</0>"));function d(e,n,r){var i=z(e),a=m(i,n.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return t.isValidElement(e)}))}(i)&&0===a.length?i:a}function g(e,n,r,i){e.dummy&&(e.children=n),r.push(t.cloneElement(e,c(c({},e.props),{},{key:i}),n))}function m(n,i,o){var l=D(n);return D(i).reduce((function(n,i,f){var p,y,h,v=i.children&&i.children[0]&&i.children[0].content;if("tag"===i.type){var b=l[parseInt(i.name,10)];!b&&1===o.length&&o[0][i.name]&&(b=o[0][i.name]),b||(b={});var O=0!==Object.keys(i.attrs).length?(p={props:i.attrs},(h=c({},y=b)).props=Object.assign(p.props,y.props),h):b,j=t.isValidElement(O),w=j&&L(i,!0)&&!i.voidElement,S=u&&"object"===r(O)&&O.dummy&&!j,E="object"===r(e)&&null!==e&&Object.hasOwnProperty.call(e,i.name);if("string"==typeof O)n.push(O);else if(L(O)||w){g(O,d(O,i,o),n,f)}else if(S){var N=m(l,i.children,o);n.push(t.cloneElement(O,c(c({},O.props),{},{key:f}),N))}else if(Number.isNaN(parseFloat(i.name))){if(E)g(O,d(O,i,o),n,f);else if(a.transSupportBasicHtmlNodes&&s.indexOf(i.name)>-1)if(i.voidElement)n.push(t.createElement(i.name,{key:"".concat(i.name,"-").concat(f)}));else{var x=m(l,i.children,o);n.push(t.createElement(i.name,{key:"".concat(i.name,"-").concat(f)},x))}else if(i.voidElement)n.push("<".concat(i.name," />"));else{var I=m(l,i.children,o);n.push("<".concat(i.name,">").concat(I,"</").concat(i.name,">"))}}else if("object"!==r(O)||j)1===i.children.length&&v?n.push(t.cloneElement(O,c(c({},O.props),{},{key:f}),v)):n.push(t.cloneElement(O,c(c({},O.props),{},{key:f})));else{var k=i.children[0]?v:null;k&&n.push(k)}}else"text"===i.type&&n.push(i.content);return n}),[])}return z(m([{dummy:!0,children:e}],p,D(e||[]))[0])}function U(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.i18n,i=n.useContext(b)||{},a=i.i18n,o=i.defaultNS,s=r||a||E();if(s&&!s.reportNamespaces&&(s.reportNamespaces=new w),!s){R("You will need to pass in an i18next instance by using initReactI18next");var l=function(e){return Array.isArray(e)?e[e.length-1]:e},f=[l,{},!1];return f.t=l,f.i18n={},f.ready=!1,f}var p=c(c(c({},j()),s.options.react),t),d=p.useSuspense,g=e||o||s.options&&s.options.defaultNS;g="string"==typeof g?[g]:g||["translation"],s.reportNamespaces.addUsedNamespaces&&s.reportNamespaces.addUsedNamespaces(g);var m=(s.isInitialized||s.initializedStoreOnce)&&g.every((function(e){return A(e,s,p)}));function y(){return{t:s.getFixedT(null,"fallback"===p.nsMode?g:g[0])}}var h=n.useState(y()),v=u(h,2),O=v[0],S=v[1],N=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){N.current&&S(y())}return N.current=!0,m||d||C(s,g,(function(){N.current&&S(y())})),e&&s&&s.on(e,t),n&&s&&s.store.on(n,t),function(){N.current=!1,e&&s&&e.split(" ").forEach((function(e){return s.off(e,t)})),n&&s&&n.split(" ").forEach((function(e){return s.store.off(e,t)}))}}),[g.join()]);var x=[O.t,s,m];if(x.t=O.t,x.i18n=s,x.ready=m,m)return x;if(!m&&!d)return x;throw new Promise((function(e){C(s,g,(function(){e()}))}))}function V(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.i18n,a=n.useContext(b)||{},o=a.i18n,c=i||o||E();c.options&&c.options.isClone||(e&&!c.initializedStoreOnce&&(c.services.resourceStore.data=e,c.options.ns=Object.values(e).reduce((function(e,n){return Object.keys(n).forEach((function(n){e.indexOf(n)<0&&e.push(n)})),e}),c.options.ns),c.initializedStoreOnce=!0,c.isInitialized=!0),t&&!c.initializedLanguageOnce&&(c.changeLanguage(t),c.initializedLanguageOnce=!0))}e.I18nContext=b,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,i=e.children,a=n.useMemo((function(){return{i18n:t,defaultNS:r}}),[t,r]);return n.createElement(b.Provider,{value:a},i)},e.Trans=function(e){var i=e.children,a=e.count,o=e.parent,u=e.i18nKey,l=e.tOptions,f=e.values,p=e.defaults,d=e.components,g=e.ns,m=e.i18n,y=e.t,h=s(e,["children","count","parent","i18nKey","tOptions","values","defaults","components","ns","i18n","t"]),v=n.useContext(b)||{},O=v.i18n,w=v.defaultNS,S=m||O||E();if(!S)return R("You will need to pass in an i18next instance by using i18nextReactModule"),i;var N=y||S.t.bind(S)||function(e){return e},x=c(c({},j()),S.options&&S.options.react),I=g||N.ns||w||S.options&&S.options.defaultNS;I="string"==typeof I?[I]:I||["translation"];var P=p||function e(n,i){if(!n)return"";var a="",o=D(n),c=i.transKeepBasicHtmlNodesFor||[];return o.forEach((function(n,o){if("string"==typeof n)a+="".concat(n);else if(t.isValidElement(n)){var u=Object.keys(n.props).length,l=c.indexOf(n.type)>-1,f=n.props.children;if(!f&&l&&0===u)a+="<".concat(n.type,"/>");else if(f||l&&0===u)if(n.props.i18nIsDynamicList)a+="<".concat(o,"></").concat(o,">");else if(l&&1===u&&"string"==typeof f)a+="<".concat(n.type,">").concat(f,"</").concat(n.type,">");else{var p=e(f,i);a+="<".concat(o,">").concat(p,"</").concat(o,">")}else a+="<".concat(o,"></").concat(o,">")}else if("object"===r(n)){var d=n.format,g=s(n,["format"]),m=Object.keys(g);if(1===m.length){var y=d?"".concat(m[0],", ").concat(d):m[0];a+="{{".concat(y,"}}")}else k("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",n)}else k("Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.",n)})),a}(i,x)||x.transEmptyNodeValue||u,C=x.hashTransKey,A=u||(C?C(P):P),T=f?{}:{interpolation:{prefix:"#$?",suffix:"?$#"}},L=c(c(c(c({},l),{},{count:a},f),T),{},{defaultValue:P,ns:I}),z=B(d||i,A?N(A,L):P,S,x,L),U=void 0!==o?o:x.defaultTransParent;return U?t.createElement(U,h,z):z},e.Translation=function(e){var n=e.ns,t=e.children,r=u(U(n,s(e,["ns","children"])),3),i=r[0],a=r[1],o=r[2];return t(i,{i18n:a,lng:a.language},o)},e.composeInitialProps=x,e.getDefaults=j,e.getI18n=E,e.getInitialProps=I,e.initReactI18next=N,e.setDefaults=O,e.setI18n=S,e.useSSR=V,e.useTranslation=U,e.withSSR=function(){return function(e){function n(n){var r=n.initialI18nStore,i=n.initialLanguage,a=s(n,["initialI18nStore","initialLanguage"]);return V(r,i),t.createElement(e,c({},a))}return n.getInitialProps=x(e),n.displayName="withI18nextSSR(".concat(T(e),")"),n.WrappedComponent=e,n}},e.withTranslation=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(r){function i(i){var a=i.forwardedRef,o=s(i,["forwardedRef"]),l=u(U(e,o),3),f=l[0],p=l[1],d=l[2],g=c(c({},o),{},{t:f,i18n:p,tReady:d});return n.withRef&&a?g.ref=a:!n.withRef&&a&&(g.forwardedRef=a),t.createElement(r,g)}i.displayName="withI18nextTranslation(".concat(T(r),")"),i.WrappedComponent=r;return n.withRef?t.forwardRef((function(e,n){return t.createElement(i,Object.assign({},e,{forwardedRef:n}))})):i}},Object.defineProperty(e,"__esModule",{value:!0})}));
@@ -1,14 +1,18 @@
1
- import { createElement } from 'react';
1
+ import { createElement, useMemo } from 'react';
2
2
  import { I18nContext } from './context';
3
3
 
4
4
  export function I18nextProvider({ i18n, defaultNS, children }) {
5
+ const value = useMemo(
6
+ () => ({
7
+ i18n,
8
+ defaultNS,
9
+ }),
10
+ [i18n, defaultNS],
11
+ );
5
12
  return createElement(
6
13
  I18nContext.Provider,
7
14
  {
8
- value: {
9
- i18n,
10
- defaultNS,
11
- },
15
+ value,
12
16
  },
13
17
  children,
14
18
  );
package/src/Trans.js CHANGED
@@ -135,6 +135,18 @@ function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts) {
135
135
  // -> avoids issues in parser removing prepending text nodes
136
136
  const ast = HTML.parse(`<0>${interpolatedString}</0>`);
137
137
 
138
+ function renderInner(child, node, rootReactNode) {
139
+ const childs = getChildren(child);
140
+ const mappedChildren = mapAST(childs, node.children, rootReactNode);
141
+ // console.warn('INNER', node.name, node, child, childs, node.children, mappedChildren);
142
+ return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;
143
+ }
144
+
145
+ function pushTranslatedJSX(child, inner, mem, i) {
146
+ if (child.dummy) child.children = inner; // needed on preact!
147
+ mem.push(React.cloneElement(child, { ...child.props, key: i }, inner));
148
+ }
149
+
138
150
  // reactNode (the jsx root element or child)
139
151
  // astNode (the translation string as html ast)
140
152
  // rootReactNode (the most outer jsx children array or trans components prop)
@@ -154,28 +166,28 @@ function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts) {
154
166
  Object.keys(node.attrs).length !== 0 ? mergeProps({ props: node.attrs }, tmp) : tmp;
155
167
 
156
168
  const isElement = React.isValidElement(child);
169
+
170
+ const isValidTranslationWithChildren =
171
+ isElement && hasChildren(node, true) && !node.voidElement;
172
+
173
+ const isEmptyTransWithHTML =
174
+ emptyChildrenButNeedsHandling && typeof child === 'object' && child.dummy && !isElement;
175
+
176
+ const isKnownComponent =
177
+ typeof children === 'object' &&
178
+ children !== null &&
179
+ Object.hasOwnProperty.call(children, node.name);
157
180
  // console.warn('CHILD', node.name, node, isElement, child);
158
181
 
159
182
  if (typeof child === 'string') {
160
183
  mem.push(child);
161
184
  } else if (
162
185
  hasChildren(child) || // the jsx element has children -> loop
163
- (isElement && hasChildren(node, true) && !node.voidElement) // valid jsx element with no children but the translation has -> loop
164
- ) {
165
- const childs = getChildren(child);
166
- const mappedChildren = mapAST(childs, node.children, rootReactNode);
167
- // console.warn('INNER', node.name, node, child, childs, node.children, mappedChildren);
168
- const inner =
169
- hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;
170
-
171
- if (child.dummy) child.children = inner; // needed on preact!
172
- mem.push(React.cloneElement(child, { ...child.props, key: i }, inner));
173
- } else if (
174
- emptyChildrenButNeedsHandling &&
175
- typeof child === 'object' &&
176
- child.dummy &&
177
- !isElement
186
+ isValidTranslationWithChildren // valid jsx element with no children but the translation has -> loop
178
187
  ) {
188
+ const inner = renderInner(child, node, rootReactNode);
189
+ pushTranslatedJSX(child, inner, mem, i);
190
+ } else if (isEmptyTransWithHTML) {
179
191
  // we have a empty Trans node (the dummy element) with a targetstring that contains html tags needing
180
192
  // conversion to react nodes
181
193
  // so we just need to map the inner stuff
@@ -186,7 +198,10 @@ function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts) {
186
198
  );
187
199
  mem.push(React.cloneElement(child, { ...child.props, key: i }, inner));
188
200
  } else if (Number.isNaN(parseFloat(node.name))) {
189
- if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {
201
+ if (isKnownComponent) {
202
+ const inner = renderInner(child, node, rootReactNode);
203
+ pushTranslatedJSX(child, inner, mem, i);
204
+ } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {
190
205
  if (node.voidElement) {
191
206
  mem.push(React.createElement(node.name, { key: `${node.name}-${i}` }));
192
207
  } else {
@@ -256,7 +271,7 @@ export function Trans({
256
271
  const i18n = i18nFromProps || i18nFromContext || getI18n();
257
272
 
258
273
  if (!i18n) {
259
- warnOnce('You will need pass in an i18next instance by using i18nextReactModule');
274
+ warnOnce('You will need to pass in an i18next instance by using i18nextReactModule');
260
275
  return children;
261
276
  }
262
277
 
package/src/index.d.ts CHANGED
@@ -33,7 +33,7 @@ export interface TransProps<E extends Element = HTMLDivElement>
33
33
  extends React.HTMLProps<E>,
34
34
  Partial<WithT> {
35
35
  children?: React.ReactNode;
36
- components?: readonly React.ReactNode[];
36
+ components?: readonly React.ReactNode[] | { [tagName: string]: React.ReactNode };
37
37
  count?: number;
38
38
  defaults?: string;
39
39
  i18n?: i18n;
@@ -46,7 +46,7 @@ export interface TransProps<E extends Element = HTMLDivElement>
46
46
  }
47
47
  export function Trans<E extends Element = HTMLDivElement>(props: TransProps<E>): React.ReactElement;
48
48
 
49
- export function useSSR(initialI18nStore: any, initialLanguage: any): void;
49
+ export function useSSR(initialI18nStore: Resource, initialLanguage: string): void;
50
50
 
51
51
  export interface UseTranslationOptions {
52
52
  i18n?: i18n;
@@ -102,7 +102,7 @@ export interface I18nextProviderProps {
102
102
  }
103
103
 
104
104
  export const I18nextProvider: React.FunctionComponent<I18nextProviderProps>;
105
- export const I18nContext: React.Context<i18n>;
105
+ export const I18nContext: React.Context<{ i18n: i18n }>;
106
106
 
107
107
  export interface TranslationProps {
108
108
  children: (
@@ -9,7 +9,7 @@ export function useTranslation(ns, props = {}) {
9
9
  const i18n = i18nFromProps || i18nFromContext || getI18n();
10
10
  if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();
11
11
  if (!i18n) {
12
- warnOnce('You will need pass in an i18next instance by using initReactI18next');
12
+ warnOnce('You will need to pass in an i18next instance by using initReactI18next');
13
13
  const notReadyT = k => (Array.isArray(k) ? k[k.length - 1] : k);
14
14
  const retNotReady = [notReadyT, {}, false];
15
15
  retNotReady.t = notReadyT;
@@ -85,7 +85,6 @@ export function useTranslation(ns, props = {}) {
85
85
  // not yet loaded namespaces -> load them -> and trigger suspense
86
86
  throw new Promise(resolve => {
87
87
  loadNamespaces(i18n, namespaces, () => {
88
- if (isMounted.current) setT(getT());
89
88
  resolve();
90
89
  });
91
90
  });
package/src/utils.js CHANGED
@@ -41,6 +41,28 @@ export function loadNamespaces(i18n, ns, cb) {
41
41
  }
42
42
 
43
43
  export function hasLoadedNamespace(ns, i18n, options = {}) {
44
+ /*
45
+
46
+ IN I18NEXT > v19.4.5 WE CAN (INTRODUCED JUNE 2020)
47
+
48
+ return i18n.hasLoadedNamespace(ns, {
49
+ precheck: (i18nInstance, loadNotPending) => {
50
+ if (
51
+ options.bindI18n &&
52
+ options.bindI18n.indexOf('languageChanging') > -1 &&
53
+ i18n.services.backendConnector.backend &&
54
+ i18n.isLanguageChangingTo &&
55
+ !loadNotPending(i18n.isLanguageChangingTo, ns)
56
+ )
57
+ return false;
58
+ }
59
+ })
60
+
61
+ // WILL BE BREAKING AS DEPENDS ON SPECIFIC I18NEXT VERSION
62
+ // WAIT A LITTLE FOR I18NEXT BEING UPDATED IN THE WILD
63
+
64
+ */
65
+
44
66
  if (!i18n.languages || !i18n.languages.length) {
45
67
  warnOnce('i18n.languages were undefined or empty', i18n.languages);
46
68
  return true;