File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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,
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;
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) => {
You can’t perform that action at this time.
0 commit comments