{"version":3,"sources":["jsdelivr-header.js","/npm/doggotranslator@1.0.2/src/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,OCNO,oBAAqB,yBAE5B,MAAM,gBAMF,WAAA,CAAY,GACR,KAAK,YAAY,EACrB,CAWA,iBAAA,CAAkB,EAAU,GACxB,GAAwB,iBAAb,GAAsC,KAAb,EAChC,MAAO,OAGX,IAAI,EAAe,KAAK,mBAExB,IAAK,IAAI,KAAO,EACZ,GAAI,EAAa,eAAe,GAAM,CAClC,IAAI,EAAQ,EAAa,GAMrB,EAJC,EAIU,KAAK,sBAAsB,EAAU,EAAO,GAH5C,KAAK,sBAAsB,EAAU,EAAK,EAK7D,CAGJ,OAAO,CACX,CAOA,YAAA,GACI,MAAO,CAAC,KACZ,CAOA,WAAA,CAAY,GACJ,KAAK,mBAAmB,GACxB,KAAK,SAAW,GAGhB,KAAK,UAAU,gDAEf,KAAK,SAAW,KAExB,CAUA,gBAAA,GAKY,OAJA,KAAK,SAIE,eAEnB,CAWA,kBAAA,CAAmB,GACf,OAAkD,IAA3C,KAAK,eAAe,QAAQ,EACvC,CAaA,qBAAA,CAAsB,EAAO,EAAM,GAG/B,OAFA,EAAO,KAAK,aAAa,GAElB,EAAM,QAAQ,IAAI,OAAO,OAAS,EAAO,OAAQ,OAAQ,GACxD,IAAU,EAAM,cACT,EAAQ,cAGf,IAAU,KAAK,SAAS,GACjB,KAAK,SAAS,GAGlB,GAEf,CAWA,QAAA,CAAS,GACL,OAAO,EAAO,OAAO,GAAG,cAAgB,EAAO,MAAM,EACzD,CAWA,YAAA,CAAa,GACT,OAAO,EAAO,QAAQ,2BAA4B,OACtD,CASA,SAAA,CAAU,GACN,QAAQ,MAAM,oBAAsB,EACxC,iBAGW","file":"/npm/doggotranslator@1.0.2/src/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/doggotranslator@1.0.2/src/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import en_translations from './en_translations.json';\r\n\r\nclass DoggoTranslator {\r\n    /**\r\n     * Creates a new instance and sets the language\r\n     *\r\n     * @param {string} language\r\n     */\r\n    constructor(language) {\r\n        this.setLanguage(language);\r\n    }\r\n\r\n    /**\r\n     * Translates the given sentence with the language\r\n     *\r\n     * @param {string} sentence The input language\r\n     * @param {bool} reverse When false, the sentence goes from the chosen language to Doggo speak.\r\n     *                        When true, the sentence goes from Doggo speak to the chosen language.\r\n     *\r\n     * @returns {string} The translated sentence\r\n     */\r\n    translateSentence(sentence, reverse) {\r\n        if (typeof sentence !== 'string' || sentence === '') {\r\n            return 'Bork';\r\n        }\r\n\r\n        let languageFile = this._getLanguageFile();\r\n\r\n        for (let key in languageFile) {\r\n            if (languageFile.hasOwnProperty(key)) {\r\n                let value = languageFile[key];\r\n\r\n                if (!reverse) {\r\n                    sentence = this._translateSingleEntry(sentence, key, value);\r\n                }\r\n                else {\r\n                    sentence = this._translateSingleEntry(sentence, value, key);\r\n                }\r\n            }\r\n        }\r\n\r\n        return sentence;\r\n    }\r\n\r\n    /**\r\n     * Gets the available languages\r\n     *\r\n     * @returns {[string]} The array with available languages\r\n     */\r\n    getLanguages() {\r\n        return ['en'];\r\n    }\r\n\r\n    /**\r\n     * Sets the language to translate from\r\n     *\r\n     * @param {string} language The language to translate from\r\n     */\r\n    setLanguage(language) {\r\n        if (this._languageAvailable(language)) {\r\n            this.language = language;\r\n        }\r\n        else {\r\n            this._logError(\"The language was not found, defaulting to EN\");\r\n\r\n            this.language = 'en';\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the language's JSON file\r\n     * TODO: remove this function and create something like a dictionary with the available languages and their JSON file\r\n     *\r\n     * @returns {object} The JSON object\r\n     *\r\n     * @private\r\n     */\r\n    _getLanguageFile() {\r\n        switch (this.language) {\r\n            case 'en':\r\n                return en_translations;\r\n            default:\r\n                return en_translations;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Checks whether the given language exists in the available languages\r\n     *\r\n     * @param {string} language The language to check\r\n     *\r\n     * @returns {boolean} Whether it exists or not\r\n     *\r\n     * @private\r\n     */\r\n    _languageAvailable(language) {\r\n        return this.getLanguages().indexOf(language) !== -1;\r\n    }\r\n\r\n    /**\r\n     * Replaces a part from the input and tries to format it with the proper case.\r\n     *\r\n     * @param {string} input The complete input\r\n     * @param {string} find The word or sentence to find\r\n     * @param {string} replace The word or sentence to replace the found word or sentence\r\n     *\r\n     * @returns {string} The input with the replaced text.\r\n     *\r\n     * @private\r\n     */\r\n    _translateSingleEntry(input, find, replace) {\r\n        find = this._escapeRegex(find);\r\n\r\n        return input.replace(new RegExp('\\\\b(' + find + ')\\\\b', 'gi'), (match) => {\r\n            if (match === match.toUpperCase()) {\r\n                return replace.toUpperCase();\r\n            }\r\n\r\n            if (match === this._ucfirst(match)) {\r\n                return this._ucfirst(replace);\r\n            }\r\n\r\n            return replace;\r\n        })\r\n    }\r\n\r\n    /**\r\n     * Makes the first character in the string uppercase\r\n     *\r\n     * @param {string} string The string to format\r\n     *\r\n     * @returns {string} The string with the first character uppercase.\r\n     *\r\n     * @private\r\n     */\r\n    _ucfirst(string) {\r\n        return string.charAt(0).toUpperCase() + string.slice(1);\r\n    }\r\n\r\n    /**\r\n     * Escapes all the special characters so that the translation regex see them as special characters\r\n     *\r\n     * @param {string} string The string to escape\r\n     *\r\n     * @returns {string} The escaped string\r\n     *\r\n     * @private\r\n     */\r\n    _escapeRegex(string) {\r\n        return string.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n    }\r\n\r\n    /**\r\n     * Logs an error message to the console with a prefix.\r\n     *\r\n     * @param {string} message Message to log\r\n     *\r\n     * @private\r\n     */\r\n    _logError(message) {\r\n        console.error('[DoggoTranslator]' + message);\r\n    }\r\n}\r\n\r\nexport default DoggoTranslator;"]}