Spaces:
Running
Running
File size: 2,227 Bytes
3b7fd58 75fc585 3b7fd58 75fc585 3b7fd58 75fc585 3b7fd58 75fc585 3b7fd58 75fc585 3b7fd58 75fc585 7357db4 75fc585 3b7fd58 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | const { useState, useRef, useEffect, useCallback } = React;
const STATUS_MESSAGES = {
uploading: 'Uploading video\u2026',
detecting: 'Detecting faces & predicting deepfake\u2026',
processing_video: 'Generating face detection video\u2026',
};
function barClass(s) { return s > 0.8 ? 'bar-green' : s > 0.2 ? 'bar-orange' : 'bar-red'; }
function scoreClass(s) { return s > 0.8 ? 'score-green' : s > 0.2 ? 'score-orange' : 'score-red'; }
/* ββ Simple hash-based router ββ */
function useHashRoute() {
const [route, setRoute] = useState(window.location.hash || '#/');
useEffect(() => {
const onHash = () => setRoute(window.location.hash || '#/');
window.addEventListener('hashchange', onHash);
return () => window.removeEventListener('hashchange', onHash);
}, []);
return route;
}
/* ββ Navbar ββ */
function Navbar({ route }) {
return (
<header className="navbar">
<div className="logo"><span>AI</span>-Deepfake Video Detection</div>
<nav>
<a href="#/" className={route === '#/' || route === '' ? 'active' : ''}>Product</a>
<a href="#/technology" className={route === '#/technology' ? 'active' : ''}>Technology</a>
</nav>
</header>
);
}
/* ββ Main App ββ */
function App() {
const [file, setFile] = useState(null);
const [status, setStatus] = useState(null);
const [error, setError] = useState(null);
const [result, setResult] = useState(null);
const [submitting, setSubmitting] = useState(false);
const route = useHashRoute();
return (
<>
<Navbar route={route} />
{route === '#/technology' ? (
<TechnologyPage />
) : (
<ProductPage
file={file} setFile={setFile}
status={status} setStatus={setStatus}
error={error} setError={setError}
result={result} setResult={setResult}
submitting={submitting} setSubmitting={setSubmitting}
/>
)}
</>
);
}
ReactDOM.createRoot(document.getElementById('root')).render(<App />);
|