UNPKG

svgedit

Version:

Powerful SVG-Editor for your browser

1 lines 2.3 MB
const isString=Tr=>"string"==typeof Tr,defer=()=>{let Tr,Ur;const Rr=new Promise(((Rr,Qr)=>{Tr=Rr,Ur=Qr}));return Rr.resolve=Tr,Rr.reject=Ur,Rr},makeString=Tr=>null==Tr?"":""+Tr,Tr=/###/g,cleanKey=Ur=>Ur&&Ur.indexOf("###")>-1?Ur.replace(Tr,"."):Ur,canNotTraverseDeeper=Tr=>!Tr||isString(Tr),getLastOfPath=(Tr,Ur,Rr)=>{const Qr=isString(Ur)?Ur.split("."):Ur;let Vr=0;for(;Vr<Qr.length-1;){if(canNotTraverseDeeper(Tr))return{};const Ur=cleanKey(Qr[Vr]);!Tr[Ur]&&Rr&&(Tr[Ur]=new Rr),Tr=Object.prototype.hasOwnProperty.call(Tr,Ur)?Tr[Ur]:{},++Vr}return canNotTraverseDeeper(Tr)?{}:{obj:Tr,k:cleanKey(Qr[Vr])}},setPath=(Tr,Ur,Rr)=>{const{obj:Qr,k:Vr}=getLastOfPath(Tr,Ur,Object);if(void 0!==Qr||1===Ur.length)return void(Qr[Vr]=Rr);let Gr=Ur[Ur.length-1],Dr=Ur.slice(0,Ur.length-1),Hr=getLastOfPath(Tr,Dr,Object);for(;void 0===Hr.obj&&Dr.length;)Gr=`${Dr[Dr.length-1]}.${Gr}`,Dr=Dr.slice(0,Dr.length-1),Hr=getLastOfPath(Tr,Dr,Object),Hr?.obj&&void 0!==Hr.obj[`${Hr.k}.${Gr}`]&&(Hr.obj=void 0);Hr.obj[`${Hr.k}.${Gr}`]=Rr},getPath=(Tr,Ur)=>{const{obj:Rr,k:Qr}=getLastOfPath(Tr,Ur);if(Rr&&Object.prototype.hasOwnProperty.call(Rr,Qr))return Rr[Qr]},deepExtend=(Tr,Ur,Rr)=>{for(const Qr in Ur)"__proto__"!==Qr&&"constructor"!==Qr&&(Qr in Tr?isString(Tr[Qr])||Tr[Qr]instanceof String||isString(Ur[Qr])||Ur[Qr]instanceof String?Rr&&(Tr[Qr]=Ur[Qr]):deepExtend(Tr[Qr],Ur[Qr],Rr):Tr[Qr]=Ur[Qr]);return Tr},regexEscape$1=Tr=>Tr.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var Ur={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};const escape$1=Tr=>isString(Tr)?Tr.replace(/[&<>"'\/]/g,(Tr=>Ur[Tr])):Tr;const Rr=[" ",",","?","!",";"],Qr=new class RegExpCache{constructor(Tr){this.capacity=Tr,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(Tr){const Ur=this.regExpMap.get(Tr);if(void 0!==Ur)return Ur;const Rr=new RegExp(Tr);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(Tr,Rr),this.regExpQueue.push(Tr),Rr}}(20),deepFind=function(Tr,Ur){let Rr=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";if(!Tr)return;if(Tr[Ur]){if(!Object.prototype.hasOwnProperty.call(Tr,Ur))return;return Tr[Ur]}const Qr=Ur.split(Rr);let Vr=Tr;for(let Tr=0;Tr<Qr.length;){if(!Vr||"object"!=typeof Vr)return;let Ur,Gr="";for(let Dr=Tr;Dr<Qr.length;++Dr)if(Dr!==Tr&&(Gr+=Rr),Gr+=Qr[Dr],Ur=Vr[Gr],void 0!==Ur){if(["string","number","boolean"].indexOf(typeof Ur)>-1&&Dr<Qr.length-1)continue;Tr+=Dr-Tr+1;break}Vr=Ur}return Vr},getCleanedCode=Tr=>Tr?.replace("_","-"),Vr={type:"logger",log(Tr){this.output("log",Tr)},warn(Tr){this.output("warn",Tr)},error(Tr){this.output("error",Tr)},output(Tr,Ur){console?.[Tr]?.apply?.(console,Ur)}};class Logger{constructor(Tr){let Ur=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.init(Tr,Ur)}init(Tr){let Ur=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=Ur.prefix||"i18next:",this.logger=Tr||Vr,this.options=Ur,this.debug=Ur.debug}log(){for(var Tr=arguments.length,Ur=new Array(Tr),Rr=0;Rr<Tr;Rr++)Ur[Rr]=arguments[Rr];return this.forward(Ur,"log","",!0)}warn(){for(var Tr=arguments.length,Ur=new Array(Tr),Rr=0;Rr<Tr;Rr++)Ur[Rr]=arguments[Rr];return this.forward(Ur,"warn","",!0)}error(){for(var Tr=arguments.length,Ur=new Array(Tr),Rr=0;Rr<Tr;Rr++)Ur[Rr]=arguments[Rr];return this.forward(Ur,"error","")}deprecate(){for(var Tr=arguments.length,Ur=new Array(Tr),Rr=0;Rr<Tr;Rr++)Ur[Rr]=arguments[Rr];return this.forward(Ur,"warn","WARNING DEPRECATED: ",!0)}forward(Tr,Ur,Rr,Qr){return Qr&&!this.debug?null:(isString(Tr[0])&&(Tr[0]=`${Rr}${this.prefix} ${Tr[0]}`),this.logger[Ur](Tr))}create(Tr){return new Logger(this.logger,{prefix:`${this.prefix}:${Tr}:`,...this.options})}clone(Tr){return(Tr=Tr||this.options).prefix=Tr.prefix||this.prefix,new Logger(this.logger,Tr)}}var Gr=new Logger;class EventEmitter{constructor(){this.observers={}}on(Tr,Ur){return Tr.split(" ").forEach((Tr=>{this.observers[Tr]||(this.observers[Tr]=new Map);const Rr=this.observers[Tr].get(Ur)||0;this.observers[Tr].set(Ur,Rr+1)})),this}off(Tr,Ur){this.observers[Tr]&&(Ur?this.observers[Tr].delete(Ur):delete this.observers[Tr])}emit(Tr){for(var Ur=arguments.length,Rr=new Array(Ur>1?Ur-1:0),Qr=1;Qr<Ur;Qr++)Rr[Qr-1]=arguments[Qr];if(this.observers[Tr]){Array.from(this.observers[Tr].entries()).forEach((Tr=>{let[Ur,Qr]=Tr;for(let Tr=0;Tr<Qr;Tr++)Ur(...Rr)}))}if(this.observers["*"]){Array.from(this.observers["*"].entries()).forEach((Ur=>{let[Qr,Vr]=Ur;for(let Ur=0;Ur<Vr;Ur++)Qr.apply(Qr,[Tr,...Rr])}))}}}class ResourceStore extends EventEmitter{constructor(Tr){let Ur=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=Tr||{},this.options=Ur,void 0===this.options.keySeparator&&(this.options.keySeparator="."),void 0===this.options.ignoreJSONStructure&&(this.options.ignoreJSONStructure=!0)}addNamespaces(Tr){this.options.ns.indexOf(Tr)<0&&this.options.ns.push(Tr)}removeNamespaces(Tr){const Ur=this.options.ns.indexOf(Tr);Ur>-1&&this.options.ns.splice(Ur,1)}getResource(Tr,Ur,Rr){let Qr=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const Vr=void 0!==Qr.keySeparator?Qr.keySeparator:this.options.keySeparator,Gr=void 0!==Qr.ignoreJSONStructure?Qr.ignoreJSONStructure:this.options.ignoreJSONStructure;let Dr;Tr.indexOf(".")>-1?Dr=Tr.split("."):(Dr=[Tr,Ur],Rr&&(Array.isArray(Rr)?Dr.push(...Rr):isString(Rr)&&Vr?Dr.push(...Rr.split(Vr)):Dr.push(Rr)));const Hr=getPath(this.data,Dr);return!Hr&&!Ur&&!Rr&&Tr.indexOf(".")>-1&&(Tr=Dr[0],Ur=Dr[1],Rr=Dr.slice(2).join(".")),!Hr&&Gr&&isString(Rr)?deepFind(this.data?.[Tr]?.[Ur],Rr,Vr):Hr}addResource(Tr,Ur,Rr,Qr){let Vr=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1};const Gr=void 0!==Vr.keySeparator?Vr.keySeparator:this.options.keySeparator;let Dr=[Tr,Ur];Rr&&(Dr=Dr.concat(Gr?Rr.split(Gr):Rr)),Tr.indexOf(".")>-1&&(Dr=Tr.split("."),Qr=Ur,Ur=Dr[1]),this.addNamespaces(Ur),setPath(this.data,Dr,Qr),Vr.silent||this.emit("added",Tr,Ur,Rr,Qr)}addResources(Tr,Ur,Rr){let Qr=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(const Qr in Rr)(isString(Rr[Qr])||Array.isArray(Rr[Qr]))&&this.addResource(Tr,Ur,Qr,Rr[Qr],{silent:!0});Qr.silent||this.emit("added",Tr,Ur,Rr)}addResourceBundle(Tr,Ur,Rr,Qr,Vr){let Gr=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1,skipCopy:!1},Dr=[Tr,Ur];Tr.indexOf(".")>-1&&(Dr=Tr.split("."),Qr=Rr,Rr=Ur,Ur=Dr[1]),this.addNamespaces(Ur);let Hr=getPath(this.data,Dr)||{};Gr.skipCopy||(Rr=JSON.parse(JSON.stringify(Rr))),Qr?deepExtend(Hr,Rr,Vr):Hr={...Hr,...Rr},setPath(this.data,Dr,Hr),Gr.silent||this.emit("added",Tr,Ur,Rr)}removeResourceBundle(Tr,Ur){this.hasResourceBundle(Tr,Ur)&&delete this.data[Tr][Ur],this.removeNamespaces(Ur),this.emit("removed",Tr,Ur)}hasResourceBundle(Tr,Ur){return void 0!==this.getResource(Tr,Ur)}getResourceBundle(Tr,Ur){return Ur||(Ur=this.options.defaultNS),this.getResource(Tr,Ur)}getDataByLanguage(Tr){return this.data[Tr]}hasLanguageSomeTranslations(Tr){const Ur=this.getDataByLanguage(Tr);return!!(Ur&&Object.keys(Ur)||[]).find((Tr=>Ur[Tr]&&Object.keys(Ur[Tr]).length>0))}toJSON(){return this.data}}var Dr={processors:{},addPostProcessor(Tr){this.processors[Tr.name]=Tr},handle(Tr,Ur,Rr,Qr,Vr){return Tr.forEach((Tr=>{Ur=this.processors[Tr]?.process(Ur,Rr,Qr,Vr)??Ur})),Ur}};const Hr={},shouldHandleAsObject=Tr=>!isString(Tr)&&"boolean"!=typeof Tr&&"number"!=typeof Tr;class Translator extends EventEmitter{constructor(Tr){let Ur=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),((Tr,Ur,Rr)=>{Tr.forEach((Tr=>{Ur[Tr]&&(Rr[Tr]=Ur[Tr])}))})(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],Tr,this),this.options=Ur,void 0===this.options.keySeparator&&(this.options.keySeparator="."),this.logger=Gr.create("translator")}changeLanguage(Tr){Tr&&(this.language=Tr)}exists(Tr){const Ur={...arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}}};if(null==Tr)return!1;const Rr=this.resolve(Tr,Ur);return void 0!==Rr?.res}extractFromKey(Tr,Ur){let Vr=void 0!==Ur.nsSeparator?Ur.nsSeparator:this.options.nsSeparator;void 0===Vr&&(Vr=":");const Gr=void 0!==Ur.keySeparator?Ur.keySeparator:this.options.keySeparator;let Dr=Ur.ns||this.options.defaultNS||[];const Hr=Vr&&Tr.indexOf(Vr)>-1,zr=!(this.options.userDefinedKeySeparator||Ur.keySeparator||this.options.userDefinedNsSeparator||Ur.nsSeparator||((Tr,Ur,Vr)=>{Ur=Ur||"",Vr=Vr||"";const Gr=Rr.filter((Tr=>Ur.indexOf(Tr)<0&&Vr.indexOf(Tr)<0));if(0===Gr.length)return!0;const Dr=Qr.getRegExp(`(${Gr.map((Tr=>"?"===Tr?"\\?":Tr)).join("|")})`);let Hr=!Dr.test(Tr);if(!Hr){const Ur=Tr.indexOf(Vr);Ur>0&&!Dr.test(Tr.substring(0,Ur))&&(Hr=!0)}return Hr})(Tr,Vr,Gr));if(Hr&&!zr){const Ur=Tr.match(this.interpolator.nestingRegexp);if(Ur&&Ur.length>0)return{key:Tr,namespaces:isString(Dr)?[Dr]:Dr};const Rr=Tr.split(Vr);(Vr!==Gr||Vr===Gr&&this.options.ns.indexOf(Rr[0])>-1)&&(Dr=Rr.shift()),Tr=Rr.join(Gr)}return{key:Tr,namespaces:isString(Dr)?[Dr]:Dr}}translate(Tr,Ur,Rr){let Qr="object"==typeof Ur?{...Ur}:Ur;if("object"!=typeof Qr&&this.options.overloadTranslationOptionHandler&&(Qr=this.options.overloadTranslationOptionHandler(arguments)),"object"==typeof options&&(Qr={...Qr}),Qr||(Qr={}),null==Tr)return"";Array.isArray(Tr)||(Tr=[String(Tr)]);const Vr=void 0!==Qr.returnDetails?Qr.returnDetails:this.options.returnDetails,Gr=void 0!==Qr.keySeparator?Qr.keySeparator:this.options.keySeparator,{key:Dr,namespaces:Hr}=this.extractFromKey(Tr[Tr.length-1],Qr),zr=Hr[Hr.length-1];let Kr=void 0!==Qr.nsSeparator?Qr.nsSeparator:this.options.nsSeparator;void 0===Kr&&(Kr=":");const $r=Qr.lng||this.language,Wr=Qr.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if("cimode"===$r?.toLowerCase())return Wr?Vr?{res:`${zr}${Kr}${Dr}`,usedKey:Dr,exactUsedKey:Dr,usedLng:$r,usedNS:zr,usedParams:this.getUsedParamsDetails(Qr)}:`${zr}${Kr}${Dr}`:Vr?{res:Dr,usedKey:Dr,exactUsedKey:Dr,usedLng:$r,usedNS:zr,usedParams:this.getUsedParamsDetails(Qr)}:Dr;const Xr=this.resolve(Tr,Qr);let Yr=Xr?.res;const Zr=Xr?.usedKey||Dr,Jr=Xr?.exactUsedKey||Dr,en=void 0!==Qr.joinArrays?Qr.joinArrays:this.options.joinArrays,tn=!this.i18nFormat||this.i18nFormat.handleAsObject,rn=void 0!==Qr.count&&!isString(Qr.count),nn=Translator.hasDefaultValue(Qr),on=rn?this.pluralResolver.getSuffix($r,Qr.count,Qr):"",an=Qr.ordinal&&rn?this.pluralResolver.getSuffix($r,Qr.count,{ordinal:!1}):"",sn=rn&&!Qr.ordinal&&0===Qr.count,cn=sn&&Qr[`defaultValue${this.options.pluralSeparator}zero`]||Qr[`defaultValue${on}`]||Qr[`defaultValue${an}`]||Qr.defaultValue;let An=Yr;tn&&!Yr&&nn&&(An=cn);const un=shouldHandleAsObject(An),dn=Object.prototype.toString.apply(An);if(!(tn&&An&&un&&["[object Number]","[object Function]","[object RegExp]"].indexOf(dn)<0)||isString(en)&&Array.isArray(An))if(tn&&isString(en)&&Array.isArray(Yr))Yr=Yr.join(en),Yr&&(Yr=this.extendTranslation(Yr,Tr,Qr,Rr));else{let Ur=!1,Vr=!1;!this.isValidLookup(Yr)&&nn&&(Ur=!0,Yr=cn),this.isValidLookup(Yr)||(Vr=!0,Yr=Dr);const Hr=(Qr.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&Vr?void 0:Yr,Wr=nn&&cn!==Yr&&this.options.updateMissing;if(Vr||Ur||Wr){if(this.logger.log(Wr?"updateKey":"missingKey",$r,zr,Dr,Wr?cn:Yr),Gr){const Tr=this.resolve(Dr,{...Qr,keySeparator:!1});Tr&&Tr.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let Tr=[];const Ur=this.languageUtils.getFallbackCodes(this.options.fallbackLng,Qr.lng||this.language);if("fallback"===this.options.saveMissingTo&&Ur&&Ur[0])for(let Rr=0;Rr<Ur.length;Rr++)Tr.push(Ur[Rr]);else"all"===this.options.saveMissingTo?Tr=this.languageUtils.toResolveHierarchy(Qr.lng||this.language):Tr.push(Qr.lng||this.language);const send=(Tr,Ur,Rr)=>{const Vr=nn&&Rr!==Yr?Rr:Hr;this.options.missingKeyHandler?this.options.missingKeyHandler(Tr,zr,Ur,Vr,Wr,Qr):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(Tr,zr,Ur,Vr,Wr,Qr),this.emit("missingKey",Tr,zr,Ur,Yr)};this.options.saveMissing&&(this.options.saveMissingPlurals&&rn?Tr.forEach((Tr=>{const Ur=this.pluralResolver.getSuffixes(Tr,Qr);sn&&Qr[`defaultValue${this.options.pluralSeparator}zero`]&&Ur.indexOf(`${this.options.pluralSeparator}zero`)<0&&Ur.push(`${this.options.pluralSeparator}zero`),Ur.forEach((Ur=>{send([Tr],Dr+Ur,Qr[`defaultValue${Ur}`]||cn)}))})):send(Tr,Dr,cn))}Yr=this.extendTranslation(Yr,Tr,Qr,Xr,Rr),Vr&&Yr===Dr&&this.options.appendNamespaceToMissingKey&&(Yr=`${zr}${Kr}${Dr}`),(Vr||Ur)&&this.options.parseMissingKeyHandler&&(Yr=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${zr}${Kr}${Dr}`:Dr,Ur?Yr:void 0,Qr))}else{if(!Qr.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const Tr=this.options.returnedObjectHandler?this.options.returnedObjectHandler(Zr,An,{...Qr,ns:Hr}):`key '${Dr} (${this.language})' returned an object instead of string.`;return Vr?(Xr.res=Tr,Xr.usedParams=this.getUsedParamsDetails(Qr),Xr):Tr}if(Gr){const Tr=Array.isArray(An),Ur=Tr?[]:{},Rr=Tr?Jr:Zr;for(const Tr in An)if(Object.prototype.hasOwnProperty.call(An,Tr)){const Vr=`${Rr}${Gr}${Tr}`;Ur[Tr]=nn&&!Yr?this.translate(Vr,{...Qr,defaultValue:shouldHandleAsObject(cn)?cn[Tr]:void 0,joinArrays:!1,ns:Hr}):this.translate(Vr,{...Qr,joinArrays:!1,ns:Hr}),Ur[Tr]===Vr&&(Ur[Tr]=An[Tr])}Yr=Ur}}return Vr?(Xr.res=Yr,Xr.usedParams=this.getUsedParamsDetails(Qr),Xr):Yr}extendTranslation(Tr,Ur,Rr,Qr,Vr){var Gr=this;if(this.i18nFormat?.parse)Tr=this.i18nFormat.parse(Tr,{...this.options.interpolation.defaultVariables,...Rr},Rr.lng||this.language||Qr.usedLng,Qr.usedNS,Qr.usedKey,{resolved:Qr});else if(!Rr.skipInterpolation){Rr.interpolation&&this.interpolator.init({...Rr,interpolation:{...this.options.interpolation,...Rr.interpolation}});const Dr=isString(Tr)&&(void 0!==Rr?.interpolation?.skipOnVariables?Rr.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let Hr;if(Dr){const Ur=Tr.match(this.interpolator.nestingRegexp);Hr=Ur&&Ur.length}let zr=Rr.replace&&!isString(Rr.replace)?Rr.replace:Rr;if(this.options.interpolation.defaultVariables&&(zr={...this.options.interpolation.defaultVariables,...zr}),Tr=this.interpolator.interpolate(Tr,zr,Rr.lng||this.language||Qr.usedLng,Rr),Dr){const Ur=Tr.match(this.interpolator.nestingRegexp);Hr<(Ur&&Ur.length)&&(Rr.nest=!1)}!Rr.lng&&Qr&&Qr.res&&(Rr.lng=this.language||Qr.usedLng),!1!==Rr.nest&&(Tr=this.interpolator.nest(Tr,(function(){for(var Tr=arguments.length,Qr=new Array(Tr),Dr=0;Dr<Tr;Dr++)Qr[Dr]=arguments[Dr];return Vr?.[0]!==Qr[0]||Rr.context?Gr.translate(...Qr,Ur):(Gr.logger.warn(`It seems you are nesting recursively key: ${Qr[0]} in key: ${Ur[0]}`),null)}),Rr)),Rr.interpolation&&this.interpolator.reset()}const Hr=Rr.postProcess||this.options.postProcess,zr=isString(Hr)?[Hr]:Hr;return null!=Tr&&zr?.length&&!1!==Rr.applyPostProcessor&&(Tr=Dr.handle(zr,Tr,Ur,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...Qr,usedParams:this.getUsedParamsDetails(Rr)},...Rr}:Rr,this)),Tr}resolve(Tr){let Ur,Rr,Qr,Vr,Gr,Dr=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return isString(Tr)&&(Tr=[Tr]),Tr.forEach((Tr=>{if(this.isValidLookup(Ur))return;const zr=this.extractFromKey(Tr,Dr),Kr=zr.key;Rr=Kr;let $r=zr.namespaces;this.options.fallbackNS&&($r=$r.concat(this.options.fallbackNS));const Wr=void 0!==Dr.count&&!isString(Dr.count),Xr=Wr&&!Dr.ordinal&&0===Dr.count,Yr=void 0!==Dr.context&&(isString(Dr.context)||"number"==typeof Dr.context)&&""!==Dr.context,Zr=Dr.lngs?Dr.lngs:this.languageUtils.toResolveHierarchy(Dr.lng||this.language,Dr.fallbackLng);$r.forEach((Tr=>{this.isValidLookup(Ur)||(Gr=Tr,Hr[`${Zr[0]}-${Tr}`]||!this.utils?.hasLoadedNamespace||this.utils?.hasLoadedNamespace(Gr)||(Hr[`${Zr[0]}-${Tr}`]=!0,this.logger.warn(`key "${Rr}" for languages "${Zr.join(", ")}" won't get resolved as namespace "${Gr}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),Zr.forEach((Rr=>{if(this.isValidLookup(Ur))return;Vr=Rr;const Gr=[Kr];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(Gr,Kr,Rr,Tr,Dr);else{let Tr;Wr&&(Tr=this.pluralResolver.getSuffix(Rr,Dr.count,Dr));const Ur=`${this.options.pluralSeparator}zero`,Qr=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(Wr&&(Gr.push(Kr+Tr),Dr.ordinal&&0===Tr.indexOf(Qr)&&Gr.push(Kr+Tr.replace(Qr,this.options.pluralSeparator)),Xr&&Gr.push(Kr+Ur)),Yr){const Rr=`${Kr}${this.options.contextSeparator}${Dr.context}`;Gr.push(Rr),Wr&&(Gr.push(Rr+Tr),Dr.ordinal&&0===Tr.indexOf(Qr)&&Gr.push(Rr+Tr.replace(Qr,this.options.pluralSeparator)),Xr&&Gr.push(Rr+Ur))}}let Hr;for(;Hr=Gr.pop();)this.isValidLookup(Ur)||(Qr=Hr,Ur=this.getResource(Rr,Tr,Hr,Dr))})))}))})),{res:Ur,usedKey:Rr,exactUsedKey:Qr,usedLng:Vr,usedNS:Gr}}isValidLookup(Tr){return!(void 0===Tr||!this.options.returnNull&&null===Tr||!this.options.returnEmptyString&&""===Tr)}getResource(Tr,Ur,Rr){let Qr=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat?.getResource?this.i18nFormat.getResource(Tr,Ur,Rr,Qr):this.resourceStore.getResource(Tr,Ur,Rr,Qr)}getUsedParamsDetails(){let Tr=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const Ur=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],Rr=Tr.replace&&!isString(Tr.replace);let Qr=Rr?Tr.replace:Tr;if(Rr&&void 0!==Tr.count&&(Qr.count=Tr.count),this.options.interpolation.defaultVariables&&(Qr={...this.options.interpolation.defaultVariables,...Qr}),!Rr){Qr={...Qr};for(const Tr of Ur)delete Qr[Tr]}return Qr}static hasDefaultValue(Tr){const Ur="defaultValue";for(const Rr in Tr)if(Object.prototype.hasOwnProperty.call(Tr,Rr)&&Ur===Rr.substring(0,12)&&void 0!==Tr[Rr])return!0;return!1}}class LanguageUtil{constructor(Tr){this.options=Tr,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Gr.create("languageUtils")}getScriptPartFromCode(Tr){if(!(Tr=getCleanedCode(Tr))||Tr.indexOf("-")<0)return null;const Ur=Tr.split("-");return 2===Ur.length?null:(Ur.pop(),"x"===Ur[Ur.length-1].toLowerCase()?null:this.formatLanguageCode(Ur.join("-")))}getLanguagePartFromCode(Tr){if(!(Tr=getCleanedCode(Tr))||Tr.indexOf("-")<0)return Tr;const Ur=Tr.split("-");return this.formatLanguageCode(Ur[0])}formatLanguageCode(Tr){if(isString(Tr)&&Tr.indexOf("-")>-1){let Ur;try{Ur=Intl.getCanonicalLocales(Tr)[0]}catch(Tr){}return Ur&&this.options.lowerCaseLng&&(Ur=Ur.toLowerCase()),Ur||(this.options.lowerCaseLng?Tr.toLowerCase():Tr)}return this.options.cleanCode||this.options.lowerCaseLng?Tr.toLowerCase():Tr}isSupportedCode(Tr){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(Tr=this.getLanguagePartFromCode(Tr)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(Tr)>-1}getBestMatchFromCodes(Tr){if(!Tr)return null;let Ur;return Tr.forEach((Tr=>{if(Ur)return;const Rr=this.formatLanguageCode(Tr);this.options.supportedLngs&&!this.isSupportedCode(Rr)||(Ur=Rr)})),!Ur&&this.options.supportedLngs&&Tr.forEach((Tr=>{if(Ur)return;const Rr=this.getScriptPartFromCode(Tr);if(this.isSupportedCode(Rr))return Ur=Rr;const Qr=this.getLanguagePartFromCode(Tr);if(this.isSupportedCode(Qr))return Ur=Qr;Ur=this.options.supportedLngs.find((Tr=>Tr===Qr?Tr:Tr.indexOf("-")<0&&Qr.indexOf("-")<0?void 0:Tr.indexOf("-")>0&&Qr.indexOf("-")<0&&Tr.substring(0,Tr.indexOf("-"))===Qr||0===Tr.indexOf(Qr)&&Qr.length>1?Tr:void 0))})),Ur||(Ur=this.getFallbackCodes(this.options.fallbackLng)[0]),Ur}getFallbackCodes(Tr,Ur){if(!Tr)return[];if("function"==typeof Tr&&(Tr=Tr(Ur)),isString(Tr)&&(Tr=[Tr]),Array.isArray(Tr))return Tr;if(!Ur)return Tr.default||[];let Rr=Tr[Ur];return Rr||(Rr=Tr[this.getScriptPartFromCode(Ur)]),Rr||(Rr=Tr[this.formatLanguageCode(Ur)]),Rr||(Rr=Tr[this.getLanguagePartFromCode(Ur)]),Rr||(Rr=Tr.default),Rr||[]}toResolveHierarchy(Tr,Ur){const Rr=this.getFallbackCodes((!1===Ur?[]:Ur)||this.options.fallbackLng||[],Tr),Qr=[],addCode=Tr=>{Tr&&(this.isSupportedCode(Tr)?Qr.push(Tr):this.logger.warn(`rejecting language code not found in supportedLngs: ${Tr}`))};return isString(Tr)&&(Tr.indexOf("-")>-1||Tr.indexOf("_")>-1)?("languageOnly"!==this.options.load&&addCode(this.formatLanguageCode(Tr)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&addCode(this.getScriptPartFromCode(Tr)),"currentOnly"!==this.options.load&&addCode(this.getLanguagePartFromCode(Tr))):isString(Tr)&&addCode(this.formatLanguageCode(Tr)),Rr.forEach((Tr=>{Qr.indexOf(Tr)<0&&addCode(this.formatLanguageCode(Tr))})),Qr}}const zr={zero:0,one:1,two:2,few:3,many:4,other:5},Kr={select:Tr=>1===Tr?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class PluralResolver{constructor(Tr){let Ur=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.languageUtils=Tr,this.options=Ur,this.logger=Gr.create("pluralResolver"),this.pluralRulesCache={}}addRule(Tr,Ur){this.rules[Tr]=Ur}clearCache(){this.pluralRulesCache={}}getRule(Tr){let Ur=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const Rr=getCleanedCode("dev"===Tr?"en":Tr),Qr=Ur.ordinal?"ordinal":"cardinal",Vr=JSON.stringify({cleanedCode:Rr,type:Qr});if(Vr in this.pluralRulesCache)return this.pluralRulesCache[Vr];let Gr;try{Gr=new Intl.PluralRules(Rr,{type:Qr})}catch(Rr){if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),Kr;if(!Tr.match(/-|_/))return Kr;const Qr=this.languageUtils.getLanguagePartFromCode(Tr);Gr=this.getRule(Qr,Ur)}return this.pluralRulesCache[Vr]=Gr,Gr}needsPlural(Tr){let Ur=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},Rr=this.getRule(Tr,Ur);return Rr||(Rr=this.getRule("dev",Ur)),Rr?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(Tr,Ur){let Rr=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.getSuffixes(Tr,Rr).map((Tr=>`${Ur}${Tr}`))}getSuffixes(Tr){let Ur=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},Rr=this.getRule(Tr,Ur);return Rr||(Rr=this.getRule("dev",Ur)),Rr?Rr.resolvedOptions().pluralCategories.sort(((Tr,Ur)=>zr[Tr]-zr[Ur])).map((Tr=>`${this.options.prepend}${Ur.ordinal?`ordinal${this.options.prepend}`:""}${Tr}`)):[]}getSuffix(Tr,Ur){let Rr=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const Qr=this.getRule(Tr,Rr);return Qr?`${this.options.prepend}${Rr.ordinal?`ordinal${this.options.prepend}`:""}${Qr.select(Ur)}`:(this.logger.warn(`no plural rule found for: ${Tr}`),this.getSuffix("dev",Ur,Rr))}}const deepFindWithDefaults=function(Tr,Ur,Rr){let Qr=arguments.length>3&&void 0!==arguments[3]?arguments[3]:".",Vr=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],Gr=((Tr,Ur,Rr)=>{const Qr=getPath(Tr,Rr);return void 0!==Qr?Qr:getPath(Ur,Rr)})(Tr,Ur,Rr);return!Gr&&Vr&&isString(Rr)&&(Gr=deepFind(Tr,Rr,Qr),void 0===Gr&&(Gr=deepFind(Ur,Rr,Qr))),Gr},regexSafe=Tr=>Tr.replace(/\$/g,"$$$$");class Interpolator{constructor(){let Tr=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.logger=Gr.create("interpolator"),this.options=Tr,this.format=Tr?.interpolation?.format||(Tr=>Tr),this.init(Tr)}init(){let Tr=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Tr.interpolation||(Tr.interpolation={escapeValue:!0});const{escape:Ur,escapeValue:Rr,useRawValueToEscape:Qr,prefix:Vr,prefixEscaped:Gr,suffix:Dr,suffixEscaped:Hr,formatSeparator:zr,unescapeSuffix:Kr,unescapePrefix:$r,nestingPrefix:Wr,nestingPrefixEscaped:Xr,nestingSuffix:Yr,nestingSuffixEscaped:Zr,nestingOptionsSeparator:Jr,maxReplaces:en,alwaysFormat:tn}=Tr.interpolation;this.escape=void 0!==Ur?Ur:escape$1,this.escapeValue=void 0===Rr||Rr,this.useRawValueToEscape=void 0!==Qr&&Qr,this.prefix=Vr?regexEscape$1(Vr):Gr||"{{",this.suffix=Dr?regexEscape$1(Dr):Hr||"}}",this.formatSeparator=zr||",",this.unescapePrefix=Kr?"":$r||"-",this.unescapeSuffix=this.unescapePrefix?"":Kr||"",this.nestingPrefix=Wr?regexEscape$1(Wr):Xr||regexEscape$1("$t("),this.nestingSuffix=Yr?regexEscape$1(Yr):Zr||regexEscape$1(")"),this.nestingOptionsSeparator=Jr||",",this.maxReplaces=en||1e3,this.alwaysFormat=void 0!==tn&&tn,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const getOrResetRegExp=(Tr,Ur)=>Tr?.source===Ur?(Tr.lastIndex=0,Tr):new RegExp(Ur,"g");this.regexp=getOrResetRegExp(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=getOrResetRegExp(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=getOrResetRegExp(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(Tr,Ur,Rr,Qr){let Vr,Gr,Dr;const Hr=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},handleFormat=Tr=>{if(Tr.indexOf(this.formatSeparator)<0){const Vr=deepFindWithDefaults(Ur,Hr,Tr,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(Vr,void 0,Rr,{...Qr,...Ur,interpolationkey:Tr}):Vr}const Vr=Tr.split(this.formatSeparator),Gr=Vr.shift().trim(),Dr=Vr.join(this.formatSeparator).trim();return this.format(deepFindWithDefaults(Ur,Hr,Gr,this.options.keySeparator,this.options.ignoreJSONStructure),Dr,Rr,{...Qr,...Ur,interpolationkey:Gr})};this.resetRegExp();const zr=Qr?.missingInterpolationHandler||this.options.missingInterpolationHandler,Kr=void 0!==Qr?.interpolation?.skipOnVariables?Qr.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:Tr=>regexSafe(Tr)},{regex:this.regexp,safeValue:Tr=>this.escapeValue?regexSafe(this.escape(Tr)):regexSafe(Tr)}].forEach((Ur=>{for(Dr=0;Vr=Ur.regex.exec(Tr);){const Rr=Vr[1].trim();if(Gr=handleFormat(Rr),void 0===Gr)if("function"==typeof zr){const Ur=zr(Tr,Vr,Qr);Gr=isString(Ur)?Ur:""}else if(Qr&&Object.prototype.hasOwnProperty.call(Qr,Rr))Gr="";else{if(Kr){Gr=Vr[0];continue}this.logger.warn(`missed to pass in variable ${Rr} for interpolating ${Tr}`),Gr=""}else isString(Gr)||this.useRawValueToEscape||(Gr=makeString(Gr));const Hr=Ur.safeValue(Gr);if(Tr=Tr.replace(Vr[0],Hr),Kr?(Ur.regex.lastIndex+=Gr.length,Ur.regex.lastIndex-=Vr[0].length):Ur.regex.lastIndex=0,Dr++,Dr>=this.maxReplaces)break}})),Tr}nest(Tr,Ur){let Rr,Qr,Vr,Gr=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const handleHasOptions=(Tr,Ur)=>{const Rr=this.nestingOptionsSeparator;if(Tr.indexOf(Rr)<0)return Tr;const Qr=Tr.split(new RegExp(`${Rr}[ ]*{`));let Gr=`{${Qr[1]}`;Tr=Qr[0],Gr=this.interpolate(Gr,Vr);const Dr=Gr.match(/'/g),Hr=Gr.match(/"/g);((Dr?.length??0)%2==0&&!Hr||Hr.length%2!=0)&&(Gr=Gr.replace(/'/g,'"'));try{Vr=JSON.parse(Gr),Ur&&(Vr={...Ur,...Vr})}catch(Ur){return this.logger.warn(`failed parsing options string in nesting for key ${Tr}`,Ur),`${Tr}${Rr}${Gr}`}return Vr.defaultValue&&Vr.defaultValue.indexOf(this.prefix)>-1&&delete Vr.defaultValue,Tr};for(;Rr=this.nestingRegexp.exec(Tr);){let Dr=[];Vr={...Gr},Vr=Vr.replace&&!isString(Vr.replace)?Vr.replace:Vr,Vr.applyPostProcessor=!1,delete Vr.defaultValue;let Hr=!1;if(-1!==Rr[0].indexOf(this.formatSeparator)&&!/{.*}/.test(Rr[1])){const Tr=Rr[1].split(this.formatSeparator).map((Tr=>Tr.trim()));Rr[1]=Tr.shift(),Dr=Tr,Hr=!0}if(Qr=Ur(handleHasOptions.call(this,Rr[1].trim(),Vr),Vr),Qr&&Rr[0]===Tr&&!isString(Qr))return Qr;isString(Qr)||(Qr=makeString(Qr)),Qr||(this.logger.warn(`missed to resolve ${Rr[1]} for nesting ${Tr}`),Qr=""),Hr&&(Qr=Dr.reduce(((Tr,Ur)=>this.format(Tr,Ur,Gr.lng,{...Gr,interpolationkey:Rr[1].trim()})),Qr.trim())),Tr=Tr.replace(Rr[0],Qr),this.regexp.lastIndex=0}return Tr}}const createCachedFormatter=Tr=>{const Ur={};return(Rr,Qr,Vr)=>{let Gr=Vr;Vr&&Vr.interpolationkey&&Vr.formatParams&&Vr.formatParams[Vr.interpolationkey]&&Vr[Vr.interpolationkey]&&(Gr={...Gr,[Vr.interpolationkey]:void 0});const Dr=Qr+JSON.stringify(Gr);let Hr=Ur[Dr];return Hr||(Hr=Tr(getCleanedCode(Qr),Vr),Ur[Dr]=Hr),Hr(Rr)}},createNonCachedFormatter=Tr=>(Ur,Rr,Qr)=>Tr(getCleanedCode(Rr),Qr)(Ur);class Formatter{constructor(){let Tr=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.logger=Gr.create("formatter"),this.options=Tr,this.init(Tr)}init(Tr){let Ur=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}};this.formatSeparator=Ur.interpolation.formatSeparator||",";const Rr=Ur.cacheInBuiltFormats?createCachedFormatter:createNonCachedFormatter;this.formats={number:Rr(((Tr,Ur)=>{const Rr=new Intl.NumberFormat(Tr,{...Ur});return Tr=>Rr.format(Tr)})),currency:Rr(((Tr,Ur)=>{const Rr=new Intl.NumberFormat(Tr,{...Ur,style:"currency"});return Tr=>Rr.format(Tr)})),datetime:Rr(((Tr,Ur)=>{const Rr=new Intl.DateTimeFormat(Tr,{...Ur});return Tr=>Rr.format(Tr)})),relativetime:Rr(((Tr,Ur)=>{const Rr=new Intl.RelativeTimeFormat(Tr,{...Ur});return Tr=>Rr.format(Tr,Ur.range||"day")})),list:Rr(((Tr,Ur)=>{const Rr=new Intl.ListFormat(Tr,{...Ur});return Tr=>Rr.format(Tr)}))}}add(Tr,Ur){this.formats[Tr.toLowerCase().trim()]=Ur}addCached(Tr,Ur){this.formats[Tr.toLowerCase().trim()]=createCachedFormatter(Ur)}format(Tr,Ur,Rr){let Qr=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const Vr=Ur.split(this.formatSeparator);if(Vr.length>1&&Vr[0].indexOf("(")>1&&Vr[0].indexOf(")")<0&&Vr.find((Tr=>Tr.indexOf(")")>-1))){const Tr=Vr.findIndex((Tr=>Tr.indexOf(")")>-1));Vr[0]=[Vr[0],...Vr.splice(1,Tr)].join(this.formatSeparator)}const Gr=Vr.reduce(((Tr,Ur)=>{const{formatName:Vr,formatOptions:Gr}=(Tr=>{let Ur=Tr.toLowerCase().trim();const Rr={};if(Tr.indexOf("(")>-1){const Qr=Tr.split("(");Ur=Qr[0].toLowerCase().trim();const Vr=Qr[1].substring(0,Qr[1].length-1);"currency"===Ur&&Vr.indexOf(":")<0?Rr.currency||(Rr.currency=Vr.trim()):"relativetime"===Ur&&Vr.indexOf(":")<0?Rr.range||(Rr.range=Vr.trim()):Vr.split(";").forEach((Tr=>{if(Tr){const[Ur,...Qr]=Tr.split(":"),Vr=Qr.join(":").trim().replace(/^'+|'+$/g,""),Gr=Ur.trim();Rr[Gr]||(Rr[Gr]=Vr),"false"===Vr&&(Rr[Gr]=!1),"true"===Vr&&(Rr[Gr]=!0),isNaN(Vr)||(Rr[Gr]=parseInt(Vr,10))}}))}return{formatName:Ur,formatOptions:Rr}})(Ur);if(this.formats[Vr]){let Ur=Tr;try{const Dr=Qr?.formatParams?.[Qr.interpolationkey]||{},Hr=Dr.locale||Dr.lng||Qr.locale||Qr.lng||Rr;Ur=this.formats[Vr](Tr,Hr,{...Gr,...Qr,...Dr})}catch(Tr){this.logger.warn(Tr)}return Ur}return this.logger.warn(`there was no format function for ${Vr}`),Tr}),Tr);return Gr}}class Connector extends EventEmitter{constructor(Tr,Ur,Rr){let Qr=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};super(),this.backend=Tr,this.store=Ur,this.services=Rr,this.languageUtils=Rr.languageUtils,this.options=Qr,this.logger=Gr.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=Qr.maxParallelReads||10,this.readingCalls=0,this.maxRetries=Qr.maxRetries>=0?Qr.maxRetries:5,this.retryTimeout=Qr.retryTimeout>=1?Qr.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(Rr,Qr.backend,Qr)}queueLoad(Tr,Ur,Rr,Qr){const Vr={},Gr={},Dr={},Hr={};return Tr.forEach((Tr=>{let Qr=!0;Ur.forEach((Ur=>{const Dr=`${Tr}|${Ur}`;!Rr.reload&&this.store.hasResourceBundle(Tr,Ur)?this.state[Dr]=2:this.state[Dr]<0||(1===this.state[Dr]?void 0===Gr[Dr]&&(Gr[Dr]=!0):(this.state[Dr]=1,Qr=!1,void 0===Gr[Dr]&&(Gr[Dr]=!0),void 0===Vr[Dr]&&(Vr[Dr]=!0),void 0===Hr[Ur]&&(Hr[Ur]=!0)))})),Qr||(Dr[Tr]=!0)})),(Object.keys(Vr).length||Object.keys(Gr).length)&&this.queue.push({pending:Gr,pendingCount:Object.keys(Gr).length,loaded:{},errors:[],callback:Qr}),{toLoad:Object.keys(Vr),pending:Object.keys(Gr),toLoadLanguages:Object.keys(Dr),toLoadNamespaces:Object.keys(Hr)}}loaded(Tr,Ur,Rr){const Qr=Tr.split("|"),Vr=Qr[0],Gr=Qr[1];Ur&&this.emit("failedLoading",Vr,Gr,Ur),!Ur&&Rr&&this.store.addResourceBundle(Vr,Gr,Rr,void 0,void 0,{skipCopy:!0}),this.state[Tr]=Ur?-1:2,Ur&&Rr&&(this.state[Tr]=0);const Dr={};this.queue.forEach((Rr=>{((Tr,Ur,Rr)=>{const{obj:Qr,k:Vr}=getLastOfPath(Tr,Ur,Object);Qr[Vr]=Qr[Vr]||[],Qr[Vr].push(Rr)})(Rr.loaded,[Vr],Gr),((Tr,Ur)=>{void 0!==Tr.pending[Ur]&&(delete Tr.pending[Ur],Tr.pendingCount--)})(Rr,Tr),Ur&&Rr.errors.push(Ur),0!==Rr.pendingCount||Rr.done||(Object.keys(Rr.loaded).forEach((Tr=>{Dr[Tr]||(Dr[Tr]={});const Ur=Rr.loaded[Tr];Ur.length&&Ur.forEach((Ur=>{void 0===Dr[Tr][Ur]&&(Dr[Tr][Ur]=!0)}))})),Rr.done=!0,Rr.errors.length?Rr.callback(Rr.errors):Rr.callback())})),this.emit("loaded",Dr),this.queue=this.queue.filter((Tr=>!Tr.done))}read(Tr,Ur,Rr){let Qr=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,Vr=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this.retryTimeout,Gr=arguments.length>5?arguments[5]:void 0;if(!Tr.length)return Gr(null,{});if(this.readingCalls>=this.maxParallelReads)return void this.waitingReads.push({lng:Tr,ns:Ur,fcName:Rr,tried:Qr,wait:Vr,callback:Gr});this.readingCalls++;const resolver=(Dr,Hr)=>{if(this.readingCalls--,this.waitingReads.length>0){const Tr=this.waitingReads.shift();this.read(Tr.lng,Tr.ns,Tr.fcName,Tr.tried,Tr.wait,Tr.callback)}Dr&&Hr&&Qr<this.maxRetries?setTimeout((()=>{this.read.call(this,Tr,Ur,Rr,Qr+1,2*Vr,Gr)}),Vr):Gr(Dr,Hr)},Dr=this.backend[Rr].bind(this.backend);if(2!==Dr.length)return Dr(Tr,Ur,resolver);try{const Rr=Dr(Tr,Ur);Rr&&"function"==typeof Rr.then?Rr.then((Tr=>resolver(null,Tr))).catch(resolver):resolver(null,Rr)}catch(Tr){resolver(Tr)}}prepareLoading(Tr,Ur){let Rr=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},Qr=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),Qr&&Qr();isString(Tr)&&(Tr=this.languageUtils.toResolveHierarchy(Tr)),isString(Ur)&&(Ur=[Ur]);const Vr=this.queueLoad(Tr,Ur,Rr,Qr);if(!Vr.toLoad.length)return Vr.pending.length||Qr(),null;Vr.toLoad.forEach((Tr=>{this.loadOne(Tr)}))}load(Tr,Ur,Rr){this.prepareLoading(Tr,Ur,{},Rr)}reload(Tr,Ur,Rr){this.prepareLoading(Tr,Ur,{reload:!0},Rr)}loadOne(Tr){let Ur=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const Rr=Tr.split("|"),Qr=Rr[0],Vr=Rr[1];this.read(Qr,Vr,"read",void 0,void 0,((Rr,Gr)=>{Rr&&this.logger.warn(`${Ur}loading namespace ${Vr} for language ${Qr} failed`,Rr),!Rr&&Gr&&this.logger.log(`${Ur}loaded namespace ${Vr} for language ${Qr}`,Gr),this.loaded(Tr,Rr,Gr)}))}saveMissing(Tr,Ur,Rr,Qr,Vr){let Gr=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},Dr=arguments.length>6&&void 0!==arguments[6]?arguments[6]:()=>{};if(!this.services?.utils?.hasLoadedNamespace||this.services?.utils?.hasLoadedNamespace(Ur)){if(null!=Rr&&""!==Rr){if(this.backend?.create){const Hr={...Gr,isUpdate:Vr},zr=this.backend.create.bind(this.backend);if(zr.length<6)try{let Vr;Vr=5===zr.length?zr(Tr,Ur,Rr,Qr,Hr):zr(Tr,Ur,Rr,Qr),Vr&&"function"==typeof Vr.then?Vr.then((Tr=>Dr(null,Tr))).catch(Dr):Dr(null,Vr)}catch(Tr){Dr(Tr)}else zr(Tr,Ur,Rr,Qr,Dr,Hr)}Tr&&Tr[0]&&this.store.addResource(Tr[0],Ur,Rr,Qr)}}else this.logger.warn(`did not save key "${Rr}" as the namespace "${Ur}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")}}const get=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:Tr=>{let Ur={};if("object"==typeof Tr[1]&&(Ur=Tr[1]),isString(Tr[1])&&(Ur.defaultValue=Tr[1]),isString(Tr[2])&&(Ur.tDescription=Tr[2]),"object"==typeof Tr[2]||"object"==typeof Tr[3]){const Rr=Tr[3]||Tr[2];Object.keys(Rr).forEach((Tr=>{Ur[Tr]=Rr[Tr]}))}return Ur},interpolation:{escapeValue:!0,format:Tr=>Tr,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),transformOptions=Tr=>(isString(Tr.ns)&&(Tr.ns=[Tr.ns]),isString(Tr.fallbackLng)&&(Tr.fallbackLng=[Tr.fallbackLng]),isString(Tr.fallbackNS)&&(Tr.fallbackNS=[Tr.fallbackNS]),Tr.supportedLngs?.indexOf?.("cimode")<0&&(Tr.supportedLngs=Tr.supportedLngs.concat(["cimode"])),"boolean"==typeof Tr.initImmediate&&(Tr.initAsync=Tr.initImmediate),Tr),noop$1=()=>{};class I18n extends EventEmitter{constructor(){let Tr=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},Ur=arguments.length>1?arguments[1]:void 0;var Rr;if(super(),this.options=transformOptions(Tr),this.services={},this.logger=Gr,this.modules={external:[]},Rr=this,Object.getOwnPropertyNames(Object.getPrototypeOf(Rr)).forEach((Tr=>{"function"==typeof Rr[Tr]&&(Rr[Tr]=Rr[Tr].bind(Rr))})),Ur&&!this.isInitialized&&!Tr.isClone){if(!this.options.initAsync)return this.init(Tr,Ur),this;setTimeout((()=>{this.init(Tr,Ur)}),0)}}init(){var Tr=this;let Ur=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},Rr=arguments.length>1?arguments[1]:void 0;this.isInitializing=!0,"function"==typeof Ur&&(Rr=Ur,Ur={}),null==Ur.defaultNS&&Ur.ns&&(isString(Ur.ns)?Ur.defaultNS=Ur.ns:Ur.ns.indexOf("translation")<0&&(Ur.defaultNS=Ur.ns[0]));const Qr=get();this.options={...Qr,...this.options,...transformOptions(Ur)},this.options.interpolation={...Qr.interpolation,...this.options.interpolation},void 0!==Ur.keySeparator&&(this.options.userDefinedKeySeparator=Ur.keySeparator),void 0!==Ur.nsSeparator&&(this.options.userDefinedNsSeparator=Ur.nsSeparator);const createClassOnDemand=Tr=>Tr?"function"==typeof Tr?new Tr:Tr:null;if(!this.options.isClone){let Ur;this.modules.logger?Gr.init(createClassOnDemand(this.modules.logger),this.options):Gr.init(null,this.options),Ur=this.modules.formatter?this.modules.formatter:Formatter;const Rr=new LanguageUtil(this.options);this.store=new ResourceStore(this.options.resources,this.options);const Vr=this.services;Vr.logger=Gr,Vr.resourceStore=this.store,Vr.languageUtils=Rr,Vr.pluralResolver=new PluralResolver(Rr,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),!Ur||this.options.interpolation.format&&this.options.interpolation.format!==Qr.interpolation.format||(Vr.formatter=createClassOnDemand(Ur),Vr.formatter.init(Vr,this.options),this.options.interpolation.format=Vr.formatter.format.bind(Vr.formatter)),Vr.interpolator=new Interpolator(this.options),Vr.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},Vr.backendConnector=new Connector(createClassOnDemand(this.modules.backend),Vr.resourceStore,Vr,this.options),Vr.backendConnector.on("*",(function(Ur){for(var Rr=arguments.length,Qr=new Array(Rr>1?Rr-1:0),Vr=1;Vr<Rr;Vr++)Qr[Vr-1]=arguments[Vr];Tr.emit(Ur,...Qr)})),this.modules.languageDetector&&(Vr.languageDetector=createClassOnDemand(this.modules.languageDetector),Vr.languageDetector.init&&Vr.languageDetector.init(Vr,this.options.detection,this.options)),this.modules.i18nFormat&&(Vr.i18nFormat=createClassOnDemand(this.modules.i18nFormat),Vr.i18nFormat.init&&Vr.i18nFormat.init(this)),this.translator=new Translator(this.services,this.options),this.translator.on("*",(function(Ur){for(var Rr=arguments.length,Qr=new Array(Rr>1?Rr-1:0),Vr=1;Vr<Rr;Vr++)Qr[Vr-1]=arguments[Vr];Tr.emit(Ur,...Qr)})),this.modules.external.forEach((Tr=>{Tr.init&&Tr.init(this)}))}if(this.format=this.options.interpolation.format,Rr||(Rr=noop$1),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const Tr=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);Tr.length>0&&"dev"!==Tr[0]&&(this.options.lng=Tr[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined");["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach((Ur=>{this[Ur]=function(){return Tr.store[Ur](...arguments)}}));["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach((Ur=>{this[Ur]=function(){return Tr.store[Ur](...arguments),Tr}}));const Vr=defer(),load=()=>{const finish=(Tr,Ur)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),Vr.resolve(Ur),Rr(Tr,Ur)};if(this.languages&&!this.isInitialized)return finish(null,this.t.bind(this));this.changeLanguage(this.options.lng,finish)};return this.options.resources||!this.options.initAsync?load():setTimeout(load,0),Vr}loadResources(Tr){let Ur=arguments.length>1&&void 0!==arguments[1]?arguments[1]:noop$1;const Rr=isString(Tr)?Tr:this.language;if("function"==typeof Tr&&(Ur=Tr),!this.options.resources||this.options.partialBundledLanguages){if("cimode"===Rr?.toLowerCase()&&(!this.options.preload||0===this.options.preload.length))return Ur();const Tr=[],append=Ur=>{if(!Ur)return;if("cimode"===Ur)return;this.services.languageUtils.toResolveHierarchy(Ur).forEach((Ur=>{"cimode"!==Ur&&Tr.indexOf(Ur)<0&&Tr.push(Ur)}))};if(Rr)append(Rr);else{this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach((Tr=>append(Tr)))}this.options.preload?.forEach?.((Tr=>append(Tr))),this.services.backendConnector.load(Tr,this.options.ns,(Tr=>{Tr||this.resolvedLanguage||!this.language||this.setResolvedLanguage(this.language),Ur(Tr)}))}else Ur(null)}reloadResources(Tr,Ur,Rr){const Qr=defer();return"function"==typeof Tr&&(Rr=Tr,Tr=void 0),"function"==typeof Ur&&(Rr=Ur,Ur=void 0),Tr||(Tr=this.languages),Ur||(Ur=this.options.ns),Rr||(Rr=noop$1),this.services.backendConnector.reload(Tr,Ur,(Tr=>{Qr.resolve(),Rr(Tr)})),Qr}use(Tr){if(!Tr)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!Tr.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===Tr.type&&(this.modules.backend=Tr),("logger"===Tr.type||Tr.log&&Tr.warn&&Tr.error)&&(this.modules.logger=Tr),"languageDetector"===Tr.type&&(this.modules.languageDetector=Tr),"i18nFormat"===Tr.type&&(this.modules.i18nFormat=Tr),"postProcessor"===Tr.type&&Dr.addPostProcessor(Tr),"formatter"===Tr.type&&(this.modules.formatter=Tr),"3rdParty"===Tr.type&&this.modules.external.push(Tr),this}setResolvedLanguage(Tr){if(Tr&&this.languages&&!(["cimode","dev"].indexOf(Tr)>-1)){for(let Tr=0;Tr<this.languages.length;Tr++){const Ur=this.languages[Tr];if(!(["cimode","dev"].indexOf(Ur)>-1)&&this.store.hasLanguageSomeTranslations(Ur)){this.resolvedLanguage=Ur;break}}!this.resolvedLanguage&&this.languages.indexOf(Tr)<0&&this.store.hasLanguageSomeTranslations(Tr)&&(this.resolvedLanguage=Tr,this.languages.unshift(Tr))}}changeLanguage(Tr,Ur){var Rr=this;this.isLanguageChangingTo=Tr;const Qr=defer();this.emit("languageChanging",Tr);const setLngProps=Tr=>{this.language=Tr,this.languages=this.services.languageUtils.toResolveHierarchy(Tr),this.resolvedLanguage=void 0,this.setResolvedLanguage(Tr)},done=(Vr,Gr)=>{Gr?this.isLanguageChangingTo===Tr&&(setLngProps(Gr),this.translator.changeLanguage(Gr),this.isLanguageChangingTo=void 0,this.emit("languageChanged",Gr),this.logger.log("languageChanged",Gr)):this.isLanguageChangingTo=void 0,Qr.resolve((function(){return Rr.t(...arguments)})),Ur&&Ur(Vr,(function(){return Rr.t(...arguments)}))},setLng=Ur=>{Tr||Ur||!this.services.languageDetector||(Ur=[]);const Rr=isString(Ur)?Ur:Ur&&Ur[0],Qr=this.store.hasLanguageSomeTranslations(Rr)?Rr:this.services.languageUtils.getBestMatchFromCodes(isString(Ur)?[Ur]:Ur);Qr&&(this.language||setLngProps(Qr),this.translator.language||this.translator.changeLanguage(Qr),this.services.languageDetector?.cacheUserLanguage?.(Qr)),this.loadResources(Qr,(Tr=>{done(Tr,Qr)}))};return Tr||!this.services.languageDetector||this.services.languageDetector.async?!Tr&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(setLng):this.services.languageDetector.detect(setLng):setLng(Tr):setLng(this.services.languageDetector.detect()),Qr}getFixedT(Tr,Ur,Rr){var Qr=this;const fixedT=function(Tr,Ur){let Vr;if("object"!=typeof Ur){for(var Gr=arguments.length,Dr=new Array(Gr>2?Gr-2:0),Hr=2;Hr<Gr;Hr++)Dr[Hr-2]=arguments[Hr];Vr=Qr.options.overloadTranslationOptionHandler([Tr,Ur].concat(Dr))}else Vr={...Ur};Vr.lng=Vr.lng||fixedT.lng,Vr.lngs=Vr.lngs||fixedT.lngs,Vr.ns=Vr.ns||fixedT.ns,""!==Vr.keyPrefix&&(Vr.keyPrefix=Vr.keyPrefix||Rr||fixedT.keyPrefix);const zr=Qr.options.keySeparator||".";let Kr;return Kr=Vr.keyPrefix&&Array.isArray(Tr)?Tr.map((Tr=>`${Vr.keyPrefix}${zr}${Tr}`)):Vr.keyPrefix?`${Vr.keyPrefix}${zr}${Tr}`:Tr,Qr.t(Kr,Vr)};return isString(Tr)?fixedT.lng=Tr:fixedT.lngs=Tr,fixedT.ns=Ur,fixedT.keyPrefix=Rr,fixedT}t(){for(var Tr=arguments.length,Ur=new Array(Tr),Rr=0;Rr<Tr;Rr++)Ur[Rr]=arguments[Rr];return this.translator?.translate(...Ur)}exists(){for(var Tr=arguments.length,Ur=new Array(Tr),Rr=0;Rr<Tr;Rr++)Ur[Rr]=arguments[Rr];return this.translator?.exists(...Ur)}setDefaultNamespace(Tr){this.options.defaultNS=Tr}hasLoadedNamespace(Tr){let Ur=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const Rr=Ur.lng||this.resolvedLanguage||this.languages[0],Qr=!!this.options&&this.options.fallbackLng,Vr=this.languages[this.languages.length-1];if("cimode"===Rr.toLowerCase())return!0;const loadNotPending=(Tr,Ur)=>{const Rr=this.services.backendConnector.state[`${Tr}|${Ur}`];return-1===Rr||0===Rr||2===Rr};if(Ur.precheck){const Tr=Ur.precheck(this,loadNotPending);if(void 0!==Tr)return Tr}return!!this.hasResourceBundle(Rr,Tr)||(!(this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages))||!(!loadNotPending(Rr,Tr)||Qr&&!loadNotPending(Vr,Tr)))}loadNamespaces(Tr,Ur){const Rr=defer();return this.options.ns?(isString(Tr)&&(Tr=[Tr]),Tr.forEach((Tr=>{this.options.ns.indexOf(Tr)<0&&this.options.ns.push(Tr)})),this.loadResources((Tr=>{Rr.resolve(),Ur&&Ur(Tr)})),Rr):(Ur&&Ur(),Promise.resolve())}loadLanguages(Tr,Ur){const Rr=defer();isString(Tr)&&(Tr=[Tr]);const Qr=this.options.preload||[],Vr=Tr.filter((Tr=>Qr.indexOf(Tr)<0&&this.services.languageUtils.isSupportedCode(Tr)));return Vr.length?(this.options.preload=Qr.concat(Vr),this.loadResources((Tr=>{Rr.resolve(),Ur&&Ur(Tr)})),Rr):(Ur&&Ur(),Promise.resolve())}dir(Tr){if(Tr||(Tr=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!Tr)return"rtl";const Ur=this.services?.languageUtils||new LanguageUtil(get());return["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(Ur.getLanguagePartFromCode(Tr))>-1||Tr.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){return new I18n(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}cloneInstance(){let Tr=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},Ur=arguments.length>1&&void 0!==arguments[1]?arguments[1]:noop$1;const Rr=Tr.forkResourceStore;Rr&&delete Tr.forkResourceStore;const Qr={...this.options,...Tr,isClone:!0},Vr=new I18n(Qr);void 0===Tr.debug&&void 0===Tr.prefix||(Vr.logger=Vr.logger.clone(Tr));if(["store","services","language"].forEach((Tr=>{Vr[Tr]=this[Tr]})),Vr.services={...this.services},Vr.services.utils={hasLoadedNamespace:Vr.hasLoadedNamespace.bind(Vr)},Rr){const Tr=Object.keys(this.store.data).reduce(((Tr,Ur)=>(Tr[Ur]={...this.store.data[Ur]},Tr[Ur]=Object.keys(Tr[Ur]).reduce(((Rr,Qr)=>(Rr[Qr]={...Tr[Ur][Qr]},Rr)),Tr[Ur]),Tr)),{});Vr.store=new ResourceStore(Tr,Qr),Vr.services.resourceStore=Vr.store}return Vr.translator=new Translator(Vr.services,Qr),Vr.translator.on("*",(function(Tr){for(var Ur=arguments.length,Rr=new Array(Ur>1?Ur-1:0),Qr=1;Qr<Ur;Qr++)Rr[Qr-1]=arguments[Qr];Vr.emit(Tr,...Rr)})),Vr.init(Qr,Ur),Vr.translator.options=Qr,Vr.translator.backendConnector.services.utils={hasLoadedNamespace:Vr.hasLoadedNamespace.bind(Vr)},Vr}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const $r=I18n.createInstance();let Wr;$r.createInstance=I18n.createInstance,$r.createInstance,$r.dir,$r.init,$r.loadResources,$r.reloadResources,$r.use,$r.changeLanguage,$r.getFixedT,$r.t,$r.exists,$r.setDefaultNamespace,$r.hasLoadedNamespace,$r.loadNamespaces,$r.loadLanguages;const putLocale=async function(Tr,Ur){Tr?Wr=Tr:navigator.userLanguage?Wr=navigator.userLanguage:navigator.language&&(Wr=navigator.language),Ur.includes(Wr)||"test"===Wr||(Wr="en");const Rr=await function __variableDynamicImportRuntime0__(Tr){switch(Tr){case"./locale/lang.af.js":return Promise.resolve().then((function(){return hy}));case"./locale/lang.ar.js":return Promise.resolve().then