Skip to content

Commit d6aec4d

Browse files
committed
feat: add keyboard controls to toggle play/pause for timeline animation in dashboard
1 parent 6693b21 commit d6aec4d

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

components/dashboard/Dashboard.tsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,29 @@ export function Dashboard() {
182182
return () => clearInterval(intervalId);
183183
}, [animate, animationSpeed, dateRange.end]);
184184

185+
// Spacebar to toggle play/pause
186+
React.useEffect(() => {
187+
const handleKeyDown = (e: KeyboardEvent) => {
188+
// Ignore if user is typing in an input
189+
if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) {
190+
return;
191+
}
192+
if (e.code === "Space") {
193+
e.preventDefault();
194+
setAnimate((prev) => {
195+
if (!prev && date >= dateRange.end) {
196+
// If starting from end, reset to beginning first
197+
setDate(dateRange.start);
198+
}
199+
return !prev;
200+
});
201+
}
202+
};
203+
204+
window.addEventListener("keydown", handleKeyDown);
205+
return () => window.removeEventListener("keydown", handleKeyDown);
206+
}, [date, dateRange.start, dateRange.end]);
207+
185208
// Memoize available node IDs
186209
const availableNodeIds = React.useMemo(
187210
() => new Set(filteredByToken.nodes.map((n) => n.id)),

0 commit comments

Comments
 (0)