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