import { useCallback, useEffect, useRef, useState } from "react"; import { EChart } from "../charts/EChart.jsx"; import { createMetricTrendOption } from "../charts/options/createMetricTrendOption.js"; const MODAL_TRANSITION_MS = 180; export function MetricTrendModal({ item, onClose }) { const [closing, setClosing] = useState(false); const closeTimerRef = useRef(null); const requestClose = useCallback(() => { if (closing) { return; } setClosing(true); closeTimerRef.current = window.setTimeout(onClose, MODAL_TRANSITION_MS); }, [closing, onClose]); useEffect(() => () => { if (closeTimerRef.current) { window.clearTimeout(closeTimerRef.current); } }, []); useEffect(() => { const closeOnEscape = (event) => { if (event.key === "Escape") { requestClose(); } }; window.addEventListener("keydown", closeOnEscape); return () => window.removeEventListener("keydown", closeOnEscape); }, [requestClose]); return (