openlearn-next 0.3.18 → 0.3.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/assets/{AdminDirectoryView-BtdFA-PR.js → AdminDirectoryView-CGo33RNh.js} +1 -1
  2. package/dist/assets/{BatchPickerModal-BQ_vsb5h.js → BatchPickerModal-CasfiwEQ.js} +1 -1
  3. package/dist/assets/{ClassesView-D_m_99Wk.js → ClassesView-DIyJwydJ.js} +1 -1
  4. package/dist/assets/{CloudDriveModal-BHWCchwE.js → CloudDriveModal-C6fpWLLE.js} +1 -1
  5. package/dist/assets/{ComputerLabView-n5hzKtEx.js → ComputerLabView-DGha_J8B.js} +1 -1
  6. package/dist/assets/CourseManagement-2o8YUTDb.js +1 -0
  7. package/dist/assets/{CourseWizardModal-1F_Ksxgf.js → CourseWizardModal-Clo7hCCp.js} +1 -1
  8. package/dist/assets/{CoursewareHubPanel-B0JwbcQz.js → CoursewareHubPanel-CEK_QEc5.js} +1 -1
  9. package/dist/assets/{Dashboard-CgJNFUha.js → Dashboard-CBIiLzje.js} +1 -1
  10. package/dist/assets/{ExportWeightModal-B2wHglNt.js → ExportWeightModal-DkDuPsiM.js} +1 -1
  11. package/dist/assets/{HelpTour-C3G0EsYT.js → HelpTour-Dlc1vvy3.js} +1 -1
  12. package/dist/assets/{HelpView-Bgxlwpn_.js → HelpView-g1BzpeC9.js} +1 -1
  13. package/dist/assets/{ImportLessonsModal-xjfRYYa0.js → ImportLessonsModal-DMyN1EmC.js} +1 -1
  14. package/dist/assets/{ImportModal-ChLAX_xg.js → ImportModal-B2acbUT8.js} +1 -1
  15. package/dist/assets/{InteractiveCoursewareViewer-pi7sr3lt.js → InteractiveCoursewareViewer-DEicS9GQ.js} +1 -1
  16. package/dist/assets/{InteractiveWhiteboard-CsKeinZt.js → InteractiveWhiteboard-DbpOL5pI.js} +1 -1
  17. package/dist/assets/{LazyCourseware-Bw86DSzq.js → LazyCourseware-Bjy3qJWw.js} +2 -2
  18. package/dist/assets/{LazyWhiteboard-XI8iSIjM.js → LazyWhiteboard-D4Bj3dzG.js} +2 -2
  19. package/dist/assets/{LessonEditorView-3TnocL3v.js → LessonEditorView-DpU2g0Uq.js} +1 -1
  20. package/dist/assets/{LiveClassroomView-CQGaFkzD.js → LiveClassroomView-Bqrth_T2.js} +1 -1
  21. package/dist/assets/{NotificationDetailModal-CI4IfD2v.js → NotificationDetailModal-DC3AYUtD.js} +1 -1
  22. package/dist/assets/PluginView-S6TW3dLz.js +65 -0
  23. package/dist/assets/{ProcessLogsModal-uJqQQFyw.js → ProcessLogsModal-MtK-Pe4R.js} +1 -1
  24. package/dist/assets/{QuizGeneratorModal-Bul00fIH.js → QuizGeneratorModal-Bh6XOC83.js} +1 -1
  25. package/dist/assets/{StudentAssignmentView-CaOXzBkt.js → StudentAssignmentView-BCwbft0k.js} +1 -1
  26. package/dist/assets/{StudentLessonView-6l-A6scB.js → StudentLessonView-CewqFUl5.js} +1 -1
  27. package/dist/assets/{StudentPreviewModal-CnWC2qso.js → StudentPreviewModal-Blww1Gv5.js} +1 -1
  28. package/dist/assets/{StudentView-BtGPu4nl.js → StudentView-CR-84lLY.js} +2 -2
  29. package/dist/assets/{SystemResourceLibraryModal-CiRD12Rw.js → SystemResourceLibraryModal-Dyv2YJ7c.js} +1 -1
  30. package/dist/assets/{TeacherView-_iKPvpXI.js → TeacherView-Cszhv8bO.js} +2 -2
  31. package/dist/assets/{TimetableView-B0yL3omc.js → TimetableView-Do_LWpV2.js} +4 -4
  32. package/dist/assets/index-Ch_mD6B0.css +1 -0
  33. package/dist/assets/{index-AdOtUso0.js → index-CnuEzAfQ.js} +4 -4
  34. package/dist/assets/{vendor-icons-BHXru9a4.js → vendor-icons-B2DRJfZU.js} +1 -1
  35. package/dist/index.html +2 -2
  36. package/dist/server.cjs +422 -232
  37. package/package.json +17 -17
  38. package/dist/assets/CourseManagement-DamuhaYN.js +0 -1
  39. package/dist/assets/PluginView-LokCtvB8.js +0 -65
  40. package/dist/assets/index-CM3Tw-Rg.css +0 -1
@@ -1 +1 @@
1
- import{j as e}from"./vendor-react-B0t7H3hh.js";import{L as k}from"./LazyWhiteboard-XI8iSIjM.js";import{L as C}from"./LazyCourseware-Bw86DSzq.js";import{m as z,M as $}from"./index-AdOtUso0.js";import{E as L,ap as E,X as P,B as S,a7 as g,a6 as f,a4 as T,aq as F,s as I}from"./vendor-icons-BHXru9a4.js";import"./vendor-utils-m0Urvtws.js";import"./vendor-pdf-Bw0ZQZtM.js";import"./vendor-motion-DjY2czvL.js";import"./vendor-pptx-C5-U7ieS.js";import"./vendor-charts-U9fLlNC_.js";function H(p){const{isLessonPreviewVisible:b,setIsLessonPreviewVisible:u,lessons:o,selectedLesson:s,previewFullscreenPanel:r,setPreviewFullscreenPanel:d,previewLessonTab:n,setPreviewLessonTab:c,activeRole:w,elements:y,activeSegmentId:j,setActiveSegmentId:v,fetchElements:i,currentVfsParent:N,setCurrentVfsParent:x,vfsNodes:a,previewSelectedCourseware:m,setPreviewSelectedCourseware:h}=p;return e.jsx(e.Fragment,{children:b&&e.jsx("div",{className:"fixed inset-0 bg-gray-900/60 backdrop-blur-sm flex items-center justify-center p-4 md:p-6 z-[60] overflow-hidden text-gray-850",children:e.jsxs(z.div,{initial:{opacity:0,scale:.96},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.96},className:"bg-white border text-gray-900 border-gray-200 rounded-2xl shadow-2xl w-full max-w-7xl h-[90vh] flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"p-4 border-b border-gray-100 flex items-center justify-between bg-indigo-50/70 shrink-0 select-none",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"bg-indigo-600 text-white p-2 rounded-lg shadow-sm",children:e.jsx(L,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"font-bold text-gray-900 text-base flex items-center gap-2",children:"学生视角预览 (Student Perspective Preview)"}),e.jsxs("p",{className:"text-xs text-gray-500 mt-0.5",children:["正在预览课程:"," ",e.jsx("span",{className:"font-semibold text-gray-700",children:o.find(t=>t.id===s)?.title})," ","• 演示同步与交互"]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{type:"button",onClick:()=>{const t=`${window.location.origin}${window.location.pathname}?mode=student_live&lessonId=${encodeURIComponent(s||"")}#/student_live`;window.open(t,"_blank")},className:"px-3 py-1.5 bg-indigo-600 hover:bg-indigo-700 text-white text-xs font-semibold rounded-lg shadow-sm transition-all cursor-pointer flex items-center gap-1.5",title:"在独立浏览器新Tab中打开学生端,支持双屏或分屏预览",children:[e.jsx(E,{size:13}),e.jsx("span",{children:"独立Tab预览"})]}),e.jsxs("button",{type:"button",onClick:()=>u(!1),className:"px-3.5 py-1.5 bg-gray-100 hover:bg-gray-200 text-gray-600 hover:text-gray-800 text-xs font-semibold rounded-lg shadow-sm transition-all cursor-pointer flex items-center gap-1 border border-gray-200",children:[e.jsx(P,{size:14})," 退出预览"]})]})]}),e.jsxs("div",{className:"flex-1 flex min-h-0 bg-slate-50/50 p-4 gap-4",children:[e.jsxs("div",{className:`${r==="left"?"w-full":"w-1/3"} bg-white border border-gray-200 rounded-xl p-4 flex flex-col min-h-0 shadow-sm ${r==="right"?"hidden":""} transition-all duration-300`,children:[e.jsxs("div",{className:"text-xs font-bold uppercase tracking-wider text-gray-400 mb-3 border-b border-gray-100 pb-2 flex items-center justify-between shrink-0 select-none",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(S,{size:14,className:"text-indigo-500"})," Lesson Content (课程内容)"]}),e.jsx("button",{onClick:()=>d(t=>t==="left"?"none":"left"),className:"p-1 hover:bg-gray-100 text-gray-400 hover:text-gray-700 rounded transition-colors cursor-pointer flex items-center gap-1",title:r==="left"?"退出全屏":"全屏",children:r==="left"?e.jsxs(e.Fragment,{children:[e.jsx(g,{size:13}),e.jsx("span",{className:"text-xs font-medium",children:"退出全屏"})]}):e.jsxs(e.Fragment,{children:[e.jsx(f,{size:13}),e.jsx("span",{className:"text-xs font-medium",children:"全屏"})]})})]}),e.jsx("div",{className:"flex-1 overflow-y-auto prose prose-sm prose-indigo max-w-none text-gray-700 pr-1",children:e.jsx($,{children:o.find(t=>t.id===s)?.content||""})})]}),e.jsxs("div",{className:`${r==="right"?"w-full flex-grow":"flex-1"} bg-white border border-gray-200 rounded-xl p-4 flex flex-col min-h-0 shadow-sm ${r==="left"?"hidden":""} transition-all duration-300`,children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-gray-100 pb-3 mb-3 shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("button",{onClick:()=>c("whiteboard"),className:`px-3 py-1.5 text-xs font-semibold rounded-lg transition-all cursor-pointer ${n==="whiteboard"?"bg-indigo-600 text-white shadow-sm":"text-gray-500 hover:bg-gray-100"}`,children:"Interactive Whiteboard"}),e.jsx("button",{onClick:()=>c("courseware"),className:`px-3 py-1.5 text-xs font-semibold rounded-lg transition-all cursor-pointer ${n==="courseware"?"bg-indigo-600 text-white shadow-sm":"text-gray-500 hover:bg-gray-100"}`,children:"Cloud Apps Viewer"})]}),e.jsx("button",{onClick:()=>d(t=>t==="right"?"none":"right"),className:"p-1 hover:bg-gray-100 text-gray-400 hover:text-gray-700 rounded transition-colors cursor-pointer flex items-center gap-1",title:r==="right"?"退出全屏":"全屏",children:r==="right"?e.jsxs(e.Fragment,{children:[e.jsx(g,{size:13}),e.jsx("span",{className:"text-xs font-medium",children:"退出全屏"})]}):e.jsxs(e.Fragment,{children:[e.jsx(f,{size:13}),e.jsx("span",{className:"text-xs font-medium",children:"全屏"})]})})]}),e.jsx("div",{className:"flex-grow flex-1 min-h-0 flex flex-col h-full relative",children:n==="whiteboard"?e.jsx("div",{className:"flex-grow flex-1 min-h-0 w-full h-full relative rounded-lg overflow-hidden border border-gray-100 flex flex-col",children:e.jsx(k,{lessonId:s,userRole:w,elements:y,activeSegmentId:j,onSegmentSync:t=>v(t),onElementAdd:async(t,l)=>{await fetch(`/api/lessons/${s}/whiteboard`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:t,data:l})}),i(s)},onElementUpdate:async(t,l)=>{await fetch(`/api/lessons/${s}/whiteboard/${t}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:l})}),i(s)},onElementDelete:async t=>{await fetch(`/api/lessons/${s}/whiteboard/${t}`,{method:"DELETE"}),i(s)},onClearBoard:async()=>{await fetch(`/api/lessons/${s}/whiteboard`,{method:"DELETE"}),i(s)},onRefresh:()=>i(s)})}):e.jsxs("div",{className:"flex-grow flex-1 flex gap-4 min-h-0 w-full h-full",children:[e.jsxs("div",{className:"w-52 flex-shrink-0 bg-gray-50 border border-gray-250/70 rounded-xl p-3 flex flex-col min-h-0 h-full animate-none",children:[e.jsx("h4",{className:"text-xs font-bold uppercase tracking-wider text-gray-550 mb-2 border-b border-gray-200 pb-2",children:"Cloud Apps"}),e.jsxs("div",{className:"flex-1 overflow-y-auto space-y-1",children:[N!==null&&e.jsxs("button",{onClick:()=>x(null),className:"flex items-center gap-1 p-1.5 text-xs text-indigo-600 w-full hover:bg-gray-255 hover:bg-gray-200 rounded-lg mb-1 font-semibold",children:[e.jsx(T,{className:"rotate-180",size:14})," Back to Root"]}),a.filter(t=>t.type==="dir").map(t=>e.jsxs("button",{onClick:()=>x(t.id),className:"w-full text-left p-1.5 rounded-lg text-xs text-gray-700 hover:bg-gray-250 hover:bg-gray-200 flex items-center gap-2 group truncate cursor-pointer font-medium",title:t.name,children:[e.jsx(F,{size:14,className:"text-indigo-400 shrink-0 group-hover:text-indigo-600"}),e.jsx("span",{className:"truncate",children:t.name})]},t.id)),a.filter(t=>t.type==="file"&&(t.name.endsWith(".html")||t.name.endsWith(".htm")||t.content?.includes("<html"))).length===0?e.jsx("div",{className:"text-xs text-center text-gray-400 italic py-4",children:"No interactive HTML apps found."}):a.filter(t=>t.type==="file"&&(t.name.endsWith(".html")||t.name.endsWith(".htm")||t.content?.includes("<html"))).map(t=>e.jsxs("button",{onClick:()=>h(t.id),className:`w-full text-left p-2 rounded-lg text-xs flex items-center gap-2 truncate transition-colors cursor-pointer font-medium ${m===t.id?"bg-indigo-100 text-indigo-700 font-semibold shadow-xs":"text-gray-600 hover:bg-gray-100"}`,title:t.name,children:[e.jsx(I,{size:14,className:"shrink-0 text-indigo-500"}),e.jsx("span",{className:"truncate",children:t.name})]},t.id))]}),e.jsx("div",{className:"mt-2 text-xs text-gray-400 leading-tight",children:"Note: Showing HTML courseware from current OS drive directory."})]}),e.jsx("div",{className:"flex-1 relative bg-white border border-gray-100 rounded-xl overflow-hidden min-h-0 h-full shadow-inner flex flex-col",children:e.jsx(C,{coursewareId:m,onClose:()=>h(null)})})]})})]})]})]})})})}export{H as StudentPreviewModal};
1
+ import{j as e}from"./vendor-react-B0t7H3hh.js";import{L as k}from"./LazyWhiteboard-D4Bj3dzG.js";import{L as C}from"./LazyCourseware-Bjy3qJWw.js";import{m as z,M as $}from"./index-CnuEzAfQ.js";import{E as L,ap as E,X as P,B as S,a7 as g,a6 as f,a4 as T,aq as F,s as I}from"./vendor-icons-B2DRJfZU.js";import"./vendor-utils-m0Urvtws.js";import"./vendor-pdf-Bw0ZQZtM.js";import"./vendor-motion-DjY2czvL.js";import"./vendor-pptx-C5-U7ieS.js";import"./vendor-charts-U9fLlNC_.js";function H(p){const{isLessonPreviewVisible:b,setIsLessonPreviewVisible:u,lessons:o,selectedLesson:s,previewFullscreenPanel:r,setPreviewFullscreenPanel:d,previewLessonTab:n,setPreviewLessonTab:c,activeRole:w,elements:y,activeSegmentId:j,setActiveSegmentId:v,fetchElements:i,currentVfsParent:N,setCurrentVfsParent:x,vfsNodes:a,previewSelectedCourseware:m,setPreviewSelectedCourseware:h}=p;return e.jsx(e.Fragment,{children:b&&e.jsx("div",{className:"fixed inset-0 bg-gray-900/60 backdrop-blur-sm flex items-center justify-center p-4 md:p-6 z-[60] overflow-hidden text-gray-850",children:e.jsxs(z.div,{initial:{opacity:0,scale:.96},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.96},className:"bg-white border text-gray-900 border-gray-200 rounded-2xl shadow-2xl w-full max-w-7xl h-[90vh] flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"p-4 border-b border-gray-100 flex items-center justify-between bg-indigo-50/70 shrink-0 select-none",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"bg-indigo-600 text-white p-2 rounded-lg shadow-sm",children:e.jsx(L,{size:18})}),e.jsxs("div",{children:[e.jsx("h2",{className:"font-bold text-gray-900 text-base flex items-center gap-2",children:"学生视角预览 (Student Perspective Preview)"}),e.jsxs("p",{className:"text-xs text-gray-500 mt-0.5",children:["正在预览课程:"," ",e.jsx("span",{className:"font-semibold text-gray-700",children:o.find(t=>t.id===s)?.title})," ","• 演示同步与交互"]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{type:"button",onClick:()=>{const t=`${window.location.origin}${window.location.pathname}?mode=student_live&lessonId=${encodeURIComponent(s||"")}#/student_live`;window.open(t,"_blank")},className:"px-3 py-1.5 bg-indigo-600 hover:bg-indigo-700 text-white text-xs font-semibold rounded-lg shadow-sm transition-all cursor-pointer flex items-center gap-1.5",title:"在独立浏览器新Tab中打开学生端,支持双屏或分屏预览",children:[e.jsx(E,{size:13}),e.jsx("span",{children:"独立Tab预览"})]}),e.jsxs("button",{type:"button",onClick:()=>u(!1),className:"px-3.5 py-1.5 bg-gray-100 hover:bg-gray-200 text-gray-600 hover:text-gray-800 text-xs font-semibold rounded-lg shadow-sm transition-all cursor-pointer flex items-center gap-1 border border-gray-200",children:[e.jsx(P,{size:14})," 退出预览"]})]})]}),e.jsxs("div",{className:"flex-1 flex min-h-0 bg-slate-50/50 p-4 gap-4",children:[e.jsxs("div",{className:`${r==="left"?"w-full":"w-1/3"} bg-white border border-gray-200 rounded-xl p-4 flex flex-col min-h-0 shadow-sm ${r==="right"?"hidden":""} transition-all duration-300`,children:[e.jsxs("div",{className:"text-xs font-bold uppercase tracking-wider text-gray-400 mb-3 border-b border-gray-100 pb-2 flex items-center justify-between shrink-0 select-none",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(S,{size:14,className:"text-indigo-500"})," Lesson Content (课程内容)"]}),e.jsx("button",{onClick:()=>d(t=>t==="left"?"none":"left"),className:"p-1 hover:bg-gray-100 text-gray-400 hover:text-gray-700 rounded transition-colors cursor-pointer flex items-center gap-1",title:r==="left"?"退出全屏":"全屏",children:r==="left"?e.jsxs(e.Fragment,{children:[e.jsx(g,{size:13}),e.jsx("span",{className:"text-xs font-medium",children:"退出全屏"})]}):e.jsxs(e.Fragment,{children:[e.jsx(f,{size:13}),e.jsx("span",{className:"text-xs font-medium",children:"全屏"})]})})]}),e.jsx("div",{className:"flex-1 overflow-y-auto prose prose-sm prose-indigo max-w-none text-gray-700 pr-1",children:e.jsx($,{children:o.find(t=>t.id===s)?.content||""})})]}),e.jsxs("div",{className:`${r==="right"?"w-full flex-grow":"flex-1"} bg-white border border-gray-200 rounded-xl p-4 flex flex-col min-h-0 shadow-sm ${r==="left"?"hidden":""} transition-all duration-300`,children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-gray-100 pb-3 mb-3 shrink-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("button",{onClick:()=>c("whiteboard"),className:`px-3 py-1.5 text-xs font-semibold rounded-lg transition-all cursor-pointer ${n==="whiteboard"?"bg-indigo-600 text-white shadow-sm":"text-gray-500 hover:bg-gray-100"}`,children:"Interactive Whiteboard"}),e.jsx("button",{onClick:()=>c("courseware"),className:`px-3 py-1.5 text-xs font-semibold rounded-lg transition-all cursor-pointer ${n==="courseware"?"bg-indigo-600 text-white shadow-sm":"text-gray-500 hover:bg-gray-100"}`,children:"Cloud Apps Viewer"})]}),e.jsx("button",{onClick:()=>d(t=>t==="right"?"none":"right"),className:"p-1 hover:bg-gray-100 text-gray-400 hover:text-gray-700 rounded transition-colors cursor-pointer flex items-center gap-1",title:r==="right"?"退出全屏":"全屏",children:r==="right"?e.jsxs(e.Fragment,{children:[e.jsx(g,{size:13}),e.jsx("span",{className:"text-xs font-medium",children:"退出全屏"})]}):e.jsxs(e.Fragment,{children:[e.jsx(f,{size:13}),e.jsx("span",{className:"text-xs font-medium",children:"全屏"})]})})]}),e.jsx("div",{className:"flex-grow flex-1 min-h-0 flex flex-col h-full relative",children:n==="whiteboard"?e.jsx("div",{className:"flex-grow flex-1 min-h-0 w-full h-full relative rounded-lg overflow-hidden border border-gray-100 flex flex-col",children:e.jsx(k,{lessonId:s,userRole:w,elements:y,activeSegmentId:j,onSegmentSync:t=>v(t),onElementAdd:async(t,l)=>{await fetch(`/api/lessons/${s}/whiteboard`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:t,data:l})}),i(s)},onElementUpdate:async(t,l)=>{await fetch(`/api/lessons/${s}/whiteboard/${t}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:l})}),i(s)},onElementDelete:async t=>{await fetch(`/api/lessons/${s}/whiteboard/${t}`,{method:"DELETE"}),i(s)},onClearBoard:async()=>{await fetch(`/api/lessons/${s}/whiteboard`,{method:"DELETE"}),i(s)},onRefresh:()=>i(s)})}):e.jsxs("div",{className:"flex-grow flex-1 flex gap-4 min-h-0 w-full h-full",children:[e.jsxs("div",{className:"w-52 flex-shrink-0 bg-gray-50 border border-gray-250/70 rounded-xl p-3 flex flex-col min-h-0 h-full animate-none",children:[e.jsx("h4",{className:"text-xs font-bold uppercase tracking-wider text-gray-550 mb-2 border-b border-gray-200 pb-2",children:"Cloud Apps"}),e.jsxs("div",{className:"flex-1 overflow-y-auto space-y-1",children:[N!==null&&e.jsxs("button",{onClick:()=>x(null),className:"flex items-center gap-1 p-1.5 text-xs text-indigo-600 w-full hover:bg-gray-255 hover:bg-gray-200 rounded-lg mb-1 font-semibold",children:[e.jsx(T,{className:"rotate-180",size:14})," Back to Root"]}),a.filter(t=>t.type==="dir").map(t=>e.jsxs("button",{onClick:()=>x(t.id),className:"w-full text-left p-1.5 rounded-lg text-xs text-gray-700 hover:bg-gray-250 hover:bg-gray-200 flex items-center gap-2 group truncate cursor-pointer font-medium",title:t.name,children:[e.jsx(F,{size:14,className:"text-indigo-400 shrink-0 group-hover:text-indigo-600"}),e.jsx("span",{className:"truncate",children:t.name})]},t.id)),a.filter(t=>t.type==="file"&&(t.name.endsWith(".html")||t.name.endsWith(".htm")||t.content?.includes("<html"))).length===0?e.jsx("div",{className:"text-xs text-center text-gray-400 italic py-4",children:"No interactive HTML apps found."}):a.filter(t=>t.type==="file"&&(t.name.endsWith(".html")||t.name.endsWith(".htm")||t.content?.includes("<html"))).map(t=>e.jsxs("button",{onClick:()=>h(t.id),className:`w-full text-left p-2 rounded-lg text-xs flex items-center gap-2 truncate transition-colors cursor-pointer font-medium ${m===t.id?"bg-indigo-100 text-indigo-700 font-semibold shadow-xs":"text-gray-600 hover:bg-gray-100"}`,title:t.name,children:[e.jsx(I,{size:14,className:"shrink-0 text-indigo-500"}),e.jsx("span",{className:"truncate",children:t.name})]},t.id))]}),e.jsx("div",{className:"mt-2 text-xs text-gray-400 leading-tight",children:"Note: Showing HTML courseware from current OS drive directory."})]}),e.jsx("div",{className:"flex-1 relative bg-white border border-gray-100 rounded-xl overflow-hidden min-h-0 h-full shadow-inner flex flex-col",children:e.jsx(C,{coursewareId:m,onClose:()=>h(null)})})]})})]})]})]})})})}export{H as StudentPreviewModal};