1import{c as et,u as tt,a5 as st,o as rt,r as n,l as a,i as at,j as e,X as be,a6 as nt,x as it,G as lt,e as ot}from"./index-BdXG-xm9.js";import{a as dt,C as ge}from"./circle-check-big-DYI6Wh84.js";import{a as he,C as ct}from"./chevron-left-CRrWlcX8.js";import{C as Z,L as pe}from"./lightbulb-Brm-GFHS.js";import{L as ut}from"./lock-BLe1GjqV.js";import{C as mt}from"./chevron-right-BckH7fFj.js";/** 2 * @license lucide-react v0.454.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const xt=et("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]),I=at(),O=(d,q)=>{var h;return((h=d.ID)==null?void 0:h.trim())||`question-${q}`},P=(d,q)=>(d!==void 0?lt(d):"")||a(q),ee=d=>`${Math.floor(d/60)}:${String(d%60).padStart(2,"0")}`,_t=()=>{const{token:d=""}=tt(),q=st(),h=rt(s=>s.auth.isLoggedIn),[x,f]=n.useState("loading"),[k,E]=n.useState(!1),[z,m]=n.useState(""),[$,fe]=n.useState(a("quiz_take_default_title")),[te,ke]=n.useState(""),[H,se]=n.useState(0),[_e,ye]=n.useState(!1),[re,ve]=n.useState(0),[je,we]=n.useState(!1),[Ne,Se]=n.useState([]),[qe,ze]=n.useState(!1),[Re,Ce]=n.useState(!1),[Te,Qe]=n.useState(!1),[R,Ie]=n.useState(!0),[ae,Pe]=n.useState(!1),[ne,Ee]=n.useState(""),[ie,Ae]=n.useState({}),[C,Be]=n.useState(""),[b,Me]=n.useState([]),[c,le]=n.useState(0),[_,oe]=n.useState({}),[A,de]=n.useState({}),[W,ce]=n.useState({}),[V,ue]=n.useState(""),[De,Le]=n.useState(!1),[u,Oe]=n.useState(null),[T,$e]=n.useState(0),[y,He]=n.useState(0),[v,F]=n.useState(null),[We,me]=n.useState({}),B=n.useRef(!1),Q=n.useRef(!1),M=n.useRef(Promise.resolve()),K=s=>{Q.current=!0,Oe({score:s.Score??0,max:s.MaxScore??0,pct:s.ScorePct??0,passed:!!s.Passed,passScorePct:s.PassScorePct??0,reveal:!!s.Reveal,review:s.Review??[],timeExpired:!!s.TimeExpired}),f("done")};n.useEffect(()=>{document.title=a("quiz_take_document_title",ot);let s=document.head.querySelector('meta[name="robots"]');const t=!s,i=(s==null?void 0:s.getAttribute("content"))??null;return s||(s=document.createElement("meta"),s.name="robots",document.head.appendChild(s)),s.content="noindex",()=>{t?s.remove():i===null?s.removeAttribute("content"):s.content=i}},[]),n.useEffect(()=>{if(!d){f("error"),m(a("quiz_take_error_invalid_link"));return}let s=!1;return(async()=>{f("loading");const t=await I.quizTakeMetadata({Token:d});if(!s){if(!t||t.Success!==!0){f("error"),m(P(t==null?void 0:t.MsgCode,"quiz_take_error_unavailable"));return}fe(t.Title||a("quiz_take_default_title")),ke(t.Description||""),se(t.QuestionCount||0),ye(!!t.RequiresPassword),ve(t.PassScorePct||0),we(!!t.HintsEnabled),Se(t.IntakeFields||[]),ze(!!t.RequiresAuthentication),Ce(!!t.RequiresVerifiedEmail),Qe(!!t.EmailWillBeSharedWithOwner),Ie(t.AccessAllowed!==!1),Pe(!!t.AllowResume),$e(t.QuestionTimeoutSec||0),He(t.TotalTimeLimitSec||0),f("intro")}})(),()=>{s=!0}},[d,h]);const Ve=async s=>{var t,i;if(s.preventDefault(),!!R){m(""),E(!0);try{const r=await I.quizTakeStart({Token:d,Password:ne||void 0,IntakeValues:ie});if(!r||r.Success!==!0){m(P(r==null?void 0:r.MsgCode,"quiz_take_error_start_failed"));return}if(Be(r.AttemptID||""),((t=r.ExpiredResult)==null?void 0:t.Success)===!0){K(r.ExpiredResult);return}const o=r.Questions||[];if(o.length===0){m(a("quiz_take_error_no_questions"));return}const g={};T>0&&o.forEach((D,S)=>{g[O(D,S)]=T});const N={};for(const D of r.SavedAnswers??[]){const S=o.findIndex(L=>L.ID===D.QuestionID);if(S<0)continue;const Ye=O(o[S],S),Ze=((i=o[S].Options)==null?void 0:i.length)??0;N[Ye]=[...new Set(D.SelectedOptions??[])].filter(L=>L>=0&&L<Ze)}const Y=Math.min(Math.max(r.CurrentQuestionIndex??0,0),o.length-1);Me(o),se(o.length),le(Y),oe(N),de({}),ce({}),me(g),F(y>0?Math.max(0,r.RemainingTimeSec??y):null),Le(!!r.Resumed),B.current=!1,Q.current=!1,M.current=Promise.resolve(),f("running")}finally{E(!1)}}},xe=s=>b.map((t,i)=>({QuestionID:t.ID||"",SelectedOptions:s[O(t,i)]??[]})),X=(s,t)=>{if(!C||x!=="running"||!ae&&y<=0)return Promise.resolve(void 0);const i=M.current.catch(()=>{}).then(async()=>{var o;if(Q.current)return;const r=await I.quizTakeProgress({Token:d,AttemptID:C,Answers:xe(s),CurrentQuestionIndex:t});return!r||r.Success!==!0?(m(P(r==null?void 0:r.MsgCode,"quiz_take_error_progress_failed")),r):((o=r.ExpiredResult)==null?void 0:o.Success)===!0?(K(r.ExpiredResult),r):(y>0&&r.RemainingTimeSec!==void 0&&F(Math.max(0,r.RemainingTimeSec)),r)});return M.current=i.then(()=>{},()=>{}),i},Fe=(s,t)=>{if(A[s])return;
6const i=_[s]??[],r=i.includes(t)?i.filter(g=>g!==t):[...i,t],o={..._,[s]:r};oe(o),X(o,c)},G=s=>{const t=Math.min(Math.max(s,0),b.length-1);le(t),X(_,t)},J=async(s=!1)=>{var t;if(!B.current){B.current=!0,m(""),E(!0);try{if(await M.current.catch(()=>{}),Q.current)return;if(s){const r=await X(_,c);if(((t=r==null?void 0:r.ExpiredResult)==null?void 0:t.Success)===!0||Q.current)return}const i=await I.quizTakeSubmit({Token:d,AttemptID:C,Answers:xe(_)});if(!i||i.Success!==!0){m(P(i==null?void 0:i.MsgCode,"quiz_take_error_submit_failed")),B.current=!1;return}K(i)}finally{E(!1)}}},Ke=async(s,t)=>{if(!(!s.ID||!C||V)){m(""),ue(t);try{const i=await I.quizTakeHint({Token:d,AttemptID:C,QuestionID:s.ID});if(!i||i.Success!==!0){m(P(i==null?void 0:i.MsgCode,"quiz_take_error_hint_failed"));return}ce(r=>({...r,[t]:i.Hint||""}))}finally{ue("")}}};n.useEffect(()=>{if(x!=="running"||v===null)return;if(v<=0){J(!0);return}const s=window.setTimeout(()=>{F(t=>t===null?null:Math.max(0,t-1))},1e3);return()=>window.clearTimeout(s)},[x,v]);const j=b[c],l=j?O(j,c):"",w=l?We[l]:void 0;n.useEffect(()=>{if(x!=="running"||T<=0||!l||w===void 0)return;if(w<=0){if(A[l])return;de(t=>({...t,[l]:!0})),c>=b.length-1?J():G(c+1);return}const s=window.setTimeout(()=>{me(t=>({...t,[l]:Math.max(0,(t[l]??T)-1)}))},1e3);return()=>window.clearTimeout(s)},[x,T,c,l,w,A,b.length]);const p="mx-auto w-full max-w-2xl rounded-xl border border-gray-200 bg-white p-6 shadow-sm";if(x==="loading")return e.jsx("div",{className:"min-h-screen bg-gray-50 px-4 py-12",children:e.jsx("div",{className:p,children:e.jsx("p",{className:"text-center text-gray-500",children:a("quiz_take_status_loading")})})});if(x==="error")return e.jsx("div",{className:"min-h-screen bg-gray-50 px-4 py-12",children:e.jsx("div",{className:p,children:e.jsxs("div",{className:"flex flex-col items-center gap-3 text-center",children:[e.jsx(dt,{className:"h-10 w-10 text-red-500"}),e.jsx("p",{className:"text-gray-700",children:z})]})})});if(x==="done"&&u){const s=u.passScorePct>0;return e.jsx("div",{className:"min-h-screen bg-gray-50 px-4 py-12",children:e.jsxs("div",{className:"mx-auto w-full max-w-2xl space-y-4",children:[e.jsx("div",{className:p,children:e.jsxs("div",{className:"flex flex-col items-center gap-3 text-center",children:[s?u.passed?e.jsx(ge,{className:"h-12 w-12 text-green-500"}):e.jsx(xt,{className:"h-12 w-12 text-red-500"}):e.jsx(ge,{className:"h-12 w-12 text-green-500"}),e.jsx("h1",{className:"text-xl font-semibold text-gray-900",children:$}),s&&e.jsx("span",{className:`rounded-full px-3 py-1 text-sm font-semibold ${u.passed?"bg-green-100 text-green-700 dark:bg-green-950/50 dark:text-green-300":"bg-red-100 text-red-700 dark:bg-red-950/50 dark:text-red-300"}`,children:u.passed?a("quiz_take_result_passed"):a("quiz_take_result_failed")}),e.jsxs("p",{className:"text-3xl font-bold text-gray-900",children:[u.pct,"%"]}),u.timeExpired&&e.jsx("div",{className:"rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900 dark:border-amber-800 dark:bg-amber-950/40 dark:text-amber-100",children:a("quiz_take_time_expired_submitted")}),e.jsx("p",{className:"text-gray-600",children:a("quiz_take_result_score",[String(u.score),String(u.max)])}),s&&e.jsx("p",{className:"text-sm text-gray-500",children:a("quiz_take_pass_mark",String(u.passScorePct))})]})}),u.reveal&&u.review.length>0&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("h2",{className:"px-1 text-sm font-semibold uppercase tracking-wide text-gray-500",children:a("quiz_take_review_title")}),u.review.map((t,i)=>e.jsxs("div",{className:p,children:[e.jsxs("div",{className:"flex items-start gap-2",children:[t.IsCorrect?e.jsx(he,{className:"mt-0.5 h-5 w-5 shrink-0 text-green-600 dark:text-green-400"}):e.jsx(be,{className:"mt-0.5 h-5 w-5 shrink-0 text-red-600 dark:text-red-400"}),e.jsxs("p",{className:"font-medium text-gray-900",children:[i+1,". ",t.Question]})]}),e.jsx("div",{className:"mt-3 space-y-2",children:(t.Options??[]).map((r,o)=>{const g=!!r.IsCorrect,N=!!r.Selected,Y=g?"border-green-300 bg-green-50 dark:border-green-800 dark:bg-green-950/40":N?"border-red-300 bg-red-50 dark:border-red-800 dark:bg-red-950/40":"border-gray-200 dark:border-slate-800";return e.jsxs("div",{className:`flex items-center justify-between gap-3 rounded-lg border px-3 py-2 ${Y}`,children:[e.jsx("span",{className:"text-gray-800 dark:text-slate-100",children:r.Text}),e.jsxs("span",{className:"flex shrink-0 items-center gap-2 text-xs font-medium",children:[N&&e.jsx("span",{className:"text-gray-500",children:a("quiz_take_review_your_answer")}),g&&e.jsx(he,{className:"h-4 w-4 text-green-600 dark:text-green-400"}),!g&&N&&e.jsx(be,{className:"h-4 w-4 text-red-600 dark:text-red-400"})]})]},o)})}),t.Hint&&e.jsx("p",{className:"mt-2 text-xs text-gray-500",children:a("quiz_take_hint_value",t.Hint)})]},t.QuestionID??i))]})]})})}if(x==="intro"){const s=nt("quiz_take_question_count",H,String(H),String(H));return e.jsx("div",{className:"min-h-screen bg-gray-50 px-4 py-12",children:e.jsxs("form",{className:p,onSubmit:t=>void Ve(t),children:[e.jsx("h1",{className:"text-2xl font-semibold text-gray-900",children:$}),te&&e.jsx("p",{className:"mt-2 text-gray-600",children:te}),e.jsxs("p",{className:"mt-2 text-sm text-gray-500",children:[s,re>0&&` · ${a("quiz_take_pass_mark",String(re))}`]}),y>0&&e.jsxs("div",{className:"mt-4 flex items-start gap-2 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2.5 text-sm text-amber-900 dark:border-amber-800 dark:bg-amber-950/40 dark:text-amber-100",children:[e.jsx(Z,{className:"mt-0.5 h-4 w-4 shrink-0"}),e.jsxs("span",{children:[a("quiz_take_total_time_limit",ee(y)),` ${a("quiz_take_total_time_continues")}`]})]}),ae&&e.jsx("div",{className:"mt-4 rounded-lg border border-blue-200 bg-blue-50 px-3 py-2.5 text-sm text-blue-800 dark:border-blue-800 dark:bg-blue-950/50 dark:text-blue-100",children:a("quiz_take_resume_available")}),Ne.map(t=>e.jsxs("div",{className:"mt-4",children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700",children:[t.Label,t.Required&&e.jsx("span",{className:"text-red-500",children:" *"})]}),e.jsx("input",{type:t.Type==="email"?"email":t.Type==="number"?"number":"text",required:t.Required,className:"mt-1 w-full rounded-lg border border-gray-300 bg-white px-3 py-2 text-gray-900 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-100",value:ie[t.Key||""]??"",onChange:i=>Ae(r=>({...r,[t.Key||""]:i.target.value}))})]},t.Key)),_e&&e.jsxs("div",{className:"mt-4",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700",children:a("common_label_password")}),e.jsxs("div",{className:"relative mt-1",children:[e.jsx(ut,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400"}),e.jsx("input",{type:"password",required:!0,className:"w-full rounded-lg border border-gray-300 bg-white py-2 pl-9 pr-3 text-gray-900 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-100",value:ne,onChange:t=>Ee(t.target.value)})]})]}),Te&&R&&e.jsx("div",{className:"mt-4 rounded-lg border border-blue-200 bg-blue-50 px-3 py-2.5 text-sm text-blue-800 dark:border-blue-800 dark:bg-blue-950/50 dark:text-blue-100",children:a("quiz_take_email_disclosure")}),!R&&qe&&!h&&e.jsxs("div",{className:"mt-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-3 text-sm text-amber-900 dark:border-amber-800 dark:bg-amber-950/40 dark:text-amber-100",children:[e.jsx("p",{children:a("quiz_take_login_required")}),e.jsx("button",{type:"button",className:"mt-3 cursor-pointer rounded-lg bg-blue-600 px-4 py-2 font-medium text-white hover:bg-blue-700",onClick:()=>q(it(!0)),children:a("quiz_take_action_login")})]}),!R&&h&&e.jsx("div",{className:"mt-4 rounded-lg border border-red-200 bg-red-50 px-3 py-2.5 text-sm text-red-700 dark:border-red-800 dark:bg-red-950/40 dark:text-red-300",children:a(Re?"quiz_take_verified_email_not_allowed":"quiz_take_access_not_allowed")}),z&&e.jsx("p",{className:"mt-4 text-sm text-red-600 dark:text-red-400",children:z}),R&&e.jsx("button",{type:"submit",disabled:k,className:"mt-6 w-full cursor-pointer rounded-lg bg-blue-600 px-4 py-2.5 font-medium text-white hover:bg-blue-700 disabled:cursor-not-allowed disabled:opacity-50",children:k?a("quiz_take_status_starting"):a("quiz_take_action_start")})]})})}if(!j)return null;const Xe=_[l]??[],U=!!A[l],Ge=Object.prototype.hasOwnProperty.call(W,l),Je=c>=b.length-1,Ue=(c+1)/b.length*100;return e.jsx("div",{className:"min-h-screen bg-gray-50 px-4 py-12",children:e.jsxs("div",{className:"mx-auto w-full max-w-2xl space-y-4",children:[e.jsxs("div",{className:p,children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"truncate text-xl font-semibold text-gray-900",children:$}),e.jsx("p",{className:"mt-1 text-sm text-gray-500",children:a("quiz_take_progress",[String(c+1),String(b.length)])})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[v!==null&&e.jsxs("span",{className:`inline-flex items-center gap-1 rounded-full px-3 py-1 text-sm font-semibold tabular-nums ${v<=10?"bg-red-100 text-red-700 dark:bg-red-950/50 dark:text-red-300":"bg-gray-100 text-gray-700 dark:bg-slate-800 dark:text-slate-300"}`,children:[e.jsx(Z,{className:"h-3.5 w-3.5"}),a("quiz_take_timer_overall",ee(v))]}),w!==void 0&&e.jsxs("span",{className:`inline-flex items-center gap-1 rounded-full px-3 py-1 text-sm font-semibold tabular-nums ${w<=10?"bg-red-100 text-red-700 dark:bg-red-950/50 dark:text-red-300":"bg-blue-50 text-blue-700 dark:bg-blue-950/50 dark:text-blue-300"}`,children:[e.jsx(Z,{className:"h-3.5 w-3.5"}),a("quiz_take_timer_question",ee(w))]})]})]}),e.jsx("div",{className:"mt-4 h-1.5 overflow-hidden rounded-full bg-gray-100 dark:bg-slate-800",children:e.jsx("div",{className:"h-full rounded-full bg-blue-600",style:{width:`${Ue}%`}})}),De&&e.jsx("div",{className:"mt-4 rounded-lg border border-blue-200 bg-blue-50 px-3 py-2 text-sm text-blue-800 dark:border-blue-800 dark:bg-blue-950/50 dark:text-blue-100",children:a("quiz_take_resumed_notice")})]}),e.jsxs("div",{className:p,children:[e.jsx("p",{className:"font-medium text-gray-900",children:j.Question}),e.jsx("div",{className:"mt-4 space-y-2",children:(j.Options??[]).map((s,t)=>e.jsxs("label",{className:`flex items-center gap-3 rounded-lg border border-gray-200 px-3 py-2 ${U?"cursor-not-allowed opacity-70":"cursor-pointer hover:bg-gray-50 dark:hover:bg-slate-900"}`,children:[e.jsx("input",{type:"checkbox",disabled:U,checked:Xe.includes(t),onChange:()=>Fe(l,t)}),e.jsx("span",{className:"text-gray-800",children:s.Text})]},t))}),U&&e.jsx("p",{className:"mt-3 text-sm text-amber-700 dark:text-amber-300",children:a("quiz_take_question_time_expired")}),je&&e.jsx("div",{className:"mt-4",children:Ge?e.jsxs("div",{className:"flex items-start gap-2 rounded-lg bg-amber-50 px-3 py-2 text-sm text-amber-900 dark:bg-amber-950/40 dark:text-amber-100",children:[e.jsx(pe,{className:"mt-0.5 h-4 w-4 shrink-0"}),e.jsx("span",{children:W[l]?a("quiz_take_hint_value",W[l]):a("quiz_take_hint_unavailable")})]}):e.jsxs("button",{type:"button",disabled:!!V,className:"inline-flex cursor-pointer items-center gap-2 rounded-lg border border-amber-300 px-3 py-2 text-sm font-medium text-amber-800 hover:bg-amber-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-amber-700 dark:text-amber-300 dark:hover:bg-amber-950/40",onClick:()=>
6void Ke(j,l),children:[e.jsx(pe,{className:"h-4 w-4"}),V===l?a("quiz_take_status_loading_hint"):a("quiz_take_action_show_hint")]})})]}),z&&e.jsx("p",{className:"text-sm text-red-600 dark:text-red-400",children:z}),e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("button",{type:"button",disabled:k||c===0,className:"inline-flex cursor-pointer items-center gap-1.5 rounded-lg border border-gray-300 bg-white px-4 py-2.5 font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-slate-700 dark:bg-slate-950 dark:text-slate-300 dark:hover:bg-slate-900",onClick:()=>G(c-1),children:[e.jsx(ct,{className:"h-4 w-4"}),a("common_action_previous")]}),Je?e.jsx("button",{type:"button",disabled:k,className:"inline-flex cursor-pointer items-center gap-2 rounded-lg bg-blue-600 px-4 py-2.5 font-medium text-white hover:bg-blue-700 disabled:cursor-not-allowed disabled:opacity-50",onClick:()=>void J(),children:k?a("quiz_take_status_submitting"):a("quiz_take_action_submit")}):e.jsxs("button",{type:"button",disabled:k,className:"inline-flex cursor-pointer items-center gap-1.5 rounded-lg bg-blue-600 px-4 py-2.5 font-medium text-white hover:bg-blue-700 disabled:cursor-not-allowed disabled:opacity-50",onClick:()=>G(c+1),children:[a("common_action_next"),e.jsx(mt,{className:"h-4 w-4"})]})]})]})})};export{_t as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.