Skip to content

Commit 1c51482

Browse files
committed
fix: delay splash spotlight return after cursor leaves
1 parent fedf37f commit 1c51482

1 file changed

Lines changed: 22 additions & 3 deletions

File tree

src/components/SplashBackground.astro

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
const CENTER_X = 0.5;
2121
const CENTER_Y = 0.4;
22+
const RETURN_DELAY_MS = 450;
2223

2324
const state = {
2425
targetX: CENTER_X,
@@ -29,6 +30,25 @@
2930
pointerInside: false,
3031
};
3132

33+
let returnTimer = null;
34+
35+
const cancelReturn = () => {
36+
if (returnTimer !== null) {
37+
clearTimeout(returnTimer);
38+
returnTimer = null;
39+
}
40+
};
41+
42+
const scheduleReturn = () => {
43+
cancelReturn();
44+
returnTimer = setTimeout(() => {
45+
returnTimer = null;
46+
state.pointerInside = false;
47+
state.targetX = CENTER_X;
48+
state.targetY = CENTER_Y;
49+
}, RETURN_DELAY_MS);
50+
};
51+
3252
const setVars = () => {
3353
const dx = state.currentX - 0.5;
3454
const dy = state.currentY - 0.5;
@@ -48,15 +68,14 @@
4868
};
4969

5070
const onPointerMove = (event) => {
71+
cancelReturn();
5172
state.pointerInside = true;
5273
state.targetX = event.clientX / window.innerWidth;
5374
state.targetY = event.clientY / window.innerHeight;
5475
};
5576

5677
const onPointerLeave = () => {
57-
state.pointerInside = false;
58-
state.targetX = CENTER_X;
59-
state.targetY = CENTER_Y;
78+
scheduleReturn();
6079
};
6180

6281
const tick = (timestamp) => {

0 commit comments

Comments
 (0)