react-i18next 11.8.15 → 11.11.1

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;
@@ -525,7 +536,7 @@
525
536
  warn("Trans: the passed in value is invalid - seems you passed in a null child.");
526
537
  } else if (_typeof(child) === 'object') {
527
538
  var format = child.format,
528
- clone = _objectWithoutProperties(child, ["format"]);
539
+ clone = _objectWithoutProperties(child, _excluded);
529
540
 
530
541
  var keys = Object.keys(clone);
531
542
 
@@ -640,7 +651,15 @@
640
651
  })));
641
652
  }
642
653
  } else if (node.type === 'text') {
643
- 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
+ }
644
663
  }
645
664
 
646
665
  return mem;
@@ -667,7 +686,7 @@
667
686
  ns = _ref.ns,
668
687
  i18nFromProps = _ref.i18n,
669
688
  tFromProps = _ref.t,
670
- additionalProps = _objectWithoutProperties(_ref, ["children", "count", "parent", "i18nKey", "tOptions", "values", "defaults", "components", "ns", "i18n", "t"]);
689
+ additionalProps = _objectWithoutProperties(_ref, _excluded2);
671
690
 
672
691
  var _ref2 = React.useContext(I18nContext) || {},
673
692
  i18nFromContext = _ref2.i18n,
@@ -806,12 +825,13 @@
806
825
  });
807
826
  }
808
827
 
828
+ var _excluded$1 = ["forwardedRef"];
809
829
  function withTranslation(ns) {
810
830
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
811
831
  return function Extend(WrappedComponent) {
812
832
  function I18nextWithTranslation(_ref) {
813
833
  var forwardedRef = _ref.forwardedRef,
814
- rest = _objectWithoutProperties(_ref, ["forwardedRef"]);
834
+ rest = _objectWithoutProperties(_ref, _excluded$1);
815
835
 
816
836
  var _useTranslation = useTranslation(ns, rest),
817
837
  _useTranslation2 = _slicedToArray(_useTranslation, 3),
@@ -847,10 +867,11 @@
847
867
  };
848
868
  }
849
869
 
870
+ var _excluded$2 = ["ns", "children"];
850
871
  function Translation(props) {
851
872
  var ns = props.ns,
852
873
  children = props.children,
853
- options = _objectWithoutProperties(props, ["ns", "children"]);
874
+ options = _objectWithoutProperties(props, _excluded$2);
854
875
 
855
876
  var _useTranslation = useTranslation(ns, options),
856
877
  _useTranslation2 = _slicedToArray(_useTranslation, 3),
@@ -907,12 +928,13 @@
907
928
  }
908
929
  }
909
930
 
931
+ var _excluded$3 = ["initialI18nStore", "initialLanguage"];
910
932
  function withSSR() {
911
933
  return function Extend(WrappedComponent) {
912
934
  function I18nextWithSSR(_ref) {
913
935
  var initialI18nStore = _ref.initialI18nStore,
914
936
  initialLanguage = _ref.initialLanguage,
915
- rest = _objectWithoutProperties(_ref, ["initialI18nStore", "initialLanguage"]);
937
+ rest = _objectWithoutProperties(_ref, _excluded$3);
916
938
 
917
939
  useSSR(initialI18nStore, initialLanguage);
918
940
  return React__default.createElement(WrappedComponent, _objectSpread2({}, rest));
@@ -925,17 +947,42 @@
925
947
  };
926
948
  }
927
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
+
928
969
  exports.I18nContext = I18nContext;
929
970
  exports.I18nextProvider = I18nextProvider;
930
971
  exports.Trans = Trans;
931
972
  exports.Translation = Translation;
932
973
  exports.composeInitialProps = composeInitialProps;
974
+ exports.date = date;
933
975
  exports.getDefaults = getDefaults;
934
976
  exports.getI18n = getI18n;
935
977
  exports.getInitialProps = getInitialProps;
936
978
  exports.initReactI18next = initReactI18next;
979
+ exports.number = number;
980
+ exports.plural = plural;
981
+ exports.select = select;
982
+ exports.selectOrdinal = selectOrdinal;
937
983
  exports.setDefaults = setDefaults;
938
984
  exports.setI18n = setI18n;
985
+ exports.time = time;
939
986
  exports.useSSR = useSSR;
940
987
  exports.useTranslation = useTranslation;
941
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,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,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=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,i,a){e.dummy&&(e.children=n),r.push(t.cloneElement(e,c(c({},e.props),{},{key:i}),a?void 0:n))}function h(n,i,o){var l=B(n);return B(i).reduce((function(n,i,f){var p,g,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({},g=b)).props=Object.assign(p.props,g.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=h(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=h(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=h(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(h([{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 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()}))}))}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,h=e.ns,g=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=g||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=h||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(null===n)P("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===r(n)){var d=n.format,m=s(n,["format"]),h=Object.keys(m);if(1===h.length){var g=d?"".concat(h[0],", ").concat(d):h[0];a+="{{".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)})),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
@@ -242,7 +242,12 @@ function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts) {
242
242
  mem.push(React.cloneElement(child, { ...child.props, key: i }));
243
243
  }
244
244
  } else if (node.type === 'text') {
245
- 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
+ }
246
251
  }
247
252
  return mem;
248
253
  }, []);
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,10 +196,8 @@ 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
- ns?: N,
200
+ ns?: N | Readonly<N>,
165
201
  options?: UseTranslationOptions,
166
202
  ): UseTranslationResponse<N>;
167
203