'use client'; import { createContext, useContext, ReactNode } from 'react'; import { usePDFDocuments } from '@/hooks/pdf/usePDFDocuments'; import { useEPUBDocuments } from '@/hooks/epub/useEPUBDocuments'; import { useHTMLDocuments } from '@/hooks/html/useHTMLDocuments'; import { PDFDocument, EPUBDocument, HTMLDocument } from '@/types/documents'; interface DocumentContextType { // PDF Documents pdfDocs: PDFDocument[]; addPDFDocument: (file: File) => Promise; removePDFDocument: (id: string) => Promise; isPDFLoading: boolean; // EPUB Documents epubDocs: EPUBDocument[]; addEPUBDocument: (file: File) => Promise; removeEPUBDocument: (id: string) => Promise; isEPUBLoading: boolean; // HTML Documents htmlDocs: HTMLDocument[]; addHTMLDocument: (file: File) => Promise; removeHTMLDocument: (id: string) => Promise; isHTMLLoading: boolean; clearPDFs: () => Promise; clearEPUBs: () => Promise; clearHTML: () => Promise; } const DocumentContext = createContext(undefined); export function DocumentProvider({ children }: { children: ReactNode }) { const { documents: pdfDocs, addDocument: addPDFDocument, removeDocument: removePDFDocument, isLoading: isPDFLoading, clearDocuments: clearPDFs } = usePDFDocuments(); const { documents: epubDocs, addDocument: addEPUBDocument, removeDocument: removeEPUBDocument, isLoading: isEPUBLoading, clearDocuments: clearEPUBs } = useEPUBDocuments(); const { documents: htmlDocs, addDocument: addHTMLDocument, removeDocument: removeHTMLDocument, isLoading: isHTMLLoading, clearDocuments: clearHTML } = useHTMLDocuments(); return ( {children} ); } export function useDocuments() { const context = useContext(DocumentContext); if (context === undefined) { throw new Error('useDocuments must be used within a DocumentProvider'); } return context; }