Skip to content

Commit b748d2a

Browse files
authored
Website Update
1 parent 7b66fe2 commit b748d2a

2 files changed

Lines changed: 28 additions & 32 deletions

File tree

docs/assets/js/shell.js

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
const base = (body?.getAttribute('data-base') || '.').trim();
66
const assetVersion = '20260320h';
77
const prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
8+
const SETTLE_PASS_DELAYS = [0, 140, 320, 560];
89

910
const projects = [
1011
{
@@ -95,6 +96,27 @@
9596
}
9697
}
9798

99+
function createSettledScheduler(callback) {
100+
const timers = [];
101+
102+
const clear = () => {
103+
while (timers.length) {
104+
window.clearTimeout(timers.pop());
105+
}
106+
};
107+
108+
const schedule = (baseDelay = 0, beforeSchedule) => {
109+
clear();
110+
beforeSchedule?.();
111+
112+
SETTLE_PASS_DELAYS.forEach((offset) => {
113+
timers.push(window.setTimeout(callback, baseDelay + offset));
114+
});
115+
};
116+
117+
return { clear, schedule };
118+
}
119+
98120
function getNavOffset(){
99121
const nav = document.querySelector('.nav');
100122
if (!nav) return 24;
@@ -319,7 +341,6 @@
319341
let backdrop = document.querySelector('.nav-backdrop');
320342
let last = null;
321343
let ticking = false;
322-
const settleTimers = [];
323344

324345
const getScrolled = () => {
325346
const scrollEl = document.scrollingElement || document.documentElement || document.body;
@@ -357,18 +378,9 @@
357378
requestAnimationFrame(compute);
358379
};
359380

360-
const clearSettleTimers = () => {
361-
while (settleTimers.length) {
362-
window.clearTimeout(settleTimers.pop());
363-
}
364-
};
365-
381+
const settledChange = createSettledScheduler(onChange);
366382
const scheduleSettledChange = (baseDelay = 0) => {
367-
clearSettleTimers();
368-
resetBackdropState();
369-
[baseDelay, baseDelay + 140, baseDelay + 320, baseDelay + 560].forEach((delay) => {
370-
settleTimers.push(window.setTimeout(onChange, delay));
371-
});
383+
settledChange.schedule(baseDelay, resetBackdropState);
372384
};
373385

374386
compute();
@@ -968,14 +980,9 @@
968980
};
969981

970982
let frame = 0;
971-
const settleTimers = [];
972-
const clearScheduledBuilds = () => {
983+
const cancelPendingBuild = () => {
973984
window.cancelAnimationFrame(frame);
974985
frame = 0;
975-
976-
while (settleTimers.length) {
977-
window.clearTimeout(settleTimers.pop());
978-
}
979986
};
980987

981988
const runBuild = () => new Promise((resolve) => {
@@ -1003,20 +1010,9 @@
10031010
});
10041011
});
10051012

1006-
const scheduleBuild = (delay = 0) => {
1007-
clearScheduledBuilds();
1008-
settleTimers.push(window.setTimeout(() => {
1009-
runBuild();
1010-
}, delay));
1011-
};
1012-
1013+
const settledBuild = createSettledScheduler(runBuild);
10131014
const scheduleSettledBuild = (baseDelay = 0) => {
1014-
clearScheduledBuilds();
1015-
[baseDelay, baseDelay + 140, baseDelay + 320, baseDelay + 560].forEach((delay) => {
1016-
settleTimers.push(window.setTimeout(() => {
1017-
runBuild();
1018-
}, delay));
1019-
});
1015+
settledBuild.schedule(baseDelay, cancelPendingBuild);
10201016
};
10211017

10221018
if (document.fonts?.ready) {

docs/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,6 @@ <h2>Live Modules</h2>
133133

134134
<div id="footer-slot"></div>
135135

136-
<script src="assets/js/shell.js?v=20260321f" defer></script>
136+
<script src="assets/js/shell.js?v=20260321g" defer></script>
137137
</body>
138138
</html>

0 commit comments

Comments
 (0)