openlearn-next 0.4.0 → 0.4.2
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.
- package/dist/assets/{BatchPickerModal-BobcoTtn.js → BatchPickerModal-BpWu0Lil.js} +1 -1
- package/dist/assets/ClassesView-KbHEqJto.js +22 -0
- package/dist/assets/{ClassroomCountdownWidget-AWnCu4JJ.js → ClassroomCountdownWidget-96WFRO9A.js} +1 -1
- package/dist/assets/{CloudDriveModal-Dr4kDySU.js → CloudDriveModal-DEQ1nkNk.js} +1 -1
- package/dist/assets/{CourseManagement-DtInD0J-.js → CourseManagement-D3ZpxY0l.js} +1 -1
- package/dist/assets/{CourseWizardModal-B16QBckO.js → CourseWizardModal-Ck_-M8pk.js} +1 -1
- package/dist/assets/{Dashboard-D1gZ_4NI.js → Dashboard-CYbpbofV.js} +1 -1
- package/dist/assets/{ExportWeightModal-UPsVax6L.js → ExportWeightModal-DW2bu9Zz.js} +1 -1
- package/dist/assets/{HelpView-BryOHwLE.js → HelpView-CtzdqhBq.js} +1 -1
- package/dist/assets/{ImportLessonsModal-Dnx_QR0Z.js → ImportLessonsModal-jBuIK453.js} +1 -1
- package/dist/assets/InteractiveCoursewareViewer-Bj7ahXMs.js +1 -0
- package/dist/assets/{InteractiveWhiteboard-550JMFBu.js → InteractiveWhiteboard-B7JcJvDu.js} +1 -1
- package/dist/assets/{LazyCourseware-CLHWQJ8g.js → LazyCourseware-CuiPxhDg.js} +2 -2
- package/dist/assets/{LazyWhiteboard-DJWh6sdV.js → LazyWhiteboard-BJwCEZAU.js} +2 -2
- package/dist/assets/LessonEditorView-DFrOp2qp.js +1 -0
- package/dist/assets/{LiveClassroomView-DgN2Zqe6.js → LiveClassroomView-BZ5nGee3.js} +2 -2
- package/dist/assets/{NotificationDetailModal-CMKHpWX1.js → NotificationDetailModal-Baqnc5pU.js} +1 -1
- package/dist/assets/{PluginView-BQVWPofY.js → PluginView-CCbIuZ24.js} +1 -1
- package/dist/assets/{QuizGeneratorModal-BeaBRn1w.js → QuizGeneratorModal-BBEDssp7.js} +1 -1
- package/dist/assets/StudentAssignmentView-DgIjUsXz.js +1 -0
- package/dist/assets/{StudentLessonView-CMPqL1ia.js → StudentLessonView-CBJbI5x6.js} +1 -1
- package/dist/assets/{StudentPreviewModal-0QSLnD9u.js → StudentPreviewModal-Bh8OZs0t.js} +1 -1
- package/dist/assets/{StudentView-9pjzjJgG.js → StudentView--uGxc5TJ.js} +2 -2
- package/dist/assets/{SystemResourceLibraryModal-COrhUd53.js → SystemResourceLibraryModal-BVCclcqA.js} +1 -1
- package/dist/assets/{TeacherView-mP2YucVr.js → TeacherView-D4Zsc0eZ.js} +2 -2
- package/dist/assets/{index-C70OJPV_.js → index-BKBCBKvy.js} +29 -29
- package/dist/index.html +1 -1
- package/dist/server.cjs +87 -16
- package/package.json +1 -1
- package/dist/assets/ClassesView-DtO0PJXQ.js +0 -22
- package/dist/assets/InteractiveCoursewareViewer-BYMKvIHi.js +0 -1
- package/dist/assets/LessonEditorView-DRwi0sjA.js +0 -1
- package/dist/assets/StudentAssignmentView-Dn4Bgqr2.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as e,r as N}from"./vendor-react-B0t7H3hh.js";import{N as k,a5 as T,r as A,aJ as S,a4 as q,X as _}from"./vendor-icons-BRmhY6fg.js";import{M as C}from"./index-C70OJPV_.js";import{L as E}from"./LazyWhiteboard-DJWh6sdV.js";import"./vendor-utils-m0Urvtws.js";import"./vendor-pdf-D7rGevI1.js";import"./vendor-motion-BFAPOs-b.js";import"./vendor-pptx-C5-U7ieS.js";import"./vendor-charts-qLbgF1eL.js";function O(l){const{setStudentViewStatus:t,setSelectedAssignment:r,selectedAssignment:d}=l;return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("button",{onClick:()=>{t("dashboard"),r(null)},className:"flex items-center gap-2 text-indigo-600 hover:text-indigo-800 transition-colors font-medium text-sm",children:[e.jsx(k,{className:"rotate-180",size:16})," Back to Dashboard"]}),e.jsxs("h2",{className:"text-xl font-bold text-gray-800",children:["Assignment: ",d.title]})]})}function I(l){const{selectedAssignment:t,quizStudentAnswers:r,submitQuizAssignment:d}=l;return e.jsxs("div",{className:"w-1/3 border-r border-gray-100 pr-4 overflow-y-auto hidden md:block",children:[e.jsx("div",{className:"flex justify-between items-center mb-4",children:e.jsx("div",{className:"text-xs font-semibold uppercase tracking-wider text-gray-400",children:t?.content&&t.content.startsWith('{"quizType":"mcq_learning_objectives"')?"Assessment":"Question"})}),t?.content&&t.content.startsWith('{"quizType":"mcq_learning_objectives"')?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"text-xs font-semibold uppercase tracking-wider text-teal-700 bg-teal-50 border border-teal-100 p-2.5 rounded-lg flex items-center gap-1.5 font-sans",children:[e.jsx(T,{size:12,className:"text-teal-600 animate-pulse"})," AI Interactive Evaluation"]}),e.jsx("p",{className:"text-xs text-gray-500 leading-relaxed font-sans",children:"This assessment was automatically mapped to the core learning objectives of your lesson by our tutoring assistant compiler."}),(()=>{try{const s=JSON.parse(t.content);return e.jsxs("div",{className:"space-y-2 font-sans",children:[e.jsx("div",{className:"text-xs font-bold text-gray-400 uppercase tracking-wider",children:"Lesson Learning Objectives:"}),e.jsx("ul",{className:"space-y-1.5",children:(s.learningObjectives||[]).map((i,c)=>e.jsxs("li",{className:"text-xs text-gray-755 flex items-start gap-1.5 font-medium leading-normal",children:[e.jsx("span",{className:"text-indigo-500 shrink-0 select-none",children:"🎯"}),e.jsx("span",{children:i})]},c))})]})}catch{return null}})()]}):e.jsx("div",{className:"prose prose-sm prose-indigo max-w-none mb-6",children:e.jsx(C,{children:t.content||""})}),!t.submission_status&&e.jsxs("div",{className:"mt-8 border-t border-gray-100 pt-6",children:[e.jsx("div",{className:"text-xs font-semibold uppercase tracking-wider text-gray-400 mb-2",children:"Ready to submit?"}),e.jsx("p",{className:"text-xs text-gray-500 mb-4",children:t?.content&&t.content.startsWith('{"quizType":"mcq_learning_objectives"')?"Please answer all the interactive questions on the evaluation sheet, then click Submit.":"You can use the whiteboard to draw or answer, then click submit when finished."}),e.jsx("button",{onClick:async()=>{const s=t?.content&&t.content.startsWith('{"quizType":"mcq_learning_objectives"');if(s&&JSON.stringify(r),s)try{const i=JSON.parse(t.content),c=Object.keys(r).length;if(c<i.questions.length&&!window.confirm(`You have only answered ${c}/${i.questions.length} questions. Are you sure you want to submit your answers?`))return}catch{}await d(!1)},className:"w-full py-2 bg-indigo-600 text-white rounded-lg shadow font-medium hover:bg-indigo-700 transition",children:"Submit"})]}),t.submission_status==="graded"&&t.feedback&&e.jsxs("div",{className:"mt-6 bg-green-50 p-4 rounded-xl border border-green-100",children:[e.jsxs("div",{className:"font-semibold text-green-800 text-sm mb-1 flex items-center gap-1",children:[e.jsx(A,{size:16})," Grade: ",t.score,"%"]}),e.jsx("div",{className:"text-xs text-green-700 whitespace-pre-wrap leading-relaxed font-sans",children:t.feedback})]})]})}function R({assignmentId:l,timeLimitMinutes:t,onTimeUp:r,isSubmitted:d}){const[s,i]=N.useState(null);if(N.useEffect(()=>{if(d||!t||t<=0){i(null);return}const n=`quiz_timer_start_${l}`;let m=sessionStorage.getItem(n),x=m?parseInt(m,10):null;x||(x=Date.now(),sessionStorage.setItem(n,x.toString()));const a=t*60,o=()=>{const j=Math.floor((Date.now()-x)/1e3),b=a-j;b<=0?(i(0),r()):i(b)};o();const g=setInterval(o,1e3);return()=>clearInterval(g)},[l,t,d,r]),!t||t<=0)return null;if(d)return e.jsxs("div",{className:"flex items-center gap-2 font-sans text-xs bg-gray-100 text-gray-600 px-3 py-1.5 rounded-lg border border-gray-200",children:[e.jsx(S,{size:14}),e.jsxs("span",{children:["Time Limit: ",t," mins (Completed)"]})]});if(s===null)return null;const c=Math.floor(s/60),h=s%60,u=s<60;return e.jsxs("div",{className:`flex items-center gap-3 font-sans px-4 py-2.5 rounded-xl border transition-all ${u?"bg-red-50 text-red-700 border-red-200 animate-pulse font-bold":s<180?"bg-amber-50 text-amber-700 border-amber-200 font-semibold":"bg-indigo-50 text-indigo-700 border-indigo-100"}`,children:[e.jsx(S,{size:16,className:u?"text-red-600 animate-pulse":"text-indigo-600"}),e.jsxs("div",{className:"flex-1 flex justify-between items-center text-xs gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"font-medium",children:"Time Remaining:"}),e.jsxs("span",{className:"font-mono ml-1 text-sm bg-black/5 text-slate-800 px-1.5 py-0.5 rounded font-bold",children:[c.toString().padStart(2,"0"),":",h.toString().padStart(2,"0")]})]}),u&&e.jsxs("span",{className:"flex items-center gap-1 text-xs uppercase tracking-wider text-red-600 font-bold animate-pulse",children:[e.jsx(q,{size:12})," Time is almost up!"]})]})]})}function W(l){const{selectedAssignment:t,subAssignmentTab:r,setSubAssignmentTab:d,quizStudentAnswers:s,setQuizStudentAnswers:i,submitQuizAssignment:c,elements:h,activeRole:u,activeStudentId:n,fetchElements:m}=l;return e.jsx("div",{className:"flex-1 relative flex flex-col min-h-0",children:(()=>{const x=t?.content&&t.content.startsWith('{"quizType":"mcq_learning_objectives"');return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex justify-between items-center mb-2",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wider text-gray-500 pointer-events-none",children:x&&r==="quiz"?"Evaluation Sheet":"Live Canvas"}),x&&e.jsxs("div",{className:"flex bg-gray-100 p-0.5 rounded-lg border border-gray-200 text-xs",children:[e.jsx("button",{onClick:()=>d("quiz"),className:`px-2.5 py-0.5 rounded text-xs font-bold transition-all ${r==="quiz"?"bg-white text-indigo-700 shadow-sm":"text-gray-500 hover:text-gray-900"}`,children:"Interactive Test"}),e.jsx("button",{onClick:()=>d("whiteboard"),className:`px-2.5 py-0.5 rounded text-xs font-bold transition-all ${r==="whiteboard"?"bg-white text-indigo-700 shadow-sm":"text-gray-500 hover:text-gray-900"}`,children:"Sketch Whiteboard"})]})]}),t.submission_status&&e.jsx("div",{className:"text-xs uppercase font-bold text-gray-400 bg-gray-100 px-2 py-0.5 rounded",children:"Read Only"})]}),x&&r==="quiz"?e.jsx("div",{className:"flex-1 bg-gray-50/50 rounded-xl border border-gray-200 p-6 overflow-y-auto space-y-6",children:(()=>{try{const a=JSON.parse(t.content);return e.jsxs(e.Fragment,{children:[a.timeLimit>0&&e.jsx(R,{assignmentId:t.id,timeLimitMinutes:a.timeLimit,onTimeUp:()=>c(!0),isSubmitted:!!t.submission_status}),a.questions.map((o,g)=>{const j=s[g],b=!!t.submission_status,w=s[g]===o.correctAnswer;return e.jsxs("div",{className:"bg-white p-5 rounded-xl border border-gray-100 shadow-sm space-y-3 font-sans",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-indigo-50 text-indigo-700 flex items-center justify-center text-xs font-bold ring-1 ring-indigo-100",children:g+1}),e.jsxs("span",{className:"text-xs font-semibold text-teal-700 bg-teal-50 px-2.5 py-0.5 rounded-full border border-teal-100",children:["evaluates: ",o.objective]})]}),b&&e.jsx("span",{className:`text-xs font-bold px-2.5 py-0.5 rounded-full ${w?"bg-green-100 text-green-800":"bg-red-100 text-red-800"}`,children:w?"Correct ✓":`Incorrect (Correct Option: ${o.correctAnswer})`})]}),e.jsx("div",{className:"font-semibold text-gray-800 text-sm",children:o.question}),e.jsx("div",{className:"grid grid-cols-2 gap-3 text-xs pt-1",children:o.options.map((f,$)=>{const y=j===f,v=f===o.correctAnswer;let p="border-gray-200 hover:border-gray-300 bg-white text-gray-700 hover:bg-gray-50/50 cursor-pointer";return b?y?p=v?"border-green-600 bg-green-50 text-green-900 ring-2 ring-green-100":"border-red-600 bg-red-50 text-red-900 ring-2 ring-red-100":v?p="border-green-400 bg-green-50/20 text-green-900":p="border-gray-200 opacity-60 text-gray-400":y&&(p="border-indigo-600 bg-indigo-50/30 text-indigo-900 ring-2 ring-indigo-100 font-medium cursor-pointer"),e.jsxs("div",{onClick:()=>{b||i(z=>({...z,[g]:f}))},className:`p-3 rounded-xl border transition-all duration-150 flex items-center justify-between ${p}`,children:[e.jsx("span",{children:f}),y&&(b?v?e.jsx(A,{size:14,className:"text-green-600 shrink-0"}):e.jsx(_,{size:14,className:"text-red-600 shrink-0"}):e.jsx("div",{className:"w-2 h-2 rounded-full bg-indigo-600 shadow-sm shrink-0"}))]},$)})})]},g)})]})}catch{return e.jsx("div",{className:"text-xs text-red-500 font-sans",children:"Error parsing quiz structure."})}})()}):e.jsx("div",{className:`flex-1 min-h-0 flex flex-col ${t.submission_status?"opacity-90 pointer-events-none filter grayscale-[0.2]":""}`,children:e.jsx(E,{lessonId:`assignment-${t.id}-student-${n}`,elements:h,userRole:u,enableAutoAI:u==="student"&&!t.submission_status,onElementAdd:async(a,o)=>{await fetch(`/api/lessons/assignment-${t.id}-student-${n}/whiteboard`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:a,data:o})}),m(`assignment-${t.id}-student-${n}`)},onElementUpdate:async(a,o)=>{await fetch(`/api/lessons/assignment-${t.id}-student-${n}/whiteboard/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:o})}),m(`assignment-${t.id}-student-${n}`)},onElementDelete:async a=>{await fetch(`/api/lessons/assignment-${t.id}-student-${n}/whiteboard/${a}`,{method:"DELETE"}),m(`assignment-${t.id}-student-${n}`)},onClearBoard:async()=>{await fetch(`/api/lessons/assignment-${t.id}-student-${n}/whiteboard`,{method:"DELETE"}),m(`assignment-${t.id}-student-${n}`)},onRefresh:()=>m(`assignment-${t.id}-student-${n}`)})})]})})()})}function G(l){const{selectedAssignment:t,setStudentViewStatus:r,setSelectedAssignment:d,quizStudentAnswers:s,submitQuizAssignment:i,subAssignmentTab:c,setSubAssignmentTab:h,setQuizStudentAnswers:u,elements:n,activeRole:m,activeStudentId:x,fetchElements:a}=l;return e.jsxs("div",{className:"flex flex-col h-full space-y-4",children:[e.jsx(O,{setStudentViewStatus:r,setSelectedAssignment:d,selectedAssignment:t}),e.jsxs("div",{className:"flex-1 flex gap-6 min-h-0 bg-white border border-gray-200 rounded-xl p-4 shadow-sm",children:[e.jsx(I,{selectedAssignment:t,quizStudentAnswers:s,submitQuizAssignment:i}),e.jsx(W,{selectedAssignment:t,subAssignmentTab:c,setSubAssignmentTab:h,quizStudentAnswers:s,setQuizStudentAnswers:u,submitQuizAssignment:i,elements:n,activeRole:m,activeStudentId:x,fetchElements:a})]})]})}export{G as StudentAssignmentView};
|