import React from 'react'; import { Search, ZoomIn } from 'lucide-react'; import ScoreRing from '../ui/ScoreRing'; import MetricCard from '../ui/MetricCard'; import TestExplanation from '../ui/TestExplanation'; const API_BASE = import.meta.env.VITE_API_URL || 'http://127.0.0.1:8000'; const ElaTab = ({ result, setZoomedImage, }) => { return ( <>
Error Level Analysis (ELA)
JPEG Compression History & Chrominance Anomalies
{/* HERO VISUALS */}
{result.ela_analysis.ela_image_path && (
setZoomedImage(`${API_BASE}/${result.ela_analysis.ela_image_path}`)}> Standard ELA
Standard ELA Variance
)} {result.ela_analysis.ghosting_path && (
setZoomedImage(`${API_BASE}/${result.ela_analysis.ghosting_path}`)}> JPEG Ghosting
JPEG Ghosting Map
)} {result.ela_analysis.hsv_ela_path && (
setZoomedImage(`${API_BASE}/${result.ela_analysis.hsv_ela_path}`)}> HSV ELA
HSV Saturation ELA
)}
{/* METRICS & SCORE */}

Compression Metrics

0.4 ? 'danger' : 'neutral'} /> 10.0 ? 'warning' : 'neutral'} />
); }; export default React.memo(ElaTab);