import { useState } from "react"; import type { TimelineRange } from "@/lib/editor/session/sessionTypes"; type Options = { currentYear: number; fallbackTimelineRange: TimelineRange; }; export function useTimelineState(options: Options) { const [timelineYear, setTimelineYear] = useState(() => clampYearValue( options.currentYear, options.fallbackTimelineRange.min, options.fallbackTimelineRange.max ) ); const [timelineDraftYear, setTimelineDraftYear] = useState(() => clampYearValue( options.currentYear, options.fallbackTimelineRange.min, options.fallbackTimelineRange.max ) ); const [isTimelineLoading, setIsTimelineLoading] = useState(false); const [timelineStatus, setTimelineStatus] = useState(null); return { timelineYear, setTimelineYear, timelineDraftYear, setTimelineDraftYear, isTimelineLoading, setIsTimelineLoading, timelineStatus, setTimelineStatus, }; } function clampYearValue(year: number, minYear: number, maxYear: number): number { const lower = Math.min(minYear, maxYear); const upper = Math.max(minYear, maxYear); if (year < lower) return lower; if (year > upper) return upper; return year; }