-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpopup.js
63 lines (51 loc) · 2.13 KB
/
popup.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
document.addEventListener('DOMContentLoaded', function() {
var angle = 0;
let passField = document.getElementById('password-field');
let generateButton = document.getElementById('generate-button');
let slider = document.getElementById('length-slider');
let sliderValue = document.getElementById('length-value');
chrome.storage.local.get([
'defaultLength',
'hidePassword'
], function(result) {
// Handle default length
let passLength = parseInt(result.defaultLength);
passField.value = generatePassword(passLength);
sliderValue.innerHTML = passLength;
slider.value = passLength;
// Handle hidePassword
if (result.hidePassword)
document.getElementById('password-field').type = 'password';
});
generateButton.addEventListener('click', function() {
passField.value = generatePassword(sliderValue.innerHTML);
angle -= 180;
document.getElementById('generate-icon').style.transform = `rotate(${angle}deg)`;
});
document.getElementById('copy-button').addEventListener('click', function() {
passField.select()
passField.setSelectionRange(0, 99999);
navigator.clipboard.writeText(passField.value);
window.getSelection().removeAllRanges();
let tooltip = document.getElementById('textTooltip');
tooltip.innerHTML = "Copied!";
document.getElementById('copy-icon').style.color = 'royalblue';
setTimeout(() => {
tooltip.innerHTML = "Copy";
document.getElementById('copy-icon').style.color = 'black';
}, "2000");
});
slider.oninput = function() {
sliderValue.innerHTML = this.value;
passField.value = generatePassword(sliderValue.innerHTML);
}
});
function generatePassword(length = 16) {
let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*'
let array = new Uint32Array(chars.length);
let password = '';
window.crypto.getRandomValues(array);
for (let i = 0; i < length; i++)
password += chars[array[i] % chars.length];
return password;
}