// components/CourseDetailDisplayArea.tsx import { motion, useScroll, useTransform } from "framer-motion"; import React, { useContext, useRef, useState } from "react"; import { VideoPlayer } from "@web/src/components/presentation/video-player/VideoPlayer"; import { CourseDetailDescription } from "./CourseDetailDescription"; import { Course, LectureType, PostType } from "@nice/common"; import { CourseDetailContext } from "./CourseDetailContext"; import CollapsibleContent from "@web/src/components/common/container/CollapsibleContent"; import { Skeleton } from "antd"; import { CoursePreview } from "./CoursePreview/CoursePreview"; import ResourcesShower from "@web/src/components/common/uploader/ResourceShower"; import { BookOutlined, CalendarOutlined, EditTwoTone, EyeOutlined, ReloadOutlined, } from "@ant-design/icons"; import dayjs from "dayjs"; import { useNavigate } from "react-router-dom"; import CourseDetailTitle from "./CourseDetailTitle"; // interface CourseDetailDisplayAreaProps { // // course: Course; // // videoSrc?: string; // // videoPoster?: string; // // isLoading?: boolean; // } export const CourseDetailDisplayArea: React.FC = () => { // 创建滚动动画效果 const { course, isLoading, canEdit, lecture, lectureIsLoading, selectedLectureId, } = useContext(CourseDetailContext); const navigate = useNavigate(); const { scrollY } = useScroll(); const videoOpacity = useTransform(scrollY, [0, 200], [1, 0.8]); return (
{/* 固定的视频区域 */} {lectureIsLoading && ( )} {selectedLectureId && !lectureIsLoading && lecture?.meta?.type === LectureType.VIDEO && (
)} {!lectureIsLoading && selectedLectureId && lecture?.meta?.type === LectureType.ARTICLE && (
)}
{/* 课程内容区域 */}
); }; export default CourseDetailDisplayArea;