web-internationalization 2.0.27 → 2.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +1 -1
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";if("undefined"!=typeof module&&null!==module&&"undefined"!==eval("typeof require")&&null!==eval("require")&&"main"in eval("require")&&"undefined"!==eval("typeof require.main")&&null!==eval("require.main")){var ORIGINAL_MAIN_MODULE=module;module!==eval("require.main")&&"paths"in module&&"paths"in eval("require.main")&&"undefined"!=typeof __dirname&&null!==__dirname&&(module.paths=eval("require.main.paths").concat(module.paths.filter((function(path){return eval("require.main.paths").includes(path)}))))}if(null==window)var window="undefined"==typeof global||null===global?{}:global;!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@babel/runtime/helpers/initializerDefineProperty"),require("@babel/runtime/helpers/applyDecoratedDescriptor"),require("@babel/runtime/helpers/initializerWarningHelper"),require("clientnode"),require("clientnode/property-types"),require("web-component-wrapper/decorator"),require("web-component-wrapper/Web"));else if("function"==typeof define&&define.amd)define(["@babel/runtime/helpers/initializerDefineProperty","@babel/runtime/helpers/applyDecoratedDescriptor","@babel/runtime/helpers/initializerWarningHelper","clientnode","clientnode/property-types","web-component-wrapper/decorator","web-component-wrapper/Web"],t);else{var n="object"==typeof exports?t(require("@babel/runtime/helpers/initializerDefineProperty"),require("@babel/runtime/helpers/applyDecoratedDescriptor"),require("@babel/runtime/helpers/initializerWarningHelper"),require("clientnode"),require("clientnode/property-types"),require("web-component-wrapper/decorator"),require("web-component-wrapper/Web")):t(e["@babel/runtime/helpers/initializerDefineProperty"],e["@babel/runtime/helpers/applyDecoratedDescriptor"],e["@babel/runtime/helpers/initializerWarningHelper"],e.clientnode,e["clientnode/property-types"],e["web-component-wrapper/decorator"],e["web-component-wrapper/Web"]);for(var o in n)("object"==typeof exports?exports:e)[o]=n[o]}}(this,((e,t,n,o,i,s,a)=>(()=>{var r=[,t=>{t.exports=e},e=>{e.exports=t},e=>{e.exports=n},e=>{e.exports=o},e=>{e.exports=i},e=>{e.exports=s},e=>{e.exports=a}],l={};function p(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={exports:{}};return r[e](n,n.exports,p),n.exports}p.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return p.d(t,{a:t}),t},p.d=(e,t)=>{for(var n in t)p.o(t,n)&&!p.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},p.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),p.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var c={};p.r(c),p.d(c,{WebInternationalization:()=>k,api:()=>q,default:()=>I,log:()=>E});var u,h,d,g,m,f,w,b,N,x,T,y,L=p(1),_=p.n(L),D=p(2),C=p.n(D),v=(p(3),p(4)),P=p(5),O=p(6),S=p(7);const E=new v.Logger({name:"web-internationalization"});let k=(u=(0,O.property)({type:P.object}),h=(0,O.property)({type:P.func}),d=(0,O.property)({type:P.func}),g=(0,O.property)({type:P.func}),m=(0,O.property)({type:P.func}),y=class e extends S.Web{constructor(){super(),this.self=e,_()(this,"options",w,this),_()(this,"onEnsure",b,this),_()(this,"onSwitch",N,this),_()(this,"onEnsured",x,this),_()(this,"onSwitched",T,this),this.switchLanguageButtonDomNodes=null,this.currentLanguage="enUS",this.knownTranslations={},this.lock=new v.Lock,this._domNodesToFade=[],this._replacements=[],this._textNodesWithKnownTranslation={},this.defineGetterAndSetterInterface()}async onUpdateAttribute(e,t){await super.onUpdateAttribute(e,t),"options"===e&&this._extendOptions()}async render(e="unknown",t=!0){await super.render(e,!1),0===Object.keys(this.options).length&&this._extendOptions(),this.options.preReplacementLanguagePattern=(0,v.format)(this.options.preReplacementLanguagePattern,this.options.replacementLanguagePattern.substring(1,this.options.replacementLanguagePattern.length-1)),this.options.lockDescription=(0,v.format)(this.options.lockDescription,this.self._name),this.options.sessionDescription=(0,v.format)(this.options.sessionDescription,this.self._name),await this.waitForNestedComponentRendering(),this.switchLanguageButtonDomNodes=this.hostDomNode.querySelectorAll(`a[href^="#${this.options.languageHashPrefix}"]`),this._movePreReplacementNodes(),this.currentLanguage=this._normalizeLanguage(this.options.default);const n=this._determineUsefulLanguage(),o=0===this.options.selection.length;for(const e of this.switchLanguageButtonDomNodes){o&&this.options.selection.push(e.getAttribute("href").substring(`#${this.options.languageHashPrefix}`.length));const t=e=>{e.preventDefault();const t=e.target?.getAttribute("href");t&&this.switch(t.substring(this.options.languageHashPrefix.length+1))};this.addSecureEventListener(e,"click",t)}this.currentLanguage===n?this._switchCurrentLanguageIndicator(n):await this.switch(n,!0),await this.resolveRenderingPromiseIfSet(e,t)}async switch(e,t=!1){if(!0===e||!this.options.selection.length||this.options.selection.includes(e)){if(await this.lock.acquire(this.options.lockDescription),!0===e?(t=!0,e=this.currentLanguage):e=this._normalizeLanguage(e),t&&e!==this.options.default||this.currentLanguage!==e){let n="Switch to";return t&&(n="Ensure"),E.debug(`${n} "${e}".`),this._switchCurrentLanguageIndicator(e),t?await this.onEnsure(this.currentLanguage):await this.onSwitch(this.currentLanguage,e),this._domNodesToFade=[],this._replacements=[],this._collectTextNodesToReplace(e,t),void await this._handleSwitchEffect(e,t)}t&&await this.onEnsure(this.currentLanguage),E.debug(`"${e}" is already current selected language.`),this.lock.release(this.options.lockDescription)}else E.debug(`"${e}" isn't one of the allowed languages.`)}refresh(){return this._movePreReplacementNodes(),this.switch(!0)}_extendOptions(){this.setPropertyValue("options",(0,v.extend)(!0,{},this.self._defaultOptions,this.options))}async _handleSwitchEffect(e,t){const n=this.currentLanguage;if(!t&&this.options.useEffect&&this._domNodesToFade.length>0)return await Promise.all(this._domNodesToFade.map((e=>(0,v.fadeOut)(e)))),this._switchLanguage(e),await Promise.all(this._domNodesToFade.map((e=>(0,v.fadeIn)(e)))),this.onSwitched(n,e),void this.lock.release(this.options.lockDescription);this._switchLanguage(e),t?this.onEnsured(e):this.onSwitched(n,e),this.lock.release(this.options.lockDescription)}_movePreReplacementNodes(){for(const e of(0,v.getAll)(this.hostDomNode)){const t=e.nodeName.toLowerCase();if(this.options.replacementDomNodeNames.includes(t)){["#comment","#text"].includes(t)||e.classList.add(this.options.selectors.hideClassName);const n=new RegExp(this.options.preReplacementLanguagePattern),o=e.textContent?.match(n);if(e.textContent&&o&&o[0]&&(e.textContent=e.textContent.replace(n,o[1]),e.parentElement)){let t=!1;for(const n of(0,v.getAll)(e.parentElement)){if(t&&(0,v.getText)(n,!0).length>0){n.appendChild(e);break}e===n&&(t=!0)}}}}}_collectTextNodesToReplace(e,t){let n=null,o=null;this.knownTranslations={};for(const i of(0,v.getAll)(this.hostDomNode)){const s=i.nodeName.toLowerCase();if((0!==(0,v.getText)(i,!0).length||i.nodeType===Node.COMMENT_NODE&&""!==(i.nodeValue||"").trim())&&!n?.contains(i)&&!(0,v.closest)(i,this.options.replaceDomNodeNames.concat(this.options.replacementDomNodeNames).join(",")))if(this.options.replaceDomNodeNames.includes(s))n=i;else if(n){if(this.options.replacementDomNodeNames.includes(s)){const a="#comment"===s?i.textContent:i.innerHTML,r=a?.match(new RegExp(this.options.replacementLanguagePattern));Array.isArray(r)&&r[1]===e?(this.knownTranslations[(0,v.getText)(n,!0).join(" ")]=r[2].trim(),o=this._ensureLastTextNodeHavingLanguageIndicator(n,o,t),this._registerTextNodeToChange(n,i,r,o),n=null,o=null):i.textContent?.match(new RegExp(this.options.currentLanguagePattern))&&(o=i);continue}n=null,o=null}}this._registerKnownTextNodes()}_registerKnownTextNodes(){this._textNodesWithKnownTranslation={};for(const e of this.hostDomNode.querySelectorAll(this.options.selectors.knownTranslation))for(const t of(0,v.getAll)(e)){const e=(0,v.getText)(t).join(" ");e&&!this.options.replaceDomNodeNames.includes(t.nodeName.toLowerCase())&&!(0,v.closest)(t,this.options.replaceDomNodeNames.join(","))&&Object.prototype.hasOwnProperty.call(this.knownTranslations,e)&&(this._domNodesToFade.push(t.parentElement),Object.prototype.hasOwnProperty.call(this._textNodesWithKnownTranslation,this.knownTranslations[e])?this._textNodesWithKnownTranslation[this.knownTranslations[e]].push(t):this._textNodesWithKnownTranslation[this.knownTranslations[e]]=[t])}}_normalizeLanguage(e){for(const[t,n]of Object.entries(this.options.languageMapping))if(n.includes(t.toLowerCase())||n.push(t.toLowerCase()),n.includes(e.toLowerCase()))return t;return this.options.default}_determineUsefulLanguage(){let e;return this.options.initial?e=this.options.initial:Object.prototype.hasOwnProperty.call(v.globalContext,"window")&&(v.globalContext.window?.localStorage.getItem(this.options.sessionDescription)?(e=v.globalContext.window.localStorage.getItem(this.options.sessionDescription),E.debug(`Determine "${e}", because of local storage`,"information.")):v.globalContext.window?.navigator.language&&(e=v.globalContext.window.navigator.language,E.debug(`Determine "${e}", because of browser settings.`))),e||(e=this.options.default,E.debug(`Determine "${e}", because of default option.`)),e=this._normalizeLanguage(e),this.options.selection.length&&!this.options.selection.includes(e)&&(E.debug(`"${e}" isn't one of the allowed languages. Set`,`language to "${this.options.selection[0]}".`),e=this.options.selection[0]),v.globalContext.window?.localStorage&&v.globalContext.window.localStorage.setItem(this.options.sessionDescription,e),e}_registerTextNodeToChange(e,t,n,o){this._domNodesToFade.push(e.parentElement),t&&this._replacements.push({textNodeToTranslate:e,nodeToReplaceWith:t,textToReplaceWith:n[2],currentLanguageDomNode:o})}_ensureLastTextNodeHavingLanguageIndicator(e,t,n){if(e&&!t){let o=this.currentLanguage;n&&(o=this.options.default||this.currentLanguage),(t=v.globalContext.document?.createComment(o)||null)&&e.after(t)}return t}_switchLanguage(e){for(const t of this._replacements){const n="innerHTML"in t.textNodeToTranslate?t.textNodeToTranslate.innerHTML:t.textNodeToTranslate.textContent,o=n.trim();if(!this.options.templateDelimiter||!o.endsWith(this.options.templateDelimiter.post)&&this.options.templateDelimiter.post){let o=t.currentLanguageDomNode;if(!o){o=document.body;let e=!1;for(const n of(0,v.getAll)(t.textNodeToTranslate.parentElement)){if(e){t.currentLanguageDomNode=o=n;break}n===t.textNodeToTranslate&&(e=!0)}}const i=o.textContent;i&&e===i&&E.warn(`Text node "${t.textToReplaceWith}" is`,`marked as "${i}" and has same`,"translation language as it already is.");const s=t.nodeToReplaceWith.nodeName.toLowerCase();if("#comment"===s)t.textNodeToTranslate.after(v.globalContext.document.createComment(`${i}:${n}`));else{const e=v.globalContext.document.createElement(s);e.innerHTML=`${i}:${n}`,e.classList.add(this.options.selectors.hideClassName),t.textNodeToTranslate.after(e)}t.textNodeToTranslate.after(v.globalContext.document.createComment(e)),"innerHTML"in t.textNodeToTranslate?t.textNodeToTranslate.innerHTML=t.textToReplaceWith:t.textNodeToTranslate.textContent=t.textToReplaceWith,o.remove(),t.nodeToReplaceWith.remove()}}for(const[e,t]of Object.entries(this._textNodesWithKnownTranslation))for(const n of t)n.textContent=e;v.globalContext.localStorage&&v.globalContext.localStorage.setItem(this.options.sessionDescription,e),this.currentLanguage=e}_switchCurrentLanguageIndicator(e){for(const e of this.hostDomNode.querySelectorAll(`a[href="#${this.options.languageHashPrefix}${this.currentLanguage}"].`+this.options.currentLanguageIndicatorClassName))e.classList.remove(this.options.currentLanguageIndicatorClassName);for(const t of this.hostDomNode.querySelectorAll(`a[href="#${this.options.languageHashPrefix}${e}"]`))t.classList.add(this.options.currentLanguageIndicatorClassName)}},y._name="WebInternationalization",y._defaultOptions={currentLanguageIndicatorClassName:"current",currentLanguagePattern:"^[a-z]{2}[A-Z]{2}$",default:"enUS",useEffect:!0,initial:null,languageHashPrefix:"lang-",languageMapping:{deDE:["de","de_de","de-de","german","deutsch"],enUS:["en","en_us","en-us"],enEN:["en_en","en-en","english"],frFR:["fr","fr_fr","fr-fr","french"]},lockDescription:"{1}Switch",preReplacementLanguagePattern:"^\\|({1})$",replaceDomNodeNames:["#text","lang-replace"],replacementDomNodeNames:["#comment","lang-replacement"],replacementLanguagePattern:"^([a-z]{2}[A-Z]{2}):((.|\\s)*)$",selection:[],selectors:{knownTranslation:".web-internationalization-generated-content",hideClassName:"wi-hide"},sessionDescription:"{1}",templateDelimiter:{pre:"{{",post:"}}"}},f=y,w=C()(f.prototype,"options",[u],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return{}}}),b=C()(f.prototype,"onEnsure",[h],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return v.NOOP}}),N=C()(f.prototype,"onSwitch",[d],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return v.NOOP}}),x=C()(f.prototype,"onEnsured",[g],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return v.NOOP}}),T=C()(f.prototype,"onSwitched",[m],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return v.NOOP}}),f);const q={component:k,register:(e=(0,v.camelCaseToDelimited)(k._name))=>{customElements.define(e,k)}},I=k;return v.globalContext.AUTO_DEFINE_WEB_INTERNATIONALIZATION&&q.register(),c})()));
1
+ "use strict";if("undefined"!=typeof module&&null!==module&&"undefined"!==eval("typeof require")&&null!==eval("require")&&"main"in eval("require")&&"undefined"!==eval("typeof require.main")&&null!==eval("require.main")){var ORIGINAL_MAIN_MODULE=module;module!==eval("require.main")&&"paths"in module&&"paths"in eval("require.main")&&"undefined"!=typeof __dirname&&null!==__dirname&&(module.paths=eval("require.main.paths").concat(module.paths.filter((function(path){return eval("require.main.paths").includes(path)}))))}if(null==window)var window="undefined"==typeof global||null===global?{}:global;!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@babel/runtime/helpers/initializerDefineProperty"),require("@babel/runtime/helpers/applyDecoratedDescriptor"),require("@babel/runtime/helpers/initializerWarningHelper"),require("clientnode"),require("clientnode/property-types"),require("web-component-wrapper/decorator"),require("web-component-wrapper/Web"));else if("function"==typeof define&&define.amd)define(["@babel/runtime/helpers/initializerDefineProperty","@babel/runtime/helpers/applyDecoratedDescriptor","@babel/runtime/helpers/initializerWarningHelper","clientnode","clientnode/property-types","web-component-wrapper/decorator","web-component-wrapper/Web"],t);else{var n="object"==typeof exports?t(require("@babel/runtime/helpers/initializerDefineProperty"),require("@babel/runtime/helpers/applyDecoratedDescriptor"),require("@babel/runtime/helpers/initializerWarningHelper"),require("clientnode"),require("clientnode/property-types"),require("web-component-wrapper/decorator"),require("web-component-wrapper/Web")):t(e["@babel/runtime/helpers/initializerDefineProperty"],e["@babel/runtime/helpers/applyDecoratedDescriptor"],e["@babel/runtime/helpers/initializerWarningHelper"],e.clientnode,e["clientnode/property-types"],e["web-component-wrapper/decorator"],e["web-component-wrapper/Web"]);for(var o in n)("object"==typeof exports?exports:e)[o]=n[o]}}(this,((e,t,n,o,i,s,a)=>(()=>{var r=[,t=>{t.exports=e},e=>{e.exports=t},e=>{e.exports=n},e=>{e.exports=o},e=>{e.exports=i},e=>{e.exports=s},e=>{e.exports=a}],l={};function p(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={exports:{}};return r[e](n,n.exports,p),n.exports}p.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return p.d(t,{a:t}),t},p.d=(e,t)=>{for(var n in t)p.o(t,n)&&!p.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},p.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),p.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var c={};p.r(c),p.d(c,{WebInternationalization:()=>k,api:()=>q,default:()=>I,log:()=>E});var u,h,d,g,m,f,w,b,N,x,T,y,L=p(1),_=p.n(L),D=p(2),C=p.n(D),v=(p(3),p(4)),P=p(5),O=p(6),S=p(7);const E=new v.Logger({name:"web-internationalization"});let k=(u=(0,O.property)({type:P.object}),h=(0,O.property)({type:P.func}),d=(0,O.property)({type:P.func}),g=(0,O.property)({type:P.func}),m=(0,O.property)({type:P.func}),y=class e extends S.Web{constructor(){super(),this.self=e,_()(this,"options",w,this),_()(this,"onEnsure",b,this),_()(this,"onSwitch",N,this),_()(this,"onEnsured",x,this),_()(this,"onSwitched",T,this),this.switchLanguageButtonDomNodes=null,this.currentLanguage="enUS",this.knownTranslations={},this.lock=new v.Lock,this._domNodesToFade=[],this._replacements=[],this._textNodesWithKnownTranslation={},this.defineGetterAndSetterInterface()}async onUpdateAttribute(e,t){await super.onUpdateAttribute(e,t),"options"===e&&this._extendOptions()}async render(e="unknown",t=!0){await super.render(e,!1),0===Object.keys(this.options).length&&this._extendOptions(),this.options.preReplacementLanguagePattern=(0,v.format)(this.options.preReplacementLanguagePattern,this.options.replacementLanguagePattern.substring(1,this.options.replacementLanguagePattern.length-1)),this.options.lockDescription=(0,v.format)(this.options.lockDescription,this.self._name),this.options.sessionDescription=(0,v.format)(this.options.sessionDescription,this.self._name),await this.waitForNestedComponentRendering(),this.switchLanguageButtonDomNodes=this.hostDomNode.querySelectorAll(`a[href^="#${this.options.languageHashPrefix}"]`),this._movePreReplacementNodes(),this.currentLanguage=this._normalizeLanguage(this.options.default);const n=this._determineUsefulLanguage(),o=0===this.options.selection.length;for(const e of this.switchLanguageButtonDomNodes){o&&this.options.selection.push(e.getAttribute("href").substring(`#${this.options.languageHashPrefix}`.length));const t=e=>{e.preventDefault();const t=e.target?.getAttribute("href");t&&this.switch(t.substring(this.options.languageHashPrefix.length+1))};this.addSecureEventListener(e,"click",t)}this.currentLanguage===n?this._switchCurrentLanguageIndicator(n):await this.switch(n,!0),await this.resolveRenderingPromiseIfSet(e,t)}async switch(e,t=!1){if(!0===e||!this.options.selection.length||this.options.selection.includes(e)){if(await this.lock.acquire(this.options.lockDescription),!0===e?(t=!0,e=this.currentLanguage):e=this._normalizeLanguage(e),t&&e!==this.options.default||this.currentLanguage!==e){let n="Switch to";return t&&(n="Ensure"),E.debug(`${n} "${e}".`),this._switchCurrentLanguageIndicator(e),t?await this.onEnsure(e):await this.onSwitch(this.currentLanguage,e),this._domNodesToFade=[],this._replacements=[],this._collectTextNodesToReplace(e,t),void await this._handleSwitchEffect(e,t)}E.debug(`"${e}" is already current selected language.`),this.lock.release(this.options.lockDescription)}else E.debug(`"${e}" isn't one of the allowed languages.`)}refresh(){return this._movePreReplacementNodes(),this.switch(!0)}_extendOptions(){this.setPropertyValue("options",(0,v.extend)(!0,{},this.self._defaultOptions,this.options))}async _handleSwitchEffect(e,t){const n=this.currentLanguage;if(!t&&this.options.useEffect&&this._domNodesToFade.length>0)return await Promise.all(this._domNodesToFade.map((e=>(0,v.fadeOut)(e)))),this._switchLanguage(e),await Promise.all(this._domNodesToFade.map((e=>(0,v.fadeIn)(e)))),this.onSwitched(n,e),void this.lock.release(this.options.lockDescription);this._switchLanguage(e),t?this.onEnsured(e):this.onSwitched(n,e),this.lock.release(this.options.lockDescription)}_movePreReplacementNodes(){for(const e of(0,v.getAll)(this.hostDomNode)){const t=e.nodeName.toLowerCase();if(this.options.replacementDomNodeNames.includes(t)){["#comment","#text"].includes(t)||e.classList.add(this.options.selectors.hideClassName);const n=new RegExp(this.options.preReplacementLanguagePattern),o=e.textContent?.match(n);if(e.textContent&&o&&o[0]&&(e.textContent=e.textContent.replace(n,o[1]),e.parentElement)){let t=!1;for(const n of(0,v.getAll)(e.parentElement)){if(t&&(0,v.getText)(n,!0).length>0){n.appendChild(e);break}e===n&&(t=!0)}}}}}_collectTextNodesToReplace(e,t){let n=null,o=null;this.knownTranslations={};for(const i of(0,v.getAll)(this.hostDomNode)){const s=i.nodeName.toLowerCase();if((0!==(0,v.getText)(i,!0).length||i.nodeType===Node.COMMENT_NODE&&""!==(i.nodeValue||"").trim())&&!n?.contains(i)&&!(0,v.closest)(i,this.options.replaceDomNodeNames.concat(this.options.replacementDomNodeNames).join(",")))if(this.options.replaceDomNodeNames.includes(s))n=i;else if(n){if(this.options.replacementDomNodeNames.includes(s)){const a="#comment"===s?i.textContent:i.innerHTML,r=a?.match(new RegExp(this.options.replacementLanguagePattern));Array.isArray(r)&&r[1]===e?(this.knownTranslations[(0,v.getText)(n,!0).join(" ")]=r[2].trim(),o=this._ensureLastTextNodeHavingLanguageIndicator(n,o,t),this._registerTextNodeToChange(n,i,r,o),n=null,o=null):i.textContent?.match(new RegExp(this.options.currentLanguagePattern))&&(o=i);continue}n=null,o=null}}this._registerKnownTextNodes()}_registerKnownTextNodes(){this._textNodesWithKnownTranslation={};for(const e of this.hostDomNode.querySelectorAll(this.options.selectors.knownTranslation))for(const t of(0,v.getAll)(e)){const e=(0,v.getText)(t).join(" ");e&&!this.options.replaceDomNodeNames.includes(t.nodeName.toLowerCase())&&!(0,v.closest)(t,this.options.replaceDomNodeNames.join(","))&&Object.prototype.hasOwnProperty.call(this.knownTranslations,e)&&(this._domNodesToFade.push(t.parentElement),Object.prototype.hasOwnProperty.call(this._textNodesWithKnownTranslation,this.knownTranslations[e])?this._textNodesWithKnownTranslation[this.knownTranslations[e]].push(t):this._textNodesWithKnownTranslation[this.knownTranslations[e]]=[t])}}_normalizeLanguage(e){for(const[t,n]of Object.entries(this.options.languageMapping))if(n.includes(t.toLowerCase())||n.push(t.toLowerCase()),n.includes(e.toLowerCase()))return t;return this.options.default}_determineUsefulLanguage(){let e;return this.options.initial?e=this.options.initial:Object.prototype.hasOwnProperty.call(v.globalContext,"window")&&(v.globalContext.window?.localStorage.getItem(this.options.sessionDescription)?(e=v.globalContext.window.localStorage.getItem(this.options.sessionDescription),E.debug(`Determine "${e}", because of local storage`,"information.")):v.globalContext.window?.navigator.language&&(e=v.globalContext.window.navigator.language,E.debug(`Determine "${e}", because of browser settings.`))),e||(e=this.options.default,E.debug(`Determine "${e}", because of default option.`)),e=this._normalizeLanguage(e),this.options.selection.length&&!this.options.selection.includes(e)&&(E.debug(`"${e}" isn't one of the allowed languages. Set`,`language to "${this.options.selection[0]}".`),e=this.options.selection[0]),v.globalContext.window?.localStorage&&v.globalContext.window.localStorage.setItem(this.options.sessionDescription,e),e}_registerTextNodeToChange(e,t,n,o){this._domNodesToFade.push(e.parentElement),t&&this._replacements.push({textNodeToTranslate:e,nodeToReplaceWith:t,textToReplaceWith:n[2],currentLanguageDomNode:o})}_ensureLastTextNodeHavingLanguageIndicator(e,t,n){if(e&&!t){let o=this.currentLanguage;n&&(o=this.options.default||this.currentLanguage),(t=v.globalContext.document?.createComment(o)||null)&&e.after(t)}return t}_switchLanguage(e){for(const t of this._replacements){const n="innerHTML"in t.textNodeToTranslate?t.textNodeToTranslate.innerHTML:t.textNodeToTranslate.textContent,o=n.trim();if(!this.options.templateDelimiter||!o.endsWith(this.options.templateDelimiter.post)&&this.options.templateDelimiter.post){let o=t.currentLanguageDomNode;if(!o){o=document.body;let e=!1;for(const n of(0,v.getAll)(t.textNodeToTranslate.parentElement)){if(e){t.currentLanguageDomNode=o=n;break}n===t.textNodeToTranslate&&(e=!0)}}const i=o.textContent;i&&e===i&&E.warn(`Text node "${t.textToReplaceWith}" is`,`marked as "${i}" and has same`,"translation language as it already is.");const s=t.nodeToReplaceWith.nodeName.toLowerCase();if("#comment"===s)t.textNodeToTranslate.after(v.globalContext.document.createComment(`${i}:${n}`));else{const e=v.globalContext.document.createElement(s);e.innerHTML=`${i}:${n}`,e.classList.add(this.options.selectors.hideClassName),t.textNodeToTranslate.after(e)}t.textNodeToTranslate.after(v.globalContext.document.createComment(e)),"innerHTML"in t.textNodeToTranslate?t.textNodeToTranslate.innerHTML=t.textToReplaceWith:t.textNodeToTranslate.textContent=t.textToReplaceWith,o.remove(),t.nodeToReplaceWith.remove()}}for(const[e,t]of Object.entries(this._textNodesWithKnownTranslation))for(const n of t)n.textContent=e;v.globalContext.localStorage&&v.globalContext.localStorage.setItem(this.options.sessionDescription,e),this.currentLanguage=e}_switchCurrentLanguageIndicator(e){for(const e of this.hostDomNode.querySelectorAll(`a[href="#${this.options.languageHashPrefix}${this.currentLanguage}"].`+this.options.currentLanguageIndicatorClassName))e.classList.remove(this.options.currentLanguageIndicatorClassName);for(const t of this.hostDomNode.querySelectorAll(`a[href="#${this.options.languageHashPrefix}${e}"]`))t.classList.add(this.options.currentLanguageIndicatorClassName)}},y._name="WebInternationalization",y._defaultOptions={currentLanguageIndicatorClassName:"current",currentLanguagePattern:"^[a-z]{2}[A-Z]{2}$",default:"enUS",useEffect:!0,initial:null,languageHashPrefix:"lang-",languageMapping:{deDE:["de","de_de","de-de","german","deutsch"],enUS:["en","en_us","en-us"],enEN:["en_en","en-en","english"],frFR:["fr","fr_fr","fr-fr","french"]},lockDescription:"{1}Switch",preReplacementLanguagePattern:"^\\|({1})$",replaceDomNodeNames:["#text","lang-replace"],replacementDomNodeNames:["#comment","lang-replacement"],replacementLanguagePattern:"^([a-z]{2}[A-Z]{2}):((.|\\s)*)$",selection:[],selectors:{knownTranslation:".web-internationalization-generated-content",hideClassName:"wi-hide"},sessionDescription:"{1}",templateDelimiter:{pre:"{{",post:"}}"}},f=y,w=C()(f.prototype,"options",[u],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return{}}}),b=C()(f.prototype,"onEnsure",[h],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return v.NOOP}}),N=C()(f.prototype,"onSwitch",[d],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return v.NOOP}}),x=C()(f.prototype,"onEnsured",[g],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return v.NOOP}}),T=C()(f.prototype,"onSwitched",[m],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return v.NOOP}}),f);const q={component:k,register:(e=(0,v.camelCaseToDelimited)(k._name))=>{customElements.define(e,k)}},I=k;return v.globalContext.AUTO_DEFINE_WEB_INTERNATIONALIZATION&&q.register(),c})()));
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.0.27",
2
+ "version": "2.0.29",
3
3
  "name": "web-internationalization",
4
4
  "description": "Expand your audience",
5
5
  "keywords": [