Download src/lib/types.ts from Mafia2008/slidemap: direct link, hf CLI and curl.
- Browser
- Download file 3.82 kB
-
https://huggingface.co/spaces/Mafia2008/slidemap/resolve/main/src/lib/types.ts
- Command line
-
hf download hf://spaces/Mafia2008/slidemap/src/lib/types.ts
-
curl -L -o types.ts https://huggingface.co/spaces/Mafia2008/slidemap/resolve/main/src/lib/types.ts
3.82 kB
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| // TYPES - Education Platform for HuggingFace Spaces | |
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| // Session Types | |
| export interface Session { | |
| id: string; | |
| name: string; | |
| teacherId: string; | |
| teacherName: string; | |
| createdAt: string; | |
| isActive: boolean; | |
| currentSlide: number; | |
| totalSlides: number; | |
| slideUrls: string[]; | |
| whiteboardData: WhiteboardStroke[]; | |
| studentCount: number; | |
| maxStudents: number; | |
| } | |
| // User Types | |
| export interface User { | |
| id: string; | |
| name: string; | |
| role: 'teacher' | 'student'; | |
| sessionId?: string; | |
| joinedAt: string; | |
| } | |
| // Chat Types | |
| export interface ChatMessage { | |
| id: string; | |
| sessionId: string; | |
| userId: string; | |
| userName: string; | |
| message: string; | |
| isTeacher: boolean; | |
| timestamp: string; | |
| } | |
| // Poll Types | |
| export interface Poll { | |
| id: string; | |
| sessionId: string; | |
| question: string; | |
| options: PollOption[]; | |
| correctAnswer?: string; | |
| duration: number; | |
| createdAt: string; | |
| endsAt: string; | |
| isActive: boolean; | |
| results: Record<string, number>; | |
| totalVotes: number; | |
| votedStudents: string[]; | |
| } | |
| export interface PollOption { | |
| id: string; | |
| text: string; | |
| isCorrect?: boolean; | |
| } | |
| // Doubt Types | |
| export interface Doubt { | |
| id: string; | |
| sessionId: string; | |
| studentId: string; | |
| studentName: string; | |
| question: string; | |
| image?: string; | |
| slideNumber: number; | |
| status: 'pending' | 'in_progress' | 'solved'; | |
| createdAt: string; | |
| solvedAt?: string; | |
| annotatedImage?: string; | |
| teacherResponse?: string; | |
| } | |
| // Reaction Types | |
| export interface Reaction { | |
| sessionId: string; | |
| emoji: string; | |
| count: number; | |
| lastUpdated: string; | |
| } | |
| export type ReactionType = 'π' | 'β€οΈ' | 'π' | 'π' | 'π' | 'π' | 'π₯'; | |
| // Whiteboard Types | |
| export interface WhiteboardStroke { | |
| id: string; | |
| tool: 'pen' | 'eraser' | 'highlighter' | 'text' | 'arrow' | 'circle' | 'rectangle'; | |
| color: string; | |
| lineWidth: number; | |
| points: Point[]; | |
| text?: string; | |
| slideNumber: number; | |
| timestamp: string; | |
| } | |
| export interface Point { | |
| x: number; | |
| y: number; | |
| } | |
| // Slide Types | |
| export interface Slide { | |
| id: string; | |
| sessionId: string; | |
| slideNumber: number; | |
| imageUrl: string; | |
| annotations: WhiteboardStroke[]; | |
| createdAt: string; | |
| } | |
| // SSE Event Types | |
| export type SSEEventType = | |
| | 'connected' | |
| | 'slide_change' | |
| | 'whiteboard_draw' | |
| | 'whiteboard_clear' | |
| | 'new_poll' | |
| | 'poll_update' | |
| | 'poll_ended' | |
| | 'chat_message' | |
| | 'reaction' | |
| | 'new_doubt' | |
| | 'doubt_update' | |
| | 'doubt_solved' | |
| | 'student_joined' | |
| | 'student_left' | |
| | 'session_ended' | |
| | 'presence_update'; | |
| export interface SSEEvent { | |
| id: string; | |
| event: SSEEventType; | |
| data: any; | |
| timestamp: string; | |
| } | |
| // Storage Types (HuggingFace CDN) | |
| export interface StorageFile { | |
| path: string; | |
| url: string; | |
| size: number; | |
| contentType: string; | |
| uploadedAt: string; | |
| } | |
| export interface SessionStorage { | |
| sessionId: string; | |
| slides: StorageFile[]; | |
| whiteboardSnapshots: StorageFile[]; | |
| doubts: StorageFile[]; | |
| chatHistory: ChatMessage[]; | |
| pollHistory: Poll[]; | |
| } | |
| // API Request/Response Types | |
| export interface ApiResponse<T = any> { | |
| success: boolean; | |
| data?: T; | |
| error?: string; | |
| message?: string; | |
| } | |
| // Presence Types | |
| export interface PresenceUser { | |
| id: string; | |
| name: string; | |
| role: 'teacher' | 'student'; | |
| lastSeen: string; | |
| isOnline: boolean; | |
| } | |
| export interface PresenceUpdate { | |
| sessionId: string; | |
| onlineCount: number; | |
| users: PresenceUser[]; | |
| } | |