react-i18next
Advanced tools
Comparing version 12.0.0 to 12.1.0
@@ -0,1 +1,5 @@ | ||
### 12.1.0 | ||
- context-less version of Trans component to be used for environments without react context [1588](https://github.com/i18next/react-i18next/pull/1588) | ||
### 12.0.0 | ||
@@ -2,0 +6,0 @@ |
@@ -317,122 +317,2 @@ define(['exports', 'react'], function (exports, react) { 'use strict'; | ||
var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g; | ||
var htmlEntities = { | ||
'&': '&', | ||
'&': '&', | ||
'<': '<', | ||
'<': '<', | ||
'>': '>', | ||
'>': '>', | ||
''': "'", | ||
''': "'", | ||
'"': '"', | ||
'"': '"', | ||
' ': ' ', | ||
' ': ' ', | ||
'©': 'ยฉ', | ||
'©': 'ยฉ', | ||
'®': 'ยฎ', | ||
'®': 'ยฎ', | ||
'…': 'โฆ', | ||
'…': 'โฆ', | ||
'/': '/', | ||
'/': '/' | ||
}; | ||
var unescapeHtmlEntity = function unescapeHtmlEntity(m) { | ||
return htmlEntities[m]; | ||
}; | ||
var unescape = function unescape(text) { | ||
return text.replace(matchHtmlEntity, unescapeHtmlEntity); | ||
}; | ||
var defaultOptions = { | ||
bindI18n: 'languageChanged', | ||
bindI18nStore: '', | ||
transEmptyNodeValue: '', | ||
transSupportBasicHtmlNodes: true, | ||
transWrapTextNodes: '', | ||
transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'], | ||
useSuspense: true, | ||
unescape: unescape | ||
}; | ||
var i18nInstance; | ||
var I18nContext = react.createContext(); | ||
function setDefaults() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
defaultOptions = _objectSpread2(_objectSpread2({}, defaultOptions), options); | ||
} | ||
function getDefaults() { | ||
return defaultOptions; | ||
} | ||
var ReportNamespaces = function () { | ||
function ReportNamespaces() { | ||
_classCallCheck(this, ReportNamespaces); | ||
this.usedNamespaces = {}; | ||
} | ||
_createClass(ReportNamespaces, [{ | ||
key: "addUsedNamespaces", | ||
value: function addUsedNamespaces(namespaces) { | ||
var _this = this; | ||
namespaces.forEach(function (ns) { | ||
if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true; | ||
}); | ||
} | ||
}, { | ||
key: "getUsedNamespaces", | ||
value: function getUsedNamespaces() { | ||
return Object.keys(this.usedNamespaces); | ||
} | ||
}]); | ||
return ReportNamespaces; | ||
}(); | ||
function setI18n(instance) { | ||
i18nInstance = instance; | ||
} | ||
function getI18n() { | ||
return i18nInstance; | ||
} | ||
var initReactI18next = { | ||
type: '3rdParty', | ||
init: function init(instance) { | ||
setDefaults(instance.options.react); | ||
setI18n(instance); | ||
} | ||
}; | ||
function composeInitialProps(ForComponent) { | ||
return function (ctx) { | ||
return new Promise(function (resolve) { | ||
var i18nInitialProps = getInitialProps(); | ||
if (ForComponent.getInitialProps) { | ||
ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) { | ||
resolve(_objectSpread2(_objectSpread2({}, componentsInitialProps), i18nInitialProps)); | ||
}); | ||
} else { | ||
resolve(i18nInitialProps); | ||
} | ||
}); | ||
}; | ||
} | ||
function getInitialProps() { | ||
var i18n = getI18n(); | ||
var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : []; | ||
var ret = {}; | ||
var initialI18nStore = {}; | ||
i18n.languages.forEach(function (l) { | ||
initialI18nStore[l] = {}; | ||
namespaces.forEach(function (ns) { | ||
initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {}; | ||
}); | ||
}); | ||
ret.initialI18nStore = initialI18nStore; | ||
ret.initialLanguage = i18n.language; | ||
return ret; | ||
} | ||
function warn() { | ||
@@ -521,2 +401,60 @@ if (console && console.warn) { | ||
var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g; | ||
var htmlEntities = { | ||
'&': '&', | ||
'&': '&', | ||
'<': '<', | ||
'<': '<', | ||
'>': '>', | ||
'>': '>', | ||
''': "'", | ||
''': "'", | ||
'"': '"', | ||
'"': '"', | ||
' ': ' ', | ||
' ': ' ', | ||
'©': 'ยฉ', | ||
'©': 'ยฉ', | ||
'®': 'ยฎ', | ||
'®': 'ยฎ', | ||
'…': 'โฆ', | ||
'…': 'โฆ', | ||
'/': '/', | ||
'/': '/' | ||
}; | ||
var unescapeHtmlEntity = function unescapeHtmlEntity(m) { | ||
return htmlEntities[m]; | ||
}; | ||
var unescape = function unescape(text) { | ||
return text.replace(matchHtmlEntity, unescapeHtmlEntity); | ||
}; | ||
var defaultOptions = { | ||
bindI18n: 'languageChanged', | ||
bindI18nStore: '', | ||
transEmptyNodeValue: '', | ||
transSupportBasicHtmlNodes: true, | ||
transWrapTextNodes: '', | ||
transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'], | ||
useSuspense: true, | ||
unescape: unescape | ||
}; | ||
function setDefaults() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
defaultOptions = _objectSpread2(_objectSpread2({}, defaultOptions), options); | ||
} | ||
function getDefaults() { | ||
return defaultOptions; | ||
} | ||
var i18nInstance; | ||
function setI18n(instance) { | ||
i18nInstance = instance; | ||
} | ||
function getI18n() { | ||
return i18nInstance; | ||
} | ||
var _excluded = ["format"], | ||
@@ -742,8 +680,4 @@ _excluded2 = ["children", "count", "parent", "i18nKey", "context", "tOptions", "values", "defaults", "components", "ns", "i18n", "t", "shouldUnescape"]; | ||
var _ref2 = react.useContext(I18nContext) || {}, | ||
i18nFromContext = _ref2.i18n, | ||
defaultNSFromContext = _ref2.defaultNS; | ||
var i18n = i18nFromProps || getI18n(); | ||
var i18n = i18nFromProps || i18nFromContext || getI18n(); | ||
if (!i18n) { | ||
@@ -762,3 +696,3 @@ warnOnce('You will need to pass in an i18next instance by using i18nextReactModule'); | ||
var namespaces = ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS; | ||
var namespaces = ns || t.ns || i18n.options && i18n.options.defaultNS; | ||
namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation']; | ||
@@ -788,2 +722,112 @@ var defaultValue = defaults || nodesToString(children, reactI18nextOptions) || reactI18nextOptions.transEmptyNodeValue || i18nKey; | ||
var initReactI18next = { | ||
type: '3rdParty', | ||
init: function init(instance) { | ||
setDefaults(instance.options.react); | ||
setI18n(instance); | ||
} | ||
}; | ||
var I18nContext = react.createContext(); | ||
var ReportNamespaces = function () { | ||
function ReportNamespaces() { | ||
_classCallCheck(this, ReportNamespaces); | ||
this.usedNamespaces = {}; | ||
} | ||
_createClass(ReportNamespaces, [{ | ||
key: "addUsedNamespaces", | ||
value: function addUsedNamespaces(namespaces) { | ||
var _this = this; | ||
namespaces.forEach(function (ns) { | ||
if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true; | ||
}); | ||
} | ||
}, { | ||
key: "getUsedNamespaces", | ||
value: function getUsedNamespaces() { | ||
return Object.keys(this.usedNamespaces); | ||
} | ||
}]); | ||
return ReportNamespaces; | ||
}(); | ||
function composeInitialProps(ForComponent) { | ||
return function (ctx) { | ||
return new Promise(function (resolve) { | ||
var i18nInitialProps = getInitialProps(); | ||
if (ForComponent.getInitialProps) { | ||
ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) { | ||
resolve(_objectSpread2(_objectSpread2({}, componentsInitialProps), i18nInitialProps)); | ||
}); | ||
} else { | ||
resolve(i18nInitialProps); | ||
} | ||
}); | ||
}; | ||
} | ||
function getInitialProps() { | ||
var i18n = getI18n(); | ||
var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : []; | ||
var ret = {}; | ||
var initialI18nStore = {}; | ||
i18n.languages.forEach(function (l) { | ||
initialI18nStore[l] = {}; | ||
namespaces.forEach(function (ns) { | ||
initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {}; | ||
}); | ||
}); | ||
ret.initialI18nStore = initialI18nStore; | ||
ret.initialLanguage = i18n.language; | ||
return ret; | ||
} | ||
var _excluded$1 = ["children", "count", "parent", "i18nKey", "context", "tOptions", "values", "defaults", "components", "ns", "i18n", "t", "shouldUnescape"]; | ||
function Trans$1(_ref) { | ||
var children = _ref.children, | ||
count = _ref.count, | ||
parent = _ref.parent, | ||
i18nKey = _ref.i18nKey, | ||
context = _ref.context, | ||
_ref$tOptions = _ref.tOptions, | ||
tOptions = _ref$tOptions === void 0 ? {} : _ref$tOptions, | ||
values = _ref.values, | ||
defaults = _ref.defaults, | ||
components = _ref.components, | ||
ns = _ref.ns, | ||
i18nFromProps = _ref.i18n, | ||
tFromProps = _ref.t, | ||
shouldUnescape = _ref.shouldUnescape, | ||
additionalProps = _objectWithoutProperties(_ref, _excluded$1); | ||
var _ref2 = react.useContext(I18nContext) || {}, | ||
i18nFromContext = _ref2.i18n, | ||
defaultNSFromContext = _ref2.defaultNS; | ||
var i18n = i18nFromProps || i18nFromContext || getI18n(); | ||
var t = tFromProps || i18n.t.bind(i18n) || function (k) { | ||
return k; | ||
}; | ||
return Trans(_objectSpread2({ | ||
children: children, | ||
count: count, | ||
parent: parent, | ||
i18nKey: i18nKey, | ||
context: context, | ||
tOptions: tOptions, | ||
values: values, | ||
defaults: defaults, | ||
components: components, | ||
ns: ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS, | ||
i18n: i18n, | ||
t: tFromProps, | ||
shouldUnescape: shouldUnescape | ||
}, additionalProps)); | ||
} | ||
var usePrevious = function usePrevious(value, ignore) { | ||
@@ -899,3 +943,3 @@ var ref = react.useRef(); | ||
var _excluded$1 = ["forwardedRef"]; | ||
var _excluded$2 = ["forwardedRef"]; | ||
function withTranslation(ns) { | ||
@@ -906,3 +950,3 @@ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var forwardedRef = _ref.forwardedRef, | ||
rest = _objectWithoutProperties(_ref, _excluded$1); | ||
rest = _objectWithoutProperties(_ref, _excluded$2); | ||
@@ -945,7 +989,7 @@ var _useTranslation = useTranslation(ns, _objectSpread2(_objectSpread2({}, rest), {}, { | ||
var _excluded$2 = ["ns", "children"]; | ||
var _excluded$3 = ["ns", "children"]; | ||
function Translation(props) { | ||
var ns = props.ns, | ||
children = props.children, | ||
options = _objectWithoutProperties(props, _excluded$2); | ||
options = _objectWithoutProperties(props, _excluded$3); | ||
@@ -1007,3 +1051,3 @@ var _useTranslation = useTranslation(ns, options), | ||
var _excluded$3 = ["initialI18nStore", "initialLanguage"]; | ||
var _excluded$4 = ["initialI18nStore", "initialLanguage"]; | ||
function withSSR() { | ||
@@ -1014,3 +1058,3 @@ return function Extend(WrappedComponent) { | ||
initialLanguage = _ref.initialLanguage, | ||
rest = _objectWithoutProperties(_ref, _excluded$3); | ||
rest = _objectWithoutProperties(_ref, _excluded$4); | ||
@@ -1049,3 +1093,4 @@ useSSR(initialI18nStore, initialLanguage); | ||
exports.I18nextProvider = I18nextProvider; | ||
exports.Trans = Trans; | ||
exports.Trans = Trans$1; | ||
exports.TransWithoutContext = Trans; | ||
exports.Translation = Translation; | ||
@@ -1052,0 +1097,0 @@ exports.composeInitialProps = composeInitialProps; |
@@ -1,1 +0,1 @@ | ||
define(["exports","react"],(function(e,n){"use strict";function t(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 r(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?t(Object(r),!0).forEach((function(n){o(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,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 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 o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function c(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function s(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,a,i=[],o=!0,c=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(i.push(r.value),!n||i.length!==n);o=!0);}catch(e){c=!0,a=e}finally{try{o||null==t.return||t.return()}finally{if(c)throw a}}return i}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return u(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 u(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 u(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 l={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},f=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function p(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(l[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 a=new RegExp(f),i=null;null!==(i=a.exec(e));)if(i[0].trim())if(i[1]){var o=i[1].trim(),c=[o,""];o.indexOf("=")>-1&&(c=o.split("=")),n.attrs[c[0]]=c[1],a.lastIndex--}else i[2]&&(n.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1));return n}var d=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,g=/^\s*$/,m=Object.create(null);var h,v=function(e,n){n||(n={}),n.components||(n.components=m);var t,r=[],a=[],i=-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(d,(function(c,s){if(o){if(c!=="</"+t.name+">")return;o=!1}var u,l="/"!==c.charAt(1),f=c.startsWith("\x3c!--"),d=s+c.length,m=e.charAt(d);if(f){var h=p(c);return i<0?(r.push(h),r):((u=a[i]).children.push(h),r)}if(l&&(i++,"tag"===(t=p(c)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!m||"<"===m||t.children.push({type:"text",content:e.slice(d,e.indexOf("<",d))}),0===i&&r.push(t),(u=a[i-1])&&u.children.push(t),a[i]=t),(!l||t.voidElement)&&(i>-1&&(t.voidElement||t.name===c.slice(2,-1))&&(i--,t=-1===i?r:a[i]),!o&&"<"!==m&&m)){u=-1===i?r:a[i].children;var v=e.indexOf("<",d),y=e.slice(d,-1===v?void 0:v);g.test(y)&&(y=" "),(v>-1&&i+u.length>=0||" "!==y)&&u.push({type:"text",content:y})}})),r},y=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,b={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"ยฉ","©":"ยฉ","®":"ยฎ","®":"ยฎ","…":"โฆ","…":"โฆ","/":"/","/":"/"},O=function(e){return b[e]},x={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:function(e){return e.replace(y,O)}},w=n.createContext();function E(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};x=r(r({},x),e)}function S(){return x}var j=function(){function e(){!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.usedNamespaces={}}var n,t,r;return n=e,(t=[{key:"addUsedNamespaces",value:function(e){var n=this;e.forEach((function(e){n.usedNamespaces[e]||(n.usedNamespaces[e]=!0)}))}},{key:"getUsedNamespaces",value:function(){return Object.keys(this.usedNamespaces)}}])&&i(n.prototype,t),r&&i(n,r),e}();function N(e){h=e}function k(){return h}var I={type:"3rdParty",init:function(e){E(e.options.react),N(e)}};function P(e){return function(n){return new Promise((function(t){var a=C();e.getInitialProps?e.getInitialProps(n).then((function(e){t(r(r({},e),a))})):t(a)}))}}function C(){var e=k(),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 R(){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 T={};function A(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&T[n[0]]||("string"==typeof n[0]&&(T[n[0]]=new Date),R.apply(void 0,n))}function L(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 z(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.languages[0],a=!!n.options&&n.options.fallbackLng,i=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&&(!n.options.resources||n.options.partialBundledLanguages))||!(!o(r,e)||a&&!o(i,e))))}function B(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return A("i18n.languages were undefined or empty",n.languages),!0;var r=void 0!==n.options.ignoreJSONStructure;return r?n.hasLoadedNamespace(e,{precheck:function(n,r){if(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!r(n.isLanguageChangingTo,e))return!1}}):z(e,n,t)}function U(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}var D=["format"],F=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function H(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function K(e){return e?e.props?e.props.children:e.children:[]}function V(e){return Array.isArray(e)?e:[e]}function W(e,t,i,o,c,s){if(""===t)return[];var u=o.transKeepBasicHtmlNodesFor||[],l=t&&new RegExp(u.join("|")).test(t);if(!e&&!l)return[t];var f={};!function e(t){V(t).forEach((function(t){"string"!=typeof t&&(H(t)?e(K(t)):"object"!==a(t)||n.isValidElement(t)||Object.assign(f,t))}))}(e);var p=v("<0>".concat(t,"</0>")),d=r(r({},f),c);function g(e,t,r){var a=K(e),i=h(a,t.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return n.isValidElement(e)}))}(a)&&0===i.length?a:i}function m(e,t,a,i,o){e.dummy&&(e.children=t),a.push(n.cloneElement(e,r(r({},e.props),{},{key:i}),o?void 0:t))}function h(t,c,f){var p=V(t);return V(c).reduce((function(t,c,v){var y,b,O,x=c.children&&c.children[0]&&c.children[0].content&&i.services.interpolator.interpolate(c.children[0].content,d,i.language);if("tag"===c.type){var w=p[parseInt(c.name,10)];!w&&1===f.length&&f[0][c.name]&&(w=f[0][c.name]),w||(w={});var E=0!==Object.keys(c.attrs).length?(y={props:c.attrs},(O=r({},b=w)).props=Object.assign(y.props,b.props),O):w,S=n.isValidElement(E),j=S&&H(c,!0)&&!c.voidElement,N=l&&"object"===a(E)&&E.dummy&&!S,k="object"===a(e)&&null!==e&&Object.hasOwnProperty.call(e,c.name);if("string"==typeof E){var I=i.services.interpolator.interpolate(E,d,i.language);t.push(I)}else if(H(E)||j){m(E,g(E,c,f),t,v)}else if(N){var P=h(p,c.children,f);t.push(n.cloneElement(E,r(r({},E.props),{},{key:v}),P))}else if(Number.isNaN(parseFloat(c.name))){if(k)m(E,g(E,c,f),t,v,c.voidElement);else if(o.transSupportBasicHtmlNodes&&u.indexOf(c.name)>-1)if(c.voidElement)t.push(n.createElement(c.name,{key:"".concat(c.name,"-").concat(v)}));else{var C=h(p,c.children,f);t.push(n.createElement(c.name,{key:"".concat(c.name,"-").concat(v)},C))}else if(c.voidElement)t.push("<".concat(c.name," />"));else{var R=h(p,c.children,f);t.push("<".concat(c.name,">").concat(R,"</").concat(c.name,">"))}}else if("object"!==a(E)||S)1===c.children.length&&x?t.push(n.cloneElement(E,r(r({},E.props),{},{key:v}),x)):t.push(n.cloneElement(E,r(r({},E.props),{},{key:v})));else{var T=c.children[0]?x:null;T&&t.push(T)}}else if("text"===c.type){var A=o.transWrapTextNodes,L=s?o.unescape(i.services.interpolator.interpolate(c.content,d,i.language)):i.services.interpolator.interpolate(c.content,d,i.language);A?t.push(n.createElement(A,{key:"".concat(c.name,"-").concat(v)},L)):t.push(L)}return t}),[])}return K(h([{dummy:!0,children:e||[]}],p,V(e||[]))[0])}var M=function(e,t){var r=n.useRef();return n.useEffect((function(){r.current=t?r.current:e}),[e,t]),r.current};function $(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.i18n,i=n.useContext(w)||{},o=i.i18n,c=i.defaultNS,u=a||o||k();if(u&&!u.reportNamespaces&&(u.reportNamespaces=new j),!u){A("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}u.options.react&&void 0!==u.options.react.wait&&A("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=r(r(r({},S()),u.options.react),t),d=p.useSuspense,g=p.keyPrefix,m=e||c||u.options&&u.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],u.reportNamespaces.addUsedNamespaces&&u.reportNamespaces.addUsedNamespaces(m);var h=(u.isInitialized||u.initializedStoreOnce)&&m.every((function(e){return B(e,u,p)}));function v(){return u.getFixedT(null,"fallback"===p.nsMode?m:m[0],g)}var y=n.useState(v),b=s(y,2),O=b[0],x=b[1],E=m.join(),N=M(E),I=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){I.current&&x(v)}return I.current=!0,h||d||L(u,m,(function(){I.current&&x(v)})),h&&N&&N!==E&&I.current&&x(v),e&&u&&u.on(e,t),n&&u&&u.store.on(n,t),function(){I.current=!1,e&&u&&e.split(" ").forEach((function(e){return u.off(e,t)})),n&&u&&n.split(" ").forEach((function(e){return u.store.off(e,t)}))}}),[u,E]);var P=n.useRef(!0);n.useEffect((function(){I.current&&!P.current&&x(v),P.current=!1}),[u,g]);var C=[O,u,h];if(C.t=O,C.i18n=u,C.ready=h,h)return C;if(!h&&!d)return C;throw new Promise((function(e){L(u,m,(function(){e()}))}))}var q=["forwardedRef"];var Y=["ns","children"];function _(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=r.i18n,i=n.useContext(w)||{},o=i.i18n,c=a||o||k();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 J=["initialI18nStore","initialLanguage"];e.I18nContext=w,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,a=e.children,i=n.useMemo((function(){return{i18n:t,defaultNS:r}}),[t,r]);return n.createElement(w.Provider,{value:i},a)},e.Trans=function(e){var t=e.children,i=e.count,o=e.parent,s=e.i18nKey,u=e.context,l=e.tOptions,f=void 0===l?{}:l,p=e.values,d=e.defaults,g=e.components,m=e.ns,h=e.i18n,v=e.t,y=e.shouldUnescape,b=c(e,F),O=n.useContext(w)||{},x=O.i18n,E=O.defaultNS,j=h||x||k();if(!j)return A("You will need to pass in an i18next instance by using i18nextReactModule"),t;var N=v||j.t.bind(j)||function(e){return e};u&&(f.context=u);var I=r(r({},S()),j.options&&j.options.react),P=m||N.ns||E||j.options&&j.options.defaultNS;P="string"==typeof P?[P]:P||["translation"];var C=d||function e(t,r){if(!t)return"";var i="",o=V(t),s=r.transSupportBasicHtmlNodes&&r.transKeepBasicHtmlNodesFor?r.transKeepBasicHtmlNodesFor:[];return o.forEach((function(t,o){if("string"==typeof t)i+="".concat(t);else if(n.isValidElement(t)){var u=Object.keys(t.props).length,l=s.indexOf(t.type)>-1,f=t.props.children;if(!f&&l&&0===u)i+="<".concat(t.type,"/>");else if(f||l&&0===u)if(t.props.i18nIsDynamicList)i+="<".concat(o,"></").concat(o,">");else if(l&&1===u&&"string"==typeof f)i+="<".concat(t.type,">").concat(f,"</").concat(t.type,">");else{var p=e(f,r);i+="<".concat(o,">").concat(p,"</").concat(o,">")}else i+="<".concat(o,"></").concat(o,">")}else if(null===t)R("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===a(t)){var d=t.format,g=c(t,D),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];i+="{{".concat(h,"}}")}else R("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",t)}else R("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}}.",t)})),i}(t,I)||I.transEmptyNodeValue||s,T=I.hashTransKey,L=s||(T?T(C):C),z=p?f.interpolation:{interpolation:r(r({},f.interpolation),{},{prefix:"#$?",suffix:"?$#"})},B=r(r(r(r({},f),{},{count:i},p),z),{},{defaultValue:C,ns:P}),U=W(g||t,L?N(L,B):C,j,I,B,y),H=void 0!==o?o:I.defaultTransParent;return H?n.createElement(H,b,U):U},e.Translation=function(e){var n=e.ns,t=e.children,r=s($(n,c(e,Y)),3),a=r[0],i=r[1],o=r[2];return t(a,{i18n:i,lng:i.language},o)},e.composeInitialProps=P,e.date=function(){return""},e.getDefaults=S,e.getI18n=k,e.getInitialProps=C,e.initReactI18next=I,e.number=function(){return""},e.plural=function(){return""},e.select=function(){return""},e.selectOrdinal=function(){return""},e.setDefaults=E,e.setI18n=N,e.time=function(){return""},e.useSSR=_,e.useTranslation=$,e.withSSR=function(){return function(e){function t(t){var a=t.initialI18nStore,i=t.initialLanguage,o=c(t,J);return _(a,i),n.createElement(e,r({},o))}return t.getInitialProps=P(e),t.displayName="withI18nextSSR(".concat(U(e),")"),t.WrappedComponent=e,t}},e.withTranslation=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(a){function i(i){var o=i.forwardedRef,u=c(i,q),l=s($(e,r(r({},u),{},{keyPrefix:t.keyPrefix})),3),f=l[0],p=l[1],d=l[2],g=r(r({},u),{},{t:f,i18n:p,tReady:d});return t.withRef&&o?g.ref=o:!t.withRef&&o&&(g.forwardedRef=o),n.createElement(a,g)}i.displayName="withI18nextTranslation(".concat(U(a),")"),i.WrappedComponent=a;return t.withRef?n.forwardRef((function(e,t){return n.createElement(i,Object.assign({},e,{forwardedRef:t}))})):i}},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
define(["exports","react"],(function(e,n){"use strict";function t(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 r(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?t(Object(r),!0).forEach((function(n){o(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,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 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 o(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,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function c(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,a,i=[],o=!0,s=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(i.push(r.value),!n||i.length!==n);o=!0);}catch(e){s=!0,a=e}finally{try{o||null==t.return||t.return()}finally{if(s)throw a}}return i}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return u(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 u(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 u(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 l={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},f=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function p(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(l[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 a=new RegExp(f),i=null;null!==(i=a.exec(e));)if(i[0].trim())if(i[1]){var o=i[1].trim(),s=[o,""];o.indexOf("=")>-1&&(s=o.split("=")),n.attrs[s[0]]=s[1],a.lastIndex--}else i[2]&&(n.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1));return n}var d=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,g=/^\s*$/,m=Object.create(null);var h=function(e,n){n||(n={}),n.components||(n.components=m);var t,r=[],a=[],i=-1,o=!1;if(0!==e.indexOf("<")){var s=e.indexOf("<");r.push({type:"text",content:-1===s?e:e.substring(0,s)})}return e.replace(d,(function(s,c){if(o){if(s!=="</"+t.name+">")return;o=!1}var u,l="/"!==s.charAt(1),f=s.startsWith("\x3c!--"),d=c+s.length,m=e.charAt(d);if(f){var h=p(s);return i<0?(r.push(h),r):((u=a[i]).children.push(h),r)}if(l&&(i++,"tag"===(t=p(s)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!m||"<"===m||t.children.push({type:"text",content:e.slice(d,e.indexOf("<",d))}),0===i&&r.push(t),(u=a[i-1])&&u.children.push(t),a[i]=t),(!l||t.voidElement)&&(i>-1&&(t.voidElement||t.name===s.slice(2,-1))&&(i--,t=-1===i?r:a[i]),!o&&"<"!==m&&m)){u=-1===i?r:a[i].children;var v=e.indexOf("<",d),y=e.slice(d,-1===v?void 0:v);g.test(y)&&(y=" "),(v>-1&&i+u.length>=0||" "!==y)&&u.push({type:"text",content:y})}})),r};function v(){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 y={};function b(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&y[n[0]]||("string"==typeof n[0]&&(y[n[0]]=new Date),v.apply(void 0,n))}function O(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 x(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.languages[0],a=!!n.options&&n.options.fallbackLng,i=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&&(!n.options.resources||n.options.partialBundledLanguages))||!(!o(r,e)||a&&!o(i,e))))}function w(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return b("i18n.languages were undefined or empty",n.languages),!0;var r=void 0!==n.options.ignoreJSONStructure;return r?n.hasLoadedNamespace(e,{precheck:function(n,r){if(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!r(n.isLanguageChangingTo,e))return!1}}):x(e,n,t)}function S(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}var E,j=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,N={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"ยฉ","©":"ยฉ","®":"ยฎ","®":"ยฎ","…":"โฆ","…":"โฆ","/":"/","/":"/"},k=function(e){return N[e]},I={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:function(e){return e.replace(j,k)}};function P(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};I=r(r({},I),e)}function C(){return I}function R(e){E=e}function T(){return E}var A=["format"],L=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function U(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function z(e){return e?e.props?e.props.children:e.children:[]}function B(e){return Array.isArray(e)?e:[e]}function K(e,t,i,o,s,c){if(""===t)return[];var u=o.transKeepBasicHtmlNodesFor||[],l=t&&new RegExp(u.join("|")).test(t);if(!e&&!l)return[t];var f={};!function e(t){B(t).forEach((function(t){"string"!=typeof t&&(U(t)?e(z(t)):"object"!==a(t)||n.isValidElement(t)||Object.assign(f,t))}))}(e);var p=h("<0>".concat(t,"</0>")),d=r(r({},f),s);function g(e,t,r){var a=z(e),i=v(a,t.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return n.isValidElement(e)}))}(a)&&0===i.length?a:i}function m(e,t,a,i,o){e.dummy&&(e.children=t),a.push(n.cloneElement(e,r(r({},e.props),{},{key:i}),o?void 0:t))}function v(t,s,f){var p=B(t);return B(s).reduce((function(t,s,h){var y,b,O,x=s.children&&s.children[0]&&s.children[0].content&&i.services.interpolator.interpolate(s.children[0].content,d,i.language);if("tag"===s.type){var w=p[parseInt(s.name,10)];!w&&1===f.length&&f[0][s.name]&&(w=f[0][s.name]),w||(w={});var S=0!==Object.keys(s.attrs).length?(y={props:s.attrs},(O=r({},b=w)).props=Object.assign(y.props,b.props),O):w,E=n.isValidElement(S),j=E&&U(s,!0)&&!s.voidElement,N=l&&"object"===a(S)&&S.dummy&&!E,k="object"===a(e)&&null!==e&&Object.hasOwnProperty.call(e,s.name);if("string"==typeof S){var I=i.services.interpolator.interpolate(S,d,i.language);t.push(I)}else if(U(S)||j){m(S,g(S,s,f),t,h)}else if(N){var P=v(p,s.children,f);t.push(n.cloneElement(S,r(r({},S.props),{},{key:h}),P))}else if(Number.isNaN(parseFloat(s.name))){if(k)m(S,g(S,s,f),t,h,s.voidElement);else if(o.transSupportBasicHtmlNodes&&u.indexOf(s.name)>-1)if(s.voidElement)t.push(n.createElement(s.name,{key:"".concat(s.name,"-").concat(h)}));else{var C=v(p,s.children,f);t.push(n.createElement(s.name,{key:"".concat(s.name,"-").concat(h)},C))}else if(s.voidElement)t.push("<".concat(s.name," />"));else{var R=v(p,s.children,f);t.push("<".concat(s.name,">").concat(R,"</").concat(s.name,">"))}}else if("object"!==a(S)||E)1===s.children.length&&x?t.push(n.cloneElement(S,r(r({},S.props),{},{key:h}),x)):t.push(n.cloneElement(S,r(r({},S.props),{},{key:h})));else{var T=s.children[0]?x:null;T&&t.push(T)}}else if("text"===s.type){var A=o.transWrapTextNodes,L=c?o.unescape(i.services.interpolator.interpolate(s.content,d,i.language)):i.services.interpolator.interpolate(s.content,d,i.language);A?t.push(n.createElement(A,{key:"".concat(s.name,"-").concat(h)},L)):t.push(L)}return t}),[])}return z(v([{dummy:!0,children:e||[]}],p,B(e||[]))[0])}function D(e){var t=e.children,i=e.count,o=e.parent,c=e.i18nKey,u=e.context,l=e.tOptions,f=void 0===l?{}:l,p=e.values,d=e.defaults,g=e.components,m=e.ns,h=e.i18n,y=e.t,O=e.shouldUnescape,x=s(e,L),w=h||T();if(!w)return b("You will need to pass in an i18next instance by using i18nextReactModule"),t;var S=y||w.t.bind(w)||function(e){return e};u&&(f.context=u);var E=r(r({},C()),w.options&&w.options.react),j=m||S.ns||w.options&&w.options.defaultNS;j="string"==typeof j?[j]:j||["translation"];var N=d||function e(t,r){if(!t)return"";var i="",o=B(t),c=r.transSupportBasicHtmlNodes&&r.transKeepBasicHtmlNodesFor?r.transKeepBasicHtmlNodesFor:[];return o.forEach((function(t,o){if("string"==typeof t)i+="".concat(t);else if(n.isValidElement(t)){var u=Object.keys(t.props).length,l=c.indexOf(t.type)>-1,f=t.props.children;if(!f&&l&&0===u)i+="<".concat(t.type,"/>");else if(f||l&&0===u)if(t.props.i18nIsDynamicList)i+="<".concat(o,"></").concat(o,">");else if(l&&1===u&&"string"==typeof f)i+="<".concat(t.type,">").concat(f,"</").concat(t.type,">");else{var p=e(f,r);i+="<".concat(o,">").concat(p,"</").concat(o,">")}else i+="<".concat(o,"></").concat(o,">")}else if(null===t)v("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===a(t)){var d=t.format,g=s(t,A),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];i+="{{".concat(h,"}}")}else v("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",t)}else v("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}}.",t)})),i}(t,E)||E.transEmptyNodeValue||c,k=E.hashTransKey,I=c||(k?k(N):N),P=p?f.interpolation:{interpolation:r(r({},f.interpolation),{},{prefix:"#$?",suffix:"?$#"})},R=r(r(r(r({},f),{},{count:i},p),P),{},{defaultValue:N,ns:j}),U=K(g||t,I?S(I,R):N,w,E,R,O),z=void 0!==o?o:E.defaultTransParent;return z?n.createElement(z,x,U):U}var F={type:"3rdParty",init:function(e){P(e.options.react),R(e)}},H=n.createContext(),V=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 W(e){return function(n){return new Promise((function(t){var a=M();e.getInitialProps?e.getInitialProps(n).then((function(e){t(r(r({},e),a))})):t(a)}))}}function M(){var e=T(),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}var $=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];var q=function(e,t){var r=n.useRef();return n.useEffect((function(){r.current=t?r.current:e}),[e,t]),r.current};function Y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.i18n,i=n.useContext(H)||{},o=i.i18n,s=i.defaultNS,u=a||o||T();if(u&&!u.reportNamespaces&&(u.reportNamespaces=new V),!u){b("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}u.options.react&&void 0!==u.options.react.wait&&b("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=r(r(r({},C()),u.options.react),t),d=p.useSuspense,g=p.keyPrefix,m=e||s||u.options&&u.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],u.reportNamespaces.addUsedNamespaces&&u.reportNamespaces.addUsedNamespaces(m);var h=(u.isInitialized||u.initializedStoreOnce)&&m.every((function(e){return w(e,u,p)}));function v(){return u.getFixedT(null,"fallback"===p.nsMode?m:m[0],g)}var y=n.useState(v),x=c(y,2),S=x[0],E=x[1],j=m.join(),N=q(j),k=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){k.current&&E(v)}return k.current=!0,h||d||O(u,m,(function(){k.current&&E(v)})),h&&N&&N!==j&&k.current&&E(v),e&&u&&u.on(e,t),n&&u&&u.store.on(n,t),function(){k.current=!1,e&&u&&e.split(" ").forEach((function(e){return u.off(e,t)})),n&&u&&n.split(" ").forEach((function(e){return u.store.off(e,t)}))}}),[u,j]);var I=n.useRef(!0);n.useEffect((function(){k.current&&!I.current&&E(v),I.current=!1}),[u,g]);var P=[S,u,h];if(P.t=S,P.i18n=u,P.ready=h,h)return P;if(!h&&!d)return P;throw new Promise((function(e){O(u,m,(function(){e()}))}))}var _=["forwardedRef"];var J=["ns","children"];function Z(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=r.i18n,i=n.useContext(H)||{},o=i.i18n,s=a||o||T();s.options&&s.options.isClone||(e&&!s.initializedStoreOnce&&(s.services.resourceStore.data=e,s.options.ns=Object.values(e).reduce((function(e,n){return Object.keys(n).forEach((function(n){e.indexOf(n)<0&&e.push(n)})),e}),s.options.ns),s.initializedStoreOnce=!0,s.isInitialized=!0),t&&!s.initializedLanguageOnce&&(s.changeLanguage(t),s.initializedLanguageOnce=!0))}var G=["initialI18nStore","initialLanguage"];e.I18nContext=H,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,a=e.children,i=n.useMemo((function(){return{i18n:t,defaultNS:r}}),[t,r]);return n.createElement(H.Provider,{value:i},a)},e.Trans=function(e){var t=e.children,a=e.count,i=e.parent,o=e.i18nKey,c=e.context,u=e.tOptions,l=void 0===u?{}:u,f=e.values,p=e.defaults,d=e.components,g=e.ns,m=e.i18n,h=e.t,v=e.shouldUnescape,y=s(e,$),b=n.useContext(H)||{},O=b.i18n,x=b.defaultNS,w=m||O||T(),S=h||w.t.bind(w)||function(e){return e};return D(r({children:t,count:a,parent:i,i18nKey:o,context:c,tOptions:l,values:f,defaults:p,components:d,ns:g||S.ns||x||w.options&&w.options.defaultNS,i18n:w,t:h,shouldUnescape:v},y))},e.TransWithoutContext=D,e.Translation=function(e){var n=e.ns,t=e.children,r=c(Y(n,s(e,J)),3),a=r[0],i=r[1],o=r[2];return t(a,{i18n:i,lng:i.language},o)},e.composeInitialProps=W,e.date=function(){return""},e.getDefaults=C,e.getI18n=T,e.getInitialProps=M,e.initReactI18next=F,e.number=function(){return""},e.plural=function(){return""},e.select=function(){return""},e.selectOrdinal=function(){return""},e.setDefaults=P,e.setI18n=R,e.time=function(){return""},e.useSSR=Z,e.useTranslation=Y,e.withSSR=function(){return function(e){function t(t){var a=t.initialI18nStore,i=t.initialLanguage,o=s(t,G);return Z(a,i),n.createElement(e,r({},o))}return t.getInitialProps=W(e),t.displayName="withI18nextSSR(".concat(S(e),")"),t.WrappedComponent=e,t}},e.withTranslation=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(a){function i(i){var o=i.forwardedRef,u=s(i,_),l=c(Y(e,r(r({},u),{},{keyPrefix:t.keyPrefix})),3),f=l[0],p=l[1],d=l[2],g=r(r({},u),{},{t:f,i18n:p,tReady:d});return t.withRef&&o?g.ref=o:!t.withRef&&o&&(g.forwardedRef=o),n.createElement(a,g)}i.displayName="withI18nextTranslation(".concat(S(a),")"),i.WrappedComponent=a;return t.withRef?n.forwardRef((function(e,t){return n.createElement(i,Object.assign({},e,{forwardedRef:t}))})):i}},Object.defineProperty(e,"__esModule",{value:!0})})); |
@@ -8,10 +8,38 @@ "use strict"; | ||
}); | ||
exports.setDefaults = setDefaults; | ||
exports.getDefaults = getDefaults; | ||
exports.setI18n = setI18n; | ||
exports.getI18n = getI18n; | ||
exports.composeInitialProps = composeInitialProps; | ||
exports.getInitialProps = getInitialProps; | ||
exports.initReactI18next = exports.ReportNamespaces = exports.I18nContext = void 0; | ||
Object.defineProperty(exports, "getDefaults", { | ||
enumerable: true, | ||
get: function get() { | ||
return _defaults.getDefaults; | ||
} | ||
}); | ||
Object.defineProperty(exports, "setDefaults", { | ||
enumerable: true, | ||
get: function get() { | ||
return _defaults.setDefaults; | ||
} | ||
}); | ||
Object.defineProperty(exports, "getI18n", { | ||
enumerable: true, | ||
get: function get() { | ||
return _i18nInstance.getI18n; | ||
} | ||
}); | ||
Object.defineProperty(exports, "setI18n", { | ||
enumerable: true, | ||
get: function get() { | ||
return _i18nInstance.setI18n; | ||
} | ||
}); | ||
Object.defineProperty(exports, "initReactI18next", { | ||
enumerable: true, | ||
get: function get() { | ||
return _initReactI18next.initReactI18next; | ||
} | ||
}); | ||
exports.ReportNamespaces = exports.I18nContext = void 0; | ||
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); | ||
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); | ||
@@ -21,8 +49,10 @@ | ||
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); | ||
var _react = require("react"); | ||
var _unescape = require("./unescape"); | ||
var _defaults = require("./defaults"); | ||
var _i18nInstance = require("./i18nInstance"); | ||
var _initReactI18next = require("./initReactI18next"); | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } | ||
@@ -32,25 +62,5 @@ | ||
var defaultOptions = { | ||
bindI18n: 'languageChanged', | ||
bindI18nStore: '', | ||
transEmptyNodeValue: '', | ||
transSupportBasicHtmlNodes: true, | ||
transWrapTextNodes: '', | ||
transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'], | ||
useSuspense: true, | ||
unescape: _unescape.unescape | ||
}; | ||
var i18nInstance; | ||
var I18nContext = (0, _react.createContext)(); | ||
exports.I18nContext = I18nContext; | ||
function setDefaults() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options); | ||
} | ||
function getDefaults() { | ||
return defaultOptions; | ||
} | ||
var ReportNamespaces = function () { | ||
@@ -82,19 +92,2 @@ function ReportNamespaces() { | ||
function setI18n(instance) { | ||
i18nInstance = instance; | ||
} | ||
function getI18n() { | ||
return i18nInstance; | ||
} | ||
var initReactI18next = { | ||
type: '3rdParty', | ||
init: function init(instance) { | ||
setDefaults(instance.options.react); | ||
setI18n(instance); | ||
} | ||
}; | ||
exports.initReactI18next = initReactI18next; | ||
function composeInitialProps(ForComponent) { | ||
@@ -117,3 +110,3 @@ return function (ctx) { | ||
function getInitialProps() { | ||
var i18n = getI18n(); | ||
var i18n = (0, _i18nInstance.getI18n)(); | ||
var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : []; | ||
@@ -120,0 +113,0 @@ var ret = {}; |
@@ -12,2 +12,8 @@ "use strict"; | ||
}); | ||
Object.defineProperty(exports, "TransWithoutContext", { | ||
enumerable: true, | ||
get: function get() { | ||
return _TransWithoutContext.Trans; | ||
} | ||
}); | ||
Object.defineProperty(exports, "useTranslation", { | ||
@@ -101,2 +107,4 @@ enumerable: true, | ||
var _TransWithoutContext = require("./TransWithoutContext"); | ||
var _useTranslation = require("./useTranslation"); | ||
@@ -103,0 +111,0 @@ |
@@ -8,22 +8,22 @@ "use strict"; | ||
}); | ||
exports.nodesToString = nodesToString; | ||
exports.Trans = Trans; | ||
Object.defineProperty(exports, "nodesToString", { | ||
enumerable: true, | ||
get: function get() { | ||
return _TransWithoutContext.nodesToString; | ||
} | ||
}); | ||
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); | ||
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); | ||
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); | ||
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); | ||
var _react = require("react"); | ||
var _htmlParseStringify = _interopRequireDefault(require("html-parse-stringify")); | ||
var _TransWithoutContext = require("./TransWithoutContext"); | ||
var _context = require("./context"); | ||
var _utils = require("./utils"); | ||
var _excluded = ["children", "count", "parent", "i18nKey", "context", "tOptions", "values", "defaults", "components", "ns", "i18n", "t", "shouldUnescape"]; | ||
var _excluded = ["format"], | ||
_excluded2 = ["children", "count", "parent", "i18nKey", "context", "tOptions", "values", "defaults", "components", "ns", "i18n", "t", "shouldUnescape"]; | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } | ||
@@ -33,202 +33,2 @@ | ||
function hasChildren(node, checkLength) { | ||
if (!node) return false; | ||
var base = node.props ? node.props.children : node.children; | ||
if (checkLength) return base.length > 0; | ||
return !!base; | ||
} | ||
function getChildren(node) { | ||
if (!node) return []; | ||
return node.props ? node.props.children : node.children; | ||
} | ||
function hasValidReactChildren(children) { | ||
if (Object.prototype.toString.call(children) !== '[object Array]') return false; | ||
return children.every(function (child) { | ||
return (0, _react.isValidElement)(child); | ||
}); | ||
} | ||
function getAsArray(data) { | ||
return Array.isArray(data) ? data : [data]; | ||
} | ||
function mergeProps(source, target) { | ||
var newTarget = _objectSpread({}, target); | ||
newTarget.props = Object.assign(source.props, target.props); | ||
return newTarget; | ||
} | ||
function nodesToString(children, i18nOptions) { | ||
if (!children) return ''; | ||
var stringNode = ''; | ||
var childrenArray = getAsArray(children); | ||
var keepArray = i18nOptions.transSupportBasicHtmlNodes && i18nOptions.transKeepBasicHtmlNodesFor ? i18nOptions.transKeepBasicHtmlNodesFor : []; | ||
childrenArray.forEach(function (child, childIndex) { | ||
if (typeof child === 'string') { | ||
stringNode += "".concat(child); | ||
} else if ((0, _react.isValidElement)(child)) { | ||
var childPropsCount = Object.keys(child.props).length; | ||
var shouldKeepChild = keepArray.indexOf(child.type) > -1; | ||
var childChildren = child.props.children; | ||
if (!childChildren && shouldKeepChild && childPropsCount === 0) { | ||
stringNode += "<".concat(child.type, "/>"); | ||
} else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) { | ||
stringNode += "<".concat(childIndex, "></").concat(childIndex, ">"); | ||
} else if (child.props.i18nIsDynamicList) { | ||
stringNode += "<".concat(childIndex, "></").concat(childIndex, ">"); | ||
} else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === 'string') { | ||
stringNode += "<".concat(child.type, ">").concat(childChildren, "</").concat(child.type, ">"); | ||
} else { | ||
var content = nodesToString(childChildren, i18nOptions); | ||
stringNode += "<".concat(childIndex, ">").concat(content, "</").concat(childIndex, ">"); | ||
} | ||
} else if (child === null) { | ||
(0, _utils.warn)("Trans: the passed in value is invalid - seems you passed in a null child."); | ||
} else if ((0, _typeof2["default"])(child) === 'object') { | ||
var format = child.format, | ||
clone = (0, _objectWithoutProperties2["default"])(child, _excluded); | ||
var keys = Object.keys(clone); | ||
if (keys.length === 1) { | ||
var value = format ? "".concat(keys[0], ", ").concat(format) : keys[0]; | ||
stringNode += "{{".concat(value, "}}"); | ||
} else { | ||
(0, _utils.warn)("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.", child); | ||
} | ||
} else { | ||
(0, _utils.warn)("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}}.", child); | ||
} | ||
}); | ||
return stringNode; | ||
} | ||
function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) { | ||
if (targetString === '') return []; | ||
var keepArray = i18nOptions.transKeepBasicHtmlNodesFor || []; | ||
var emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.join('|')).test(targetString); | ||
if (!children && !emptyChildrenButNeedsHandling) return [targetString]; | ||
var data = {}; | ||
function getData(childs) { | ||
var childrenArray = getAsArray(childs); | ||
childrenArray.forEach(function (child) { | ||
if (typeof child === 'string') return; | ||
if (hasChildren(child)) getData(getChildren(child));else if ((0, _typeof2["default"])(child) === 'object' && !(0, _react.isValidElement)(child)) Object.assign(data, child); | ||
}); | ||
} | ||
getData(children); | ||
var ast = _htmlParseStringify["default"].parse("<0>".concat(targetString, "</0>")); | ||
var opts = _objectSpread(_objectSpread({}, data), combinedTOpts); | ||
function renderInner(child, node, rootReactNode) { | ||
var childs = getChildren(child); | ||
var mappedChildren = mapAST(childs, node.children, rootReactNode); | ||
return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren; | ||
} | ||
function pushTranslatedJSX(child, inner, mem, i, isVoid) { | ||
if (child.dummy) child.children = inner; | ||
mem.push((0, _react.cloneElement)(child, _objectSpread(_objectSpread({}, child.props), {}, { | ||
key: i | ||
}), isVoid ? undefined : inner)); | ||
} | ||
function mapAST(reactNode, astNode, rootReactNode) { | ||
var reactNodes = getAsArray(reactNode); | ||
var astNodes = getAsArray(astNode); | ||
return astNodes.reduce(function (mem, node, i) { | ||
var translationContent = node.children && node.children[0] && node.children[0].content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language); | ||
if (node.type === 'tag') { | ||
var tmp = reactNodes[parseInt(node.name, 10)]; | ||
if (!tmp && rootReactNode.length === 1 && rootReactNode[0][node.name]) tmp = rootReactNode[0][node.name]; | ||
if (!tmp) tmp = {}; | ||
var child = Object.keys(node.attrs).length !== 0 ? mergeProps({ | ||
props: node.attrs | ||
}, tmp) : tmp; | ||
var isElement = (0, _react.isValidElement)(child); | ||
var isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement; | ||
var isEmptyTransWithHTML = emptyChildrenButNeedsHandling && (0, _typeof2["default"])(child) === 'object' && child.dummy && !isElement; | ||
var isKnownComponent = (0, _typeof2["default"])(children) === 'object' && children !== null && Object.hasOwnProperty.call(children, node.name); | ||
if (typeof child === 'string') { | ||
var value = i18n.services.interpolator.interpolate(child, opts, i18n.language); | ||
mem.push(value); | ||
} else if (hasChildren(child) || isValidTranslationWithChildren) { | ||
var inner = renderInner(child, node, rootReactNode); | ||
pushTranslatedJSX(child, inner, mem, i); | ||
} else if (isEmptyTransWithHTML) { | ||
var _inner = mapAST(reactNodes, node.children, rootReactNode); | ||
mem.push((0, _react.cloneElement)(child, _objectSpread(_objectSpread({}, child.props), {}, { | ||
key: i | ||
}), _inner)); | ||
} else if (Number.isNaN(parseFloat(node.name))) { | ||
if (isKnownComponent) { | ||
var _inner2 = renderInner(child, node, rootReactNode); | ||
pushTranslatedJSX(child, _inner2, mem, i, node.voidElement); | ||
} else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) { | ||
if (node.voidElement) { | ||
mem.push((0, _react.createElement)(node.name, { | ||
key: "".concat(node.name, "-").concat(i) | ||
})); | ||
} else { | ||
var _inner3 = mapAST(reactNodes, node.children, rootReactNode); | ||
mem.push((0, _react.createElement)(node.name, { | ||
key: "".concat(node.name, "-").concat(i) | ||
}, _inner3)); | ||
} | ||
} else if (node.voidElement) { | ||
mem.push("<".concat(node.name, " />")); | ||
} else { | ||
var _inner4 = mapAST(reactNodes, node.children, rootReactNode); | ||
mem.push("<".concat(node.name, ">").concat(_inner4, "</").concat(node.name, ">")); | ||
} | ||
} else if ((0, _typeof2["default"])(child) === 'object' && !isElement) { | ||
var content = node.children[0] ? translationContent : null; | ||
if (content) mem.push(content); | ||
} else if (node.children.length === 1 && translationContent) { | ||
mem.push((0, _react.cloneElement)(child, _objectSpread(_objectSpread({}, child.props), {}, { | ||
key: i | ||
}), translationContent)); | ||
} else { | ||
mem.push((0, _react.cloneElement)(child, _objectSpread(_objectSpread({}, child.props), {}, { | ||
key: i | ||
}))); | ||
} | ||
} else if (node.type === 'text') { | ||
var wrapTextNodes = i18nOptions.transWrapTextNodes; | ||
var _content = shouldUnescape ? i18nOptions.unescape(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language); | ||
if (wrapTextNodes) { | ||
mem.push((0, _react.createElement)(wrapTextNodes, { | ||
key: "".concat(node.name, "-").concat(i) | ||
}, _content)); | ||
} else { | ||
mem.push(_content); | ||
} | ||
} | ||
return mem; | ||
}, []); | ||
} | ||
var result = mapAST([{ | ||
dummy: true, | ||
children: children || [] | ||
}], ast, getAsArray(children || [])); | ||
return getChildren(result[0]); | ||
} | ||
function Trans(_ref) { | ||
@@ -249,3 +49,3 @@ var children = _ref.children, | ||
shouldUnescape = _ref.shouldUnescape, | ||
additionalProps = (0, _objectWithoutProperties2["default"])(_ref, _excluded2); | ||
additionalProps = (0, _objectWithoutProperties2["default"])(_ref, _excluded); | ||
@@ -258,7 +58,2 @@ var _ref2 = (0, _react.useContext)(_context.I18nContext) || {}, | ||
if (!i18n) { | ||
(0, _utils.warnOnce)('You will need to pass in an i18next instance by using i18nextReactModule'); | ||
return children; | ||
} | ||
var t = tFromProps || i18n.t.bind(i18n) || function (k) { | ||
@@ -268,29 +63,17 @@ return k; | ||
if (context) tOptions.context = context; | ||
var reactI18nextOptions = _objectSpread(_objectSpread({}, (0, _context.getDefaults)()), i18n.options && i18n.options.react); | ||
var namespaces = ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS; | ||
namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation']; | ||
var defaultValue = defaults || nodesToString(children, reactI18nextOptions) || reactI18nextOptions.transEmptyNodeValue || i18nKey; | ||
var hashTransKey = reactI18nextOptions.hashTransKey; | ||
var key = i18nKey || (hashTransKey ? hashTransKey(defaultValue) : defaultValue); | ||
var interpolationOverride = values ? tOptions.interpolation : { | ||
interpolation: _objectSpread(_objectSpread({}, tOptions.interpolation), {}, { | ||
prefix: '#$?', | ||
suffix: '?$#' | ||
}) | ||
}; | ||
var combinedTOpts = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, tOptions), {}, { | ||
count: count | ||
}, values), interpolationOverride), {}, { | ||
defaultValue: defaultValue, | ||
ns: namespaces | ||
}); | ||
var translation = key ? t(key, combinedTOpts) : defaultValue; | ||
var content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape); | ||
var useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent; | ||
return useAsParent ? (0, _react.createElement)(useAsParent, additionalProps, content) : content; | ||
return (0, _TransWithoutContext.Trans)(_objectSpread({ | ||
children: children, | ||
count: count, | ||
parent: parent, | ||
i18nKey: i18nKey, | ||
context: context, | ||
tOptions: tOptions, | ||
values: values, | ||
defaults: defaults, | ||
components: components, | ||
ns: ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS, | ||
i18n: i18n, | ||
t: tFromProps, | ||
shouldUnescape: shouldUnescape | ||
}, additionalProps)); | ||
} |
@@ -0,4 +1,4 @@ | ||
import _defineProperty from "@babel/runtime/helpers/defineProperty"; | ||
import _classCallCheck from "@babel/runtime/helpers/classCallCheck"; | ||
import _createClass from "@babel/runtime/helpers/createClass"; | ||
import _defineProperty from "@babel/runtime/helpers/defineProperty"; | ||
@@ -10,22 +10,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } | ||
import { createContext } from 'react'; | ||
import { unescape } from './unescape'; | ||
var defaultOptions = { | ||
bindI18n: 'languageChanged', | ||
bindI18nStore: '', | ||
transEmptyNodeValue: '', | ||
transSupportBasicHtmlNodes: true, | ||
transWrapTextNodes: '', | ||
transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'], | ||
useSuspense: true, | ||
unescape: unescape | ||
}; | ||
var i18nInstance; | ||
import { getDefaults, setDefaults } from './defaults'; | ||
import { getI18n, setI18n } from './i18nInstance'; | ||
import { initReactI18next } from './initReactI18next'; | ||
export { getDefaults, setDefaults, getI18n, setI18n, initReactI18next }; | ||
export var I18nContext = createContext(); | ||
export function setDefaults() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options); | ||
} | ||
export function getDefaults() { | ||
return defaultOptions; | ||
} | ||
export var ReportNamespaces = function () { | ||
@@ -56,15 +41,2 @@ function ReportNamespaces() { | ||
}(); | ||
export function setI18n(instance) { | ||
i18nInstance = instance; | ||
} | ||
export function getI18n() { | ||
return i18nInstance; | ||
} | ||
export var initReactI18next = { | ||
type: '3rdParty', | ||
init: function init(instance) { | ||
setDefaults(instance.options.react); | ||
setI18n(instance); | ||
} | ||
}; | ||
export function composeInitialProps(ForComponent) { | ||
@@ -71,0 +43,0 @@ return function (ctx) { |
export { Trans } from './Trans'; | ||
export { Trans as TransWithoutContext } from './TransWithoutContext'; | ||
export { useTranslation } from './useTranslation'; | ||
@@ -3,0 +4,0 @@ export { withTranslation } from './withTranslation'; |
@@ -0,6 +1,4 @@ | ||
import _defineProperty from "@babel/runtime/helpers/defineProperty"; | ||
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties"; | ||
import _typeof from "@babel/runtime/helpers/typeof"; | ||
import _defineProperty from "@babel/runtime/helpers/defineProperty"; | ||
var _excluded = ["format"], | ||
_excluded2 = ["children", "count", "parent", "i18nKey", "context", "tOptions", "values", "defaults", "components", "ns", "i18n", "t", "shouldUnescape"]; | ||
var _excluded = ["children", "count", "parent", "i18nKey", "context", "tOptions", "values", "defaults", "components", "ns", "i18n", "t", "shouldUnescape"]; | ||
@@ -11,207 +9,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } | ||
import { useContext, isValidElement, cloneElement, createElement } from 'react'; | ||
import HTML from 'html-parse-stringify'; | ||
import { getI18n, I18nContext, getDefaults } from './context'; | ||
import { warn, warnOnce } from './utils'; | ||
function hasChildren(node, checkLength) { | ||
if (!node) return false; | ||
var base = node.props ? node.props.children : node.children; | ||
if (checkLength) return base.length > 0; | ||
return !!base; | ||
} | ||
function getChildren(node) { | ||
if (!node) return []; | ||
return node.props ? node.props.children : node.children; | ||
} | ||
function hasValidReactChildren(children) { | ||
if (Object.prototype.toString.call(children) !== '[object Array]') return false; | ||
return children.every(function (child) { | ||
return isValidElement(child); | ||
}); | ||
} | ||
function getAsArray(data) { | ||
return Array.isArray(data) ? data : [data]; | ||
} | ||
function mergeProps(source, target) { | ||
var newTarget = _objectSpread({}, target); | ||
newTarget.props = Object.assign(source.props, target.props); | ||
return newTarget; | ||
} | ||
export function nodesToString(children, i18nOptions) { | ||
if (!children) return ''; | ||
var stringNode = ''; | ||
var childrenArray = getAsArray(children); | ||
var keepArray = i18nOptions.transSupportBasicHtmlNodes && i18nOptions.transKeepBasicHtmlNodesFor ? i18nOptions.transKeepBasicHtmlNodesFor : []; | ||
childrenArray.forEach(function (child, childIndex) { | ||
if (typeof child === 'string') { | ||
stringNode += "".concat(child); | ||
} else if (isValidElement(child)) { | ||
var childPropsCount = Object.keys(child.props).length; | ||
var shouldKeepChild = keepArray.indexOf(child.type) > -1; | ||
var childChildren = child.props.children; | ||
if (!childChildren && shouldKeepChild && childPropsCount === 0) { | ||
stringNode += "<".concat(child.type, "/>"); | ||
} else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) { | ||
stringNode += "<".concat(childIndex, "></").concat(childIndex, ">"); | ||
} else if (child.props.i18nIsDynamicList) { | ||
stringNode += "<".concat(childIndex, "></").concat(childIndex, ">"); | ||
} else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === 'string') { | ||
stringNode += "<".concat(child.type, ">").concat(childChildren, "</").concat(child.type, ">"); | ||
} else { | ||
var content = nodesToString(childChildren, i18nOptions); | ||
stringNode += "<".concat(childIndex, ">").concat(content, "</").concat(childIndex, ">"); | ||
} | ||
} else if (child === null) { | ||
warn("Trans: the passed in value is invalid - seems you passed in a null child."); | ||
} else if (_typeof(child) === 'object') { | ||
var format = child.format, | ||
clone = _objectWithoutProperties(child, _excluded); | ||
var keys = Object.keys(clone); | ||
if (keys.length === 1) { | ||
var value = format ? "".concat(keys[0], ", ").concat(format) : keys[0]; | ||
stringNode += "{{".concat(value, "}}"); | ||
} else { | ||
warn("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.", child); | ||
} | ||
} else { | ||
warn("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}}.", child); | ||
} | ||
}); | ||
return stringNode; | ||
} | ||
function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) { | ||
if (targetString === '') return []; | ||
var keepArray = i18nOptions.transKeepBasicHtmlNodesFor || []; | ||
var emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.join('|')).test(targetString); | ||
if (!children && !emptyChildrenButNeedsHandling) return [targetString]; | ||
var data = {}; | ||
function getData(childs) { | ||
var childrenArray = getAsArray(childs); | ||
childrenArray.forEach(function (child) { | ||
if (typeof child === 'string') return; | ||
if (hasChildren(child)) getData(getChildren(child));else if (_typeof(child) === 'object' && !isValidElement(child)) Object.assign(data, child); | ||
}); | ||
} | ||
getData(children); | ||
var ast = HTML.parse("<0>".concat(targetString, "</0>")); | ||
var opts = _objectSpread(_objectSpread({}, data), combinedTOpts); | ||
function renderInner(child, node, rootReactNode) { | ||
var childs = getChildren(child); | ||
var mappedChildren = mapAST(childs, node.children, rootReactNode); | ||
return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren; | ||
} | ||
function pushTranslatedJSX(child, inner, mem, i, isVoid) { | ||
if (child.dummy) child.children = inner; | ||
mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, { | ||
key: i | ||
}), isVoid ? undefined : inner)); | ||
} | ||
function mapAST(reactNode, astNode, rootReactNode) { | ||
var reactNodes = getAsArray(reactNode); | ||
var astNodes = getAsArray(astNode); | ||
return astNodes.reduce(function (mem, node, i) { | ||
var translationContent = node.children && node.children[0] && node.children[0].content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language); | ||
if (node.type === 'tag') { | ||
var tmp = reactNodes[parseInt(node.name, 10)]; | ||
if (!tmp && rootReactNode.length === 1 && rootReactNode[0][node.name]) tmp = rootReactNode[0][node.name]; | ||
if (!tmp) tmp = {}; | ||
var child = Object.keys(node.attrs).length !== 0 ? mergeProps({ | ||
props: node.attrs | ||
}, tmp) : tmp; | ||
var isElement = isValidElement(child); | ||
var isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement; | ||
var isEmptyTransWithHTML = emptyChildrenButNeedsHandling && _typeof(child) === 'object' && child.dummy && !isElement; | ||
var isKnownComponent = _typeof(children) === 'object' && children !== null && Object.hasOwnProperty.call(children, node.name); | ||
if (typeof child === 'string') { | ||
var value = i18n.services.interpolator.interpolate(child, opts, i18n.language); | ||
mem.push(value); | ||
} else if (hasChildren(child) || isValidTranslationWithChildren) { | ||
var inner = renderInner(child, node, rootReactNode); | ||
pushTranslatedJSX(child, inner, mem, i); | ||
} else if (isEmptyTransWithHTML) { | ||
var _inner = mapAST(reactNodes, node.children, rootReactNode); | ||
mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, { | ||
key: i | ||
}), _inner)); | ||
} else if (Number.isNaN(parseFloat(node.name))) { | ||
if (isKnownComponent) { | ||
var _inner2 = renderInner(child, node, rootReactNode); | ||
pushTranslatedJSX(child, _inner2, mem, i, node.voidElement); | ||
} else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) { | ||
if (node.voidElement) { | ||
mem.push(createElement(node.name, { | ||
key: "".concat(node.name, "-").concat(i) | ||
})); | ||
} else { | ||
var _inner3 = mapAST(reactNodes, node.children, rootReactNode); | ||
mem.push(createElement(node.name, { | ||
key: "".concat(node.name, "-").concat(i) | ||
}, _inner3)); | ||
} | ||
} else if (node.voidElement) { | ||
mem.push("<".concat(node.name, " />")); | ||
} else { | ||
var _inner4 = mapAST(reactNodes, node.children, rootReactNode); | ||
mem.push("<".concat(node.name, ">").concat(_inner4, "</").concat(node.name, ">")); | ||
} | ||
} else if (_typeof(child) === 'object' && !isElement) { | ||
var content = node.children[0] ? translationContent : null; | ||
if (content) mem.push(content); | ||
} else if (node.children.length === 1 && translationContent) { | ||
mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, { | ||
key: i | ||
}), translationContent)); | ||
} else { | ||
mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, { | ||
key: i | ||
}))); | ||
} | ||
} else if (node.type === 'text') { | ||
var wrapTextNodes = i18nOptions.transWrapTextNodes; | ||
var _content = shouldUnescape ? i18nOptions.unescape(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language); | ||
if (wrapTextNodes) { | ||
mem.push(createElement(wrapTextNodes, { | ||
key: "".concat(node.name, "-").concat(i) | ||
}, _content)); | ||
} else { | ||
mem.push(_content); | ||
} | ||
} | ||
return mem; | ||
}, []); | ||
} | ||
var result = mapAST([{ | ||
dummy: true, | ||
children: children || [] | ||
}], ast, getAsArray(children || [])); | ||
return getChildren(result[0]); | ||
} | ||
import { useContext } from 'react'; | ||
import { nodesToString, Trans as TransWithoutContext } from './TransWithoutContext'; | ||
import { getI18n, I18nContext } from './context'; | ||
export { nodesToString }; | ||
export function Trans(_ref) { | ||
@@ -232,3 +29,3 @@ var children = _ref.children, | ||
shouldUnescape = _ref.shouldUnescape, | ||
additionalProps = _objectWithoutProperties(_ref, _excluded2); | ||
additionalProps = _objectWithoutProperties(_ref, _excluded); | ||
@@ -241,7 +38,2 @@ var _ref2 = useContext(I18nContext) || {}, | ||
if (!i18n) { | ||
warnOnce('You will need to pass in an i18next instance by using i18nextReactModule'); | ||
return children; | ||
} | ||
var t = tFromProps || i18n.t.bind(i18n) || function (k) { | ||
@@ -251,29 +43,17 @@ return k; | ||
if (context) tOptions.context = context; | ||
var reactI18nextOptions = _objectSpread(_objectSpread({}, getDefaults()), i18n.options && i18n.options.react); | ||
var namespaces = ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS; | ||
namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation']; | ||
var defaultValue = defaults || nodesToString(children, reactI18nextOptions) || reactI18nextOptions.transEmptyNodeValue || i18nKey; | ||
var hashTransKey = reactI18nextOptions.hashTransKey; | ||
var key = i18nKey || (hashTransKey ? hashTransKey(defaultValue) : defaultValue); | ||
var interpolationOverride = values ? tOptions.interpolation : { | ||
interpolation: _objectSpread(_objectSpread({}, tOptions.interpolation), {}, { | ||
prefix: '#$?', | ||
suffix: '?$#' | ||
}) | ||
}; | ||
var combinedTOpts = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, tOptions), {}, { | ||
count: count | ||
}, values), interpolationOverride), {}, { | ||
defaultValue: defaultValue, | ||
ns: namespaces | ||
}); | ||
var translation = key ? t(key, combinedTOpts) : defaultValue; | ||
var content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape); | ||
var useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent; | ||
return useAsParent ? createElement(useAsParent, additionalProps, content) : content; | ||
return TransWithoutContext(_objectSpread({ | ||
children: children, | ||
count: count, | ||
parent: parent, | ||
i18nKey: i18nKey, | ||
context: context, | ||
tOptions: tOptions, | ||
values: values, | ||
defaults: defaults, | ||
components: components, | ||
ns: ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS, | ||
i18n: i18n, | ||
t: tFromProps, | ||
shouldUnescape: shouldUnescape | ||
}, additionalProps)); | ||
} |
@@ -321,122 +321,2 @@ (function (global, factory) { | ||
var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g; | ||
var htmlEntities = { | ||
'&': '&', | ||
'&': '&', | ||
'<': '<', | ||
'<': '<', | ||
'>': '>', | ||
'>': '>', | ||
''': "'", | ||
''': "'", | ||
'"': '"', | ||
'"': '"', | ||
' ': ' ', | ||
' ': ' ', | ||
'©': 'ยฉ', | ||
'©': 'ยฉ', | ||
'®': 'ยฎ', | ||
'®': 'ยฎ', | ||
'…': 'โฆ', | ||
'…': 'โฆ', | ||
'/': '/', | ||
'/': '/' | ||
}; | ||
var unescapeHtmlEntity = function unescapeHtmlEntity(m) { | ||
return htmlEntities[m]; | ||
}; | ||
var unescape = function unescape(text) { | ||
return text.replace(matchHtmlEntity, unescapeHtmlEntity); | ||
}; | ||
var defaultOptions = { | ||
bindI18n: 'languageChanged', | ||
bindI18nStore: '', | ||
transEmptyNodeValue: '', | ||
transSupportBasicHtmlNodes: true, | ||
transWrapTextNodes: '', | ||
transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'], | ||
useSuspense: true, | ||
unescape: unescape | ||
}; | ||
var i18nInstance; | ||
var I18nContext = react.createContext(); | ||
function setDefaults() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
defaultOptions = _objectSpread2(_objectSpread2({}, defaultOptions), options); | ||
} | ||
function getDefaults() { | ||
return defaultOptions; | ||
} | ||
var ReportNamespaces = function () { | ||
function ReportNamespaces() { | ||
_classCallCheck(this, ReportNamespaces); | ||
this.usedNamespaces = {}; | ||
} | ||
_createClass(ReportNamespaces, [{ | ||
key: "addUsedNamespaces", | ||
value: function addUsedNamespaces(namespaces) { | ||
var _this = this; | ||
namespaces.forEach(function (ns) { | ||
if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true; | ||
}); | ||
} | ||
}, { | ||
key: "getUsedNamespaces", | ||
value: function getUsedNamespaces() { | ||
return Object.keys(this.usedNamespaces); | ||
} | ||
}]); | ||
return ReportNamespaces; | ||
}(); | ||
function setI18n(instance) { | ||
i18nInstance = instance; | ||
} | ||
function getI18n() { | ||
return i18nInstance; | ||
} | ||
var initReactI18next = { | ||
type: '3rdParty', | ||
init: function init(instance) { | ||
setDefaults(instance.options.react); | ||
setI18n(instance); | ||
} | ||
}; | ||
function composeInitialProps(ForComponent) { | ||
return function (ctx) { | ||
return new Promise(function (resolve) { | ||
var i18nInitialProps = getInitialProps(); | ||
if (ForComponent.getInitialProps) { | ||
ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) { | ||
resolve(_objectSpread2(_objectSpread2({}, componentsInitialProps), i18nInitialProps)); | ||
}); | ||
} else { | ||
resolve(i18nInitialProps); | ||
} | ||
}); | ||
}; | ||
} | ||
function getInitialProps() { | ||
var i18n = getI18n(); | ||
var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : []; | ||
var ret = {}; | ||
var initialI18nStore = {}; | ||
i18n.languages.forEach(function (l) { | ||
initialI18nStore[l] = {}; | ||
namespaces.forEach(function (ns) { | ||
initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {}; | ||
}); | ||
}); | ||
ret.initialI18nStore = initialI18nStore; | ||
ret.initialLanguage = i18n.language; | ||
return ret; | ||
} | ||
function warn() { | ||
@@ -525,2 +405,60 @@ if (console && console.warn) { | ||
var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g; | ||
var htmlEntities = { | ||
'&': '&', | ||
'&': '&', | ||
'<': '<', | ||
'<': '<', | ||
'>': '>', | ||
'>': '>', | ||
''': "'", | ||
''': "'", | ||
'"': '"', | ||
'"': '"', | ||
' ': ' ', | ||
' ': ' ', | ||
'©': 'ยฉ', | ||
'©': 'ยฉ', | ||
'®': 'ยฎ', | ||
'®': 'ยฎ', | ||
'…': 'โฆ', | ||
'…': 'โฆ', | ||
'/': '/', | ||
'/': '/' | ||
}; | ||
var unescapeHtmlEntity = function unescapeHtmlEntity(m) { | ||
return htmlEntities[m]; | ||
}; | ||
var unescape = function unescape(text) { | ||
return text.replace(matchHtmlEntity, unescapeHtmlEntity); | ||
}; | ||
var defaultOptions = { | ||
bindI18n: 'languageChanged', | ||
bindI18nStore: '', | ||
transEmptyNodeValue: '', | ||
transSupportBasicHtmlNodes: true, | ||
transWrapTextNodes: '', | ||
transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'], | ||
useSuspense: true, | ||
unescape: unescape | ||
}; | ||
function setDefaults() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
defaultOptions = _objectSpread2(_objectSpread2({}, defaultOptions), options); | ||
} | ||
function getDefaults() { | ||
return defaultOptions; | ||
} | ||
var i18nInstance; | ||
function setI18n(instance) { | ||
i18nInstance = instance; | ||
} | ||
function getI18n() { | ||
return i18nInstance; | ||
} | ||
var _excluded = ["format"], | ||
@@ -746,8 +684,4 @@ _excluded2 = ["children", "count", "parent", "i18nKey", "context", "tOptions", "values", "defaults", "components", "ns", "i18n", "t", "shouldUnescape"]; | ||
var _ref2 = react.useContext(I18nContext) || {}, | ||
i18nFromContext = _ref2.i18n, | ||
defaultNSFromContext = _ref2.defaultNS; | ||
var i18n = i18nFromProps || getI18n(); | ||
var i18n = i18nFromProps || i18nFromContext || getI18n(); | ||
if (!i18n) { | ||
@@ -766,3 +700,3 @@ warnOnce('You will need to pass in an i18next instance by using i18nextReactModule'); | ||
var namespaces = ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS; | ||
var namespaces = ns || t.ns || i18n.options && i18n.options.defaultNS; | ||
namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation']; | ||
@@ -792,2 +726,112 @@ var defaultValue = defaults || nodesToString(children, reactI18nextOptions) || reactI18nextOptions.transEmptyNodeValue || i18nKey; | ||
var initReactI18next = { | ||
type: '3rdParty', | ||
init: function init(instance) { | ||
setDefaults(instance.options.react); | ||
setI18n(instance); | ||
} | ||
}; | ||
var I18nContext = react.createContext(); | ||
var ReportNamespaces = function () { | ||
function ReportNamespaces() { | ||
_classCallCheck(this, ReportNamespaces); | ||
this.usedNamespaces = {}; | ||
} | ||
_createClass(ReportNamespaces, [{ | ||
key: "addUsedNamespaces", | ||
value: function addUsedNamespaces(namespaces) { | ||
var _this = this; | ||
namespaces.forEach(function (ns) { | ||
if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true; | ||
}); | ||
} | ||
}, { | ||
key: "getUsedNamespaces", | ||
value: function getUsedNamespaces() { | ||
return Object.keys(this.usedNamespaces); | ||
} | ||
}]); | ||
return ReportNamespaces; | ||
}(); | ||
function composeInitialProps(ForComponent) { | ||
return function (ctx) { | ||
return new Promise(function (resolve) { | ||
var i18nInitialProps = getInitialProps(); | ||
if (ForComponent.getInitialProps) { | ||
ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) { | ||
resolve(_objectSpread2(_objectSpread2({}, componentsInitialProps), i18nInitialProps)); | ||
}); | ||
} else { | ||
resolve(i18nInitialProps); | ||
} | ||
}); | ||
}; | ||
} | ||
function getInitialProps() { | ||
var i18n = getI18n(); | ||
var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : []; | ||
var ret = {}; | ||
var initialI18nStore = {}; | ||
i18n.languages.forEach(function (l) { | ||
initialI18nStore[l] = {}; | ||
namespaces.forEach(function (ns) { | ||
initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {}; | ||
}); | ||
}); | ||
ret.initialI18nStore = initialI18nStore; | ||
ret.initialLanguage = i18n.language; | ||
return ret; | ||
} | ||
var _excluded$1 = ["children", "count", "parent", "i18nKey", "context", "tOptions", "values", "defaults", "components", "ns", "i18n", "t", "shouldUnescape"]; | ||
function Trans$1(_ref) { | ||
var children = _ref.children, | ||
count = _ref.count, | ||
parent = _ref.parent, | ||
i18nKey = _ref.i18nKey, | ||
context = _ref.context, | ||
_ref$tOptions = _ref.tOptions, | ||
tOptions = _ref$tOptions === void 0 ? {} : _ref$tOptions, | ||
values = _ref.values, | ||
defaults = _ref.defaults, | ||
components = _ref.components, | ||
ns = _ref.ns, | ||
i18nFromProps = _ref.i18n, | ||
tFromProps = _ref.t, | ||
shouldUnescape = _ref.shouldUnescape, | ||
additionalProps = _objectWithoutProperties(_ref, _excluded$1); | ||
var _ref2 = react.useContext(I18nContext) || {}, | ||
i18nFromContext = _ref2.i18n, | ||
defaultNSFromContext = _ref2.defaultNS; | ||
var i18n = i18nFromProps || i18nFromContext || getI18n(); | ||
var t = tFromProps || i18n.t.bind(i18n) || function (k) { | ||
return k; | ||
}; | ||
return Trans(_objectSpread2({ | ||
children: children, | ||
count: count, | ||
parent: parent, | ||
i18nKey: i18nKey, | ||
context: context, | ||
tOptions: tOptions, | ||
values: values, | ||
defaults: defaults, | ||
components: components, | ||
ns: ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS, | ||
i18n: i18n, | ||
t: tFromProps, | ||
shouldUnescape: shouldUnescape | ||
}, additionalProps)); | ||
} | ||
var usePrevious = function usePrevious(value, ignore) { | ||
@@ -903,3 +947,3 @@ var ref = react.useRef(); | ||
var _excluded$1 = ["forwardedRef"]; | ||
var _excluded$2 = ["forwardedRef"]; | ||
function withTranslation(ns) { | ||
@@ -910,3 +954,3 @@ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var forwardedRef = _ref.forwardedRef, | ||
rest = _objectWithoutProperties(_ref, _excluded$1); | ||
rest = _objectWithoutProperties(_ref, _excluded$2); | ||
@@ -949,7 +993,7 @@ var _useTranslation = useTranslation(ns, _objectSpread2(_objectSpread2({}, rest), {}, { | ||
var _excluded$2 = ["ns", "children"]; | ||
var _excluded$3 = ["ns", "children"]; | ||
function Translation(props) { | ||
var ns = props.ns, | ||
children = props.children, | ||
options = _objectWithoutProperties(props, _excluded$2); | ||
options = _objectWithoutProperties(props, _excluded$3); | ||
@@ -1011,3 +1055,3 @@ var _useTranslation = useTranslation(ns, options), | ||
var _excluded$3 = ["initialI18nStore", "initialLanguage"]; | ||
var _excluded$4 = ["initialI18nStore", "initialLanguage"]; | ||
function withSSR() { | ||
@@ -1018,3 +1062,3 @@ return function Extend(WrappedComponent) { | ||
initialLanguage = _ref.initialLanguage, | ||
rest = _objectWithoutProperties(_ref, _excluded$3); | ||
rest = _objectWithoutProperties(_ref, _excluded$4); | ||
@@ -1053,3 +1097,4 @@ useSSR(initialI18nStore, initialLanguage); | ||
exports.I18nextProvider = I18nextProvider; | ||
exports.Trans = Trans; | ||
exports.Trans = Trans$1; | ||
exports.TransWithoutContext = Trans; | ||
exports.Translation = Translation; | ||
@@ -1056,0 +1101,0 @@ exports.composeInitialProps = composeInitialProps; |
@@ -1,1 +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";function t(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 r(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?t(Object(r),!0).forEach((function(n){o(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,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 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 o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function c(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function s(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,a,i=[],o=!0,c=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(i.push(r.value),!n||i.length!==n);o=!0);}catch(e){c=!0,a=e}finally{try{o||null==t.return||t.return()}finally{if(c)throw a}}return i}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return u(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 u(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 u(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 l={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},f=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function p(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(l[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 a=new RegExp(f),i=null;null!==(i=a.exec(e));)if(i[0].trim())if(i[1]){var o=i[1].trim(),c=[o,""];o.indexOf("=")>-1&&(c=o.split("=")),n.attrs[c[0]]=c[1],a.lastIndex--}else i[2]&&(n.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1));return n}var d=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,g=/^\s*$/,m=Object.create(null);var h,v=function(e,n){n||(n={}),n.components||(n.components=m);var t,r=[],a=[],i=-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(d,(function(c,s){if(o){if(c!=="</"+t.name+">")return;o=!1}var u,l="/"!==c.charAt(1),f=c.startsWith("\x3c!--"),d=s+c.length,m=e.charAt(d);if(f){var h=p(c);return i<0?(r.push(h),r):((u=a[i]).children.push(h),r)}if(l&&(i++,"tag"===(t=p(c)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!m||"<"===m||t.children.push({type:"text",content:e.slice(d,e.indexOf("<",d))}),0===i&&r.push(t),(u=a[i-1])&&u.children.push(t),a[i]=t),(!l||t.voidElement)&&(i>-1&&(t.voidElement||t.name===c.slice(2,-1))&&(i--,t=-1===i?r:a[i]),!o&&"<"!==m&&m)){u=-1===i?r:a[i].children;var v=e.indexOf("<",d),y=e.slice(d,-1===v?void 0:v);g.test(y)&&(y=" "),(v>-1&&i+u.length>=0||" "!==y)&&u.push({type:"text",content:y})}})),r},y=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,b={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"ยฉ","©":"ยฉ","®":"ยฎ","®":"ยฎ","…":"โฆ","…":"โฆ","/":"/","/":"/"},O=function(e){return b[e]},x={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:function(e){return e.replace(y,O)}},w=n.createContext();function j(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};x=r(r({},x),e)}function E(){return x}var S=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 N(e){h=e}function k(){return h}var I={type:"3rdParty",init:function(e){j(e.options.react),N(e)}};function P(e){return function(n){return new Promise((function(t){var a=R();e.getInitialProps?e.getInitialProps(n).then((function(e){t(r(r({},e),a))})):t(a)}))}}function R(){var e=k(),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 C(){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 T={};function A(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&T[n[0]]||("string"==typeof n[0]&&(T[n[0]]=new Date),C.apply(void 0,n))}function L(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 z(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.languages[0],a=!!n.options&&n.options.fallbackLng,i=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&&(!n.options.resources||n.options.partialBundledLanguages))||!(!o(r,e)||a&&!o(i,e))))}function B(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return A("i18n.languages were undefined or empty",n.languages),!0;var r=void 0!==n.options.ignoreJSONStructure;return r?n.hasLoadedNamespace(e,{precheck:function(n,r){if(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!r(n.isLanguageChangingTo,e))return!1}}):z(e,n,t)}function U(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}var D=["format"],F=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function H(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function K(e){return e?e.props?e.props.children:e.children:[]}function V(e){return Array.isArray(e)?e:[e]}function W(e,t,i,o,c,s){if(""===t)return[];var u=o.transKeepBasicHtmlNodesFor||[],l=t&&new RegExp(u.join("|")).test(t);if(!e&&!l)return[t];var f={};!function e(t){V(t).forEach((function(t){"string"!=typeof t&&(H(t)?e(K(t)):"object"!==a(t)||n.isValidElement(t)||Object.assign(f,t))}))}(e);var p=v("<0>".concat(t,"</0>")),d=r(r({},f),c);function g(e,t,r){var a=K(e),i=h(a,t.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return n.isValidElement(e)}))}(a)&&0===i.length?a:i}function m(e,t,a,i,o){e.dummy&&(e.children=t),a.push(n.cloneElement(e,r(r({},e.props),{},{key:i}),o?void 0:t))}function h(t,c,f){var p=V(t);return V(c).reduce((function(t,c,v){var y,b,O,x=c.children&&c.children[0]&&c.children[0].content&&i.services.interpolator.interpolate(c.children[0].content,d,i.language);if("tag"===c.type){var w=p[parseInt(c.name,10)];!w&&1===f.length&&f[0][c.name]&&(w=f[0][c.name]),w||(w={});var j=0!==Object.keys(c.attrs).length?(y={props:c.attrs},(O=r({},b=w)).props=Object.assign(y.props,b.props),O):w,E=n.isValidElement(j),S=E&&H(c,!0)&&!c.voidElement,N=l&&"object"===a(j)&&j.dummy&&!E,k="object"===a(e)&&null!==e&&Object.hasOwnProperty.call(e,c.name);if("string"==typeof j){var I=i.services.interpolator.interpolate(j,d,i.language);t.push(I)}else if(H(j)||S){m(j,g(j,c,f),t,v)}else if(N){var P=h(p,c.children,f);t.push(n.cloneElement(j,r(r({},j.props),{},{key:v}),P))}else if(Number.isNaN(parseFloat(c.name))){if(k)m(j,g(j,c,f),t,v,c.voidElement);else if(o.transSupportBasicHtmlNodes&&u.indexOf(c.name)>-1)if(c.voidElement)t.push(n.createElement(c.name,{key:"".concat(c.name,"-").concat(v)}));else{var R=h(p,c.children,f);t.push(n.createElement(c.name,{key:"".concat(c.name,"-").concat(v)},R))}else if(c.voidElement)t.push("<".concat(c.name," />"));else{var C=h(p,c.children,f);t.push("<".concat(c.name,">").concat(C,"</").concat(c.name,">"))}}else if("object"!==a(j)||E)1===c.children.length&&x?t.push(n.cloneElement(j,r(r({},j.props),{},{key:v}),x)):t.push(n.cloneElement(j,r(r({},j.props),{},{key:v})));else{var T=c.children[0]?x:null;T&&t.push(T)}}else if("text"===c.type){var A=o.transWrapTextNodes,L=s?o.unescape(i.services.interpolator.interpolate(c.content,d,i.language)):i.services.interpolator.interpolate(c.content,d,i.language);A?t.push(n.createElement(A,{key:"".concat(c.name,"-").concat(v)},L)):t.push(L)}return t}),[])}return K(h([{dummy:!0,children:e||[]}],p,V(e||[]))[0])}var M=function(e,t){var r=n.useRef();return n.useEffect((function(){r.current=t?r.current:e}),[e,t]),r.current};function $(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.i18n,i=n.useContext(w)||{},o=i.i18n,c=i.defaultNS,u=a||o||k();if(u&&!u.reportNamespaces&&(u.reportNamespaces=new S),!u){A("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}u.options.react&&void 0!==u.options.react.wait&&A("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=r(r(r({},E()),u.options.react),t),d=p.useSuspense,g=p.keyPrefix,m=e||c||u.options&&u.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],u.reportNamespaces.addUsedNamespaces&&u.reportNamespaces.addUsedNamespaces(m);var h=(u.isInitialized||u.initializedStoreOnce)&&m.every((function(e){return B(e,u,p)}));function v(){return u.getFixedT(null,"fallback"===p.nsMode?m:m[0],g)}var y=n.useState(v),b=s(y,2),O=b[0],x=b[1],j=m.join(),N=M(j),I=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){I.current&&x(v)}return I.current=!0,h||d||L(u,m,(function(){I.current&&x(v)})),h&&N&&N!==j&&I.current&&x(v),e&&u&&u.on(e,t),n&&u&&u.store.on(n,t),function(){I.current=!1,e&&u&&e.split(" ").forEach((function(e){return u.off(e,t)})),n&&u&&n.split(" ").forEach((function(e){return u.store.off(e,t)}))}}),[u,j]);var P=n.useRef(!0);n.useEffect((function(){I.current&&!P.current&&x(v),P.current=!1}),[u,g]);var R=[O,u,h];if(R.t=O,R.i18n=u,R.ready=h,h)return R;if(!h&&!d)return R;throw new Promise((function(e){L(u,m,(function(){e()}))}))}var q=["forwardedRef"];var Y=["ns","children"];function _(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=r.i18n,i=n.useContext(w)||{},o=i.i18n,c=a||o||k();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 J=["initialI18nStore","initialLanguage"];e.I18nContext=w,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,a=e.children,i=n.useMemo((function(){return{i18n:t,defaultNS:r}}),[t,r]);return n.createElement(w.Provider,{value:i},a)},e.Trans=function(e){var t=e.children,i=e.count,o=e.parent,s=e.i18nKey,u=e.context,l=e.tOptions,f=void 0===l?{}:l,p=e.values,d=e.defaults,g=e.components,m=e.ns,h=e.i18n,v=e.t,y=e.shouldUnescape,b=c(e,F),O=n.useContext(w)||{},x=O.i18n,j=O.defaultNS,S=h||x||k();if(!S)return A("You will need to pass in an i18next instance by using i18nextReactModule"),t;var N=v||S.t.bind(S)||function(e){return e};u&&(f.context=u);var I=r(r({},E()),S.options&&S.options.react),P=m||N.ns||j||S.options&&S.options.defaultNS;P="string"==typeof P?[P]:P||["translation"];var R=d||function e(t,r){if(!t)return"";var i="",o=V(t),s=r.transSupportBasicHtmlNodes&&r.transKeepBasicHtmlNodesFor?r.transKeepBasicHtmlNodesFor:[];return o.forEach((function(t,o){if("string"==typeof t)i+="".concat(t);else if(n.isValidElement(t)){var u=Object.keys(t.props).length,l=s.indexOf(t.type)>-1,f=t.props.children;if(!f&&l&&0===u)i+="<".concat(t.type,"/>");else if(f||l&&0===u)if(t.props.i18nIsDynamicList)i+="<".concat(o,"></").concat(o,">");else if(l&&1===u&&"string"==typeof f)i+="<".concat(t.type,">").concat(f,"</").concat(t.type,">");else{var p=e(f,r);i+="<".concat(o,">").concat(p,"</").concat(o,">")}else i+="<".concat(o,"></").concat(o,">")}else if(null===t)C("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===a(t)){var d=t.format,g=c(t,D),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];i+="{{".concat(h,"}}")}else C("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",t)}else C("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}}.",t)})),i}(t,I)||I.transEmptyNodeValue||s,T=I.hashTransKey,L=s||(T?T(R):R),z=p?f.interpolation:{interpolation:r(r({},f.interpolation),{},{prefix:"#$?",suffix:"?$#"})},B=r(r(r(r({},f),{},{count:i},p),z),{},{defaultValue:R,ns:P}),U=W(g||t,L?N(L,B):R,S,I,B,y),H=void 0!==o?o:I.defaultTransParent;return H?n.createElement(H,b,U):U},e.Translation=function(e){var n=e.ns,t=e.children,r=s($(n,c(e,Y)),3),a=r[0],i=r[1],o=r[2];return t(a,{i18n:i,lng:i.language},o)},e.composeInitialProps=P,e.date=function(){return""},e.getDefaults=E,e.getI18n=k,e.getInitialProps=R,e.initReactI18next=I,e.number=function(){return""},e.plural=function(){return""},e.select=function(){return""},e.selectOrdinal=function(){return""},e.setDefaults=j,e.setI18n=N,e.time=function(){return""},e.useSSR=_,e.useTranslation=$,e.withSSR=function(){return function(e){function t(t){var a=t.initialI18nStore,i=t.initialLanguage,o=c(t,J);return _(a,i),n.createElement(e,r({},o))}return t.getInitialProps=P(e),t.displayName="withI18nextSSR(".concat(U(e),")"),t.WrappedComponent=e,t}},e.withTranslation=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(a){function i(i){var o=i.forwardedRef,u=c(i,q),l=s($(e,r(r({},u),{},{keyPrefix:t.keyPrefix})),3),f=l[0],p=l[1],d=l[2],g=r(r({},u),{},{t:f,i18n:p,tReady:d});return t.withRef&&o?g.ref=o:!t.withRef&&o&&(g.forwardedRef=o),n.createElement(a,g)}i.displayName="withI18nextTranslation(".concat(U(a),")"),i.WrappedComponent=a;return t.withRef?n.forwardRef((function(e,t){return n.createElement(i,Object.assign({},e,{forwardedRef:t}))})):i}},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!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";function t(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 r(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?t(Object(r),!0).forEach((function(n){o(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function i(e){return(i="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 a(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 o(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 c(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,s=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(a.push(r.value),!n||a.length!==n);o=!0);}catch(e){s=!0,i=e}finally{try{o||null==t.return||t.return()}finally{if(s)throw i}}return a}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return u(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 u(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 u(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 l={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},f=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function p(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(l[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(f),a=null;null!==(a=i.exec(e));)if(a[0].trim())if(a[1]){var o=a[1].trim(),s=[o,""];o.indexOf("=")>-1&&(s=o.split("=")),n.attrs[s[0]]=s[1],i.lastIndex--}else a[2]&&(n.attrs[a[2]]=a[3].trim().substring(1,a[3].length-1));return n}var d=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,g=/^\s*$/,m=Object.create(null);var h=function(e,n){n||(n={}),n.components||(n.components=m);var t,r=[],i=[],a=-1,o=!1;if(0!==e.indexOf("<")){var s=e.indexOf("<");r.push({type:"text",content:-1===s?e:e.substring(0,s)})}return e.replace(d,(function(s,c){if(o){if(s!=="</"+t.name+">")return;o=!1}var u,l="/"!==s.charAt(1),f=s.startsWith("\x3c!--"),d=c+s.length,m=e.charAt(d);if(f){var h=p(s);return a<0?(r.push(h),r):((u=i[a]).children.push(h),r)}if(l&&(a++,"tag"===(t=p(s)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!m||"<"===m||t.children.push({type:"text",content:e.slice(d,e.indexOf("<",d))}),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===s.slice(2,-1))&&(a--,t=-1===a?r:i[a]),!o&&"<"!==m&&m)){u=-1===a?r:i[a].children;var v=e.indexOf("<",d),y=e.slice(d,-1===v?void 0:v);g.test(y)&&(y=" "),(v>-1&&a+u.length>=0||" "!==y)&&u.push({type:"text",content:y})}})),r};function v(){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 y={};function b(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&y[n[0]]||("string"==typeof n[0]&&(y[n[0]]=new Date),v.apply(void 0,n))}function O(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 x(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},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&&(!n.options.resources||n.options.partialBundledLanguages))||!(!o(r,e)||i&&!o(a,e))))}function w(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return b("i18n.languages were undefined or empty",n.languages),!0;var r=void 0!==n.options.ignoreJSONStructure;return r?n.hasLoadedNamespace(e,{precheck:function(n,r){if(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!r(n.isLanguageChangingTo,e))return!1}}):x(e,n,t)}function S(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}var j,E=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,N={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"ยฉ","©":"ยฉ","®":"ยฎ","®":"ยฎ","…":"โฆ","…":"โฆ","/":"/","/":"/"},k=function(e){return N[e]},I={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:function(e){return e.replace(E,k)}};function P(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};I=r(r({},I),e)}function R(){return I}function C(e){j=e}function T(){return j}var A=["format"],L=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function U(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function z(e){return e?e.props?e.props.children:e.children:[]}function B(e){return Array.isArray(e)?e:[e]}function K(e,t,a,o,s,c){if(""===t)return[];var u=o.transKeepBasicHtmlNodesFor||[],l=t&&new RegExp(u.join("|")).test(t);if(!e&&!l)return[t];var f={};!function e(t){B(t).forEach((function(t){"string"!=typeof t&&(U(t)?e(z(t)):"object"!==i(t)||n.isValidElement(t)||Object.assign(f,t))}))}(e);var p=h("<0>".concat(t,"</0>")),d=r(r({},f),s);function g(e,t,r){var i=z(e),a=v(i,t.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return n.isValidElement(e)}))}(i)&&0===a.length?i:a}function m(e,t,i,a,o){e.dummy&&(e.children=t),i.push(n.cloneElement(e,r(r({},e.props),{},{key:a}),o?void 0:t))}function v(t,s,f){var p=B(t);return B(s).reduce((function(t,s,h){var y,b,O,x=s.children&&s.children[0]&&s.children[0].content&&a.services.interpolator.interpolate(s.children[0].content,d,a.language);if("tag"===s.type){var w=p[parseInt(s.name,10)];!w&&1===f.length&&f[0][s.name]&&(w=f[0][s.name]),w||(w={});var S=0!==Object.keys(s.attrs).length?(y={props:s.attrs},(O=r({},b=w)).props=Object.assign(y.props,b.props),O):w,j=n.isValidElement(S),E=j&&U(s,!0)&&!s.voidElement,N=l&&"object"===i(S)&&S.dummy&&!j,k="object"===i(e)&&null!==e&&Object.hasOwnProperty.call(e,s.name);if("string"==typeof S){var I=a.services.interpolator.interpolate(S,d,a.language);t.push(I)}else if(U(S)||E){m(S,g(S,s,f),t,h)}else if(N){var P=v(p,s.children,f);t.push(n.cloneElement(S,r(r({},S.props),{},{key:h}),P))}else if(Number.isNaN(parseFloat(s.name))){if(k)m(S,g(S,s,f),t,h,s.voidElement);else if(o.transSupportBasicHtmlNodes&&u.indexOf(s.name)>-1)if(s.voidElement)t.push(n.createElement(s.name,{key:"".concat(s.name,"-").concat(h)}));else{var R=v(p,s.children,f);t.push(n.createElement(s.name,{key:"".concat(s.name,"-").concat(h)},R))}else if(s.voidElement)t.push("<".concat(s.name," />"));else{var C=v(p,s.children,f);t.push("<".concat(s.name,">").concat(C,"</").concat(s.name,">"))}}else if("object"!==i(S)||j)1===s.children.length&&x?t.push(n.cloneElement(S,r(r({},S.props),{},{key:h}),x)):t.push(n.cloneElement(S,r(r({},S.props),{},{key:h})));else{var T=s.children[0]?x:null;T&&t.push(T)}}else if("text"===s.type){var A=o.transWrapTextNodes,L=c?o.unescape(a.services.interpolator.interpolate(s.content,d,a.language)):a.services.interpolator.interpolate(s.content,d,a.language);A?t.push(n.createElement(A,{key:"".concat(s.name,"-").concat(h)},L)):t.push(L)}return t}),[])}return z(v([{dummy:!0,children:e||[]}],p,B(e||[]))[0])}function D(e){var t=e.children,a=e.count,o=e.parent,c=e.i18nKey,u=e.context,l=e.tOptions,f=void 0===l?{}:l,p=e.values,d=e.defaults,g=e.components,m=e.ns,h=e.i18n,y=e.t,O=e.shouldUnescape,x=s(e,L),w=h||T();if(!w)return b("You will need to pass in an i18next instance by using i18nextReactModule"),t;var S=y||w.t.bind(w)||function(e){return e};u&&(f.context=u);var j=r(r({},R()),w.options&&w.options.react),E=m||S.ns||w.options&&w.options.defaultNS;E="string"==typeof E?[E]:E||["translation"];var N=d||function e(t,r){if(!t)return"";var a="",o=B(t),c=r.transSupportBasicHtmlNodes&&r.transKeepBasicHtmlNodesFor?r.transKeepBasicHtmlNodesFor:[];return o.forEach((function(t,o){if("string"==typeof t)a+="".concat(t);else if(n.isValidElement(t)){var u=Object.keys(t.props).length,l=c.indexOf(t.type)>-1,f=t.props.children;if(!f&&l&&0===u)a+="<".concat(t.type,"/>");else if(f||l&&0===u)if(t.props.i18nIsDynamicList)a+="<".concat(o,"></").concat(o,">");else if(l&&1===u&&"string"==typeof f)a+="<".concat(t.type,">").concat(f,"</").concat(t.type,">");else{var p=e(f,r);a+="<".concat(o,">").concat(p,"</").concat(o,">")}else a+="<".concat(o,"></").concat(o,">")}else if(null===t)v("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===i(t)){var d=t.format,g=s(t,A),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];a+="{{".concat(h,"}}")}else v("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",t)}else v("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}}.",t)})),a}(t,j)||j.transEmptyNodeValue||c,k=j.hashTransKey,I=c||(k?k(N):N),P=p?f.interpolation:{interpolation:r(r({},f.interpolation),{},{prefix:"#$?",suffix:"?$#"})},C=r(r(r(r({},f),{},{count:a},p),P),{},{defaultValue:N,ns:E}),U=K(g||t,I?S(I,C):N,w,j,C,O),z=void 0!==o?o:j.defaultTransParent;return z?n.createElement(z,x,U):U}var F={type:"3rdParty",init:function(e){P(e.options.react),C(e)}},H=n.createContext(),V=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)}}])&&a(n.prototype,t),r&&a(n,r),e}();function W(e){return function(n){return new Promise((function(t){var i=M();e.getInitialProps?e.getInitialProps(n).then((function(e){t(r(r({},e),i))})):t(i)}))}}function M(){var e=T(),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}var $=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];var q=function(e,t){var r=n.useRef();return n.useEffect((function(){r.current=t?r.current:e}),[e,t]),r.current};function Y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.i18n,a=n.useContext(H)||{},o=a.i18n,s=a.defaultNS,u=i||o||T();if(u&&!u.reportNamespaces&&(u.reportNamespaces=new V),!u){b("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}u.options.react&&void 0!==u.options.react.wait&&b("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=r(r(r({},R()),u.options.react),t),d=p.useSuspense,g=p.keyPrefix,m=e||s||u.options&&u.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],u.reportNamespaces.addUsedNamespaces&&u.reportNamespaces.addUsedNamespaces(m);var h=(u.isInitialized||u.initializedStoreOnce)&&m.every((function(e){return w(e,u,p)}));function v(){return u.getFixedT(null,"fallback"===p.nsMode?m:m[0],g)}var y=n.useState(v),x=c(y,2),S=x[0],j=x[1],E=m.join(),N=q(E),k=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){k.current&&j(v)}return k.current=!0,h||d||O(u,m,(function(){k.current&&j(v)})),h&&N&&N!==E&&k.current&&j(v),e&&u&&u.on(e,t),n&&u&&u.store.on(n,t),function(){k.current=!1,e&&u&&e.split(" ").forEach((function(e){return u.off(e,t)})),n&&u&&n.split(" ").forEach((function(e){return u.store.off(e,t)}))}}),[u,E]);var I=n.useRef(!0);n.useEffect((function(){k.current&&!I.current&&j(v),I.current=!1}),[u,g]);var P=[S,u,h];if(P.t=S,P.i18n=u,P.ready=h,h)return P;if(!h&&!d)return P;throw new Promise((function(e){O(u,m,(function(){e()}))}))}var _=["forwardedRef"];var J=["ns","children"];function Z(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.i18n,a=n.useContext(H)||{},o=a.i18n,s=i||o||T();s.options&&s.options.isClone||(e&&!s.initializedStoreOnce&&(s.services.resourceStore.data=e,s.options.ns=Object.values(e).reduce((function(e,n){return Object.keys(n).forEach((function(n){e.indexOf(n)<0&&e.push(n)})),e}),s.options.ns),s.initializedStoreOnce=!0,s.isInitialized=!0),t&&!s.initializedLanguageOnce&&(s.changeLanguage(t),s.initializedLanguageOnce=!0))}var G=["initialI18nStore","initialLanguage"];e.I18nContext=H,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(H.Provider,{value:a},i)},e.Trans=function(e){var t=e.children,i=e.count,a=e.parent,o=e.i18nKey,c=e.context,u=e.tOptions,l=void 0===u?{}:u,f=e.values,p=e.defaults,d=e.components,g=e.ns,m=e.i18n,h=e.t,v=e.shouldUnescape,y=s(e,$),b=n.useContext(H)||{},O=b.i18n,x=b.defaultNS,w=m||O||T(),S=h||w.t.bind(w)||function(e){return e};return D(r({children:t,count:i,parent:a,i18nKey:o,context:c,tOptions:l,values:f,defaults:p,components:d,ns:g||S.ns||x||w.options&&w.options.defaultNS,i18n:w,t:h,shouldUnescape:v},y))},e.TransWithoutContext=D,e.Translation=function(e){var n=e.ns,t=e.children,r=c(Y(n,s(e,J)),3),i=r[0],a=r[1],o=r[2];return t(i,{i18n:a,lng:a.language},o)},e.composeInitialProps=W,e.date=function(){return""},e.getDefaults=R,e.getI18n=T,e.getInitialProps=M,e.initReactI18next=F,e.number=function(){return""},e.plural=function(){return""},e.select=function(){return""},e.selectOrdinal=function(){return""},e.setDefaults=P,e.setI18n=C,e.time=function(){return""},e.useSSR=Z,e.useTranslation=Y,e.withSSR=function(){return function(e){function t(t){var i=t.initialI18nStore,a=t.initialLanguage,o=s(t,G);return Z(i,a),n.createElement(e,r({},o))}return t.getInitialProps=W(e),t.displayName="withI18nextSSR(".concat(S(e),")"),t.WrappedComponent=e,t}},e.withTranslation=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(i){function a(a){var o=a.forwardedRef,u=s(a,_),l=c(Y(e,r(r({},u),{},{keyPrefix:t.keyPrefix})),3),f=l[0],p=l[1],d=l[2],g=r(r({},u),{},{t:f,i18n:p,tReady:d});return t.withRef&&o?g.ref=o:!t.withRef&&o&&(g.forwardedRef=o),n.createElement(i,g)}a.displayName="withI18nextTranslation(".concat(S(i),")"),a.WrappedComponent=i;return t.withRef?n.forwardRef((function(e,t){return n.createElement(a,Object.assign({},e,{forwardedRef:t}))})):a}},Object.defineProperty(e,"__esModule",{value:!0})})); |
import i18next, { | ||
ReactOptions, | ||
i18n, | ||
ThirdPartyModule, | ||
Resource, | ||
TFuncKey, | ||
Namespace, | ||
@@ -13,2 +11,4 @@ TypeOptions, | ||
import * as React from 'react'; | ||
export { Trans, TransProps } from './TransWithoutContext'; | ||
export { initReactI18next } from './initReactI18next'; | ||
@@ -21,3 +21,2 @@ type Subtract<T extends K, K> = Omit<T, keyof K>; | ||
export function getI18n(): i18n; | ||
export const initReactI18next: ThirdPartyModule; | ||
export function composeInitialProps(ForComponent: any): (ctx: unknown) => Promise<any>; | ||
@@ -55,31 +54,2 @@ export function getInitialProps(): { | ||
type TransChild = React.ReactNode | Record<string, unknown>; | ||
export type TransProps< | ||
K extends TFuncKey<N, TKPrefix> extends infer A ? A : never, | ||
N extends Namespace = DefaultNamespace, | ||
TKPrefix = undefined, | ||
E = React.HTMLProps<HTMLDivElement> | ||
> = E & { | ||
children?: TransChild | TransChild[]; | ||
components?: readonly React.ReactElement[] | { readonly [tagName: string]: React.ReactElement }; | ||
count?: number; | ||
context?: string; | ||
defaults?: string; | ||
i18n?: i18n; | ||
i18nKey?: K | K[]; | ||
ns?: N; | ||
parent?: string | React.ComponentType<any> | null; // used in React.createElement if not null | ||
tOptions?: {}; | ||
values?: {}; | ||
shouldUnescape?: boolean; | ||
t?: TFunction<N, TKPrefix>; | ||
}; | ||
export function Trans< | ||
K extends TFuncKey<N, TKPrefix> extends infer A ? A : never, | ||
N extends Namespace = DefaultNamespace, | ||
TKPrefix extends KeyPrefix<N> = undefined, | ||
E = React.HTMLProps<HTMLDivElement> | ||
>(props: TransProps<K, N, TKPrefix, E>): React.ReactElement; | ||
export function useSSR(initialI18nStore: Resource, initialLanguage: string): void; | ||
@@ -86,0 +56,0 @@ |
{ | ||
"name": "react-i18next", | ||
"version": "12.0.0", | ||
"version": "12.1.0", | ||
"description": "Internationalization for react done right. Using the i18next i18n ecosystem.", | ||
@@ -20,2 +20,20 @@ "main": "dist/commonjs/index.js", | ||
], | ||
"exports": { | ||
"./package.json": "./package.json", | ||
".": { | ||
"types": "./index.d.ts", | ||
"import": "./dist/es/index.js", | ||
"require": "./dist/commonjs/index.js" | ||
}, | ||
"./TransWithoutContext": { | ||
"types": "./TransWithoutContext.d.ts", | ||
"import": "./dist/es/TransWithoutContext.js", | ||
"require": "./dist/commonjs/TransWithoutContext.js" | ||
}, | ||
"./initReactI18next": { | ||
"types": "./initReactI18next.d.ts", | ||
"import": "./dist/es/initReactI18next.js", | ||
"require": "./dist/commonjs/initReactI18next.js" | ||
} | ||
}, | ||
"homepage": "https://github.com/i18next/react-i18next", | ||
@@ -70,5 +88,5 @@ "bugs": "https://github.com/i18next/react-i18next/issues", | ||
"prettier": "2.2.1", | ||
"react": "^16.10.2", | ||
"react-dom": "^16.10.2", | ||
"react-test-renderer": "^17.0.1", | ||
"react": "^16.14.0", | ||
"react-dom": "^16.14.0", | ||
"react-test-renderer": "^16.14.0", | ||
"rimraf": "2.6.3", | ||
@@ -75,0 +93,0 @@ "rollup": "1.19.4", |
@@ -321,122 +321,2 @@ (function (global, factory) { | ||
var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g; | ||
var htmlEntities = { | ||
'&': '&', | ||
'&': '&', | ||
'<': '<', | ||
'<': '<', | ||
'>': '>', | ||
'>': '>', | ||
''': "'", | ||
''': "'", | ||
'"': '"', | ||
'"': '"', | ||
' ': ' ', | ||
' ': ' ', | ||
'©': 'ยฉ', | ||
'©': 'ยฉ', | ||
'®': 'ยฎ', | ||
'®': 'ยฎ', | ||
'…': 'โฆ', | ||
'…': 'โฆ', | ||
'/': '/', | ||
'/': '/' | ||
}; | ||
var unescapeHtmlEntity = function unescapeHtmlEntity(m) { | ||
return htmlEntities[m]; | ||
}; | ||
var unescape = function unescape(text) { | ||
return text.replace(matchHtmlEntity, unescapeHtmlEntity); | ||
}; | ||
var defaultOptions = { | ||
bindI18n: 'languageChanged', | ||
bindI18nStore: '', | ||
transEmptyNodeValue: '', | ||
transSupportBasicHtmlNodes: true, | ||
transWrapTextNodes: '', | ||
transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'], | ||
useSuspense: true, | ||
unescape: unescape | ||
}; | ||
var i18nInstance; | ||
var I18nContext = react.createContext(); | ||
function setDefaults() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
defaultOptions = _objectSpread2(_objectSpread2({}, defaultOptions), options); | ||
} | ||
function getDefaults() { | ||
return defaultOptions; | ||
} | ||
var ReportNamespaces = function () { | ||
function ReportNamespaces() { | ||
_classCallCheck(this, ReportNamespaces); | ||
this.usedNamespaces = {}; | ||
} | ||
_createClass(ReportNamespaces, [{ | ||
key: "addUsedNamespaces", | ||
value: function addUsedNamespaces(namespaces) { | ||
var _this = this; | ||
namespaces.forEach(function (ns) { | ||
if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true; | ||
}); | ||
} | ||
}, { | ||
key: "getUsedNamespaces", | ||
value: function getUsedNamespaces() { | ||
return Object.keys(this.usedNamespaces); | ||
} | ||
}]); | ||
return ReportNamespaces; | ||
}(); | ||
function setI18n(instance) { | ||
i18nInstance = instance; | ||
} | ||
function getI18n() { | ||
return i18nInstance; | ||
} | ||
var initReactI18next = { | ||
type: '3rdParty', | ||
init: function init(instance) { | ||
setDefaults(instance.options.react); | ||
setI18n(instance); | ||
} | ||
}; | ||
function composeInitialProps(ForComponent) { | ||
return function (ctx) { | ||
return new Promise(function (resolve) { | ||
var i18nInitialProps = getInitialProps(); | ||
if (ForComponent.getInitialProps) { | ||
ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) { | ||
resolve(_objectSpread2(_objectSpread2({}, componentsInitialProps), i18nInitialProps)); | ||
}); | ||
} else { | ||
resolve(i18nInitialProps); | ||
} | ||
}); | ||
}; | ||
} | ||
function getInitialProps() { | ||
var i18n = getI18n(); | ||
var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : []; | ||
var ret = {}; | ||
var initialI18nStore = {}; | ||
i18n.languages.forEach(function (l) { | ||
initialI18nStore[l] = {}; | ||
namespaces.forEach(function (ns) { | ||
initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {}; | ||
}); | ||
}); | ||
ret.initialI18nStore = initialI18nStore; | ||
ret.initialLanguage = i18n.language; | ||
return ret; | ||
} | ||
function warn() { | ||
@@ -525,2 +405,60 @@ if (console && console.warn) { | ||
var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g; | ||
var htmlEntities = { | ||
'&': '&', | ||
'&': '&', | ||
'<': '<', | ||
'<': '<', | ||
'>': '>', | ||
'>': '>', | ||
''': "'", | ||
''': "'", | ||
'"': '"', | ||
'"': '"', | ||
' ': ' ', | ||
' ': ' ', | ||
'©': 'ยฉ', | ||
'©': 'ยฉ', | ||
'®': 'ยฎ', | ||
'®': 'ยฎ', | ||
'…': 'โฆ', | ||
'…': 'โฆ', | ||
'/': '/', | ||
'/': '/' | ||
}; | ||
var unescapeHtmlEntity = function unescapeHtmlEntity(m) { | ||
return htmlEntities[m]; | ||
}; | ||
var unescape = function unescape(text) { | ||
return text.replace(matchHtmlEntity, unescapeHtmlEntity); | ||
}; | ||
var defaultOptions = { | ||
bindI18n: 'languageChanged', | ||
bindI18nStore: '', | ||
transEmptyNodeValue: '', | ||
transSupportBasicHtmlNodes: true, | ||
transWrapTextNodes: '', | ||
transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'], | ||
useSuspense: true, | ||
unescape: unescape | ||
}; | ||
function setDefaults() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
defaultOptions = _objectSpread2(_objectSpread2({}, defaultOptions), options); | ||
} | ||
function getDefaults() { | ||
return defaultOptions; | ||
} | ||
var i18nInstance; | ||
function setI18n(instance) { | ||
i18nInstance = instance; | ||
} | ||
function getI18n() { | ||
return i18nInstance; | ||
} | ||
var _excluded = ["format"], | ||
@@ -746,8 +684,4 @@ _excluded2 = ["children", "count", "parent", "i18nKey", "context", "tOptions", "values", "defaults", "components", "ns", "i18n", "t", "shouldUnescape"]; | ||
var _ref2 = react.useContext(I18nContext) || {}, | ||
i18nFromContext = _ref2.i18n, | ||
defaultNSFromContext = _ref2.defaultNS; | ||
var i18n = i18nFromProps || getI18n(); | ||
var i18n = i18nFromProps || i18nFromContext || getI18n(); | ||
if (!i18n) { | ||
@@ -766,3 +700,3 @@ warnOnce('You will need to pass in an i18next instance by using i18nextReactModule'); | ||
var namespaces = ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS; | ||
var namespaces = ns || t.ns || i18n.options && i18n.options.defaultNS; | ||
namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation']; | ||
@@ -792,2 +726,112 @@ var defaultValue = defaults || nodesToString(children, reactI18nextOptions) || reactI18nextOptions.transEmptyNodeValue || i18nKey; | ||
var initReactI18next = { | ||
type: '3rdParty', | ||
init: function init(instance) { | ||
setDefaults(instance.options.react); | ||
setI18n(instance); | ||
} | ||
}; | ||
var I18nContext = react.createContext(); | ||
var ReportNamespaces = function () { | ||
function ReportNamespaces() { | ||
_classCallCheck(this, ReportNamespaces); | ||
this.usedNamespaces = {}; | ||
} | ||
_createClass(ReportNamespaces, [{ | ||
key: "addUsedNamespaces", | ||
value: function addUsedNamespaces(namespaces) { | ||
var _this = this; | ||
namespaces.forEach(function (ns) { | ||
if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true; | ||
}); | ||
} | ||
}, { | ||
key: "getUsedNamespaces", | ||
value: function getUsedNamespaces() { | ||
return Object.keys(this.usedNamespaces); | ||
} | ||
}]); | ||
return ReportNamespaces; | ||
}(); | ||
function composeInitialProps(ForComponent) { | ||
return function (ctx) { | ||
return new Promise(function (resolve) { | ||
var i18nInitialProps = getInitialProps(); | ||
if (ForComponent.getInitialProps) { | ||
ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) { | ||
resolve(_objectSpread2(_objectSpread2({}, componentsInitialProps), i18nInitialProps)); | ||
}); | ||
} else { | ||
resolve(i18nInitialProps); | ||
} | ||
}); | ||
}; | ||
} | ||
function getInitialProps() { | ||
var i18n = getI18n(); | ||
var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : []; | ||
var ret = {}; | ||
var initialI18nStore = {}; | ||
i18n.languages.forEach(function (l) { | ||
initialI18nStore[l] = {}; | ||
namespaces.forEach(function (ns) { | ||
initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {}; | ||
}); | ||
}); | ||
ret.initialI18nStore = initialI18nStore; | ||
ret.initialLanguage = i18n.language; | ||
return ret; | ||
} | ||
var _excluded$1 = ["children", "count", "parent", "i18nKey", "context", "tOptions", "values", "defaults", "components", "ns", "i18n", "t", "shouldUnescape"]; | ||
function Trans$1(_ref) { | ||
var children = _ref.children, | ||
count = _ref.count, | ||
parent = _ref.parent, | ||
i18nKey = _ref.i18nKey, | ||
context = _ref.context, | ||
_ref$tOptions = _ref.tOptions, | ||
tOptions = _ref$tOptions === void 0 ? {} : _ref$tOptions, | ||
values = _ref.values, | ||
defaults = _ref.defaults, | ||
components = _ref.components, | ||
ns = _ref.ns, | ||
i18nFromProps = _ref.i18n, | ||
tFromProps = _ref.t, | ||
shouldUnescape = _ref.shouldUnescape, | ||
additionalProps = _objectWithoutProperties(_ref, _excluded$1); | ||
var _ref2 = react.useContext(I18nContext) || {}, | ||
i18nFromContext = _ref2.i18n, | ||
defaultNSFromContext = _ref2.defaultNS; | ||
var i18n = i18nFromProps || i18nFromContext || getI18n(); | ||
var t = tFromProps || i18n.t.bind(i18n) || function (k) { | ||
return k; | ||
}; | ||
return Trans(_objectSpread2({ | ||
children: children, | ||
count: count, | ||
parent: parent, | ||
i18nKey: i18nKey, | ||
context: context, | ||
tOptions: tOptions, | ||
values: values, | ||
defaults: defaults, | ||
components: components, | ||
ns: ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS, | ||
i18n: i18n, | ||
t: tFromProps, | ||
shouldUnescape: shouldUnescape | ||
}, additionalProps)); | ||
} | ||
var usePrevious = function usePrevious(value, ignore) { | ||
@@ -903,3 +947,3 @@ var ref = react.useRef(); | ||
var _excluded$1 = ["forwardedRef"]; | ||
var _excluded$2 = ["forwardedRef"]; | ||
function withTranslation(ns) { | ||
@@ -910,3 +954,3 @@ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var forwardedRef = _ref.forwardedRef, | ||
rest = _objectWithoutProperties(_ref, _excluded$1); | ||
rest = _objectWithoutProperties(_ref, _excluded$2); | ||
@@ -949,7 +993,7 @@ var _useTranslation = useTranslation(ns, _objectSpread2(_objectSpread2({}, rest), {}, { | ||
var _excluded$2 = ["ns", "children"]; | ||
var _excluded$3 = ["ns", "children"]; | ||
function Translation(props) { | ||
var ns = props.ns, | ||
children = props.children, | ||
options = _objectWithoutProperties(props, _excluded$2); | ||
options = _objectWithoutProperties(props, _excluded$3); | ||
@@ -1011,3 +1055,3 @@ var _useTranslation = useTranslation(ns, options), | ||
var _excluded$3 = ["initialI18nStore", "initialLanguage"]; | ||
var _excluded$4 = ["initialI18nStore", "initialLanguage"]; | ||
function withSSR() { | ||
@@ -1018,3 +1062,3 @@ return function Extend(WrappedComponent) { | ||
initialLanguage = _ref.initialLanguage, | ||
rest = _objectWithoutProperties(_ref, _excluded$3); | ||
rest = _objectWithoutProperties(_ref, _excluded$4); | ||
@@ -1053,3 +1097,4 @@ useSSR(initialI18nStore, initialLanguage); | ||
exports.I18nextProvider = I18nextProvider; | ||
exports.Trans = Trans; | ||
exports.Trans = Trans$1; | ||
exports.TransWithoutContext = Trans; | ||
exports.Translation = Translation; | ||
@@ -1056,0 +1101,0 @@ exports.composeInitialProps = composeInitialProps; |
@@ -1,1 +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";function t(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 r(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?t(Object(r),!0).forEach((function(n){o(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,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 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 o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function c(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function s(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,a,i=[],o=!0,c=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(i.push(r.value),!n||i.length!==n);o=!0);}catch(e){c=!0,a=e}finally{try{o||null==t.return||t.return()}finally{if(c)throw a}}return i}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return u(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 u(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 u(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 l={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},f=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function p(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(l[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 a=new RegExp(f),i=null;null!==(i=a.exec(e));)if(i[0].trim())if(i[1]){var o=i[1].trim(),c=[o,""];o.indexOf("=")>-1&&(c=o.split("=")),n.attrs[c[0]]=c[1],a.lastIndex--}else i[2]&&(n.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1));return n}var d=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,g=/^\s*$/,m=Object.create(null);var h,v=function(e,n){n||(n={}),n.components||(n.components=m);var t,r=[],a=[],i=-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(d,(function(c,s){if(o){if(c!=="</"+t.name+">")return;o=!1}var u,l="/"!==c.charAt(1),f=c.startsWith("\x3c!--"),d=s+c.length,m=e.charAt(d);if(f){var h=p(c);return i<0?(r.push(h),r):((u=a[i]).children.push(h),r)}if(l&&(i++,"tag"===(t=p(c)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!m||"<"===m||t.children.push({type:"text",content:e.slice(d,e.indexOf("<",d))}),0===i&&r.push(t),(u=a[i-1])&&u.children.push(t),a[i]=t),(!l||t.voidElement)&&(i>-1&&(t.voidElement||t.name===c.slice(2,-1))&&(i--,t=-1===i?r:a[i]),!o&&"<"!==m&&m)){u=-1===i?r:a[i].children;var v=e.indexOf("<",d),y=e.slice(d,-1===v?void 0:v);g.test(y)&&(y=" "),(v>-1&&i+u.length>=0||" "!==y)&&u.push({type:"text",content:y})}})),r},y=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,b={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"ยฉ","©":"ยฉ","®":"ยฎ","®":"ยฎ","…":"โฆ","…":"โฆ","/":"/","/":"/"},O=function(e){return b[e]},x={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:function(e){return e.replace(y,O)}},w=n.createContext();function j(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};x=r(r({},x),e)}function E(){return x}var S=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 N(e){h=e}function k(){return h}var I={type:"3rdParty",init:function(e){j(e.options.react),N(e)}};function P(e){return function(n){return new Promise((function(t){var a=R();e.getInitialProps?e.getInitialProps(n).then((function(e){t(r(r({},e),a))})):t(a)}))}}function R(){var e=k(),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 C(){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 T={};function A(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&T[n[0]]||("string"==typeof n[0]&&(T[n[0]]=new Date),C.apply(void 0,n))}function L(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 z(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.languages[0],a=!!n.options&&n.options.fallbackLng,i=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&&(!n.options.resources||n.options.partialBundledLanguages))||!(!o(r,e)||a&&!o(i,e))))}function B(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return A("i18n.languages were undefined or empty",n.languages),!0;var r=void 0!==n.options.ignoreJSONStructure;return r?n.hasLoadedNamespace(e,{precheck:function(n,r){if(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!r(n.isLanguageChangingTo,e))return!1}}):z(e,n,t)}function U(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}var D=["format"],F=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function H(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function K(e){return e?e.props?e.props.children:e.children:[]}function V(e){return Array.isArray(e)?e:[e]}function W(e,t,i,o,c,s){if(""===t)return[];var u=o.transKeepBasicHtmlNodesFor||[],l=t&&new RegExp(u.join("|")).test(t);if(!e&&!l)return[t];var f={};!function e(t){V(t).forEach((function(t){"string"!=typeof t&&(H(t)?e(K(t)):"object"!==a(t)||n.isValidElement(t)||Object.assign(f,t))}))}(e);var p=v("<0>".concat(t,"</0>")),d=r(r({},f),c);function g(e,t,r){var a=K(e),i=h(a,t.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return n.isValidElement(e)}))}(a)&&0===i.length?a:i}function m(e,t,a,i,o){e.dummy&&(e.children=t),a.push(n.cloneElement(e,r(r({},e.props),{},{key:i}),o?void 0:t))}function h(t,c,f){var p=V(t);return V(c).reduce((function(t,c,v){var y,b,O,x=c.children&&c.children[0]&&c.children[0].content&&i.services.interpolator.interpolate(c.children[0].content,d,i.language);if("tag"===c.type){var w=p[parseInt(c.name,10)];!w&&1===f.length&&f[0][c.name]&&(w=f[0][c.name]),w||(w={});var j=0!==Object.keys(c.attrs).length?(y={props:c.attrs},(O=r({},b=w)).props=Object.assign(y.props,b.props),O):w,E=n.isValidElement(j),S=E&&H(c,!0)&&!c.voidElement,N=l&&"object"===a(j)&&j.dummy&&!E,k="object"===a(e)&&null!==e&&Object.hasOwnProperty.call(e,c.name);if("string"==typeof j){var I=i.services.interpolator.interpolate(j,d,i.language);t.push(I)}else if(H(j)||S){m(j,g(j,c,f),t,v)}else if(N){var P=h(p,c.children,f);t.push(n.cloneElement(j,r(r({},j.props),{},{key:v}),P))}else if(Number.isNaN(parseFloat(c.name))){if(k)m(j,g(j,c,f),t,v,c.voidElement);else if(o.transSupportBasicHtmlNodes&&u.indexOf(c.name)>-1)if(c.voidElement)t.push(n.createElement(c.name,{key:"".concat(c.name,"-").concat(v)}));else{var R=h(p,c.children,f);t.push(n.createElement(c.name,{key:"".concat(c.name,"-").concat(v)},R))}else if(c.voidElement)t.push("<".concat(c.name," />"));else{var C=h(p,c.children,f);t.push("<".concat(c.name,">").concat(C,"</").concat(c.name,">"))}}else if("object"!==a(j)||E)1===c.children.length&&x?t.push(n.cloneElement(j,r(r({},j.props),{},{key:v}),x)):t.push(n.cloneElement(j,r(r({},j.props),{},{key:v})));else{var T=c.children[0]?x:null;T&&t.push(T)}}else if("text"===c.type){var A=o.transWrapTextNodes,L=s?o.unescape(i.services.interpolator.interpolate(c.content,d,i.language)):i.services.interpolator.interpolate(c.content,d,i.language);A?t.push(n.createElement(A,{key:"".concat(c.name,"-").concat(v)},L)):t.push(L)}return t}),[])}return K(h([{dummy:!0,children:e||[]}],p,V(e||[]))[0])}var M=function(e,t){var r=n.useRef();return n.useEffect((function(){r.current=t?r.current:e}),[e,t]),r.current};function $(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.i18n,i=n.useContext(w)||{},o=i.i18n,c=i.defaultNS,u=a||o||k();if(u&&!u.reportNamespaces&&(u.reportNamespaces=new S),!u){A("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}u.options.react&&void 0!==u.options.react.wait&&A("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=r(r(r({},E()),u.options.react),t),d=p.useSuspense,g=p.keyPrefix,m=e||c||u.options&&u.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],u.reportNamespaces.addUsedNamespaces&&u.reportNamespaces.addUsedNamespaces(m);var h=(u.isInitialized||u.initializedStoreOnce)&&m.every((function(e){return B(e,u,p)}));function v(){return u.getFixedT(null,"fallback"===p.nsMode?m:m[0],g)}var y=n.useState(v),b=s(y,2),O=b[0],x=b[1],j=m.join(),N=M(j),I=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){I.current&&x(v)}return I.current=!0,h||d||L(u,m,(function(){I.current&&x(v)})),h&&N&&N!==j&&I.current&&x(v),e&&u&&u.on(e,t),n&&u&&u.store.on(n,t),function(){I.current=!1,e&&u&&e.split(" ").forEach((function(e){return u.off(e,t)})),n&&u&&n.split(" ").forEach((function(e){return u.store.off(e,t)}))}}),[u,j]);var P=n.useRef(!0);n.useEffect((function(){I.current&&!P.current&&x(v),P.current=!1}),[u,g]);var R=[O,u,h];if(R.t=O,R.i18n=u,R.ready=h,h)return R;if(!h&&!d)return R;throw new Promise((function(e){L(u,m,(function(){e()}))}))}var q=["forwardedRef"];var Y=["ns","children"];function _(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=r.i18n,i=n.useContext(w)||{},o=i.i18n,c=a||o||k();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 J=["initialI18nStore","initialLanguage"];e.I18nContext=w,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,a=e.children,i=n.useMemo((function(){return{i18n:t,defaultNS:r}}),[t,r]);return n.createElement(w.Provider,{value:i},a)},e.Trans=function(e){var t=e.children,i=e.count,o=e.parent,s=e.i18nKey,u=e.context,l=e.tOptions,f=void 0===l?{}:l,p=e.values,d=e.defaults,g=e.components,m=e.ns,h=e.i18n,v=e.t,y=e.shouldUnescape,b=c(e,F),O=n.useContext(w)||{},x=O.i18n,j=O.defaultNS,S=h||x||k();if(!S)return A("You will need to pass in an i18next instance by using i18nextReactModule"),t;var N=v||S.t.bind(S)||function(e){return e};u&&(f.context=u);var I=r(r({},E()),S.options&&S.options.react),P=m||N.ns||j||S.options&&S.options.defaultNS;P="string"==typeof P?[P]:P||["translation"];var R=d||function e(t,r){if(!t)return"";var i="",o=V(t),s=r.transSupportBasicHtmlNodes&&r.transKeepBasicHtmlNodesFor?r.transKeepBasicHtmlNodesFor:[];return o.forEach((function(t,o){if("string"==typeof t)i+="".concat(t);else if(n.isValidElement(t)){var u=Object.keys(t.props).length,l=s.indexOf(t.type)>-1,f=t.props.children;if(!f&&l&&0===u)i+="<".concat(t.type,"/>");else if(f||l&&0===u)if(t.props.i18nIsDynamicList)i+="<".concat(o,"></").concat(o,">");else if(l&&1===u&&"string"==typeof f)i+="<".concat(t.type,">").concat(f,"</").concat(t.type,">");else{var p=e(f,r);i+="<".concat(o,">").concat(p,"</").concat(o,">")}else i+="<".concat(o,"></").concat(o,">")}else if(null===t)C("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===a(t)){var d=t.format,g=c(t,D),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];i+="{{".concat(h,"}}")}else C("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",t)}else C("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}}.",t)})),i}(t,I)||I.transEmptyNodeValue||s,T=I.hashTransKey,L=s||(T?T(R):R),z=p?f.interpolation:{interpolation:r(r({},f.interpolation),{},{prefix:"#$?",suffix:"?$#"})},B=r(r(r(r({},f),{},{count:i},p),z),{},{defaultValue:R,ns:P}),U=W(g||t,L?N(L,B):R,S,I,B,y),H=void 0!==o?o:I.defaultTransParent;return H?n.createElement(H,b,U):U},e.Translation=function(e){var n=e.ns,t=e.children,r=s($(n,c(e,Y)),3),a=r[0],i=r[1],o=r[2];return t(a,{i18n:i,lng:i.language},o)},e.composeInitialProps=P,e.date=function(){return""},e.getDefaults=E,e.getI18n=k,e.getInitialProps=R,e.initReactI18next=I,e.number=function(){return""},e.plural=function(){return""},e.select=function(){return""},e.selectOrdinal=function(){return""},e.setDefaults=j,e.setI18n=N,e.time=function(){return""},e.useSSR=_,e.useTranslation=$,e.withSSR=function(){return function(e){function t(t){var a=t.initialI18nStore,i=t.initialLanguage,o=c(t,J);return _(a,i),n.createElement(e,r({},o))}return t.getInitialProps=P(e),t.displayName="withI18nextSSR(".concat(U(e),")"),t.WrappedComponent=e,t}},e.withTranslation=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(a){function i(i){var o=i.forwardedRef,u=c(i,q),l=s($(e,r(r({},u),{},{keyPrefix:t.keyPrefix})),3),f=l[0],p=l[1],d=l[2],g=r(r({},u),{},{t:f,i18n:p,tReady:d});return t.withRef&&o?g.ref=o:!t.withRef&&o&&(g.forwardedRef=o),n.createElement(a,g)}i.displayName="withI18nextTranslation(".concat(U(a),")"),i.WrappedComponent=a;return t.withRef?n.forwardRef((function(e,t){return n.createElement(i,Object.assign({},e,{forwardedRef:t}))})):i}},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!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";function t(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 r(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?t(Object(r),!0).forEach((function(n){o(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function i(e){return(i="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 a(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 o(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 c(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,s=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(a.push(r.value),!n||a.length!==n);o=!0);}catch(e){s=!0,i=e}finally{try{o||null==t.return||t.return()}finally{if(s)throw i}}return a}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return u(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 u(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 u(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 l={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},f=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function p(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(l[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(f),a=null;null!==(a=i.exec(e));)if(a[0].trim())if(a[1]){var o=a[1].trim(),s=[o,""];o.indexOf("=")>-1&&(s=o.split("=")),n.attrs[s[0]]=s[1],i.lastIndex--}else a[2]&&(n.attrs[a[2]]=a[3].trim().substring(1,a[3].length-1));return n}var d=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,g=/^\s*$/,m=Object.create(null);var h=function(e,n){n||(n={}),n.components||(n.components=m);var t,r=[],i=[],a=-1,o=!1;if(0!==e.indexOf("<")){var s=e.indexOf("<");r.push({type:"text",content:-1===s?e:e.substring(0,s)})}return e.replace(d,(function(s,c){if(o){if(s!=="</"+t.name+">")return;o=!1}var u,l="/"!==s.charAt(1),f=s.startsWith("\x3c!--"),d=c+s.length,m=e.charAt(d);if(f){var h=p(s);return a<0?(r.push(h),r):((u=i[a]).children.push(h),r)}if(l&&(a++,"tag"===(t=p(s)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!m||"<"===m||t.children.push({type:"text",content:e.slice(d,e.indexOf("<",d))}),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===s.slice(2,-1))&&(a--,t=-1===a?r:i[a]),!o&&"<"!==m&&m)){u=-1===a?r:i[a].children;var v=e.indexOf("<",d),y=e.slice(d,-1===v?void 0:v);g.test(y)&&(y=" "),(v>-1&&a+u.length>=0||" "!==y)&&u.push({type:"text",content:y})}})),r};function v(){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 y={};function b(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&y[n[0]]||("string"==typeof n[0]&&(y[n[0]]=new Date),v.apply(void 0,n))}function O(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 x(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},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&&(!n.options.resources||n.options.partialBundledLanguages))||!(!o(r,e)||i&&!o(a,e))))}function w(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return b("i18n.languages were undefined or empty",n.languages),!0;var r=void 0!==n.options.ignoreJSONStructure;return r?n.hasLoadedNamespace(e,{precheck:function(n,r){if(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!r(n.isLanguageChangingTo,e))return!1}}):x(e,n,t)}function S(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}var j,E=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,N={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"ยฉ","©":"ยฉ","®":"ยฎ","®":"ยฎ","…":"โฆ","…":"โฆ","/":"/","/":"/"},k=function(e){return N[e]},I={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:function(e){return e.replace(E,k)}};function P(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};I=r(r({},I),e)}function R(){return I}function C(e){j=e}function T(){return j}var A=["format"],L=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function U(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function z(e){return e?e.props?e.props.children:e.children:[]}function B(e){return Array.isArray(e)?e:[e]}function K(e,t,a,o,s,c){if(""===t)return[];var u=o.transKeepBasicHtmlNodesFor||[],l=t&&new RegExp(u.join("|")).test(t);if(!e&&!l)return[t];var f={};!function e(t){B(t).forEach((function(t){"string"!=typeof t&&(U(t)?e(z(t)):"object"!==i(t)||n.isValidElement(t)||Object.assign(f,t))}))}(e);var p=h("<0>".concat(t,"</0>")),d=r(r({},f),s);function g(e,t,r){var i=z(e),a=v(i,t.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return n.isValidElement(e)}))}(i)&&0===a.length?i:a}function m(e,t,i,a,o){e.dummy&&(e.children=t),i.push(n.cloneElement(e,r(r({},e.props),{},{key:a}),o?void 0:t))}function v(t,s,f){var p=B(t);return B(s).reduce((function(t,s,h){var y,b,O,x=s.children&&s.children[0]&&s.children[0].content&&a.services.interpolator.interpolate(s.children[0].content,d,a.language);if("tag"===s.type){var w=p[parseInt(s.name,10)];!w&&1===f.length&&f[0][s.name]&&(w=f[0][s.name]),w||(w={});var S=0!==Object.keys(s.attrs).length?(y={props:s.attrs},(O=r({},b=w)).props=Object.assign(y.props,b.props),O):w,j=n.isValidElement(S),E=j&&U(s,!0)&&!s.voidElement,N=l&&"object"===i(S)&&S.dummy&&!j,k="object"===i(e)&&null!==e&&Object.hasOwnProperty.call(e,s.name);if("string"==typeof S){var I=a.services.interpolator.interpolate(S,d,a.language);t.push(I)}else if(U(S)||E){m(S,g(S,s,f),t,h)}else if(N){var P=v(p,s.children,f);t.push(n.cloneElement(S,r(r({},S.props),{},{key:h}),P))}else if(Number.isNaN(parseFloat(s.name))){if(k)m(S,g(S,s,f),t,h,s.voidElement);else if(o.transSupportBasicHtmlNodes&&u.indexOf(s.name)>-1)if(s.voidElement)t.push(n.createElement(s.name,{key:"".concat(s.name,"-").concat(h)}));else{var R=v(p,s.children,f);t.push(n.createElement(s.name,{key:"".concat(s.name,"-").concat(h)},R))}else if(s.voidElement)t.push("<".concat(s.name," />"));else{var C=v(p,s.children,f);t.push("<".concat(s.name,">").concat(C,"</").concat(s.name,">"))}}else if("object"!==i(S)||j)1===s.children.length&&x?t.push(n.cloneElement(S,r(r({},S.props),{},{key:h}),x)):t.push(n.cloneElement(S,r(r({},S.props),{},{key:h})));else{var T=s.children[0]?x:null;T&&t.push(T)}}else if("text"===s.type){var A=o.transWrapTextNodes,L=c?o.unescape(a.services.interpolator.interpolate(s.content,d,a.language)):a.services.interpolator.interpolate(s.content,d,a.language);A?t.push(n.createElement(A,{key:"".concat(s.name,"-").concat(h)},L)):t.push(L)}return t}),[])}return z(v([{dummy:!0,children:e||[]}],p,B(e||[]))[0])}function D(e){var t=e.children,a=e.count,o=e.parent,c=e.i18nKey,u=e.context,l=e.tOptions,f=void 0===l?{}:l,p=e.values,d=e.defaults,g=e.components,m=e.ns,h=e.i18n,y=e.t,O=e.shouldUnescape,x=s(e,L),w=h||T();if(!w)return b("You will need to pass in an i18next instance by using i18nextReactModule"),t;var S=y||w.t.bind(w)||function(e){return e};u&&(f.context=u);var j=r(r({},R()),w.options&&w.options.react),E=m||S.ns||w.options&&w.options.defaultNS;E="string"==typeof E?[E]:E||["translation"];var N=d||function e(t,r){if(!t)return"";var a="",o=B(t),c=r.transSupportBasicHtmlNodes&&r.transKeepBasicHtmlNodesFor?r.transKeepBasicHtmlNodesFor:[];return o.forEach((function(t,o){if("string"==typeof t)a+="".concat(t);else if(n.isValidElement(t)){var u=Object.keys(t.props).length,l=c.indexOf(t.type)>-1,f=t.props.children;if(!f&&l&&0===u)a+="<".concat(t.type,"/>");else if(f||l&&0===u)if(t.props.i18nIsDynamicList)a+="<".concat(o,"></").concat(o,">");else if(l&&1===u&&"string"==typeof f)a+="<".concat(t.type,">").concat(f,"</").concat(t.type,">");else{var p=e(f,r);a+="<".concat(o,">").concat(p,"</").concat(o,">")}else a+="<".concat(o,"></").concat(o,">")}else if(null===t)v("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===i(t)){var d=t.format,g=s(t,A),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];a+="{{".concat(h,"}}")}else v("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",t)}else v("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}}.",t)})),a}(t,j)||j.transEmptyNodeValue||c,k=j.hashTransKey,I=c||(k?k(N):N),P=p?f.interpolation:{interpolation:r(r({},f.interpolation),{},{prefix:"#$?",suffix:"?$#"})},C=r(r(r(r({},f),{},{count:a},p),P),{},{defaultValue:N,ns:E}),U=K(g||t,I?S(I,C):N,w,j,C,O),z=void 0!==o?o:j.defaultTransParent;return z?n.createElement(z,x,U):U}var F={type:"3rdParty",init:function(e){P(e.options.react),C(e)}},H=n.createContext(),V=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)}}])&&a(n.prototype,t),r&&a(n,r),e}();function W(e){return function(n){return new Promise((function(t){var i=M();e.getInitialProps?e.getInitialProps(n).then((function(e){t(r(r({},e),i))})):t(i)}))}}function M(){var e=T(),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}var $=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];var q=function(e,t){var r=n.useRef();return n.useEffect((function(){r.current=t?r.current:e}),[e,t]),r.current};function Y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.i18n,a=n.useContext(H)||{},o=a.i18n,s=a.defaultNS,u=i||o||T();if(u&&!u.reportNamespaces&&(u.reportNamespaces=new V),!u){b("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}u.options.react&&void 0!==u.options.react.wait&&b("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=r(r(r({},R()),u.options.react),t),d=p.useSuspense,g=p.keyPrefix,m=e||s||u.options&&u.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],u.reportNamespaces.addUsedNamespaces&&u.reportNamespaces.addUsedNamespaces(m);var h=(u.isInitialized||u.initializedStoreOnce)&&m.every((function(e){return w(e,u,p)}));function v(){return u.getFixedT(null,"fallback"===p.nsMode?m:m[0],g)}var y=n.useState(v),x=c(y,2),S=x[0],j=x[1],E=m.join(),N=q(E),k=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){k.current&&j(v)}return k.current=!0,h||d||O(u,m,(function(){k.current&&j(v)})),h&&N&&N!==E&&k.current&&j(v),e&&u&&u.on(e,t),n&&u&&u.store.on(n,t),function(){k.current=!1,e&&u&&e.split(" ").forEach((function(e){return u.off(e,t)})),n&&u&&n.split(" ").forEach((function(e){return u.store.off(e,t)}))}}),[u,E]);var I=n.useRef(!0);n.useEffect((function(){k.current&&!I.current&&j(v),I.current=!1}),[u,g]);var P=[S,u,h];if(P.t=S,P.i18n=u,P.ready=h,h)return P;if(!h&&!d)return P;throw new Promise((function(e){O(u,m,(function(){e()}))}))}var _=["forwardedRef"];var J=["ns","children"];function Z(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.i18n,a=n.useContext(H)||{},o=a.i18n,s=i||o||T();s.options&&s.options.isClone||(e&&!s.initializedStoreOnce&&(s.services.resourceStore.data=e,s.options.ns=Object.values(e).reduce((function(e,n){return Object.keys(n).forEach((function(n){e.indexOf(n)<0&&e.push(n)})),e}),s.options.ns),s.initializedStoreOnce=!0,s.isInitialized=!0),t&&!s.initializedLanguageOnce&&(s.changeLanguage(t),s.initializedLanguageOnce=!0))}var G=["initialI18nStore","initialLanguage"];e.I18nContext=H,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(H.Provider,{value:a},i)},e.Trans=function(e){var t=e.children,i=e.count,a=e.parent,o=e.i18nKey,c=e.context,u=e.tOptions,l=void 0===u?{}:u,f=e.values,p=e.defaults,d=e.components,g=e.ns,m=e.i18n,h=e.t,v=e.shouldUnescape,y=s(e,$),b=n.useContext(H)||{},O=b.i18n,x=b.defaultNS,w=m||O||T(),S=h||w.t.bind(w)||function(e){return e};return D(r({children:t,count:i,parent:a,i18nKey:o,context:c,tOptions:l,values:f,defaults:p,components:d,ns:g||S.ns||x||w.options&&w.options.defaultNS,i18n:w,t:h,shouldUnescape:v},y))},e.TransWithoutContext=D,e.Translation=function(e){var n=e.ns,t=e.children,r=c(Y(n,s(e,J)),3),i=r[0],a=r[1],o=r[2];return t(i,{i18n:a,lng:a.language},o)},e.composeInitialProps=W,e.date=function(){return""},e.getDefaults=R,e.getI18n=T,e.getInitialProps=M,e.initReactI18next=F,e.number=function(){return""},e.plural=function(){return""},e.select=function(){return""},e.selectOrdinal=function(){return""},e.setDefaults=P,e.setI18n=C,e.time=function(){return""},e.useSSR=Z,e.useTranslation=Y,e.withSSR=function(){return function(e){function t(t){var i=t.initialI18nStore,a=t.initialLanguage,o=s(t,G);return Z(i,a),n.createElement(e,r({},o))}return t.getInitialProps=W(e),t.displayName="withI18nextSSR(".concat(S(e),")"),t.WrappedComponent=e,t}},e.withTranslation=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(i){function a(a){var o=a.forwardedRef,u=s(a,_),l=c(Y(e,r(r({},u),{},{keyPrefix:t.keyPrefix})),3),f=l[0],p=l[1],d=l[2],g=r(r({},u),{},{t:f,i18n:p,tReady:d});return t.withRef&&o?g.ref=o:!t.withRef&&o&&(g.forwardedRef=o),n.createElement(i,g)}a.displayName="withI18nextTranslation(".concat(S(i),")"),a.WrappedComponent=i;return t.withRef?n.forwardRef((function(e,t){return n.createElement(a,Object.assign({},e,{forwardedRef:t}))})):a}},Object.defineProperty(e,"__esModule",{value:!0})})); |
@@ -112,3 +112,3 @@ # react-i18next [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Awesome%20react-i18next%20for%20react.js%20based%20on%20i18next%20internationalization%20ecosystem%20&url=https://github.com/i18next/react-i18next&via=jamuhl&hashtags=i18n,reactjs,js,dev) | ||
- [Example react](https://github.com/i18next/react-i18next/tree/master/example/react) | ||
- [Example react with typescript 4.1+](https://github.com/i18next/react-i18next/tree/master/example/react-typescript4.1) | ||
- [React examples with typescript](https://github.com/i18next/react-i18next/tree/master/example/react-typescript) | ||
- [Example locize.com](https://github.com/i18next/react-i18next/tree/master/example/locize) | ||
@@ -115,0 +115,0 @@ |
import { createContext } from 'react'; | ||
import { unescape } from './unescape'; | ||
import { getDefaults, setDefaults } from './defaults'; | ||
import { getI18n, setI18n } from './i18nInstance'; | ||
import { initReactI18next } from './initReactI18next'; | ||
let defaultOptions = { | ||
bindI18n: 'languageChanged', | ||
bindI18nStore: '', | ||
// nsMode: 'fallback' // loop through all namespaces given to hook, HOC, render prop for key lookup | ||
transEmptyNodeValue: '', | ||
transSupportBasicHtmlNodes: true, | ||
transWrapTextNodes: '', | ||
transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'], | ||
// hashTransKey: key => key // calculate a key for Trans component based on defaultValue | ||
useSuspense: true, | ||
unescape, | ||
}; | ||
export { getDefaults, setDefaults, getI18n, setI18n, initReactI18next }; | ||
let i18nInstance; | ||
export const I18nContext = createContext(); | ||
export function setDefaults(options = {}) { | ||
defaultOptions = { ...defaultOptions, ...options }; | ||
} | ||
export function getDefaults() { | ||
return defaultOptions; | ||
} | ||
export class ReportNamespaces { | ||
@@ -45,19 +26,2 @@ constructor() { | ||
export function setI18n(instance) { | ||
i18nInstance = instance; | ||
} | ||
export function getI18n() { | ||
return i18nInstance; | ||
} | ||
export const initReactI18next = { | ||
type: '3rdParty', | ||
init(instance) { | ||
setDefaults(instance.options.react); | ||
setI18n(instance); | ||
}, | ||
}; | ||
export function composeInitialProps(ForComponent) { | ||
@@ -64,0 +28,0 @@ return (ctx) => |
export { Trans } from './Trans'; | ||
export { Trans as TransWithoutContext } from './TransWithoutContext'; | ||
export { useTranslation } from './useTranslation'; | ||
@@ -3,0 +4,0 @@ export { withTranslation } from './withTranslation'; |
334
src/Trans.js
@@ -1,275 +0,7 @@ | ||
import { useContext, isValidElement, cloneElement, createElement } from 'react'; | ||
import HTML from 'html-parse-stringify'; | ||
import { getI18n, I18nContext, getDefaults } from './context'; | ||
import { warn, warnOnce } from './utils'; | ||
import { useContext } from 'react'; | ||
import { nodesToString, Trans as TransWithoutContext } from './TransWithoutContext'; | ||
import { getI18n, I18nContext } from './context'; | ||
function hasChildren(node, checkLength) { | ||
if (!node) return false; | ||
const base = node.props ? node.props.children : node.children; | ||
if (checkLength) return base.length > 0; | ||
return !!base; | ||
} | ||
export { nodesToString }; | ||
function getChildren(node) { | ||
if (!node) return []; | ||
return node.props ? node.props.children : node.children; | ||
} | ||
function hasValidReactChildren(children) { | ||
if (Object.prototype.toString.call(children) !== '[object Array]') return false; | ||
return children.every((child) => isValidElement(child)); | ||
} | ||
function getAsArray(data) { | ||
return Array.isArray(data) ? data : [data]; | ||
} | ||
function mergeProps(source, target) { | ||
const newTarget = { ...target }; | ||
// overwrite source.props when target.props already set | ||
newTarget.props = Object.assign(source.props, target.props); | ||
return newTarget; | ||
} | ||
export function nodesToString(children, i18nOptions) { | ||
if (!children) return ''; | ||
let stringNode = ''; | ||
// do not use `React.Children.toArray`, will fail at object children | ||
const childrenArray = getAsArray(children); | ||
const keepArray = | ||
i18nOptions.transSupportBasicHtmlNodes && i18nOptions.transKeepBasicHtmlNodesFor | ||
? i18nOptions.transKeepBasicHtmlNodesFor | ||
: []; | ||
// e.g. lorem <br/> ipsum {{ messageCount, format }} dolor <strong>bold</strong> amet | ||
childrenArray.forEach((child, childIndex) => { | ||
if (typeof child === 'string') { | ||
// actual e.g. lorem | ||
// expected e.g. lorem | ||
stringNode += `${child}`; | ||
} else if (isValidElement(child)) { | ||
const childPropsCount = Object.keys(child.props).length; | ||
const shouldKeepChild = keepArray.indexOf(child.type) > -1; | ||
const childChildren = child.props.children; | ||
if (!childChildren && shouldKeepChild && childPropsCount === 0) { | ||
// actual e.g. lorem <br/> ipsum | ||
// expected e.g. lorem <br/> ipsum | ||
stringNode += `<${child.type}/>`; | ||
} else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) { | ||
// actual e.g. lorem <hr className="test" /> ipsum | ||
// expected e.g. lorem <0></0> ipsum | ||
stringNode += `<${childIndex}></${childIndex}>`; | ||
} else if (child.props.i18nIsDynamicList) { | ||
// we got a dynamic list like | ||
// e.g. <ul i18nIsDynamicList>{['a', 'b'].map(item => ( <li key={item}>{item}</li> ))}</ul> | ||
// expected e.g. "<0></0>", not e.g. "<0><0>a</0><1>b</1></0>" | ||
stringNode += `<${childIndex}></${childIndex}>`; | ||
} else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === 'string') { | ||
// actual e.g. dolor <strong>bold</strong> amet | ||
// expected e.g. dolor <strong>bold</strong> amet | ||
stringNode += `<${child.type}>${childChildren}</${child.type}>`; | ||
} else { | ||
// regular case mapping the inner children | ||
const content = nodesToString(childChildren, i18nOptions); | ||
stringNode += `<${childIndex}>${content}</${childIndex}>`; | ||
} | ||
} else if (child === null) { | ||
warn(`Trans: the passed in value is invalid - seems you passed in a null child.`); | ||
} else if (typeof child === 'object') { | ||
// e.g. lorem {{ value, format }} ipsum | ||
const { format, ...clone } = child; | ||
const keys = Object.keys(clone); | ||
if (keys.length === 1) { | ||
const value = format ? `${keys[0]}, ${format}` : keys[0]; | ||
stringNode += `{{${value}}}`; | ||
} else { | ||
// not a valid interpolation object (can only contain one value plus format) | ||
warn( | ||
`react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.`, | ||
child, | ||
); | ||
} | ||
} else { | ||
warn( | ||
`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}}.`, | ||
child, | ||
); | ||
} | ||
}); | ||
return stringNode; | ||
} | ||
function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) { | ||
if (targetString === '') return []; | ||
// check if contains tags we need to replace from html string to react nodes | ||
const keepArray = i18nOptions.transKeepBasicHtmlNodesFor || []; | ||
const emptyChildrenButNeedsHandling = | ||
targetString && new RegExp(keepArray.join('|')).test(targetString); | ||
// no need to replace tags in the targetstring | ||
if (!children && !emptyChildrenButNeedsHandling) return [targetString]; | ||
// v2 -> interpolates upfront no need for "some <0>{{var}}</0>"" -> will be just "some {{var}}" in translation file | ||
const data = {}; | ||
function getData(childs) { | ||
const childrenArray = getAsArray(childs); | ||
childrenArray.forEach((child) => { | ||
if (typeof child === 'string') return; | ||
if (hasChildren(child)) getData(getChildren(child)); | ||
else if (typeof child === 'object' && !isValidElement(child)) Object.assign(data, child); | ||
}); | ||
} | ||
getData(children); | ||
// parse ast from string with additional wrapper tag | ||
// -> avoids issues in parser removing prepending text nodes | ||
const ast = HTML.parse(`<0>${targetString}</0>`); | ||
const opts = { ...data, ...combinedTOpts }; | ||
function renderInner(child, node, rootReactNode) { | ||
const childs = getChildren(child); | ||
const mappedChildren = mapAST(childs, node.children, rootReactNode); | ||
// console.warn('INNER', node.name, node, child, childs, node.children, mappedChildren); | ||
return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren; | ||
} | ||
function pushTranslatedJSX(child, inner, mem, i, isVoid) { | ||
if (child.dummy) child.children = inner; // needed on preact! | ||
mem.push(cloneElement(child, { ...child.props, key: i }, isVoid ? undefined : inner)); | ||
} | ||
// reactNode (the jsx root element or child) | ||
// astNode (the translation string as html ast) | ||
// rootReactNode (the most outer jsx children array or trans components prop) | ||
function mapAST(reactNode, astNode, rootReactNode) { | ||
const reactNodes = getAsArray(reactNode); | ||
const astNodes = getAsArray(astNode); | ||
return astNodes.reduce((mem, node, i) => { | ||
const translationContent = | ||
node.children && | ||
node.children[0] && | ||
node.children[0].content && | ||
i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language); | ||
if (node.type === 'tag') { | ||
let tmp = reactNodes[parseInt(node.name, 10)]; // regular array (components or children) | ||
if (!tmp && rootReactNode.length === 1 && rootReactNode[0][node.name]) | ||
tmp = rootReactNode[0][node.name]; // trans components is an object | ||
if (!tmp) tmp = {}; | ||
// console.warn('TMP', node.name, parseInt(node.name, 10), tmp, reactNodes); | ||
const child = | ||
Object.keys(node.attrs).length !== 0 ? mergeProps({ props: node.attrs }, tmp) : tmp; | ||
const isElement = isValidElement(child); | ||
const isValidTranslationWithChildren = | ||
isElement && hasChildren(node, true) && !node.voidElement; | ||
const isEmptyTransWithHTML = | ||
emptyChildrenButNeedsHandling && typeof child === 'object' && child.dummy && !isElement; | ||
const isKnownComponent = | ||
typeof children === 'object' && | ||
children !== null && | ||
Object.hasOwnProperty.call(children, node.name); | ||
// console.warn('CHILD', node.name, node, isElement, child); | ||
if (typeof child === 'string') { | ||
const value = i18n.services.interpolator.interpolate(child, opts, i18n.language); | ||
mem.push(value); | ||
} else if ( | ||
hasChildren(child) || // the jsx element has children -> loop | ||
isValidTranslationWithChildren // valid jsx element with no children but the translation has -> loop | ||
) { | ||
const inner = renderInner(child, node, rootReactNode); | ||
pushTranslatedJSX(child, inner, mem, i); | ||
} else if (isEmptyTransWithHTML) { | ||
// we have a empty Trans node (the dummy element) with a targetstring that contains html tags needing | ||
// conversion to react nodes | ||
// so we just need to map the inner stuff | ||
const inner = mapAST( | ||
reactNodes /* wrong but we need something */, | ||
node.children, | ||
rootReactNode, | ||
); | ||
mem.push(cloneElement(child, { ...child.props, key: i }, inner)); | ||
} else if (Number.isNaN(parseFloat(node.name))) { | ||
if (isKnownComponent) { | ||
const inner = renderInner(child, node, rootReactNode); | ||
pushTranslatedJSX(child, inner, mem, i, node.voidElement); | ||
} else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) { | ||
if (node.voidElement) { | ||
mem.push(createElement(node.name, { key: `${node.name}-${i}` })); | ||
} else { | ||
const inner = mapAST( | ||
reactNodes /* wrong but we need something */, | ||
node.children, | ||
rootReactNode, | ||
); | ||
mem.push(createElement(node.name, { key: `${node.name}-${i}` }, inner)); | ||
} | ||
} else if (node.voidElement) { | ||
mem.push(`<${node.name} />`); | ||
} else { | ||
const inner = mapAST( | ||
reactNodes /* wrong but we need something */, | ||
node.children, | ||
rootReactNode, | ||
); | ||
mem.push(`<${node.name}>${inner}</${node.name}>`); | ||
} | ||
} else if (typeof child === 'object' && !isElement) { | ||
const content = node.children[0] ? translationContent : null; | ||
// v1 | ||
// as interpolation was done already we just have a regular content node | ||
// in the translation AST while having an object in reactNodes | ||
// -> push the content no need to interpolate again | ||
if (content) mem.push(content); | ||
} else if (node.children.length === 1 && translationContent) { | ||
// If component does not have children, but translation - has | ||
// with this in component could be components={[<span class='make-beautiful'/>]} and in translation - 'some text <0>some highlighted message</0>' | ||
mem.push(cloneElement(child, { ...child.props, key: i }, translationContent)); | ||
} else { | ||
mem.push(cloneElement(child, { ...child.props, key: i })); | ||
} | ||
} else if (node.type === 'text') { | ||
const wrapTextNodes = i18nOptions.transWrapTextNodes; | ||
const content = shouldUnescape | ||
? i18nOptions.unescape( | ||
i18n.services.interpolator.interpolate(node.content, opts, i18n.language), | ||
) | ||
: i18n.services.interpolator.interpolate(node.content, opts, i18n.language); | ||
if (wrapTextNodes) { | ||
mem.push(createElement(wrapTextNodes, { key: `${node.name}-${i}` }, content)); | ||
} else { | ||
mem.push(content); | ||
} | ||
} | ||
return mem; | ||
}, []); | ||
} | ||
// call mapAST with having react nodes nested into additional node like | ||
// we did for the string ast from translation | ||
// return the children of that extra node to get expected result | ||
const result = mapAST( | ||
[{ dummy: true, children: children || [] }], | ||
ast, | ||
getAsArray(children || []), | ||
); | ||
return getChildren(result[0]); | ||
} | ||
export function Trans({ | ||
@@ -294,51 +26,21 @@ children, | ||
if (!i18n) { | ||
warnOnce('You will need to pass in an i18next instance by using i18nextReactModule'); | ||
return children; | ||
} | ||
const t = tFromProps || i18n.t.bind(i18n) || ((k) => k); | ||
if (context) tOptions.context = context; | ||
const reactI18nextOptions = { ...getDefaults(), ...(i18n.options && i18n.options.react) }; | ||
// prepare having a namespace | ||
let namespaces = ns || t.ns || defaultNSFromContext || (i18n.options && i18n.options.defaultNS); | ||
namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation']; | ||
const defaultValue = | ||
defaults || | ||
nodesToString(children, reactI18nextOptions) || | ||
reactI18nextOptions.transEmptyNodeValue || | ||
i18nKey; | ||
const { hashTransKey } = reactI18nextOptions; | ||
const key = i18nKey || (hashTransKey ? hashTransKey(defaultValue) : defaultValue); | ||
const interpolationOverride = values | ||
? tOptions.interpolation | ||
: { interpolation: { ...tOptions.interpolation, prefix: '#$?', suffix: '?$#' } }; | ||
const combinedTOpts = { | ||
...tOptions, | ||
return TransWithoutContext({ | ||
children, | ||
count, | ||
...values, | ||
...interpolationOverride, | ||
defaultValue, | ||
ns: namespaces, | ||
}; | ||
const translation = key ? t(key, combinedTOpts) : defaultValue; | ||
const content = renderNodes( | ||
components || children, | ||
translation, | ||
parent, | ||
i18nKey, | ||
context, | ||
tOptions, | ||
values, | ||
defaults, | ||
components, | ||
// prepare having a namespace | ||
ns: ns || t.ns || defaultNSFromContext || (i18n.options && i18n.options.defaultNS), | ||
i18n, | ||
reactI18nextOptions, | ||
combinedTOpts, | ||
t: tFromProps, | ||
shouldUnescape, | ||
); | ||
// allows user to pass `null` to `parent` | ||
// and override `defaultTransParent` if is present | ||
const useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent; | ||
return useAsParent ? createElement(useAsParent, additionalProps, content) : content; | ||
...additionalProps, | ||
}); | ||
} |
@@ -11,3 +11,4 @@ { | ||
"semicolon": false, | ||
"strict-export-declare-modifiers": false | ||
"strict-export-declare-modifiers": false, | ||
"no-relative-import-in-test": false | ||
}, | ||
@@ -14,0 +15,0 @@ "linterOptions": { |
366839
61
6455