This commit is contained in:
taDuc
2026-04-20 23:27:38 +07:00
parent 2508172489
commit 3ca7098831
36 changed files with 1939 additions and 1695 deletions

View File

@@ -0,0 +1,49 @@
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<EditorMode>("idle");
const [initialData, setInitialData] = useState<FeatureCollection>(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,
};
}