{"version":3,"file":"lieu.cjs","sources":["../src/core/helpers.js","../src/core/const.js","../src/lieu.js"],"sourcesContent":["class Helpers {\n    // Checks if passed object is object or not\n    static isObject(obj) {\n        return typeof obj === 'object';\n    }\n\n    // Checks if passed object is funcion or not\n    static isFunction(func) {\n        return typeof func === 'function';\n    }\n\n    // Returns parsed from JSON object or null\n    static fromJson(obj) {\n        try {\n            const languagesFromJson = JSON.parse(obj);\n\n            if (this.isObject(languagesFromJson)) {\n                return languagesFromJson;\n            } else {\n                return null;\n            }\n        } catch {\n            return null;\n        }\n    }\n\n    // Return browser language\n    static getBrowserLang() {\n        return navigator.language.slice(0, 2);\n    }\n\n    // Check key existing in object\n    static hasKey(key, obj) {\n        return Object.keys(obj).indexOf(key) !== -1;\n    }\n\n    // Split string by delimiter, returns array<String>\n    static findAllSubstrings(string) {\n        const regexp = /\\|[[{\\d+]/g;\n        const subStrings = [];\n\n        function findDelimiter(str) {\n            const delimiterIndex = str.search(regexp);\n\n            if (delimiterIndex !== -1) {\n                subStrings.push(str.substring(0, delimiterIndex));\n                findDelimiter(str.substring(delimiterIndex + 1));\n            } else {\n                subStrings.push(str);\n            }\n        }\n\n        findDelimiter(string);\n\n        return subStrings;\n    }\n\n    /**\n     * Returns pluralized string depending on passed @param count\n     * @param string<String>\n     * @param count<Number>\n     */\n    static pluralizeString(string, count) {\n        // [num,num] {num,num} [num] {num} [num,*] {num,*}\n        const regex = /[[{]\\d+,{0,1}\\d{0,}\\*{0,1}[\\]}]/g;\n        const subStrings = this.findAllSubstrings(string);\n\n        let locale;\n\n        for (let i = 0; i < subStrings.length; i++) {\n            const subString = subStrings[i];\n            const result = subString.match(regex);\n\n            if (result) {\n                // Set default value for the first time\n                if (!locale) {\n                    locale = subString.replace(regex, '');\n                    continue;\n                }\n\n                const resultNumbers = [];\n\n                // Remove array/obj brackets and split string by comma\n                resultNumbers.push(\n                    ...result[0].replace(/[[{]|[\\]}]/g, '').split(',')\n                );\n\n                // Check if matched plural count more or equal passed count\n                if (resultNumbers.length >= 2) {\n                    if (resultNumbers[1] === '*' && count >= resultNumbers[0]) {\n                        locale = subString.replace(regex, '');\n\n                        break;\n                    } else if (\n                        resultNumbers[0] <= count &&\n                        resultNumbers[1] >= count\n                    ) {\n                        locale = subString.replace(regex, '');\n\n                        break;\n                    }\n                } else {\n                    if (resultNumbers[0] === count) {\n                        locale = subString.replace(regex, '');\n\n                        break;\n                    }\n                }\n            }\n        }\n\n        return locale;\n    }\n}\n\nexport default Helpers;\n","const STORAGE_KEY = 'lieu';\nconst ATTRIBUTE_NAME = 'data-lieu';\nconst PLURAL = 'plural';\n\nexport { STORAGE_KEY, ATTRIBUTE_NAME, PLURAL };\n","import Helpers from './core/helpers';\nimport { STORAGE_KEY, ATTRIBUTE_NAME, PLURAL } from './core/const';\n\n/**\n * @param initialData<Object>\n */\nexport default class Lieu {\n    #isDebug = false; // boolean\n    #initialData = null; // object\n    #languages = null; // object\n    #currentLanguage = null; // object\n    #attributeName; // string\n\n    #onSetLang = (newLang, oldLang) => {};\n    #onGetLang = () => {};\n\n    constructor(initialData) {\n        this.#initialData = initialData;\n\n        this.#isDebug = initialData.isDebug;\n\n        this.#init();\n    }\n\n    #init() {\n        this.#initLanguages();\n        this.#setAttributeName();\n        this.#setInitialLanguage();\n        this.#setHooks();\n    }\n\n    // Set class field languages if languages from initial data is object or json\n    #initLanguages() {\n        let initialLanguages = this.#initialData.languages;\n\n        if (!Helpers.isObject(initialLanguages)) {\n            initialLanguages = Helpers.fromJson(initialLanguages);\n        }\n\n        this.#languages = initialLanguages;\n    }\n\n    // Set hooks if they exist in initial data\n    #setHooks() {\n        if (Helpers.isFunction(this.#initialData.onSetLang)) {\n            this.#onSetLang = this.#initialData.onSetLang;\n        }\n\n        if (Helpers.isFunction(this.#initialData.onGetLang)) {\n            this.#onGetLang = this.#initialData.onGetLang;\n        }\n    }\n\n    // Set custom data attribute\n    #setAttributeName() {\n        this.#attributeName = this.#initialData.attributeName ?? ATTRIBUTE_NAME;\n    }\n\n    // Set initial language from languages\n    #setInitialLanguage() {\n        const userKeyLang =\n            localStorage.getItem(STORAGE_KEY) ?? // from storage\n            this.#initialData.initialLanguage ?? // from options\n            Helpers.getBrowserLang(); // from navigator\n\n        if (Helpers.hasKey(userKeyLang, this.#languages)) {\n            this.setLang(userKeyLang);\n        } else {\n            this.setLang(Object.keys(this.#languages)[0]);\n        }\n    }\n\n    /*\n     * Set new lang by string key from languages class field\n     * @param langKey<String>\n     */\n    setLang(langKey) {\n        const newLanguage = this.#languages[langKey];\n        const oldLanguage = this.#currentLanguage;\n\n        if (!Helpers.hasKey(langKey, this.#languages)) {\n            console.error(\n                `Lieu | Language key \"${langKey}\" not found in languages!`\n            );\n\n            return;\n        }\n\n        this.#currentLanguage = newLanguage;\n        localStorage.setItem(STORAGE_KEY, langKey);\n\n        this.#localizeDomElems();\n\n        this.#onSetLang(oldLanguage, newLanguage);\n    }\n\n    // Find all data-attributes by attributeName field in DOM, and localize them\n    #localizeDomElems() {\n        const $locales = Array.from(\n            document.querySelectorAll(`[${this.#attributeName}]`)\n        );\n\n        $locales.forEach(($str) => {\n            const localeAttributes = $str.getAttributeNames();\n            let localeKey;\n            let pluralNum;\n            const interpolationObj = {};\n\n            localeAttributes.forEach((attr) => {\n                // If data-lieu-... attribute (or custom)\n                if (attr.includes(this.#attributeName.toLowerCase())) {\n                    const attributeValue = $str.getAttribute(attr);\n\n                    // Set locale key, plural number and interpolation properties\n                    if (attr === this.#attributeName) {\n                        localeKey = attributeValue;\n                    } else if (\n                        attr.includes(PLURAL) &&\n                        !isNaN(attributeValue)\n                    ) {\n                        pluralNum = Number(attributeValue);\n                    } else {\n                        const objKey = attr.replace(\n                            `${this.#attributeName.toLowerCase()}-`,\n                            ''\n                        );\n\n                        interpolationObj[objKey] = attributeValue;\n                    }\n                }\n            });\n\n            $str.innerHTML = this.trans(localeKey, interpolationObj, pluralNum);\n        });\n    }\n\n    /**\n     * Return value from currentLanguage.locales or null\n     * @param localeKey<String>\n     * @param arg1<String|Object> not required\n     * @param arg2<String|Object> not required\n     */\n    trans(localeKey, arg1, arg2) {\n        const { locales } = this.#currentLanguage;\n        const options = [arg1, arg2];\n\n        let locale = locales[localeKey];\n        let interpolationObj;\n        let pluralNum;\n\n        if (Helpers.isObject(options[0])) {\n            interpolationObj = options[0];\n            pluralNum = options[1];\n        } else {\n            interpolationObj = options[1];\n            pluralNum = options[0];\n        }\n\n        if (!locale) {\n            locale = localeKey;\n\n            if (this.#isDebug) {\n                console.warn(\n                    `Lieu | Locale key \"${localeKey}\" not found in current language!`\n                );\n            }\n        }\n\n        if (interpolationObj) {\n            locale = locale.replace(\n                /%\\{(.*?)\\}/g,\n                (match, key) => interpolationObj[key] || match\n            );\n        }\n\n        if (pluralNum) {\n            locale = Helpers.pluralizeString(locale, pluralNum);\n        }\n\n        return locale;\n    }\n\n    /** Return language object from languages class field by its' key\n     * or current langauge if @param langKey is not set\n     @param langKey<String> not required\n     */\n    getLang(langKey) {\n        this.#onGetLang();\n\n        if (!langKey) {\n            return this.#currentLanguage;\n        }\n\n        if (!Helpers.hasKey(langKey, this.#languages)) {\n            console.error(\n                `Lieu | Language key \"${langKey}\" not found in languages!`\n            );\n\n            return;\n        }\n\n        return this.#languages[langKey];\n    }\n\n    // Returns object of all languages\n    getLangs() {\n        return this.#languages;\n    }\n}\n"],"names":["Helpers","isObject","obj","isFunction","func","fromJson","languagesFromJson","JSON","parse","getBrowserLang","navigator","language","slice","hasKey","key","Object","keys","indexOf","findAllSubstrings","string","regexp","subStrings","findDelimiter","str","delimiterIndex","search","push","substring","pluralizeString","count","regex","locale","i","length","subString","result","match","replace","resultNumbers","split","STORAGE_KEY","ATTRIBUTE_NAME","PLURAL","Lieu","newLang","oldLang","constructor","initialData","isDebug","initialLanguages","languages","onSetLang","onGetLang","attributeName","userKeyLang","localStorage","getItem","initialLanguage","setLang","langKey","newLanguage","oldLanguage","console","error","setItem","$locales","Array","from","document","querySelectorAll","forEach","$str","localeAttributes","getAttributeNames","localeKey","pluralNum","interpolationObj","attr","includes","toLowerCase","attributeValue","getAttribute","isNaN","Number","objKey","innerHTML","trans","arg1","arg2","locales","options","warn","getLang","getLangs"],"mappings":"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"}