{"version":3,"sources":["jquery\\pGenerator.jquery.js"],"names":["$","numbers_array","upper_letters_array","lower_letters_array","special_chars_array","methods","init","options","callbacks","settings","extend","bind","passwordElement","displayElement","passwordLength","uppercase","lowercase","numbers","specialChars","additionalSpecialChars","onPasswordGenerated","generatedPassword","i","push","concat","this","each","on","e","preventDefault","generatePassword","call","password","Array","selOptions","selected","no_lower_letters","optionLength","Math","floor","String","fromCharCode","randomFromInterval","length","count","parseInt","remained","o","j","x","random","shuffle","join","val","is","text","setTimeout","from","to","fn","pGenerator","method","apply","prototype","slice","arguments","error","jQuery"],"mappings":"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","sourcesContent":["/*!\r\n * Based on: pGenerator jQuery Plugin v1.0.5\r\n * https://github.com/M1Sh0u/pGenerator\r\n *\r\n * Created by Mihai MATEI <mihai.matei@outlook.com>\r\n * Released under the MIT License (Feel free to copy, modify or redistribute this plugin.)\r\n */\r\n\r\n(function($){\r\n\r\n    var numbers_array       = [],\r\n        upper_letters_array = [],\r\n        lower_letters_array = [],\r\n        special_chars_array = [],\r\n        $pGeneratorElement  = null;\r\n\r\n    /**\r\n     * Plugin methods.\r\n     *\r\n     * @type {{init: init, generatePassword: generatePassword}}\r\n     */\r\n    var methods = {\r\n\r\n        /**\r\n         * Initialize the object.\r\n         *\r\n         * @param options\r\n         * @param callbacks\r\n         *\r\n         * @returns {*}\r\n         */\r\n        init: function(options, callbacks)\r\n        {\r\n            var settings = $.extend({\r\n                'bind': 'click',\r\n                'passwordElement': null,\r\n                'displayElement': null,\r\n                'passwordLength': 16,\r\n                'uppercase': true,\r\n                'lowercase': true,\r\n                'numbers':   true,\r\n                'specialChars': true,\r\n                'additionalSpecialChars': [],\r\n                'onPasswordGenerated': function(generatedPassword) { }\r\n            }, options);\r\n\r\n            for(var i = 48; i < 58; i++) {\r\n                numbers_array.push(i);\r\n            }\r\n\r\n            for(i = 65; i < 91; i++) {\r\n                upper_letters_array.push(i);\r\n            }\r\n\r\n            for(i = 97; i < 123; i++) {\r\n                lower_letters_array.push(i);\r\n            }\r\n\r\n            special_chars_array = [33, 35, 64, 42, 91, 93, 123, 125, 59, 95, 45].concat(settings.additionalSpecialChars); // 58 removed //***\r\n\r\n            return this.each(function(){\r\n\r\n                $pGeneratorElement = $(this);\r\n\r\n                $pGeneratorElement.on(settings.bind, function(e){\r\n                    e.preventDefault();\r\n                    methods.generatePassword.call(this, settings); //***\r\n                });\r\n\r\n            });\r\n        },\r\n\r\n        /**\r\n         * Generate the password.\r\n         *\r\n         * @param {object} settings\r\n         */\r\n        generatePassword: function(settings)\r\n        {\r\n            var password = new Array(),\r\n                selOptions = settings.uppercase + settings.lowercase + settings.numbers + settings.specialChars,\r\n                selected = 0,\r\n                no_lower_letters = new Array();\r\n\r\n            var optionLength = Math.floor(settings.passwordLength / selOptions);\r\n\r\n            if(settings.uppercase) {\r\n                // uppercase letters\r\n                for(var i = 0; i < optionLength; i++) {\r\n                    password.push(String.fromCharCode(upper_letters_array[randomFromInterval(0, upper_letters_array.length - 1)]));\r\n                    selected++; //***\r\n                }\r\n\r\n                no_lower_letters = no_lower_letters.concat(upper_letters_array);\r\n            }\r\n\r\n            if(settings.numbers) {\r\n                // numbers letters\r\n                for(var i = 0; i < optionLength; i++) {\r\n                    password.push(String.fromCharCode(numbers_array[randomFromInterval(0, numbers_array.length - 1)]));\r\n                    selected++; //***\r\n                }\r\n\r\n                no_lower_letters = no_lower_letters.concat(numbers_array);\r\n            }\r\n\r\n            if(settings.specialChars) {\r\n                // special chars //***\r\n                var count = parseInt(settings.specialChars, 10);\r\n                count = count > 0 ? count : optionLength;\r\n                for(var i = 0; i < count; i++) {\r\n                    password.push(String.fromCharCode(special_chars_array[randomFromInterval(0, special_chars_array.length - 1)]));\r\n                    selected++; //***\r\n                }\r\n\r\n                no_lower_letters = no_lower_letters.concat(special_chars_array);\r\n            }\r\n\r\n            var remained = settings.passwordLength - selected; //***\r\n\r\n            if(settings.lowercase) {\r\n\r\n                for(var i = 0; i < remained; i++) {\r\n                    password.push(String.fromCharCode(lower_letters_array[randomFromInterval(0, lower_letters_array.length - 1)]));\r\n                }\r\n\r\n            } else {\r\n\r\n                for(var i = 0; i < remained; i++) {\r\n                    password.push(String.fromCharCode(no_lower_letters[randomFromInterval(0, no_lower_letters.length - 1)]));\r\n                }\r\n            }\r\n\r\n            password = shuffle(password).join('');\r\n\r\n            if(settings.passwordElement !== null) {\r\n                $(settings.passwordElement).val(password);\r\n            }\r\n\r\n            if(settings.displayElement !== null) {\r\n                if($(settings.displayElement).is(\"input\")) {\r\n                    $(settings.displayElement).val(password);\r\n                } else {\r\n                    $(settings.displayElement).text(password);\r\n                }\r\n            }\r\n\r\n            setTimeout(() => settings.onPasswordGenerated.call($(this), password), 0); //***\r\n        }\r\n    };\r\n\r\n    /**\r\n     * Shuffle the password.\r\n     *\r\n     * @param {Array} o\r\n     *\r\n     * @returns {Array}\r\n     */\r\n    function shuffle(o)\r\n    {\r\n        for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);\r\n\r\n        return o;\r\n    }\r\n\r\n    /**\r\n     * Get a random number in the given interval.\r\n     *\r\n     * @param {number} from\r\n     * @param {number} to\r\n     *\r\n     * @returns {number}\r\n     */\r\n    function randomFromInterval(from, to)\r\n    {\r\n        return Math.floor(Math.random()*(to-from+1)+from);\r\n    }\r\n\r\n    /**\r\n     * Define the pGenerator jQuery plugin.\r\n     *\r\n     * @param method\r\n     * @returns {*}\r\n     */\r\n    $.fn.pGenerator = function(method)\r\n    {\r\n        if (methods[method]) {\r\n            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\r\n        }\r\n        else if (typeof method === 'object' || !method) {\r\n            return methods.init.apply(this, arguments);\r\n        }\r\n        else {\r\n            $.error( 'Method ' +  method + ' does not exist on jQuery.pGenerator' );\r\n        }\r\n    };\r\n\r\n})(jQuery);\r\n"]}