import { create } from "zustand"; interface GraphHighlightsState { documentIds: string[]; lastUpdated: number; setDocumentIds: (ids: string[]) => void; clear: () => void; } export const useGraphHighlightsStore = create()( (set, get) => ({ documentIds: [], lastUpdated: 0, setDocumentIds: (ids) => { const next = Array.from(new Set(ids)); const prev = get().documentIds; if ( prev.length === next.length && prev.every((id) => next.includes(id)) ) { return; } set({ documentIds: next, lastUpdated: Date.now() }); }, clear: () => set({ documentIds: [], lastUpdated: Date.now() }), }), ); export function useGraphHighlights() { const documentIds = useGraphHighlightsStore((s) => s.documentIds); const lastUpdated = useGraphHighlightsStore((s) => s.lastUpdated); const setDocumentIds = useGraphHighlightsStore((s) => s.setDocumentIds); const clear = useGraphHighlightsStore((s) => s.clear); return { documentIds, lastUpdated, setDocumentIds, clear }; }