analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
75 lines • 2.72 kB
TypeScript
import type { Lesson } from '../../types/lessons';
import type { WhiteboardImage } from '../../Whiteboard/index';
import type { BaseApiClient } from '../../types/api';
import type { ActivityModelTableItem } from '../../types/activitiesHistory';
/**
* Extended lesson type with optional media properties
*/
interface LessonWithMedia extends Lesson {
videoSrc?: string;
videoPoster?: string;
videoSubtitles?: string;
podcastSrc?: string;
podcastTitle?: string;
boardImages?: WhiteboardImage[];
}
type PreviewLesson = LessonWithMedia & {
position?: number;
};
interface LessonPreviewProps {
title?: string;
lessons?: PreviewLesson[];
onRemoveAll?: () => void;
onRemoveLesson?: (lessonId: string) => void;
className?: string;
onReorder?: (orderedLessons: PreviewLesson[]) => void;
/**
* Emits the current ordered list (with positions) whenever it changes.
*/
onPositionsChange?: (orderedLessons: PreviewLesson[]) => void;
/**
* Callback when video time updates
*/
onVideoTimeUpdate?: (lessonId: string, time: number) => void;
/**
* Callback when video completes
*/
onVideoComplete?: (lessonId: string) => void;
/**
* Callback when podcast ends
*/
onPodcastEnded?: (lessonId: string) => void | Promise<void>;
/**
* Get initial timestamp for a lesson
*/
getInitialTimestamp?: (lessonId: string) => number;
/** User ID used to scope video-progress localStorage keys per user */
userId?: string;
/**
* Callback when create new activity is clicked
*/
onCreateNewActivity?: () => void;
/**
* API client for fetching activity models
*/
apiClient: BaseApiClient;
/**
* Callback when an activity model is selected
*/
onActivitySelected?: (model: ActivityModelTableItem) => void;
/**
* Callback when edit activity button is clicked
*/
onEditActivity?: (activity: ActivityModelTableItem) => void;
/**
* Callback when remove activity button is clicked
*/
onRemoveActivity?: () => void;
/**
* Initial selected activity (if any)
*/
selectedActivity?: ActivityModelTableItem | null;
}
export declare const LessonPreview: ({ title, lessons, onRemoveAll, onRemoveLesson, className, onReorder, onPositionsChange, onVideoTimeUpdate, onVideoComplete, onPodcastEnded, getInitialTimestamp, userId, onCreateNewActivity, apiClient, onActivitySelected, onEditActivity, onRemoveActivity, selectedActivity: initialSelectedActivity, }: LessonPreviewProps) => import("react/jsx-runtime").JSX.Element;
export type { LessonPreviewProps, PreviewLesson };
//# sourceMappingURL=LessonPreview.d.ts.map