import { useState } from "react"; import type { Entity } from "@/types/entities"; import type { FeatureId } from "@/types/geo"; import { DEFAULT_ENTITY_TYPE_ID } from "@/lib/entityTypeOptions"; import type { CreatedEntitySummary, EntityFormState, GeometryMetaFormState, PendingEntityCreate, } from "@/lib/editor/session/sessionTypes"; export function useEntitySessionState() { const [persistedEntities, setPersistedEntities] = useState([]); const [pendingEntityCreates, setPendingEntityCreates] = useState([]); const [createdEntities, setCreatedEntities] = useState([]); const [entityStatus, setEntityStatus] = useState(null); const [selectedFeatureId, setSelectedFeatureId] = useState(null); const [entityForm, setEntityForm] = useState({ name: "", slug: "", type_id: DEFAULT_ENTITY_TYPE_ID, }); const [selectedGeometryEntityIds, setSelectedGeometryEntityIds] = useState([]); const [geometryMetaForm, setGeometryMetaForm] = useState({ time_start: "", time_end: "", binding: "", }); const [isEntitySubmitting, setIsEntitySubmitting] = useState(false); const [entityFormStatus, setEntityFormStatus] = useState(null); const [entitySearchQuery, setEntitySearchQuery] = useState(""); const [entitySearchResults, setEntitySearchResults] = useState([]); const [selectedSearchEntityId, setSelectedSearchEntityId] = useState(null); const [isEntitySearchLoading, setIsEntitySearchLoading] = useState(false); return { persistedEntities, setPersistedEntities, pendingEntityCreates, setPendingEntityCreates, createdEntities, setCreatedEntities, entityStatus, setEntityStatus, selectedFeatureId, setSelectedFeatureId, entityForm, setEntityForm, selectedGeometryEntityIds, setSelectedGeometryEntityIds, geometryMetaForm, setGeometryMetaForm, isEntitySubmitting, setIsEntitySubmitting, entityFormStatus, setEntityFormStatus, entitySearchQuery, setEntitySearchQuery, entitySearchResults, setEntitySearchResults, selectedSearchEntityId, setSelectedSearchEntityId, isEntitySearchLoading, setIsEntitySearchLoading, }; }