react-i18next 11.8.14 → 11.11.0

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
@@ -6,6 +6,44 @@
6
6
 
7
7
  var React__default = 'default' in React ? React['default'] : React;
8
8
 
9
+ function ownKeys(object, enumerableOnly) {
10
+ var keys = Object.keys(object);
11
+
12
+ if (Object.getOwnPropertySymbols) {
13
+ var symbols = Object.getOwnPropertySymbols(object);
14
+
15
+ if (enumerableOnly) {
16
+ symbols = symbols.filter(function (sym) {
17
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
18
+ });
19
+ }
20
+
21
+ keys.push.apply(keys, symbols);
22
+ }
23
+
24
+ return keys;
25
+ }
26
+
27
+ function _objectSpread2(target) {
28
+ for (var i = 1; i < arguments.length; i++) {
29
+ var source = arguments[i] != null ? arguments[i] : {};
30
+
31
+ if (i % 2) {
32
+ ownKeys(Object(source), true).forEach(function (key) {
33
+ _defineProperty(target, key, source[key]);
34
+ });
35
+ } else if (Object.getOwnPropertyDescriptors) {
36
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
37
+ } else {
38
+ ownKeys(Object(source)).forEach(function (key) {
39
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
40
+ });
41
+ }
42
+ }
43
+
44
+ return target;
45
+ }
46
+
9
47
  function _typeof(obj) {
10
48
  "@babel/helpers - typeof";
11
49
 
@@ -59,40 +97,6 @@
59
97
  return obj;
60
98
  }
61
99
 
62
- function ownKeys(object, enumerableOnly) {
63
- var keys = Object.keys(object);
64
-
65
- if (Object.getOwnPropertySymbols) {
66
- var symbols = Object.getOwnPropertySymbols(object);
67
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
68
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
69
- });
70
- keys.push.apply(keys, symbols);
71
- }
72
-
73
- return keys;
74
- }
75
-
76
- function _objectSpread2(target) {
77
- for (var i = 1; i < arguments.length; i++) {
78
- var source = arguments[i] != null ? arguments[i] : {};
79
-
80
- if (i % 2) {
81
- ownKeys(Object(source), true).forEach(function (key) {
82
- _defineProperty(target, key, source[key]);
83
- });
84
- } else if (Object.getOwnPropertyDescriptors) {
85
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
86
- } else {
87
- ownKeys(Object(source)).forEach(function (key) {
88
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
89
- });
90
- }
91
- }
92
-
93
- return target;
94
- }
95
-
96
100
  function _objectWithoutPropertiesLoose(source, excluded) {
97
101
  if (source == null) return {};
98
102
  var target = {};
@@ -138,14 +142,17 @@
138
142
  }
139
143
 
140
144
  function _iterableToArrayLimit(arr, i) {
141
- if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
145
+ var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
146
+
147
+ if (_i == null) return;
142
148
  var _arr = [];
143
149
  var _n = true;
144
150
  var _d = false;
145
- var _e = undefined;
151
+
152
+ var _s, _e;
146
153
 
147
154
  try {
148
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
155
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
149
156
  _arr.push(_s.value);
150
157
 
151
158
  if (i && _arr.length === i) break;
@@ -318,6 +325,7 @@
318
325
  bindI18nStore: '',
319
326
  transEmptyNodeValue: '',
320
327
  transSupportBasicHtmlNodes: true,
328
+ transWrapTextNodes: '',
321
329
  transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],
322
330
  useSuspense: true
323
331
  };
@@ -466,6 +474,9 @@
466
474
  return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');
467
475
  }
468
476
 
477
+ var _excluded = ["format"],
478
+ _excluded2 = ["children", "count", "parent", "i18nKey", "tOptions", "values", "defaults", "components", "ns", "i18n", "t"];
479
+
469
480
  function hasChildren(node, checkLength) {
470
481
  if (!node) return false;
471
482
  var base = node.props ? node.props.children : node.children;
@@ -521,9 +532,11 @@
521
532
  var content = nodesToString(childChildren, i18nOptions);
522
533
  stringNode += "<".concat(childIndex, ">").concat(content, "</").concat(childIndex, ">");
523
534
  }
535
+ } else if (child === null) {
536
+ warn("Trans: the passed in value is invalid - seems you passed in a null child.");
524
537
  } else if (_typeof(child) === 'object') {
525
538
  var format = child.format,
526
- clone = _objectWithoutProperties(child, ["format"]);
539
+ clone = _objectWithoutProperties(child, _excluded);
527
540
 
528
541
  var keys = Object.keys(clone);
529
542
 
@@ -638,7 +651,15 @@
638
651
  })));
639
652
  }
640
653
  } else if (node.type === 'text') {
641
- mem.push(node.content);
654
+ var wrapTextNodes = i18nOptions.transWrapTextNodes;
655
+
656
+ if (wrapTextNodes) {
657
+ mem.push(React__default.createElement(wrapTextNodes, {
658
+ key: "".concat(node.name, "-").concat(i)
659
+ }, node.content));
660
+ } else {
661
+ mem.push(node.content);
662
+ }
642
663
  }
643
664
 
644
665
  return mem;
@@ -665,7 +686,7 @@
665
686
  ns = _ref.ns,
666
687
  i18nFromProps = _ref.i18n,
667
688
  tFromProps = _ref.t,
668
- additionalProps = _objectWithoutProperties(_ref, ["children", "count", "parent", "i18nKey", "tOptions", "values", "defaults", "components", "ns", "i18n", "t"]);
689
+ additionalProps = _objectWithoutProperties(_ref, _excluded2);
669
690
 
670
691
  var _ref2 = React.useContext(I18nContext) || {},
671
692
  i18nFromContext = _ref2.i18n,
@@ -804,12 +825,13 @@
804
825
  });
805
826
  }
806
827
 
828
+ var _excluded$1 = ["forwardedRef"];
807
829
  function withTranslation(ns) {
808
830
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
809
831
  return function Extend(WrappedComponent) {
810
832
  function I18nextWithTranslation(_ref) {
811
833
  var forwardedRef = _ref.forwardedRef,
812
- rest = _objectWithoutProperties(_ref, ["forwardedRef"]);
834
+ rest = _objectWithoutProperties(_ref, _excluded$1);
813
835
 
814
836
  var _useTranslation = useTranslation(ns, rest),
815
837
  _useTranslation2 = _slicedToArray(_useTranslation, 3),
@@ -845,10 +867,11 @@
845
867
  };
846
868
  }
847
869
 
870
+ var _excluded$2 = ["ns", "children"];
848
871
  function Translation(props) {
849
872
  var ns = props.ns,
850
873
  children = props.children,
851
- options = _objectWithoutProperties(props, ["ns", "children"]);
874
+ options = _objectWithoutProperties(props, _excluded$2);
852
875
 
853
876
  var _useTranslation = useTranslation(ns, options),
854
877
  _useTranslation2 = _slicedToArray(_useTranslation, 3),
@@ -905,12 +928,13 @@
905
928
  }
906
929
  }
907
930
 
931
+ var _excluded$3 = ["initialI18nStore", "initialLanguage"];
908
932
  function withSSR() {
909
933
  return function Extend(WrappedComponent) {
910
934
  function I18nextWithSSR(_ref) {
911
935
  var initialI18nStore = _ref.initialI18nStore,
912
936
  initialLanguage = _ref.initialLanguage,
913
- rest = _objectWithoutProperties(_ref, ["initialI18nStore", "initialLanguage"]);
937
+ rest = _objectWithoutProperties(_ref, _excluded$3);
914
938
 
915
939
  useSSR(initialI18nStore, initialLanguage);
916
940
  return React__default.createElement(WrappedComponent, _objectSpread2({}, rest));
@@ -923,17 +947,42 @@
923
947
  };
924
948
  }
925
949
 
950
+ var date = function date() {
951
+ return '';
952
+ };
953
+ var time = function time() {
954
+ return '';
955
+ };
956
+ var number = function number() {
957
+ return '';
958
+ };
959
+ var select = function select() {
960
+ return '';
961
+ };
962
+ var plural = function plural() {
963
+ return '';
964
+ };
965
+ var selectOrdinal = function selectOrdinal() {
966
+ return '';
967
+ };
968
+
926
969
  exports.I18nContext = I18nContext;
927
970
  exports.I18nextProvider = I18nextProvider;
928
971
  exports.Trans = Trans;
929
972
  exports.Translation = Translation;
930
973
  exports.composeInitialProps = composeInitialProps;
974
+ exports.date = date;
931
975
  exports.getDefaults = getDefaults;
932
976
  exports.getI18n = getI18n;
933
977
  exports.getInitialProps = getInitialProps;
934
978
  exports.initReactI18next = initReactI18next;
979
+ exports.number = number;
980
+ exports.plural = plural;
981
+ exports.select = select;
982
+ exports.selectOrdinal = selectOrdinal;
935
983
  exports.setDefaults = setDefaults;
936
984
  exports.setI18n = setI18n;
985
+ exports.time = time;
937
986
  exports.useSSR = useSSR;
938
987
  exports.useTranslation = useTranslation;
939
988
  exports.withSSR = withSSR;
@@ -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(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,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},p=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function d(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(f[t[1]]||"/"===e.charAt(e.length-2))&&(n.voidElement=!0),n.name.startsWith("!--"))){var r=e.indexOf("--\x3e");return{type:"comment",comment:-1!==r?e.slice(4,r):""}}for(var i=new RegExp(p),a=null;null!==(a=i.exec(e));)if(a[0].trim())if(a[1]){var o=a[1].trim(),c=[o,""];o.indexOf("=")>-1&&(c=o.split("=")),n.attrs[c[0]]=c[1],i.lastIndex--}else a[2]&&(n.attrs[a[2]]=a[3].trim().substring(1,a[3].length-1));return n}var m=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,g=/^\s*$/,h=Object.create(null);var y,v=function(e,n){n||(n={}),n.components||(n.components=h);var t,r=[],i=[],a=-1,o=!1;if(0!==e.indexOf("<")){var c=e.indexOf("<");r.push({type:"text",content:-1===c?e:e.substring(0,c)})}return e.replace(m,(function(c,s){if(o){if(c!=="</"+t.name+">")return;o=!1}var u,l="/"!==c.charAt(1),f=c.startsWith("\x3c!--"),p=s+c.length,m=e.charAt(p);if(f){var h=d(c);return a<0?(r.push(h),r):((u=i[a]).children.push(h),r)}if(l&&(a++,"tag"===(t=d(c)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!m||"<"===m||t.children.push({type:"text",content:e.slice(p,e.indexOf("<",p))}),0===a&&r.push(t),(u=i[a-1])&&u.children.push(t),i[a]=t),(!l||t.voidElement)&&(a>-1&&(t.voidElement||t.name===c.slice(2,-1))&&(a--,t=-1===a?r:i[a]),!o&&"<"!==m&&m)){u=-1===a?r:i[a].children;var y=e.indexOf("<",p),v=e.slice(p,-1===y?void 0:y);g.test(v)&&(v=" "),(y>-1&&a+u.length>=0||" "!==v)&&u.push({type:"text",content:v})}})),r},b={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0},O=t.createContext();function w(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};b=c(c({},b),e)}function j(){return b}var x=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){y=e}function S(){return y}var N={type:"3rdParty",init:function(e){w(e.options.react),E(e)}};function I(e){return function(n){return new Promise((function(t){var r=k();e.getInitialProps?e.getInitialProps(n).then((function(e){t(c(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 P(){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 R={};function C(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&R[n[0]]||("string"==typeof n[0]&&(R[n[0]]=new Date),P.apply(void 0,n))}function A(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,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return C("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 z(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 D(e){return e?e&&e.children?e.children:e.props&&e.props.children:[]}function B(e){return Array.isArray(e)?e:[e]}function U(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){B(n).forEach((function(n){"string"!=typeof n&&(L(n)?e(D(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=v("<0>".concat(f,"</0>"));function d(e,n,r){var i=D(e),a=g(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 m(e,n,r,i,a){e.dummy&&(e.children=n),r.push(t.cloneElement(e,c(c({},e.props),{},{key:i}),a?void 0:n))}function g(n,i,o){var l=B(n);return B(i).reduce((function(n,i,f){var p,h,y,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},(y=c({},h=b)).props=Object.assign(p.props,h.props),y):b,w=t.isValidElement(O),j=w&&L(i,!0)&&!i.voidElement,x=u&&"object"===r(O)&&O.dummy&&!w,E="object"===r(e)&&null!==e&&Object.hasOwnProperty.call(e,i.name);if("string"==typeof O)n.push(O);else if(L(O)||j){m(O,d(O,i,o),n,f)}else if(x){var S=g(l,i.children,o);n.push(t.cloneElement(O,c(c({},O.props),{},{key:f}),S))}else if(Number.isNaN(parseFloat(i.name))){if(E)m(O,d(O,i,o),n,f,i.voidElement);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 N=g(l,i.children,o);n.push(t.createElement(i.name,{key:"".concat(i.name,"-").concat(f)},N))}else if(i.voidElement)n.push("<".concat(i.name," />"));else{var I=g(l,i.children,o);n.push("<".concat(i.name,">").concat(I,"</").concat(i.name,">"))}}else if("object"!==r(O)||w)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 D(g([{dummy:!0,children:e}],p,B(e||[]))[0])}function V(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.i18n,i=n.useContext(O)||{},a=i.i18n,o=i.defaultNS,s=r||a||S();if(s&&!s.reportNamespaces&&(s.reportNamespaces=new x),!s){C("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}s.options.react&&void 0!==s.options.react.wait&&C("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=c(c(c({},j()),s.options.react),t),d=p.useSuspense,m=e||o||s.options&&s.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],s.reportNamespaces.addUsedNamespaces&&s.reportNamespaces.addUsedNamespaces(m);var g=(s.isInitialized||s.initializedStoreOnce)&&m.every((function(e){return T(e,s,p)}));function h(){return s.getFixedT(null,"fallback"===p.nsMode?m:m[0])}var y=n.useState(h),v=u(y,2),b=v[0],w=v[1],E=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){E.current&&w(h)}return E.current=!0,g||d||A(s,m,(function(){E.current&&w(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)}))}}),[s,m.join()]);var N=n.useRef(!0);n.useEffect((function(){E.current&&!N.current&&w(h),N.current=!1}),[s]);var I=[b,s,g];if(I.t=b,I.i18n=s,I.ready=g,g)return I;if(!g&&!d)return I;throw new Promise((function(e){A(s,m,(function(){e()}))}))}function K(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.i18n,a=n.useContext(O)||{},o=a.i18n,c=i||o||S();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=O,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(O.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=void 0===l?{}:l,p=e.values,d=e.defaults,m=e.components,g=e.ns,h=e.i18n,y=e.t,v=s(e,["children","count","parent","i18nKey","tOptions","values","defaults","components","ns","i18n","t"]),b=n.useContext(O)||{},w=b.i18n,x=b.defaultNS,E=h||w||S();if(!E)return C("You will need to pass in an i18next instance by using i18nextReactModule"),i;var N=y||E.t.bind(E)||function(e){return e},I=c(c({},j()),E.options&&E.options.react),k=g||N.ns||x||E.options&&E.options.defaultNS;k="string"==typeof k?[k]:k||["translation"];var R=d||function e(n,i){if(!n)return"";var a="",o=B(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,m=s(n,["format"]),g=Object.keys(m);if(1===g.length){var h=d?"".concat(g[0],", ").concat(d):g[0];a+="{{".concat(h,"}}")}else P("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",n)}else P("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,I)||I.transEmptyNodeValue||u,A=I.hashTransKey,T=u||(A?A(R):R),z=p?f.interpolation:{interpolation:c(c({},f.interpolation),{},{prefix:"#$?",suffix:"?$#"})},L=c(c(c(c({},f),{},{count:a},p),z),{},{defaultValue:R,ns:k}),D=U(m||i,T?N(T,L):R,E,I,L),V=void 0!==o?o:I.defaultTransParent;return V?t.createElement(V,v,D):D},e.Translation=function(e){var n=e.ns,t=e.children,r=u(V(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=I,e.getDefaults=j,e.getI18n=S,e.getInitialProps=k,e.initReactI18next=N,e.setDefaults=w,e.setI18n=E,e.useSSR=K,e.useTranslation=V,e.withSSR=function(){return function(e){function n(n){var r=n.initialI18nStore,i=n.initialLanguage,a=s(n,["initialI18nStore","initialLanguage"]);return K(r,i),t.createElement(e,c({},a))}return n.getInitialProps=I(e),n.displayName="withI18nextSSR(".concat(z(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(V(e,o),3),f=l[0],p=l[1],d=l[2],m=c(c({},o),{},{t:f,i18n:p,tReady:d});return n.withRef&&a?m.ref=a:!n.withRef&&a&&(m.forwardedRef=a),t.createElement(r,m)}i.displayName="withI18nextTranslation(".concat(z(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,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 i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){c(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function a(e){return(a="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 o(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 c(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,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){var t=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null==t)return;var r,i,a=[],o=!0,c=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(a.push(r.value),!n||a.length!==n);o=!0);}catch(e){c=!0,i=e}finally{try{o||null==t.return||t.return()}finally{if(c)throw i}}return a}(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,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},p=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function d(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(f[t[1]]||"/"===e.charAt(e.length-2))&&(n.voidElement=!0),n.name.startsWith("!--"))){var r=e.indexOf("--\x3e");return{type:"comment",comment:-1!==r?e.slice(4,r):""}}for(var i=new RegExp(p),a=null;null!==(a=i.exec(e));)if(a[0].trim())if(a[1]){var o=a[1].trim(),c=[o,""];o.indexOf("=")>-1&&(c=o.split("=")),n.attrs[c[0]]=c[1],i.lastIndex--}else a[2]&&(n.attrs[a[2]]=a[3].trim().substring(1,a[3].length-1));return n}var m=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,h=/^\s*$/,g=Object.create(null);var y,v=function(e,n){n||(n={}),n.components||(n.components=g);var t,r=[],i=[],a=-1,o=!1;if(0!==e.indexOf("<")){var c=e.indexOf("<");r.push({type:"text",content:-1===c?e:e.substring(0,c)})}return e.replace(m,(function(c,s){if(o){if(c!=="</"+t.name+">")return;o=!1}var u,l="/"!==c.charAt(1),f=c.startsWith("\x3c!--"),p=s+c.length,m=e.charAt(p);if(f){var g=d(c);return a<0?(r.push(g),r):((u=i[a]).children.push(g),r)}if(l&&(a++,"tag"===(t=d(c)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!m||"<"===m||t.children.push({type:"text",content:e.slice(p,e.indexOf("<",p))}),0===a&&r.push(t),(u=i[a-1])&&u.children.push(t),i[a]=t),(!l||t.voidElement)&&(a>-1&&(t.voidElement||t.name===c.slice(2,-1))&&(a--,t=-1===a?r:i[a]),!o&&"<"!==m&&m)){u=-1===a?r:i[a].children;var y=e.indexOf("<",p),v=e.slice(p,-1===y?void 0:y);h.test(v)&&(v=" "),(y>-1&&a+u.length>=0||" "!==v)&&u.push({type:"text",content:v})}})),r},b={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0},O=t.createContext();function w(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};b=i(i({},b),e)}function x(){return b}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)}}])&&o(n.prototype,t),r&&o(n,r),e}();function E(e){y=e}function S(){return y}var N={type:"3rdParty",init:function(e){w(e.options.react),E(e)}};function I(e){return function(n){return new Promise((function(t){var r=k();e.getInitialProps?e.getInitialProps(n).then((function(e){t(i(i({},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 P(){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 R={};function C(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&R[n[0]]||("string"==typeof n[0]&&(R[n[0]]=new Date),P.apply(void 0,n))}function A(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,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return C("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 z(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}var L=["format"],D=["children","count","parent","i18nKey","tOptions","values","defaults","components","ns","i18n","t"];function B(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function U(e){return e?e&&e.children?e.children:e.props&&e.props.children:[]}function V(e){return Array.isArray(e)?e:[e]}function K(e,n,r,o,c){if(""===n)return[];var s=o.transKeepBasicHtmlNodesFor||[],u=n&&new RegExp(s.join("|")).test(n);if(!e&&!u)return[n];var l={};!function e(n){V(n).forEach((function(n){"string"!=typeof n&&(B(n)?e(U(n)):"object"!==a(n)||t.isValidElement(n)||Object.assign(l,n))}))}(e);var f=r.services.interpolator.interpolate(n,i(i({},l),c),r.language),p=v("<0>".concat(f,"</0>"));function d(e,n,r){var i=U(e),a=h(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 m(e,n,r,a,o){e.dummy&&(e.children=n),r.push(t.cloneElement(e,i(i({},e.props),{},{key:a}),o?void 0:n))}function h(n,r,c){var l=V(n);return V(r).reduce((function(n,r,f){var p,g,y,v=r.children&&r.children[0]&&r.children[0].content;if("tag"===r.type){var b=l[parseInt(r.name,10)];!b&&1===c.length&&c[0][r.name]&&(b=c[0][r.name]),b||(b={});var O=0!==Object.keys(r.attrs).length?(p={props:r.attrs},(y=i({},g=b)).props=Object.assign(p.props,g.props),y):b,w=t.isValidElement(O),x=w&&B(r,!0)&&!r.voidElement,j=u&&"object"===a(O)&&O.dummy&&!w,E="object"===a(e)&&null!==e&&Object.hasOwnProperty.call(e,r.name);if("string"==typeof O)n.push(O);else if(B(O)||x){m(O,d(O,r,c),n,f)}else if(j){var S=h(l,r.children,c);n.push(t.cloneElement(O,i(i({},O.props),{},{key:f}),S))}else if(Number.isNaN(parseFloat(r.name))){if(E)m(O,d(O,r,c),n,f,r.voidElement);else if(o.transSupportBasicHtmlNodes&&s.indexOf(r.name)>-1)if(r.voidElement)n.push(t.createElement(r.name,{key:"".concat(r.name,"-").concat(f)}));else{var N=h(l,r.children,c);n.push(t.createElement(r.name,{key:"".concat(r.name,"-").concat(f)},N))}else if(r.voidElement)n.push("<".concat(r.name," />"));else{var I=h(l,r.children,c);n.push("<".concat(r.name,">").concat(I,"</").concat(r.name,">"))}}else if("object"!==a(O)||w)1===r.children.length&&v?n.push(t.cloneElement(O,i(i({},O.props),{},{key:f}),v)):n.push(t.cloneElement(O,i(i({},O.props),{},{key:f})));else{var k=r.children[0]?v:null;k&&n.push(k)}}else if("text"===r.type){var P=o.transWrapTextNodes;P?n.push(t.createElement(P,{key:"".concat(r.name,"-").concat(f)},r.content)):n.push(r.content)}return n}),[])}return U(h([{dummy:!0,children:e}],p,V(e||[]))[0])}function W(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.i18n,a=n.useContext(O)||{},o=a.i18n,c=a.defaultNS,s=r||o||S();if(s&&!s.reportNamespaces&&(s.reportNamespaces=new j),!s){C("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}s.options.react&&void 0!==s.options.react.wait&&C("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=i(i(i({},x()),s.options.react),t),d=p.useSuspense,m=e||c||s.options&&s.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],s.reportNamespaces.addUsedNamespaces&&s.reportNamespaces.addUsedNamespaces(m);var h=(s.isInitialized||s.initializedStoreOnce)&&m.every((function(e){return T(e,s,p)}));function g(){return s.getFixedT(null,"fallback"===p.nsMode?m:m[0])}var y=n.useState(g),v=u(y,2),b=v[0],w=v[1],E=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){E.current&&w(g)}return E.current=!0,h||d||A(s,m,(function(){E.current&&w(g)})),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)}))}}),[s,m.join()]);var N=n.useRef(!0);n.useEffect((function(){E.current&&!N.current&&w(g),N.current=!1}),[s]);var I=[b,s,h];if(I.t=b,I.i18n=s,I.ready=h,h)return I;if(!h&&!d)return I;throw new Promise((function(e){A(s,m,(function(){e()}))}))}var F=["forwardedRef"];var H=["ns","children"];function M(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.i18n,a=n.useContext(O)||{},o=a.i18n,c=i||o||S();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))}var $=["initialI18nStore","initialLanguage"];e.I18nContext=O,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(O.Provider,{value:a},i)},e.Trans=function(e){var r=e.children,o=e.count,c=e.parent,u=e.i18nKey,l=e.tOptions,f=void 0===l?{}:l,p=e.values,d=e.defaults,m=e.components,h=e.ns,g=e.i18n,y=e.t,v=s(e,D),b=n.useContext(O)||{},w=b.i18n,j=b.defaultNS,E=g||w||S();if(!E)return C("You will need to pass in an i18next instance by using i18nextReactModule"),r;var N=y||E.t.bind(E)||function(e){return e},I=i(i({},x()),E.options&&E.options.react),k=h||N.ns||j||E.options&&E.options.defaultNS;k="string"==typeof k?[k]:k||["translation"];var R=d||function e(n,r){if(!n)return"";var i="",o=V(n),c=r.transKeepBasicHtmlNodesFor||[];return o.forEach((function(n,o){if("string"==typeof n)i+="".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)i+="<".concat(n.type,"/>");else if(f||l&&0===u)if(n.props.i18nIsDynamicList)i+="<".concat(o,"></").concat(o,">");else if(l&&1===u&&"string"==typeof f)i+="<".concat(n.type,">").concat(f,"</").concat(n.type,">");else{var p=e(f,r);i+="<".concat(o,">").concat(p,"</").concat(o,">")}else i+="<".concat(o,"></").concat(o,">")}else if(null===n)P("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===a(n)){var d=n.format,m=s(n,L),h=Object.keys(m);if(1===h.length){var g=d?"".concat(h[0],", ").concat(d):h[0];i+="{{".concat(g,"}}")}else P("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",n)}else P("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)})),i}(r,I)||I.transEmptyNodeValue||u,A=I.hashTransKey,T=u||(A?A(R):R),z=p?f.interpolation:{interpolation:i(i({},f.interpolation),{},{prefix:"#$?",suffix:"?$#"})},B=i(i(i(i({},f),{},{count:o},p),z),{},{defaultValue:R,ns:k}),U=K(m||r,T?N(T,B):R,E,I,B),W=void 0!==c?c:I.defaultTransParent;return W?t.createElement(W,v,U):U},e.Translation=function(e){var n=e.ns,t=e.children,r=u(W(n,s(e,H)),3),i=r[0],a=r[1],o=r[2];return t(i,{i18n:a,lng:a.language},o)},e.composeInitialProps=I,e.date=function(){return""},e.getDefaults=x,e.getI18n=S,e.getInitialProps=k,e.initReactI18next=N,e.number=function(){return""},e.plural=function(){return""},e.select=function(){return""},e.selectOrdinal=function(){return""},e.setDefaults=w,e.setI18n=E,e.time=function(){return""},e.useSSR=M,e.useTranslation=W,e.withSSR=function(){return function(e){function n(n){var r=n.initialI18nStore,a=n.initialLanguage,o=s(n,$);return M(r,a),t.createElement(e,i({},o))}return n.getInitialProps=I(e),n.displayName="withI18nextSSR(".concat(z(e),")"),n.WrappedComponent=e,n}},e.withTranslation=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(r){function a(a){var o=a.forwardedRef,c=s(a,F),l=u(W(e,c),3),f=l[0],p=l[1],d=l[2],m=i(i({},c),{},{t:f,i18n:p,tReady:d});return n.withRef&&o?m.ref=o:!n.withRef&&o&&(m.forwardedRef=o),t.createElement(r,m)}a.displayName="withI18nextTranslation(".concat(z(r),")"),a.WrappedComponent=r;return n.withRef?t.forwardRef((function(e,n){return t.createElement(a,Object.assign({},e,{forwardedRef:n}))})):a}},Object.defineProperty(e,"__esModule",{value:!0})}));
package/src/Trans.js CHANGED
@@ -17,7 +17,7 @@ function getChildren(node) {
17
17
 
18
18
  function hasValidReactChildren(children) {
19
19
  if (Object.prototype.toString.call(children) !== '[object Array]') return false;
20
- return children.every(child => React.isValidElement(child));
20
+ return children.every((child) => React.isValidElement(child));
21
21
  }
22
22
 
23
23
  function getAsArray(data) {
@@ -72,6 +72,8 @@ export function nodesToString(children, i18nOptions) {
72
72
  const content = nodesToString(childChildren, i18nOptions);
73
73
  stringNode += `<${childIndex}>${content}</${childIndex}>`;
74
74
  }
75
+ } else if (child === null) {
76
+ warn(`Trans: the passed in value is invalid - seems you passed in a null child.`);
75
77
  } else if (typeof child === 'object') {
76
78
  // e.g. lorem {{ value, format }} ipsum
77
79
  const { format, ...clone } = child;
@@ -115,7 +117,7 @@ function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts) {
115
117
  function getData(childs) {
116
118
  const childrenArray = getAsArray(childs);
117
119
 
118
- childrenArray.forEach(child => {
120
+ childrenArray.forEach((child) => {
119
121
  if (typeof child === 'string') return;
120
122
  if (hasChildren(child)) getData(getChildren(child));
121
123
  else if (typeof child === 'object' && !React.isValidElement(child))
@@ -240,7 +242,12 @@ function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts) {
240
242
  mem.push(React.cloneElement(child, { ...child.props, key: i }));
241
243
  }
242
244
  } else if (node.type === 'text') {
243
- mem.push(node.content);
245
+ const wrapTextNodes = i18nOptions.transWrapTextNodes;
246
+ if (wrapTextNodes) {
247
+ mem.push(React.createElement(wrapTextNodes, { key: `${node.name}-${i}` }, node.content));
248
+ } else {
249
+ mem.push(node.content);
250
+ }
244
251
  }
245
252
  return mem;
246
253
  }, []);
@@ -275,7 +282,7 @@ export function Trans({
275
282
  return children;
276
283
  }
277
284
 
278
- const t = tFromProps || i18n.t.bind(i18n) || (k => k);
285
+ const t = tFromProps || i18n.t.bind(i18n) || ((k) => k);
279
286
 
280
287
  const reactI18nextOptions = { ...getDefaults(), ...(i18n.options && i18n.options.react) };
281
288
 
package/src/context.js CHANGED
@@ -6,6 +6,7 @@ let defaultOptions = {
6
6
  // nsMode: 'fallback' // loop through all namespaces given to hook, HOC, render prop for key lookup
7
7
  transEmptyNodeValue: '',
8
8
  transSupportBasicHtmlNodes: true,
9
+ transWrapTextNodes: '',
9
10
  transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],
10
11
  // hashTransKey: key => key // calculate a key for Trans component based on defaultValue
11
12
  useSuspense: true,
@@ -29,7 +30,7 @@ export class ReportNamespaces {
29
30
  }
30
31
 
31
32
  addUsedNamespaces(namespaces) {
32
- namespaces.forEach(ns => {
33
+ namespaces.forEach((ns) => {
33
34
  if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;
34
35
  });
35
36
  }
@@ -57,12 +58,12 @@ export const initReactI18next = {
57
58
  };
58
59
 
59
60
  export function composeInitialProps(ForComponent) {
60
- return ctx =>
61
- new Promise(resolve => {
61
+ return (ctx) =>
62
+ new Promise((resolve) => {
62
63
  const i18nInitialProps = getInitialProps();
63
64
 
64
65
  if (ForComponent.getInitialProps) {
65
- ForComponent.getInitialProps(ctx).then(componentsInitialProps => {
66
+ ForComponent.getInitialProps(ctx).then((componentsInitialProps) => {
66
67
  resolve({
67
68
  ...componentsInitialProps,
68
69
  ...i18nInitialProps,
@@ -94,9 +95,9 @@ export function getInitialProps() {
94
95
 
95
96
  const ret = {};
96
97
  const initialI18nStore = {};
97
- i18n.languages.forEach(l => {
98
+ i18n.languages.forEach((l) => {
98
99
  initialI18nStore[l] = {};
99
- namespaces.forEach(ns => {
100
+ namespaces.forEach((ns) => {
100
101
  initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};
101
102
  });
102
103
  });
package/src/index.js CHANGED
@@ -16,3 +16,12 @@ export {
16
16
  composeInitialProps,
17
17
  getInitialProps,
18
18
  } from './context';
19
+
20
+ // dummy functions for icu.macro support
21
+
22
+ export const date = () => '';
23
+ export const time = () => '';
24
+ export const number = () => '';
25
+ export const select = () => '';
26
+ export const plural = () => '';
27
+ export const selectOrdinal = () => '';
@@ -0,0 +1,104 @@
1
+ import React from 'react';
2
+ import { Namespace, DefaultNamespace, TFuncKey, Trans } from '.';
3
+ import { i18n } from 'i18next';
4
+
5
+ export { Trans };
6
+
7
+ declare module 'react-i18next/icu.macro' {
8
+ export interface PluralSubProps<
9
+ K extends TFuncKey<N> extends infer A ? A : never,
10
+ N extends Namespace = DefaultNamespace
11
+ > {
12
+ children?: never;
13
+ i18nKey?: K;
14
+ i18n?: i18n;
15
+ ns?: N;
16
+ count: number;
17
+ zero?: string | React.ReactElement;
18
+ one?: string | React.ReactElement;
19
+ two?: string | React.ReactElement;
20
+ few?: string | React.ReactElement;
21
+ many?: string | React.ReactElement;
22
+ other: string | React.ReactElement;
23
+ }
24
+
25
+ type PluralProps<
26
+ T,
27
+ K extends TFuncKey<N> extends infer A ? A : never,
28
+ N extends Namespace = DefaultNamespace
29
+ > = {
30
+ [P in keyof T]: P extends keyof PluralSubProps<K, N>
31
+ ? // support the standard properties of Plural
32
+ PluralSubProps<K, N>[P]
33
+ : // this supports infinite $0={..} or $123={..}
34
+ // technically it also supports $-1={..} and $2.3={..} but we don't need to
35
+ // worry since that's invalid syntax.
36
+ P extends `$${number}`
37
+ ? string | React.ReactElement
38
+ : never;
39
+ };
40
+
41
+ interface SelectSubProps {
42
+ [key: string]: string | React.ReactElement;
43
+ }
44
+
45
+ interface NoChildren {
46
+ children?: never;
47
+ }
48
+
49
+ interface SelectRequiredProps<
50
+ K extends TFuncKey<N> extends infer A ? A : never,
51
+ N extends Namespace = DefaultNamespace
52
+ > extends NoChildren {
53
+ i18nKey?: K;
54
+ i18n?: i18n;
55
+ ns?: N;
56
+ other: string | React.ReactElement;
57
+ }
58
+
59
+ // defining it this way ensures that `other` is always defined, but allows
60
+ // unlimited other select types.
61
+ type SelectProps<
62
+ K extends TFuncKey<N> extends infer A ? A : never,
63
+ N extends Namespace = DefaultNamespace
64
+ > = SelectSubProps & SelectRequiredProps<K, N>;
65
+
66
+ function Plural<
67
+ T,
68
+ K extends TFuncKey<N> extends infer A ? A : never,
69
+ N extends Namespace = DefaultNamespace
70
+ >(props: PluralProps<T, K, N> & NoChildren): React.ReactElement;
71
+
72
+ function SelectOrdinal<
73
+ T,
74
+ K extends TFuncKey<N> extends infer A ? A : never,
75
+ N extends Namespace = DefaultNamespace
76
+ >(props: PluralProps<T, K, N> & NoChildren): React.ReactElement;
77
+
78
+ function Select<
79
+ K extends TFuncKey<N> extends infer A ? A : never,
80
+ N extends Namespace = DefaultNamespace
81
+ >(props: SelectProps<K, N>): React.ReactElement;
82
+
83
+ function date(strings: TemplateStringsArray, variable: Date): string;
84
+ function time(strings: TemplateStringsArray, variable: Date): string;
85
+ function number(strings: TemplateStringsArray, variable: number): string;
86
+
87
+ type ValidInterpolations = React.ReactElement | string;
88
+
89
+ function plural(
90
+ strings: TemplateStringsArray,
91
+ variable: number,
92
+ ...args: ValidInterpolations[]
93
+ ): string;
94
+ function selectOrdinal(
95
+ strings: TemplateStringsArray,
96
+ variable: number,
97
+ ...args: ValidInterpolations[]
98
+ ): string;
99
+ function select(
100
+ strings: TemplateStringsArray,
101
+ variable: string,
102
+ ...args: ValidInterpolations[]
103
+ ): string;
104
+ }
package/ts4.1/index.d.ts CHANGED
@@ -21,10 +21,45 @@ type Subtract<T extends K, K> = Omit<T, keyof K>;
21
21
 
22
22
  /**
23
23
  * This interface can be augmented by users to add types to `react-i18next` default resources.
24
+ *
25
+ * @deprecated use the `resources` key of `CustomTypeOptions` instead
24
26
  */
25
27
  export interface Resources {}
28
+ /**
29
+ * This interface can be augmented by users to add types to `react-i18next`. It accepts a `defaultNS` and `resources` properties.
30
+ *
31
+ * Usage:
32
+ * ```ts
33
+ * // react-i18next.d.ts
34
+ * import 'react-i18next';
35
+ * declare module 'react-i18next' {
36
+ * interface CustomTypeOptions {
37
+ * defaultNS: 'custom';
38
+ * resources: {
39
+ * custom: {
40
+ * foo: 'foo';
41
+ * };
42
+ * };
43
+ * }
44
+ * }
45
+ * ```
46
+ */
47
+ export interface CustomTypeOptions {}
48
+
49
+ type MergeBy<T, K> = Omit<T, keyof K> & K;
26
50
 
27
- type Fallback<F, T = keyof Resources> = [T] extends [never] ? F : T;
51
+ type TypeOptions = MergeBy<
52
+ {
53
+ defaultNS: 'translation';
54
+ resources: Resources;
55
+ },
56
+ CustomTypeOptions
57
+ >;
58
+
59
+ type DefaultResources = TypeOptions['resources'];
60
+ type DefaultNamespace<T = TypeOptions['defaultNS']> = T extends Fallback<string> ? T : string;
61
+
62
+ type Fallback<F, T = keyof DefaultResources> = [T] extends [never] ? F : T;
28
63
 
29
64
  export type Namespace<F = Fallback<string>> = F | F[];
30
65
 
@@ -90,13 +125,16 @@ type NormalizeMultiReturn<T, V> = V extends `${infer N}:${infer R}`
90
125
  : never
91
126
  : never;
92
127
 
93
- export type TFuncKey<N extends Namespace = DefaultNamespace, T = Resources> = N extends (keyof T)[]
128
+ export type TFuncKey<
129
+ N extends Namespace = DefaultNamespace,
130
+ T = DefaultResources
131
+ > = N extends (keyof T)[]
94
132
  ? NormalizeMulti<T, N[number]>
95
133
  : N extends keyof T
96
134
  ? Normalize<T[N]>
97
135
  : string;
98
136
 
99
- export type TFuncReturn<N, TKeys, TDefaultResult, T = Resources> = N extends (keyof T)[]
137
+ export type TFuncReturn<N, TKeys, TDefaultResult, T = DefaultResources> = N extends (keyof T)[]
100
138
  ? NormalizeMultiReturn<T, TKeys>
101
139
  : N extends keyof T
102
140
  ? NormalizeReturn<T[N], TKeys>
@@ -158,8 +196,6 @@ type UseTranslationResponse<N extends Namespace> = [TFunction<N>, i18n, boolean]
158
196
  ready: boolean;
159
197
  };
160
198
 
161
- type DefaultNamespace<T = 'translation'> = T extends Fallback<string> ? T : string;
162
-
163
199
  export function useTranslation<N extends Namespace = DefaultNamespace>(
164
200
  ns?: N,
165
201
  options?: UseTranslationOptions,