Skip to content

Commit 27e6f40

Browse files
authored
Update installer.js
1 parent e94da8a commit 27e6f40

File tree

1 file changed

+30
-6
lines changed

1 file changed

+30
-6
lines changed

web/installer.js

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,43 @@ function loadingImg(phase) {
22
const img = document.querySelector('.logo-img');
33
if (!img) return;
44

5-
// Clamp phase between 0 and 100
65
phase = Math.max(0, Math.min(phase, 100));
7-
8-
// Convert phase to degrees
96
const degrees = (phase / 100) * 360;
107

11-
// White = fully visible, semi-transparent = 50% opacity
12-
img.style.webkitMaskImage = `conic-gradient(rgba(255,255,255,1) 0deg ${degrees}deg, rgba(255,255,255,0.5) ${degrees}deg 360deg)`;
13-
img.style.maskImage = `conic-gradient(rgba(255,255,255,1) 0deg ${degrees}deg, rgba(255,255,255,0.5) ${degrees}deg 360deg)`;
8+
img.style.webkitMaskImage = `conic-gradient(rgba(255,255,255,1) 0deg ${degrees}deg, rgba(255,255,255,0.7) ${degrees}deg 360deg)`;
9+
img.style.maskImage = `conic-gradient(rgba(255,255,255,1) 0deg ${degrees}deg, rgba(255,255,255,0.7) ${degrees}deg 360deg)`;
1410
img.style.webkitMaskRepeat = 'no-repeat';
1511
img.style.maskRepeat = 'no-repeat';
1612
img.style.webkitMaskPosition = 'center';
1713
img.style.maskPosition = 'center';
1814
img.style.webkitMaskSize = 'contain';
1915
img.style.maskSize = 'contain';
2016
}
17+
18+
let pulseInterval = null;
19+
function pulse(state) {
20+
const img = document.querySelector('.logo-img');
21+
if (!img) return;
22+
23+
if (state === 'reset') {
24+
clearInterval(pulseInterval);
25+
pulseInterval = null;
26+
img.style.transition = 'transform 0.2s ease';
27+
img.style.transform = 'scale(0.8)';
28+
} else if (state === true) {
29+
if (pulseInterval) return; // already pulsing
30+
let growing = true;
31+
img.style.transition = 'transform 0.2s ease';
32+
pulseInterval = setInterval(() => {
33+
img.style.transform = growing ? 'scale(1)' : 'scale(0.8)';
34+
growing = !growing;
35+
}, 200);
36+
} else if (state === false) {
37+
if (pulseInterval) {
38+
clearInterval(pulseInterval);
39+
pulseInterval = null;
40+
}
41+
img.style.transition = 'transform 0.2s ease';
42+
img.style.transform = 'scale(1)';
43+
}
44+
}

0 commit comments

Comments
 (0)