import { MemoryRouter as Router, Switch, Route } from 'react-router-dom'; import { IpcRenderer } from 'electron/renderer'; import './App.css'; import { useEffect, useState } from 'react'; import { AppState } from '../main/backend'; import PatternPreview from './PatternPreview'; import GraphVisualization from './Graph'; const ipcRenderer = (window as any).electron.ipcRenderer as IpcRenderer; function tap() { ipcRenderer.send("beat-tracking", "tap"); } const FrontendRoot: React.FC = () => { const [state, setState] = useState(); const pollMain = async () => { const reply = await ipcRenderer.invoke("poll"); setState(reply); } useEffect(() => { const interval = setInterval(pollMain, 20); return () => clearInterval(interval); }); return <> { state ? :
oops
} ; }; const Frontend: React.FC<{ state: AppState }> = ({ state }) => { return <>
{Object.entries(state.patterns).map(([patternId, output]) => ( ))}
{ state.graphData ?

Bass Filtered

Autocorrelation

:
no graph data
}
{JSON.stringify(state)}
; } export default function App() { return ( ); }