1"use strict";(globalThis.webpackChunkfrontend=globalThis.webpackChunkfrontend||[]).push([[1388],{59853(e,t,s){s.d(t,{A:()=>i});s(9950);var a=s(16758),l=s(44414);function r(e){let{className:t=""}=e;return(0,l.jsx)("svg",{className:t,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","aria-hidden":!0,"data-testid":"teacher-search-input-icon",children:(0,l.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})}function i(e){let{value:t,onChange:s,placeholder:i,type:n="search",variant:o="module",className:d="",inputClassName:c="","aria-label":u,...h}=e;const m="module"===o?`teacher-classes-search-input teacher-search-input-field w-full min-w-0 box-border ${c}`.trim():`teacher-search-input-field w-full min-w-0 box-border ${c}`.trim();return(0,l.jsxs)("div",{className:`teacher-search-input-wrap relative min-w-0 w-full ${d}`.trim(),children:[(0,l.jsx)(r,{className:"teacher-search-input-icon"}),(0,l.jsx)(a.A,{type:n,value:t,onChange:s,placeholder:i,"aria-label":null!==u&&void 0!==u?u:i,className:m,...h})]})}},12300(e,t,s){s.d(t,{A:()=>r});var a=s(9950),l=s(44414);function r(e){var t;let{id:s,value:r,onChange:i,options:n=[],disabled:o=!1,placeholder:d="Select\u2026",className:c="",triggerClassName:u="",minWidth:h="9rem",triggerLabel:m,searchable:p=!1,searchPlaceholder:x="Search\u2026","aria-label":g}=e;const[b,f]=(0,a.useState)(!1),[v,y]=(0,a.useState)(null),[j,w]=(0,a.useState)(""),[N,S]=(0,a.useState)(!1),C=(0,a.useRef)(null),k=(0,a.useRef)(null),T=(0,a.useId)(),D=n.find(e=>String(e.value)===String(r)),_=null!==(t=null!==m&&void 0!==m?m:null===D||void 0===D?void 0:D.label)&&void 0!==t?t:d;(0,a.useEffect)(()=>{if(!b)return;const e=e=>{var t;null!==(t=C.current)&&void 0!==t&&t.contains(e.target)||(f(!1),S(!1),w(""))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[b]),(0,a.useEffect)(()=>{o&&(f(!1),S(!1),w(""))},[o]),(0,a.useEffect)(()=>{b&&N||w("")},[r,b,N]);const L=(0,a.useMemo)(()=>{if(!p||!N||!j.trim())return n;const e=j.trim().toLowerCase();return n.filter(t=>String(t.label||"").toLowerCase().includes(e))},[n,p,N,j]),A=()=>{o||f(!0)},I=e=>{i(e),f(!1),S(!1),w(""),y(null)},$=p&&b&&N?j:_;return(0,l.jsxs)("div",{ref:C,className:`teacher-ui-dropdown ${c}`.trim(),style:{minWidth:h},children:[p?(0,l.jsxs)("div",{className:`teacher-ui-dropdown-trigger teacher-ui-dropdown-trigger--searchable ${u}`.trim(),children:[(0,l.jsx)("input",{ref:k,id:s,type:"text",disabled:o,className:"teacher-ui-dropdown-trigger__input",value:$,placeholder:x||d,"aria-label":g||_,"aria-haspopup":"listbox","aria-expanded":b,"aria-controls":T,autoComplete:"off",onFocus:()=>{A(),S(!0),w("")},onClick:()=>{A(),N||(S(!0),w(""))},onChange:e=>{S(!0),w(e.target.value),b||f(!0)},onKeyDown:e=>{var t;"Escape"===e.key?(e.stopPropagation(),f(!1),S(!1),w(""),null===(t=k.current)||void 0===t||t.blur()):"Enter"===e.key&&1===L.length&&(e.preventDefault(),I(L[0].value))}}),(0,l.jsx)("button",{type:"button",className:"teacher-ui-dropdown-trigger__chevron-btn",disabled:o,"aria-label":b?"Close options":"Open options",tabIndex:-1,onMouseDown:e=>{e.preventDefault()},onClick:e=>{var t;(e.stopPropagation(),o)||(b?(f(!1),S(!1),w("")):(f(!0),S(!0),w(""),null===(t=k.current)||void 0===t||t.focus()))},children:(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,l.jsx)("path",{d:"m6 9 6 6 6-6"})})})]}):(0,l.jsxs)("button",{type:"button",id:s,disabled:o,"aria-label":g||_,"aria-haspopup":"listbox","aria-expanded":b,"aria-controls":T,className:`teacher-ui-dropdown-trigger ${u}`.trim(),onClick:()=>{o||f(e=>!e)},children:[(0,l.jsx)("span",{className:"teacher-ui-dropdown-trigger__label",children:_}),(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"teacher-ui-dropdown-trigger__chevron","aria-hidden":"true",children:(0,l.jsx)("path",{d:"m6 9 6 6 6-6"})})]}),b?(0,l.jsx)("div",{id:T,role:"listbox",className:"teacher-ui-dropdown-panel",onMouseLeave:()=>y(null),children:0===L.length?(0,l.jsx)("p",{className:"teacher-ui-dropdown-empty",children:"No matches"}):L.map(e=>{const t=String(e.value)===String(r),s=null!==v?v===e.value:t;return(0,l.jsx)("button",{type:"button",role:"option","aria-selected":t,className:"teacher-ui-dropdown-option"+(s?" teacher-ui-dropdown-option--active":""),onMouseEnter:()=>y(e.value),onClick:()=>I(e.value),children:(0,l.jsx)("span",{className:"truncate",children:e.label})},String(e.value))})}):null]})}},35920(e,t,s){s.d(t,{R:()=>i});var a=s(9950),l=s(9141),r=s(68243);const i=()=>{const{userProfile:e,loading:t}=(0,l.w)(),[s,i]=(0,a.useState)({profile:null,timezone:null});(0,a.useEffect)(()=>{let t=!1;return(async()=>{try{const s=e?await(0,r.OM)(e):null;t||i({profile:e,timezone:s})}catch(s){console.error("useTeacherTimezone: failed to resolve zone",s
1),t||i({profile:e,timezone:null})}})(),()=>{t=!0}},[e]);const n=(0,r.j6)(e),o=s.profile===e;return{timezone:o?s.timezone:n||s.timezone,loading:t||!o&&!n}}},11388(e,t,s){s.r(t),s.d(t,{default:()=>ee});var a=s(9950),l=s(17119),r=s(41413),i=s(72493),n=s(12300),o=s(59853),d=s(22875),c=s(57975),u=s(95612);let h=null;const m=e=>{return Boolean(null==(t=null===e||void 0===e?void 0:e.classId)||""===t?"":String(t));var t},p=e=>{const t="csv"===e?"csv":"pdf",s=(new Date).toLocaleDateString("en-US",{month:"short",year:"numeric"}).replace(/[^a-zA-Z0-9]/g,"");return`sessions_export_${a=s,String(a||"export").replace(/[^a-zA-Z0-9]+/g,"_").replace(/^_+|_+$/g,"").slice(0,48)||"export"}.${t}`;var a},x=e=>{if(null==e)return"";const t=String(e);return t.includes(",")||t.includes('"')||t.includes("\n")?`"${t.replace(/"/g,'""')}"`:t},g=e=>{const t=String(e||"").toLowerCase();return"inprogress"===t?"in progress":t||""},b=(e,t)=>{const s=[["Student(s)","Topic","Subject","Type","Date","Time","Duration","Status","Scope"],...(e||[]).map(e=>[e.student||"",e.topic||"",e.subject||"",e.type||"",e.date||"",e.time||"",e.duration||"",g(e.status),m(e)?"Class":"Individual"])].map(e=>e.map(x).join(",")).join("\n");((e,t)=>{const s=URL.createObjectURL(e),a=document.createElement("a");a.href=s,a.download=t,a.style.visibility="hidden",document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(s)})(new Blob([s],{type:"text/csv;charset=utf-8;"}),t)},f={brand:[241,149,0],line:[229,231,235],panel:[249,250,251],ink:[17,24,39],body:[55,65,81],label:[107,114,128],muted:[156,163,175],tableHead:[75,85,99]},v={upcoming:{bg:[236,253,245],border:[164,244,207],text:[0,122,85]},inprogress:{bg:[255,251,235],border:[254,230,133],text:[187,77,0]},completed:{bg:[239,246,255],border:[190,219,255],text:[21,93,252]},missed:{bg:[254,242,242],border:[255,201,201],text:[231,0,11]},cancelled:{bg:[243,244,246],border:[229,231,235],text:[74,85,101]}},y=[{key:"student",label:"Student Name",x:16,width:122,weight:"bold",size:11,color:"ink"},{key:"grade",label:"Grade",x:146,width:92,weight:"normal",size:10,color:"label"},{key:"subject",label:"Subject",x:246,width:72,weight:"normal",size:11,color:"ink"},{key:"type",label:"Type",x:326,width:72,weight:"normal",size:10,color:"muted"},{key:"dateTime",label:"Date / Time",x:406,width:122,weight:"normal",size:11,color:"body"},{key:"duration",label:"Duration",x:536,width:92,weight:"bold",size:11,color:"ink"},{key:"status",label:"Status",x:636,width:84,weight:"normal",size:11,color:"body",align:"center"}],j=[{key:"total",label:"TOTAL SESSIONS",sub:null},{key:"upcoming",label:"UPCOMING",sub:"Scheduled"},{key:"completed",label:"COMPLETED",sub:null},{key:"missed",label:"MISSED",sub:"Needs action"}],w=(e,t,s,a)=>{e.setFontSize(t),e.setFont("helvetica",s),e.setTextColor(...a)},N=(e,t,s)=>{const a=String(null!==t&&void 0!==t?t:"");if(!a)return"";if(e.getTextWidth(a)<=s)return a;let l=a;for(;l.length>1&&e.getTextWidth(`${l}...`)>s;)l=l.slice(0,-1);return`${l}...`},S=async e=>{let{rows:t,fileName:s,periodLabel:a,filterSummary:l,exportedBy:r,generatedAt:i,stats:n}=e;const o=await(h||(h=new Promise(e=>{const t=new Image;t.onload=()=>{try{const s=Math.min(1,120/t.naturalWidth),a=document.createElement("canvas");a.width=Math.max(1,Math.round(t.naturalWidth*s)),a.height=Math.max(1,Math.round(t.naturalHeight*s));const l=a.getContext("2d");l.fillStyle="#ffffff",l.fillRect(0,0,a.width,a.height),l.drawImage(t,0,0,a.width,a.height),e({dataUrl:a.toDataURL("image/png"),width:a.width,height:a.height})}catch{e(null)}},t.onerror=()=>e(null),t.src="/_assets/v11/TutorCloud_Parentlogo.png"})),h),d=new u.default({unit:"pt",format:"letter"}),c=d.internal.pageSize.getWidth(),m=d.internal.pageSize.getHeight(),p=c/816,x=e=>e*p,b=x(40),S=c-2*b,C=S,k=m-b;let T=b;if(null!==o&&void 0!==o&&o.dataUrl){const e=x(28),t=o.width/o.height*e;d.addImage(o.dataUrl,"PNG",b,T,t,e)}w(d,x(16),"bold",f.brand),d.text("SESSION REPORT",c-b,T+x(20),{align:"right"}),T+=x(56),d.setDrawColor(...f.line),d.setLineWidth(x(1)),d.line(b,T,c-b,T),T+=x(35);const D=b+x(416),_=x(19),L=(e,t,s,a,l)=>{w(d,x(11),"normal",f.label),d.text(e,s,a);const r=d.getTextWidth(e);w(d,x(11),"bold",f.ink),d.text(N(d,t||"-",l-r),s+r,a)};
1L("Generated: ",i,b,T,x(360)),L("Period: ",a,D,T,x(340)),T+=_,L("Exported By: ",r,b,T,x(360)),L("Filters Applied: ",l,D,T,x(340)),T+=x(28);const A=x(16),I=(S-3*A)/4,$=x(94);j.forEach((e,t)=>{var s;const l=b+t*(I+A);d.setDrawColor(...f.line),d.setFillColor(...f.panel),d.roundedRect(l,T,I,$,x(8),x(8),"FD"),w(d,x(10),"bold",f.label),d.text(e.label,l+x(16),T+x(26)),w(d,x(24),"bold",f.ink),d.text(String(null!==(s=null===n||void 0===n?void 0:n[e.key])&&void 0!==s?s:0),l+x(16),T+x(58)),w(d,x(10),"normal",f.muted),d.text(N(d,e.sub||a,I-x(32)),l+x(16),T+x(80))}),T+=$+x(28),w(d,x(14),"bold",f.ink),d.text("Scheduled Sessions",b,T),T+=x(22);const E=x(30),M=x(40);let P=T;const z=()=>{d.setFillColor(...f.panel),d.rect(b,T,C,E,"F"),w(d,x(10),"bold",f.tableHead),y.forEach(e=>{const t=T+E/2+x(3.5);"center"!==e.align?d.text(e.label,b+x(e.x),t):d.text(e.label,b+x(e.x+e.width/2),t,{align:"center"})}),d.setDrawColor(...f.line),d.setLineWidth(x(1)),d.line(b,T+E,b+C,T+E),T+=E},F=()=>{d.setDrawColor(...f.line),d.setLineWidth(x(1)),d.roundedRect(b,P,C,T-P,x(8),x(8),"S")};z();const B=t||[];B.forEach((e,t)=>{T+M>k&&(F(),d.addPage(),T=b,P=T,z());const s={student:e.student||"",grade:e.grade||"",subject:e.subject||"",type:e.type||"",dateTime:[e.date,e.time].filter(Boolean).join(", "),duration:e.duration||""},a=T+M/2+x(4);y.forEach(t=>{const l=b+x(t.x);"status"!==t.key?(w(d,x(t.size),t.weight,f[t.color]),d.text(N(d,s[t.key],x(t.width)),l,a)):((e,t,s,a,l)=>{const r=String(t||"").toLowerCase(),i=v[r]||v.cancelled,n=g(t).toUpperCase();if(!n)return;w(e,9*l,"bold",i.text);const o=6*l,d=e.getTextWidth(n)+2*o,c=16*l,u=s-d/2;e.setFillColor(...i.bg),e.setDrawColor(...i.border),e.setLineWidth(1*l),e.roundedRect(u,a-c/2,d,c,6*l,6*l,"FD"),e.text(n,s,a+3*l,{align:"center"})})(d,e.status,b+x(t.x+t.width/2),T+M/2,p)}),t<B.length-1&&(d.setDrawColor(...f.line),d.setLineWidth(x(1)),d.line(b,T+M,b+C,T+M)),T+=M}),B.length||(w(d,x(11),"normal",f.label),d.text("No sessions in this export.",b+x(16),T+M/2+x(4)),T+=M),F(),d.save(s)},C=async e=>{let{format:t,rows:s,periodLabel:a,filterSummary:l,exportedBy:r}=e;if(!t||"csv"!==t&&"pdf"!==t)return{success:!1,error:"Please select an export format."};if(null===s||void 0===s||!s.length)return{success:!1,error:"No sessions available to export for the current filters and options."};const i=p(t),n=(new Date).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),o=(e=>{let t=0,s=0,a=0;return(e||[]).forEach(e=>{const l=String(e.status||"").toLowerCase();"upcoming"===l||"inprogress"===l?t+=1:"completed"===l?s+=1:"missed"===l&&(a+=1)}),{total:(null===e||void 0===e?void 0:e.length)||0,upcoming:t,completed:s,missed:a}})(s);try{return"csv"===t?b(s,i):await S({rows:s,fileName:i,periodLabel:a,filterSummary:l,exportedBy:r,generatedAt:n,stats:o}),{success:!0,fileName:i}}catch(d){return console.error("Session scheduler export failed:",d),{success:!1,error:"Unable to generate export. Please try again or contact support."}}};var k=s(44414);const T=!0,D=!0;function _(e){let{isOpen:t,onClose:s,sessions:r,periodLabel:i,filterSummary:n,exportedBy:o,onExportSuccess:c}=e;const[u,h]=(0,a.useState)("csv"),[p,x]=(0,a.useState)(T),[g,b]=(0,a.useState)(D),[f,v]=(0,a.useState)(""),[y,j]=(0,a.useState)(!1);(0,a.useEffect)(()=>{t&&(h("csv"),x(T),b(D),v(""),j(!1))},[t]);return t&&"undefined"!==typeof document?(0,l.createPortal)((0,k.jsx)("div",{className:"teacher-modal-overlay teacher-scheduler-export-modal-overlay",role:"presentation",onClick:s,children:(0,k.jsxs)("div",{role:"dialog","aria-modal":"true","aria-labelledby":"teacher-scheduler-export-title",className:"teacher-scheduler-export-modal",onClick:e=>e.stopPropagation(),children:[(0,k.jsxs)("div",{className:"teacher-scheduler-export-modal__header",children:[(0,k.jsx)("h2",{id:"teacher-scheduler-export-title",className:"teacher-dash-heading-lg",children:"Export Sessions"}),(0,k.jsx)("button",{type:"button",onClick:s,className:"teacher-scheduler-export-modal__close","aria-label":"Close export dialog",children:(0,k.jsx)(d.QCr,{"aria-hidden":!0})})]}),(0,k.jsxs)("div",{className:"teacher-scheduler-export-modal__body",children:[f?(0,k.jsxs)("div",{className:"teacher-scheduler-export-modal__error",role:"alert",children:[(0,k.jsx)(d.TNq,{"aria-hidden":!0}),(0,k.jsx)("span",{children:f})]}):null,(0,k.jsxs)("div",{className:"teacher-scheduler-export-modal__section",children:[(0,k.jsx)("p",{className:"teacher-scheduler-export-modal__section-label",children:"Select format"}),(0,k.jsx)("div",{className:"teacher-scheduler-export-modal__format-grid",role:"radiogroup","aria-label":"Export format",children:["csv","pdf"].map(e=>(0,k.jsxs)("label",{className:"teacher-scheduler-export-modal__format-option "+(u===e?"teacher-scheduler-export-modal__format-option--active":""),children:[(0,k.jsx)("input",{type:"radio",name:"session-export-format",value:e,checked:u===e,onChange:()=>{h(e),v("")},className:"teacher-scheduler-export-modal__format-radio"}),(0,k.jsx)("span",{className:"teacher-scheduler-export-modal__format-label",children:e.toUpperCase()})]},e))})]}),(0,k.jsxs)("div",{className:"teacher-scheduler-export-modal__note",children:[(0,k.jsx)(d.__w,{"aria-hidden":!0}),(0,k.jsx)("p",{children:"Export reflects current active filters and List View search query constraints."})]}),(0,k.jsxs)("div",{className:"teacher-scheduler-export-modal__section",children:[(0,k.jsxs)("label",{className:"teacher-scheduler-export-modal__checkbox",children:[(0,k.jsx)("input",{type:"checkbox",checked:p,onChange:e=>{x(e.target.checked),v("")}}),(0,k.jsx)("span",{className:"teacher-scheduler-export-modal__checkbox-box","aria-hidden":!0}),(0,k.jsx)("span",{children:"Include individual student sessions"})]}),(0,k.jsxs)("label",{className:"teacher-scheduler-export-modal__checkbox",children:[(0,k.jsx)("input",{type:"checkbox",checked:g,onChange:e=>{b(e.target.checked),v("")}}),(0,k.jsx)("span",{className:"teacher-scheduler-export-modal__checkbox-box","aria-hidden":!0}),(0,k.jsx)("span",{children:"Include class sessions"})]})]})]}),(0,k.jsxs)("div",{className:"teacher-scheduler-export-modal__footer",children:[(0,k.jsx)("button",{type:"button",onClick:s,className:"teacher-scheduler-export-modal__cancel",disabled:y,children:"Cancel"}),(0,k.jsx)("button",{type:"button",onClick:async()=>
1{if(v(""),!p&&!g)return void v("Select at least one session type to include in the export.");const e=((e,t)=>{let{includeIndividual:s,includeClass:a}=t;return(e||[]).filter(e=>m(e)?a:s)})(r,{includeIndividual:p,includeClass:g});j(!0);try{const t=await C({format:u,rows:e,periodLabel:i,filterSummary:n,exportedBy:o});if(!t.success)return void v(t.error||"Unable to generate export. Please try again or contact support.");null===c||void 0===c||c(t.fileName),s()}finally{j(!1)}},className:"teacher-scheduler-export-modal__submit",disabled:y,children:y?"Exporting\u2026":"Export"})]})]})}),document.body):null}function L(e){let{fileName:t,onDismiss:s,autoHideMs:r=5e3}=e;return(0,a.useEffect)(()=>{if(!t)return;const e=window.setTimeout(()=>{null===s||void 0===s||s()},r);return()=>window.clearTimeout(e)},[t,r,s]),t&&"undefined"!==typeof document?(0,l.createPortal)((0,k.jsxs)("div",{className:"teacher-scheduler-export-toast",role:"status","aria-live":"polite",children:[(0,k.jsx)(d.A7C,{className:"teacher-scheduler-export-toast__icon","aria-hidden":!0}),(0,k.jsxs)("div",{className:"teacher-scheduler-export-toast__content",children:[(0,k.jsx)("p",{className:"teacher-scheduler-export-toast__title",children:"Export downloaded successfully"}),(0,k.jsx)("p",{className:"teacher-scheduler-export-toast__file",children:t})]}),(0,k.jsx)("button",{type:"button",className:"teacher-scheduler-export-toast__close",onClick:s,"aria-label":"Dismiss export notification",children:(0,k.jsx)(d.QCr,{"aria-hidden":!0})})]}),document.body):null}var A=s(51365),I=s(18555),$=s(97280),E=s(20582),M=s(9141),P=s(16758),z=s(63535),F=s(19824),B=s(81986),R=s(35920),O=s(11252),U=s(27253),G=s(20621),W=s(21380);const q=(0,W.lh)(),K="teacher-scheduler-subject-group--cancelled",H=e=>e?"string"===typeof e?e:"object"===typeof e&&null!==e&&(e.name||e.id)||"":"",Q=e=>{if(!e)return"N/A";return{conceptMasteryDefined:"Concept Mastery",conceptMasteryPlan:"concept-mastery-plan",examPrep:"exam-prep",reinforcement:"reinforcement",adhoc:"ad-hoc"}[e]||e},Z=e=>null==e||""===e?"":String(e),V=(e,t)=>{if(!e)return!1;const s=B.A.toLocalDateKey(new Date,t),a=B.A.toLocalDateKey(e,t);if(!s||!a)return!1;const l=new Date(`${s}T12:00:00`),r=new Date(`${a}T12:00:00`);if(Number.isNaN(l.getTime())||Number.isNaN(r.getTime()))return!1;const i=Math.round((l.getTime()-r.getTime())/864e5);return i>=0&&i<=6},X=[{id:"total",title:"Total Sessions",subLabel:"Past 7 Days",tooltipTitle:"Total Scheduled Sessions",tooltipBody:"Total tutoring sessions scheduled during the past 7 days, including completed, upcoming, cancelled, and missed sessions.",icon:d.bfZ,tone:"muted"},{id:"upcoming",title:"Upcoming",subLabel:"Upcoming",tooltipTitle:"Scheduled Sessions",tooltipBody:"Total upcoming tutoring sessions that are currently scheduled and awaiting completion.",icon:d.w_X,tone:"brand"},{id:"completed",title:"Completed",subLabel:"7 Days",tooltipTitle:"Sessions This Week",tooltipBody:"Total tutoring sessions completed during the current Week.",icon:d.A7C,tone:"success"},{id:"missed",title:"Missed",subLabel:"Requires Attention",tooltipTitle:"Needs Action",tooltipBody:"Sessions requiring your immediate attention/action.",icon:d.BS8,tone:"danger"}],J=e=>{let{isOpen:t,onClose:s,onConfirm:r,selectedSessions:i}=e;const[n,o]=(0,a.useState)(""),[c,u]=(0,a.useState)("17:00"),[h,m]=(0,a.useState)(!1);(0,a.useEffect)(()=>{t||(o(""),u("17:00"),m(!1))},[t]);if(!t||"undefined"===typeof document)return null;const p=i.some(e=>e.recurringSeriesId);return(0,l.createPortal)((0,k.jsx)("div",{className:"teacher-modal-overlay",role:"dialog","aria-modal":"true",children:(0,k.jsxs)("div",{role:"dialog","aria-modal":"true",className:"teacher-modal-panel w-full max-w-md
1shrink-0",onClick:e=>e.stopPropagation(),children:[(0,k.jsxs)("div",{className:"teacher-modal-panel__header flex items-center justify-between gap-4",children:[(0,k.jsx)("h2",{className:"teacher-dash-heading-lg text-xl",children:"Batch Reschedule"}),(0,k.jsx)("button",{type:"button",onClick:s,className:"shrink-0 rounded-lg p-2 text-muted-foreground transition hover:bg-gray-100 hover:teacher-dash-text-muted","aria-label":"Close",children:(0,k.jsx)(d.QCr,{size:20})})]}),(0,k.jsxs)("div",{className:"teacher-modal-panel__body",children:[(0,k.jsxs)("div",{className:"mb-4",children:[(0,k.jsx)("p",{className:"teacher-dash-text-muted mb-2",children:p?(0,k.jsx)(k.Fragment,{children:"Set a new end date for the recurring series. All sessions in the series will be rescheduled to end by this date."}):(0,k.jsxs)(k.Fragment,{children:["Reschedule ",(0,k.jsx)("span",{className:"font-semibold",children:i.length})," selected session(s) to a new date and time."]})}),p&&(0,k.jsx)("p",{className:"text-xs text-blue-600 mb-2",children:"\u24d8 The date below will be the new end date for the recurring series. Sessions will maintain their frequency and spacing."})]}),(0,k.jsxs)("form",{id:"batch-reschedule-form",onSubmit:e=>{e.preventDefault(),n&&c&&r(n,c,h)},className:"space-y-4",children:[(0,k.jsxs)("div",{children:[(0,k.jsx)("label",{className:"block teacher-dash-text font-medium mb-2",children:p?"New End Date":"New Date"}),(0,k.jsx)(P.A,{type:"date",value:n,onChange:e=>o(e.target.value),required:!0,className:"teacher-ui-field w-full"})]}),(0,k.jsxs)("div",{children:[(0,k.jsx)("label",{className:"block teacher-dash-text font-medium mb-2",children:p?"Time for Last Session":"New Time"}),(0,k.jsx)(P.A,{type:"time",value:c,onChange:e=>u(e.target.value),required:!0,className:"teacher-ui-field w-full"})]}),p&&(0,k.jsxs)("div",{className:"teacher-dash-info-surface flex items-center gap-2 p-3",children:[(0,k.jsx)(P.A,{type:"checkbox",id:"batchUpdateAllInSeries",checked:h,onChange:e=>m(e.target.checked),className:"rounded border-[var(--border)] text-blue-600 focus:ring-blue-500"}),(0,k.jsx)("label",{htmlFor:"batchUpdateAllInSeries",className:"teacher-dash-text cursor-pointer",children:"Update all sessions in recurring series (maintains frequency and spacing)"})]})]})]}),(0,k.jsxs)("div",{className:"teacher-modal-panel__footer",children:[(0,k.jsx)("button",{type:"button",onClick:s,className:"rounded-lg border border-[var(--border)] bg-white px-4 py-2 teacher-dash-text font-medium hover:bg-gray-50",children:"Cancel"}),(0,k.jsx)("button",{type:"submit",form:"batch-reschedule-form",className:"teacher-dash-btn teacher-dash-btn-primary teacher-dash-btn-rounded-lg text-sm",children:"Reschedule All"})]})]})}),document.body)},Y=e=>{let{isOpen:t,onClose:s,onConfirm:r,session:i,initialDate:n,initialTime:o,hasSeries:c=!1,timezone:u=null}=e;const[h,m]=(0,a.useState)(n||""),[p,x]=(0,a.useState)(o||"17:00"),[g,b]=(0,a.useState)(!1);(0,a.useEffect)(()=>{n&&m(n),o&&x(o),b(!1)},[n,o,t]);return t&&"undefined"!==typeof document?(0,l.createPortal)((0,k.jsx)("div",{className:"teacher-modal-overlay",role:"dialog","aria-modal":"true",children:(0,k.jsxs)("div",{role:"dialog","aria-modal":"true",className:"teacher-modal-panel w-full max-w-md
1shrink-0",onClick:e=>e.stopPropagation(),children:[(0,k.jsxs)("div",{className:"teacher-modal-panel__header flex items-center justify-between gap-4",children:[(0,k.jsx)("h2",{className:"teacher-dash-heading-lg text-xl",children:"Reschedule Session"}),(0,k.jsx)("button",{type:"button",onClick:s,className:"shrink-0 rounded-lg p-2 text-muted-foreground transition hover:bg-gray-100 hover:teacher-dash-text-muted","aria-label":"Close",children:(0,k.jsx)(d.QCr,{size:20})})]}),(0,k.jsxs)("div",{className:"teacher-modal-panel__body",children:[(0,k.jsxs)("div",{className:"mb-4",children:[(0,k.jsxs)("p",{className:"teacher-dash-text-muted mb-2",children:[(0,k.jsx)("span",{className:"font-semibold",children:"Topic:"})," ",i.topic||H(i.subject)||"Session"]}),i.seriesTag&&(0,k.jsxs)("p",{className:"text-sm text-blue-600 mb-2",children:[(0,k.jsx)("span",{className:"font-semibold",children:"Series:"})," Session ",i.seriesTag]}),(0,k.jsxs)("p",{className:"teacher-dash-text-muted",children:[(0,k.jsx)("span",{className:"font-semibold",children:"Current Time:"})," ",i.scheduledTime&&B.A.formatLocal(i.scheduledTime,{weekday:"short",month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",timeZoneName:"short"},u)||"N/A"]})]}),(0,k.jsxs)("form",{id:"reschedule-session-form",onSubmit:e=>{e.preventDefault(),h&&p&&r(h,p,g)},className:"space-y-4",children:[(0,k.jsxs)("div",{children:[(0,k.jsx)("label",{className:"block teacher-dash-text font-medium mb-2",children:"New Date"}),(0,k.jsx)(P.A,{type:"date",value:h,onChange:e=>m(e.target.value),required:!0,className:"teacher-ui-field w-full"})]}),(0,k.jsxs)("div",{children:[(0,k.jsx)("label",{className:"block teacher-dash-text font-medium mb-2",children:"New Time"}),(0,k.jsx)(P.A,{type:"time",value:p,onChange:e=>x(e.target.value),required:!0,className:"teacher-ui-field w-full"})]}),c&&(0,k.jsxs)("div",{className:"teacher-dash-info-surface flex items-center gap-2 p-3",children:[(0,k.jsx)(P.A,{type:"checkbox",id:"updateAllInSeries",checked:g,onChange:e=>b(e.target.checked),className:"rounded border-[var(--border)] text-blue-600 focus:ring-blue-500"}),(0,k.jsx)("label",{htmlFor:"updateAllInSeries",className:"teacher-dash-text cursor-pointer",children:"Apply changes to all sessions in this series"})]})]})]}),(0,k.jsxs)("div",{className:"teacher-modal-panel__footer",children:[(0,k.jsx)("button",{type:"button",onClick:s,className:"rounded-lg border border-[var(--border)] bg-white px-4 py-2 teacher-dash-text font-medium hover:bg-gray-50",children:"Cancel"}),(0,k.jsx)("button",{type:"submit",form:"reschedule-session-form",className:"teacher-dash-btn teacher-dash-btn-primary teacher-dash-btn-rounded-lg text-sm",children:"Reschedule"})]})]})}),document.body):null},ee=()=>{var e,t,s,u;const h=(0,r.Zp)(),m=(0,r.zy)(),[p,x]=(0,a.useState)(new Date),[g,b]=(0,a.useState)("week"),[f,v]=(0,a.useState)(!0),[y,j]=(0,a.useState)("list"),[w,N]=(0,a.useState)(null),[S,C]=(0,a.useState)(!1),[T,D]=(0,a.useState)(null),[ee,te]=(0,a.useState)(null),[se,ae]=(0,a.useState)(null),[le,re]=(0,a.useState)(null),[ie,ne]=(0,a.useState)(null),[oe,de]=(0,a.useState)([]),[ce,ue]=(0,a.useState)(!0),[he,me]=(0,a.useState)(null),[pe,xe]=(0,a.useState)(null),[ge,be]=(0,a.useState)({x:0,y:0,showAbove:!0}),[fe,ve]=(0,a.useState)(null),[ye,je]=(0,a.useState)(null),[we,Ne]=(0,a.useState)(!1),[Se,Ce]=(0,a.useState)(!1),[ke,Te]=(0,a.useState)(!1),[De,_e]=(0,a.useState)(null),[Le,Ae]=(0,a.useState)(null),[Ie,$e]=(0,a.useState)(null),[Ee,Me]=(0,a.useState)(new Set),[Pe,ze]=(0,a.useState)(!1),[Fe,Be]=(0,a.useState)(!1),[Re,Oe]=(0,a.useState)(!1),[Ue,Ge]=(0,a.useState)(!1),[We,qe]=(0,a.useState)(null),[Ke,He]=(0,a.useState)(null),[Qe,Ze]=(0,a.useState)(!1),[Ve,Xe]=(0,a.useState)(""),[Je,Ye]=(0,a.useState)([]),[et,tt]=(0,a.useState)(!1),{teacher:st,userProfile:at}=(0,M.w)(),{timezone:lt}=(0,R.R)(),[rt,it]=(0,a.useState)([]),[nt,ot]=(0,a.useState)(null),dt=(0,a.useMemo)(()=>(0,$.Gs)(rt),[rt]),ct=(0,a.useMemo)(()=>{var e,t;const s=(null===st||void 0===st?void 0:st.subjects)||(null===st||void 0===st||null===(e=st.profile)||void 0===e?void 0:e.subjects)||(null===at||void 0===at?void 0:at.subjects)||(null===at||void 0===at||null===(t=at.profile)||void 0===t?void 0:t.subjects)||[];if(!Array.isArray(s)||0===s.length)return null;const a=s.map(e=>"string"===typeof e?e:(null===e||void 0===e?void 0:e.name)||(null===e||void 0===e?void 0:e.subject)||(null===e||void 0===e?void 0:e.label)||"").filter(
1Boolean);return 0===a.length?null:new Set(a.map(e=>String(e).toLowerCase()))},[st,at]),ut=(0,a.useMemo)(()=>{const e=Array.from(new Set(oe.map(e=>Z(e.classId)).filter(Boolean)));let t=e;if(nt&&nt.size>0){const s=e.filter(e=>nt.has(e));s.length>0&&(t=s)}return t.map(e=>({value:e,label:dt[e]||"Class session"})).sort((e,t)=>e.label.localeCompare(t.label,void 0,{sensitivity:"base"}))},[oe,dt,nt]),ht=(0,a.useMemo)(()=>{const e=Array.from(new Set(oe.map(e=>H(e.subject)).filter(Boolean)));if(!ct)return e.sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"}));const t=e.filter(e=>ct.has(String(e).toLowerCase()));return(t.length>0?t:e).sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"}))},[oe,ct]),mt=(0,a.useMemo)(()=>[{value:"all",label:"All Classes"},...ut],[ut]),pt=(0,a.useMemo)(()=>[{value:"all",label:"All Subjects"},...ht.map(e=>({value:e,label:e}))],[ht]),xt=(0,a.useMemo)(()=>[{value:"all",label:"All Status"},{value:"upcoming",label:"Upcoming"},{value:"completed",label:"Completed"},{value:"missed",label:"Missed"}],[]),gt=(0,a.useMemo)(()=>[{value:"day",label:"Day View"},{value:"week",label:"Week View"},{value:"month",label:"Month View"}],[]);(0,a.useEffect)(()=>{const e=(null===st||void 0===st?void 0:st.schoolId)||(null===at||void 0===at?void 0:at.schoolId);if(!e)return;let t=!1;return(async()=>{try{const s=await(0,I.getClassesBySchool)(e,"SessionSchedulerPage (class filter labels)");t||it(Array.isArray(s)?s:[])}catch(s){t||it([])}})(),()=>{t=!0}},[null===st||void 0===st?void 0:st.schoolId,null===at||void 0===at?void 0:at.schoolId]),(0,a.useEffect)(()=>{const e=(null===st||void 0===st?void 0:st.userId)||(null===st||void 0===st?void 0:st.id);if(!e)return void ot(null);let t=!1;return(async()=>{try{const s=await(0,I.getTeacherClasses)(e,"SessionSchedulerPage (teacher classes)");if(t)return;const a=Array.isArray(s)?s:(null===s||void 0===s?void 0:s.classes)||(null===s||void 0===s?void 0:s.items)||[],l=new Set(a.map(e=>{var t;return Z(null!==(t=null===e||void 0===e?void 0:e.id)&&void 0!==t?t:null===e||void 0===e?void 0:e._id)}).filter(Boolean));ot(l.size>0?l:null)}catch{t||ot(null)}})(),()=>{t=!0}},[null===st||void 0===st?void 0:st.userId,null===st||void 0===st?void 0:st.id]);const bt=()=>oe.filter(e=>Ee.has(e.id)),[ft,vt]=(0,a.useState)(""),[yt,jt]=(0,a.useState)("all"),[wt,Nt]=(0,a.useState)("all"),[St,Ct]=(0,a.useState)("all"),[kt,Tt]=(0,a.useState)("all"),[Dt,_t]=(0,a.useState)(""),[Lt,At]=(0,a.useState)("");(0,a.useEffect)(()=>{if("all"===yt)return;new Set(ut.map(e=>e.value)).has(yt)||jt("all")},[ut,yt]),(0,a.useEffect)(()=>{if("all"===wt)return;new Set(ht.map(e=>String(e).toLowerCase())).has(String(wt).toLowerCase())||Nt("all")},[ht,wt]);const It=e=>{const t=new Date(e),s=t.getDay(),a=t.getDate()-s;return new Date(t.setDate(a))},$t=(()=>{if("day"===g)return[new Date(p)];if("week"===g){const e=It(p),t=[];for(let s=0;s<7;s++){const a=new Date(e);a.setDate(e.getDate()+s),t.push(a)}return t}{const e=p.getFullYear(),t=p.getMonth(),s=new Date(e,t,1),a=new Date(e,t+1,0),l=s.getDay(),r=a.getDate(),i=[],n=new Date(e,t,0).getDate();for(let d=l-1;d>=0;d--){const s=new Date(e,t-1,n-d);i.push(s)}for(let d=1;d<=r;d++)i.push(new Date(e,t,d));const o=42-i.length;for(let d=1;d<=o;d++){const s=new Date(e,t+1,d);i.push(s)}return i}})(),Et=$t[0],Mt=$t[$t.length-1],Pt=()=>{if("day"===g)return p.toLocaleDateString("en-US",{weekday:"short",month:"short",day:"numeric"});if("week"===g){return`${Et.toLocaleDateString("en-US",{month:"short",day:"numeric"})}\u2013${Mt.toLocaleDateString("en-US",Et.getMonth()===Mt.getMonth()?{day:"numeric"}:{month:"short",day:"numeric"})}`}return p.toLocaleDateString("en-US",{month:"long",year:"numeric"})},zt=[];for(let a=0;a<=23;a++)zt.push(a);const Ft=e=>0===e?"12 AM":e<12?`${e} AM`:12===e?"12 PM":e-12+" PM",Bt=e=>`${String(e).padStart(2,"0")}:00`,Rt=e=>{if(!e)return"";const t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`},Ot=(0,E.P)("SessionSchedulerPage");(0,a.useEffect)(()=>{if(!Ot())return;(async()=>{try{ue(!0),me(null);const e=await(0,I.getSessionGroups)(null,"SessionSchedulerPage (initial)");de(e.sessionGroups||[])}catch(s){var e,t;console.error("Failed to fetch session groups:",s),me((null===(e=s.response)||void 0===e||null===(t=e.data)||void 0===t?void 0:t.detail)||"Failed to load sessions"),de([])}finally{ue(!1)}})()},[Ot]),(0,a.useEffect)(()=>{const e=async()=>{try{const e=await(0,I.getSessionGroups)(null,"SessionSchedulerPage (schedule refresh)");de(e.sessionGroups||[])}catch(e){console.error("Failed to refresh session groups:",e)}};return window.addEventListener("calendarRefresh",e),window.addEventListener("sessionScheduleRefresh",e),()=>{window.removeEventListener("calendarRefresh",e),window.removeEventListener("sessionScheduleRefresh",e)}},[]),(0,a.useEffect)(()=>{const e=m.state;if(!e)return;let t=!1;e.filterStatus&&(Tt(e.filterStatus),t=!0),"last24h"!==e.filterTimeRange&&"last7d"!==e.filterTimeRange||(At(e.filterTimeRange),t=!0),e.filterDate&&(_t(e.filterDate),At(""),t=!0),"calendar"===e.viewM
1ode?(j("calendar"),t=!0):("list"===e.viewMode||t)&&(j("list"),t=!0),t&&h(m.pathname,{replace:!0,state:{}})},[m.state,m.pathname,h]),(0,a.useEffect)(()=>{var e,t,s;const a=null===(e=m.state)||void 0===e?void 0:e.scheduleStudentId;null!=a&&""!==a&&(re(a),ne(null!=(null===(t=m.state)||void 0===t?void 0:t.scheduleClassId)&&""!==(null===(s=m.state)||void 0===s?void 0:s.scheduleClassId)?m.state.scheduleClassId:null),D(null),te(null),ae(null),C(!0),h(m.pathname,{replace:!0,state:{}}))},[null===(e=m.state)||void 0===e?void 0:e.scheduleStudentId,m.pathname,h]),(0,a.useEffect)(()=>{var e;const t=null===(e=m.state)||void 0===e?void 0:e.rescheduleSessionGroupId;if(!t||0===oe.length)return;const s=oe.find(e=>e.id===t);if(s){const e=s.scheduledTime,t=e?new Date(e):new Date;_e(s),Ae(Rt(t)),$e(Bt(t.getHours())),Te(!0),h(m.pathname,{replace:!0,state:{}})}},[oe,null===(t=m.state)||void 0===t?void 0:t.rescheduleSessionGroupId,m.pathname,h]),(0,a.useEffect)(()=>{Ye([]),tt(!1)},[]);const Ut=(0,a.useMemo)(()=>{let e=[...oe];if(ft){const t=ft.toLowerCase();e=e.filter(e=>{const s=(e.topic||"").toLowerCase(),a=(H(e.subject)||"").toLowerCase(),l=(e.classId||"").toLowerCase(),r=(e.classId&&dt[String(e.classId)]||"").toLowerCase();return s.includes(t)||a.includes(t)||l.includes(t)||r&&r.includes(t)})}if("all"!==yt){const t=Z(yt);e=e.filter(e=>Z(e.classId)===t)}if("all"!==wt){const t=String(wt).toLowerCase();e=e.filter(e=>String(H(e.subject)).toLowerCase()===t)}if("all"!==St&&(e=e.filter(e=>e.sessionType===St)),"all"!==kt&&(e=e.filter(e=>{const t=(0,F.Qc)(e);return"upcoming"===kt?"upcoming"===t||"inprogress"===t:"completed"===kt?"completed"===t:"missed"!==kt||"missed"===t})),Dt){const t=Dt;e=e.filter(e=>{if(!e.scheduledTime)return!1;return B.A.toLocalDateKey(e.scheduledTime,lt)===t})}if("last24h"===Lt){const t=Date.now()-864e5;e=e.filter(e=>!!e.scheduledTime&&new Date(e.scheduledTime).getTime()>=t)}else"last7d"===Lt&&(e=e.filter(e=>V(e.scheduledTime,lt)));return e},[oe,ft,yt,wt,St,kt,Dt,Lt,dt,lt]),Gt=(0,a.useMemo)(()=>!f||Dt||Lt?Ut:Ut.filter(e=>{if(!e.scheduledTime)return!1;const t=B.A.toLocalDateKey(e.scheduledTime,lt);if(!t)return!1;if("day"===g){const e=B.A.toLocalDateKey(p,lt);return Boolean(e)&&t===e}if("week"===g){const e=It(new Date(p));for(let s=0;s<7;s++){const a=new Date(e);a.setDate(e.getDate()+s);if(B.A.toLocalDateKey(a,lt)===t)return!0}return!1}const s=B.A._getDatePartsForTimezone(new Date(e.scheduledTime),lt),a=B.A._getDatePartsForTimezone(p,lt);return s.year===a.year&&s.month===a.month}),[Ut,g,p,lt,f,Dt,Lt]),Wt=(0,a.useMemo)(()=>{let e=0,t=0,s=0,a=0;return oe.forEach(l=>{const r=(0,F.Qc)(l),i=V(l.scheduledTime,lt);i&&e++,"upcoming"!==r&&"inprogress"!==r||t++,"completed"===r&&i&&s++,"missed"===r&&a++}),{total:e,upcoming:t,completed:s,missed:a}},[oe,lt]),qt=e=>{j("list"),v(!1),vt(""),jt("all"),Nt("all"),Ct("all"),_t(""),"total"===e?(Tt("all"),At("last7d")):"upcoming"===e?(Tt("upcoming"),At("")):"completed"===e?(Tt("completed"),At("last7d")):"missed"===e&&(Tt("missed"),At("")),window.requestAnimationFrame(()=>{var e;null===(e=document.querySelector("[data-teacher-session-scheduler] .teacher-scheduler-main-card"))||void 0===e||e.scrollIntoView({behavior:"smooth",block:"start"})})},Kt=(0,a.useMemo)(()=>{const e=new Date,t=Ut.filter(t=>!(0,F.lO)(t)&&new Date(t.scheduledTime)>e).sort((e,t)=>new Date(e.scheduledTime)-new Date(t.scheduledTime));if(0===t.length)return{topic:"",date:"",time:""};const s=t[0];return{topic:s.topic||s.subject||"Session",date:B.A.formatDate(s.scheduledTime,lt),time:B.A.formatTime(s.scheduledTime,lt)}},[Ut,lt]),Ht=(0,a.useMemo)(()=>{const e=new Date;return Ut.filter(t=>!(0,F.lO)(t)&&new Date(t.scheduledTime)>e).sort((e,t)=>new Date(e.scheduledTime)-new Date(t.scheduledTime)).slice(0,5).map(e=>{var t;const s=(null===(t=e.studentSessions)||void 0===t?void 0:t.length)||0;return{id:e.id,topic:e.topic||e.subject||"Session",grade:e.grade?(0,z.F)(e.grade):"",students:s>0?`${s} student${s>1?"s":""}`:"",date:B.A.formatDate(e.scheduledTime,lt),time:B.A.formatTime(e.scheduledTime,lt),duration:e.duration||"45m"}})},[Ut,lt]),Qt=(0,a.useMemo)(()=>{const e=new Map;return oe.forEach(t=>{const s=t.recurringSeriesId;s&&(e.has(s)||e.set(s,[]),e.get(s).push(t))}
1),e.forEach(e=>{e.sort((e,t)=>new Date(e.scheduledTime)-new Date(t.scheduledTime))}),Gt.map(t=>{var s;new Date(t.scheduledTime);const a=(null===(s=t.studentSessions)||void 0===s?void 0:s.length)||0,l=(0,F.Qc)(t);let r=null;if(t.recurringSeriesId){const s=e.get(t.recurringSeriesId)||[],a=s.findIndex(e=>e.id===t.id)+1,l=s.length;l>1&&(r=`${a}/${l}`)}return{id:t.id,student:t.grade?`${(0,z.F)(t.grade)} ${H(t.subject)}`.trim():`${a} student${a>1?"s":""}`,grade:t.grade?(0,z.F)(t.grade):"",topic:t.topic||H(t.subject)||"Session",subject:H(t.subject),type:t.sessionType?Q(t.sessionType):"Session",date:B.A.formatDate(t.scheduledTime,lt),time:B.A.formatTime(t.scheduledTime,lt),duration:t.duration||"45 min",status:l,recurringSeriesId:t.recurringSeriesId,seriesTag:r,classId:t.classId}}).sort((e,t)=>new Date(e.date+" "+e.time)-new Date(t.date+" "+t.time))},[oe,Gt,lt]),{sortedRows:Zt,sortConfig:Vt,handleSort:Xt}=(0,O.$)(Qt,G._u),Jt=(null===st||void 0===st?void 0:st.fullName)||(null===st||void 0===st?void 0:st.name)||(null===at||void 0===at?void 0:at.fullName)||(null===at||void 0===at?void 0:at.name)||(null===st||void 0===st?void 0:st.email)||(null===at||void 0===at?void 0:at.email)||"",Yt=(0,a.useMemo)(()=>Dt||("last24h"===Lt?"Last 24 hours":"last7d"===Lt?"Last 7 days":Pt()),[Dt,Lt,g,p,Et,Mt]),es=(0,a.useMemo)(()=>(e=>{let{searchQuery:t,filterClass:s,filterSubject:a,filterType:l,filterStatus:r,filterDate:i,filterTimeRange:n,classIdToName:o}=e,d="All Status";"upcoming"===r?d="Upcoming":"completed"===r?d="Completed":"missed"===r&&(d="Missed");const c=["all"===s?"All Classes":(null===o||void 0===o?void 0:o[String(s)])||String(s),"all"===a?"All Subjects":String(a),"all"===l?"All Types":String(l),d];return i&&c.push(`Date: ${i}`),"last24h"===n?c.push("Last 24 hours"):"last7d"===n&&c.push("Last 7 days"),null!==t&&void 0!==t&&t.trim()&&c.push(`Search: ${t.trim()}`),c.join(", ")})({searchQuery:ft,filterClass:yt,filterSubject:wt,filterType:St,filterStatus:kt,filterDate:Dt,filterTimeRange:Lt,classIdToName:dt}),[ft,yt,wt,St,kt,Dt,Lt,dt]),ts=(0,a.useMemo)(()=>[{value:"all",label:"All Types"},...Array.from(new Set(oe.map(e=>e.sessionType).filter(Boolean))).map(e=>({value:e,label:Q(e)}))],[oe]),ss=(e,t)=>{if(t){const e=t.currentTarget.getBoundingClientRect(),s=window.innerWidth;window.innerHeight;let a=e.left+e.width/2,l=e.top-10,r=!0;const i=320;a-i/2<10?a=i/2+10:a+i/2>s-10&&(a=s-i/2-10);l-200<10&&(l=e.bottom+10,r=!1),be({x:a,y:l,showAbove:r})}xe(e)},as=()=>{xe(null)},ls=(e,t)=>{ve(e),t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",e.id),t.target&&(t.target.style.opacity="0.5"),t.stopPropagation()},rs=e=>{ve(null),je(null),e.target&&(e.target.style.opacity="1"),Ce(!0),setTimeout(()=>Ce(!1),100)},is=()=>{je(null)},ns=async function(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e)try{var a;Ne(!0);const l=await(0,I.rescheduleSession)(e.id,{scheduledTime:t,classId:e.classId,updateAllInSeries:s}),r=await(0,I.getSessionGroups)(null,"SessionSchedulerPage (refresh after reschedule)");de(r.sessionGroups||[]);const i=(null===(a=l.data)||void 0===a?void 0:a.updatedCount)||1;He({show:!0,type:"success",title:"Success",message:s&&i>1?`${i} sessions updated successfully!`:"Session rescheduled successfully!"})}catch(i){var l,r;console.error("Failed to reschedule session:",i);const e=(null===(l=i.response)||void 0===l||null===(r=l.data)||void 0===r?void 0:r.detail)||"Failed to reschedule session. Please try again.";He({show:!0,type:"error",title:"Error",message:e})}finally{Ne(!1),ve(null)}else console.error("No session provided to updateSessionTime")};return(0,k.jsxs)("div",{className:"teacher-session-scheduler-page min-w-0 max-w-full w-full overflow-x-hidden","data-teacher-session-scheduler":!0,children:[(0,k.jsx)(i.A,{items:[{label:"Dashboard",href:"/teacher/dashboard"},{label:"Session Scheduler",current:!0}]}),(0,k.jsxs)("div",{className:"teacher-scheduler-page-header",children:[(0,k.jsxs)("div",{className:"teacher-scheduler-page-header__row",children:[(0,k.jsx)("h1",{className:"teacher-dash-title min-w-0",children:"Session Scheduler"}),(0,k.jsxs)("button",{type:"button",onClick:()=>{D(null),te(null),ae(null),C(!0)},className:"teacher-scheduler-page-header__cta teacher-dash-btn teacher-dash-btn-primary teacher-dash-btn-rounded-lg flex shrink-0 items-center gap-2 text-sm font-semibold shadow-sm",children:[(0,k.jsx)(d.OiG,{size:16,"aria-hidden":!0}),(0,k.jsx)("span",{children:"Schedule Session"})]})]}),(0,k.jsx)("p",{className:"teacher-dash-text-muted",children:"Plan, schedule, and manage tutoring sessions for your students. The KPI summary below reflects your session activity for the past 7 days."})]}),Kt.topic&&(0,k.jsx)("div",{className:"teacher-scheduler-next-session-banner",children:(0,k.jsxs)("p",{className:"text-sm text-blue-800",children:[(0,k.jsx)("span",{className:"font-semibold",children:"Next session:"})," ",Kt.topic,Kt.date&&` on ${Kt.date}`,Kt.time&&` at ${Kt.time}`]})}),(0,k.jsx)("div",{className:"teacher-scheduler-kpi-grid",children:X.map(e=>{var t;const s=e.icon,a=null!==(t=Wt[e.id])&&void 0!==t?t:0;return(0,k.jsx)(A.cJ,{title:e.tooltipTitle,text:e.tooltipBody,showTitleInPopup:!0,placement:"top",className:"teacher-scheduler-kpi-card-wrap",children:(0,k.jsx)("div",{role:"button",tabIndex:0,className:`teacher-scheduler-kpi-card teacher-scheduler-kpi-card--${e.tone}`,onClick:()=>qt(e.id),onKeyDown:t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),qt(e.id))},"aria-label":`${e.title}: ${a}. ${e.tooltipBody} Activate to view filtered list.`,children:(0,k.jsxs)("div",{className:"teacher-scheduler-kpi-card__body",children:[(0,k.jsx)("p",{className:"teacher-scheduler-kpi-card__value",children:a}),(0,k.jsxs)("div",{className:"teacher-scheduler-kpi-card__meta",children:[(0,k.jsx)("div",{className:`teacher-scheduler-kpi-card__icon teacher-scheduler-kpi-card__icon--${e.tone}
1`,"aria-hidden":!0,children:(0,k.jsx)(s,{size:18})}),(0,k.jsx)("span",{className:"teacher-scheduler-kpi-card__title",children:e.title}),(0,k.jsx)("p",{className:"teacher-scheduler-kpi-card__sublabel",children:e.subLabel})]})]})})},e.id)})}),(0,k.jsx)("div",{className:"teacher-dash-card teacher-dash-card-pad min-w-0 max-w-full overflow-visible",children:(0,k.jsxs)("div",{className:"teacher-scheduler-filter-toolbar",children:[(0,k.jsx)("div",{className:"teacher-scheduler-filter-toolbar__search",children:(0,k.jsx)(o.A,{type:"text",placeholder:"Search by student, topic, or keyword...",value:ft,onChange:e=>vt(e.target.value),inputClassName:"teacher-scheduler-filter-control"})}),(0,k.jsx)(n.A,{value:yt,onChange:jt,options:mt,"aria-label":"Filter by class"}),(0,k.jsx)(n.A,{value:wt,onChange:Nt,options:pt,"aria-label":"Filter by subject"}),(0,k.jsx)(n.A,{value:St,onChange:Ct,options:ts,"aria-label":"Filter by session type"}),(0,k.jsx)(n.A,{value:kt,onChange:Tt,options:xt,"aria-label":"Filter by status"}),(0,k.jsxs)("div",{className:"teacher-scheduler-filter-toolbar__date",children:[(0,k.jsx)(P.A,{type:"date",value:Dt,onChange:e=>_t(e.target.value),className:"teacher-ui-field teacher-scheduler-filter-control w-full min-w-0 box-border",placeholder:"dd-mm-yyyy"}),(0,k.jsx)(d.bfZ,{className:"teacher-scheduler-filter-toolbar__date-icon pointer-events-none",size:14,"aria-hidden":!0})]}),(0,k.jsx)("button",{type:"button",onClick:()=>{vt(""),jt("all"),Nt("all"),Ct("all"),Tt("all"),_t(""),At(""),v(!0)},className:"teacher-scheduler-filter-toolbar__clear",children:"Clear"})]})}),(0,k.jsxs)("div",{className:"teacher-session-scheduler-layout",children:[(0,k.jsxs)("div",{className:"teacher-dash-card teacher-scheduler-main-card min-w-0 overflow-hidden",children:[(0,k.jsxs)("div",{className:"teacher-scheduler-card-header",children:[(0,k.jsxs)("div",{className:"teacher-scheduler-card-header__modes",role:"tablist","aria-label":"Scheduler display mode",children:[(0,k.jsxs)("button",{type:"button",role:"tab","aria-selected":"list"===y,onClick:()=>j("list"),className:"teacher-scheduler-mode-btn "+("list"===y?"teacher-scheduler-mode-btn--active":""),children:[(0,k.jsx)(d.svy,{size:14,"aria-hidden":!0}),"List"]}),(0,k.jsxs)("button",{type:"button",role:"tab","aria-selected":"calendar"===y,onClick:()=>j("calendar"),className:"teacher-scheduler-mode-btn "+("calendar"===y?"teacher-scheduler-mode-btn--active":""),children:[(0,k.jsx)(d.bfZ,{size:14,"aria-hidden":!0}),"Calendar"]})]}),(0,k.jsxs)("div",{className:"teacher-scheduler-card-header__controls",children:[(0,k.jsxs)("div",{className:"teacher-scheduler-date-nav",children:[(0,k.jsx)("button",{type:"button",onClick:()=>{const e=new Date(p);"day"===g?e.setDate(e.getDate()-1):"week"===g?e.setDate(e.getDate()-7):e.setMonth(e.getMonth()-1),x(e),v(!0)},className:"teacher-scheduler-date-nav__btn","aria-label":"Previous period",children:(0,k.jsx)(d._Jj,{size:14,"aria-hidden":!0})}),(0,k.jsx)("span",{className:"teacher-scheduler-date-nav__range",children:Pt()}),(0,k.jsx)("button",{type:"button",onClick:()=>{const e=new Date(p);"day"===g?e.setDate(e.getDate()+1):"week"===g?e.setDate(e.getDate()+7):e.setMonth(e.getMonth()+1),x(e),v(!0)},className:"teacher-scheduler-date-nav__btn","aria-label":"Next period",children:(0,k.jsx)(d.X6T,{size:14,"aria-hidden":!0})})]}),(0,k.jsx)("div",{className:"teacher-scheduler-period-modes",role:"group","aria-label":"View period",children:gt.map(e=>(0,k.jsx)("button",{type:"button",onClick:()=>{b(e.value),v(!0)},className:"teacher-scheduler-period-btn "+(g===e.value?"teacher-scheduler-period-btn--active":""),"aria-pressed":g===e.value,children:e.label},e.value))}),"list"===y&&(0,k.jsxs)("button",{type:"button",className:"teacher-scheduler-export-btn",onClick:()=>Ze(!0),"aria-haspopup":"dialog",children:[(0,k.jsx)(d.WCW,{size:14,"aria-hidden":!0}),"Export"]})]})]}),"calendar"===y&&(0,k.jsxs)("div",{className:"p-4",children:[we&&"undefined"!==typeof document&&(0,l.createPortal)((0,k.jsx)("div",{className:"teacher-modal-overlay",role:"presentation",children:(0,k.jsx)("div",{role:"status",className:"teacher-modal-panel teacher-dash-card-pad shrink-0",onClick:e=>e.stopPropagation(),children:(0,k.jsxs)("div",{className:"flex items-center gap-3",children:[(0,k.jsx)("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-blue-600"}),(0,k.jsx)("p",{className:"teacher-dash-text font-medium",children:"Rescheduling session..."})]})})}),document.body),"month"===g?(0,k.jsx)("div",{className:"overflow-x-auto min-w-0",children:(0,k.jsxs)("div",{className:"grid grid-cols-7 gap-1 min-w-[280px]",children:[["Sun","Mon","Tue","Wed","Thu","Fri","Sat"].map(e=>(0,k.jsx)("div",{className:"p-2 teacher-dash-text-xs font-semibold text-center border-b border-[var(--border)]",children:e},e)),$t.map((e,t)=>{var s;const a=e.toDateString()===(new Date).toDateString(),l=e.getMonth()===p.getMonth(),r=(e=>{const t=B.A.toLocalDateKey(e,lt);return Ut.filter(e=>!(0,F.lO)(e)&&!!e.scheduledTime&&B.A.toLocalDateKey(e.scheduledTime,lt)===t)})(e);return(0,k.jsxs)("div",{className:`min-h-[100px] p-2 border border-[var(--border)] hover:bg-gray-50 cursor-pointer ${a?"teacher-scheduler-cal-cell--today":""} ${l?"":"bg-gray-50 opacity-50"} ${(null===ye||void 0===ye||null===(s=ye.date)||void 0===s?void 0:s.getTime())!==e.getTime()||null!==ye&&void 0!==ye&&ye.hour?"":"teacher-scheduler-cal-cell--selected"}`,onDragOver:t=>{t.preventDefault(),je({date:e})},onDragLeave:()=>{je(null)},onDrop:t=>(async(e,t)=>{if(t.preventDefault(),je(null),!fe)return;const s=oe.find(e=>e.id===fe.id),a=Qt.find(e=>e.id===fe.id),l=s?{...a,...s,scheduledTime:s.scheduledTime}:a||fe,r=new Date(l.scheduledTime||fe.scheduledTime);_e(l),Ae(Rt(e)),$e(Bt(r.getHours())),Te(!0),ve(null)})(e,t),onClick:()=>{b("day"),x(e)},children:[(0,k.jsx)("div",{className:"text-sm font-semibold mb-1 "+(a?"text-blue-600":l?"teacher-dash-text":"text-muted-foreground"),children:e.getDate()}),(0,k.jsxs)("div",{className:"space-y-1",children:[r.slice(0,3).map(e=>{const t=H(e.subject)||"Session",s=(0,F.lO)(e),a=s?K:(0,W.ar)(t),l=e.topic||t,r=(new Date(e.scheduledTime),(null===fe||void 0===fe?void 0:fe.id)===e.id);return(0,k.jsxs)("div",{draggable:!0,onDragStart:t=>ls(e,t),onDragEnd:rs,className:`${a} text-white text-[10px] p-1 rounded truncate cursor-move hover:opacity-80 relative ${s?"opacity-70 line-through":""} ${r?"opacity-50":""}`,onMouseEnter:t=>ss(e,t),onMouseLeave:as,onClick:t=>{t.stopPropagation();const s=e.classId?`/teacher/session-scheduler/${e.id}/${e.classId}`:`/teacher/session-scheduler/${e.id}`;h(s)},title:"Click to view details, drag to reschedule",children:[B.A.formatTime(e.scheduledTime,lt)," ",l]},e.id)}),r.length>3&&(0,k.jsxs)("div",{className:"teacher-dash-text-xs text-[10px]",children:["+",r.length-3," more"]})]})]},t)})]})}):(0,k.jsx)("div",{className:"overflow-x-auto min-w-0",style:{WebkitOverflowScrolling:"touch"},children:(0,k.jsxs)("table",{className:"w-full border-collapse",style:{minWidth:"560px"},children:[(0,k.jsx)("thead",{children:(0,k.jsxs)("tr",{children:[(0,k.jsx)("th",{className:"w-24 p-2 teacher-dash-text-xs font-semibold text-left border-b border-[var(--border)]",children:"Time"}),$t.map((e,t)=>{const s=e.toLocaleDateString("en-US",{weekday:"short"}),a=e.getDate(),l=e.toDateString()===(new Date).toDateString();return(0,k.jsxs)("th",{className:"p-2 text-xs font-semibold text-center border-b border-[var(--border)] "+(l?"teacher-scheduler-cal-cell--today":""),children:[(0,k.jsx)("div",{children:s}),(0,k.jsx)("div",{className:"text-lg font-bold "+(l?"text-blue-600":"teacher-dash-text"),children:a})]},t)})]})}),(0,k.jsx)("tbody",{children:zt.map(e=>(0,k.jsxs)("tr",{className:"border-b border-[var(--border)]",children:[(0,k.jsx)("td",{className:"p-2 teacher-dash-text-xs font-medium",children:Ft(e)}),$t.map((t,s)=>{var a;const l=((e,t)=>{const s=B.A.toLocalDateKey(e,lt);return Ut.filter(e=>{if((0,F.lO)(e))return!1;if(!e.scheduledTime)return!1;if(B.A.toLocalDateKey(e.scheduledTime,lt)!==s)return!1;const a=new Date(e.scheduledTime);return!Number.isNaN(a.getTime())&&(lt?B.A._getDatePartsForTimezone(a,lt).hour:a.getHours())===t})})(t,e);return(0,k.jsx)("td",{className:"p-1 h-12 border-r border-[var(--border)] hover:bg-gray-50 cursor-pointer relative "+((null===ye||void 0===ye||null===(a=ye.date)||void 0===a?void 0:a.getTime())===t.getTime()&&(null===ye||void 0===ye?void 0:ye.hour)===e?"teacher-scheduler-cal-cell--selected":""),onDragOver:s=>((e,t,s)=>{s.preventDefault(),s.dataTransfer.dropEffect="move",je({date:e,hour:t})})(t,e,s),onDragLeave:is,onDrop:s=>(async(e,t,s)=>{if(s.preventDefault(),je(null),!fe)return;const a=oe.find(e=>e.id===fe.id),l=Qt.find(e=>e.id===fe.id),r=a?{...l,...a,scheduledTime:a.scheduledTime}:l||fe;_e(r),Ae(Rt(e)),$e(Bt(t)),Te(!0),ve(null)})(t,e,s),onClick:()=>((e,t)=>{D(e),te(Bt(t)),ae(null),C(!0)})(t,e),children:l.map(s=>{var a,l;const r=H(s.subject)||"Session",i=(0,F.lO)(s),n=i?K:(0,W.ar)(r),o=s.topic||r,d=(null===(a=s.studentSessions)||void 0===a?void 0:a.length)||0,c=(null===fe||void 0===fe?void 0:fe.id)===s.id,u=(null===ye||void 0===ye||null===(l=ye.date)||void 0===l?void 0:l.getTime())===t.getTime()&&(null===ye||void 0===ye?void 0:ye.hour)===e;return(0,k.jsxs)("div",{draggable:!0,onDragStart:e=>ls(s,e),onDragEnd:rs,className:`${n} text-white text-xs p-1 rounded mb-1 cursor-move hover:opacity-80 relative ${i?"opacity-70 line-through":""} ${c?"opacity-50":""} ${u?"ring-2 ring-blue-400 ring-offset-1":""}`,onMouseEnter:e=>ss(s,e),onMouseLeave:as,onClick:e=>{if(Se)return void e.stopPropagation();e.stopPropagation();const t=s.classId?`/teacher/session-scheduler/${s.id}/${s.classId}`:`/teacher/session-scheduler/${s.id}`;h(t)},title:"Drag to reschedule",children:[(0,k.jsx)("div",{className:"font-semibold truncate",children:o}),(0,k.jsxs)("div",{className:"text-[10px] opacity-90",children:[d," student",d>1?"s":""]})]},s.id)})},s)})]},e))})]})}),pe&&(0,k.jsxs)("div",{className:"fixed z-50 teacher-ui-surface shadow-xl p-4 min-w-[320px] max-w-[400px] pointer-events-auto",style:{left:`${ge.x}px`,top:`${ge.y}px`,transform:ge.showAbove?"translate(-50%, -100%)":"translate(-50%, 0)",marginTop:ge.showAbove?"-8px":"8px"},onMouseEnter:()=>xe(pe),onMouseLeave:as,children:[(0,k.jsxs)("div",{className:"space-y-3",children:[(0,k.jsxs)("div",{className:"flex justify-between items-start border-b border-[var(--border)] pb-2",children:[(0,k.jsx)("span",{className:"teacher-dash-text-xs",children:"Target"}),(0,k.jsxs)("span",{className:"teacher-dash-text font-semibold text-xs capitalize",children:[(os=(null===(s=pe.studentSessions)||void 0===s?void 0:s.length)||0,1===os?"individual":os<=5?"small group":"entire class"),(null===(u=pe.studentSessions)||void 0===u?void 0:u.length)>0&&(0,k.jsxs)("span",{className:"teacher-dash-text-xs font-normal",children:[" ","(",pe.studentSessions.length," student",pe.studentSessions.length>
11?"s":"",")"]})]})]}),(0,k.jsxs)("div",{className:"flex justify-between items-start border-b border-[var(--border)] pb-2",children:[(0,k.jsx)("span",{className:"teacher-dash-text-xs",children:"Session Type"}),(0,k.jsx)("span",{className:"teacher-dash-text font-semibold text-xs",children:Q(pe.sessionType)})]}),(0,k.jsxs)("div",{className:"flex justify-between items-start border-b border-[var(--border)] pb-2",children:[(0,k.jsx)("span",{className:"teacher-dash-text-xs",children:"Subject & Topic"}),(0,k.jsxs)("span",{className:"teacher-dash-text font-semibold text-xs text-right",children:[H(pe.subject)||"N/A",pe.topic&&` - ${pe.topic}`]})]}),(0,k.jsxs)("div",{className:"flex justify-between items-start",children:[(0,k.jsx)("span",{className:"teacher-dash-text-xs",children:"Schedule"}),(0,k.jsxs)("div",{className:"text-right",children:[(0,k.jsxs)("p",{className:"teacher-dash-text font-semibold text-xs",children:[B.A.formatLocal(pe.scheduledTime,{weekday:"short",month:"short",day:"numeric"},lt)," ","at ",B.A.formatTime(pe.scheduledTime,lt)]}),(0,k.jsxs)("p",{className:"teacher-dash-text-xs text-[10px] mt-1",children:[pe.duration||"45"," min",pe.grade&&` \u2022 Grade ${pe.grade}`]})]})]})]}),ge.showAbove?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)("div",{className:"absolute bottom-0 left-1/2 transform -translate-x-1/2 translate-y-full",style:{width:0,height:0,borderLeft:"8px solid transparent",borderRight:"8px solid transparent",borderTop:"8px solid white"}}),(0,k.jsx)("div",{className:"absolute bottom-0 left-1/2 transform -translate-x-1/2 translate-y-full",style:{width:0,height:0,borderLeft:"9px solid transparent",borderRight:"9px solid transparent",borderTop:"9px solid #e5e7eb",marginTop:"1px"}})]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)("div",{className:"absolute top-0 left-1/2 transform -translate-x-1/2 -translate-y-full",style:{width:0,height:0,borderLeft:"8px solid transparent",borderRight:"8px solid transparent",borderBottom:"8px solid white"}}),(0,k.jsx)("div",{className:"absolute top-0 left-1/2 transform -translate-x-1/2 -translate-y-full",style:{width:0,height:0,borderLeft:"9px solid transparent",borderRight:"9px solid transparent",borderBottom:"9px solid #e5e7eb",marginTop:"-1px"}})]})]}),(0,k.jsxs)("div",{className:"teacher-scheduler-cal-footer","aria-label":"Calendar subject group legend",children:[(0,k.jsxs)("div",{className:"teacher-scheduler-cal-legend",children:[(0,k.jsx)("p",{className:"teacher-scheduler-cal-legend__heading",children:"Subject Groups"}),(0,k.jsx)("div",{className:"teacher-scheduler-cal-legend__items",role:"list",children:q.map(e=>(0,k.jsxs)("div",{className:"teacher-scheduler-cal-legend__item",role:"listitem",children:[(0,k.jsx)("span",{className:"teacher-scheduler-cal-legend__swatch",style:{backgroundColor:e.swatchColor},"aria-hidden":!0}),(0,k.jsx)("span",{className:"teacher-scheduler-cal-legend__label",children:e.label})]},e.id))})]}),(0,k.jsxs)("aside",{className:"teacher-scheduler-cal-tip","aria-label":"Scheduling tip",children:[(0,k.jsx)("span",{className:"teacher-scheduler-cal-tip__icon","aria-hidden":!0,children:"\ud83d\udca1"}),(0,k.jsxs)("p",{className:"teacher-scheduler-cal-tip__text",children:[(0,k.jsx)("span",{className:"teacher-scheduler-cal-tip__label",children:"Tip:"})," ","Click any empty time slot to quickly schedule a session for that date and time."]})]})]})]}),"list"===y&&(0,k.jsxs)("div",{className:"p-4",children:[(0,k.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,k.jsx)("h2",{className:"teacher-dash-heading-lg text-xl font-bold",children:"Sessions List"}),Ee.size>0&&(0,k.jsxs)("div",{className:"flex items-center gap-2",children:[(0,k.jsxs)("span",{className:"teacher-dash-text-muted",children:[Ee.size," session",Ee.size>1?"s":""," selected"]}),(0,k.jsx)("button",{onClick:()=>ze(!0),className:"px-3 py-1.5 text-sm border border-[var(--border)] rounded-lg teacher-dash-text hover:bg-gray-50",children:"Batch Reschedule"}),(0,k.jsx)("button",{onClick:()=>Be(!0),className:"px-3 py-1.5 text-sm border border-[var(--border)] rounded-lg teacher-dash-text hover:bg-gray-50",children:"Batch Duplicate"}),(0,k.jsx)("button",{onClick:()=>Oe(!0),className:"px-3 py-1.5 text-sm border border-red-300 rounded-lg text-red-600 hover:bg-red-50",children:"Batch Cancel"}),(0,k.jsx)("button",{onClick:()=>
1Me(new Set),className:"px-3 py-1.5 teacher-dash-text-muted hover:teacher-dash-text",children:"Clear"})]})]}),(0,k.jsx)("div",{className:"overflow-x-auto",children:(0,k.jsxs)("table",{className:"w-full border-collapse",children:[(0,k.jsx)("thead",{children:(0,k.jsxs)("tr",{className:"border-b border-[var(--border)]",children:[(0,k.jsx)("th",{className:"p-3 text-left",children:(0,k.jsx)(P.A,{type:"checkbox",checked:Ee.size>0&&Ee.size===Zt.length,onChange:e=>{return t=e.target.checked,void Me(t?new Set(Qt.map(e=>e.id)):new Set);var t},className:"rounded border-[var(--border)] text-blue-600 focus:ring-blue-500"})}),(0,U.P)(G._u,Vt,Xt,{defaultClassName:"p-3 text-left teacher-dash-text-muted font-semibold text-xs uppercase tracking-wide"})]})}),(0,k.jsx)("tbody",{children:0===Zt.length?(0,k.jsx)("tr",{children:(0,k.jsx)("td",{colSpan:7,className:"p-8 text-center teacher-dash-text-xs",children:"No sessions found for the selected period or filters."})}):Zt.map(e=>{const t=oe.find(t=>t.id===e.id),s="4"===(null===t||void 0===t?void 0:t.status)||"cancelled"===(null===t||void 0===t?void 0:t.status);return(0,k.jsxs)("tr",{className:"border-b border-[var(--border)] hover:bg-gray-50 transition-colors cursor-pointer",onClick:s=>{if("checkbox"===s.target.type)return;const a=null!==t&&void 0!==t&&t.classId?`/teacher/session-scheduler/${e.id}/${t.classId}`:`/teacher/session-scheduler/${e.id}`;h(a)},children:[(0,k.jsx)("td",{className:"p-3",onClick:e=>e.stopPropagation(),children:(0,k.jsx)(P.A,{type:"checkbox",checked:Ee.has(e.id),onChange:()=>{return t=e.id,void Me(e=>{const s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s});var t},className:"rounded border-[var(--border)] text-blue-600 focus:ring-blue-500"})}),(0,k.jsx)("td",{className:"p-3",children:(0,k.jsxs)("div",{children:[(0,k.jsxs)("div",{className:"flex items-center gap-2",children:[(0,k.jsx)("p",{className:"teacher-dash-text font-medium",children:e.student}),e.seriesTag&&(0,k.jsx)("span",{className:"teacher-dash-badge",children:e.seriesTag})]}),(0,k.jsx)("p",{className:"teacher-dash-text-xs mt-0.5",children:e.topic})]})}),(0,k.jsx)("td",{className:"p-3",children:(0,k.jsx)("span",{className:"teacher-dash-text-xs",children:H(e.subject)})}),(0,k.jsx)("td",{className:"p-3",children:(0,k.jsx)("span",{className:"inline-flex items-center px-2.5 py-1 rounded-full text-xs font-medium bg-gray-100 teacher-dash-text",children:e.type})}),(0,k.jsx)("td",{className:"p-3",children:(0,k.jsxs)("div",{children:[(0,k.jsx)("p",{className:"teacher-dash-text",children:e.date}),(0,k.jsx)("p",{className:"teacher-dash-text-xs mt-0.5",children:e.time})]})}),(0,k.jsx)("td",{className:"p-3",children:(0,k.jsx)("span",{className:"teacher-dash-text",children:e.duration})}),(0,k.jsx)("td",{className:"p-3",children:s?(0,k.jsxs)("span",{className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium bg-gray-300 teacher-dash-text",children:[(0,k.jsx)(d._Hm,{size:10}),"cancelled"]}):"upcoming"===e.status?(0,k.jsxs)("span",{className:"teacher-dash-badge gap-1.5 rounded-full",children:[(0,k.jsx)(d.w_X,{size:10}),"upcoming"]}):"missed"===e.status?(0,k.jsxs)("span",{className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium bg-red-100 text-red-700",children:[(0,k.jsx)(d.TNq,{size:10}),"missed"]}):"inprogress"===e.status?(0,k.jsxs)("span",{className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium bg-amber-100 text-amber-800",children:[(0,k.jsx)(d.w_X,{size:10}),"in progress"]}):(0,k.jsxs)("span",{className:"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium bg-green-100 text-green-700",children:[(0,k.jsx)(d.A7C,{size:10}),"completed"]})})]},e.id)})})]})})]})]}),(0,k.jsx)("div",{className:"teacher-session-scheduler-aside space-y-4",children:(0,k.jsxs)("div",{className:"teacher-dash-card teacher-dash-card-pad",children:[(0,k.jsx)("h3",{className:"text-sm font-semibold text-foreground mb-4",children:"Next 5 Sessions"}),ce?(0,k.jsx)("div",{className:"text-center py-4 teacher-dash-text-xs text-sm",children:"Loading sessions..."}):0===Ht.length?(0,k.jsx)("div",{className:"text-center py-4 teacher-dash-text-xs text-sm",children:"No upcoming sessions"}):(0,k.jsx)("div",{className:"space-y-3",children:Ht.map(e=>(0,k.jsxs)("div",{className:"border border-[var(--border)] rounded-lg p-3 hover:border-blue-300 transition",children:[(0,k.jsx)("p",{className:"teacher-dash-text font-semibold mb-1",children:e.topic}),(0,k.jsx)("p",{className:"teacher-dash-text-xs mb-1",children:e.grade||e.students}),(0,k.jsxs)("div",{className:"flex items-center justify-between teacher-dash-text-xs",children:[(0,k.jsxs)("span",{children:[e.date," ",e.time]}),(0,k.jsx)("span",{className:"font-medium",children:e.duration})]})]},e.id))})]})})]}),(0,k.jsx)(c.A,{isOpen:S,onClose:()=>{C(!1),re(null),ne(null),ae(null);(async()=>{try{const e=await(0,I.getSessionGroups)(null,"SessionSchedulerPage (refresh after modal close)");de(e.sessionGroups||[])}catch(e){console.error("Failed to refresh session groups:",e)}})()},initialDate:T?Rt(T):null,initialTime:ee,initialDuration:se,initialStudentId:le,initialClassId:ie}),ke&&De&&(0,k.jsx)(Y,{isOpen:ke,onClose:()=>{Te(!1),_e(null)},onConfirm:async function(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!De)return;const a=De,[l,r,i]=e.split("-"),[n,o]=t.split(":"),d=new Date(parseInt(l),parseInt(r)-1,parseInt(i),parseInt(n),parseInt(o)).toISOString();Te(!1),_e(null),await ns(a,d,s)},session:De,initialDate:Le,initialTime:Ie,hasSeries:!!De.recurringSeriesId,timezone:lt}),Pe&&(0,k.jsx)(J,{isOpen:Pe,onClose:()=>ze(!1),selectedSessions:Array.from(Ee).map(e=>{const t=oe.find(t=>
1t.id===e),s=Qt.find(t=>t.id===e);return t?{...t,...s}:null}).filter(Boolean),onConfirm:async function(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const a=bt();if(0!==a.length)try{Ge(!0),ze(!1);const[u,h,p]=e.split("-"),[x,g]=t.split(":"),b=new Date(parseInt(u),parseInt(h)-1,parseInt(p),parseInt(x),parseInt(g)),f=b.toISOString();let v=0,y=0;const j=[],w=new Set,N=new Map,S=[];a.forEach(e=>{s&&e.recurringSeriesId?(N.has(e.recurringSeriesId)||N.set(e.recurringSeriesId,[]),N.get(e.recurringSeriesId).push(e)):S.push(e)});for(const[e,t]of N.entries())if(!w.has(e)){w.add(e);try{var l,r,i;const s=await(0,I.getSessionGroups)(null,`SessionSchedulerPage (batch reschedule series ${e})`),a=(null===s||void 0===s||null===(l=s.sessionGroups)||void 0===l?void 0:l.filter(t=>t.recurringSeriesId===e))||t;if(0===a.length)continue;a.sort((e,t)=>new Date(e.scheduledTime)-new Date(t.scheduledTime));const n=a[0],o=a[a.length-1],d=new Date(n.scheduledTime),c=new Date(o.scheduledTime)-d,u=new Date(b.getTime()-c).toISOString(),h=await(0,I.rescheduleSession)(n.id,{scheduledTime:u,classId:n.classId,updateAllInSeries:!0}),p=await(0,I.getSessionGroups)(null,`SessionSchedulerPage (batch reschedule check series ${e})`),x=(null===p||void 0===p||null===(r=p.sessionGroups)||void 0===r?void 0:r.filter(t=>t.recurringSeriesId===e))||[];for(const e of x){if(new Date(e.scheduledTime)>b)try{await(0,I.cancelSession)(e.id,{classId:e.classId})}catch(m){console.error("Failed to cancel session:",e.id,m)}}v+=(null===(i=h.data)||void 0===i?void 0:i.updatedCount)||a.length}catch(m){var n,o;y++,j.push(`Series ${e}: ${(null===(n=m.response)||void 0===n||null===(o=n.data)||void 0===o?void 0:o.detail)||"Failed"}`),console.error("Failed to update series:",e,m)}}for(const e of S)try{await(0,I.rescheduleSession)(e.id,{scheduledTime:f,classId:e.classId,updateAllInSeries:!1});v++}catch(m){var d,c;y++,j.push(`${e.topic||H(e.subject)}: ${(null===(d=m.response)||void 0===d||null===(c=d.data)||void 0===c?void 0:c.detail)||"Failed"}`),console.error("Failed to reschedule session:",e.id,m)}const C=await(0,I.getSessionGroups)(null,"SessionSchedulerPage (refresh after batch reschedule)");de(C.sessionGroups||[]),Me(new Set),He(v>0&&0===y?{show:!0,type:"success",title:"Success",message:s?`Successfully updated recurring series to end on ${e}!`:`Successfully rescheduled ${v} session(s)!`}:v>0&&y>0?{show:!0,type:"error",title:"Partial Success",message:`${v} session(s) updated, but ${y} failed. ${j.slice(0,3).join("; ")}`}:{show:!0,type:"error",title:"Error",message:`Failed to update sessions. ${j.slice(0,3).join("; ")}`})}catch(m){var u,h;console.error("Failed to batch reschedule sessions:",m),He({show:!0,type:"error",title:"Error",message:(null===(u=m.response)||void 0===u||null===(h=u.data)||void 0===h?void 0:h.detail)||"Failed to reschedule sessions. Please try again."})}finally{Ge(!1)}}}),Fe&&"undefined"!==typeof document&&(0,l.createPortal)((0,k.jsx)("div",{className:"teacher-modal-overlay",role:"presentation",children:(0,k.jsxs)("div",{role:"dialog","aria-modal":"true",className:"teacher-modal-panel w-full max-w-md
1shrink-0",onClick:e=>e.stopPropagation(),children:[(0,k.jsxs)("div",{className:"teacher-modal-panel__header flex items-center justify-between gap-4",children:[(0,k.jsx)("h2",{className:"teacher-dash-heading-lg text-xl",children:"Batch Duplicate"}),(0,k.jsx)("button",{type:"button",onClick:()=>Be(!1),className:"shrink-0 rounded-lg p-2 text-muted-foreground transition hover:bg-gray-100 hover:teacher-dash-text-muted","aria-label":"Close",children:(0,k.jsx)(d.QCr,{size:20})})]}),(0,k.jsxs)("div",{className:"teacher-modal-panel__body",children:[(0,k.jsxs)("p",{className:"teacher-dash-text-muted",children:["Duplicate ",Ee.size," selected session(s) with new scheduling."]}),(0,k.jsx)("p",{className:"teacher-dash-text-xs mt-2 italic",children:"This feature is coming soon. For now, please duplicate sessions individually."})]}),(0,k.jsx)("div",{className:"teacher-modal-panel__footer",children:(0,k.jsx)("button",{type:"button",onClick:()=>Be(!1),className:"rounded-lg border border-[var(--border)] bg-white px-4 py-2 teacher-dash-text font-medium hover:bg-gray-50",children:"Close"})})]})}),document.body),Re&&"undefined"!==typeof document&&(0,l.createPortal)((0,k.jsx)("div",{className:"teacher-modal-overlay",role:"presentation",children:(0,k.jsxs)("div",{role:"dialog","aria-modal":"true",className:"teacher-modal-panel w-full max-w-md
1shrink-0",onClick:e=>e.stopPropagation(),children:[(0,k.jsxs)("div",{className:"teacher-modal-panel__header flex items-center justify-between gap-4",children:[(0,k.jsx)("h2",{className:"teacher-dash-heading-lg text-xl",children:"Batch Cancel"}),(0,k.jsx)("button",{type:"button",onClick:()=>Oe(!1),className:"shrink-0 rounded-lg p-2 text-muted-foreground transition hover:bg-gray-100 hover:teacher-dash-text-muted disabled:opacity-50",disabled:Ue,"aria-label":"Close",children:(0,k.jsx)(d.QCr,{size:20})})]}),(0,k.jsxs)("div",{className:"teacher-modal-panel__body",children:[(0,k.jsxs)("p",{className:"teacher-dash-text-muted mb-2",children:["Are you sure you want to cancel ",Ee.size," selected session(s)?"]}),(0,k.jsx)("p",{className:"teacher-dash-text-xs",children:"This will mark all selected sessions as cancelled for all students. This action can be undone by rescheduling the sessions."})]}),(0,k.jsxs)("div",{className:"teacher-modal-panel__footer",children:[(0,k.jsx)("button",{type:"button",onClick:()=>Oe(!1),disabled:Ue,className:"rounded-lg border border-[var(--border)] bg-white px-4 py-2 teacher-dash-text font-medium hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed",children:"Dismiss"}),(0,k.jsx)("button",{type:"button",onClick:async()=>{const e=bt();if(0!==e.length)try{Ge(!0);const t=e.map(e=>(0,I.cancelSession)(e.id,{classId:e.classId}));await Promise.all(t);const s=await(0,I.getSessionGroups)(null,"SessionSchedulerPage (refresh after batch cancel)");de(s.sessionGroups||[]),Me(new Set),Oe(!1),(0,F.r2)(),He({show:!0,title:"Success",message:`Successfully cancelled ${e.length} session(s)`,type:"success"})}catch(a){var t,s;console.error("Failed to cancel sessions:",a),He({show:!0,title:"Error",message:(null===(t=a.response)||void 0===t||null===(s=t.data)||void 0===s?void 0:s.detail)||"Failed to cancel some sessions. Please try again.",type:"error"})}finally{Ge(!1)}},disabled:Ue,className:"rounded-lg bg-red-500 px-4 py-2 text-sm font-medium text-white hover:bg-red-600 disabled:opacity-50 disabled:cursor-not-allowed",children:Ue?"Cancelling...":`Cancel ${Ee.size} Session(s)`})]})]})}),document.body),(0,k.jsx)(_,{isOpen:Qe,onClose:()=>Ze(!1),sessions:Zt,periodLabel:Yt,filterSummary:es,exportedBy:Jt,onExportSuccess:Xe}),(0,k.jsx)(L,{fileName:Ve,onDismiss:()=>Xe("")}),(null===Ke||void 0===Ke?void 0:Ke.show)&&"undefined"!==typeof document&&(0,l.createPortal)((0,k.jsx)("div",{className:"teacher-modal-overlay",role:"presentation",children:(0,k.jsxs)("div",{role:"alertdialog","aria-modal":"true",className:"teacher-modal-panel w-full max-w-md
1shrink-0",onClick:e=>e.stopPropagation(),children:[(0,k.jsx)("div",{className:"teacher-modal-panel__header",children:(0,k.jsx)("h3",{className:"text-lg font-semibold "+("error"===Ke.type?"text-red-600":"text-green-600"),children:Ke.title})}),(0,k.jsx)("div",{className:"teacher-modal-panel__body",children:(0,k.jsx)("p",{className:"text-sm text-slate-600",children:Ke.message})}),(0,k.jsx)("div",{className:"teacher-modal-panel__footer",children:(0,k.jsx)("button",{type:"button",className:"rounded-lg px-4 py-2 text-sm font-medium text-white hover:opacity-90 "+("error"===Ke.type?"bg-red-500 hover:bg-red-600":"bg-green-500 hover:bg-green-600"),onClick:()=>He(null),children:"OK"})})]})}),document.body)]});var os}},21380(e,t,s){s.d(t,{IZ:()=>n,ar:()=>o,lh:()=>d});const a=[{id:"mathematics",legendLabel:"Mathematics",calendarClass:"teacher-scheduler-subject-group--mathematics",swatchColor:"#ea580c",match:[/\b(math|maths|mathematics|algebra|geometry|statistics|calculus|arithmetic|trigonometry|additional\s*maths?|further\s*math|applied\s*math|numeracy)\b/i]},{id:"science",legendLabel:"Science",calendarClass:"teacher-scheduler-subject-group--science",swatchColor:"#16a34a",match:[/\b(physics|chemistry|biology|general\s*science|environmental\s*science|earth\s*science|life\s*science|physical\s*science|integrated\s*science|natural\s*science|science)\b/i]},{id:"ela",legendLabel:"English Language Arts",calendarClass:"teacher-scheduler-subject-group--ela",swatchColor:"#2563eb",match:[/\b(english\s*language\s*arts|language\s*arts|e\.?l\.?a\.?|english|reading|writing|literature|grammar|vocabulary|composition|comprehension|literacy)\b/i]},{id:"humanities",legendLabel:"Humanities",calendarClass:"teacher-scheduler-subject-group--humanities",swatchColor:"#9333ea",match:[/\b(history|geography|civics|economics|political\s*science|sociology|psychology|social\s*studies|humanities|government|philosophy|anthropology)\b/i]},{id:"computer_science",legendLabel:"Computer Science",calendarClass:"teacher-scheduler-subject-group--computer-science",swatchColor:"#0891b2",match:[/\b(computer\s*science|coding|programming|robotics|\bai\b|artificial\s*intelligence|\bict\b|information\s*(and\s*)?communication\s*technology|digital\s*literacy|information\s*technology|\bit\b|software|web\s*development|data\s*science)\b/i]},{id:"languages",legendLabel:"Languages",calendarClass:"teacher-scheduler-subject-group--languages",swatchColor:"#ca8a04",match:[/\b(spanish|french|german|hindi|kannada|tamil|sanskrit|arabic|chinese|mandarin|japanese|korean|italian|portuguese|russian|urdu|telugu|malayalam|bengali|marathi|punjabi|gujarati|world\s*language|foreign\s*language|second\s*language)\b/i]},{id:"business",legendLabel:"Business",calendarClass:"teacher-scheduler-subject-group--business",swatchColor:"#92400e",match:[/\b(accounting|business\s*studies|business|entrepreneurship|finance|marketing|commerce|economics\s*of\s*business)\b/i]},{id:"other",legendLabel:"Other",calendarClass:"teacher-scheduler-subject-group--other",swatchColor:"#6b7280",match:[/\b(life\s*skills|career\s*guidance|career|sel|social[\s-]*emotional|home\s*science|general\s*elective|elective|physical\s*education|\bpe\b|art|music|drama|health)\b/i]}],l=["computer_science","business","mathematics","ela","humanities","languages","other","science"],r=Object.fromEntries(a.map(e=>[e.id,e])),i=r.other;function n(){const e=String((arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")||"").trim();if(!e)return i;for(const t of l){const s=r[t];if(s&&s.match.some(t=>t.test(e)))return s}return i}function o(){return n(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").calendarClass}function d(){return a.map(e=>({id:e.id,label:e.legendLabel,swatchColor:e.swatchColor,calendarClass:e.calendarClass}))}}}]);
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.