t2av_eval / frontend /src /lib /useAnnotations.js
Youngsun's picture
T2AV eval site: guideline to training to eval, dghadiya storage
44e5f85
Raw
History Blame Contribute Delete
1.29 kB
import { useState, useCallback } from "react";
import { createEmptyAnnotations } from "./promptSchema";
// Shared annotation-state logic for the Training and Evaluation pages: an
// empty {events, video} structure derived from an item's applicable axes,
// plus update helpers. `resetFor(item)` re-initializes when the current
// item/video changes (e.g. moving to the next task).
export default function useAnnotations(initialItem) {
const [annotations, setAnnotations] = useState(() => createEmptyAnnotations(initialItem));
const updateEventField = useCallback((eventId, axisId, field, value) => {
setAnnotations((prev) => ({
...prev,
events: {
...prev.events,
[eventId]: {
...prev.events[eventId],
[axisId]: { ...prev.events[eventId][axisId], [field]: value }
}
}
}));
}, []);
const updateVideoField = useCallback((axisId, field, value) => {
setAnnotations((prev) => ({
...prev,
video: {
...prev.video,
[axisId]: { ...prev.video[axisId], [field]: value }
}
}));
}, []);
const resetFor = useCallback((item) => {
setAnnotations(createEmptyAnnotations(item));
}, []);
return { annotations, updateEventField, updateVideoField, resetFor, setAnnotations };
}