import { useState } from "react"; import type { FeatureCollection } from "@/types/geo"; import { useBackgroundSessionState } from "@/lib/editor/session/useBackgroundSessionState"; import { useEntitySessionState } from "@/lib/editor/session/useEntitySessionState"; import { useSectionSessionState } from "@/lib/editor/session/useSectionSessionState"; import { useTimelineState } from "@/lib/editor/session/useTimelineState"; import type { EditorMode, TimelineRange } from "@/lib/editor/session/sessionTypes"; export type { CreatedEntitySummary, EditorMode, EntityFormState, GeometryMetaFormState, PendingEntityCreate, TimelineRange, } from "@/lib/editor/session/sessionTypes"; type Options = { emptyFeatureCollection: FeatureCollection; defaultEditorUserId: string; fallbackTimelineRange: TimelineRange; currentYear: number; }; export function useEditorSessionState(options: Options) { const [mode, setMode] = useState("idle"); const [initialData, setInitialData] = useState(options.emptyFeatureCollection); const section = useSectionSessionState({ defaultEditorUserId: options.defaultEditorUserId, }); const entity = useEntitySessionState(); const timeline = useTimelineState({ currentYear: options.currentYear, fallbackTimelineRange: options.fallbackTimelineRange, }); const background = useBackgroundSessionState(); return { mode, setMode, initialData, setInitialData, ...section, ...entity, ...timeline, ...background, }; }