function randPassword(length, includeSpecial, exclude) { let pwdChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; if (includeSpecial) { pwdChars += '!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~'; } if (exclude) { exclude.split('').forEach(c => { pwdChars = pwdChars.split(c).join(''); }); } let randValues = new Uint32Array(length); let randPwd = ''; window.crypto.getRandomValues(randValues); for(i=0; i { clone.className += ' fadeout'; }, 500); setTimeout(() => { clone.remove(); }, 1600); } document.addEventListener('DOMContentLoaded', function() { document.getElementById('new').addEventListener('click', (ev) => { ev.preventDefault(); var params = getParams(); document.getElementById('pw').value = randPassword(generateLength(), params.special, params.exclude); }); document.getElementById('copy').addEventListener('click', (ev) => { ev.preventDefault(); copypasstoclippboard(); }); var list = document.getElementsByTagName('input'); for (var i = 0; i < list.length; i++) { list[i].addEventListener('change', (ev) => { saveOptions(getParams()); }); } loadOptions().then((options) => { document.getElementById('length-min').value = options.lengthMin; document.getElementById('length-max').value = options.lengthMax; document.getElementById('special').checked = options.special; document.getElementById('exclude').value = options.exclude; document.getElementById('directcopy').checked = options.directcopy; document.getElementById('pw').value = randPassword(generateLength(), getParams().special, getParams().exclude); if (options.directcopy) { copypasstoclippboard(); } }); });