import React, { ReactNode } from 'react'; import { Role } from './useClassroom.ts'; import { useClassroomContext } from './ClassroomProvider.tsx'; import { VideoCameraIcon, CameraIcon, MicrophoneIcon, ShareIcon, ClipboardDocumentIcon, PaperAirplaneIcon } from '@heroicons/react/24/outline'; interface ClassroomLayoutProps { children: ReactNode; role: Role; } export const ClassroomLayout = ({ children, role }: ClassroomLayoutProps) => { const [showVideo, setShowVideo] = React.useState(role !== Role.Teacher); const [showShareLink, setShowShareLink] = React.useState(false); const { remoteVideoContainer, isCameraOn, isAudioOn, isScreenSharing, toggleCamera, toggleAudio, toggleScreenShare, messageList, msgText, setMsgText, sendMessage, handUpList, questions, classStatus, shareLink } = useClassroomContext(); return (
{/* 视频区域 */} {showVideo && (
{/* 远程视频将在这里动态添加 */}
)} {/* 消息和控制面板列 */}
{/* 控制面板 */}
{role === Role.Teacher && ( )} {role === Role.Teacher && ( )} {role === Role.Teacher && shareLink && ( )}
{showShareLink && shareLink && (
)} {/* 角色特定内容 */}
{children}
{/* 消息区域 */}
{messageList.map((msg, i) => (
{msg}
))}